Advertisement
Emistry

[RO] Floating EXP Rate - Zeny

Nov 5th, 2018
491
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.51 KB | None | 0 0
  1. // https://rathena.org/board/topic/106742-floating-rates-after-a-certain-condition/
  2.  
  3. prontera,155,181,5  script  Sample  4_F_KAFRA1,{
  4.    
  5.     mes "Donate zeny boost EXP?";
  6.     mes "Required Donation: "+F_InsertComma($DONATE_EXP_ZENY_AIM)+"z";
  7.     mes " ";
  8.     mes "Current Donation: "+F_InsertComma($DONATE_EXP_ZENY)+"z";
  9.     mes "Current Rate: "+F_InsertComma($DONATE_EXP_RATE)+"X";
  10.     if (select("Continue", "Cancel") == 1) {
  11.         if ($DONATE_EXP_DURATION > .@gettimetick) {
  12.             mes "EXP bonus already started, you cant donate now.";
  13.         }
  14.         else {
  15.             input .@zeny, 0, Zeny;
  16.             if (.@zeny > 0) {
  17.                 Zeny -= .@zeny;
  18.                 $DONATE_EXP_ZENY += .@zeny;
  19.                 mes "You donated "+F_InsertComma(.@zeny)+"z";
  20.                
  21.                 if ($DONATE_EXP_ZENY >= $DONATE_EXP_ZENY_AIM && $DONATE_EXP_ZENY_AIM > 0) {
  22.                     $DONATE_EXP_RATE = rand(.rate_range[0], .rate_range[1]);
  23.                     $DONATE_EXP_DURATION = gettimetick(2) + .duration;
  24.                    
  25.                     callsub(L_rate, ));
  26.                     donpcevent strnpcinfo(3)+"::OnStart";
  27.                 }
  28.             }
  29.         }
  30.     }
  31.     close;
  32.  
  33.     OnInit:
  34.         setarray .zeny_range,
  35.             5000000, // minimum
  36.             1000000, // increasing rate
  37.             2000000000; // max donate amount
  38.        
  39.         .duration = (5 * 60 * 60); // 5 hours
  40.         setarray .rate_range, 6, 10; // 6~10x exp boost
  41.        
  42.         .base_exp_rate = getbattleflag("base_exp_rate");
  43.         .job_exp_rate = getbattleflag("job_exp_rate");
  44.        
  45.         if ($DONATE_EXP_ZENY_AIM < .zeny_range[0])
  46.             $DONATE_EXP_ZENY_AIM = .zeny_range[0];
  47.         if ($DONATE_EXP_ZENY_AIM > .zeny_range[2] && .zeny_range[1] > 0)
  48.             $DONATE_EXP_ZENY_AIM = .zeny_range[2];
  49.         if ($DONATE_EXP_RATE < 1)
  50.             $DONATE_EXP_RATE = 1;
  51.         if ($DONATE_EXP_DURATION > gettimetick(2)) {
  52.             callsub(L_rate, $DONATE_EXP_RATE);
  53.             initnpctimer;
  54.         }
  55.         end;
  56.    
  57.     OnTimer60000:
  58.     OnStart:
  59.         stopnpctimer;
  60.         if ($DONATE_EXP_DURATION > gettimetick(2)) {
  61.             initnpctimer;
  62.         }
  63.         else if ($DONATE_EXP_DURATION && $DONATE_EXP_DURATION < .@gettimetick) {
  64.             $DONATE_EXP_DURATION = 0;
  65.             $DONATE_EXP_RATE = 1;
  66.             $DONATE_EXP_ZENY_AIM += .zeny_range[1];
  67.             if ($DONATE_EXP_ZENY_AIM > .zeny_range[2] && .zeny_range[1] > 0)
  68.                 $DONATE_EXP_ZENY_AIM = .zeny_range[2];
  69.             callsub(L_rate, $DONATE_EXP_RATE);
  70.         }
  71.         end;
  72.    
  73.     L_rate:
  74.         .@base_exp_rate = ( .@rate * .base_exp_rate );
  75.         .@job_exp_rate = ( .@rate * .job_exp_rate );
  76.        
  77.         setbattleflag("base_exp_rate",.@base_exp_rate;
  78.         setbattleflag("job_exp_rate",.@job_exp_rate;
  79.         atcommand "@reloadmobdb";
  80.        
  81.         announce "Current rates are: "+.@base_exp_rate+"x "+.@job_exp_rate+"x ", bc_all, 0xFF6060;
  82.         return;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement