EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Custom (https://www.eqemulator.org/forums/forumdisplay.php?f=671)
-   -   AFK Credits - Yay! (https://www.eqemulator.org/forums/showthread.php?t=39614)

ghanja 04-29-2015 10:42 PM

AFK Credits - Yay!
 
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.

Code:

$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?

Code:

$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?


Code:

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



All times are GMT -4. The time now is 04:43 AM.

Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.