View Single Post
  #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