Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Windows Servers

Support::Windows Servers Support forum for Windows EQEMu users.

Reply
 
Thread Tools Display Modes
  #1  
Old 09-14-2016, 02:06 AM
DanCanDo's Avatar
DanCanDo
Discordant
 
Join Date: May 2016
Location: Above Hell
Posts: 400
Default Creating a Buff Bot

This is a little simple instruction to create a buff bot for those wanting to do so. It includes a quest script for the NPC you use, which is what I am using now on my own server.

You can create an NPC ingame easily with a GM toon. Just stand in the spot where you want him and type #spawn npcname (or whatever you name it).
Then target the NPC and type #npcspawn create. After that I type #repop Then, target the NPC again and type #npcedit level 65 (or higher) I use 70 myself.
The reason for this, is because if a level 1 npc buffs you it will only be a 3 minute buff. At level 65-70, (for example), Temp will be full duration.(1 hr 40 min)
#npcedit is a great GM tool ingame. I use it all the time, developing zones. I get to see instantly what I have done (chuckle)
Just remember to #repop after you're done for changes to take effect.
If you want to move your buffbot, just target it, go stand where you want it and type #spawnfix (then do a #repop for changes)

The buff script (below), contains my own preferences for buffs and dialog.
It checks for levels and whether you're grouped or not, then will cast the appropriate spells for single shot or group cast. (Excluding clarity, it's only single).
In this script, the "[SPEED]" option will dish out SoW for single or Spirit of Bih'Li if you're grouped.

This is the buffing script I use on my buff bot.
Code:
sub EVENT_SPAWN {
   $x = $npc->GetX();
   $y = $npc->GetY();
   quest::set_proximity($x - 500, $x + 500, $y - 500, $y + 500);
}

sub EVENT_SAY {
  if (($text=~/hail/i) && ($ulevel<46)) {
    quest::say("Hello $name, If you or your group need [Temp] or [Speed] , please gather close. I can also give you [Clarity] to help you on your journeys as well. When you reach 46 I can give you KEI");
  }
  if (($text=~/hail/i) && ($ulevel>46)) {
    quest::say("Hello $name, If you or your group need [Virtue] or [KEI] or [Speed] , please gather close.");
  }
  if (($text=~/hail/i) && ($ulevel==46)) {
    quest::say("Hello $name, If you or your group need [Temp] or [KEI] or [Speed] , please gather close. Let me know when you reach 47.");
  }
  elsif (($text=~/temp/i) && ($ulevel<47)) {
    my $Group = $client->GetGroup();
    if ($Group) {
      my $Valid = 1;
      for ($count = 0; $count < $Group->GroupCount(); $count++) {
        if ($Group->GetMember($count)->GetLevel() < 1) {
          $Valid = 0;
         }
      }
      if ($Valid == 1) {
        quest::say("Incoming Group Temp for $name.");
        $Group->CastGroupSpell($npc, 4053);
      }
      else {
        quest::say("Sorry $name. Someone is not at the appropriate level for that.");
      }
    }
    else {
      quest::say("Incoming Temp for $name");
	  my $GetPlayerID = $client->GetID();
	  $npc->CastSpell(3692, $GetPlayerID );
    }
  }
  elsif (($text=~/virtue/i) && ($ulevel>46)) {
    my $Group = $client->GetGroup();
    if ($Group) {
      my $Valid = 1;
      for ($count = 0; $count < $Group->GroupCount(); $count++) {
        if ($Group->GetMember($count)->GetLevel() > 75) {
          $Valid = 0;
         }
      }
      if ($Valid == 1) {
        quest::say("Incoming Group Virtue for $name.");
        $Group->CastGroupSpell($npc, 3479);
      }
      else {
        quest::say("Sorry $name. Someone not at the appropriate level for that.");
      }
    }
    else {
      quest::say("Incoming Virtue for $name");
	  my $GetPlayerID = $client->GetID();
	  $npc->CastSpell(3467, $GetPlayerID );
    }
  }
  elsif (($text=~/clarity/i) && ($ulevel<76)) {
    quest::say("Incoming Clarity for $name");
	  my $GetPlayerID = $client->GetID();
	  $npc->CastSpell(174, $GetPlayerID );
  }
  elsif (($text=~/kei/i) && ($ulevel>45)) {
    quest::say("Incoming KEI for $name");
	  my $GetPlayerID = $client->GetID();
	  quest::selfcast(2570);
  }
  elsif (($text=~/speed/i) && ($ulevel<76)) {
    my $Group = $client->GetGroup();
    if ($Group) {
      my $Valid = 1;
      for ($count = 0; $count < $Group->GroupCount(); $count++) {
        if ($Group->GetMember($count)->GetLevel() > 75) {
          $Valid = 0;
         }
      }
      if ($Valid == 1) {
        quest::say("Incoming Spirit of Bih'Li for $name.");
        $Group->CastGroupSpell($npc, 2524);
      }
      else {
        quest::say("Sorry $name. You are not at the appropriate level for that.");
      }
    }
    else {
      quest::say("Incoming SoW for $name");
	  my $GetPlayerID = $client->GetID();
	  $npc->CastSpell(278, $GetPlayerID );
    }
  }
}
__________________
Project Insect Completed
Reply With Quote
  #2  
