Jump to content
  • 0

VIP SYSTEM


dize11

Question


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  93
  • Reputation:   0
  • Joined:  01/30/12
  • Last Seen:  

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 */ },{},{}

 

 

Link to comment
Share on other sites

20 answers to this question

Recommended Posts


  • Group:  Forum Moderator
  • Topic Count:  33
  • Topics Per Day:  0.01
  • Content Count:  1268
  • Reputation:   382
  • Joined:  02/03/12
  • Last Seen:  

Oh thank you very much!! Skorm!! All works now! But the windows of VIP system 3.0 once i upgrade it cannot been closed stock theres no 'mes close' something like that to close it.

 

Another thing one last favour skorm and i leave this! Can the items once npc detected and and upgraded can be deleted!

 

Thank you in advance!!!

 

Switched the functions for the compare command because it's faster and some other things.

 

//eAthena Version 2
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 && !compare(.@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 ) {
		setarray .@rank$, "b", "s", "g";
		set .@menu, (prompt("Bronze:Silver:Gold")-1);
		callfunc "VIP_upgrade", 7, getd(".item_premium_"+.@rank$[.@menu]), .@menu;
	}
	set .@a$, "[VIP "+ .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 v4.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, 502; // ID item to upgrade your account to silver
	set .item_premium_g, 503; // ID item to upgrade your account to gold
	set .fcp, 0;			// fcp for gold vip ? (0 : no) / (1 : yes)
	set .up_npc, 1;				// 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 && !compare(.@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$ ;
	query_sql "SELECT CURDATE() + 0;", .@current_Date$ ;
	if( getarg(2) ) return .@expiration_Date$;
	if ( atoi(.@current_Date$) >= atoi(.@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` = '"+ .type_name$[.@s] +"' WHERE account_id = "+ .@vip_accid;
		mes "Account "+ .@acc_Id +" added successfully!";
	}
	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$ ) +"',CURDATE(),CURDATE(),'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` = '"+ .type_name$[.@s] +"' WHERE `account_id` = "+.@acc_Id;
		mes "Account "+ .@acc_Id +" added successfully!";
	}
	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 successfully 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 && !compare(.@acc_Type$,.@type_name$[.@i]) ) set .@i, .@i +1;
	
	dispbottom ""+.@i+">="+getarg(2);

	if ( .@i == 2 || ( .@i >= getarg(2) && .@i != 3 ) ) {
		dispbottom "Your can't upgrade your account.";
		close;
	}
	
	if(!countitem(getarg(1))) {
		message strcharinfo(0), "You don't have any "+getarg(1)+"(s).";
		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$ ) +"', CURDATE(), ( DATE_ADD(CURDATE(), INTERVAL "+ getarg(0) +" DAY) ), 'ACTIVE') ";
	query_sql "UPDATE `login` SET `level` = "+ getd( ".@"+ .@type_name$[ getarg(2) ] +"_AccLvl" ) +", `account_type` = '"+ .@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;
	message strcharinfo(0), "You must relog.";
	close2;
	sleep2 4000;
	if( playerattached() )
		atcommand "@kick "+ strcharinfo(0);
	end;
}

// 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 */ },{},{}

 

