View Single Post
  #5  
Old 04-22-2007, 09:43 AM
Angelox
AX Classic Developer
 
Join Date: May 2006
Location: filler
Posts: 2,049
Default

Here's a helper Bot I started, but have since run out to finish; It actually follows you around and heals, buffs you at your request. I had it working in Gulf of Gunthark, Infact you can test it on the Rathe server;
First, you talk to Cadale Brohat at the vendors in Gunthak;
Code:
#zone: gunthak NPC: Cadale_Brohat (224209)
#Angelox

sub EVENT_SAY { 
if ($text=~/Hail/i){
  quest::emote("smiles widely at you. 'Welcome. You are brave to venture to Broken Skull Rock. Don't mind the others. Everyone is a bit touchy around here. If you are interested in dyes, feel free to peruse what I have to offer. Playing with them has given me hours of entertainment! Just be careful on this rock, and watch your back. Oh, before I forget, I'm looking for someone to help me with some [tasks] that I need to get done. All my time with the dyes has kept me from some of the more important things I need to take care of.'");
  quest::emote("Gets closer and whispers,'Or perhaps you might be interested in hiring some [help]?");
 }
elsif($text=~/help/i){
  quest::emote("chuckles, 'I have some mercenary friends interested in making some plat, they've asked me to handle their [pay]");
}
elsif(($text=~/pay/i)&&($class eq 'Warrior')){
  quest::emote("Whispers, 'Not so loud! I'm moonlighting here -  50 plat will get you help tell you leave this world'");
}
elsif(($text=~/pay/i)&&($class eq 'Paladin')){
  quest::emote("Whispers, 'Not so loud! I'm moonlighting here -  50 plat will get you help tell you leave this world'");
}
elsif(($text=~/pay/i)&&($class eq 'Shadowknight')){
  quest::emote("Whispers, 'Not so loud! I'm moonlighting here -  50 plat will get you help tell you leave this world'");
}
elsif(($text=~/pay/i)&&($class eq 'Ranger')){
  quest::emote("Whispers, 'Not so loud! I'm moonlighting here -  50 plat will get you help tell you leave this world'");
}
elsif(($text=~/pay/i)&&($class eq 'Monk')){
  quest::emote("Whispers, 'Not so loud! I'm moonlighting here -  50 plat will get you help tell you leave this world'");
}
elsif(($text=~/pay/i)&&($class eq 'Bard')){
  quest::emote("Whispers, 'Not so loud! I'm moonlighting here -  50 plat will get you help tell you leave this world'");
}
elsif(($text=~/pay/i)&&($class eq 'Rogue')){
  quest::emote("Whispers, 'Not so loud! I'm moonlighting here -  50 plat will get you help tell you leave this world'");
}
elsif(($text=~/pay/i)&&($class eq 'Berserker')){
  quest::emote("Whispers, 'Not so loud! I'm moonlighting here -  50 plat will get you help tell you leave this world'");
}
elsif($text=~/pay/i){
  quest::says("Sorry, this offer is only for melee-types");
 }
}

sub EVENT_ITEM{
  if ($platinum<=49){
    quest::say("Thank you for your donation $name, it wasn't enough though ...");
}
  elsif (($platinum>=50)&&($sandee==0)){
    quest::emote("summons a mercenary to your side");
    quest::spawn2(224236,1,0,-242.0,1521.1,4.1,108.4);
    quest::say("Here she is, be careful not to wander too far away from her, else she comes back to me");
    quest::delglobal("sandy");
    quest::setglobal("sandy",2,3,"F");
    $sandy=undef;
    $sandee=1;
    quest::delglobal("$name");
    quest::setglobal("$name",3,3,"F");
}
   elsif ($sandy==2){
    quest::say("Sorry, all mercenarys are in use.");
}
   elsif (${$name}==3){
    quest::say("You can only have one at a time.");
}
  elsif (($platinum>=50)&&($sandy==3)){
    quest::emote("summons a mercenary to your side");
    quest::spawn2(224236,1,0,-242.0,1521.1,4.1,108.4);
    quest::say("Here she is, be careful not to wander too far away from her, else she comes back to me");
    quest::delglobal("sandy");
    quest::setglobal("sandy",2,3,"F");
    $sandy=undef;
    quest::delglobal("$name");
    quest::setglobal("$name",3,3,"F");
}else{
    quest::say("Oops! I missed a possibilty!");
 }
}
Then , if you payed the right amount and are the proper class, Brohat will pop you some help - Merc Sandy ( A cool looking female dark elf);
Code:
# Angelox's EQ Bots
#Gunthak healer

