//===== Hercules Script ======================================
//= Event Helper
//===== By: ==================================================
//= ZelosAvalon
//= Rokimoki
//===== Current Version: =====================================
//= 1.3
//===== Description: =========================================
//= 1.0 NPC that manages the earnings event points in Invasion Event,
// where you can exchange your points for event Event Coins and see the ranking of the event. [ZelosAvalon]
//===== Additional Comments: =================================
//= 1.0 Now can see how many points you have earned during the invasion event and exchange them for Event Coins. [ZelosAvalon]
//= 1.1 Now you can see how many Events Points you have earned at all events,
//= and how many you can still exchange for Event Coins [ZelosAvalon]
//= 1.3 Ranking was migrated into a SQL table (SQL: event_rank)
//= Now you can see the ranking of the event, the top 10 players with the highest score. [ZelosAvalon] & [Rokimoki]
//============================================================
prontera,146,156,3 script Event Helper 1_M_SIGNALCHE,{
mes "[Event Helper]";
mes "Hello ^3355FF"+strcharinfo(0)+"^000000";
mes "I'm the Event Helper.";
mes "Here you can check your points, exchanging them and see their position in the top event players";
next;
Main:
mes "[Event Helper]";
mes "What would you like to check?";
next;
switch(select("^22AA22Event Points^000000:^3355FFPrizes^000000:Ranking:Exit")) {
case 1:
query_sql "SELECT `event_points`, `t_event_points` FROM `event_rank` WHERE `id` = '"+getcharid(0)+"'", .@points, .@tpoints;
.@events = .@points;
.@tevents = .@tpoints;
mes "[Event Helper]";
mes "You already earned ^3355FF"+.@tevents+"^000000 Event Points";
mes "You have ^3355FF"+.@events+"^000000 Event Points to use";
next;
goto Main;
case 2:
query_sql "SELECT `event_points` FROM `event_rank` WHERE `id` = '"+getcharid(0)+"'", .@events;
.@events = .@points;
mes "[Event Helper]";
mes "You have ^3355FF"+.@events+"^000000 Event Points for exchange";
mes "Exchange rate:";
mes "^3355FF20^000000 Event Point = ^3355FF1^000000 Bronze Event Coin";
next;
switch(select("Convert Event Points:Back")) {
case 1:
.@item_id = 8302;
.@item_cost = 20;
query_sql "SELECT `event_points` FROM `event_rank` WHERE `id` = '"+getcharid(0)+"'", .@points;
if (.@item_cost > .@points)
{
// We don't have what we need.
mes "Sorry, but you don't have " + .@item_cost + " Event Points.";
close;
}
else
{
.@result = .@points / .@item_cost;
.@rest = .@points % .@item_cost;
mes "You can get "+.@result+"x " + getitemname(.@item_id) + "";
mes "You want trade?";
if (select("Yes:No") == 2)
close;
getitem .@item_id, .@result;
query_sql "UPDATE `event_rank` SET `event_points` = '"+.@rest+"' WHERE `id` = '"+getcharid(0)+"'";
mes "Here it is";
close;
}
case 2:
goto Main;
}
case 3:
mes "[Event Helper Ranking]";
cleararray .@players$[0], "", 10; // defining 10 positions
cleararray .@event_point[0], 0, 10;
query_sql("SELECT `name`, `t_event_points` FROM `event_rank` ORDER BY `t_event_points` DESC LIMIT 10;", .@players$, .@event_point);
for (.@i = 0; .@i < 10; .@i++) {
if (strcmp(.@players$[.@i], "") == 0) break; // if some is empty, stop printing
mes (.@i + 1) + " - ^0000FF" + .@players$[.@i] + "^000000 - ^FF0000" + .@event_point[.@i] + "^000000 Pts.";
}
close;
}
}