pastebin - collaborative debugging tool
kpaste.net RSS


Untitled
Posted by Anonymous on Mon 18th Feb 2013 08:45
raw | new post

  1. // http://rathena.org/board/topic/78517-guild-pack-information-giver/
  2.  
  3. /*//==========================================================
  4. CREATE TABLE IF NOT EXISTS `guildpack_guilds` (
  5.   `guild_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  6.   `guild_name` VARCHAR(24) NOT NULL DEFAULT '',
  7.   `master_char_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  8.   `master_name` VARCHAR(24) NOT NULL DEFAULT '',
  9.   `redeem_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
  10.   PRIMARY KEY  (`guild_id`)
  11. ) ENGINE=MYISAM;
  12.  
  13. CREATE TABLE IF NOT EXISTS `guildpack_members` (
  14.   `guild_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  15.   `account_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  16.   `char_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
  17.   `name` VARCHAR(30) NOT NULL DEFAULT '',
  18.   `ip` VARCHAR(15) NOT NULL DEFAULT '',
  19.   `mac` VARCHAR(17) NOT NULL DEFAULT '',
  20.   PRIMARY KEY  (`guild_id`,`char_id`),
  21.   KEY `guild_id` (`guild_id`)
  22. ) ENGINE=MYISAM;
  23. //==========================================================*/
  24.  
  25. prontera,155,188,0      script  Guild Pack Info 910,{
  26.         switch(select( (countitem(21001)?"I have a GM's Approval Card":"") + ":Guild List")) {
  27.         case 1: // exchanging a GM's Approval Card (21001)
  28.                 mes "[Guild Pack Info]";
  29.                 if (!getcharid(2)) {
  30.                         mes "^FF0000You must be in a guild to receive a guild package.^000000";
  31.                         close;
  32.                 } else if (getcharid(0) != getguildmasterid(getcharid(2))) {
  33.                         mes "Please tell your guild leader ^0000FF"+getguildmaster(getcharid(2))+"^000000 to come and see me personally.";
  34.                         close;
  35.                 } else if (countitem(21001) < 1) {
  36.                         mes "^FF0000You don't have a GM's Approval Card to exchange.^000000";
  37.                         close;
  38.                 }
  39.                
  40.                 // check if guild has 10 members
  41.                 query_sql "SELECT char_id,account_id,`name` FROM guild_member WHERE guild_id="+getcharid(2), .@char_id,.@account_id,.@name$;
  42.                 if (getarraysize(.@char_id) < .guild_size) {
  43.                         mes "You must have ^FF0000"+.guild_size+"^000000 guild members";
  44.                         mes "(1 leader + "+(.guild_size-1)+" members).";
  45.                         close;
  46.                 }
  47.                 // check if all guild members are online
  48.                 for (set .@i,0; .@i<.guild_size; set .@i,.@i+1) {
  49.                         if (!isloggedin(.@account_id[.@i], .@char_id[.@i])) {
  50.                                 mes "^FF0000"+ .@name$[.@i] +"^000000 is offline.";
  51.                                 mes "All "+.guild_size+" guild members must be online to receive the guild package.";
  52.                                 close;
  53.                         }
  54.                 }
  55.                 // check if any guild members have ALREADY obtained a guild package
  56.                 if (query_sql("SELECT `name`,guild_name FROM guildpack_members " +
  57.                       "LEFT JOIN guildpack_guilds ON guildpack_members.guild_id=guildpack_guilds.guild_id " +
  58.                       "WHERE account_id IN (SELECT account_id FROM guild_member WHERE guild_id="+getcharid(2)+") LIMIT 1", .@name$,.@guild$) > 0) {
  59.                         mes "^0000FF"+.@name$+"^FF0000 already received a guild pack while in ^0000FF"+.@guild$+"^000000.";
  60.                         mes "Each account can only receive a guild pack once.";
  61.                         close;
  62.                 }
  63.                 // check if any players have already obtained a guild package (from that MAC address)
  64.                 if (query_sql("SELECT `name`,guild_name FROM guildpack_members " +
  65.                       "LEFT JOIN guildpack_guilds ON guildpack_members.guild_id=guildpack_guilds.guild_id " +
  66.                       "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) {
  67.                         mes "^0000FF"+.@name$+"^FF0000 already received a guild pack while in ^0000FF"+.@guild$+"^000000.";
  68.                         mes "Each person can only receive a guild pack once per MAC address.";
  69.                         close;
  70.                 }
  71.                 mes "Exchange GM's Approval Card for Guild Pack?";
  72.                 if (select("No:Yes, continue") == 1) close;
  73.                
  74.                 // #SUCCESS - passed all checks
  75.                 delitem 21001,1;
  76.                 for (set .@i,0; .@i<.guild_size; set .@i,.@i+1) {
  77.                         if (.@account_id[.@i] == playerattached()) {
  78.                                 getitem 21010,1; // leader
  79.                         } else {
  80.                                 getitem 21011,1, .@account_id[.@i]; // each member
  81.                         }
  82.                 }
  83.                 announce "Guild Pack Info : the guild ["+ strcharinfo(2) +"] has obtain a guild package.", bc_all|bc_blue;
  84.                
  85.                 // record guild
  86.                 query_sql "INSERT INTO guildpack_guilds (guild_id,guild_name,master_char_id,master_name,redeem_time) VALUES " +
  87.                           "("+getcharid(2)+",'"+escape_sql(strcharinfo(2))+"', "+getcharid(0)+",'"+escape_sql(strcharinfo(0))+"', NOW())";
  88.                 // record all guild members
  89.                 query_sql "INSERT INTO guildpack_members(guild_id,account_id,char_id,`name`,ip,mac) " +
  90.                           "SELECT guild_id,guild_member.account_id,char_id,`name`,last_ip,last_mac FROM guild_member " +
  91.                           "LEFT JOIN login ON guild_member.account_id=login.account_id " +
  92.                           "WHERE guild_id="+getcharid(2);
  93.                 break;
  94.                
  95.         case 2: // Guild List
  96.                 // get list of guilds
  97.                 query_sql "SELECT guild_id,guild_name FROM guildpack_guilds ORDER BY guild_name ASC", .@guild_id,.@guild_name$;
  98.                 mes "[Guild Pack Info]";
  99.                 if (getarraysize(.@guild_id) == 0) {
  100.                         mes "No guilds have received a guild pack.";
  101.                         close;
  102.                 }
  103.                 for (set .@i,0; .@i<getarraysize(.@guild_id); set .@i,.@i+1)
  104.                         set .@menu$, .@menu$ + .@guild_name$[.@i]+":";
  105.                 // pick a guild
  106.                 set .@GID, .@guild_id[set(.@g,select(.@menu$)-1)];
  107.                 // get info for that guild
  108.                 query_sql "SELECT guildpack_members.char_id, CONCAT(IF(ISNULL(guild_member.char_id),'^FF0000','^008000')," +
  109.                           "guildpack_members.`name`), ip FROM guildpack_members " +
  110.                           "LEFT JOIN guildpack_guilds ON guildpack_members.guild_id=guildpack_guilds.guild_id " +
  111.                           "LEFT JOIN guild_member ON guildpack_members.char_id=guild_member.char_id AND guildpack_members.guild_id=guild_member.guild_id " +
  112.                           "WHERE guildpack_members.guild_id="+.@GID+" " +
  113.                           "ORDER BY (guildpack_members.char_id=master_char_id) DESC",
  114.                           .@char_id, .@colored_name$, .@ip$;
  115.                 // display guild info
  116.                 mes "Guild : " + .@guild_name$[.@g];
  117.                 mes "Status : " + (query_sql("SELECT 1 FROM guild WHERE guild_id="+.@GID,.@i) ? "^008000Active" : "^FF0000Disbanded") + "^000000";
  118.                 mes "Leader : "+.@colored_name$[0]+"^000000 ("+.@ip$[0]+")";
  119.                 mes "Members :";
  120.                 for (set .@i,1; .@i<getarraysize(.@char_id); set .@i,.@i+1)
  121.                         mes "  "+(.@i+1)+". "+.@colored_name$[.@i]+"^000000 ("+.@ip$[.@i]+")";
  122.                 break;
  123.         }
  124.         close;
  125.  
  126. OnInit:
  127.         set .guild_size, 10;
  128.         if (query_sql("SHOW TABLES LIKE 'guildpack_guilds'", .@t$) == 0) {
  129.                 debugmes "[Guild Pack Info]: SQL table `guildpack_guilds` not found! Disabling npc.";
  130.                 disablenpc strnpcinfo(3);
  131.         } else if (query_sql("SHOW TABLES LIKE 'guildpack_members'", .@t$) == 0) {
  132.                 debugmes "[Guild Pack Info]: SQL table `guildpack_members` not found! Disabling npc.";
  133.                 disablenpc strnpcinfo(3);
  134.         }
  135.         end;
  136. }

Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}




All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at