Database bits:

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`;
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  130
  • Topics Per Day:  0.03
  • Content Count:  528
  • Reputation:   18
  • Joined:  09/11/12
  • Last Seen:  

Any Error at the server?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  118
  • Topics Per Day:  0.03
  • Content Count:  1942
  • Reputation:   197
  • Joined:  01/08/12
  • Last Seen:  

the script seems fine. and its working.

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  33
  • Topics Per Day:  0.01
  • Content Count:  1268
  • Reputation:   382
  • Joined:  02/03/12
  • Last Seen:  

You might be using a txt server???? Please post the error that shows up in the terminal when you click or load the npc thanks :)

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  93
  • Reputation:   0
  • Joined:  01/30/12
  • Last Seen:  

Here's the error image

VIP SYSTEM.bmp

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  13
  • Topics Per Day:  0.00
  • Content Count:  55
  • Reputation:   3
  • Joined:  04/02/12
  • Last Seen:  

Are you using SQL to store data?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  93
  • Reputation:   0
  • Joined:  01/30/12
  • Last Seen:  

PHPMYADMIN from SIP

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  33
  • Topics Per Day:  0.01
  • Content Count:  1268
  • Reputation:   382
  • Joined:  02/03/12
  • Last Seen:  

It looks like you're using eAthena... You can consider upgrading to rAthena or try this... I just did a quick skim and added some string functions created by KeyWorld. I haven't had time to test it. Will do when I get home.

 

Edit--
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  93
  • Reputation:   0
  • Joined:  01/30/12
  • Last Seen:  

Thank you 

Skorm

now NPC works well! but im having this trouble about the sql

sql.bmp

Edited by dize11
Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  33
  • Topics Per Day:  0.01
  • Content Count:  1268
  • Reputation:   382
  • Joined:  02/03/12
  • Last Seen:  

You have to run this code in your phpmyadmin...

 

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';

 

And the rest of them as well if you haven't already.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  93
  • Reputation:   0
  • Joined:  01/30/12
  • Last Seen:  

You have to run this code in your phpmyadmin...

 

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';

 

And the rest of them as well if you haven't already.

after clicking the button upgrade my account the window get stock heres the images.

to this...

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  33
  • Topics Per Day:  0.01
  • Content Count:  1268
  • Reputation:   382
  • Joined:  02/03/12
  • Last Seen:  

Alright there were a bunch of gettimestr commands everywhere which is kinda redundant because MySql has it's own time string command lol.

 

Anyway this seems to be working on my eAthena test server. Please make sure you add all the sql databases because it looks like you're still getting errors with that.

 

Edit--
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  93
  • Reputation:   0
  • Joined:  01/30/12
  • Last Seen:  

 Npc stop at upgrade my account value

script:getarg: index <idx=2> out of range <nargs=2> and no default value found
[debug]: source <npc>: VIP system at prontera <150,150>
Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  33
  • Topics Per Day:  0.01
  • Content Count:  1268
  • Reputation:   382
  • Joined:  02/03/12
  • Last Seen:  

 Npc stop at upgrade my account value

script:getarg: index <idx=2> out of range <nargs=2> and no default value found
[debug]: source <npc>: VIP system at prontera <150,150>

 

Oh ic looks like that error existed prior to my investments.

 

Find:

callfunc( "VIP_upgrade", 7, .item_premium );

 

Replace With:

callfunc( "VIP_upgrade", 7, .item_premium, X );

Where "X" is the number of premium you want your player to upgrade to.

 

0 = Bronze

1 = Silver

2 = Gold

 

Also you might want to change .item_premium to the item id you want the player to use. Like POD or something, because it doesn't look like that was ever set.

 

Example:

callfunc( "VIP_upgrade", 7, 501, 2 );

Is gold for the cost of one red potion.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  93
  • Reputation:   0
  • Joined:  01/30/12
  • Last Seen:  

 

 Npc stop at upgrade my account value

script:getarg: index <idx=2> out of range <nargs=2> and no default value found
[debug]: source <npc>: VIP system at prontera <150,150>

 

Oh ic looks like that error existed prior to my investments.

 

Find:

callfunc( "VIP_upgrade", 7, .item_premium );

 

Replace With:

callfunc( "VIP_upgrade", 7, .item_premium, X );

Where "X" is the number of premium you want your player to upgrade to.

 

0 = Bronze

1 = Silver

2 = Gold

 

Also you might want to change .item_premium to the item id you want the player to use. Like POD or something, because it doesn't look like that was ever set.

 

Example:

callfunc( "VIP_upgrade", 7, 501, 2 );

Is gold for the cost of one red potion.

If i put in "x" one number they only able to chose only one not the the 3 types

Link to comment
Share on other sites


  • Group:  Forum Moderator
  • Topic Count:  33
  • Topics Per Day:  0.01
  • Content Count:  1268
  • Reputation:   382
  • Joined:  02/03/12
  • Last Seen:  

If i put in "x" one number they only able to chose only one not the the 3 types

 

Edit--

 

Edit-- Small fix forgot a $

 

This isn't really my script so I mean I'll fix it, but original functions should be added by the creator. I did add a small menu to select which service you want to upgrade to.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  93
  • Reputation:   0
  • Joined:  01/30/12
  • Last Seen:  

Oh thank you very much!! Skorm!! All works now! But the windows of VIP system 3.0 once i upgrade it cannot been closed stock theres no 'mes close' something like that to close it.

 

Another thing one last favour skorm and i leave this! Can the items once npc detected and and upgraded can be deleted!

 

Thank you in advance!!!

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  118
  • Topics Per Day:  0.03
  • Content Count:  1942
  • Reputation:   197
  • Joined:  01/08/12
  • Last Seen:  

you should check if the script use the end. and replace it with close.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  28
  • Topics Per Day:  0.01
  • Content Count:  93
  • Reputation:   0
  • Joined:  01/30/12
  • Last Seen:  

AWSOMEEEEEEEEEEEEEEEEEEEEEEE!!! THANK YO SKORM!!!

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  2
  • Reputation:   0
  • Joined:  06/22/14
  • Last Seen:  

Any help, please...

I'm with this error, when i'm trying upgrade my account

 

 

[Debug]: at log.c:251 - INSERT DELAYED INTO `atcommandlog` (`atcommand_date`, `account_id`, `char_id`, `char_name`, `map`, `command`) VALUES (NOW(), '2000000', '150000', ?, 'prontera', ?)

[Debug]: at log.c:251 - INSERT DELAYED INTO `atcommandlog` (`atcommand_date`, `account_id`, `char_id`, `char_name`, `map`, `command`) VALUES (NOW(), '2000000', '150000', ?, 'prontera', ?)
[Debug]: at log.c:251 - INSERT DELAYED INTO `atcommandlog` (`atcommand_date`, `account_id`, `char_id`, `char_name`, `map`, `command`) VALUES (NOW(), '2000000', '150000', ?, 'prontera', ?)
[Debug]: at script.c:14792 - UPDATE `login` SET `level` = 1, `account_type` = 'bronze' WHERE `account_id` = '2000002'
[Debug]: Source (NPC): VIP system at prontera (150,150)
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...