Jump to content
Sign in to follow this  
Mr Asshole

Combat snippet

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

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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)

Share this post


Link to post
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. 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...