Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function script nameformat {
- for(set .@i,16-getstrlen(""+getarg(0));.@i>0;set .@i,.@i-1)set .@h$,.@h$+" ";
- return getarg(0)+.@h$;
- }
- utopia,289,220,4 script 老師 461,{
- switch($@TeachGameState)
- {
- case 0:
- mes ""+@colorA$+"["+strnpcinfo(0)+"]"+@colorB$+"";
- mes "現在不是開放時間唷,";
- mes "活動時間為 ";
- mes "凌晨2:00";
- mes "早上8:00";
- mes "下午2:00";
- mes "晚上8:00";
- mes "當您成功闖關時";
- mes "將會給予你以下獎勵。";
- mes "^f07c8e小遊戲幣 *15 至*20(前五名)^000000";
- end;
- case 1:
- if ( searcharray($@Students$,strcharinfo(0)) != -1 ){
- mes ""+@colorA$+"["+strnpcinfo(0)+"]"+@colorB$+"";
- mes "^FF0000你已經報名過了喔^000000";
- mes "請耐心等候游戲開始。";
- mes "請在內等待活動開始!";
- close2;
- warp $@Teacher_map$,52,36;
- end;
- }
- if(getarraysize($@Students$) > $@Student_Of_Room[1])
- {
- mes ""+@colorA$+"["+strnpcinfo(0)+"]"+@colorB$+"";
- mes "^0000FF報名人數已滿^000000。";
- end;
- }
- setarray $@Students$[getarraysize($@Students$)],strcharinfo(0);
- setarray $@StudentCid[getarraysize($@StudentCid)],getcharid(0);
- deletearray @game_skillid;
- mes ""+@colorA$+"["+strnpcinfo(0)+"]"+@colorB$+"";
- mes "^0000FF你已經成功報名了^000000";
- mes "現在將你傳送到活動地圖";
- mes "請在內等待活動開始!";
- close2;
- when_pcmove_doevent;
- warp $@Teacher_map$,52,36;
- end;
- case 2:
- mes ""+@colorA$+"["+strnpcinfo(0)+"]"+@colorB$+"";
- mes "活動已經開始了,如果你錯過的話請等下一場吧。";
- end;
- }
- end;
- OnClock0200:
- OnClock0800:
- OnClock1400:
- OnClock2000:
- if($@TeachGameState)
- end;
- $@TeachGameState = 1;
- // 清除上一次的排行陣列
- deletearray $@Students$;
- deletearray $@StudentCid;
- deletearray $@Student_Point;
- // 技能編號
- switch(rand(0,3))
- {
- case 0:
- setarray $@Teacher_skillid,28,34,66,73,75,32,33,157,24;
- break;
- case 1:
- setarray $@Teacher_skillid,138,142,155,53,8,29,45,74,75;
- break;
- case 2:
- setarray $@Teacher_skillid,112,361,114,139,74,463,462,390,464;
- break;
- case 3:
- setarray $@Teacher_skillid,380,383,384,406,482,73,72,10,8;
- break;
- // 備用技能ID: 5038
- }
- announce "[老師] 活動已經開放報名, 限時 5 分鐘, 要參加的請到小遊戲區上方報名!!",15;
- Initnpctimer;
- end;
- OnTimer300000:
- if( !$@TeachGameState || $@TeachGameState == 2 )
- end;
- donpcevent strnpcinfo(0)+"::OnStart";
- end;
- OnStart:
- if(getarraysize($@Students$) < $@Student_Of_Room[0])
- {
- $@TeachGameState = 0;
- stopnpctimer;
- announce "[老師] 參賽人數不足 "+$@Student_Of_Room[0]+" 人,活動自行取消!",15;
- mapwarp "teacher","utopia",201,204;
- end;
- }
- $@TeachGameState = 2;
- F_JoinReward("teacher","52704","3");
- announce "[老師] 活動現在已經開始,報名人數 ["+getarraysize($@Students$)+"],關閉入場通道,請仔細的聽取說明!",15;
- donpcevent "老師#Game::OnRule";
- end;
- OnInit:
- waitingroom "老師說遊戲報名",0;
- end;
- }
- teacher,52,43,4 script 老師#Game 2347,{
- end;
- // 遊戲規則說明 ---
- OnRule:
- enablenpc strnpcinfo(0);
- .Round = 0;
- npctalk strnpcinfo(1)+" : 遊戲開始後,我會施放技能";
- sleep 5000;
- npctalk strnpcinfo(1)+" : 玩家必須要在我下一次施放技能前完成上一次的施放";
- sleep 5000;
- npctalk strnpcinfo(1)+" : 失敗的就出局囉";
- sleep 5000;
- npctalk strnpcinfo(1)+" : 準備好的話,即將開始囉!";
- sleep 5000;
- npctalk strnpcinfo(1)+" : 遊戲開始倒數: 5!";
- sleep 1000;
- npctalk strnpcinfo(1)+" : 遊戲開始倒數: 4!";
- sleep 1000;
- npctalk strnpcinfo(1)+" : 遊戲開始倒數: 3!";
- sleep 1000;
- npctalk strnpcinfo(1)+" : 遊戲開始倒數: 2!";
- sleep 1000;
- npctalk strnpcinfo(1)+" : 遊戲開始倒數: 1!";
- sleep 1000;
- hideonnpc strnpcinfo(0);
- .Teacher_gid = bg_monster(0,$@Teacher_map$,52,43,"老師",1113,"");
- setunitdata .Teacher_gid, UMOB_CLASS, 2347;
- setunitdata .Teacher_gid, UMOB_LOOKDIR, 5;
- setunitdata .Teacher_gid, UMOB_SPEED, 150;
- donpcevent strnpcinfo(0)+"::OnDo";
- end;
- // 老師施放技能 ---
- OnDo:
- if(.Round >= .Max_GameRound)
- {
- donpcevent strnpcinfo(0)+"::OnSorting";
- end;
- }
- .Round ++;
- .Check_id = $@Teacher_skillid[rand(getarraysize($@Teacher_skillid))];
- unitskilluseid .Teacher_gid,.Check_id,1,.Teacher_gid,0;
- sleep rand(5000,10000);
- donpcevent strnpcinfo(0)+"::OnReset";
- donpcevent strnpcinfo(0)+"::OnDo";
- end;
- OnReset:
- addrid(5,0,$@Teacher_map$);
- if(!@flag)
- {
- specialeffect2 635;
- deletearray @game_skillid;
- callsub Delete,getcharid(0);
- warp "SavePoint",0,0;
- }
- @flag = 0;
- end;
- OnPCUseSkillExEvent:
- if($@TeachGameState == 2 && strcharinfo(3) == $@Teacher_map$)
- {
- if(!.Check_id)
- end;
- .@index = searcharray($@StudentCid,getcharid(0));
- if(.@index == -1)
- end;
- if(@useskill_id == .Check_id && @useskill_target == getcharid(3))
- {
- if(@flag) end;
- specialeffect2 131;
- @flag = 1;
- .@Point = rand(1,3);
- $@Student_Point[.@index] += .@Point;
- dispbottom strnpcinfo(1)+": 恭喜答對 ! 你獲得了 [ "+.@Point+" ] 點積分,目前總積分為 [ "+$@Student_Point[.@index]+" ].",0x9999FF;
- }
- else
- {
- if(@flag)
- end;
- @flag = 0;
- specialeffect2 635;
- deletearray @game_skillid;
- callsub Delete,getcharid(0);
- warp "SavePoint",0,0;
- }
- }
- end;
- // 遊戲終了
- OnSorting:
- mobRemove .Teacher_gid;
- $@TeachGameState = 0;
- // 氣泡排序法開始 ↓↓ ( 勿動 )
- function swap3 {
- .@tmp = $@Student_Point[getarg(1)];
- .@var$ = $@Students$[getarg(1)];
- $@Student_Point[getarg(1)] = $@Student_Point[getarg(2)];
- $@Students$[getarg(1)] = $@Students$[getarg(2)];
- $@Student_Point[getarg(2)] = .@tmp;
- $@Students$[getarg(2)] = .@var$;
- return;
- }
- .@flag = 1;
- for(.@i=0; .@i<getarraysize($@Student_Point)-1 && .@flag; .@i++)
- {
- .@flag = 0;
- for(.@j=0; .@j<(getarraysize($@Student_Point)- .@i -1); .@j++)
- {
- if($@Student_Point[.@j+1] > $@Student_Point[.@j])
- {
- swap3($@Student_Point,.@j+1,.@j);
- .@flag = 1;
- }
- }
- }
- // 氣泡排序法結束 ↑↑ ( 勿動 )
- // 無人進入排行,清除陣列
- if(!getarraysize($@Student_Point[.@i]))
- {
- mapannounce $@Teacher_map$,"[老師] 本次尚未有人進入排行。",bc_map,0xFFCCCC;
- deletearray $@Students$;
- deletearray $@StudentCid;
- deletearray $@Student_Point;
- hideoffnpc strnpcinfo(0);
- disablenpc strnpcinfo(0);
- mapwarp "teacher","utopia",201,204;
- end;
- }
- // 公告排行並取得獎勵
- mapannounce $@Teacher_map$,"==========================================================",bc_map,0xFFCCCC;
- for (.@i = 0; .@i < .Winner; .@i++)
- {
- if( $@Students$[.@i]!= "" && $@Student_Point[.@i] )
- {
- .@name$ = $@Students$[.@i];
- query_sql("SELECT `account_id` FROM `char` WHERE `name` = '"+.@name$+"'",.@Account);
- if ( !.@Account ) continue;
- if ( !isloggedin(.@Account) ) continue;
- getitem .Item[.@i],.Item_cnt[.@i],.@Account;
- mapannounce $@Teacher_map$, "No." + (.@i + 1) + ": " + nameformat(.@name$) + " 總積分: " + $@Student_Point[.@i],bc_map,0xBBFF66;
- }
- }
- mapannounce $@Teacher_map$, "==========================================================",bc_map,0xFFCCCC;
- hideoffnpc strnpcinfo(0);
- disablenpc strnpcinfo(0);
- mapwarp "teacher","utopia",201,204;
- end;
- // 遊戲中登出除名 ---
- OnPCLogoutEvent:
- if($@TeachGameState)
- {
- .@index = searcharray($@StudentCid,getcharid(0));
- if(.@index != -1)
- {
- dispbottom "[老師] 很抱歉,你上課不夠認真,下堂課認真點吧!",0x00ff99;
- deletearray $@Students$[.@index],1;
- deletearray $@StudentCid[.@index],1;
- }
- }
- end;
- Delete:
- if($@TeachGameState)
- {
- if(getarraysize(PC_HotKey) > 0)
- {
- sc_end SC_ALL;
- for(.@i=0; .@i<9; .@i++)
- {
- if(PC_HotKey[.@i])
- {
- if(PC_HotKey_lv[.@i])
- sethotkey .@i,1,PC_HotKey[.@i],PC_HotKey_lv[.@i];
- else
- sethotkey .@i,0,PC_HotKey[.@i],PC_HotKey_lv[.@i];
- }
- else
- sethotkey .@i,0,0,0;
- }
- deletearray PC_HotKey;
- deletearray PC_HotKey_lv;
- deletearray @game_skillid;
- dispbottom "[提示] 您離開了遊戲活動地圖,恢復您原本的熱鍵設置。",0x888888;
- }
- else if(None_Hot_Key)
- {
- for(.@i=0; .@i<9; .@i++)
- sethotkey .@i,0,0,0;
- None_Hot_Key = 0;
- deletearray PC_HotKey;
- deletearray PC_HotKey_lv;
- deletearray @game_skillid;
- dispbottom "[提示] 您離開了遊戲活動地圖,恢復您原本的熱鍵設置。",0x888888;
- }
- .@index = searcharray($@StudentCid,getarg(0));
- if(.@index != -1)
- {
- dispbottom "[老師] 很抱歉,你上課不夠認真,下堂課認真點吧!",0x00ff99;
- deletearray $@Students$[.@index],1;
- deletearray $@StudentCid[.@index],1;
- warp "SavePoint",0,0;
- }
- }
- end;
- end;
- OnInit:
- // 遊戲地圖
- $@Teacher_map$ = "teacher";
- // 報名遊戲最小人數與最大人數
- setarray $@Student_Of_Room,0,15;
- // 遊戲回合數
- .Max_GameRound = 10;
- // 勝利玩家數
- .Winner = 5;
- // 遊戲獎勵 ( 預設前 10 名 )
- setarray .Item,52704,52704,52704,52704,52704;
- setarray .Item_cnt,20,19,18,17,16,15;
- disablenpc strnpcinfo(0);
- end;
- }
- - script ts -1,{
- OnWhisperGlobal:
- if(getgmlevel())
- {
- switch(select(!$@TeachGameState?"> "+@colorA$+"01"+@colorB$+".開放活動報名":"",$@TeachGameState==1?"> "+@colorA$+"01"+@colorB$+".開始遊戲":$@TeachGameState==2?"> "+@colorA$+"01"+@colorB$+".活動進行中":""))
- {
- case 1:
- deletearray $@Students$;
- message strcharinfo(0),"[老師] 經由GM手動開啟報名, 忽略報名時間.";
- donpcevent "老師::OnClock0000";
- end;
- case 2:
- if($@TeachGameState>1) end;
- message strcharinfo(0),"[老師] 經由GM啟動遊戲, 關閉報名.";
- donpcevent "老師::OnStart";
- end;
- }
- }
- end;
- OnPCStatCalcEvent:
- OnPCMoveFilter:
- // 玩家進入地圖後儲存原本熱鍵
- if(!getarraysize(PC_HotKey) && strcharinfo(3) == $@Teacher_map$)
- {
- for(.@i=0; .@i<9; .@i++)
- {
- .@type = gethotkey(.@i,0);
- if(.@type == -1)
- continue;
- else
- {
- PC_HotKey[.@i] = gethotkey(.@i,1);
- if(.@type == 1) PC_HotKey_lv[.@i] = gethotkey(.@i,2);
- else PC_HotKey_lv[.@i] = 0;
- }
- }
- if(getarraysize(PC_HotKey) == 0) None_Hot_Key = 1;
- dispbottom "[提示] 已儲存您原本的熱鍵設置。",0x888888;
- }
- if ( !getarraysize(@game_skillid) ){
- // 設定遊戲活動中的熱鍵技能
- copyarray .@skill_id,$@Teacher_skillid,getarraysize($@Teacher_skillid);
- for(.@i=0; .@i<getarraysize($@Teacher_skillid); .@i++)
- {
- @game_skillid[.@i] = .@skill_id[.@j = rand(getarraysize(.@skill_id))];
- deletearray .@skill_id[.@j],1;
- }
- }
- if(strcharinfo(3) == $@Teacher_map$ && $@TeachGameState)
- {
- bonus bFixedCastRate,-100;
- bonus bVariableCastrate,-100;
- bonus bDelayRate,-100;
- for(.@i=0; .@i<getarraysize(@game_skillid); .@i++)
- {
- skill @game_skillid[.@i],1;
- sethotkey .@i,1,@game_skillid[.@i],1;
- }
- }
- // 離開遊戲後恢復原本熱鍵
- if(strcharinfo(3) != $@Teacher_map$)
- {
- if(getarraysize(PC_HotKey) > 0)
- {
- sc_end SC_ALL;
- for(.@i=0; .@i<9; .@i++)
- {
- if(PC_HotKey[.@i])
- {
- if(PC_HotKey_lv[.@i])
- sethotkey .@i,1,PC_HotKey[.@i],PC_HotKey_lv[.@i];
- else
- sethotkey .@i,0,PC_HotKey[.@i],PC_HotKey_lv[.@i];
- }
- else
- sethotkey .@i,0,0,0;
- }
- deletearray PC_HotKey;
- deletearray PC_HotKey_lv;
- deletearray @game_skillid;
- dispbottom "[提示] 您離開了遊戲活動地圖,恢復您原本的熱鍵設置。",0x888888;
- }
- else if(None_Hot_Key)
- {
- for(.@i=0; .@i<9; .@i++)
- sethotkey .@i,0,0,0;
- None_Hot_Key = 0;
- deletearray PC_HotKey;
- deletearray PC_HotKey_lv;
- deletearray @game_skillid;
- dispbottom "[提示] 您離開了遊戲活動地圖,恢復您原本的熱鍵設置。",0x888888;
- }
- }
- end;
- }
- teacher mapflag monster_noteleport
- teacher mapflag noteleport
- teacher mapflag nosave
- teacher mapflag nomemo
- teacher mapflag nightenabled
- teacher mapflag nobranch
- teacher mapflag noexppenalty
- teacher mapflag nozenypenalty
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement