Can anyone help me how to make the expiration date on this script give full details? like this ( refer to the attached thumbnail )
Because this script only gives you how many days left on the EXPIRATION DATE :
[ This is the sciprt ]
- script vip -1,{
//*********************************************************************
// VIP System for eAthena servers Version 3.0
//*********************************************************************
// It allows you to boost experience and drop rate for players who donate
// for a specified amount of days.
// It makes use of account's GM Levels to specify the account type,
// by default values are these:
// - Account Level 0 = Non VIP Account
// - Account Level 1 = VIP Silver Account
// - Account Level 2 = VIP Gold Account
// - Account Level 3 = VIP Platinum Account
// all of them, of course, customizable .
// ¡Therefore, you can also set =atcommands= for every account level in
// [yourserver]/conf/atcommand_athena.conf ! Isn't that great?!
// In other words, VIP players can have access to more @commands than
// normal users if you want. This will add more value to the service.
//
// Add, List, Modify and Remove VIP accounts via whisper to this NPC.
// Manage VIP accounts in-game! Just whisper any text to the npc "vip"
// to access the VIP management menu.
//
// This script requires some database modifications for it to work,
// check them at the original post where I posted this script.
// URI:
//
// Created by: Victor H. Olvera (VicThor)
// If you like this, please donate to paypal: [email protected]
// I'd really like to make more scripts like this, so help if you can!
//
// If you want any special modification or adaptation of this script,
// please! feel free to e-mail me at [email protected] I'm $ure I can
// provide you with something according to your need$
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
//**************** VIP SYSTEM CONFIGURATION *************************
set $VIPs_SilverAccLevel,1; // Account Level assigned for VIP Silver *
set $VIPs_GoldAccLevel,2; // Account Level assigned for VIP Gold *
set $VIPs_PlatinumAccLevel,3; // Account Level assigned for VIP Platinum *
set $VIPs_SilverExpRate,50; // VIP Silver Exp Boost in % ( 1 = 1% ) *
set $VIPs_GoldExpRate,100; // VIP Gold Exp Boost in % ( 1 = 1% ) *
set $VIPs_PlatinumExpRate,150; // VIP Platinum Exp Boost in % ( 1 = 1% ) *
set $VIPs_SilverItemRate,10; // VIP Silver Item Drop Boost in % ( 1 = 1% ) *
set $VIPs_GoldItemRate,20; // VIP Gold Item Drop Boost in % ( 1 = 1% ) *
set $VIPs_PlatinumItemRate,30; // VIP Platinum Item Drop Boost in % ( 1 = 1%)*
set $VIPs_AdminGmLevel,99; // Define GM Level enabled to add, list and *
// remove VIP entries. Any GM with access le- *
// vel equal or higher than this will be able *
// to manage VIP Accounts. *
// ********************************************************************
//
// Actions and checks when player logs in about his/her account type status.
OnPCLoginEvent:
// Obtain account data
set .@getAccountType$,query_sql("SELECT `account_type` FROM login WHERE `account_id` = "+getcharid(3)+";",.@accountType$);
// First of all deACTIVEte all VIP benefits
sc_end sc_expboost;
sc_end sc_itemboost;
// If account type is PLATINUM
if (.@accountType$ == "PLATINUM")
{
set .@getVipStatus,query_sql("SELECT `status` FROM `vip_platinum` WHERE `account_id` = "+getcharid(3)+";",.@vipStatus$); // Get account type status
set .@getExpirationDate$,query_sql("SELECT DATE_FORMAT(`end_date`, '%Y %m %d') FROM vip_platinum WHERE `account_id` = "+getcharid(3)+";",.@expirationDate$); // Get expiration date
if (gettimestr("%Y %m %d",21) >= .@expirationDate$) // If current date is higher than expiration date...
{
// terminateVip function on line 430, removes player VIP entry from database table "vip_platinum"
callsub terminateVip,"vip_platinum",getcharid(3); goto L_displayInfo;
}
// If expiration date has not arrived yet, ACTIVEte VIP benefits.
else
{
sc_start sc_expboost,1000*60*60*24,$VIPs_PlatinumExpRate;
sc_start sc_itemboost,1000*60*60*24,$VIPs_PlatinumItemRate;
goto L_displayInfo;
}
}
if (.@accountType$ == "GOLD")
{
set .@getVipStatus,query_sql("SELECT `status` FROM `vip_gold` WHERE `account_id` = "+getcharid(3)+";",.@vipStatus$); // Obtener el estado de la cuenta
set .@getExpirationDate$,query_sql("SELECT DATE_FORMAT(`end_date`, '%Y %m %d') FROM vip_gold WHERE `account_id` = "+getcharid(3)+";",.@expirationDate$); // Obtener Fecha de expiración
if (gettimestr("%Y %m %d",21) >= .@expirationDate$) // Si la fecha de HOY es mayor que la fecha de expiración...
{
// terminateVip function on line 430, removes player VIP entry from database table "vip_gold"
callsub terminateVip,"vip_gold",getcharid(3); goto L_displayInfo;
}
// If expiration date has not arrived yet, ACTIVEte VIP benefits.
else
{
sc_start sc_expboost,1000*60*60*24,$VIPs_GoldExpRate;
sc_start sc_itemboost,1000*60*60*24,$VIPs_GoldItemRate; goto L_displayInfo;
}
}
if (.@accountType$ == "SILVER")
{
set .@getVipStatus,query_sql("SELECT `status` FROM `vip_silver` WHERE `account_id` = "+getcharid(3)+";",.@vipStatus$); // Obtener el estado de la cuenta
set .@getExpirationDate$,query_sql("SELECT DATE_FORMAT(`end_date`, '%Y %m %d') FROM vip_silver WHERE `account_id` = "+getcharid(3)+";",.@expirationDate$); // Obtener Fecha de expiración
if (gettimestr("%Y %m %d",21) >= .@expirationDate$) // Si la fecha de HOY es mayor que la fecha de expiración...
{
// terminateVip function on line 430, removes player VIP entry from database table "vip_silver"
callsub terminateVip,"vip_silver",getcharid(3); goto L_displayInfo;
}
// If expiration date has not arrived yet, ACTIVEte VIP benefits.
else
{
sc_start sc_expboost,1000*60*60*24,$VIPs_SilverExpRate;
sc_start sc_itemboost,1000*60*60*24,$VIPs_SilverItemRate; goto L_displayInfo;
}
}
// If account type is normal, just display account type information.
if (.@accountType$ == "NORMAL")
{
set .@getVipStatus,query_sql("SELECT `status` FROM `vip_silver` WHERE `account_id` = "+getcharid(3)+";",.@vipStatus$); // Obtener el estado de la cuenta
set .@getExpirationDate$,query_sql("SELECT DATE_FORMAT(`end_date`, '%Y %M %d') FROM vip_silver WHERE `account_id` = "+getcharid(3)+";",.@expirationDate$); // Obtener Fecha de expiración
goto L_displayInfo;
}
// Displays account type status on login on chat window.
L_displayInfo:
dispbottom "----------------------------------------------------------------------";
dispbottom "Account type: "+.@accountType$;
dispbottom "Status: "+.@vipStatus$;
dispbottom "Expiration date: "+.@expirationDate$;
dispbottom "----------------------------------------------------------------------";
end;
OnWhisperGlobal:
if ( getgmlevel() < $VIPs_AdminGmLevel ) end;
On_gm:
set .@npcName$,"[VIP System v3.0]";
mes .@npcName$;
mes "Welcome, "+strcharinfo(0)+"!";
mes "¿What can I do for you today?";
next;
switch(select("VIP Silver Menu:VIP Gold Menu:VIP Platinum Menu:Quit"))
{
case 1: // VIP Silver
next;
mes .@npcName$;
mes "[VIP SILVER]";
switch(select("Add/Extend Account:Delete Account:List Accounts:Back"))
{
case 1: // Add/Extend
mes "Type the Account Name";
mes "you wish to add.";
input .@accountName$;
next;
mes .@npcName$;
mes "[VIP SILVER]";
mes "Type the number of days you";
mes "wish to add to the account's VIP";
mes "status.";
next;
mes .@npcName$;
mes "[VIP SILVER]";
input .@silverDays;
// Fetch account's ID using the name of the account previously typed.
set .@getAccountId,query_sql("SELECT `account_id`FROM login WHERE `userid` = '"+.@accountName$+"';",.@accountId);
mes "Identifying account: "+.@accountName$+".";
sleep2 rand(100,2000); // Looks like it's working on something
if (!.@accountId) // Let's verify if the entered account exists or GM is just high...
{
mes "ERROR: Couldn't find account.";
mes "Verify if you dind't make a typo.";
close;
}
else
{ // Now lets check if the account is already 'vip_silver'
set .@getSilverAccount,query_sql("SELECT `account_id` FROM vip_silver WHERE `account_id` = "+.@accountId+";",.@silverAccountId);
if (.@silverAccountId == .@accountId) // If the account is already VIP we will update instead of inserting a new entry.
{
mes "Account ID: "+.@silverAccountId+".";
sleep2 rand(100,850);
query_sql("UPDATE vip_silver SET end_date = DATE_ADD(end_date, INTERVAL "+.@silverDays+" DAY) WHERE account_id = "+.@silverAccountId+";");
query_sql("UPDATE vip_silver SET `status` = 'ACTIVE' WHERE account_id = "+.@silverAccountId+";");
query_sql("UPDATE login SET `account_type` = 'SILVER' WHERE account_id = "+.@silverAccountId+";");
mes "Account "+.@silverAccountId+" updated";
mes "successfuly!";
close;
}
else // If the account is not already a VIP Silver one, add a new entry.
{
mes "Account ID: "+.@accountId+".";
sleep2 rand(100,850);
query_sql("INSERT INTO vip_silver (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@accountId+",'"+.@accountName$+"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE');");
sleep2 100;
query_sql("UPDATE vip_silver SET end_date = DATE_ADD(start_date, INTERVAL "+.@silverDays+" DAY) WHERE account_id = "+.@accountId+";");
query_sql("UPDATE `login` SET `level` = 1 WHERE `account_id` = "+.@accountId+";");
query_sql("UPDATE login SET `account_type` = 'SILVER' WHERE account_id = "+.@accountId+";");
mes "Account "+.@accountId+" added";
mes "successfuly!";
close;
}
}
close;
case 2: // Delete
set .@getSilverList_1$,query_sql("SELECT account_name FROM vip_silver LIMIT 0,127;", .@silverList_1$); // query_sql can only display the first 128 lines of a table. This is so sad
if ( getarraysize(.@silverList_1$) == 0 )
{
mes "There are currently no VIP";
mes "Silver accounts.";
close;
}
else
{
mes "Select the account you wish ";
mes "to remove from VIP system.";
set .@j$, "1. "+ .@silverList_1$;
for (set .@i,1; .@i < getarraysize(.@silverList_1$); set .@i, .@i + 1 )
set .@j$, .@j$ +":"+ (.@i+1) +". "+ .@silverList_1$[.@i];
set .@j$, .@j$ +":Cancel";
next;
mes .@npcName$;
mes "[VIP SILVER]";
set .@menu, select(.@j$) -1;
if ( .@menu == getarraysize(.@silverList_1$) ) { next; goto On_gm; }
mes "Are you sure you want to remove the account ";
mes .@silverList_1$[.@menu] +" ?";
if ( select( "Yes:No" ) == 2 ) { next; goto On_gm; }
query_sql ("UPDATE `login` SET `level` = 0 WHERE `userid` = '"+.@silverList_1$[.@menu]+"';");
query_sql ("DELETE FROM vip_silver WHERE account_name = '"+.@silverList_1$[.@menu]+"';");
query_sql("ALTER TABLE vip_silver AUTO_INCREMENT = 1;");
query_sql("UPDATE `login` SET `account_type` = 'NORMAL' WHERE `userid` = '"+.@silverList_1$[.@menu]+"';");
mes "VIP Silver account successfuly deleted!.";
close;
}
close;
case 3: // List
mes "VIP Silver accounts list:";
// List up to 127 vip accounts
set .@getSilverList_1$,query_sql("SELECT account_name FROM vip_silver LIMIT 0, 127;", .@silverList_1$);
for (set .@i,0; .@i < getarraysize(.@silverList_1$); set .@i, .@i + 1)
mes (.@i+1)+". "+.@silverList_1$[.@i]; // You may want to add a next; command and a new LIMIT 128,255 sentence, in case you need to store and display more than 128 VIP accounts.
close;
case 4: // Back
goto On_gm;
}
case 2: // Gold Menu
next;
mes .@npcName$;
mes "[VIP GOLD]";
switch(select("Add/Extend Account:Delete Account:List Accounts:Back"))
{
case 1: // Add
mes "Type the Account Name";
mes "you wish to add.";
input .@accountName$;
next;
mes .@npcName$;
mes "[VIP GOLD]";
mes "Enter the amount of days you";
mes "want to add to this account";
mes "status.";
next;
mes .@npcName$;
mes "[VIP GOLD]";
input .@goldDays;
// Fetch account's ID using the name of the account previously typed.
set .@getAccountId,query_sql("SELECT `account_id`FROM login WHERE `userid` = '"+.@accountName$+"';",.@accountId);
mes "Identificando Cuenta: "+.@accountName$+".";
sleep2 rand(100,2000);
if (!.@accountId) // Checks if account exists.
{
mes "ERROR: Couldn't find account.";
mes "Verify the account you typed";
close;
}
else
{ // Verify if account is already 'vip_gold'
set .@getGoldAccount,query_sql("SELECT `account_id` FROM vip_gold WHERE `account_id` = "+.@accountId+";",.@goldAccountId);
if (.@goldAccountId == .@accountId) // If it exists, update, not insert
{
mes "Account ID: "+.@accountId+".";
sleep2 rand(100,850);
query_sql("UPDATE vip_gold SET end_date = DATE_ADD(end_date, INTERVAL "+.@goldDays+" DAY) WHERE account_id = "+.@goldAccountId+";");
query_sql("UPDATE vip_gold SET `status` = 'ACTIVE' WHERE account_id = "+.@goldAccountId+";");
query_sql("UPDATE login SET `account_type` = 'GOLD' WHERE account_id = "+.@goldAccountId+";");
mes "Account "+.@goldAccountId+" updated";
mes "successfuly!";
close;
}
else // If this account is not already 'vip_gold', add an entry.
{
mes "Account ID: "+.@accountId+".";
sleep2 rand(100,850);
query_sql("INSERT INTO vip_gold (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@accountId+",'"+.@accountName$+"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE');");
sleep2 100;
query_sql("UPDATE vip_gold SET end_date = DATE_ADD(start_date, INTERVAL "+.@goldDays+" DAY) WHERE account_id = "+.@accountId+";");
query_sql("UPDATE `login` SET `level` = 1 WHERE `account_id` = "+.@accountId+";");
query_sql("UPDATE login SET `account_type` = 'GOLD' WHERE account_id = "+.@accountId+";");
mes "Account "+.@accountId+" updated";
mes "successfuly!";
close;
}
}
close;
case 2: // Delete
set .@getGoldList_1$,query_sql("SELECT account_name FROM vip_gold LIMIT 0,127;", .@goldList_1$);
if ( getarraysize(.@goldList_1$) == 0 )
{
mes "There are currently no VIP";
mes "accounts.";
close;
}
else
{
mes "Select the account you wish ";
mes "to remove from VIP system Gold.";
set .@j$, "1. "+ .@goldList_1$;
for (set .@i,1; .@i < getarraysize(.@goldList_1$); set .@i, .@i + 1 )
set .@j$, .@j$ +":"+ (.@i+1) +". "+ .@goldList_1$[.@i];
set .@j$, .@j$ +":Cancel";
next;
mes .@npcName$;
mes "[VIP GOLD]";
set .@menu, select(.@j$) -1;
if ( .@menu == getarraysize(.@goldList_1$) ) { next; goto On_gm; }
mes "Are you sure you want to remove the account ";
mes .@goldList_1$[.@menu] +" ?";
if ( select( "Yes:No" ) == 2 ) { next; goto On_gm; }
query_sql ("UPDATE `login` SET `level` = 0 WHERE `userid` = '"+.@goldList_1$[.@menu]+"';");
query_sql ("DELETE FROM vip_gold WHERE account_name = '"+.@goldList_1$[.@menu]+"';");
query_sql("ALTER TABLE vip_gold AUTO_INCREMENT = 1;");
query_sql("UPDATE `login` SET `account_type` = 'NORMAL' WHERE `userid` = '"+.@goldList_1$[.@menu]+"';");
mes "VIP Gold account successfuly deleted!.";
close;
}
close;
case 3: // List
mes "List Accounts VIP Gold:";
// List only 128 accounts due to eAthena's limitations very sad indeed.
set .@getgoldList_1$,query_sql("SELECT account_name FROM vip_gold LIMIT 0,127;", .@goldList_1$);
for (set .@i,0; .@i < getarraysize(.@goldList_1$); set .@i, .@i + 1)
mes (.@i+1)+". "+.@goldList_1$[.@i];
close;
case 4: // Back
goto On_gm;
}
case 3: // Menu VIP Platinum
next;
mes .@npcName$;
mes "[VIP PLATINUM]";
switch(select("Add/Extend Account:Delete Account:List Accounts:Back"))
{
case 1: // Add
mes "Type the Account Name";
mes "you wish to add.";
input .@accountName$;
next;
mes .@npcName$;
mes "[VIP PLATINUM]";
mes "Enter the amount of days you";
mes "will add to this account's";
mes "status.";
next;
mes .@npcName$;
mes "[VIP PLATINUM]";
input .@platinumDays;
// Fetch account's ID using the name of the account previously typed.
set .@getAccountId,query_sql("SELECT `account_id`FROM login WHERE `userid` = '"+.@accountName$+"';",.@accountId);
mes "Identificando Cuenta: "+.@accountName$+".";
sleep2 rand(100,2000);
if (!.@accountId) // Checks if account exists
{
mes "ERROR: Couldn't find this account";
mes "Enter the account correctly";
close;
}
else
{ // Is this account a 'vip_platinum' already?
set .@getPlatinumAccount,query_sql("SELECT `account_id` FROM vip_platinum WHERE `account_id` = "+.@accountId+";",.@platinumAccountId);
if (.@platinumAccountId == .@accountId) // If this account is 'vip_platinum' update instead of insterting a new entry.
{
mes "Account ID: "+.@accountId+".";
sleep2 rand(100,850);
query_sql("UPDATE vip_platinum SET end_date = DATE_ADD(end_date, INTERVAL "+.@platinumDays+" DAY) WHERE account_id = "+.@platinumAccountId+";");
query_sql("UPDATE vip_platinum SET `status` = 'ACTIVE' WHERE account_id = "+.@platinumAccountId+";");
query_sql("UPDATE login SET `account_type` = 'PLATINUM' WHERE account_id = "+.@platinumAccountId+";");
mes "Account "+.@platinumAccountId+" updated";
mes "successfuly!";
close;
}
else // If it's not VIP already, insert a new entry
{
mes "Account ID: "+.@accountId+".";
sleep2 rand(100,850);
query_sql("INSERT INTO vip_platinum (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@accountId+",'"+.@accountName$+"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE');");
sleep2 100;
query_sql("UPDATE vip_platinum SET end_date = DATE_ADD(start_date, INTERVAL "+.@platinumDays+" DAY) WHERE account_id = "+.@accountId+";");
query_sql("UPDATE `login` SET `level` = 1 WHERE `account_id` = "+.@accountId+";");
query_sql("UPDATE login SET `account_type` = 'PLATINUM' WHERE account_id = "+.@accountId+";");
mes "Account "+.@accountId+" updated";
mes "successfuly!";
close;
}
}
close;
case 2: // Delete
set .@getPlatinumList_1$,query_sql("SELECT account_name FROM vip_platinum LIMIT 0,127;", .@platinumList_1$);
if ( getarraysize(.@platinumList_1$) == 0 )
{
mes "There are currently no VIP";
mes "Platinum accounts.";
close;
}
else
{
mes "Select the account you wish ";
mes "to remove from VIP system Platinum.";
set .@j$, "1. "+ .@platinumList_1$;
for (set .@i,1; .@i < getarraysize(.@platinumList_1$); set .@i, .@i + 1 )
set .@j$, .@j$ +":"+ (.@i+1) +". "+ .@platinumList_1$[.@i];
set .@j$, .@j$ +":Cancel";
next;
mes .@npcName$;
mes "[VIP PLATINUM]";
set .@menu, select(.@j$) -1;
if ( .@menu == getarraysize(.@platinumList_1$) ) { next; goto On_gm; }
mes "Are you sure you want to remove the account ";
mes .@platinumList_1$[.@menu] +" ?";
if ( select( "Yes:No" ) == 2 ) { next; goto On_gm; }
query_sql ("UPDATE `login` SET `level` = 0 WHERE `userid` = '"+.@platinumList_1$[.@menu]+"';");
query_sql ("DELETE FROM vip_platinum WHERE account_name = '"+.@platinumList_1$[.@menu]+"';");
query_sql("ALTER TABLE vip_platinum AUTO_INCREMENT = 1;");
query_sql("UPDATE `login` SET `account_type` = 'NORMAL' WHERE `userid` = '"+.@platinumList_1$[.@menu]+"';");
mes "VIP Platinum account successfuly deleted!.";
close;
}
close;
case 3: // List
mes "List Accounts VIP Platinum:";
set .@getplatinumList_1$,query_sql("SELECT account_name FROM vip_platinum LIMIT 0,127;", .@platinumList_1$);
for (set .@i,0; .@i < getarraysize(.@platinumList_1$); set .@i, .@i + 1)
mes (.@i+1)+". "+.@platinumList_1$[.@i];
close;
case 4: // Back
goto On_gm;
}
case 4: // Quit
close;
}
terminateVip: // This function removes any VIP status from the specified account
set .@dbTableName$,getarg(0); // Table name
set .@accountId,getarg(1); // Account ID
query_sql("UPDATE `login` SET `level` = 0 WHERE account_id = "+.@accountId+";"); // Set account level to 0
query_sql("DELETE FROM "+.@dbTableName$+" WHERE account_id = '"+.@accountId+"';"); // Delete VIP table entry
query_sql("ALTER TABLE "+.@dbTableName$+" AUTO_INCREMENT = 1;"); // Tries to reset id count
query_sql("UPDATE `login` SET `account_type` = 'NORMAL' WHERE `account_id` = "+.@accountId+";"); // Set account type to "NORMAL" in 'login' table
goto L_displayInfo;
}
Question
caspa
Can anyone help me how to make the expiration date on this script give full details? like this ( refer to the attached thumbnail )
Because this script only gives you how many days left on the EXPIRATION DATE :
[ This is the sciprt ]

Edited by caspaLink to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.