Go Back   EQEmulator Home > EQEmulator Forums > Quests > Quests::Q&A

Quests::Q&A This is the quest support section

Reply
 
Thread Tools Display Modes
  #1  
Old 07-28-2008, 07:25 AM
Neiv
Hill Giant
 
Join Date: May 2008
Location: Colorado
Posts: 238
Default Problems with a signal script

I have a script that is supposed to call the guards to come in and kill the non-allied player who hails the king. On my king NPCs I have the following script:
Quote:
elsif($faction >= 2)
{
quest::signal(999139,5);
quest::signal(999140,5);
quest::say("Why should I suffer the likes of you? You shall pay for your presumptuousness.");
quest::shout("GUARDS!");
}
On two of the kingdom guards I have this:
Quote:
sub EVENT_SIGNAL
{
quest::attack($name);
quest::shout("The King calls for help!");
}
The shouts work fine in each case, but the guards do not come. I tried changing $name to $client, with the same results. Then I changed $name to the PC's actual name (Neiv), and it worked. Obviously I do not want to hard-code my player name in the quest script. Why isn't $name working? How do I adjust the script to recognize any player who hails the king?
Reply With Quote
  #2  
Old 07-28-2008, 08:15 AM
So_1337
Dragon
 
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
Default

$name will report the $name of the player who initiated that section of code (in this case, the sub EVENT_SIGNAL portion). I believe your problem would lie in the fact that it is actually the King's script that is triggering it, and so it doesn't know who is doing it in the first place.

I would suggest looking at something like Cazic Thule's script from the Plane of Fear. That has a pretty good method for adding a client to an NPC's hate list without even using a file for them. Or, if you're really intent on using signals, you could store the $name from the King's file in a variable and pass it along to the guards that way.

Good luck!
Reply With Quote
  #3  
Old 07-28-2008, 05:25 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

The Tunare script in growthplane is another good example of adding to the hate list on other NPCs.

You could probably still send the signal to make them do the shout, but you could probably avoid using the signal at all if you just make the shout come from a sub EVENT_COMBAT.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #4  
Old 07-28-2008, 10:38 PM
Neiv
Hill Giant
 
Join Date: May 2008
Location: Colorado
Posts: 238
Default

Thanks. I've looked at both scripts and experimented a bit with them, but can't seem to figure out what's going on with them (nothing like this in the Lexicon).
Reply With Quote
  #5  
Old 07-28-2008, 10:55 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

This is part of a script I made by using the Tunare script as an example and it works perfectly:

Code:
sub EVENT_ATTACK {

  my $guardian_one = $entity_list->GetMobByNpcTypeID(2700500);
  my $guardian_two = $entity_list->GetMobByNpcTypeID(2700501);
  my $guardian_three = $entity_list->GetMobByNpcTypeID(2700502);
  my $guardian_four = $entity_list->GetMobByNpcTypeID(2700503);
  my $guardian_five = $entity_list->GetMobByNpcTypeID(2700504);
  my $guardian_six = $entity_list->GetMobByNpcTypeID(2120410);

  if ($guardian_one) {
    my $hate_guardian_one = $guardian_one->CastToNPC();
    $hate_guardian_one->AddToHateList($client, 1); }

  if ($guardian_two) {
    my $hate_guardian_two = $guardian_two->CastToNPC();
    $hate_guardian_two->AddToHateList($client, 1); }

  if ($guardian_three) {
    my $hate_guardian_three = $guardian_three->CastToNPC();
    $hate_guardian_three->AddToHateList($client, 1); }

  if ($guardian_four) {
    my $hate_guardian_four = $guardian_four->CastToNPC();
    $hate_guardian_four->AddToHateList($client, 1); }

  if ($guardian_five) {
    my $hate_guardian_five = $guardian_five->CastToNPC();
    $hate_guardian_five->AddToHateList($client, 1); }

  if ($guardian_six) {
    my $hate_guardian_six = $guardian_six->CastToNPC();
    $hate_guardian_six->AddToHateList($client, 1); }
    
}
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #6  
Old 07-28-2008, 11:29 PM
Neiv
Hill Giant
 
Join Date: May 2008
Location: Colorado
Posts: 238
Default

Thanks Trevius,

My event is a SAY, not an ATTACK. The player hails the king to trigger the guards. The guards do not attack if the player is turning in the Grail. They also do not attack if the player has ally status--only when he is less than ally and has no grail to turn in. Would it then be something like?
Quote:

sub EVENT_SAY
{
if($text=~/hail/i)
{
if(plugin::check_hasitem($client, 13732))
{
quest::say("What is this? You bring good tidings indeed, $name! Give me the Grail, and together we shall defeat the Enemy. As for you, $name . . . be assured that you shall not fail to be rewarded for showing such kindness to our Kingdom. Your stature and your bank will be increased, and you will be made a full citizen of the Kingdom. But come now; we must act quickly. Give me the Grail.");
}
elsif($faction >= 2)
{
my $guard_one = $entity_list->GetMobByNpcTypeID(999139);
my $guard_two = $entity_list->GetMobByNpcTypeID(999140);

if ($guard_one) {
my $hate_guard_one = $guard_one->CastToNPC();
$hate_guard_one->AddToHateList($client, 1); }

if ($guard_two) {
my $hate_guard_two = $guard_two->CastToNPC();
$hate_guard_two->AddToHateList($client, 1);

quest::say("Why should I suffer the likes of you? You shall pay for your presumptuousness.");
quest::shout("GUARDS!");
}
else
{
quest::say("Do you not see I have enough [trouble] already? Why should I welcome you, $name? For your welcome here is doubtful");
}
}
Reply With Quote
Reply


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 09:48 PM.


 

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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3