// https://rathena.org/board/topic/110719-hourly-vending-timer-stop/#comment-324042
- script hourly_point_main -1,{
OnInit:
.duration = 3600;
.vip_multi = 2;
.npc_name$ = strnpcinfo(3);
.delay = 1000; //Delay for idle re-check check. ( Default: 1000 [ = 1 Second ] )
.idle = 60*1; //Player is idle after not moving for this many seconds. ( Default: 60*5 [ = 5 Minutes ] )
set .2cpoint_amt, 20; //Points gained for consecutive time online.
set .3cpoint_amt, 30; //Points gained for consecutive time online.
set .4cpoint_amt, 40; //Points gained for consecutive time online.
set .5cpoint_amt, 50; //Points gained for consecutive time online.
set .6cpoint_amt, 60; //Points gained for consecutive time online.
set .7cpoint_amt, 70; //Points gained for consecutive time online.
set .8cpoint_amt, 80; //Points gained for consecutive time online.
set .point_amt, 10; //Normal points gained.
bindatcmd "reward", .npc_name$ + "::OnCheck";
end;
OnUpdate:
//Check for idle.
if (@hourly_point_stopped || checkvending() >= 1 || checkchatting() == 1 || checkidle() >= .idle) {
@hourly_point_stopped = 1;
dispbottom "The hourly points event stopped because you were vending, chatting, or idle!";
end;
}
set #HourlyPoints, #HourlyPoints + .point_amt * 1 * ( vip_status(1) ? .vip_multi : 1 );
dispbottom "You received "+.point_amt+" Reward Hourly Points by staying ingame for 1 hour";
dispbottom "Current Balance = "+#HourlyPoints+" Reward Hourly Points";
set @consecutive_hour, @consecutive_hour + 1;
//Check for 2 hours consecutive
if(@consecutive_hour == 2) {
set #HourlyPoints, #HourlyPoints + .2cpoint_amt * 1 * ( vip_status(1) ? .vip_multi : 1 );
dispbottom "You received "+.2cpoint_amt+" Reward Hourly Points due to playing for 2 consecutive hours";
dispbottom "Current Balance = "+#HourlyPoints+" Reward Hourly Points";
}
//Check for 3 hours consecutive
else if(@consecutive_hour == 3) {
set #HourlyPoints, #HourlyPoints + .3cpoint_amt * 1 * ( vip_status(1) ? .vip_multi : 1 );
dispbottom "You received "+.3cpoint_amt+" Reward Hourly Points due to playing for 3 consecutive hours";
dispbottom "Current Balance = "+#HourlyPoints+" Reward Hourly Points";
}
//Check for 4 hours consecutive
else if(@consecutive_hour == 4) {
set #HourlyPoints, #HourlyPoints + .4cpoint_amt * 1 * ( vip_status(1) ? .vip_multi : 1 );
dispbottom "You received "+.4cpoint_amt+" Reward Hourly Points due to playing for 4 consecutive hours";
dispbottom "Current Balance = "+#HourlyPoints+" Reward Hourly Points";
}
//Check for 5 hours consecutive
else if(@consecutive_hour == 5) {
set #HourlyPoints, #HourlyPoints + .5cpoint_amt * 1 * ( vip_status(1) ? .vip_multi : 1 );
dispbottom "You received "+.5cpoint_amt+" Reward Hourly Points due to playing for 5 consecutive hours";
dispbottom "Current Balance = "+#HourlyPoints+" Reward Hourly Points";
}
//Check for 6 hours consecutive
else if(@consecutive_hour == 6) {
set #HourlyPoints, #HourlyPoints + .6cpoint_amt * 1 * ( vip_status(1) ? .vip_multi : 1 );
dispbottom "You received "+.6cpoint_amt+" Reward Hourly Points due to playing for 6 consecutive hours";
dispbottom "Current Balance = "+#HourlyPoints+" Reward Hourly Points";
}
//Check for 7 hours consecutive
else if(@consecutive_hour == 7) {
set #HourlyPoints, #HourlyPoints + .7cpoint_amt * 1 * ( vip_status(1) ? .vip_multi : 1 );
dispbottom "You received "+.7cpoint_amt+" Reward Hourly Points due to playing for 7 consecutive hours";
dispbottom "Current Balance = "+#HourlyPoints+" Reward Hourly Points";
}
//Check for 8 hours consecutive
else if(@consecutive_hour == 8) {
set @consecutive_hour,0;
set #HourlyPoints, #HourlyPoints + .8cpoint_amt * 1 * ( vip_status(1) ? .vip_multi : 1 );
dispbottom "You received "+.8cpoint_amt+" Reward Hourly Points due to playing for 8 consecutive hours";
dispbottom "Current Balance = "+#HourlyPoints+" Reward Hourly Points";
}
@timer = gettimetick(2) + .duration;
addtimer ( .duration * 1000 ), .npc_name$+"::OnUpdate";
end;
OnPCLoginEvent:
atcommand "@refresh "+strcharinfo(0);
@timer = gettimetick(2) + .duration;
addtimer ( .duration * 1000 ), .npc_name$+"::OnUpdate";
dispbottom "Hourly Rewards have been started for this character.";
end;
OnCheck:
.@min = (@timer - gettimetick(2))/60;
.@sec = (@timer - gettimetick(2))%60;
dispbottom "War Server",0x9ae2d7;
dispbottom "Total Hours Online " +@consecutive_hour+ "",0x9ae2d7;
dispbottom "Reward Hourly Points : ^FF0000[ "+#HourlyPoints+" ]^000000",0x9ae2d7;
if ( @hourly_point_stopped ) {
dispbottom "The hourly points event stopped because you were previously vending, chatting, or idle!";
}
else {
dispbottom "[ Hourly Rewards ] Your next reward will be achieved in " +
((.@min)? "[ " + .@min + " ] minute" + ((.@min > 1)?"s":""):"") +
((.@min && .@sec)? " and ":"") +
((.@sec)? "[ " + .@sec + " ] second" + ((.@sec > 1)?"s":""):"") +
"!",0x9ae2d7;
}
end;
}
Comments
0 B
|👍
/👎