bn5656 發表於 2008-9-21 00:44:54

【 原 創 】時 間 標 籤 應 用 教 學

本帖最後由 哆啦ˇ 於 2009-11-18 07:26 PM 編輯

一直在搜尋 ok論壇的時間控制腳本 似乎沒有得到好的答案
經過 超版主 "天殺" 指導過一篇回覆 得到一些啟發

現在 我將我到處學到的 公佈在這
大家一起分享 一起研究

initnpctimer 命令

初始化NPC計時,執行此命令後,NPC開始從0進行計時。
initnpctimer [];
npc名字可以省略,也可以指定。若省略的話指的就是使用此命令的NPC。
例:initnpctimer "npctimertest";

進行計時的NPC可以使用OnTimerXXXX:標籤來觸發其他指令。
XXXX以毫秒為單位。
例:
OnTimer30000:
announce "30秒過去了",0;

stopnpctimer 命令

停止NPC計時,指定NPC的計時暫停,但計時數值保持暫停前的時刻。
stopnpctimer [];
同樣可用name指定特定的NPC,不指定就是使用該命令的NPC停止計時。

startnpctimer 命令

和stopnpctimer相反的作用,指定的NPC從當前的NPC時刻開始計時。
(注意!不一定是從0開始!和initnpctimer的作用是不一樣的。)
startnpctimer [];
同樣可用name指定特定的NPC

setnpctimer 命令

設定NPC的計時數值。
setnpctimer [,]
例:setnpctimer 20000,"npctimertest";
設定NPC的當前計時數值為指定的tick值。name省略就是執行該命令的NPC的計時數值被設置。

getnpctimer 函數

getnpctimer([,])
例:mes "當前計時數值為:"+getnpctimer (0,"npctimertest");

num=0 返回當前的計時數值
num=1 返回當前的計時狀態(0:停止,1:運行)
num=2 返回OnTimerXXXX標籤的個數

希望對大家有助益 如果牽涉到其他先進達人 已發表過
這裡表示抱歉 並非要故意 重覆發表
我僅是希望跟我一樣求腳本寫作的人 能有個方向

goddameit 發表於 2008-9-21 00:47:15

放 上 範 例 會 更 好

海神夜 發表於 2008-9-21 07:53:56

回覆 1樓的 bn5656 的帖子

確實
放上範例可能會比較能夠讓其他會員明白
另外
這算共用類的教學嗎?
還是有分JA或EA類的?
因為我要歸類到文章整理內

bn5656 發表於 2008-9-21 09:25:37

原帖由 海神夜 於 2008-9-21 07:53 AM 發表 http://okayro.com/images/common/back.gif
確實
放上範例可能會比較能夠讓其他會員明白
另外
這算共用類的教學嗎?
還是有分JA或EA類的?
因為我要歸類到文章整理內

這是 共用類的語法
我舉一個私服腳本 部份來說明:

