Jump to content
  • 0

R>HOURLY POINTS


bigwasanro

Question


  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  10
  • Reputation:   0
  • Joined:  09/24/16
  • Last Seen:  

hi need help to my script because is not working properly. it wont give points when you chatting and moving i want to add timer to see the hourly points is working thanks

 

 

//===== Hourly Points Script =========================================
//===== By: ==========================================================
//= GorthexTiger modified by Nibi
//===== Current Version: =============================================
//= 1.0
//===== 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
//====================================================================
- script hourlypoints -1,{
//--Start of the Script
OnPCLoginEvent:


anounce:
dispbottom "The hourly points system has started please continue to be online to gain points.";
end;


attachnpctimer ""+strcharinfo(0)+"";
initnpctimer;
end;


OnTimer30000:
//Check if Vending (normal or @at)
if(checkvending() >= 1) {
    dispbottom "The hourly points event stopped because you were vending. Please relog if you wish to start again.";
    stopnpctimer;
    end;
}


//Check if Idle
getmapxy( .@map$, .@x, .@y, 0 );
if(@map$ == .@map$ && @x == .@x && @y == .@y) {
    set @afk, @afk + 1;
}
//If move timer resets
else {
    set @afk, 0;
}
    set @map$, .@map$; set @x, .@x; set @y, .@y;
//Idle Check for 5 Minutes
if(@afk == 1600000000) {
    dispbottom "The hourly points event stopped because you were idle for 5 minutes. Please relog if you wish to start again.";
    stopnpctimer;
    end;
}


OnTimer60000:
set @minute, @minute + 1;
//Check for 1 Minute
if(@minute == 60){
    set @minute,0;
    set .@point_amt, 10; //Points to get every hour (default: 10)
    set #REWARDPOINTS, #REWARDPOINTS+ .@point_amt;
    dispbottom "You received "+.@point_amt+" Rewardpoints by staying ingame for 1 hour";
    dispbottom "Current Balance = "+#REWARDPOINTS+" Rewardpoints";
    set @consecutive_hour, @consecutive_hour + 1;
    }
//Check for 12 hours consecutive
    if(@consecutive_hour == 12) {
    set @consecutive_hour,0;
    set .@cpoint_amt, 20; //Points to get for 12 Consecutive hours (default: 50)
    set #REWARDPOINTS, #REWARDPOINTS+ .@cpoint_amt;
    dispbottom "You receive "+.@cpoint_amt+" Rewardpoints in playing for 12 consecutive hours";
    dispbottom "Current Balance = "+#REWARDPOINTS+" Rewardpoints";
}
stopnpctimer;
initnpctimer;


OnInit:
bindatcmd "rewards",strnpcinfo(3)+"::OnCheck";
end;


OnCheck:
dispbottom "You have " +#REWARDPOINTS+ " Reward points.";
end;
}
//--End of the Script
Edited by Akkarin
Placed script in codebox.
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 1

  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  34
  • Reputation:   8
  • Joined:  01/06/12
  • Last Seen:  

I've come up with something that I think would be cooler and can be altered further but I haven't checked it in-game. Please feel free to try the following piece of code -

