EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Quests::Q&A (https://www.eqemulator.org/forums/forumdisplay.php?f=599)
-   -   Trying to fix Exploit in buff script (https://www.eqemulator.org/forums/showthread.php?t=32796)

Huppy 12-28-2010 11:55 PM

Trying to fix Exploit in buff script
 
This buff bot script works perfect except for one little glitch.
Normally it won't cast the gallantry on any toon lower than 61.
As long as the toon that hails the npc is 61+, it will cast either
single or group buff. BUT, if that same 61+ toon lets a lower
level toon in the group, that lower toon will also get the gallantry.
Is there a way the script can check all the toons in the group,
to see that they are all 61+, before casting the gallantry ?
Even if the npc doesn't cast at all with the lower toon in group.

sub EVENT_SAY {
if(($text=~/hail/i)&&($ulevel<=60)){
quest::say("Sorry $name, your level is too low for my buffs.");
}
elsif(($text=~/hail/i)&&($ulevel=>61)){
my $Group = $client->GetGroup();
if($Group) {
$Group->CastGroupSpell($npc, 18323)
}
else {
my $GetPlayerID = $client->GetID();
quest::selfcast(18248);
}
quest::say("Incoming Gallantry for $name");
}
}

joligario 12-29-2010 12:44 AM

You may be looking for something like this? (Not tested)

Code:

sub EVENT_SAY {
  if (($text=~/hail/i) && ($ulevel<=60)) {
    quest::say("Sorry $name, your level is too low for my buffs.");
  }
  elsif (($text=~/hail/i) && ($ulevel=>61)) {
    my $Group = $client->GetGroup();
    if ($Group) {
      my $Valid = 1;
      for ($count = 0; $count < $Group->GroupCount(); $count++) {
        if ($Group->GetMember($count)-GetLevel() < 61) {
          $Valid = 0;
        }
      }
      if ($Valid == 1) {
        quest::say("Incoming Gallantry for $name's group.");
        $Group->CastGroupSpell($npc, 18323);
      }
      else {
        quest::say("Sorry $name, someone's level in your group is too low for my buffs.");
      }
    }
    else {
      quest::say("Incoming Gallantry for $name");
      quest::selfcast(18248);
    }
  }
}


Huppy 12-29-2010 03:01 AM

Quote:

Originally Posted by joligario (Post 195666)
You may be looking for something like this? (Not tested)

Code:

sub EVENT_SAY {
  if (($text=~/hail/i) && ($ulevel<=60)) {
    quest::say("Sorry $name, your level is too low for my buffs.");
  }
  elsif (($text=~/hail/i) && ($ulevel=>61)) {
    my $Group = $client->GetGroup();
    if ($Group) {
      my $Valid = 1;
      for ($count = 0; $count < $Group->GroupCount(); $count++) {
        if ($Group->GetMember($count)-GetLevel() < 61) {
          $Valid = 0;
        }
      }
      if ($Valid == 1) {
        quest::say("Incoming Gallantry for $name's group.");
        $Group->CastGroupSpell($npc, 18323);
      }
      else {
        quest::say("Sorry $name, someone's level in your group is too low for my buffs.");
      }
    }
    else {
      quest::say("Incoming Gallantry for $name");
      quest::selfcast(18248);
    }
  }
}


Thank you joligario. I was just testing this out. The script will cast a single
buff on a toon 61+ when he's not grouped, and also give the "too low"
message to a lower toon that hails, but it won't cast the group buff, or
give any response, no matter what level the toons are in the group.
If the lower toon in the group hails, it gives the right message, but if the
61 toon hails, the npc won't cast or give any response.
I tried it with group toons, lvl 61 and 62, and the npc would not respond
or cast either.

lerxst2112 12-29-2010 03:48 AM

This line looks wrong to me:

if ($Group->GetMember($count)-GetLevel() < 61) {

Should be:

if ($Group->GetMember($count)->GetLevel() < 61) {

I think.

Huppy 12-29-2010 04:30 AM

Quote:

Originally Posted by lerxst2112 (Post 195670)
This line looks wrong to me:

if ($Group->GetMember($count)-GetLevel() < 61) {

Should be:

if ($Group->GetMember($count)->GetLevel() < 61) {

I think.

Yes lerxst2112 , you were right. I changed it to -> and the whole script
works absolutely perfect :)
Thanx again you guys, this one is awesome.

**EDIT**
Just thought I would add something I noticed, which is not a concern of mine.
But just in case others want to know, I tested this out with a low toon and
a 61+ toon grouped together, but left the low toon in a different zone, just
to see what the buff npc would do when hailed by the 61+ toon.
The npc would not respond to hail or do any casting. But as soon as I disbanded
the npc casted when hailed. I guess this wouldn't be a problem for anyone,
unless someone was innocently grouped with a low toon in another zone ( maybe
a druid that ported someone and forgot to disband)
and did not know why the npc is not casting or responding. (chuckle) :)


All times are GMT -4. The time now is 08:53 AM.

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