// https://rathena.org/board/topic/106742-floating-rates-after-a-certain-condition/
prontera,155,181,5 script Sample 4_F_KAFRA1,{
mes "Donate zeny boost EXP?";
mes "Required Donation: "+F_InsertComma($DONATE_EXP_ZENY_AIM)+"z";
mes " ";
mes "Current Donation: "+F_InsertComma($DONATE_EXP_ZENY)+"z";
mes "Current Rate: "+F_InsertComma($DONATE_EXP_RATE)+"X";
if (select("Continue", "Cancel") == 1) {
if ($DONATE_EXP_DURATION > .@gettimetick) {
mes "EXP bonus already started, you cant donate now.";
}
else {
input .@zeny, 0, Zeny;
if (.@zeny > 0) {
Zeny -= .@zeny;
$DONATE_EXP_ZENY += .@zeny;
mes "You donated "+F_InsertComma(.@zeny)+"z";
if ($DONATE_EXP_ZENY >= $DONATE_EXP_ZENY_AIM && $DONATE_EXP_ZENY_AIM > 0) {
$DONATE_EXP_RATE = rand(.rate_range[0], .rate_range[1]);
$DONATE_EXP_DURATION = gettimetick(2) + .duration;
callsub(L_rate, ));
donpcevent strnpcinfo(3)+"::OnStart";
}
}
}
}
close;
OnInit:
setarray .zeny_range,
5000000, // minimum
1000000, // increasing rate
2000000000; // max donate amount
.duration = (5 * 60 * 60); // 5 hours
setarray .rate_range, 6, 10; // 6~10x exp boost
.base_exp_rate = getbattleflag("base_exp_rate");
.job_exp_rate = getbattleflag("job_exp_rate");
if ($DONATE_EXP_ZENY_AIM < .zeny_range[0])
$DONATE_EXP_ZENY_AIM = .zeny_range[0];
if ($DONATE_EXP_ZENY_AIM > .zeny_range[2] && .zeny_range[1] > 0)
$DONATE_EXP_ZENY_AIM = .zeny_range[2];
if ($DONATE_EXP_RATE < 1)
$DONATE_EXP_RATE = 1;
if ($DONATE_EXP_DURATION > gettimetick(2)) {
callsub(L_rate, $DONATE_EXP_RATE);
initnpctimer;
}
end;
OnTimer60000:
OnStart:
stopnpctimer;
if ($DONATE_EXP_DURATION > gettimetick(2)) {
initnpctimer;
}
else if ($DONATE_EXP_DURATION && $DONATE_EXP_DURATION < .@gettimetick) {
$DONATE_EXP_DURATION = 0;
$DONATE_EXP_RATE = 1;
$DONATE_EXP_ZENY_AIM += .zeny_range[1];
if ($DONATE_EXP_ZENY_AIM > .zeny_range[2] && .zeny_range[1] > 0)
$DONATE_EXP_ZENY_AIM = .zeny_range[2];
callsub(L_rate, $DONATE_EXP_RATE);
}
end;
L_rate:
.@base_exp_rate = ( .@rate * .base_exp_rate );
.@job_exp_rate = ( .@rate * .job_exp_rate );
setbattleflag("base_exp_rate",.@base_exp_rate;
setbattleflag("job_exp_rate",.@job_exp_rate;
atcommand "@reloadmobdb";
announce "Current rates are: "+.@base_exp_rate+"x "+.@job_exp_rate+"x ", bc_all, 0xFF6060;
return;
}
Comments
0 B
|👍
/👎