Jump to content

(Question)Check if npc is in map

Go to solution Solved by ondry,

Recommended Posts

Hello, everyone! :) 

I hope you have/had a nice day.

So, I want to spawn a NPC via quest.

I've used the pc.setqf so that after it's spawned when another flag is triggered(kill 100 mobs) the action is stopped.

The problem is that as I've seen, pc.setqf is PID specific, so another player can spawn another NPC because he doesn't have that flag set yet.

So, as a another "safety" action, is there any way to check if a specific npc is in a specific map(at least map index)?

Or.. maybe.. set the flag as general for all PIDS? 

I tried to play with npc.is_available0() but I think that this function is for other means...

P.S.: It is for a normal map, not dungeon.. with dungeon functions I think that I would've found a workaround.

Thank you for taking your time! :D 

Link to comment
Share on other sites

  • Bronze
struct FCountRaceInMap
	size_t count;
	uint32_t dwVnum;

	FCountRaceInMap(uint32_t _dwVnum) : dwVnum(_dwVnum), count(0) {}

	void operator() (LPENTITY ent)
		if (!ent->IsType(ENTITY_CHARACTER))

		LPCHARACTER ch = static_cast<LPCHARACTER>(ent);
		if (ch->IsPC())

		if (ch->GetRaceNum() == dwVnum)

size_t SECTREE_MANAGER::GetRaceCountInMap(long lMapIndex, uint32_t dwVnum) {
	LPSECTREE_MAP sectree = SECTREE_MANAGER::instance().GetMap(lMapIndex);
	if (!sectree)
		return 0;

	FCountRaceInMap f(dwVnum);
	return f.count;


It should work, but I didn't test.

Edited by Endymion
  • Love 1
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in

Sign In Now


  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.