//===== Hourly Points Script =========================================
//===== By: ==========================================================
//= Smokexyz
//===== Current Version: =============================================
//= 1.0
//===== Compatible With: =============================================
//= Any eAthena Version
//===== Description: =================================================
//= Get Points every specified seconds of gameplay. Conditional checks
//= for AFK / Vending are provided. Permanent total character playtime
//= is also calculated as a by-product.
//
-	script	sxyz_hourly_points	-1,{
// Init the Awesomeness of this NPC.
OnInit:
	.AFKCheckDelay, 300; // (in seconds) 5 minutes AFK Delay
	.RewardTimeDelay, 3600; // (in seconds) 1 hour delay between point giving.
	.RewardPoints, 10; // Points rewarded every .RewardTimeDelay
	.CheckAFK, 0; // Enable/Disable AFK Checks
	.CheckVendChat, 1; // Enable/Disable Vending/Chatting Checks.
	end;

// Attach the timer when the player logs in.
OnPCLoginEvent:
	attachnpctimer ""+strcharinfo(0)+"";
	addtimer 1000,"sxyz_hourly_points::OnProcess";
	end;

OnProcess:
	// Exclude Vendors from playtime/Afk Checks.
	if((checkvending() >= 1 || checkchatting()) && .CheckVendChat) {
		set .@afk, 1;
	} else if (.AFKCheckSeconds <= playtime && .CheckAFK) {
		getmapxy( .@map$, .@x, .@y, 0 );
		if (.@map$ == @map$ && .@x == @x && .@y == @y )
			set .@afk, 1;
	}

	if (!.@afk) {
		.@tick = gettimetick(2);
		// Reward the player if check passes.
		if ((.@tick - @last_active) >=  .RewardTimeDelay) {
			set #REWARDPOINTS, #REWARDPOINTS+ .RewardPoints;
			dispbottom "[Hourly Points] You've gained "+.RewardPoints+" points! (Playtime: "+playtime+"s)";
		}
		getmapxy( @map$, @x, @y, 0 );
		set playtime,playtime++;
		set @last_active, gettimetick(2);
	}
	addtimer 1000,"sxyz_hourly_points::OnProcess";
	end;
}

Edited by Smoke
Link to comment
Share on other sites

  • 1

  • Group:  Members
  • Topic Count:  15
  • Topics Per Day:  0.00
  • Content Count:  520
  • Reputation:   64
  • Joined:  11/19/11
  • Last Seen:  

Try this.

//===== Hourly Points Script =========================================
//===== By: ==========================================================
//= GorthexTiger modified by Nibi
//===== Current Version: =============================================
//= 1.0
//===== 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
//====================================================================
-    script    hourlypoints    -1,{
//--Start of the Script
OnPCLoginEvent:
    dispbottom "The hourly points system has started please continue to be online to gain points.";
    addtimer .timer,"hourlypoints::OnPointGet";
    end;
    
OnPointGet:
    while(checkvending() >= 1 || checkchatting() == 1) {
        sleep2 .delay;
        if(.@mes$=="")
            dispbottom set(.@mes$,"The hourly points event haulted because you were vending or chatting.");
    }
    set #REWARDPOINTS, #REWARDPOINTS + .point_amt;
    dispbottom "You received "+.point_amt+" Kafrapoints by staying ingame for 1 hour";
    dispbottom "Current Balance = "+#REWARDPOINTS+" Kafrapoints";
    set @consecutive_hour, @consecutive_hour + 1;

    //Check for 12 hours consecutive
    if(@consecutive_hour == 12) {
        set @consecutive_hour,0;
        set #REWARDPOINTS, #REWARDPOINTS + .cpoint_amt;
        dispbottom "You receive "+.cpoint_amt+" Kafrapoints in playing for 12 consecutive hours";
        dispbottom "Current Balance = "+#REWARDPOINTS+" Kafrapoints";
    }
    addtimer .timer,"hourlypoints::OnPointGet";
    end;
OnCheck:
    dispbottom "You have " + #REWARDPOINTS + " Reward points.";
    end;

OnInit:
    bindatcmd "rewards",strnpcinfo(3)+"::OnCheck";
    set .timer, 1000*60*60; //Timer in milliseconds.
    set .cpoint_amt, 50; //Points gained for consecutive time online.
    set .point_amt, 10; //Normal points gained.
    set .delay, 1000; //Delay for idle re-check check.

}
Link to comment
Share on other sites

  • 1

  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  34
  • Reputation:   8
  • Joined:  01/06/12
  • Last Seen:  

What are the errors? Download this... hourly_points.txt

Edited by Smoke
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  10
  • Reputation:   0
  • Joined:  09/24/16
  • Last Seen:  

thank you guys it works more powers /thx

Link to comment
Share on other sites

  • -1

  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  10
  • Reputation:   0
  • Joined:  09/24/16
  • Last Seen:  

too many errors sir 


somebody help me for my script i want gain points even afk idle only restricted points to vend and pub and i want to put timer when i use @rewards

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...