Advertisement
Guest User

Untitled

a guest
Oct 2nd, 2014
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.74 KB | None | 0 0
  1. payon,96,123,3 script Guild Package 98,{
  2. //quiz_02,371,379,3 script Guild Package 98,{
  3. switch(select( (countitem(30000)?"I have a GM's Approval Card":"") + ":Guild List")) {
  4. case 1: // exchanging a GM's Approval Card (30000)
  5. mes "[Guild Pack Info]";
  6. if (!getcharid(2)) {
  7. mes "^FF0000You must be in a guild to receive a guild package.^000000";
  8. close;
  9. } else if (getcharid(0) != getguildmasterid(getcharid(2))) {
  10. mes "Please tell your guild leader ^0000FF"+getguildmaster(getcharid(2))+"^000000 to come and see me personally.";
  11. close;
  12. } else if (countitem(30000) < 1) {
  13. mes "^FF0000You don't have a GM's Approval Card to exchange.^000000";
  14. close;
  15. }
  16.  
  17. // check if guild has 10 members
  18. query_sql "SELECT char_id,account_id,`name` FROM guild_member WHERE guild_id="+getcharid(2), .@char_id,.@account_id,.@name$;
  19. if (getarraysize(.@char_id) < .guild_size2) {
  20. mes "You must have ^FF0000"+.guild_size2+"^000000 guild members";
  21. mes "(1 leader + "+(.guild_size2-1)+" members).";
  22. close;
  23. }
  24. // check if all guild members are online
  25. for (set .@i,0; .@i<.guild_size2; set .@i,.@i+1) {
  26. if (!isloggedin(.@account_id[.@i], .@char_id[.@i])) {
  27. mes "^FF0000"+ .@name$[.@i] +"^000000 is offline.";
  28. mes "All "+.guild_size2+" guild members must be online to receive the guild package.";
  29. close;
  30. }
  31. }
  32. // check if any guild members have ALREADY obtained a guild package
  33. if (query_sql("SELECT `name`,guild_name FROM guildpack_members " +
  34. "LEFT JOIN guildpack_guilds ON guildpack_members.guild_id=guildpack_guilds.guild_id " +
  35. "WHERE account_id IN (SELECT account_id FROM guild_member WHERE guild_id="+getcharid(2)+") LIMIT 1", .@name$,.@guild$) > 0) {
  36. mes "^0000FF"+.@name$+"^FF0000 already received a guild pack while in ^0000FF"+.@guild$+"^000000.";
  37. mes "Each account can only receive a guild pack once.";
  38. close;
  39. }
  40. // check if any players have already obtained a guild package (from that MAC address)
  41. if (query_sql("SELECT `name`,guild_name FROM guildpack_members " +
  42. "LEFT JOIN guildpack_guilds ON guildpack_members.guild_id=guildpack_guilds.guild_id " +
  43. "WHERE mac IN (SELECT last_mac FROM guild_member LEFT JOIN login ON guild_member.account_id=login.account_id WHERE guild_id="+getcharid(2)+") LIMIT 1", .@name$,.@guild$) > 0) {
  44. mes "^0000FF"+.@name$+"^FF0000 already received a guild pack while in ^0000FF"+.@guild$+"^000000.";
  45. mes "Each person can only receive a guild pack once per MAC address.";
  46. close;
  47. }
  48. mes "Exchange GM's Approval Card for Guild Pack?";
  49. if (select("No:Yes, continue") == 1) close;
  50.  
  51. // #SUCCESS - passed all checks
  52. delitem 30000,1;
  53. for (set .@i,0; .@i<.guild_size; set .@i,.@i+1) {
  54. if (.@account_id[.@i] == playerattached()) {
  55. getitem 30001,1; // leader
  56. } else {
  57. getitem 30002,1, .@account_id[.@i]; // each member
  58. }
  59. }
  60. announce "Guild Pack Info : the guild ["+ strcharinfo(2) +"] has obtain a guild package.", bc_all|bc_blue;
  61.  
  62. // record guild
  63. query_sql "INSERT INTO guildpack_guilds (guild_id,guild_name,master_char_id,master_name,redeem_time) VALUES " +
  64. "("+getcharid(2)+",'"+escape_sql(strcharinfo(2))+"', "+getcharid(0)+",'"+escape_sql(strcharinfo(0))+"', NOW())";
  65. // record all guild members
  66. query_sql "INSERT INTO guildpack_members(guild_id,account_id,char_id,`name`,ip,mac) " +
  67. "SELECT guild_id,guild_member.account_id,char_id,`name`,last_ip,last_mac FROM guild_member " +
  68. "LEFT JOIN login ON guild_member.account_id=login.account_id " +
  69. "WHERE guild_id="+getcharid(2);
  70. break;
  71.  
  72. case 2: // Guild List
  73. // get list of guilds
  74. query_sql "SELECT guild_id,guild_name FROM guildpack_guilds ORDER BY guild_name ASC", .@guild_id,.@guild_name$;
  75. mes "[Guild Pack Info]";
  76. if (getarraysize(.@guild_id) == 0) {
  77. mes "No guilds have received a guild pack.";
  78. close;
  79. }
  80. for (set .@i,0; .@i<getarraysize(.@guild_id); set .@i,.@i+1)
  81. set .@menu$, .@menu$ + .@guild_name$[.@i]+":";
  82. // pick a guild
  83. set .@GID, .@guild_id[set(.@g,select(.@menu$)-1)];
  84. // get info for that guild
  85. query_sql "SELECT guildpack_members.char_id, CONCAT(IF(ISNULL(guild_member.char_id),'^FF0000','^008000')," +
  86. "guildpack_members.`name`), ip FROM guildpack_members " +
  87. "LEFT JOIN guildpack_guilds ON guildpack_members.guild_id=guildpack_guilds.guild_id " +
  88. "LEFT JOIN guild_member ON guildpack_members.char_id=guild_member.char_id AND guildpack_members.guild_id=guild_member.guild_id " +
  89. "WHERE guildpack_members.guild_id="+.@GID+" " +
  90. "ORDER BY (guildpack_members.char_id=master_char_id) DESC",
  91. .@char_id, .@colored_name$, .@ip$;
  92. // display guild info
  93. mes "Guild : " + .@guild_name$[.@g];
  94. mes "Status : " + (query_sql("SELECT 1 FROM guild WHERE guild_id="+.@GID,.@i) ? "^008000Active" : "^FF0000Disbanded") + "^000000";
  95. mes "Leader : "+.@colored_name$[0]+"^000000 ("+.@ip$[0]+")";
  96. mes "Members :";
  97. for (set .@i,1; .@i<getarraysize(.@char_id); set .@i,.@i+1)
  98. mes " "+(.@i+1)+". "+.@colored_name$[.@i]+"^000000 ("+.@ip$[.@i]+")";
  99. break;
  100. }
  101. close;
  102.  
  103. OnInit:
  104. set .guild_size, 76;
  105. set .guild_size2, 9;
  106. if (query_sql("SHOW TABLES LIKE 'guildpack_guilds'", .@t$) == 0) {
  107. debugmes "[Guild Pack Info]: SQL table `guildpack_guilds` not found! Disabling npc.";
  108. disablenpc strnpcinfo(3);
  109. } else if (query_sql("SHOW TABLES LIKE 'guildpack_members'", .@t$) == 0) {
  110. debugmes "[Guild Pack Info]: SQL table `guildpack_members` not found! Disabling npc.";
  111. disablenpc strnpcinfo(3);
  112. }
  113. end;
  114. }
  115.  
  116. //////////////////////////////////////////////////////////
  117. // Guild Master Item Pack Functions //
  118. //////////////////////////////////////////////////////////
  119. function script GMaster1 {
  120. setarray .Items[0], 2504,1,0,2406,1,0,2404,1,0,2313,1,0,2322,1,0; // <item id>,<amount>,<refine>
  121. set .size, getarraysize(.Items);
  122.  
  123. if ( (MaxWeight/2) <= Weight ) end;
  124. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  125. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  126. end;
  127. }
  128.  
  129. function script GMaster2 {
  130. setarray .Items[0], 2104,1,0,2106,1,0,2291,1,0,2227,1,0,4092,2,0; // <item id>,<amount>,<refine>
  131. set .size, getarraysize(.Items);
  132.  
  133. if ( (MaxWeight/2) <= Weight ) end;
  134. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  135. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  136. end;
  137. }
  138.  
  139. function script GMaster3 {
  140. setarray .Items[0], 4035,2,0,2607,2,0,4003,1,0,14152,1,0,1520,1,0,1715,1,0; // <item id>,<amount>,<refine>
  141. set .size, getarraysize(.Items);
  142.  
  143. if ( (MaxWeight/2) <= Weight ) end;
  144. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  145. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  146. end;
  147. }
  148.  
  149. function script GMaster4 {
  150. setarray .Items[0], 1208,2,0,1117,1,0,1405,1,0,1602,1,0,1251,1,0,4082,2,0,4085,2,0,4027,2,0; // <item id>,<amount>,<refine>
  151. set .size, getarraysize(.Items);
  152.  
  153. if ( (MaxWeight/2) <= Weight ) end;
  154. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  155. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  156. end;
  157. }
  158.  
  159. function script GMaster5 {
  160. setarray .Items[0], 13534,10,0,13810,20,0,13516,40,0,13536,20,0; // <item id>,<amount>,<refine>
  161. set .size, getarraysize(.Items);
  162.  
  163. if ( (MaxWeight/2) <= Weight ) end;
  164. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  165. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  166. end;
  167. }
  168.  
  169. function script GMaster6 {
  170. setarray .Items[0], 13889,2,0,13890,2,0,1011,10,0,670,100,0; // <item id>,<amount>,<refine>
  171. set .size, getarraysize(.Items);
  172.  
  173. if ( (MaxWeight/2) <= Weight ) end;
  174. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  175. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  176. end;
  177. }
  178. //////////////////////////////////////////////////////////
  179. // Guild Member Item Pack Functions //
  180. //////////////////////////////////////////////////////////
  181. function script GMember1 {
  182. setarray .Items[0], 2504,1,0,2406,1,0,2404,1,0,2313,1,0,2322,1,0; // <item id>,<amount>,<refine>
  183. set .size, getarraysize(.Items);
  184.  
  185. if ( (MaxWeight/2) <= Weight ) end;
  186. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  187. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  188. end;
  189. }
  190.  
  191. function script GMember2 {
  192. setarray .Items[0], 2104,1,0,2106,1,0,2291,1,0,2227,1,0,4092,2,0; // <item id>,<amount>,<refine>
  193. set .size, getarraysize(.Items);
  194.  
  195. if ( (MaxWeight/2) <= Weight ) end;
  196. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  197. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  198. end;
  199. }
  200.  
  201. function script GMember3 {
  202. setarray .Items[0], 4035,2,0,2607,2,0,4003,1,0,14152,1,0,1520,1,0,1715,1,0; // <item id>,<amount>,<refine>
  203. set .size, getarraysize(.Items);
  204.  
  205. if ( (MaxWeight/2) <= Weight ) end;
  206. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  207. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  208. end;
  209. }
  210.  
  211. function script GMember4 {
  212. setarray .Items[0], 1208,2,0,1117,1,0,1405,1,0,1602,1,0,1251,1,0,4082,2,0; // <item id>,<amount>,<refine>
  213. set .size, getarraysize(.Items);
  214.  
  215. if ( (MaxWeight/2) <= Weight ) end;
  216. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  217. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  218. end;
  219. }
  220.  
  221. function script GMember5 {
  222. setarray .Items[0], 4085,2,0,4027,2,0,13889,2,0,13890,2,0,1011,10,0; // <item id>,<amount>,<refine>
  223. set .size, getarraysize(.Items);
  224.  
  225. if ( (MaxWeight/2) <= Weight ) end;
  226. for ( set .@i, 0; .@i < .size; set .@i, .@i + 3 )
  227. getitembound2 .Items[.@i],.Items[.@i+1],1,.Items[.@i+2],0,0,0,0,0,1;
  228. end;
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement