Help with this VIP Script

Virtue

New member
Messages
259
Points
0
Hi,

I'm at a loss about this script. No Errors on script checker, it's just that once the set VIP time expires sometimes it goes on negative and the VIP time doesn't end.

Any help would be appreciated!

Script below

Code:
function	script	timeleft__	{
	if ( ( .@left = getarg(0) ) <= 0 ) return getarg(0);
	.@day = .@left / 86400;
	.@hour = .@left % 86400 / 3600;
	.@min = .@left % 3600 / 60;
	.@sec = .@left % 60;
	if ( .@day )
		return .@day +" day "+ .@hour +" hour";
	else if ( .@hour )
		return .@hour +" hour "+ .@min +" min";
	else if ( .@min )
		return .@min +" min "+ .@sec +" sec";
	else
		return .@sec +" sec";
}


prontera,150,150,0	script	VIP Administrator	4_F_KAFRA5,{
	set .@npcname$,"^0000FF[ TEst ]^000000";
	if ( getgroupid() > 1 ) {
		mes .@npcname$;
		mes "Hell no, you shouldn't use me !";
		close;
	}
	if ( #viptimeleft ) {
		mes .@npcname$;
		mes "Your time left for being a VIP is "+ callfunc( "timeleft__", #viptimeleft - gettimetick(2) )+".";
		close;
	}
	mes .@npcname$;
	mes "How can I help?";
	next;
	if ( select( "What's a VIP?", "Nothing" ) == 2 ) close;
	mes .@npcname$;
	mes "You'll get the following benefits for being a VIP:";
	mes "Server rates increased while on VIP Status";
	mes "^9ACD32Base & Job Exp - 12x^000000";
	mes "^FF4500Equipment - 6x^000000";
	mes "^FF0000Cards - 0.12%^000000";
	mes "^00BFFFUsable, Healing & Common Drop - 7x^000000";
	mes "^FF0000Death Penalty - 0.5%^000000";
	close;
	
OnPCLoginEvent:
	if ( #viptimeleft >= 0 ) {
		ModExp = 125;
		ModDrop = 125;
		ModDeath = 50;
		dispbottom ("VIP: Your time left for being a VIP is "+ callfunc( "timeleft__", #viptimeleft - gettimetick(2) ) +".",0xFF7256);
		}
	if ( #viptimeleft < gettimetick(2) )
		set #viptimeleft,0;
	else if ( #viptimeleft - gettimetick(2) < 2147483 ) // don't execute addtimer if over integer limit
		addtimer(( #viptimeleft - gettimetick(2))*1000, strnpcinfo(NPC_NAME_UNIQUE)+"::OnTimeUp");
	else if ( #viptimeleft < 0)
	ModExp = 100;
	ModDrop = 100;
	ModDeath = 100;
	end;
	
OnTimeUp:
	announce "[ VIP : Your VIP Subcription has Expired. ]",bc_self,0xffbc90;
	dispbottom ("VIP: Your VIP Subcription has Expired.",0xFF7256);
	#viptimeleft = 0;
	ModExp = 100;
	ModDrop = 100;
	ModDeath = 100;
	end;
}
 
Last edited by a moderator:
Back
Top