Advertisement
Guest User

Untitled

a guest
Feb 29th, 2020
758
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.72 KB | None | 0 0
  1. //=============== 活動地圖設置 ===============
  2. quiz_00.gat mapflag nomemo
  3. quiz_00.gat mapflag noteleport
  4. quiz_00.gat mapflag nosave SavePoint dummy
  5. quiz_00.gat mapflag nopenalty
  6. quiz_00.gat mapflag noskill
  7. quiz_00.gat mapflag nobranch
  8.  
  9. //=============== 主城NPC ================
  10. jawaii,248,188,8 script 終極密碼 10049,{
  11. //callfunc "count_limit",strcharinfo(0),1;
  12. callfunc "f_Code_Main_NPC",0;
  13. end;
  14.  
  15. // 每天固定場次【終極密碼】,修改/增加OnClockHHMM,即可調整活動時間/場次
  16.  
  17.  
  18. OnClock1600:
  19. OnClock1800:
  20. OnClock2000:
  21. OnClock2200:
  22.  
  23.  
  24. callfunc "f_Code_Main_NPC",1;
  25. end;
  26.  
  27. end;
  28. OnInit:
  29. //=============== 終極密碼設置 ===============
  30. // 活動狀態(0:停止 1:報名中 2:活動進行中)
  31. set $@Code_State,0;
  32. // 活動類型(1:搶頭香 2:淘汰賽)
  33. set $@Code_Type,1;
  34. // 活動名稱
  35. set $@Code_Name$,"密碼";
  36. // 活動費用
  37. set $@Code_Zeny,100;
  38. // 最低啟動人數限制
  39. set $@Code_P1,5;
  40. // 最多進行人數限制
  41. set $@Code_P2,50;
  42. // 可領取獎品人數(搶頭香)
  43. set $@Code_P3,2;
  44. // 可領取獎品人數(淘汰賽)
  45. set $@Code_P4,3;
  46.  
  47. // 一般固定活動獎品列表,單數是獎品ID,偶數是獎品數量(隨機取得,名次決定抽獎次數)
  48. // 例:setarray $@Code_Prize[1],607,50,607,100,607,150;
  49. // 501:紅色藥水ID,1:數量1個;502:赤色藥水ID,2:數量2個;503:黃色藥水,3:數量3個;最後以;結尾
  50. setarray $@Code_Prize[1],35006,2,35005,5,35011,1,35012,1,35013,1,40049,1;
  51. // 主城設定
  52. set $@Main_Twon$, "jawaii,222,215";
  53. }
  54.  
  55. function script f_Code_Main_NPC {
  56. // 固定場次判定/啟動
  57. if ( getarg(0) == 1) goto OpenDailyCode;
  58.  
  59. // GM管理選單
  60. if ( 1 <= getgmlevel()) {
  61. mes "[終極密碼]";
  62. mes "GM管理選單";
  63. switch($@Code_State) {
  64. case 0:
  65. mes "現在的活動狀態:^ff0000關閉中^000000";
  66. mes "現在時間:^FF0000"+ gettimestr("%Y-%m/%d %H:%M:%S",20)+"^000000";
  67. menu "跳過GM選單",MENU01,
  68. "現在開啟【終極密碼】",Start_Code,
  69. "現在開啟【終極炸彈】",Start_Bom,
  70. "進入活動場地(隱身)",GMIn01,
  71. "進入活動場地",GMIn02;
  72. break;
  73. case 1:
  74. mes "現在的活動狀態:^ffa500報名中^000000";
  75. mes "現在時間:^FF0000"+ gettimestr("%Y-%m/%d %H:%M:%S",20)+"^000000";
  76. menu "跳過GM選單",MENU01,
  77. "現在進行【活動】",-,
  78. "進入活動場地(隱身)",GMIn01,
  79. "進入活動場地",GMIn02;
  80. next;
  81. setnpctimer 595000,"SYS_Code_Join";
  82. mes "[終極密碼]";
  83. announce "[活動公告]:【終極" + $@Code_Name$ + "】被GM啟動了,五秒後進行,要參加的請找【終極密碼】NPC報名!!",15,"0xff0000";
  84. mes "【終極" + $@Code_Name$ + "】五秒後進行";
  85. close;
  86. end;
  87. case 2:
  88. mes "現在的活動狀態:^008000進行中^000000";
  89. mes "現在時間:^FF0000"+ gettimestr("%Y-%m/%d %H:%M:%S",20)+"^000000";
  90. menu "跳過GM選單",MENU01,
  91. "進入活動場地(隱身)",GMIn01,
  92. "進入活動場地",GMIn02;
  93. break;
  94. }
  95.  
  96. MENU01:
  97. next;
  98. }
  99.  
  100. set @Prize_Name$,getitemname($@Code_Prize[1]) + "[" + $@Code_Prize[2] + "個]";
  101. for (set @TEMP,3;@TEMP<getarraysize($@Code_Prize);set @TEMP,@TEMP+2){
  102. set @Prize_Name$,@Prize_Name$ + "、" + getitemname($@Code_Prize[@TEMP]) + "[" + $@Code_Prize[@TEMP+1] + "]";
  103. }
  104.  
  105. // 活動在關閉狀態
  106. if ($@Code_State == 0) {
  107. if (Get_Code ==1) {
  108. mes "[終極密碼]";
  109. mes "活動費用退回了,請確認";
  110. set Zeny,Zeny+$@Code_Zeny;
  111. set Get_Code,0;
  112. next;
  113. }
  114. mes "[終極密碼]";
  115. mes "【終極密碼】的活動時間為:";
  116. mes "每天有4個場次";
  117. mes "^FF6600第1場^000000 - ^0099FF[16:00]^000000";
  118. mes "^FF6600第2場^000000 - ^0099FF[18:00]^000000";
  119. mes "^FF6600第3場^000000 - ^0099FF[20:00]^000000";
  120. mes "^FF6600第4場^000000 - ^0099FF[22:00]^000000";
  121. mes "活動獎品^FF6600(隨機取得)^000000:";
  122. mes "^FF6600" + @Prize_Name$ + "^000000";
  123. mes "請踴躍參加,謝謝!!";
  124. close;
  125. }
  126.  
  127. // 活動在進行中狀態
  128. if ($@Code_State == 2) {
  129. mes "[終極密碼]";
  130. mes "【終極" + $@Code_Name$ + "】已經開始了,請參加下一場次的活動吧";
  131. close;
  132. }
  133.  
  134. // 活動在報名狀態(報名名單查核)
  135. if ($@Code_State == 1 && Get_Code == 1) {
  136. for (set @TEMP,1;@TEMP<=$@Code_People_Num+1;set @TEMP,@TEMP+1){
  137. if ($@Code_People_Temp[@TEMP] == getcharid(0)) goto Code_Waiting;
  138. }
  139. mes "[終極密碼]";
  140. mes "您有[報名但未參與活動記錄]";
  141. mes "前回報名費用退回了,請確認";
  142. set Zeny,Zeny+$@Code_Zeny;
  143. set Get_Code,0;
  144. next;
  145. }
  146.  
  147. // 活動在報名狀態(報名)
  148. if ($@Code_State == 1) {
  149. mes "[終極密碼]";
  150. mes "【終極" + $@Code_Name$ + "】規則如下:";
  151. switch($@Code_Type) {
  152. case 1:
  153. mes "^FF6600☆ 優先猜中金庫密碼的為勝利者";
  154. break;
  155. case 2:
  156. mes "^FF6600☆ 不踩到炸彈,存活越久的為勝利者";
  157. break;
  158. }
  159. mes "☆ " + $@Code_Name$ + "範圍為:1~人數×200";
  160. mes "☆ 超時未輸入【終極" + $@Code_Name$ + "】者淘汰^000000";
  161. next;
  162. if ($@Code_People_Num != 0) {
  163. mes "[終極密碼]";
  164. mes "目前的報名名單如下:";
  165. for (set @TEMP,1;@TEMP<$@Code_People_Num+1;set @TEMP,@TEMP+1){
  166. mes @TEMP + ". ^FF6600" + $@Code_People_Temp$[@TEMP] + "^6699FF[" + $@Code_People_Temp[@TEMP] + "]^66CC00[IP "+$@Show_Ip$[@TEMP]+"]^000000";
  167. }
  168. mes "------------------------";
  169. next;
  170. }
  171. mes "【終極" + $@Code_Name$ + "】開放報名中";
  172. mes "報名費用:^FF6600" + $@Code_Zeny + " Zeny^000000";
  173. if ($@Code_Bom_Prize[1] != 0 && $@Code_Type == 2){
  174. mes "活動獎品:^FF6600";
  175. for (set @TEMP,1;@TEMP<=$@Code_P4*2;set @TEMP,@TEMP+2){
  176. if ($@Code_Bom_Prize[@TEMP] != 0){
  177. mes "第" + (@TEMP+1)/2 + "名:" + getitemname($@Code_Bom_Prize[@TEMP]) + "[" + $@Code_Bom_Prize[@TEMP+1] + "個]";
  178. }
  179. }
  180. }else{
  181. mes "活動獎品^FF6600(隨機取得)^000000:";
  182. mes "^FF6600" + @Prize_Name$ + "^000000";
  183. }
  184. mes "^FF0000報名前,請詳讀規則,以免權益受損^000000";
  185. mes "你想要參加嗎??";
  186. next;
  187. menu "我要參加",-,
  188. "我不想要參加",EXIT;
  189.  
  190. if (Zeny < $@Code_Zeny) goto NO_ZENY;
  191.  
  192. if ($@Code_People_Num >= $@Code_P2) {
  193. mes "[終極密碼]";
  194. mes "抱歉,現在活動人數已滿";
  195. mes "(最多" + $@Code_P2 + "人進行【終極" + $@Code_Name$ + "】)";
  196. mes "請參加下一場次的活動吧";
  197. close;
  198. }
  199.  
  200. set Get_Code,1;
  201. set $@Code_People_Num,$@Code_People_Num+1;
  202. query_sql "SELECT last_ip FROM `login` WHERE account_id = "+getcharid(3)+"", .@LastIp$;
  203.  
  204. setarray $@Code_People_Temp[$@Code_People_Num],getcharid(0);
  205. setarray $@Code_People_Temp$[$@Code_People_Num],strcharinfo(0);
  206. setarray $@Show_Ip$[$@Code_People_Num],.@LastIp$;
  207. set Zeny,Zeny-$@Code_Zeny;
  208. goto Code_Waiting;
  209. close;
  210. }
  211.  
  212. NO_ZENY:
  213. mes "[終極密碼]";
  214. mes "你的金錢不足,不能參加哦!!";
  215. close;
  216.  
  217. Code_Waiting:
  218. mes "[終極密碼]";
  219. mes "你已經報名了,請進入場地等待活動開始";
  220. mes "目前的報名名單如下:";
  221. for (set @TEMP,1;@TEMP<$@Code_People_Num+1;set @TEMP,@TEMP+1){
  222. mes @TEMP + ". ^FF6600" + $@Code_People_Temp$[@TEMP] + "^6699FF[" + $@Code_People_Temp[@TEMP] + "]^66CC00[IP "+$@Show_Ip$[@TEMP]+"]^000000";
  223. }
  224. mes "------------------------";
  225.  
  226. next;
  227. menu "進入活動場地!",gogo,
  228. "等等在進去!",nogogo;
  229. close;
  230. gogo:
  231. warp "quiz_00.gat",23,116;
  232. close;
  233. nogogo:
  234. close;
  235.  
  236.  
  237. EXIT:
  238. mes "[終極密碼]";
  239. mes "想要參加時,再來找我吧";
  240. close;
  241.  
  242. // 開啟【終極密碼】
  243. Start_Code:
  244. next;
  245. set $@Code_Type,1;
  246. set $@Code_Name$,"密碼";
  247. initnpctimer "SYS_Code_Join";
  248. waitingroom "*【終極" + $@Code_Name$ + "】*",0;
  249. mes "[終極密碼]";
  250. mes "已開啟【終極" + $@Code_Name$ + "】";
  251. sleep2(1000);
  252. goto MENU01;
  253.  
  254. // 開啟【終極炸彈】
  255. Start_Bom:
  256. deletearray $@Code_Bom_Prize[1],$@Code_P4*2;
  257. next;
  258. // 【終極炸彈】自訂獎品
  259. for (set @TEMP,1;@TEMP<=$@Code_P4;set @TEMP,@TEMP+1){
  260. Bom_Prize_Name:
  261. mes "[終極密碼]";
  262. mes "^FF6600請設置活動獎品、數量";
  263. mes "若設置錯誤,活動將不開啟^000000";
  264. if (@TEMP == 1) {
  265. mes "輸入^FF0000[9]^000000,取消自訂獎品";
  266. }else{
  267. mes "輸入^FF0000[9]^000000,終止自訂獎品^000000";
  268. }
  269. mes "最多設置到第" + $@Code_P4 + "名獎品";
  270. mes "請輸入^FF0000第" + @TEMP + "名^000000獎品";
  271. next;
  272. input @TEMP1;
  273. // 不要、停止自訂獎品(輸入9)
  274. if (@TEMP1 == 9) {
  275. goto Bom_menu;
  276. }
  277. // 自訂獎品查驗
  278. if (getitemname(@TEMP1) == "null"){
  279. mes "^FF0000沒有這個物品,請重新輸入^000000";
  280. next;
  281. goto Bom_Prize_Name;
  282. }
  283. Bom_Prize_Num:
  284. next;
  285. mes "請輸入數量";
  286. input @TEMP2;
  287. if (@TEMP2 == 0){
  288. mes "^FF0000數量不可低於0,請重新輸入^000000";
  289. goto Bom_Prize_Num;
  290. }
  291. next;
  292. setarray $@Code_Bom_Prize[(@TEMP*2)-1],@TEMP1,@TEMP2;
  293. }
  294. Bom_menu:
  295. if ($@Code_Bom_Prize[1] != 0){
  296. mes "[終極密碼]";
  297. mes "您設置的活動獎品、數量:^FF6600";
  298. for (set @TEMP,1;@TEMP<=$@Code_P4*2;set @TEMP,@TEMP+2){
  299. if ($@Code_Bom_Prize[@TEMP] != 0){
  300. mes "第" + (@TEMP+1)/2 + "名:" + getitemname($@Code_Bom_Prize[@TEMP]) + "[" + $@Code_Bom_Prize[@TEMP+1] + "個]";
  301. }
  302. }
  303. mes "^000000------------------------";
  304. mes "是否正確??";
  305. menu "正確",-,
  306. "返回修改",Start_Bom;
  307. next;
  308. }
  309. set $@Code_Type,2;
  310. set $@Code_Name$,"炸彈";
  311. initnpctimer "SYS_Code_Join";
  312. waitingroom "*【終極" + $@Code_Name$ + "】*",0;
  313. mes "[終極密碼]";
  314. mes "已開啟【終極" + $@Code_Name$ + "】";
  315. sleep2(1000);
  316. goto MENU01;
  317.  
  318. // GM活動場地突入
  319. GMIn01:
  320. setoption(64);
  321. GMIn02:
  322. warp "quiz_00",23,116;
  323. end;
  324.  
  325. OpenDailyCode:
  326. if ($@Code_State != 0) end;
  327. set $@Code_Type,1;
  328. set $@Code_Name$,"密碼";
  329. initnpctimer "SYS_Code_Join";
  330. waitingroom "*【終極" + $@Code_Name$ + "】*",0;
  331. end;
  332. }
  333.  
  334. //=============== 報 名 ===============
  335. - script SYS_Code_Join -1,{
  336. // 活動報名廣播
  337. OnTimer1000:
  338. disablenpc "主持人【終極密碼】";
  339. deletearray $@Code_People_Temp,$@Code_P2+1;
  340. deletearray $@Code_People_Temp$,$@Code_P2+1;
  341. deletearray $@Show_Ip$,$@Code_P2+1;
  342. set $@Code_People_Num,0;
  343. set $@Code_State,1;
  344. announce "[活動公告]:【終極" + $@Code_Name$ + "】還有10分鐘就要開始,請到 娛樂區 找 終極密碼 報名唷。",15;
  345. end;
  346.  
  347. OnTimer300000:
  348. announce "[活動公告]:【終極" + $@Code_Name$ + "】還有5分鐘就要開始,請到 娛樂區 找 終極密碼 報名唷。",15;
  349. end;
  350.  
  351. OnTimer540000:
  352. announce "[活動公告]:【終極" + $@Code_Name$ + "】還有1分鐘就要開始,請到 娛樂區 找 終極密碼 報名唷。",15;
  353. end;
  354.  
  355. OnTimer600000:
  356. // 報名名單查核 離線者刪除
  357. for (set .TEMP,1;.TEMP<=$@Code_People_Num;set .TEMP,.TEMP+1){
  358. Check_Code1:
  359. if (attachrid(getcharid(3,$@Code_People_Temp$[.TEMP])) == 0) {
  360. set $@Code_People_Num,$@Code_People_Num-1;
  361. deletearray $@Code_People_Temp[.TEMP],1;
  362. deletearray $@Code_People_Temp$[.TEMP],1;
  363. deletearray $@Show_Ip$[.TEMP],1;
  364. detachrid;
  365. goto Check_Code1;
  366. }
  367. }
  368. if ($@Code_People_Num == 0) goto No_people;
  369. if ($@Code_People_Num < $@Code_P1) goto LESS_PEOPLE;
  370. // 自動傳送入場
  371. set $@Code_State,2;
  372. announce "[活動公告]:【終極" + $@Code_Name$ + "】參加人員:",15;
  373. announce "------------------------",15;
  374. for (set .TEMP,1;.TEMP<=$@Code_People_Num;set .TEMP,.TEMP+1){
  375. announce .TEMP + ". " + $@Code_People_Temp$[.TEMP] + "[" + $@Code_People_Temp[.TEMP] + "][IP "+$@Show_Ip$[.TEMP]+"]",15;
  376. attachrid(getcharid(3,$@Code_People_Temp$[.TEMP]));
  377. atcommand "#warp "+$@Code_People_Temp$[.TEMP] + " quiz_00 23 116";
  378. detachrid;
  379. sleep2(100);
  380. }
  381. announce "------------------------",15;
  382. announce "[活動公告]:【終極" + $@Code_Name$ + "】參加人數" + $@Code_People_Num + "人,現在開始!!",15;
  383.  
  384. sleep2(1000);
  385. initnpctimer "SYS_Code_Index";
  386. delwaitingroom "*【終極" + $@Code_Name$ + "】*";
  387. goto SYS_EndTime;
  388.  
  389. LESS_PEOPLE:
  390. announce "[活動公告]:【終極" + $@Code_Name$ + "】報名人數:" + $@Code_People_Num + "人 (報名且在線人數)!!",15;
  391. announce "[活動公告]:【終極" + $@Code_Name$ + "】人數低於" + $@Code_P1 + "人參加,本回活動取消!!",15;
  392. announce "[活動公告]:有報名的,請找我領回報名費用",15;
  393.  
  394. goto SYS_EndTimer;
  395.  
  396. No_people:
  397. announce "[活動公告]:【終極" + $@Code_Name$ + "】無人參加,本回活動取消!!",15;
  398.  
  399. SYS_EndTimer:
  400. set $@Code_State,0;
  401. delwaitingroom "終極密碼";
  402. end;
  403.  
  404. SYS_EndTime:
  405. stopnpctimer;
  406. setnpctimer 0,"SYS_Code_Join";
  407. delwaitingroom "終極密碼";
  408. end;
  409.  
  410. }
  411.  
  412. //=============== 活動規則說明 ===============
  413. quiz_00.gat,11,116,5 script SYS_Code_Index -1,{
  414. OnTimer1000:
  415. MapAnnounce "quiz_00","【終極" + $@Code_Name$ + "】開始前,請先詳讀規則:",17,"0xff0000";
  416. switch($@Code_Type) {
  417. case 1:
  418. MapAnnounce "quiz_00","☆ 優先猜中金庫密碼的為勝利者",17,"0xff0000";
  419. break;
  420. case 2:
  421. MapAnnounce "quiz_00","☆ 不踩到炸彈,存活越久的為勝利者",17,"0xff0000";
  422. break;
  423. }
  424. MapAnnounce "quiz_00","☆ 密碼範圍為:1~人數×200",17,"0xff0000";
  425. MapAnnounce "quiz_00","☆ 超時未輸入【終極" + $@Code_Name$ + "】者淘汰",17,"0xff0000";
  426. MapAnnounce "quiz_00","☆ 再給各位20秒準備,【終極" + $@Code_Name$ + "】即將開始。",17,"0xff0000";
  427. end;
  428.  
  429. OnTimer21000:
  430. // 暫存變數初始化
  431. set $@TEMP_P,1;
  432. switch($@Code_Type) {
  433. case 1:
  434. set $@TEMP_N,$@Code_P3;
  435. if ($@Code_People_Num <= $@TEMP_N) set $@TEMP_N,$@Code_People_Num-1;
  436. break;
  437. case 2:
  438. set $@TEMP_N,$@Code_P4;
  439. if ($@Code_Bom_Prize[1] != 0){
  440. for (set .TEMP,2;.TEMP<=$@Code_P4*2;set .TEMP,.TEMP+2){
  441. if ($@Code_Bom_Prize[.TEMP] == 0){
  442. set $@TEMP_N,$@TEMP_N-1;
  443. }
  444. }
  445. }
  446. if ($@Code_People_Num <= $@TEMP_N) set $@TEMP_N,$@Code_People_Num-1;
  447. break;
  448. }
  449. set $@TEMP_C_MIN,1;
  450. set $@TEMP_C_MAX,((getarraysize($@Code_People_Temp)-1)*200);
  451. set $@TEMP_CODE,rand(2,(((getarraysize($@Code_People_Temp)-1)*200)-1));
  452. enablenpc "主持人【終極密碼】";
  453. initnpctimer "主持人【終極密碼】";
  454. stopnpctimer;
  455. setnpctimer 0,"SYS_Code_Index";
  456. end;
  457. }
  458.  
  459. //=============== 【終極密碼】 ===============
  460. quiz_00.gat,16,116,5 script 主持人【終極密碼】 793,{
  461. set Get_Code,0;
  462. if (getcharid(0) == $@Code_People_Temp[$@TEMP_P]){
  463. MapAnnounce "quiz_00","【終極" + $@Code_Name$ + "】:" + $@TEMP_C_MIN + " ~ " + $@TEMP_C_MAX,17;
  464. // 測試階段GM除錯用 ==== 密碼顯示 ====
  465. // MapAnnounce "quiz_00","【終極" + $@Code_Name$ + "】:" + $@TEMP_CODE,17;
  466. MapAnnounce "quiz_00",strcharinfo(0) + ",請於時限內輸入:【終極" + $@Code_Name$ + "】",17;
  467. input @temp;
  468. // 猜中的處理
  469. if (@temp == $@TEMP_CODE){
  470. switch($@Code_Type) {
  471. // 【終極密碼】猜中的處理
  472. case 1:
  473. MapAnnounce "quiz_00",strcharinfo(0) + ",恭喜你,【終極" + $@Code_Name$ + "】被你猜中囉",17,"0x008000";
  474. // 【終極密碼】第一名獎品處理
  475. Code_Code_F1:
  476. emotion 46;
  477. announce "[活動公告]:【終極" + $@Code_Name$ + "】的第[" + ($@Code_P3-$@TEMP_N+1) + "]名:[ " + strcharinfo(0) + " ],恭喜你啦!!",15;
  478. for (set @Prize,1;@Prize<=$@TEMP_N;set @Prize,@Prize+1){
  479. set @i,rand(1,(getarraysize($@Code_Prize)-1)/2);
  480. getitem $@Code_Prize[(@i*2)-1],$@Code_Prize[@i*2];
  481. announce "[活動公告]:恭喜 " + strcharinfo(0) + " 領到獎品 [" + getitemname($@Code_Prize[(@i*2)-1]) + "(" + $@Code_Prize[@i*2] + "個)]",15;
  482. }
  483. set $@TEMP_N,$@TEMP_N-1;
  484. if ($@Code_State == 0) goto End_Code_Warp;
  485. break;
  486. // 【終極炸彈】猜中的處理
  487. case 2:
  488. if ($@TEMP_N < $@Code_People_Num){
  489. MapAnnounce "quiz_00",strcharinfo(0) + ",【終極" + $@Code_Name$ + "】被你踩到了爆炸了",17,"0xff0000";
  490. emotion 23;
  491. }
  492. if ($@TEMP_N >= $@Code_People_Num){
  493. // 【終極炸彈】第一名獎品處理
  494. Code_Bom_F1:
  495. MapAnnounce "quiz_00",strcharinfo(0) + ",恭喜你,在【終極" + $@Code_Name$ + "】存活下來,成為[第" + $@TEMP_N + "名]",17,"0x008000";
  496. emotion 14;
  497. announce "[活動公告]:【終極" + $@Code_Name$ + "】的第[" + $@TEMP_N + "]名:[ " + strcharinfo(0) + " ],恭喜你啦!!",15;
  498. // 【終極炸彈】獎品處理
  499. if ($@Code_Bom_Prize[1] != 0){
  500. getitem $@Code_Bom_Prize[($@TEMP_N*2)-1],$@Code_Bom_Prize[($@TEMP_N*2)];
  501. announce "[活動公告]:恭喜 " + strcharinfo(0) + " 領到獎品 [" + getitemname($@Code_Bom_Prize[($@TEMP_N*2)-1]) + "(" + $@Code_Bom_Prize[($@TEMP_N*2)] + "個)]",15;
  502. }else{
  503. for (set @Prize,1;@Prize<=($@Code_P4-$@TEMP_N+1);set @Prize,@Prize+1){
  504. set @i,rand(1,(getarraysize($@Code_Prize)-1)/2);
  505. getitem $@Code_Prize[(@i*2)-1],$@Code_Prize[@i*2];
  506. announce "[活動公告]:恭喜 " + strcharinfo(0) + " 領到獎品 [" + getitemname($@Code_Prize[(@i*2)-1]) + "(" + $@Code_Prize[@i*2] + "個)]",15;
  507. }
  508. }
  509. set $@TEMP_N,$@TEMP_N-1;
  510. if ($@Code_State == 0) goto End_Code_Warp;
  511. }
  512. break;
  513. }
  514. sleep2(2000);
  515. atcommand "@warp " + $@Main_Twon$;
  516. set $@Code_People_Num,$@Code_People_Num-1;
  517. deletearray $@Code_People_Temp[$@TEMP_P],1;
  518. deletearray $@Code_People_Temp$[$@TEMP_P],1;
  519. deletearray $@Show_Ip$[$@TEMP_P],1;
  520. set $@TEMP_C_MIN,1;
  521. set $@TEMP_C_MAX,((getarraysize($@Code_People_Temp)-1)*200);
  522. set $@TEMP_CODE,rand(2,(((getarraysize($@Code_People_Temp)-1)*200)-1));
  523. setnpctimer 0,"主持人【終極密碼】";
  524. end;
  525. }
  526. // 沒猜中的處理
  527. if (@temp > $@TEMP_C_MIN && @temp < $@TEMP_C_MAX){
  528. switch($@Code_Type) {
  529. case 1:
  530. MapAnnounce "quiz_00",strcharinfo(0) + ",可惜,並沒有猜中密碼!!",17,"0xffff00";
  531. break;
  532. case 2:
  533. MapAnnounce "quiz_00",strcharinfo(0) + ",好險,沒有踩到炸彈!!",17,"0xffff00";
  534. break;
  535. }
  536. if (@temp > $@TEMP_CODE) set $@TEMP_C_MAX,@temp;
  537. if (@temp < $@TEMP_CODE) set $@TEMP_C_MIN,@temp;
  538. set $@TEMP_P,$@TEMP_P+1;
  539. setnpctimer 0,"主持人【終極密碼】";
  540. end;
  541. }
  542. // 猜錯(超過範圍)的處理
  543. if (@temp <= $@TEMP_C_MIN || @temp >= $@TEMP_C_MAX){
  544. MapAnnounce "quiz_00",strcharinfo(0) + ",請輸入範圍內的數字,別亂猜",17,"0xff0000";
  545. end;
  546. }
  547. }
  548. mes strcharinfo(0) + ",還沒輪到你,別亂點!!";
  549. close;
  550.  
  551. OnTimer100:
  552. // 剩下最後1人 直接成為第一名
  553. if ($@TEMP_N >= 1 && $@Code_People_Num == 1){
  554. set $@Code_State,0;
  555. stopnpctimer;
  556. attachrid(getcharid(3,$@Code_People_Temp$[1]));
  557. switch($@Code_Type) {
  558. case 1:
  559. goto Code_Code_F1;
  560. break;
  561. case 2:
  562. set $@TEMP_N,1;
  563. goto Code_Bom_F1;
  564. break;
  565. }
  566. end;
  567. }
  568. delwaitingroom "主持人【終極密碼】";
  569. waitingroom "*活動主持人*",0;
  570. if ($@TEMP_N == 0) goto End_Code_Warp;
  571. Check_Code:
  572. // 活動名單查核 沒人結束活動
  573. if ($@Code_People_Num == 0) goto End_Code;
  574. // 活動名單查核 離線者刪除
  575. if ($@Code_People_Temp$[$@TEMP_P] != ""){
  576. if (attachrid(getcharid(3,$@Code_People_Temp$[$@TEMP_P])) == 0) {
  577. set $@Code_People_Num,$@Code_People_Num-1;
  578. deletearray $@Code_People_Temp[$@TEMP_P],1;
  579. deletearray $@Code_People_Temp$[$@TEMP_P],1;
  580. deletearray $@Show_Ip$[$@TEMP_P],1;
  581. goto Check_Code;
  582. }
  583. }
  584. // 活動名單查核 最後一人,回到第一人
  585. if ($@Code_People_Temp$[$@TEMP_P] == ""){
  586. set $@TEMP_P,1;
  587. }
  588.  
  589. MapAnnounce "quiz_00","【終極" + $@Code_Name$ + "】:[剩 " + $@TEMP_N + " 個獎項][輪到第 " + $@TEMP_P + " / " + $@Code_People_Num + " 位玩家]",17;
  590. MapAnnounce "quiz_00","【終極" + $@Code_Name$ + "】:" + $@TEMP_C_MIN + " ~ " + $@TEMP_C_MAX,17;
  591. MapAnnounce "quiz_00","請[ " + $@Code_People_Temp$[$@TEMP_P] + " ],於20秒內,點我輸入【終極" + $@Code_Name$ + "】",17;
  592. end;
  593.  
  594. // 太久沒猜的處理(淘汰)
  595. OnTimer20100:
  596. MapAnnounce "quiz_00","[ " + $@Code_People_Temp$[$@TEMP_P] + " ],超時未輸入【終極" + $@Code_Name$ + "】,取消資格",17;
  597. attachrid(getcharid(3,$@Code_People_Temp$[$@TEMP_P]));
  598. atcommand "#warp " +$@Code_People_Temp$[$@TEMP_P] + " " + $@Main_Twon$;
  599. detachrid;
  600. deletearray $@Code_People_Temp[$@TEMP_P],1;
  601. deletearray $@Code_People_Temp$[$@TEMP_P],1;
  602. deletearray $@Show_Ip$[$@TEMP_P],1;
  603. set $@Code_People_Num,$@Code_People_Num-1;
  604. end;
  605.  
  606. OnTimer21500:
  607. setnpctimer 0,"主持人【終極密碼】";
  608. initnpctimer "主持人【終極密碼】";
  609. end;
  610.  
  611. // 活動結束 自動傳送回主城
  612. End_Code_Warp:
  613. if ($@Code_People_Num == 0) goto End_Code;
  614. for (set .TEMP,1;.TEMP<=$@Code_People_Num;set .TEMP,.TEMP+1){
  615. attachrid(getcharid(3,$@Code_People_Temp$[.TEMP]));
  616. atcommand "#warp " + $@Code_People_Temp$[.TEMP] + " " + $@Main_Twon$;
  617. detachrid;
  618. sleep2(100);
  619. }
  620.  
  621. End_Code:
  622. disablenpc "主持人【終極密碼】";
  623. delwaitingroom "主持人【終極密碼】";
  624. waitingroom "請等待活動開始",0;
  625. announce "[活動公告]:【終極" + $@Code_Name$ + "】本回結束了,謝謝各位的參與",15;
  626. stopnpctimer;
  627. setnpctimer 0,"主持人【終極密碼】";
  628. set $@TEMP_P,0;
  629. set $@Code_State,0;
  630. end;
  631. end;
  632. OnInit:
  633. disablenpc "主持人【終極密碼】";
  634. waitingroom "請等待活動開始",0;
  635. // 測試階段GM除錯用 ==== 活動中的名單 ====
  636. // if ( 1 <= getgmlevel() ) {
  637. // for (set .TEMP,1;.TEMP<$@Code_People_Num+1;set .TEMP,.TEMP+1){
  638. // mes .TEMP + ". ^FF6600" + $@Code_People_Temp$[.TEMP] + "[" + $@Code_People_Temp[.TEMP] + "]^000000";
  639. // }
  640. // }
  641. // 測試階段GM除錯用 ==== 活動中的名單 ====
  642. // announce "[這是測試點1]",15;
  643. // for (set .TEMP,1;.TEMP<$@Code_People_Num+1;set .TEMP,.TEMP+1){
  644. // announce .TEMP + ". " + $@Code_People_Temp$[.TEMP] + "[" + $@Code_People_Temp[.TEMP] + "]",15;
  645. // }
  646.  
  647. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement