Emistry icon

[RO] Floating EXP Rate - Zeny

Emistry | PRO | 11/05/18 04:34:08 PM UTC | 0 ⭐ | 968 👁️ | Never ⏰ | []
C |

2.51 KB

|

None

|

0 👍

/

0 👎

// 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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