sub EVENT_SAY { 
 if($class eq 'Cleric'){quest::say("Sorry, I can't help a cleric");
 }
 elsif($class eq 'Shaman'){
 quest::say("Sorry, I can't help a Shaman");
 }
 elsif($class eq 'Necromancer'){
 quest::say("Sorry, I can't help a Necro");
 }
 elsif($class eq 'Wizard'){
 quest::say("Sorry, I can't help a Wizard");
 }
 elsif($class eq 'Magician'){
 quest::say("Sorry, I can't help a Magician");
 }
 elsif($class eq 'Enchanter'){
 quest::say("Sorry, I can't help a Enchanter");
 }
 elsif($class eq 'Beastlord'){
 quest::say("Sorry, I can't help a Beastlord");
 }
 elsif($text=~/follow/i){
quest::clear_proximity();
quest::say("Following");
quest::follow($userid);
 }
 elsif($text=~/quit/i){
 quest::say("Ok, good-bye!");
 quest::delglobal("sandy");
 quest::setglobal("sandy","3","3","F");
 $sandy=undef;
 quest::delglobal("$name");
 quest::setglobal("$name","2","3","F");
 quest::clear_proximity();
 quest::depop();
}
elsif($text=~/hail/i){
quest::say("I'm ready $name, do you need to know the [commands]?");
}
elsif($text=~/commands/i){
quest::say("If you target and say [follow], then I will follow you,");
quest::say("If you target and say [stop], then I will stop, but don't go to far away, else you'll loose me,");
quest::say("If you target and say [quit], I will go away,");
quest::say("I can [heal] you with celestial healing, and I have [temperance] for buffs,");
quest::say("You have to trarget me for my attention.");
quest::say("Don't forget to tell me to [quit] when you're done.");
}
elsif($text=~/heal/i){
 quest::say("Casting celestial healing ...");
 quest::settimer("cheal1",5);
}
elsif($text=~/temp/i){
quest::say("Casting temperance ...");
quest::settimer("temp1",15);
}
elsif($text=~/stop/i){
 quest::clear_proximity();
 quest::depop();
 my $a = 224236;
 my $x = $npc->GetX();
 my $y = $npc->GetY();
 my $z = $npc->GetZ(); 
quest::spawn2($a,1,0,$x,$y,$z,$h);
quest::say("Ok, don't stray too far!");
 }
}

sub EVENT_SPAWN{
	$x = $npc->GetX();
	$y = $npc->GetY();
	quest::set_proximity($x - 120, $x + 120, $y - 120, $y + 120);
}

sub EVENT_EXIT{
	quest::depop();
	quest::delglobal("sandy");
	quest::setglobal("sandy","3","3","F");
	$sandy=undef;
	quest::delglobal("$name");
	quest::setglobal("$name","2","3","F");
}

sub EVENT_TIMER
{
    if ($timer eq "cheal1"){
        quest::stoptimer("cheal1");
        $npc->CastSpell(1444,$userid);
    }
    elsif ($timer eq "temp1"){
        quest::stoptimer("temp1");
        $npc->CastSpell(3692,$userid);
 }
}

sub EVENT_DEATH{
	quest::delglobal("sandy");
	quest::setglobal("sandy","3","3","F");
	$sandy=undef;
	quest::delglobal("$name");
	quest::setglobal("$name","2","3","F");
 }
Like I said, this little puppy works - I just need to finish it or maybe you can - right now I'm having a hell of a time recuperating some lost data from my server death, also am working, and my little bit of spare time goes to database work (Cavedude: Hatesfury is on its way!) .
I also had plans for this npc to cross into other zones with its owner via quest_globals