Jump to content
  • 0

Question

Posted (edited)

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.

5 answers to this question

Recommended Posts

  • 1
Posted (edited)

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
  • 1
Posted

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.

}

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...