|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Support::Windows Servers Support forum for Windows EQEMu users. |
|
|
|
12-04-2019, 07:12 AM
|
|
Hill Giant
|
|
Join Date: May 2012
Location: Minnesota
Posts: 231
|
|
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!
|
|
|
|
12-04-2019, 09:36 AM
|
|
Hill Giant
|
|
Join Date: May 2012
Location: Minnesota
Posts: 231
|
|
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?
|
12-04-2019, 10:19 AM
|
|
Demi-God
|
|
Join Date: Oct 2010
Posts: 1,332
|
|
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 ....
|
12-04-2019, 10:25 AM
|
|
Hill Giant
|
|
Join Date: May 2012
Location: Minnesota
Posts: 231
|
|
So it's a pet you trigger via an AA ability?
How were you able to remove the player's name below the pet?
|
12-04-2019, 10:32 AM
|
|
Demi-God
|
|
Join Date: Oct 2010
Posts: 1,332
|
|
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)
|
12-04-2019, 10:54 AM
|
|
Hill Giant
|
|
Join Date: May 2012
Location: Minnesota
Posts: 231
|
|
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.
|
12-04-2019, 11:03 AM
|
|
Demi-God
|
|
Join Date: Oct 2010
Posts: 1,332
|
|
Quote:
Originally Posted by Huppy
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);
}
}
}
|
12-04-2019, 02:31 PM
|
|
Hill Giant
|
|
Join Date: May 2012
Location: Minnesota
Posts: 231
|
|
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
|
12-04-2019, 02:56 PM
|
|
Hill Giant
|
|
Join Date: May 2012
Location: Minnesota
Posts: 231
|
|
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!
|
|
|
|
12-04-2019, 11:18 PM
|
Hill Giant
|
|
Join Date: Dec 2015
Posts: 116
|
|
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!
|
|
|
|
12-05-2019, 08:17 AM
|
|
Hill Giant
|
|
Join Date: May 2012
Location: Minnesota
Posts: 231
|
|
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
|
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 01:20 PM.
|
|
|
|
|
|
|
|
|
|
|
|
|