pastebin - collaborative debugging tool
rathena.kpaste.net RSS


Untitled
Posted by Anonymous on Wed 20th Feb 2013 08:02
raw | new post
modification of post by Anonymous (view diff)

  1. // http://rathena.org/board/topic/78486-breaker-rankings-npc/
  2. // NPC that:
  3. // - displays top 10 emperium breaker (Rank, Char Name, Guild Name, Breaker Points)
  4. // - when a player was the last to break the emp after the WoE he will get 1 point
  5. // - selection which enables the player to trade their points into TCG (item id: 7227)
  6. // but their break points are still displayed
  7.  
  8. prontera,155,188,0      script  Emp Break Ladder        910,{
  9.         switch(select("View Emp Break Ladder:Redeem points for TCG:More Info:" + ((getgmlevel()>=99) ? "Reset Ladder":""))) {
  10.         case 1:
  11.                 query_sql "SELECT `char`.`name`, `char`.`class`, guild.`name`, CAST(`value` AS UNSIGNED) " +
  12.                           "FROM global_reg_value " +
  13.                           "LEFT JOIN `char` ON global_reg_value.char_id=`char`.char_id " +
  14.                           "LEFT JOIN `guild` ON `char`.guild_id=guild.guild_id " +
  15.                           "WHERE global_reg_value.`str`='breaker_points' " +
  16.                           "ORDER BY CAST(`value` AS UNSIGNED) DESC LIMIT 10",
  17.                           .@name$, .@job, .@guild$, .@points;
  18.                 mes "[Top 10 Emp Breakers]";
  19.                 for (set .@i,0; .@i<getarraysize(.@name$); set .@i,.@i+1) {
  20.                         mes (.@i+1) +". ^0000FF"+ .@name$[.@i] +"^000000, "+jobname(.@job[.i@])+", "+ .@guild$[.@i] +" ("+ .@points[.@i] +((.@points[.@i]==1)?" pt":" pts")+")";
  21.                 }
  22.                 break;
  23.         case 2:
  24.                 mes "[Emp Break Ladder]";
  25.                 mes "Total Emp Breaks: " + breaker_points;
  26.                 mes "Available Points: " + (breaker_points - breaker_tcg);
  27.                
  28.                 if (breaker_points == 0) {
  29.                         mes "You have not broke the emp yet!";
  30.                 } else if (breaker_points <= breaker_tcg) {
  31.                         mes "You've already exchanged all your points for TCG.";
  32.                         mes "Come back after you break the emp again!";
  33.                 } else {
  34.                         set .@reward, breaker_points - breaker_tcg;
  35.                         if (select("Redeem points for "+.@reward+" TCG:Cancel") == 2) {
  36.                                 mes "Come back if you change your mind.";
  37.                         } else if (checkweight(7227, .@reward) == 0) {
  38.                                 mes "You are overweight or carrying too many items.";
  39.                         } else {
  40.                                 getitem 7227, .@reward;
  41.                                 set breaker_tcg, breaker_tcg + .@reward
  42.                                 mes "Here are your "+.@reward+" TCG!";
  43.                         }
  44.                 }
  45.                 break;
  46.         case 3:
  47.                 mes "[Emp Break Ladder]";
  48.                 mes "Each time you break the emp, you earn 1 point.";
  49.                 mes "Then, talk to me to redeem your point(s) for TCG.";
  50.                 break;
  51.         case 4:
  52.                 if (getgmlevel() < 99) end;
  53.                 set .@AID, playerattached();
  54.                 // reset for offline chars
  55.                 query_sql "DELETE FROM global_reg_value WHERE `str`='breaker_points'";
  56.                 query_sql "DELETE FROM global_reg_value WHERE `str`='breaker_tcg'";
  57.                
  58.                 // for each online char, reset breaker_points to 0
  59.                 while (getusers(1) > .@count) {
  60.                         set .@count, .@count + query_sql("SELECT account_id FROM `char` WHERE online=1 LIMIT 128 OFFSET "+.@count, .@account_id);
  61.                         set .@i, 0;
  62.                         while (.@i < getarraysize(.@account_id)) {
  63.                                 if (attachrid(.@account_id[.@i]))
  64.                                         doevent strnpcinfo(3)+"::OnResetBreakerPoints";
  65.                                 set .@i, .@i +1;
  66.                         }
  67.                         deletearray .@account_id, 128;
  68.                         sleep 1; // prevent infinity loop
  69.                 }
  70.                 attachrid .@AID;
  71.                 mes "Emp Break Ladder has been reset.";
  72.                 break;
  73.         }
  74.         close;
  75.  
  76. OnResetBreakerPoints:
  77.         set breaker_points, 0;
  78.         set breaker_tcg, 0;
  79.         end;
  80. }

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