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,167,178,1 script Player Promoter 436,{ set .@name$,"^228B22[ Player Promoter ]^000000"; mes .@name$; if ( getgmlevel() >= 99 ) { mes "Hi Admin, do you want to distribute ^00CC00Player Promoter Cards^000000 with your name on it ?"; next; for ( .@i = 1; .@i <= .total_group; .@i++ ) .@menu$ = .@menu$ +"Distribute "+ getitemname( .group_idreq[.@i] ) +":"; .@s = select( .@menu$ ); getitem2 .group_idreq[.@s], 1,1,0,0, 254, 0, getcharid(0) % ( 1 << 16 ), getcharid(0) >> 16; close; } else if ( getgmlevel() > 2 ) { mes "Only Admin can use me"; close; } for ( .@i = 1; .@i <= .total_group; .@i++ ) .@menu$ = .@menu$ +( countitem( .group_idreq[.@i] ) ? "upgrade to "+ .group_name$[.@i] : "" )+":"; if ( getstrlen( #pp_accupgrade$ ) ) { sscanf #pp_accupgrade$, "%d %d", .@id, .@time; mes "Your account is currently a ^00CC00"+ .group_name$[.@id] +"^000000."; if ( .@time == -1 ) mes "You are permanently in this state."; else mes "You still have ^0000FF"+ callfunc( "timeleft__", .@time - gettimetick(2) )+"^000000."; if ( getstrlen( .@menu$ ) == .total_group ) close; } else if ( getstrlen( .@menu$ ) == .total_group ) { mes "Make a donation and you can upgrade your account to become Super Players, Hyper Player or Ultra Player ^^"; close; } mes "Do you want to upgrade your account ?"; next; .@s = .@p = select( .@menu$ ); .@t = ( .time_group[ .@s ] == -1 ? -1 : gettimetick(2) + 86400 * 30 * .time_group[ .@s ] ); delitem .group_idreq[.@s], 1; .@s = 2; #pp_accupgrade$ = .@s +" "+ .@t; atcommand "@adjgroup "+ .@s; mes .@name$; mes "Your account has successfully upgraded to "+ .group_name$[.@p]; sc_start sc_expboost, -1, 300; close; OnPCLoginEvent: if ( getgmlevel() > 1 ) #pp_accupgrade$ = ""; if ( !getstrlen( #pp_accupgrade$ ) ) { sc_end sc_expboost; sc_end sc_itemboost; end; } sscanf #pp_accupgrade$, "%d %d", .@id, .@time; if( .@time == -1 ) .@left = 2147483; else .@left = .@time - gettimetick(2); if ( .@left > 0 ) { atcommand "@adjgroup "+ .@id; if ( .@left >= 2147483 ) { sc_start sc_expboost, -1, 300; // sc_start sc_itemboost, 2147483647, 100; } else { addtimer .@left *1000, strnpcinfo(0) +"::Ondemote"; sc_start sc_expboost, .@left *1000, 300; // sc_start sc_itemboost, .@left *1000, 300; } end; } Ondemote: atcommand "@adjgroup 0"; sc_end sc_expboost; sc_end sc_itemboost; message strcharinfo(0), "Your account has demoted to normal player"; #pp_accupgrade$ = ""; end; OnInit: // setarray .group_, , , ; ... must follow the sequence in 1,2,3,4,5 ... setarray .group_idreq[1], 31001, 31002, 31003; setarray .group_name$[1], "Super Player", "Hyper Player", "Ultra Player"; setarray .time_group[1], 1, 6, -1;// time in month - permanent = -1 .total_group = 3; end; }