jawaii.gat,245,195,5    script    夏威夷海場ソ人魚管理員    721,{
    mes "[夏威夷海場ソ人魚管理員]";
    mes "你打到魚了嗎?";
    mes "打到魚要賣給我哦";
    mes "我會給你好東西的";
    mes "補充:下線魚會消失的";
    next;
    switch(select("我要打魚","我來賣魚","漁場說明")){
    case 1:
      callfunc "clearfishcount",3;
      if ( @feedfish == 1 ) {
            mes "[夏威夷海場ソ人魚管理員]";
            mes "您不能再餵魚啦";
            close;
      }
      mes "[夏威夷海場ソ人魚管理員]";
      if ( $@countfishingman == 0 ) {
            mes "現在還沒有人在漁場裡養下小魚苗呢";
            mes "你要免費養嗎?";
      }
      else {
            mes "參加人數"+$@countfishingman+"";
            mes "您要參加打魚嗎";
      }
      switch(select("當然了","我來看看的")){
      case 1:
            if ( $@countfishingman == 0 ) {
                announce "[夏威夷海場ソ人魚管理員] "+strcharinfo(0)+" 在漁場放進了新的小魚苗,2分鐘後就能打魚了",16;
                set $@countfishingman,$@countfishingman+1;
                set @feedfish,1;
                initnpctimer "fishtimer";
            }

.................................

jawaii.gat,0,0,0    script    fishtimer    -1,{
OnTimer120000:
      if ( $@countfishingman == 1 ) {
            set $@fishsource,1;
      }
      if ( $@countfishingman == 2 ) {
            set $@fishsource,2;
      }
      if ( $@countfishingman == 3 ) {
            set $@fishsource,4;
      }
      if ( $@countfishingman == 4 ) {
            set $@fishsource,4;
      }
      if ( $@countfishingman > 4 ) {
            set $@fishsource,5;
      }
      set $@windblow_fisharea,(rand(3)+1)*10;
      if ( $@windblow_fisharea < 10 ) {
            mapannounce "jawaii.gat"," 今日微風,祝大家玩的高興",1;
      }
      else if ( $@windblow_fisharea < 20 ) {
            mapannounce "jawaii.gat"," 今日小風,請大家稍微小心",1;
      }
      else
      {
            mapannounce "jawaii.gat"," 今日大風,請大家格外小心",1;
      }
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer125000:
      callfunc "clearfishcount",2;
      end;
OnTimer130000:
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer135000:
      callfunc "clearfishcount",2;
      end;
OnTimer140000:
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer145000:
      callfunc "clearfishcount",2;
      end;
OnTimer150000:
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer155000:
      callfunc "clearfishcount",2;
      end;
OnTimer160000:
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer165000:
      callfunc "clearfishcount",2;
      end;
OnTimer170000:
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer175000:
      callfunc "clearfishcount",2;
      end;
OnTimer180000:
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer185000:
      callfunc "clearfishcount",2;
      end;
OnTimer190000:
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer195000:
      callfunc "clearfishcount",2;
      end;
OnTimer200000:
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer205000:
      callfunc "clearfishcount",2;
      end;
OnTimer210000:
      callfunc "windblow_fisharea";
      callfunc "makefish",1;
      callfunc "makefish",2;
      end;
OnTimer215000:
      callfunc "windblow_fisharea";
      callfunc "clearfishcount",2;
      set $@countfishingman,0;
      mapannounce "jawaii.gat"," 打魚活動結束,現在能從新養殖小魚苗了",1;
      areawarp "jawaii.gat",255,198,280,218,"jawaii.gat",245,195;
      end;
      
}


initnpctimer "fishtimer";
這是開始時間 啟動 "fishtimer";

fishtimer 是時間npc

OnTimer120000:
.
.
.

OnTimer215000:
是啟動 每段時間去執行 你設定的動作

海神夜 發表於 2008-9-21 10:46:18

回覆 4樓的 bn5656 的帖子

原來如此
那一 一這算共用類的吧!?
JA、EA皆可?

Ice_Dog 發表於 2008-10-9 08:15:42

如果時間這個語法 專研學會後,
製作出來的腳本因該很有趣 也很精采..
只是我連 廣播小喇叭那個 X分鐘內不可重複發言 還摸不清 ..
哈哈 這語法真是我致命傷:Q

謝謝大大分享與解釋

sashomaru 發表於 2008-12-6 14:10:00

觀念很重要= =不動還是要想辦法搞懂Orz

a19920917 發表於 2009-4-9 18:41:47

確實
放上範例可能會比較能夠讓其他會員明白
另外
這算共用類的教學嗎?
還是有分JA或EA類的?
因為我要歸類到文章整理內

qsc753qsc 發表於 2009-5-3 09:37:48

寫的粉詳細
會再來研究的
謝謝~~~thx

灰色天空 發表於 2009-8-17 16:25:28

無論如何,也要謝謝你,相信你打這編字也相當不容易
謝謝你
頁: [1]
查看完整版本: 【 原 創 】時 間 標 籤 應 用 教 學