prontera,164,169,3 script Premium Trader 757,{ if (VIP_expire > gettimetick(2)) { mes "you are a premium member already!"; mes "your premium ends in "+callfunc("Time2Str",VIP_expire); if(getstatus(SC_CASH_RECEIVEITEM) <= 0) { sc_start SC_CASH_RECEIVEITEM,-1,400; sc_start SC_CASH_PLUSEXP,-1,400; } close; } mes "Do you want to pay with PODs or with Zeny?"; next; switch(select("PODs:Zeny")) { case 1: mes "how long you want to be Premium User?"; next; switch(select("1 day:2 day:7 days:none")) { case 1: if(countitem(7179) >= 4) { delitem 7179,4; callfunc "F_VIPstart",86400; mes "Done. enjoy your Premium Services for 1 day."; close; } else { mes "You don't have 4 x "+getitemname(7179); close; } case 2: if(countitem(7179) >= 8) { delitem 7179,8; callfunc "F_VIPstart",172800; mes "Done. enjoy your Premium Services for 2 days."; close; } else { mes "You don't have 8 x "+getitemname(7179); close; } case 3: if(countitem(7179) >= 28) { delitem 7179,28; callfunc "F_VIPstart",604800; mes "Done. Enjoy your Premium Services for 1 week."; close; } else { mes "You don't have 28 x "+getitemname(7179); close; } case 4: mes "Ok then."; close; } case 2: mes "how long you want to be Premium User?"; next; switch(select("1 day:2 day:7 days:none")) { case 1: if(Zeny >= 1000000) { set Zeny,Zeny - 1000000; callfunc "F_VIPstart",86400; mes "Done. enjoy your Premium Services for 1 day."; close; } else { mes "You don't have 1000000 Zeny"; close; } case 2: if(Zeny >= 2000000) { set Zeny,Zeny - 2000000; callfunc "F_VIPstart",172800; mes "Done. enjoy your Premium Services for 2 days."; close; } else { mes "You don't have 2000000 Zeny"; close; } case 3: if(Zeny >= 14000000) { set Zeny,Zeny - 14000000; callfunc "F_VIPstart",604800; mes "Done. Enjoy your Premium Services for 1 week."; close; } else { mes "You don't have 14000000 Zeny"; close; } case 4: mes "Ok then."; close; } } } function script F_VIPstart { set .@ticks,getarg(0); // getarg(0) = ticks (seconds) if (.@ticks <= 0) { debugmes "F_VIPstart - tried a negative time"; end; } // set a variable, VIP_expire, as the Unixtime when this expires set VIP_expire, gettimetick(2) + .@ticks; // add a timer with that tick (in case they stay logged in that long) if (.@ticks < 2147483) { // prevent overflow error addtimer .@ticks *1000, "vip_rental::OnVIPend"; } else { addtimer 2147483000, "vip_rental::OnVIPcheck"; } if(getstatus(SC_CASH_RECEIVEITEM) <= 0) { sc_start SC_CASH_RECEIVEITEM,-1,400; sc_start SC_CASH_PLUSEXP,-1,400; } dispbottom "you are now a premium member!"; return; } - script vip_rental -1,{ OnPCLoginEvent: if (VIP_expire > gettimetick(2)) { // timer in future dispbottom "your premium ends in "+callfunc("Time2Str",VIP_expire); if(getstatus(SC_CASH_RECEIVEITEM) <= 0) { sc_start SC_CASH_RECEIVEITEM,-1,400; sc_start SC_CASH_PLUSEXP,-1,400; } } OnVIPcheck: if (VIP_expire > gettimetick(2)) { if ((VIP_expire - gettimetick(2)) < 2147483) { // prevent overflow error addtimer (VIP_expire - gettimetick(2)) *1000, strnpcinfo(3)+"::OnVIPend"; } else { addtimer 2147483000, strnpcinfo(3)+"::OnVIPcheck"; } } else if (VIP_expire) { // timer already expired doevent strnpcinfo(3)+"::OnVIPend"; } end; OnVIPend: set VIP_expire,0; // clear timer if(getstatus(SC_CASH_RECEIVEITEM) == 1) { sc_end SC_CASH_RECEIVEITEM; sc_end SC_CASH_PLUSEXP; } dispbottom "premium ended"; end; }