PDA

View Full Version : AFK Credits - Yay!


ghanja
04-29-2015, 10:42 PM
If a PC/client is sitting and hasn't moved x,y,z coordinates (some damper to the z coordinate to account for those that would like to go around levitating people), they will earn credits.

Not a fan of this system, but different strokes for different folks and is simplistic enough that perhaps some can learn from it in some small way.


$AFKINCREMENTSNEEDED = 180;


sub EVENT_TIMER {
if ($timer eq "activitycheck$charid") {
my $cxcord = int($client->GetX());
my $cycord = int($client->GetY());
my $czcord = int($client->GetZ());
my $oxcord = plugin::REV($client, "oxcord");
my $oycord = plugin::REV($client, "oycord");
my $ozcord = plugin::REV($client, "ozcord");
my $afkcounter = plugin::REV($client, "afkcounter");

if (($client->IsSitting())
&& ($oxcord ~~ [$cxcord-5..$cxcord+5])
&& ($oycord ~~ [$cycord-5..$cycord+5])
&& ($ozcord ~~ [$czcord-20..$czcord+20])) {
++$afkcounter;
plugin::SEV($client, "afkcounter", $afkcounter);
if ($afkcounter == $AFKINCREMENTSNEEDED) {
$afkcounter = 0;
plugin::SEV($client, "afkcounter", $afkcounter);
$client->AddAlternateCurrencyValue(x, x);
$client->Message (15, "You've earned an AFK Server Loyalty Credit!");
}
} else {
$afkcounter = 0;
plugin::SEV($client, "afkcounter", $afkcounter);
}
plugin::SEV($client, "oxcord", $cxcord);
plugin::SEV($client, "oycord", $cycord);
plugin::SEV($client, "ozcord", $czcord);
}
}

sub EVENT_ENTERZONE {
quest::settimer ("activitycheck$charid",10); ## activity check increment
}

sub EVENT_ZONE {
quest::stoptimer ("activitycheck$charid");
}

sub EVENT_DISCONNECT {
quest::stoptimer ("activitycheck$charid");
}


Put in the player.pl for a specific zone (or that is how its coded).

provocating
04-30-2015, 08:27 AM
I am more tuned to give people some type of credit for writing guides, faqs, fixing issues or even reporting exploits.

I could see where some servers would want something like this so it is a good addition.

Fridgecritter
08-14-2017, 06:56 PM
How would I modify this if I want to use this in the bazaar for traders? Just change the "IsSitting" part? and make it "IsStanding"? Like this?


$AFKINCREMENTSNEEDED = 180;


sub EVENT_TIMER {
if ($timer eq "activitycheck$charid") {
my $cxcord = int($client->GetX());
my $cycord = int($client->GetY());
my $czcord = int($client->GetZ());
my $oxcord = plugin::REV($client, "oxcord");
my $oycord = plugin::REV($client, "oycord");
my $ozcord = plugin::REV($client, "ozcord");
my $afkcounter = plugin::REV($client, "afkcounter");

if (($client->IsStanding())
&& ($oxcord ~~ [$cxcord-5..$cxcord+5])
&& ($oycord ~~ [$cycord-5..$cycord+5])
&& ($ozcord ~~ [$czcord-20..$czcord+20])) {
++$afkcounter;
plugin::SEV($client, "afkcounter", $afkcounter);
if ($afkcounter == $AFKINCREMENTSNEEDED) {
$afkcounter = 0;
plugin::SEV($client, "afkcounter", $afkcounter);
$client->AddAlternateCurrencyValue(x, x);
$client->Message (15, "You've earned an AFK Server Loyalty Credit!");
}
} else {
$afkcounter = 0;
plugin::SEV($client, "afkcounter", $afkcounter);
}
plugin::SEV($client, "oxcord", $cxcord);
plugin::SEV($client, "oycord", $cycord);
plugin::SEV($client, "ozcord", $czcord);
}
}

sub EVENT_ENTERZONE {
quest::settimer ("activitycheck$charid",10); ## activity check increment
}

sub EVENT_ZONE {
quest::stoptimer ("activitycheck$charid");
}

sub EVENT_DISCONNECT {
quest::stoptimer ("activitycheck$charid");
}

Kingly_Krab
08-14-2017, 11:36 PM
There is no IsStanding(), use !$client->IsSitting().

NatedogEZ
08-15-2017, 07:11 AM
You can use appearance i guess?



if ($client->GetAppearance() == 0) {
#we are standing... 0 standing, 1 sitting, 2 ducking, 3 lieing down, 4 looting
}