|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quests::Q&A This is the quest support section |
|
|
|
04-09-2020, 11:16 PM
|
|
Sarnak
|
|
Join Date: Oct 2017
Location: Washington State
Posts: 54
|
|
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
|
|
|
|
|
|
|
04-09-2020, 11:17 PM
|
|
Sarnak
|
|
Join Date: Oct 2017
Location: Washington State
Posts: 54
|
|
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");
}
|
|
|
|
|
|
|
04-09-2020, 11:18 PM
|
|
Sarnak
|
|
Join Date: Oct 2017
Location: Washington State
Posts: 54
|
|
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
|
|
|
|
04-09-2020, 11:21 PM
|
|
Sarnak
|
|
Join Date: Oct 2017
Location: Washington State
Posts: 54
|
|
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.
|
04-10-2020, 07:17 PM
|
|
Sarnak
|
|
Join Date: Oct 2017
Location: Washington State
Posts: 54
|
|
Have my bugs worked out. Will post what I made so far soon in the custom post.
|
04-20-2020, 04:25 PM
|
|
Sarnak
|
|
Join Date: Oct 2017
Location: Washington State
Posts: 54
|
|
So it was just that this was missing in my sub script. All working and more now. Cheers!!
my $npc = plugin::val('$npc');
|
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 10:26 PM.
|
|
|
|
|
|
|
|
|
|
|
|
|