Advertisement
Guest User

Untitled

a guest
Oct 9th, 2012
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.70 KB | None | 0 0
  1. //===== eAthena Script =======================================
  2. //= Item Rewards NPC
  3. //===== By: ==================================================
  4. //= Euphy
  5. //===== Current Version: =====================================
  6. //= 1.8
  7. //===== Description: =========================================
  8. //= Useful for event rewards, when a player is not necessarily online.
  9. //= Logging is available, if needed (holds 128 names).
  10. //= Note: Unclaimed rewards are limited to 64 at a time.
  11. //============================================================
  12.  
  13. atlantis,124,220,6 script Item Rewards 836,{
  14.  
  15. // --------------------- Config ---------------------
  16. // Package format is "ID1,Count1,ID2,Count2,..."
  17. // GM Access: Level required to open the GM menu.
  18. // GM Delete: Level required to erase entries.
  19. // GM Logging: Level required to manage logs.
  20.  
  21. set .GMAccess,1;
  22. set .GMDelete,80;
  23. set .GMLogging,99;
  24. set .PackageCount,3;
  25. setarray .Package1[0],7539,10;
  26. setarray .Package2[0],7539,5;
  27. setarray .Package3[0],0,0;
  28.  
  29. // --------------------------------------------------
  30.  
  31. if (getgmlevel() >= .GMAccess) goto GM_Menu;
  32. mes "[Item Rewards]";
  33. set .@i,0;
  34. while (.@i < getarraysize($itemreward$)) {
  35. if (strcharinfo(0) == $itemreward$[.@i]) goto GetReward;
  36. set .@i, .@i+2; }
  37. mes "You have no rewards pending.";
  38. close;
  39.  
  40. GetReward:
  41. if (((Weight*100)/MaxWeight) > 49) {
  42. mes "You are over the weight limit."; close; }
  43. if (!checkweight(5055,getarraysize(getd(".Package"+$itemreward$[.@i+1])))) {
  44. mes "Clear space in your inventory."; close; }
  45. set .@j,0;
  46. while (.@j < getarraysize(getd(".Package"+$itemreward$[.@i+1]))) {
  47. getitem getd(".Package"+$itemreward$[.@i+1]+"["+.@j+"]"),getd(".Package"+$itemreward$[.@i+1]+"["+(.@j+1)+"]");
  48. set .@j, .@j+2; }
  49. specialeffect2 248;
  50. deletearray $itemreward$[.@i],2;
  51. mes "Here you go!";
  52. close;
  53.  
  54. OnMinute00:
  55. OnMinute30:
  56. if (!getarraysize($itemreward$)) end;
  57. set .@i,0;
  58. while (.@i < getarraysize($itemreward$)) {
  59. message $itemreward$[.@i],"[You have a reward pending. See the Item Rewards NPC.]";
  60. sleep 10;
  61. set .@i, .@i+2; }
  62. end;
  63.  
  64. GM_Menu:
  65. mes "[Item Rewards]";
  66. mes "What would you like to do?";
  67. next;
  68. switch(select(" ~ ^FF55FFPackage information^000000: ~ ^FF55FFList unclaimed rewards^000000: ~ ^00D900Give a reward^000000: ~ "+((getgmlevel()<.GMDelete)?"^777777":"^DE0000")+"Delete a reward^000000: ~ "+((getgmlevel()<.GMDelete)?"^777777":"^DE0000")+"Delete all unclaimed rewards^000000: ~ "+((getgmlevel()<.GMLogging)?"^777777":"^55AAFF")+"Manage logs^000000: ~ [Close]")) {
  69. case 1:
  70. mes "[Item Rewards]";
  71. set .@j,1;
  72. while (getd(".Package"+.@j)) {
  73. mes "^660099Package " + .@j + ":^000000";
  74. set .@i,0;
  75. while (.@i < getarraysize(getd(".Package"+.@j))) {
  76. mes " ~ " + getd(".Package"+.@j+"["+(.@i+1)+"]") + "x " + getitemname(getd(".Package"+.@j+"["+(.@i)+"]"));
  77. set .@i, .@i+2; }
  78. set .@j, .@j+1; }
  79. next;
  80. goto GM_Menu;
  81. case 2:
  82. mes "[Item Rewards]";
  83. mes "Used space: ^F52887" + (getarraysize($itemreward$)/2) + "^000000/64";
  84. mes "--------------------------------";
  85. set .@i,0;
  86. while (.@i < getarraysize($itemreward$)) {
  87. mes "^B041FF" + $itemreward$[.@i] + "^000000: package #" + $itemreward$[.@i+1];
  88. set .@i, .@i+2; }
  89. next;
  90. goto GM_Menu;
  91. case 3:
  92. mes "[Item Rewards]";
  93. if (getarraysize($itemreward$) > 127) {
  94. mes "No more names can be stored.";
  95. mes "Delete some values and try again.";
  96. next;
  97. goto GM_Menu; }
  98. mes "Input a name, then a package number.";
  99. input .@name$;
  100. query_sql "SELECT `char_id` FROM `char` WHERE `name` = '"+.@name$+"'",.@charid;
  101. if (!.@charid) { mes "The name is invalid."; next; goto GM_Menu; }
  102. else set .@charid,0;
  103. input .@package,1,.PackageCount;
  104. next;
  105. mes "[Item Rewards]";
  106. mes "Player: ^B041FF" + .@name$ + "^000000";
  107. mes "Package: ^B041FF#" + .@package + "^000000";
  108. mes " ";
  109. mes "Are you sure?";
  110. if (select("Yes:No") == 2) { mes "Request cancelled."; next; goto GM_Menu; }
  111. setarray $itemreward$[getarraysize($itemreward$)],.@name$,.@package;
  112. message .@name$,"[You have a reward pending. See the Item Rewards NPC.]";
  113. if ($itemlog) {
  114. if (getarraysize($itemlog1$) > 127) {
  115. deletearray $itemlog1$[0],1;
  116. deletearray $itemlog2$[0],1; }
  117. setarray $itemlog1$[getarraysize($itemlog1$)],strcharinfo(0);
  118. setarray $itemlog2$[getarraysize($itemlog2$)],.@name$; }
  119. mes "Reward added.";
  120. next;
  121. goto GM_Menu;
  122. case 4:
  123. mes "[Item Rewards]";
  124. if (getgmlevel() < .GMDelete) {
  125. mes "You are not permitted to delete entries."; next; goto GM_Menu; }
  126. mes "Input a name to cancel a reward.";
  127. input .@name$;
  128. set .@i,0;
  129. while (.@i < getarraysize($itemreward$)) {
  130. if ($itemreward$[.@i] == .@name$) {
  131. deletearray $itemreward$[.@i],2;
  132. mes "Name cleared."; next; goto GM_Menu; }
  133. set .@i, .@i+2; }
  134. mes "The name is invalid.";
  135. next;
  136. goto GM_Menu;
  137. case 5:
  138. mes "[Item Rewards]";
  139. if (getgmlevel() < .GMDelete) {
  140. mes "You are not permitted to delete entries."; next; goto GM_Menu; }
  141. mes "^FF0000This action cannot be undone.^000000";
  142. mes "Are you sure?";
  143. mes " ";
  144. if (select("Yes:No") == 2) { mes "Request cancelled."; next; goto GM_Menu; }
  145. deletearray $itemreward$[0],getarraysize($itemreward$);
  146. mes "All entries cleared.";
  147. next;
  148. goto GM_Menu;
  149. case 6:
  150. Log_Menu:
  151. mes "[Item Rewards]";
  152. if (getgmlevel() < .GMLogging) {
  153. mes "You are not permitted to manage logs."; next; goto GM_Menu; }
  154. mes "Logs are currently "+(($itemlog)?"^00D900enabled^000000":"^FF0000disabled^000000")+".";
  155. next;
  156. switch(select(" ~ ^55AAFFView Logs^000000: ~ "+((!$itemlog)?"^00D900Enable":"^777777Disable")+" logging^000000: ~ ^DE0000Delete all logs^000000: ~ [Go back]")) {
  157. case 1:
  158. mes "[Item Rewards]";
  159. mes "Used space: ^F52887" + (getarraysize($itemlog1$)) + "^000000/128";
  160. mes "--------------------------------";
  161. set .@i,0;
  162. while (.@i < getarraysize($itemlog1$)) {
  163. mes "^B041FF" + $itemlog1$[.@i] + "^000000: sent to ^55AAFF" + $itemlog2$[.@i] + "^000000";
  164. set .@i, .@i+1; }
  165. next;
  166. goto Log_Menu;
  167. case 2:
  168. set $itemlog, ((!$itemlog)?1:0);
  169. goto Log_Menu;
  170. case 3:
  171. mes "[Item Rewards]";
  172. mes "^FF0000This action cannot be undone.^000000";
  173. mes "Are you sure?";
  174. mes " ";
  175. if (select("Yes:No") == 2) { mes "Request cancelled."; next; goto Log_Menu; }
  176. deletearray $itemlog1$[0],getarraysize($itemlog1$);
  177. deletearray $itemlog2$[0],getarraysize($itemlog2$);
  178. mes "Logs cleared.";
  179. next;
  180. goto Log_Menu;
  181. case 4:
  182. next;
  183. goto GM_Menu;
  184. }
  185. case 7:
  186. close;
  187. }
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement