|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quests::Q&A This is the quest support section |
06-19-2014, 03:42 PM
|
Hill Giant
|
|
Join Date: Feb 2010
Posts: 207
|
|
is NPC spawned
Hola,
Is there a way to check if an NPC is spawned before doing something?
Something like:
Code:
if (defined $qglobals{"MjarakIsDead"}){
my $mjarak = $entity_list->GetMobByNpcTypeID(4770015);
if ($mjarak == 1){
quest::ze(15, "texthere");
quest::settimer(4772, 120);
}
else {
}
}
The if ($mjarak == 1) { was just wishful thinking, I've tried if ($mjarak->IsMob()){ too.
|
06-19-2014, 04:15 PM
|
Hill Giant
|
|
Join Date: Feb 2010
Posts: 207
|
|
Found EntityVariableExists() under the mob-> commands,
Tried the following with no luck.
Code:
if (defined $qglobals{"MjarakIsDead"}){ ###Mjarak 2 min warning
my $mjarak = $entity_list->GetMobByNpcTypeID(4770015);
if ($mjarak->EntityVariableExists()){
quest::ze(15, "texthere");
quest::settimer(4772, 120);
}
}
|
06-19-2014, 05:14 PM
|
|
Developer
|
|
Join Date: Mar 2003
Posts: 1,497
|
|
Quote:
Originally Posted by Esildor
The if ($mjarak == 1) { was just wishful thinking, I've tried if ($mjarak->IsMob()){ too.
|
What about just:
if ($mjarak)
|
06-19-2014, 05:30 PM
|
Hill Giant
|
|
Join Date: Feb 2010
Posts: 207
|
|
Quote:
Originally Posted by joligario
What about just:
if ($mjarak)
|
Tadah! if ($mjarak) { works, Thanks Jolig!
|
06-19-2014, 08:52 PM
|
Demi-God
|
|
Join Date: Apr 2008
Location: MA
Posts: 1,164
|
|
EntityList::IsMobSpawnedByNpcTypeID() should work with both lua and Perl. (I'm not sure the exact syntax though :P)
|
06-20-2014, 12:39 AM
|
Hill Giant
|
|
Join Date: Feb 2010
Posts: 207
|
|
Quote:
Originally Posted by demonstar55
EntityList::IsMobSpawnedByNpcTypeID() should work with both lua and Perl. (I'm not sure the exact syntax though :P)
|
Grabbing the entity with:
Code:
my $mjarak = $entity_list->GetMobByNpcTypeID(4770039);
if ($mjarak) {
Is working fine. Is there any reason that doing EntityList::IsMobSpawnedByNpcTypeID() any better?
|
06-20-2014, 01:01 AM
|
Demi-God
|
|
Join Date: Apr 2008
Location: MA
Posts: 1,164
|
|
Quote:
Originally Posted by Esildor
Grabbing the entity with:
Code:
my $mjarak = $entity_list->GetMobByNpcTypeID(4770039);
if ($mjarak) {
Is working fine. Is there any reason that doing EntityList::IsMobSpawnedByNpcTypeID() any better?
|
It does the same thing, but in code, so you don't have to worry about go through the quest system. It also makes sure the NPC is alive, since the enity list can contain mobs that are dead and will be quickly removed :P (they get removed on the next cycle)
|
06-20-2014, 01:45 AM
|
Hill Giant
|
|
Join Date: Feb 2010
Posts: 207
|
|
Quote:
Originally Posted by demonstar55
It does the same thing, but in code, so you don't have to worry about go through the quest system. It also makes sure the NPC is alive, since the enity list can contain mobs that are dead and will be quickly removed :P (they get removed on the next cycle)
|
That seems silly, why would it contain dead mobs?
Also, you said in code but not in the quest system, what exactly do you mean by that, it wouldn't be handled in a perl for example?
|
06-20-2014, 02:11 AM
|
Hill Giant
|
|
Join Date: Jun 2012
Posts: 216
|
|
Quote:
Originally Posted by Esildor
That seems silly, why would it contain dead mobs?
|
If I remember correctly, to prevent re-entrancy issues. Lots of things iterate through the NPC list, often with more than one iteration "in progress" at one time. Removing an NPC from the list at the "top level" iteration will make all the other iterations in progress stale and buggy. Much safer to flag the NPC as dead now and then remove it from the list on the next "bottom level" iteration (the NPC::Process cycle).
Because code, in other words.
|
06-20-2014, 02:18 AM
|
Hill Giant
|
|
Join Date: Feb 2010
Posts: 207
|
|
I see.
The entity variables I'm using won't last long, only 2 minutes. Using it for a lockout system, if someone zones in and the mob is up it's going to despawn it w/in 2 minutes unless the player leaves the zone. If I'm only using the variables for a relatively short amount of time, should I really be worried about them being buggy?
Sidenote, anyone know of a way to return the time remaining on a qglobal to players?
|
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 09:37 AM.
|
|
|
|
|
|
|
|
|
|
|
|
|