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 12-04-2019, 07:12 AM
strugglegenerator's Avatar
strugglegenerator
Hill Giant
 
Join Date: May 2012
Location: Minnesota
Posts: 231
Talking Spawning Gandalf the Gray

I'd like Gandalf the Gray to spawn on my server. His 1 job will be to teleport you to your desired destination. I've tried this in several different ways, but the results aren't exactly what I want. It's important to note that I'm using the Titanium client.
Here's what I've tried:

Method 1)
Spawn Gandalf the Gray as a 'pet' from an item click linked to a spell. I basically re-used the level 65 Earth pet and just swapped out the NPC with my Gandalf NPC. This does make Gandalf spawn next to me, but he will ALWAYS say my characters name below him, which I don't want. Not to mention he's a pet, and comes with the annoying pet window.

Method 2)
Spawn an invisible pet from an item click and have that invisible pet spawn Gandalf at the invisible pet's location instantaneously and then depop the invisible pet immediately. This actually works surprisingly well, but I can still see the invisible pet spawn for a split second and I can still see the pet window pop up for a split second. It really takes away from the whole illusion if you can see the glitch in the matrix.

Method 3)
Have an invisible NPC in the zone with an event_proximity_say script and a zone wide proximity value that waits for you to say "Help me Gandalf!" and then Gandalf will spawn at your location. Unfortunately event_proximity_say does not work (it's broken, confirmed this on Discord with others) and event_say only works when I can target an NPC, but in this case my NPC is invisible so I can't do that either. There's also the problem of spawning Gandalf directly in front of the client, which I have yet to figure out. Right now, the closest I've got to spawning Gandalf using proximity is with event_proximity, but that's not when I want Gandalf to spawn and he still just spawns right on top of my invisible NPC instead of in front of the actual player.

I've tried all of the above, both in .lua and in .pl, both in the quests/zone folder and the quests/global folder, and I've even tried it with item scripts but those are also broken (for Titanium only). I've made sure never to accidentally name a .pl script the same thing as a .lua script, since I know .lua will override .pl. I've made sure to link item scripts to the itemfileid in the item itself, and I know to use #reloadqst and #hotfix and zone in/out before trying things again.

It's been about 4 days of attempting this Gandalf idea, and I know I'm close. I'm hoping with our collective efforts we can come up with a neat work around and I will post my scripts for anyone to use <3

EQEMU Dev's, unite!
Reply With Quote
  #2  
Old 12-04-2019, 09:25 AM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

Back in July, I was playing around with a "pocket porter".
http://www.eqemulator.org/forums/sho...67&postcount=3
__________________
Hanging out at Antonica.World
Reply With Quote
  #3  
Old 12-04-2019, 09:36 AM
strugglegenerator's Avatar
strugglegenerator
Hill Giant
 
Join Date: May 2012
Location: Minnesota
Posts: 231
Default

That's very similar to what I've been able to achieve. How did you approach it? Is that a pet or a straight up spawned NPC at the players location?
Reply With Quote
  #4  
Old 12-04-2019, 10:19 AM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

Actually, just remembered, I started out with a straight new npc (gnome), but changed the plan later and put the port script on a_jester_of_bristlebane. Then assigned that AA to level 1 toons and reduced the reuse timer on it. This is with an RoF2 client ....
__________________
Hanging out at Antonica.World
Reply With Quote
  #5  
Old 12-04-2019, 10:25 AM
strugglegenerator's Avatar
strugglegenerator
Hill Giant
 
Join Date: May 2012
Location: Minnesota
Posts: 231
Default

So it's a pet you trigger via an AA ability?

How were you able to remove the player's name below the pet?
Reply With Quote
  #6  
Old 12-04-2019, 10:32 AM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

Lol, sorry had to snicker at that question. Chaotic Jester has been an EQ AA for a long time. It's a novelty NPC that spawns, follows you around and, by script, casts random things on random players in the area, but says random sick jokes. That's all in his script.
If you want to see the npc without the AA, #cast 6882 or ... quest:selfcast(6882)
__________________
Hanging out at Antonica.World
Reply With Quote
  #7  
Old 12-04-2019, 10:54 AM
strugglegenerator's Avatar
strugglegenerator
Hill Giant
 
Join Date: May 2012
Location: Minnesota
Posts: 231
Default

That's really close to what I'm looking for! I don't see a pet window, but I also don't see a name displayed at all for this NPC. He has no name at all (in game).

Not quite sure how to get his name to display, but I can totally re-use this to make my Gandalf!

Thank you for pointing this out.
Reply With Quote
  #8  
Old 12-04-2019, 11:03 AM
Huppy's Avatar
Huppy
Demi-God
 
Join Date: Oct 2010
Posts: 1,333
Default

Quote:
Originally Posted by Huppy View Post
changed the plan later and put the port script on a_jester_of_bristlebane.
Chaotic Jesture is the name of the vet AA. The npc is (see above). If you want to assign that AA to new toons :
In global_player.pl
Code:
sub EVENT_CONNECT {
    my %vet_aa = (
        483 => [0, 1, 1] ## Chaotic Jester
    );
    my $age = $client->GetAccountAge();
    for (my ($aa, $v) = each %vet_aa) {
        if ($v[2] && ($v[1] || $age >= $v[0])) {
            $client->GrantAlternateAdvancementAbility($aa, 1);
        }
    }
}
__________________
Hanging out at Antonica.World
Reply With Quote
  #9  
Old 12-04-2019, 02:31 PM
strugglegenerator's Avatar
strugglegenerator
Hill Giant
 
Join Date: May 2012
Location: Minnesota
Posts: 231
Default

Thank you Huppy.

Definitely something odd going on with that jester. I cannot change ANYTHING about him. Even when I change the npcID in the pets table to be a different NPC and #hotfix, the jester still spawns.

I've even tried changing the jester directly in the npc_types table to a different race (just to test), but he still remains the same.

The script for a_jester_of_bristlebane also has nothing in there that's controlling anything like that. How can I swap out the jester of bristlebane with my own Gandalf model?

Also, the jester's name doesn't show. It's going to be important for players to see Gandalf's name, otherwise he's just a scrub in a gray robe =p
Reply With Quote
  #10  
Old 12-04-2019, 02:56 PM
strugglegenerator's Avatar
strugglegenerator
Hill Giant
 
Join Date: May 2012
Location: Minnesota
Posts: 231
Default

I got it! The server had to be restarted. #hotfix and #reloadqst did not work. Very odd indeed, but it works and I can see his name now that it's my Gandalf NPC and not that jester. Thank you Huppy!
Reply With Quote
  #11  
Old 12-04-2019, 11:18 PM
Sturm
Hill Giant
 
Join Date: Dec 2015
Posts: 116
Default

EVENT_PROXIMITY_SAY most certainly works...

Behold! Grand_Historian_Thoridain proper scripting:

Code:
my $counter;
my $count = 0;

sub EVENT_SPAWN {
	$x = $npc->GetX();
   	$y = $npc->GetY();
	quest::set_proximity($x - 50, $x + 50, $y - 50, $y + 50);
	$counter = 0;
	quest::settimer("lecture",110);
	quest::enable_proximity_say();
}

sub EVENT_PROXIMITY_SAY {
	if ($text=~/Oh Brell, Thank you for protecting me and seeing me through my trials. Forgive me for the things I think and say and do that displease you. Please reveal to me your will and bless me with the patience and obedience to do that which you desire. Amen./i) {
    $counter += 1;
    if ($counter == 1) {
      quest::signalwith(115230,33,0);
    }
    elsif ($counter == 2) {
      quest::signalwith(115230,66,0);
    }
    elsif ($counter == 3) {
      quest::signalwith(115230,99,0);
      quest::summonitem(1855);
      $counter = 0;
    }
  }
}

sub EVENT_SAY {
  if ($text=~/hail/i) {
    quest::signalwith(115015,99,0);
  }
}

sub EVENT_TIMER {
	$count++;
	if($count==1) {
		quest::say("We are taught from day one that the truth lies underfoot. It is simple common sense then, that the taller a being is, the farther his mind and heart are from the truth. Always be wary of those larger in stature than us.");
		quest::signal(115028,8000);
		quest::signal(115197,8000);
		quest::signal(115025,16000);
		quest::signal(115194,16000);
	}
	if($count==2) {
		quest::say("If we Coldain just work together, obeying Brell's teachings, nothing can stop us from overcoming our enemies. Even the Kromrif will fall before us if we are undivided. It is only when we stray from our fundamental knowledge that we are vulnerable.");
	}
	if($count==3) {
		quest::say("Allow me to share a short story from my youth. It begins when I was just tail high to a snow bunny. Instead of tending to my studies, I snuck out and participated in what was then our 300th annual snowball fighting tournament. . .");
		quest::settimer("lecture",70);
	}
	if($count==4) {
		quest::settimer("lecture",25);
		quest::signalwith(115022,1);
		quest::signalwith(115191,1);
		quest::signal(115021,8000);
		quest::signalwith(115022,2,8100);
		quest::signalwith(115191,2,8100);
	}
	if($count==5) {
		quest::say("Young Doriggan, perhaps you will find it easier to focus on my words from a standing position. That corner will do fine.");
		quest::signalwith(115022,3);
		quest::signalwith(115191,3);
		quest::settimer("lecture",110);
	}
	if($count==6) {
		quest::say("I have an important announcement to make today. The Dain has heard rumor of a faction of our brethren who openly oppose the crown. If you come forth with any information leading to the discovery of any such traitorous vermin you will be richly rewarded. Their fate most certainly lies at the bottom of the well.");
		$count = 0;
	}
}
		
sub EVENT_ITEM {
  if (plugin::check_handin(\%itemcount, 1418 => 1, 1428 => 1)) {
    quest::say("My compliments, $name, what a wonderful dish! Please accept my personal Seal as a token of my appreciation. May it give you power over your adversaries.");
    quest::summonitem(1422);
    quest::exp(200000);
    quest::faction(49,10); #coldain
    quest::faction(67,10); #dain
    quest::faction(188,-30); #krif
    quest::faction(189,-30); #kzek
  }
  elsif (plugin::check_handin(\%itemcount, 1428 => 1)) {
    quest::say("My compliments, $name, what a wonderful dish!");
    quest::exp(5000);
    quest::faction(49,10); #coldain
    quest::faction(67,10); #dain
    quest::faction(188,-30); #krif
    quest::faction(189,-30); #kzek
  }
  plugin::return_items(\%itemcount);
}
Enjoy!
__________________
Developer of the Imperium Server.
https://imperium-eq.com/
Reply With Quote
  #12  
Old 12-05-2019, 08:17 AM
strugglegenerator's Avatar
strugglegenerator
Hill Giant
 
Join Date: May 2012
Location: Minnesota
Posts: 231
Default

Thank you for posting this! It works!!! I was basing my event_proximity_say off the Event Subroutines example in the Quest API of Gitbook. This is what the example that I used has:

Code:
sub EVENT_SPAWN {
    #:: Create a proximity, 100 units across, 100 units tall, enable proximity say
    quest::set_proximity($x - 50, $x + 50, $y - 50, $y + 50, $z - 50, $z + 50, 1);
}

sub EVENT_PROXIMITY_SAY {
    #:: Match say message for "hail", /i for case insensitive
    if ($text=~/hail/i) {
        quest::say("Hello, $name!");
    }
}
However, in the code from Grand_Historian_Thoridain that you posted, I see a major difference:
Code:
quest::enable_proximity_say();
Looks like the example script on Gitbook just forget to add that important line of code, so that proximity say was never enabled. Thank you for pointing this out!!! What a huge waste of time LOL
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 07:53 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