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 04-09-2020, 11:16 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 54
Default Implementing plugins...some not working.

Hello folks!!

I posted this in the Discord as well. Figure might as well do same here.
Below I will post two scripts/code.

First one is a quest script "a_wood_elf_adventurer01" tied to a NPC that is spawned. Second is a plugin "wa_KillMode" that is used by the quest script.

Now, as it is. The "a_wood_elf_adventurer01" script almost work wonderfully by itself. What I wish to do is to cut that script up and make plugins.
The idea is to reduce script duplication, a common practice as seen many times over.

So here I am, I made the "wa_KillMode" plugin. BUT, now the "a_wood_elf_adventurer01" does not even call upon the new plugin.
I am having the same issue when I attempted to use Trevius's "plugin::RandomSay(chance(1-100), "message1","message2", etc..);" plugin.

They are just not firing it seems. HOWEVER, "plugin::RandomWeapons(1, 11169, 50, 200, 230);" works flawlessly as many other s do as well.

Perplexing to say the least. If anyone has ideas or knows what I am doing wrong, please let me know?

-War
Reply With Quote
  #2  
Old 04-09-2020, 11:17 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 54
Default The first script...

Code:
#::: Usage:			Have this script name match the NPC name in the database.
#::: Created:		7April2020
#::: Author:		Unknown, multiple folks have made the scripts and I just mushed them togather...WarAngel
#::: Description:	To have a NPC create the illusion of other real world players running around.
#:::

sub EVENT_SPAWN
{
	#$npc->TempName("Test_Name"); # Works but want a randomizer for names
	my $wa_Diff = int(rand(10)); #picks a number 0-9
	quest::settimer("wa_FeatureChange", 5); #5 seconds
	quest::settimer("wa_RandomName", 7); #7 seconds
	quest::settimer("wa_Decisions", 10 + ($wa_Diff)); #10 seconds + random (0-9)
}
#####################
#End of EVENT_SPAWN
#####################

sub EVENT_TIMER
{
##What do I want to do?##
	if($timer eq "wa_Decisions" && !$npc->IsEngaged())
	{
		my $wa_intChoice = plugin::RandomRange(1, 100); #random int used localy

			if ($wa_intChoice <= 20) #below or at 20
			{
				quest::debug("wa_intROLL BELOW 20 worked for ". $npc->GetName() .". Time to kill");
				#wa_KillMode();
				plugin::wa_KillMode();

			}
			if ($wa_intChoice > 20) #above 20
			{
				quest::debug("wa_intROLL ABOVE 20 worked for ". $npc->GetName() .". Time for peace");
				wa_PeaceMode();
			}
	}

##Change my look here##
	if($timer eq "wa_FeatureChange")
	{
		quest::stoptimer("wa_FeatureChange");
		wa_ChangeLook();
	}

##Change my name here##
	if($timer eq "wa_RandomName")
	{
		quest::stoptimer("wa_RandomName");
		my $wa_RanName = int(rand(3));
		if ($wa_RanName == 0)
			{
				$npc->TempName("Test_Name_one");
			}
		if ($wa_RanName == 1)
			{
				$npc->TempName("Test_Name_two");
			}
		if ($wa_RanName == 2)
			{
				$npc->TempName("Test_Name_three");
			}
	}

}
###################
#End of EVENT_TIMER
###################


sub wa_KillMode
{
    plugin::wa_KillMode();   
    #my @npc_list = $entity_list->GetNPCList();
    #foreach $npc_ent (@npc_list)
	#{
		#quest::debug("Killmode begin for " . $npc->GetName() . ""); #This debug will repeat for each NPC in the GetNPCList()
		#next if $npc_ent->GetLevel() > 2; # Enemy level parameters
		#next if $npc_ent->GetID() == $npc->GetID(); #Lets not kill ourself
		#next if $npc_ent->GetOwnerID(); #skip pets
		#next if ($npc_ent->GetSpecialAbility(19) || $npc_ent->GetSpecialAbility(20) || $npc_ent->GetSpecialAbility(24) || $npc_ent->GetSpecialAbility(35)); #Immune to melee / magic / aggro / noharm SKIP
		#next if $npc_ent->GetBodyType() == 11; #skip untargetable NPCs
		#next if $npc_ent->IsEngaged(); # Is target in combat?
		#next if $npc_ent->CalculateDistance($x, $y, $z) > 250; #skip mobs over 250 Distance
		#quest::shout("I am coming for you, " . $npc_ent->GetCleanName() . "!");
		#quest::SetRunning(1);
		#$npc->AddToHateList($npc_ent, 1); #We now HATE HIM!
		#quest::debug("Killmode end for " . $npc->GetName() . "");
		#last; #we found a valid target jump out of the loop
    #}
}


