|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Support::Windows Servers Support forum for Windows EQEMu users. |
|
|
|
09-14-2016, 02:06 AM
|
|
Discordant
|
|
Join Date: May 2016
Location: Above Hell
Posts: 400
|
|
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
|
|
|
|
|
|
|
09-14-2016, 10:30 AM
|
Demi-God
|
|
Join Date: Mar 2012
Posts: 1,105
|
|
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
|
|
|
|
09-14-2016, 10:57 AM
|
|
Discordant
|
|
Join Date: May 2016
Location: Above Hell
Posts: 400
|
|
Quote:
Originally Posted by Maze_EQ
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
|
09-14-2016, 10:57 AM
|
|
Discordant
|
|
Join Date: Jan 2007
Posts: 443
|
|
In the future you might wanna drop this in the custom quests section. More likely to be found when looked for thataway.
|
09-14-2016, 12:01 PM
|
|
Discordant
|
|
Join Date: May 2016
Location: Above Hell
Posts: 400
|
|
Quote:
Originally Posted by N0ctrnl
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
|
|
|
|
09-14-2016, 04:19 PM
|
Administrator
|
|
Join Date: May 2013
Location: United States
Posts: 1,594
|
|
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();
}
|
|
|
|
09-14-2016, 04:32 PM
|
Demi-God
|
|
Join Date: Mar 2012
Posts: 1,105
|
|
fu kingly.
__________________
"No, thanks, man. I don't want you fucking up my life, too."
Skype:
Comerian1
|
09-14-2016, 07:44 PM
|
|
Discordant
|
|
Join Date: May 2016
Location: Above Hell
Posts: 400
|
|
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
|
09-18-2016, 10:07 PM
|
Discordant
|
|
Join Date: Jun 2014
Posts: 284
|
|
Where do I add the script
|
09-18-2016, 11:20 PM
|
|
Discordant
|
|
Join Date: May 2016
Location: Above Hell
Posts: 400
|
|
Quote:
Originally Posted by ionhsmith
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
|
09-19-2016, 08:43 PM
|
Discordant
|
|
Join Date: Jun 2014
Posts: 284
|
|
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
|
09-19-2016, 08:54 PM
|
|
Discordant
|
|
Join Date: May 2016
Location: Above Hell
Posts: 400
|
|
Quote:
Originally Posted by ionhsmith
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
|
09-22-2016, 06:08 PM
|
Discordant
|
|
Join Date: Jun 2014
Posts: 284
|
|
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?
|
09-22-2016, 06:11 PM
|
|
Discordant
|
|
Join Date: May 2016
Location: Above Hell
Posts: 400
|
|
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
|
09-22-2016, 06:23 PM
|
Discordant
|
|
Join Date: Jun 2014
Posts: 284
|
|
it does work on mages either...
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 03:01 AM.
|
|
|
|
|
|
|
|
|
|
|
|
|