Old 09-14-2016, 10:30 AM
Maze_EQ
Demi-God
 
Join Date: Mar 2012
Posts: 1,106
Default

Code:
$maxlevelbuffs = 70;
%buffshash = (
    1 => 
	# Warrior
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    2 => 
	# Cleric
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    3 => 
	# Paladin
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    4 => 
	# Ranger
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    5 => 
	# Shadow Knight
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    6 => 
	# Druid
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    7 => 
	# Monk
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    8 => 
	# Bard
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    9 => 
	# Rogue
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    10 => 
	# Shaman
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    11 => 
	# Necromancer
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    12 => 
	# Wizard
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},	
    13 => 
	# Magician
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    14 => 
	# Enchanter
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    15 => 
	# Beastlord
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	},
    16 => 
	# Berserker
	{
		level10generic		=>	[276,278,219,368,146,148,279,129],
		level10costgeneric	=>	0,
		level10advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level10costadvanced	=>	100,
		level20generic		=>	[276,278,219,368,146,148,279,129],
		level20costgeneric	=>	0,
		level20advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level20costadvanced	=>	100,
		level30generic		=>	[276,278,219,368,146,148,279,129],
		level30costgeneric	=>	0,
		level30advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level30costadvanced	=>	100,
		level40generic		=>	[276,278,219,368,146,148,279,129],
		level40costgeneric	=>	0,
		level40advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level40costadvanced	=>	100,
		level50generic		=>	[276,278,219,368,146,148,279,129],
		level50costgeneric	=>	0,
		level50advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level50costadvanced	=>	100,
		level60generic		=>	[276,278,219,368,146,148,279,129],
		level60costgeneric	=>	0,
		level60advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level60costadvanced	=>	100,
		level70generic		=>	[276,278,219,368,146,148,279,129],
		level70costgeneric	=>	0,
		level70advanced		=>	[3692,2505,423,356,172,64,145,1693,15,60,61,46,2524],
		level70costadvanced	=>	100,
	}
);

############################################################################################
###############################  EDIT SHIT ABOVE ONLY ######################################
############################################################################################


