viewing paste Hourly Points Script (v1.4.1) | Athena

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
//===== Hourly Points Script =========================================
//===== By: ==========================================================
//= GorthexTiger modified by Nibi
//===== Current Version: =============================================
//= 1.4.1
//===== Compatible With: =============================================
//= Any eAthena Version
//===== Description: =================================================
//= Get Points every successful hours of gameplay, you cannot get
//= the points even if you miss a second or a minute. A player will
//= get a very big bonus if they played 3 hours consecutively
//= or without logging out of the game. If the player is vending
//= the script will then stop.
//===== Additional Comments: =========================================
//= You can modify the script to your liking.
//= The default points is Kafrapoints change it anyway if you like.
//= 1.1 = Check Chatting too
//= 1.2 = 5 Minute Idle Check & @at/@autotrade check.
//= 1.3 = Corrected the current balance line on 12 Hours Consecutive
//= 1.4 = Added command to check remaining time and updated idle check. (Skorm)
//= 1.4.1 = Modified the msgs to display according to .timer. (Skorm)
//====================================================================
-   script  hourlypoints    -1,{
    
OnPointGet:
    //Check for idle.
    while(checkvending() >= 1 || checkchatting() == 1 || checkidle() >= .idle) {
        if( .@mes$ == "" ) {
            dispbottom set( .@mes$, "The hourly points event stopped because you were vending, chatting, or idle!" );
            set @hourly_points_timer, 0;
        }
        sleep2 .delay;
    }
    
    @consecutive_timer++;
    .@time_string$ = Time2Str( @consecutive_timer * ( .timer / 1000 ) );
    dispbottom "You received "+.points+" Kafrapoint(s) by staying ingame for "+.@time_string$+".";
    #CASHPOINTS = #CASHPOINTS + .points;
    dispbottom "Current Balance = "+#CASHPOINTS+" Kafrapoints";
    @consecutive_bonus++;
 
    //Check for consecutive timer.
    if(@consecutive_bonus == .cdelay) {
        @consecutive_bonus = 0;
        #CASHPOINTS = #CASHPOINTS + .cpoints;
        dispbottom "You receive a bonus "+.cpoints+" Kafrapoint(s) by playing for "+.@time_string$+" consecutively!!!";
        dispbottom "Current Balance = "+#CASHPOINTS+" Kafrapoint(s)";
    }
    
OnPCLoginEvent:
    addtimer .timer,"hourlypoints::OnPointGet";
    @hourly_points_timer = gettimetick(2) + ( .timer / 1000 );
    end;
    
OnCmdHour:
    message strcharinfo(0),@hourly_points_timer ? Time2Str( @hourly_points_timer )+" remaining before you get your Hourly Reward(s).":"Something went wrong or you're considered idle at the moment, try relogging!";
    end;
 
OnInit:
    bindatcmd "ctr","hourlypoints::OnCmdHour"; //@ctr to view time till next point.
    .timer   = 1000*60*60; //Timer in milliseconds. ( Default: 1000*60*60 [ = 1 Hour ] )
    .cdelay  = 3;          //Delay before receiving the consecutive bonus. ( Default: 3 [ { ~ 3 Hours } *Using default timer ] )
    .cpoints = 10;         //Points gained for consecutive time online. ( Default: 10 )
    .points  = 1;          //Normal points gained. ( Default: 1 )
    .delay   = 1000;       //Delay for idle re-check check. ( Default: 1000 [ = 1 Second ] )
    .idle    = 60*5;       //Player is idle after not moving for this many seconds. ( Default: 60*5 [ = 5 Minutes ] )
}
Viewed 2071 times, submitted by Skorm.