Jump to content
  • 0

Hourly Reward Stucked [Bug]


Talon

Question


  • Group:  Members
  • Topic Count:  24
  • Topics Per Day:  0.01
  • Content Count:  78
  • Reputation:   1
  • Joined:  09/01/14
  • Last Seen:  

Hi I'm using this hourly rewards system for my server, but players reported me that their char got stucked when they tried to talk with NPC while the 'minute message shows' , any idea what happened to this code? Help..

//===== Hourly Points Script =========================================
//===== By: ==========================================================
//= nostafu
//===== Current Version: =============================================
//= 1.3
//===== 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 12 hours consecutively
//= or without logging out of the game. If the player is vending
//= the script will then stop.
//====================================================================
-	script	hourlypoints	-1,{
//--Start of the Script
OnPCLoginEvent:
attachnpctimer ""+strcharinfo(0)+"";
initnpctimer;
end;
OnTimer30000:
//Check if Vending (normal or @at)
if(checkvending() >= 1 || checkchatting() == 1) {
dispbottom "The hourly points event stopped because you were vending / chatting. 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 == 5) {
dispbottom "The hourly points event stopped because you were idle for 5 minutes. Please relog if you wish to start again.";
stopnpctimer;
end;
}
end;
OnTimer60000:
set @minute, @minute + 1;
dispbottom "You played "+@minute+" minutes.";
//Check for 1 Minute
if(@minute == 60){
   set @minute,0;
    set .@point_amt, 3; //Points to get every hour (default: 3)
    getitem 7227,.@point_amt;
    dispbottom "You received "+.@point_amt+" TCG by staying ingame for 1 hour";
set @consecutive_hour, @consecutive_hour + 1;
}
//Check for 12 hours consecutive
if(@consecutive_hour == 6) {
    set @consecutive_hour,0;
    set .@cpoint_amt, 15; //Points to get for 6 Consecutive hours (default: 15)
    getitem 7227,.@point_amt;
    dispbottom "You received "+.@point_amt+" TCG in playing for 6 consecutive hours";
}
stopnpctimer;
initnpctimer;
end;
}
//--End of the Script
Link to comment
Share on other sites

4 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  49
  • Topics Per Day:  0.01
  • Content Count:  1530
  • Reputation:   234
  • Joined:  08/03/12
  • Last Seen:  

when every hour right ? i didnt test your script, but from what i can see, maybe u can try this :

dispbottom "You played "+@minute+" minutes.";
close;
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  24
  • Topics Per Day:  0.01
  • Content Count:  78
  • Reputation:   1
  • Joined:  09/01/14
  • Last Seen:  

Okay I'll test it out, hopefully it will be ok after, thanks for your reply  /no1

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  24
  • Topics Per Day:  0.01
  • Content Count:  78
  • Reputation:   1
  • Joined:  09/01/14
  • Last Seen:  

Just tested it, seems like this doesn't work, when I'm talking to npc e.g. Warper, it closed my dialog immediately... Help please... =|

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  22
  • Topics Per Day:  0.00
  • Content Count:  1479
  • Reputation:   172
  • Joined:  12/14/11
  • Last Seen:  

As I observed, this NPC attaches to the player every time (like a wandering, wants-to-know-everything ghost).

IDK if it's the correct way to do it or not. I suggest you use another script.

 

If you're okay with this conditions:

1. Players who go AFK (stand / sit) for even more than 6 hours or more

2. Those players isn't vending nor chatting nor autotrade

3. current point can be check by @checkcash

 

then here's one, made: http://rathena.org/board/topic/98661-hourly-points-system/

 

If you need to check the AFK....


this chunk of code may work:

	while (1) {
		getmapxy .@map$, .@x, .@y, 0;
		if ( .@x == .@afk_x && .@y == .@afk_y ) {
			.@afking4++;
			if ( .@afking == .afk ) {
				dispbottom "You have been AFK for 5 minutes. Hourly points won't be given anymore";
				dispbottom "Please re-login to participate again";
				end;
			}
		} else {
			.@afking = 0;
			.@afkinbio4_map$ = .@map$;
			.@afk_x = .@x;
			.@afk_y = .@y;
		}
		sleep2 .sleeploop;
	}
	end;
OnInit:
	.sleeploop = 1000; // every 1 second
	.afk = 60*5; // loop 60 times of 1 second == 1 minute
	end;
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...