sub wa_PeaceMode
{
		#quest::debug("PeaceMode begin for ". $npc->GetName() ."");
		#quest::shout("Hiyas folks I am ". $npc->GetName() ."!"); #This worked
		#quest::emote("Does the whole zone hear me!!"); #works but emote has a limited range
		#plugin::RandomSay(chance(1-100), "Heyhey!!","How are you all doing?","How about it?"); #not working...even when I am on top of NPC

			my $wa_intCHAT = plugin::RandomRange(1, 100); #random int used localy

				if ($wa_intCHAT <= 50) #below or at 50
				{
					plugin::SetAnim("sit"); #options (stand/sit/duck/dead/kneel)
					#quest::debug("wa_intCHAT Sarcastic chat");
				}
				if ($wa_intCHAT > 50) #above 50
				{
					plugin::SetAnim("stand"); #options (stand/sit/duck/dead/kneel)
					#quest::debug("wa_intCHAT Positive chat");
				}

		#quest::debug("PeaceMode end for " . $npc->GetName() . "");
}


sub wa_ChangeLook
{
		#quest::debug("ChangeLook begin");
		plugin::RandomWeapons(1, 11169, 50, 200, 230); #Any random weapon available through S0F
		plugin::RandomFeatures($npc); #Change facial features
		#quest::debug("ChangeLook end");
}
Reply With Quote
  #3  
Old 04-09-2020, 11:18 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 54
Default The second script/plugin...

Code:
#Usage: plugin::wa_KillMode();




sub wa_KillMode
{
	quest::debug("Killmode begin for " . $npc->GetName() . "");
    my @npc_list = $entity_list->GetNPCList();
    foreach $npc_ent (@npc_list)
	{
		#quest::debug("Killmode begin for " . $npc->GetName() . ""); #This debug will repeat for each NPC in the GetNPCList()
		next if $npc_ent->GetLevel() > 2; # Enemy level parameters
		next if $npc_ent->GetID() == $npc->GetID(); #Lets not kill ourself
		next if $npc_ent->GetOwnerID(); #skip pets
		next if ($npc_ent->GetSpecialAbility(19) || $npc_ent->GetSpecialAbility(20) || $npc_ent->GetSpecialAbility(24) || $npc_ent->GetSpecialAbility(35)); #Immune to melee / magic / aggro / noharm SKIP
		next if $npc_ent->GetBodyType() == 11; #skip untargetable NPCs
		next if $npc_ent->IsEngaged(); # Is target in combat?
		next if $npc_ent->CalculateDistance($x, $y, $z) > 250; #skip mobs over 250 Distance
		#quest::shout("I am coming for you, " . $npc_ent->GetCleanName() . "!");
		quest::SetRunning(1);
		$npc->AddToHateList($npc_ent, 1); #We now HATE HIM!
		last; #we found a valid target jump out of the loop
    }
}

return 1;	#This line is required at the end of every plugin file in order to use it
Reply With Quote
  #4  
Old 04-09-2020, 11:21 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 54
Default

Bear in mind I gave up on the
HTML Code:
#plugin::RandomSay(chance(1-100)
and started down the road on my own random chat...still in progress. But the debug shows it to work.

I just gave up on the plugin, although I wish I could use it.
Reply With Quote
  #5  
Old 04-10-2020, 07:17 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 54
Default

Have my bugs worked out. Will post what I made so far soon in the custom post.
Reply With Quote
  #6  
Old 04-20-2020, 04:25 PM
WarAngel's Avatar
WarAngel
Sarnak
 
Join Date: Oct 2017
Location: Washington State
Posts: 54
Default

So it was just that this was missing in my sub script. All working and more now. Cheers!!

my $npc = plugin::val('$npc');
Reply With Quote
Reply

Tags
plugin, quests, script

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 03:43 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