sub EVENT_SAY {
	#### HAIL ####
	my $groupbuffmaxcost = 0;
	if ($text =~/Hail/i) { 
		plugin::Whisper("Greetings $name. I have been sent to aid you on your journey! Would you like: ");
		plugin::Whisper("Some [".quest::saylink("lesser buffs",1)."] for ".$buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"}."pp");
		plugin::Whisper("Better [".quest::saylink("greater blessings",1)."] for ".$buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"}."pp");
		if ($client->IsGrouped()) {
			$buffgroup = $entity_list->GetGroupByClient($client);
			for ($count = 0; $count < $buffgroup->GroupCount(); $count++) {
				my $groupmember = $buffgroup->GetMember($count);
				if ($groupmember->GetZoneID() == $zoneid) {
					$groupbuffmaxcost += ($buffshash{$groupmember->GetClass()}->{"level".round_up($groupmember->GetLevel())."costadvanced"});
				}
			}
			plugin::Whisper("Best [".quest::saylink("group blessings",1)."] for ".$groupbuffmaxcost."pp");
		}
		plugin::Whisper("To [".quest::saylink ("cure", 1)."] you and/or your pet for free.");
		plugin::Whisper("A [".quest::saylink ("bind", 1)."] to this location at no cost.");
	}
	#### LESSER BUFFS ####
	elsif ($text=~/lesser/i) {
		if ($client->GetCarriedMoney() >= (($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"}) * 1000)) {
			my @buffstocast = @{$buffshash{$client->GetClass()}->{"level".round_up($ulevel)."generic"}};
			foreach my $buff (@buffstocast) {
				if ($client->GetPetID()) {
					my $pcpet = $entity_list->GetMobByID($client->GetPetID());
					$client->SpellFinished ($buff, $pcpet);
				}
				quest::selfcast ($buff);
			}
			$client->TakeMoneyFromPP((($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"}) * 1000), 1) unless ($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"}) == 0;
		}
		else {
			plugin::Whisper ("I charge ".($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costgeneric"})."pp for lesser buffs, you don't appear to have enough on you.");
		}
	}
	#### ADVANCED BUFFS ####
	elsif ($text =~/greater/i) {
		if ($client->GetCarriedMoney() >= (($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"}) * 1000)) {
			my @buffstocast = @{$buffshash{$client->GetClass()}->{"level".round_up($ulevel)."advanced"}};
			foreach my $buff (@buffstocast) {
				if ($client->GetPetID()) {
					my $pcpet = $entity_list->GetMobByID($client->GetPetID());
					$client->SpellFinished ($buff, $pcpet);
				}
				quest::selfcast ($buff);
			}
			$client->TakeMoneyFromPP((($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"}) * 1000), 1) unless ($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"}) == 0;
		}
		else {
			plugin::Whisper ("I charge ".($buffshash{$client->GetClass()}->{"level".round_up($ulevel)."costadvanced"})."pp for advanced blessings, you don't appear to have enough on you.");
		}
	}
	#### GROUP BUFFS ####
	elsif ($text =~ /group/i && $client->IsGrouped()) {
		if ($client->GetCarriedMoney() >= (($buffshash{$client->GetClass()}->{"level".$maxlevelbuffs."costadvanced"}) * 1000 * $buffgroup->GroupCount())) {
			for ($count = 0; $count < $buffgroup->GroupCount(); $count++) {
				my $groupmember = $buffgroup->GetMember($count);
				if ($groupmember->GetZoneID() == $zoneid) {
					$client->TakeMoneyFromPP((($buffshash{$groupmember->GetClass()}->{"level".round_up($groupmember->GetLevel())."costadvanced"}) * 1000), 1) unless ($buffshash{$groupmember->GetClass()}->{"level".round_up($groupmember->GetLevel())."costadvanced"}) == 0;
					my @buffstocast = @{$buffshash{$groupmember->GetClass()}->{"level".round_up($groupmember->GetLevel())."advanced"}};
					foreach my $buff (@buffstocast) {
						if ($groupmember->GetPetID()) {
							my $groupmemberpet = $entity_list->GetMobByID($groupmember->GetPetID());
							$groupmember->SpellFinished ($buff, $groupmemberpet);
						}
						$groupmember->SpellFinished ($buff, $groupmember);
					}
				$groupmember->SendMarqueeMessage(15, 510, 1, 1, 3000, "You've been buffed compliments of ".$client->GetCleanName()."!");
				}			
			}
		}
		else {
			plugin::Whisper("I charge a maximum of ".(($buffshash{$client->GetClass()}->{"level".$maxlevelbuffs."costadvanced"}) * $buffgroup->GroupCount())."pp to cast buffs on your entire group.  You don't appear to have enough!");
		}	
	}
	#### CURE ####
	elsif ($text=~/cure/i) { 
		if ($client->GetPetID()) {
			my $pppet = $entity_list->GetMobByID($client->GetPetID());
			$client->SpellFinished (6594, $pppet);
		}
		$client->SpellFinished(6594); 
	}
	#### BIND ####
	elsif ($text=~/bind/i) {
		quest::selfcast(35);
	}
}

sub round_up {
	my $n = shift;
	my $scale = 10**int(log($n)/log(10));
	$n = 9 if $scale == 1;
	if ($n > $scale) {
		$n = int($n/$scale+1)*$scale;
	}
	$n;
Because buffs by class is important.

Let's make elf sims great again!
__________________
"No, thanks, man. I don't want you fucking up my life, too."

Skype:
Comerian1
Reply With Quote
  #3  
Old 09-14-2016, 10:57 AM
DanCanDo's Avatar
DanCanDo
Discordant
 
Join Date: May 2016
Location: Above Hell
Posts: 400
Default

Quote:
Originally Posted by Maze_EQ View Post

Because buffs by class is important.

Let's make elf sims great again!
Yes, buffs by class is important, but you get what you pay for.

Let's make free buffs great again! :P
__________________
Project Insect Completed
Reply With Quote
  #4  
Old 09-14-2016, 10:57 AM
N0ctrnl's Avatar
N0ctrnl
Discordant
 
Join Date: Jan 2007
Posts: 443
Default

In the future you might wanna drop this in the custom quests section. More likely to be found when looked for thataway.
__________________
Ender - Lead GM/Developer
Vegarlson Asylum Server - http://www.vegarlson-server.org/
Reply With Quote
  #5  
Old 09-14-2016, 12:01 PM
DanCanDo's Avatar
DanCanDo
Discordant
 
Join Date: May 2016
Location: Above Hell
Posts: 400
Default

Quote:
Originally Posted by N0ctrnl View Post
In the future you might wanna drop this in the custom quests section. More likely to be found when looked for thataway.
I actually thought about that, but I figured since the post was more directed at
the whole creation of a buff bot, it would be better off here, otherwise, if it was
just the script, yes, definately could of been put in a quest forum.
__________________
Project Insect Completed
Reply With Quote
  #6  
Old 09-14-2016, 04:19 PM
Kingly_Krab
Administrator
 
Join Date: May 2013
Location: United States
Posts: 1,589
Default

plugin:
Code:
sub BuffsHash {
    my %hash = (1 => [1, 10, [219, 279, 269, 266, 40, 39, 697, 278, 46, 129, 13], 0],
    2 => [11, 20, [89, 283, 148, 2512, 147, 170, 174, 278, 46, 432, 13], 5],
    3 => [21, 30, [244, 149, 148, 349, 151, 10, 1693, 4054, 356, 13], 10],
    4 => [31, 40, [312, 161, 160, 152, 153, 171, 1694, 169, 1727, 13], 25],
    5 => [41, 50, [4053, 158, 154, 157, 159, 172, 1695, 2517, 1560, 13], 50],
    6 => [51, 60, [1447, 1580, 1579, 1596, 1581, 1729, 2570, 2517, 1561, 13], 125],
    7 => [61, 65, [3467, 3397, 4883, 3234, 1710, 3350, 2519, 2517, 3448, 13], 250],
    8 => [66, 70, [27032, 14284, 3472, 3479, 5415, 5355, 5352, 3178, 5513, 3444, 3185, 27032, 25230, 26317, 25443, 25470, 13, 432], 500]);
    return %hash;
}

sub ListBuffPrices {
    my %h = plugin::BuffsHash();
    my @a;
    foreach my $key (sort {$a <=> $b} keys %h) {
        push @a, "$h{$key}[0] to $h{$key}[1]: $h{$key}[3] Platinum";
    }
    quest::popup("Buff Prices", join("<br>", @a));
}

sub GetBuffCost {
    my $ulevel = plugin::val('ulevel');
    my %h = plugin::BuffsHash();
    foreach my $key (sort {$a <=> $b} keys %h) {
        if ($ulevel >= $h{$key}[0] && $ulevel <= $h{$key}[1]) {
            return $h{$key}[3];
        }
    }
}

sub HandleBuffBot {
    my $ulevel = plugin::val('ulevel');
    my $npc = plugin::val('npc');
    my $client = plugin::val('client');
    my %buffsHash = plugin::BuffsHash();
    if (!$client->GetGroup()) {
        foreach my $k (keys %buffsHash) {
            if ($ulevel >= $buffsHash{$k}[0] && $ulevel <= $buffsHash{$k}[1]) {
                if ($client->TakeMoneyFromPP($buffsHash{$k}[3] * 1000, 1)) {
                    quest::selfcast($_) for @{$buffsHash{$k}[2]};
                } else {
                    plugin::Whisper("You cannot afford buffs, they cost $buffsHash{$k}[3] Platinum for your level!");
                    return;
                }
            }
        }
    } else {
        foreach my $k (keys %buffsHash) {
            if ($ulevel >= $buffsHash{$k}[0] && $ulevel <= $buffsHash{$k}[1]) {
                if ($client->TakeMoneyFromPP($buffsHash{$k}[3] * 1000, 1)) {
                    for ($i = 0; $i < 6; $i++) {
                        if ($client->GetGroup()->GetMember($i) && $client->GetGroup()->GetMember($i)->IsClient()) {
                            $client->GetGroup()->GetMember($i)->SpellFinished($_, $client, 0) for @{$buffsHash{$k}[2]};
                        }
                    }
                } else {
                    plugin::Whisper("You cannot afford buffs, they cost $buffsHash{$k}[3] Platinum for your level!");
                    return;
                }
            }
        }
    }
    plugin::Whisper("Enjoy your buffs!");
}
NPC:
Code:
sub EVENT_SAY {    
    if ($text=~/Hail/i) {
        plugin::Whisper("Hello $name, would you like some " . quest::saylink("buffs", 1) . "? Keep in mind, the " . quest::saylink("price", 1) . " of these buffs increases as you level.");
    } elsif ($text=~/Buffs/i) {
        quest::popup("Confirmation Window", "Are you sure you would like to purchase buffs?<br><font color ='#00FFFF'>Level $ulevel buffs cost " . plugin::GetBuffCost() . " Platinum.</font>", 998, 1);
    } elsif ($text=~/Price/i) {
        plugin::ListBuffPrices();
    }
}

sub EVENT_POPUPRESPONSE {
    plugin::HandleBuffBot();
}
Reply With Quote
  #7  
Old 09-14-2016, 04:32 PM
Maze_EQ
Demi-God
 
Join Date: Mar 2012
Posts: 1,106
Default

fu kingly.
__________________
"No, thanks, man. I don't want you fucking up my life, too."

Skype:
Comerian1
Reply With Quote
  #8  
Old 09-14-2016, 07:44 PM
DanCanDo's Avatar
DanCanDo
Discordant
 
Join Date: May 2016
Location: Above Hell
Posts: 400
Default

I just tried that out, it's a nice little "plat for buffs" script. Not once on EQ Live did I ever
find 14 buffs, no matter how much coin I had (chuckle). Looks like Maze and Kingly want to
spoil players (grin)
__________________
Project Insect Completed
Reply With Quote
  #9  
Old 09-18-2016, 10:07 PM
ionhsmith
Discordant
 
Join Date: Jun 2014
Posts: 284
Default

Where do I add the script
Reply With Quote
  #10  
Old 09-18-2016, 11:20 PM
DanCanDo's Avatar
DanCanDo
Discordant
 
Join Date: May 2016
Location: Above Hell
Posts: 400
Default

Quote:
Originally Posted by ionhsmith View Post
Where do I add the script
Put it in to a text-style file (I use notepad++), and save it (as a .pl file) with
the same name as you gave the NPC buff bot in the quests/(zonename) folder
where you put the NPC. For example John_Doe_Buffbot.pl
If that John_Doe NPC is in poknowledge, then save it in quests/poknowledge
folder.
POST EDIT : Sorry forgot to add a reminder. If you make any quest file changes
while your server is running, from your GM client you can type #reloadquest
There's shorter forms of that but I'm an energetic guy with a keyboard
__________________
Project Insect Completed
Reply With Quote
  #11  
Old 09-19-2016, 08:43 PM
ionhsmith
Discordant
 
Join Date: Jun 2014
Posts: 284
Default

sweet I got that too work. so how do I add what kingly and maze added so it will charge for buffs instead of it being free
Reply With Quote
  #12  
Old 09-19-2016, 08:54 PM
DanCanDo's Avatar
DanCanDo
Discordant
 
Join Date: May 2016
Location: Above Hell
Posts: 400
Default

Quote:
Originally Posted by ionhsmith View Post
sweet I got that too work. so how do I add what kingly and maze added so it will charge for buffs instead of it being free
Using Kingly's for example, there is two seperate blocks of code there.
The one called "plugin", put that script into a file and save it as whisper.pl but
put that one in the quests/plugins folder.
The other part, put on NPC script, like I described with mine.
__________________
Project Insect Completed
Reply With Quote
  #13  
Old 09-22-2016, 06:08 PM
ionhsmith
Discordant
 
Join Date: Jun 2014
Posts: 284
Default

Dan, thanks for the info. I did what you said with Kingly's ... now I have a bot in guild lobby that whispers and ask if I want buffs and says keep in mind the price goes up as I lvl. But he does not cast buffs.... do I have to use this with yours or something?
Reply With Quote
  #14  
Old 09-22-2016, 06:11 PM
DanCanDo's Avatar
DanCanDo
Discordant
 
Join Date: May 2016
Location: Above Hell
Posts: 400
Default

No, you do not need mine. I am not sure why it's not casting for you, I tried that script out
myself and it worked fine.
__________________
Project Insect Completed
Reply With Quote
  #15  
Old 09-22-2016, 06:23 PM
ionhsmith
Discordant
 
Join Date: Jun 2014
Posts: 284
Default

it does work on mages either...
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 02:40 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3