Some one how to work this because im getting some problem with the npc cant click it.. anyway im using ea mod
// base on victor's vip script
/*
CREATE TABLE IF NOT EXISTS `vip_bronze` (
`account_id` int(11) unsigned NOT NULL default '0',
`account_name` varchar(255) NOT NULL default 'NULL',
`start_date` datetime NOT NULL default '0000-00-00 00:00:00',
`end_date` datetime NOT NULL default '0000-00-00 00:00:00',
`status` varchar(255) NOT NULL DEFAULT 'NULL',
PRIMARY KEY (`account_id`)
) ENGINE=MyISAM;
CREATE TABLE IF NOT EXISTS `vip_silver` (
`account_id` int(11) unsigned NOT NULL default '0',
`account_name` varchar(255) NOT NULL default 'NULL',
`start_date` datetime NOT NULL default '0000-00-00 00:00:00',
`end_date` datetime NOT NULL default '0000-00-00 00:00:00',
`status` varchar(255) NOT NULL DEFAULT 'NULL',
PRIMARY KEY (`account_id`)
) ENGINE=MyISAM;
CREATE TABLE IF NOT EXISTS `vip_gold` (
`account_id` int(11) unsigned NOT NULL default '0',
`account_name` varchar(255) NOT NULL default 'NULL',
`start_date` datetime NOT NULL default '0000-00-00 00:00:00',
`end_date` datetime NOT NULL default '0000-00-00 00:00:00',
`status` varchar(255) NOT NULL DEFAULT 'NULL',
PRIMARY KEY (`account_id`)
) ENGINE=MyISAM;
ALTER table `login` add column account_type varchar(255) NOT NULL default 'NULL' after `birthdate`, add index (account_type);
UPDATE `login` SET `account_type` = 'NULL';
TRUNCATE `vip_bronze`;
TRUNCATE `vip_gold`;
TRUNCATE `vip_silver`;
*/
prontera,150,150,5 script VIP system 56,{
function statusvip;
function expirevip;
function mainmenu;
function showlist;
function deletevip;
function addvip;
mes .npc_Name$;
query_sql "SELECT `account_type` FROM login WHERE `account_id` = "+ getcharid(3), .@acc_Type$;
while( .@i < 3 && strtolower( .@acc_Type$ ) != .type_name$[.@i] ) set .@i, .@i +1;
if( .@i == 3 )
mes "Hello "+ strcharinfo(0) +" you have an normal account. Get an "+ getitemname( .item_premium_b ) +", "+ getitemname( .item_premium_s ) +", "+ getitemname( .item_premium_g ) +" to get a premium account.";
else {
set .@expiration_Date$, statusvip( .type_name$[.@i], .@i +1, 1 );
mes "Hello "+ strcharinfo(0) +" you have an "+ .type_name$[.@i] +" and it will expire in "+ .@expiration_Date$;
}
goto L_player;
OnWhisperGlobal:
if ( getgmlevel() < 99 ) end;
L_main:
mes .npc_Name$;
mes "Welcome, "+ strcharinfo(0) +"!";
mes "What can I do for you today?";
L_player:
next;
set .@s, select( ( getgmlevel() < 99 ? "" : "VIP bronze Menu" ), ( getgmlevel() < 99 ? "" : "VIP silver Menu" ), ( getgmlevel() < 99 ? "" : "VIP gold Menu" ),
( ( countitem( .item_premium_b ) || countitem( .item_premium_s ) || countitem( .item_premium_g ) ) && .up_npc ? "Upgrade my account" : "" ), "Quit" ) -1;
if ( .@s == 4 ) close;
else if( .@s == 3 )
callfunc( "VIP_upgrade", 7, .item_premium );
set .@a$, "[VIP "+ strtoupper( .type_name$[.@s] ) +"]";
next;
mes .npc_Name$;
mes .@a$;
// if( getgmlevel() < 99 ) {
// set .@sub_s, select( "List Accounts", "Cancel" );
// if( .@sub_s == 2 ) close;
// mainmenu( .@sub_s +2, .@s );
// }
next;
set .@sub_s, select( "Add/Extend Account", "Delete Account", "List Accounts", "Back" );
if ( .@sub_s == 4 || mainmenu( .@sub_s, .@s, .@a$ ) ) goto L_main;
// Setting
// -------
OnInit:
set .npc_Name$,"[VIP System v3.0]";
set .bronze_AccLvl, 1; // VIP bronze Account Level
set .silver_AccLvl, 2; // silver
set .gold_AccLvl, 3; // gold
set .bronze_ExpRate, 25; // VIP bronze Exp Boost in % ( 1 = 1% )
set .silver_ExpRate, 50; // silver
set .gold_ExpRate, 100; // gold
set .bronze_ItemRate, 0; // VIP bronze Item Drop Boost in % ( 1 = 1% )
set .silver_ItemRate, 5; // silver
set .gold_ItemRate, 10; // gold
set .item_premium_b, 501; // ID item to upgrade your account to bronze
set .item_premium_s, 501; // ID item to upgrade your account to silver
set .item_premium_g, 501; // ID item to upgrade your account to gold
set .fcp, 0; // fcp for gold vip ? (0 : no) / (1 : yes)
set .up_npc, 0; // player can upgrade to npc if items required 0 : no
setarray .type_name$, "bronze", "silver", "gold" ;
end;
// On login
// --------
OnPCLoginEvent:
query_sql "SELECT `account_type` FROM login WHERE `account_id` = "+ getcharid(3), .@acc_Type$;
while( .@i < 3 && strtolower( .@acc_Type$ ) != .type_name$[.@i] ) set .@i, .@i +1;
if( .@i == 3 ) end;
sc_end sc_expboost;
sc_end sc_itemboost;
set .@expiration_Date$, statusvip( .type_name$[.@i], .@i, 0 );
dispbottom "----------------------------------------------------------------------";
dispbottom "Account type: "+ .@acc_Type$;
dispbottom "Expiration date: "+ .@expiration_Date$;
dispbottom "----------------------------------------------------------------------";
end;
// Check the VIP status ; bonus VIP
// --------------------------------
function statusvip {
query_sql "SELECT `status` FROM `vip_"+ getarg(0) +"` WHERE `account_id` = "+ getcharid(3), .@vip_Status$ ;
query_sql "SELECT DATE_FORMAT(`end_date`, '%Y %m %d') FROM `vip_"+ getarg(0) +"` WHERE `account_id` = "+ getcharid(3), .@expiration_Date$ ;
if( getarg(2) ) return .@expiration_Date$;
if ( gettimestr("%Y %m %d",21) >= .@expiration_Date$ )
expirevip( "vip_"+ getarg(0), getcharid(3) );
else {
set .@time, 3600 * 60 * 1000;
set .@it_Rate, getd( "."+ getarg(0) +"_ItemRate" );
set .@exp_rate, getd( "."+ getarg(0) +"_ExpRate" );
if( .@exp_rate )
sc_start sc_expboost, .@time, .@exp_rate;
if( .@it_Rate )
sc_start sc_itemboost, .@time, .@it_Rate;
if( getarg(1) == 2 && .fcp ) {
sc_start SC_CP_WEAPON, .@time, 5;
sc_start SC_CP_SHIELD, .@time, 5;
sc_start SC_CP_ARMOR, .@time, 5;
sc_start SC_CP_HELM, .@time, 5;
}
}
return .@expiration_Date$;
}
// VIP expire : updates tables
// ---------------------------
function expirevip {
set .@T_Name$, getarg(0);
set .@acc_Id, getarg(1);
query_sql "UPDATE `login` SET `level` = 0, `account_type` = 'NORMAL' WHERE account_id = "+ .@acc_Id;
query_sql "DELETE FROM "+ .@T_Name$ +" WHERE account_id = "+ .@acc_Id;
query_sql "ALTER TABLE "+ .@T_Name$ +" AUTO_INCREMENT = 1";
sc_end SC_CP_WEAPON;
sc_end SC_CP_SHIELD;
sc_end SC_CP_ARMOR;
sc_end SC_CP_HELM;
dispbottom "Your VIP expire.";
end;
}
function mainmenu {
switch( getarg(0) ) {
case 1: addvip( getarg(1), getarg(2) ); break;
case 2: deletevip( getarg(1), getarg(2) ); break;
case 3: showlist( getarg(1) );
}
return 1;
}
function addvip {
set .@s, getarg(0);
set .@a$, getarg(1);
mes .npc_Name$;
mes .@a$;
mes "Type the Account Name";
mes "you wish to add.";
input .@acc_Name$;
next;
mes .npc_Name$;
mes .@a$;
query_sql "SELECT `account_id` FROM login WHERE `userid` = '"+ escape_sql( .@acc_Name$ )+"'", .@acc_Id ;
mes "Identifying account: "+ .@acc_Name$ +".";
sleep2 500;
if ( !.@acc_Id ) {
mes "ERROR: Couldn't find account.";
mes "Verify if you dind't make a typo.";
close;
}
mes .npc_Name$;
mes .@a$;
mes "Type the number of days you";
mes "wish to add to the account's VIP";
mes "status.";
next;
while( input( .@Days, 1, 999 ) != 0 ) {
mes .npc_Name$;
mes .@a$;
mes "Put a number between 1 and 999.";
next;
}
mes .npc_Name$;
mes .@a$;
query_sql "SELECT `account_id` FROM vip_"+ .type_name$[.@s] +" WHERE `account_id` = "+ .@acc_Id, .@vip_accid;
if ( .@vip_accid == .@acc_Id ) {
mes "Account ID: "+ .@vip_accid +".";
sleep2 500;
query_sql "UPDATE vip_"+ .type_name$[.@s] +" SET end_date = DATE_ADD(end_date, INTERVAL "+ .@Days +" DAY), `status` = 'ACTIVE' WHERE account_id = "+.@vip_accid;
query_sql "UPDATE login SET `account_type` = '"+ strtoupper( .type_name$[.@s] ) +"' WHERE account_id = "+ .@vip_accid;
mes "Account "+ .@acc_Id +" added successfuly!";
}
else {
mes "Account ID: "+ .@acc_Id +".";
sleep2 500;
query_sql "INSERT INTO vip_"+ .type_name$[.@s] +" (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+.@acc_Id+",'"+ escape_sql( .@acc_Name$ ) +"','"+gettimestr("%Y-%m-%d",21)+"','"+gettimestr("%Y-%m-%d",21)+"','ACTIVE')";
sleep2 100;
query_sql "UPDATE vip_"+ .type_name$[.@s] +" SET end_date = DATE_ADD(start_date, INTERVAL "+ .@Days +" DAY) WHERE account_id = "+.@acc_Id;
query_sql "UPDATE `login` SET `level` = "+ getd( "."+ .type_name$[.@s] +"_AccLvl" ) +", `account_type` = '"+ strtoupper( .type_name$[.@s] ) +"' WHERE `account_id` = "+.@acc_Id;
mes "Account "+ .@acc_Id +" added successfuly!";
}
close;
}
function deletevip {
set .@s, getarg(0);
set .@a$, getarg(1);
set .@size, query_sql( "SELECT account_name,`account_id` FROM vip_"+ .type_name$[.@s] +" LIMIT 127", .@List$, .@acc_id );
mes .npc_Name$;
mes .@a$;
if ( .@size == 0 )
mes "There are currently no VIP "+ .type_name$[.@s] +" accounts.";
else {
mes "Select the account you wish ";
mes "to remove from VIP system.";
set .@j$, "1. "+ .@List$;
for ( set .@i, 1; .@i < .@size; set .@i, .@i + 1 )
set .@j$, .@j$ +":"+ ( .@i +1 ) +". "+ .@List$[.@i];
set .@j$, .@j$ +":Cancel";
next;
mes .npc_Name$;
mes .@a$;
set .@menu_del, select( .@j$ ) -1;
if ( .@menu_del == .@size ) {
next;
return;
}
mes "Are you sure you want to remove the account ";
mes .@List$[ .@menu_del ] +" ?";
if ( select( "Yes", "No" ) -1 ) {
next;
return;
}
query_sql "UPDATE `login` SET `level` = 0, `account_type` = 'NORMAL' WHERE `account_id` = '"+ .@acc_id +"'";
query_sql "DELETE FROM vip_"+ .type_name$[.@s] +" WHERE account_id = "+ .@acc_id;
query_sql "ALTER TABLE vip_"+ .type_name$[.@s] +" AUTO_INCREMENT = 1";
mes "VIP "+ .type_name$[.@s] +" account successfuly deleted!.";
}
close;
}
function showlist {
set .@s, getarg(0);
mes .npc_Name$;
mes "VIP "+ .type_name$[.@s] +" accounts list:";
set .@size, query_sql( "SELECT account_name FROM vip_"+ .type_name$[.@s] +" LIMIT 127", .@List$ );
if( .@size == 0 ) {
mes "The list is empty.";
close;
}
for ( set .@i, 0; .@i < .@size; set .@i, .@i + 1 )
mes ( .@i +1 )+". "+ .@List$[ .@i ];
close;
}
}
// Upgrade via itemscript
// ----------------------
/*
callfunc( "VIP_upgrade", 7, 12703, 0 );
getarg(2) :
0 = up to bronze
1 = up to silver
2 = up to gold
*/
function script VIP_upgrade {
if( select( "^777777~ Upgrade my account", "~ Not today^000000" ) -1 ) close;
set .@acc_id, getcharid(3) ;
setarray .@type_name$, "bronze", "silver", "gold" ;
set .@bronze_AccLvl, 1; // VIP bronze Account Level
set .@silver_AccLvl, 2; // silver
set .@gold_AccLvl, 3; // gold
query_sql "SELECT `userid`, `account_type` FROM `login` WHERE `account_id` = '"+ .@acc_id +"'", .@user_id$, .@acc_type$;
while( .@i < 3 && strtolower( .@acc_Type$ ) != .@type_name$[.@i] ) set .@i, .@i +1;
if ( .@i == 2 || ( .@i >= getarg(2) && .@i != 3 ) ) {
dispbottom "Your can't upgrade your account.";
close;
}
else if( .@i != 3 ) {
query_sql "DELETE FROM vip_"+ .@type_name$[.@i] +" WHERE account_id = '"+ .@acc_id +"'";
query_sql "ALTER TABLE vip_"+ .@type_name$[.@i] +" AUTO_INCREMENT = 1";
}
query_sql "INSERT INTO vip_"+ .@type_name$[ getarg(2) ] +" (`account_id`,`account_name`,`start_date`,`end_date`,`status`) VALUES ("+ .@acc_id +",'"+ escape_sql( .@user_id$ ) +"','"+gettimestr("%Y-%m-%d",21)+"', ( DATE_ADD('"+ gettimestr("%Y-%m-%d",21) +"', INTERVAL "+ getarg(0) +" DAY) ), 'ACTIVE') ";
query_sql "UPDATE `login` SET `level` = "+ getd( ".@"+ .@type_name$[ getarg(2) ] +"_AccLvl" ) +", `account_type` = '"+ strtoupper( .@type_name$[ getarg(2) ] ) +"' WHERE `account_id` = '"+ .@acc_id +"'";
query_sql "SELECT DATE_FORMAT(`end_date`, '%Y %M %d') FROM vip_"+ .@type_name$[ getarg(2) ] +" WHERE `account_id` = '"+ .@acc_id +"'", .@exp_Date$;
message strcharinfo(0), "Account updated. Expiration : "+ .@exp_Date$;
delitem getarg(1), 1;
sleep2 1000;
message strcharinfo(0), "You must relog.";
sleep2 2000;
if( playerattached() )
atcommand "@kick "+ strcharinfo(0);
close;
}
// 12703,Holy_Egg_2,Holy Egg,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc( "VIP_upgrade", 7, 12703, 0 ); /* 7 days, item ID to delete */ },{},{}
// 12703,Holy_Egg_2,Holy Egg,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc( "VIP_upgrade", 7, 12703, 1 ); /* 7 days, item ID to delete */ },{},{}
// 12703,Holy_Egg_2,Holy Egg,11,0,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ callfunc( "VIP_upgrade", 7, 12703, 2 ); /* 7 days, item ID to delete */ },{},{}