Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.01 KB | None | 0 0
  1. - script WoEInfoBase -1,{
  2.  
  3. OnStartMenu:
  4. if(.init == 0)
  5. donpcevent strnpcinfo(3)+"::OnInit";
  6.  
  7. OnStartMenu2:
  8. mes "The " + ((.state)?"^00DD00current":"^DD0000next") + "^000000 WoE session is: ";
  9. mes " ";
  10. mes "Day: ^0000DD" + .daysOfWeek$[.woe_day[.woe_index]];
  11. mes "^000000Start time: ^00DD00" + .woe_0_str$[.woe_index];
  12. mes "^000000End time: ^DD0000" + .woe_1_str$[.woe_index];
  13. mes "^000000Region:";
  14.  
  15. set .@state_strs$, ".woe_state_str_" + .woe_state[.woe_index] + "$";
  16. for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {
  17. set .@output$, getd(.@state_strs$ + "[" + .@i + "]");
  18. if(.@output$ != "")
  19. mes "^000000- ^0000DD" + .@output$;
  20. }
  21. next;
  22.  
  23. if(getgmlevel() >= .gm_access)
  24. select(
  25. "Warp to Castle Grounds",
  26. "View Castle Owners",
  27. "View all WoE times",
  28. ((!.state)?"Start next WoE":"End current WoE"),
  29. ((.state)?"":"Skip next WoE session")
  30. );
  31. else
  32. select(
  33. "Warp to Castle Grounds",
  34. "View Castle Owners",
  35. "View all WoE times");
  36.  
  37. switch(@menu) {
  38. case 1: //warp
  39. mes "Which region would you like to warp to?";
  40. next;
  41. select(.region_warp$[.woe_state[.woe_index]]);
  42. if(@menu < 1 || @menu > .num_regions)
  43. close;
  44.  
  45. close2;
  46. warp .region_maps$[@menu - 1], .region_x[@menu - 1], .region_y[@menu - 1];
  47. end;
  48. case 2: //view
  49. set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index];
  50. for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {
  51. set .@k, 0;
  52. set .@castles$, ".castles_" + .regions$[.@i] + "$";
  53. set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]");
  54. while(.@castle_check && .@k < .num_castles[.@i]) {
  55. if(.@castle_check & (1 << .@k)) {
  56. set .@map$, getd(.@castles$+"["+.@k+"]");
  57. if (GetCastleData(.@map$,1)) {
  58. dispbottom "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently held by the [" + GetGuildName(GetCastleData(.@map$,1)) + "] guild.";
  59. } else {
  60. dispbottom "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently unoccupied.";
  61. }
  62. set .@castle_check, .@castle_check - (1 << .@k);
  63. }
  64. set .@k, .@k + 1;
  65. }
  66. }
  67. break;
  68. case 3: //woe times
  69. for(set .@i, 0; .@i < .num_woes; set .@i, .@i + 1) {
  70. dispbottom "- " + .daysOfWeek$[.woe_day[.@i]] + " " + .woe_0_str$[.@i] + "-" + .woe_1_str$[.@i];
  71. set .@woe_state_str_array$, ".woe_state_str_" + .woe_state[.@i] + "$";
  72. for(set .@k, 0; .@k < .num_regions; set .@k, .@k + 1) {
  73. set .@output$, getd(.@woe_state_str_array$ + "[" + .@k + "]");
  74. if(.@output$ != "")
  75. dispbottom " " + .@output$;
  76. }
  77. }
  78. break;
  79. case 4: //start next;
  80. if(getgmlevel() <.gm_access) close;
  81.  
  82. mes "^FF0000Are you sure you want to " + ((!.state)?"start the next WoE session?":"end the current WoE session?");
  83. next;
  84. if(select("Yes:No") == 2) break;
  85.  
  86. set .remainTime, 0; //might not work sometimes...you have like a 500ms window out of 505ms i guess..
  87. sleep2 .timer_refresh_rate; //wait abit so the menu doesn't screw up (how long it takes for the timer to update)
  88. break;
  89. case 5: //skip next;
  90. if(getgmlevel() <.gm_access || .state) close;
  91.  
  92. mes "^FF0000Are you sure you want to skip the next WoE session^000000";
  93. next;
  94. if(select("Yes:No") == 2) break;
  95. if(.state) { //you really can't do this with woe active
  96. next;
  97. mes "Sorry, in the time you took making your decision, WoE started";
  98. mes "Please either manually end it first or wait";
  99. break;
  100. }
  101. set .woe_index, (.woe_index + 1) % .num_woes;
  102. donpcevent strnpcinfo(3)+"::OnUpdateCountTick";
  103. sleep2 .timer_refresh_rate;
  104. break;
  105. default: close;
  106. }
  107. goto OnStartMenu2;
  108.  
  109. OnInit:
  110.  
  111. //-----------------------------------------------------------------------------------------//
  112. //CONFIG START //
  113. //-----------------------------------------------------------------------------------------//
  114.  
  115. set .gm_access, 60;
  116.  
  117. //WoE timings needs to be ordered ascendingly unless you want to do weird
  118. //stuff like skip a region every other week or so...
  119. //Also times can't overlap. Uses second of day(gettimetick(1)) for timing
  120. // eg 1am -> 3600, 2:30pm -> 52200, midnight -> 86400 (anything past that doesn't work)
  121. //Note: woe_0 is start times, woe_1 is end times. Ignore how it's called but
  122. // don't change it either since it's dynamically used
  123. // Also..woe has to end on the same day it starts (it's easier that way..)
  124. setarray .woe_day[0], 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6;
  125. setarray .woe_0[0], 36000,54000,72000,10800,18000,54000,61200,25200,32400,68400,75600,25200,32400,68400,75600,25200,32400,68400,75600,10800,18000,25200,32400,54000,61200,68400,75600,36000,54000,72000;
  126. setarray .woe_1[0], 43200,61200,79200,14400,21600,57600,64800,28800,36000,72000,79200,28800,36000,72000,79200,28800,36000,72000,79200,14400,21600,28800,36000,57600,64800,72000,79200,43200,61200,79200;
  127. setarray .woe_state[0], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 7, 8, 9, 10, 3, 4, 11, 12, 5, 6, 13, 14, 15, 16, 17;
  128.  
  129. setarray .woe_title$[0], "T", "S", "N", "B", "3", "B", "3", "T", "N", "N", "T", "T", "N", "N", "T", "T", "N", "N", "T", "B", "3", "T", "N", "B", "3", "N", "T", "N", "S", "T";
  130.  
  131. //WoE state settings. Every WoE session can be defined as a particular state of castle configuration.
  132. //.woe_state_#[%] = $
  133. // # - state number
  134. // % - region number
  135. // $ - binary representation of castles that are active for that region in that state (
  136. // (ie. 0 is no castles, 5 is castle 0 and 2 (2^0 + 2^2 = 5))
  137. setarray .woe_state_0[0],0,0,0,0,8,0,0;
  138. setarray .woe_state_1[0],0,0,0,0,2,0,0;
  139. setarray .woe_state_2[0],0,0,0,0,0,2,0;
  140. setarray .woe_state_3[0],0,2,0,0,0,0,0;
  141. setarray .woe_state_4[0],0,0,0,16,0,0,0;
  142. setarray .woe_state_5[0],0,0,4,0,0,0,0;
  143. setarray .woe_state_6[0],16,0,0,0,0,0,0;
  144. setarray .woe_state_7[0],1,0,0,0,0,0,0;
  145. setarray .woe_state_8[0],0,8,0,0,0,0,0;
  146. setarray .woe_state_9[0],0,0,8,0,0,0,0;
  147. setarray .woe_state_10[0],0,0,0,2,0,0,0;
  148. setarray .woe_state_11[0],4,0,0,0,0,0,0;
  149. setarray .woe_state_12[0],0,4,0,0,0,0,0;
  150. setarray .woe_state_13[0],0,0,2,0,0,0,0;
  151. setarray .woe_state_14[0],0,0,0,4,0,0,0;
  152. setarray .woe_state_15[0],0,0,0,0,1,0,0;
  153. setarray .woe_state_16[0],0,0,0,0,0,1,0;
  154. setarray .woe_state_17[0],0,0,0,0,0,4,0;
  155.  
  156. //Setting for if script handles WoE controller function. Disable agit_controller.txt if you are using this.
  157. //For if you want to use something else to handle your woe stuff but only this script
  158. //to show info (1 - on, 0 - off...duh)
  159. set .active_woe, 1;
  160.  
  161.  
  162. //WoE inactive on map notifier. Basically notifies player if the castle they are entering is
  163. //WoE active or not
  164. set .notify_woe, 1;
  165.  
  166. //-----------------------------------------------------------------------------------------//
  167. //CONFIG END //
  168. //-----------------------------------------------------------------------------------------//
  169.  
  170.  
  171. //-----------------------------------------------------------------------------------------//
  172. //CONSTANTS START - Don't touch this unless you know what you are doing //
  173. //-----------------------------------------------------------------------------------------//
  174.  
  175. //castle maps by region
  176. setarray .castles_prtg$[0],"prtg_cas01","prtg_cas02","prtg_cas03","prtg_cas04","prtg_cas05";
  177. setarray .castles_payg$[0],"payg_cas01","payg_cas02","payg_cas03","payg_cas04","payg_cas05";
  178. setarray .castles_gefg$[0],"gefg_cas01","gefg_cas02","gefg_cas03","gefg_cas04","gefg_cas05";
  179. setarray .castles_aldeg$[0],"aldeg_cas01","aldeg_cas02","aldeg_cas03","aldeg_cas04","aldeg_cas05";
  180. setarray .castles_arug$[0],"arug_cas01","arug_cas02","arug_cas03","arug_cas04","arug_cas05";
  181. setarray .castles_schg$[0],"schg_cas01","schg_cas02","schg_cas03","schg_cas04","schg_cas05";
  182. setarray .castles_novi$[0],"nguild_alde","nguild_gef","nguild_pay","nguild_prt";
  183.  
  184. //woe kill functions for each castle
  185. setarray .woe_kill_prtg$[0],"Agit#prtg_cas01::OnAgitEnd","Agit#prtg_cas02::OnAgitEnd","Agit#prtg_cas03::OnAgitEnd","Agit#prtg_cas04::OnAgitEnd","Agit#prtg_cas05::OnAgitEnd";
  186. setarray .woe_kill_payg$[0],"Agit#payg_cas01::OnAgitEnd","Agit#payg_cas02::OnAgitEnd","Agit#payg_cas03::OnAgitEnd","Agit#payg_cas04::OnAgitEnd","Agit#payg_cas05::OnAgitEnd";
  187. setarray .woe_kill_gefg$[0],"Agit#gefg_cas01::OnAgitEnd","Agit#gefg_cas02::OnAgitEnd","Agit#gefg_cas03::OnAgitEnd","Agit#gefg_cas04::OnAgitEnd","Agit#gefg_cas05::OnAgitEnd";
  188. setarray .woe_kill_aldeg$[0],"Agit#aldeg_cas01::OnAgitEnd","Agit#aldeg_cas02::OnAgitEnd","Agit#aldeg_cas03::OnAgitEnd","Agit#aldeg_cas04::OnAgitEnd","Agit#aldeg_cas05::OnAgitEnd";
  189. setarray .woe_kill_arug$[0],"Manager#aru01_02::OnAgitEnd2","Manager#aru02_02::OnAgitEnd2","Manager#aru03_02::OnAgitEnd2","Manager#aru04_02::OnAgitEnd2","Manager#aru05_02::OnAgitEnd2";
  190. setarray .woe_kill_schg$[0],"Manager#sch01_02::OnAgitEnd2","Manager#sch02_02::OnAgitEnd2","Manager#sch03_02::OnAgitEnd2","Manager#sch04_02::OnAgitEnd2","Manager#sch05_02::OnAgitEnd2";
  191. setarray .woe_kill_novi$[0],"Agit_N01::OnAgitEnd","Agit_N02::OnAgitEnd","Agit_N03::OnAgitEnd","Agit_N04::OnAgitEnd";
  192.  
  193. //region prefixs
  194. setarray .regions$[0],"prtg","payg","gefg","aldeg","arug","schg","novi";
  195.  
  196. //region info
  197. setarray .region_names$[0],"Prontera", "Payon", "Geffen", "Aldebaran", "Arunafeltz", "Schwarzwald", "Novice Castles";
  198. setarray .region_maps$[0],"prt_gld", "pay_gld", "gef_fild13", "alde_gld", "aru_gld", "sch_gld", "prontera";
  199. //coords to warp player to region (0 is random)
  200. setarray .region_x[0],0, 0, 0, 0, 0, 0, 148;
  201. setarray .region_y[0],0, 0, 0, 0, 0, 0, 163;
  202.  
  203. setarray .waitMsg$[0], "WoE Starts: ", "WoE Ends: ";
  204. setarray .startMsg$[0], "WoE is Starting", "WoE is Ending";
  205.  
  206. set .ticks_in_day, 86400; //mmm...magic numbers
  207. setarray .daysOfWeek$[0], "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday";
  208.  
  209. set .timer_refresh_rate, 500; //how many ms per timer refresh...keep less than 1000 (in milliseconds)
  210. set .change_state_sleep, 3000; //how long to show "WoE is Start|End-ing" msg for in ms. (in milliseconds)
  211. //Make sure WoE sessions are longer than this xD
  212. set .banner_refresh_rate, 10; //how many seconds per banner refresh...keep 1 or above (in seconds)
  213.  
  214. //-----------------------------------------------------------------------------------------//
  215. //CONSTANTS END //
  216. //-----------------------------------------------------------------------------------------//
  217.  
  218. set .num_regions, getarraysize(.regions$);
  219. set .num_woes, getarraysize(.woe_1);
  220.  
  221. for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {
  222. //count num castles per region
  223. set .num_castles[.@i], getarraysize(getd(".castles_" + .regions$[.@i] + "$"));
  224. }
  225.  
  226. //convert timestamps to readable format
  227. for(set .@i, 0; .@i < .num_woes; set .@i, .@i + 1)
  228. {
  229. set .@hrs, .woe_0[.@i] / 3600;
  230. set .@mins, .woe_0[.@i] % 3600 / 60;
  231. set .@output$, ((.@hrs % 12)?.@hrs%12:12) + ":" + ((.@mins < 10)?"0"+.@mins:.@mins) + " " + ((.@hrs > 12)?"PM":"AM");
  232.  
  233. set .woe_0_str$[.@i], .@output$;
  234.  
  235. set .@hrs, .woe_1[.@i] / 3600;
  236. set .@mins, .woe_1[.@i] % 3600 / 60;
  237. set .@output$, ((.@hrs % 12)?.@hrs%12:12) + ":" + ((.@mins < 10)?"0"+.@mins:.@mins) + " " + ((.@hrs > 12)?"PM":"AM");
  238.  
  239. set .woe_1_str$[.@i], .@output$;
  240. }
  241.  
  242. //calc number of woe states and consolidate states to create list of castles used
  243. set .num_states, 0;
  244. while(getarraysize(getd(".woe_state_" + (.num_states)))) {
  245. set .@state$, ".woe_state_" + .num_states;
  246. set .@i, 0;
  247. while(.@i < getarraysize(getd(.@state$))) {
  248. set .castleUsage[.@i], .castleUsage[.@i] | getd(.@state$ + "[" + .@i + "]");
  249. set .@i, .@i + 1;
  250. }
  251. set .num_states, .num_states + 1;
  252. }
  253.  
  254. for(set .@i, 0; .@i < .num_states; set .@i, .@i + 1) {
  255. set .@woe_state_array$, ".woe_state_" + .@i;
  256. for(set .@k, 0; .@k < .num_regions; set .@k, .@k + 1) {
  257. if(.castleUsage[.@k] > 0) {
  258. set .@castles$, ".castles_" + .regions$[.@k] + "$";
  259. set .@castle_check, getd(.@woe_state_array$ + "[" + .@k + "]");
  260. if(.@castle_check == 0) { //region not in this state
  261. //region warp menu string
  262. set .region_warp$[.@i], .region_warp$[.@i] + "^DD0000" + .region_names$[.@k] + "^000000:";
  263. continue;
  264. } else {
  265. if(.@castle_check >= ((1 << .num_castles[.@k]) - 1)) {
  266. //includes all castles...just list as region.
  267. setd(".woe_state_str_" + .@i + "$[" + .@k + "]", .region_names$[.@k]);
  268.  
  269. //region warp menu string
  270. set .region_warp$[.@i], .region_warp$[.@i] + "^00DD00" + .region_names$[.@k] + "^000000:";
  271. } else {
  272. set .@j, 0;
  273. set .@output$, "";
  274. while(.@j < .num_castles[.@k]) {
  275. if(.@castle_check & (1 << .@j)) {
  276. set .@output$, .@output$ + GetCastleName(getd(.@castles$+"["+.@j+"]"));
  277. set .@castle_check, .@castle_check - (1 << .@j);
  278. if(.@castle_check) {
  279. if(.@output$ != "")
  280. set .@output$, .@output$ + ", ";
  281. } else
  282. break;
  283. }
  284. set .@j, .@j + 1;
  285. }
  286. setd(".woe_state_str_" + .@i + "$[" + .@k + "]", .region_names$[.@k] + " ("+ .@output$ + ")");
  287.  
  288. //region warp menu string
  289. set .region_warp$[.@i], .region_warp$[.@i] + "^00DD00" + .region_names$[.@k] + " ("+ .@output$ + ")^000000:";
  290. }
  291. }
  292. } else {
  293. set .region_warp$[.@i], .region_warp$[.@i] + ":";
  294. }
  295. }
  296. }
  297.  
  298. donpcevent strnpcinfo(3)+"::OnFindCurIndex";
  299. donpcevent strnpcinfo(3)+"::OnUpdateCountTick";
  300.  
  301. if(.active_woe) {
  302. if(.notify_woe) {
  303. //set mapflag for all castle maps
  304. for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {
  305. set .@region_array$, ".castles_" + .regions$[.@i] + "$";
  306. for(set .@k, 0; .@k < .num_castles[.@i]; set .@k, .@k + 1) {
  307. setmapflag getd(.@region_array$ + "[" + .@k + "]"), mf_loadevent;
  308. setd(".loadmap_region_" + getd(.@region_array$ + "[" + .@k + "]"), .@i + 1);
  309. setd(".loadmap_castleIndex_" + getd(.@region_array$ + "[" + .@k + "]"), .@k);
  310. }
  311. }
  312. }
  313. //activates WoE if needed
  314. donpcevent strnpcinfo(3)+"::OnDoWoE";
  315. }
  316. //flag that init occured
  317. set .init, 1;
  318.  
  319. OnWoETimer:
  320. //timer stuff
  321. while (1) {
  322. set .remainTime, .count_tick - gettimetick(2);
  323. set .bannerTimer, .remainTime - (.remainTime % .banner_refresh_rate) + .banner_refresh_rate;
  324. set .min, .bannerTimer / 60;
  325. set .sec, .bannerTimer - .min * 60;
  326. set .hr, .min / 60;
  327. set .min, .min - .hr * 60;
  328. set .roomMsg$, .waitMsg$[.state] + .hr + ":" + ((.min < 10 )?"0":"") + .min + ":" + ((.sec < 10 )?"0":"") + .sec + ((.woe_title$[.woe_index] == "")?"":" - " + .woe_title$[.woe_index]);
  329. sleep .timer_refresh_rate;
  330.  
  331. if(.remainTime <= 0) {
  332. if(.active_woe) {
  333. donpcevent strnpcinfo(3)+"::OnDoWoE";
  334. }
  335. set .roomMsg$, .startMsg$[.state];
  336.  
  337. set .woe_index, (.woe_index + .state) % .num_woes; //go to next index if needed
  338. set .state, (.state + 1) % 2; //flip state
  339.  
  340. donpcevent strnpcinfo(3)+"::OnUpdateCountTick";
  341. sleep .change_state_sleep;
  342. }
  343. }
  344. end; //obligatory end =D
  345.  
  346. OnUpdateCountTick:
  347. set .count_tick, getd(".woe_" + .state + "[" + .woe_index + "]");
  348. set .count_tick, gettimetick(2) + .count_tick - gettimetick(1) + (.woe_day[.woe_index] - gettime(4) + 7) % 7 * .ticks_in_day;
  349.  
  350. if(gettimetick(2) > .count_tick)
  351. set .count_tick, .count_tick + 7 * .ticks_in_day;
  352. end;
  353.  
  354. OnFindCurIndex:
  355.  
  356. set .@cur_day, gettime(4);
  357. set .@cur_tick, gettimetick(1);
  358.  
  359. set .woe_index, 0;
  360. set .state, 0;
  361.  
  362. for(set .@i, 0; .@i < .num_woes; set .@i, .@i + 1) {
  363. if(.woe_day[.@i] < .@cur_day)
  364. continue;
  365.  
  366. if(.woe_day[.@i] == .@cur_day) {
  367. if(.woe_0[.@i] >= .@cur_tick) {
  368. set .woe_index, .@i;
  369. set .state, 0;
  370. break;
  371. }
  372. if(.woe_1[.@i] >= .@cur_tick) {
  373. set .woe_index, .@i;
  374. set .state, 1;
  375. break;
  376. }
  377. }
  378. if(.woe_day[.@i] > .@cur_day) {
  379. set .woe_index, .@i;
  380. set .state, 0;
  381. break;
  382. }
  383. }
  384. end;
  385.  
  386. //On map notifier
  387. //Comment out OnPCLoadMapEvent label if .notify_woe is disabled to prevent unnecessary triggering
  388. OnPCLoadMapEvent:
  389. if(.state && .notify_woe) {
  390. getmapxy(.@map$, .@x, .@y, 0);
  391. set .@region, getd(".loadmap_region_" + .@map$) - 1;
  392. if(.@region >= 0) {
  393. set .@castleIndex, getd(".loadmap_castleIndex_" + .@map$);
  394. if(getd(".woe_state_" + .woe_state[.woe_index] + "[" + .@region + "]") & 1 << .@castleIndex)
  395. dispbottom "The [" + GetCastleName(.@map$) + "] castle is available for conquering during this WoE session";
  396. else
  397. dispbottom "The [" + GetCastleName(.@map$) + "] castle is NOT available for conquering during this WoE session";
  398. }
  399. }
  400. end;
  401.  
  402. //------------------------------------------------------------------------------
  403. // WoE Controller Stuff Here
  404. //------------------------------------------------------------------------------
  405.  
  406. OnDoWoE:
  407. if((.state == 0 && .init) || (.state == 1 && !agitcheck())) { //starting
  408. callfunc "WoEToggler", 1;
  409.  
  410. //kills WoE in all castles that shouldn't have WoE
  411. set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index];
  412. for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {
  413. set .@castles$, ".castles_" + .regions$[.@i] + "$";
  414. set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]");
  415.  
  416. for(set .@k, 0; .@k < .num_castles[.@i]; set .@k, .@k + 1) {
  417. set .@map$, getd(.@castles$+"["+.@k+"]");
  418. if((.@castle_check & (1 << .@k)) == 0) {
  419. donpcevent getd(".woe_kill_" + .regions$[.@i] + "$[" + .@k + "]");
  420. }
  421. }
  422. }
  423.  
  424. announce "The War Of Emperium has begun!",bc_all;
  425. donpcevent strnpcinfo(3)+"::OnDisplayOwners";
  426. } else { //ending
  427. if(agitcheck()) {
  428. callfunc "WoEToggler", 0;
  429. announce "The War Of Emperium is over!",bc_all;
  430. donpcevent strnpcinfo(3)+"::OnDisplayOwners";
  431. }
  432. }
  433. end;
  434.  
  435. OnDisplayOwners: //displays based on current region
  436. set .@woe_state_array$, ".woe_state_" + .woe_state[.woe_index];
  437. for(set .@i, 0; .@i < .num_regions; set .@i, .@i + 1) {
  438. set .@k, 0;
  439.  
  440. set .@castle_check, getd(.@woe_state_array$ + "[" + .@i + "]");
  441. set .@castles$, ".castles_" + .regions$[.@i] + "$";
  442.  
  443. while(.@castle_check && .@k < .num_castles[.@i]) {
  444. if(.@castle_check & (1 << .@k)) {
  445. set .@map$, getd(.@castles$+"["+.@k+"]");
  446. if (GetCastleData(.@map$,1)) {
  447. announce "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently held by the [" + GetGuildName(GetCastleData(.@map$,1)) + "] guild.",bc_all;
  448. } else {
  449. announce "The [" + GetCastleName(.@map$) + "] castle of the [" + .region_names$[.@i] + "] region is currently unoccupied.",bc_all;
  450. }
  451. set .@castle_check, .@castle_check - (1 << .@k);
  452. }
  453. set .@k, .@k + 1;
  454. }
  455. }
  456. end;
  457. }
  458. prontera,156,195,6 script WoE Info 837,{
  459. if(getwaitingroomstate(3, strnpcinfo(3)) == -1)
  460. donpcevent strnpcinfo(3)+"::OnInit";
  461.  
  462. doevent "WoEInfoBase::OnStartMenu";
  463. end;
  464.  
  465. OnInit:
  466. while (1) {
  467. //only updates if msg is different
  468. set .banner$, getwaitingroomstate(4, strnpcinfo(3));
  469. if(getvariableofnpc(.roomMsg$, "WoEInfoBase") != .banner$) {
  470. delwaitingroom;
  471. waitingroom getvariableofnpc(.roomMsg$, "WoEInfoBase"), 0;
  472. }
  473. sleep 500;
  474. }
  475. end;
  476. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement