Jump to content

Combat snippet


Mr Asshole

Recommended Posts

Decided to share this as the get closestAttackableNPC wasn't working that great for me. Enjoy guys

private NPC getTarget(int [] ids){
	List<NPC> NPCs = closestNPCList(ids);
	for (NPC i:NPCs){
		if (i.getFacing() == null && !i.isAnimating()){
			return i;
		}
		}
		
	
	return null;
	}
Edited by Exarticus
Link to comment
Share on other sites

This won't return any NPCs that are offscreen because of NPC#isVisible(), it's probably best to remove that entirely and have the script itself run to the off-screen enemy if necessary.

 

Also, like mentioned earlier, NPC#isUnderAttack() isn't the most reliable thing to use. Rather, I'd recommend using NPC#getFacing() to see who the NPC is interacting with. If it's you, always return that one. If it's someone else, they're in combat already, so skip it. If it's null, they're likely not in combat (idle), so chose that one.

Link to comment
Share on other sites

This won't return any NPCs that are offscreen because of NPC#isVisible(), it's probably best to remove that entirely and have the script itself run to the off-screen enemy if necessary.

 

Also, like mentioned earlier, NPC#isUnderAttack() isn't the most reliable thing to use. Rather, I'd recommend using NPC#getFacing() to see who the NPC is interacting with. If it's you, always return that one. If it's someone else, they're in combat already, so skip it. If it's null, they're likely not in combat (idle), so chose that one.

Updated according to your comments.

Link to comment
Share on other sites

The way you wrote it unfortunately won't work, although it is a step in the right direction.

The line-by-line on yours would go like this:

NPC: Man, Level 3
-Player: PlayerOne, Level 126, is interacting with NPC Man. Do not return NPC Man.
-Player: PlayerTwo, Level 3, is not interacting with NPC Man. Return NPC Man.

Then it'd be returning NPC Man even though he's interacting with PlayerOne.

 

edit: walked through too much

Edited by Peach
Link to comment
Share on other sites

you are trying to see If the character is interacting with another and dont care which one it is

#getFacing will return the character that the npc is interacting with

if its not interacting with anything then it will return null

so Use #getFacing()==null instead of #isFacing(character)

Thanks fixed. 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...