Thread: [667] Pets, how to make dialogue only for owner.

Results 1 to 4 of 4
  1. #1 [667] Pets, how to make dialogue only for owner. 
    Banned
    Join Date
    Oct 2014
    Posts
    638
    Thanks given
    74
    Thanks received
    54
    Rep Power
    0
    How would I make the talk-to option on pets only trigger a dialogue for the owner of the pet?

    Heres my pet.java

    Code:
    package com.rs.game.player;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import com.rs.game.Graphics;
    import com.rs.game.World;
    import com.rs.game.WorldTile;
    import com.rs.game.npc.NPC;
    import com.rs.game.tasks.WorldTask;
    import com.rs.game.tasks.WorldTasksManager;
    import com.rs.utils.Misc;
    
    
    public class Pets extends NPC {
    	/**
    	 * Objects
    	 */
    	private static final long serialVersionUID = 1325133366821220445L;
    	private transient Player owner;
    	public boolean spawnedPet = false;
    	private int npcId;
    
    	public static enum Pet {
    		SPARKLES(2267, 22973), JAD(3603, 21512), PENGUIN(9235, 12188), TROLL(13712, 8136), ZOMBIE(14339, 20676), DAGANNOTH(9346, 8141);
    		private static final Map<Integer, Pet> item = new HashMap<Integer, Pet>();
    
    		static {
    			for (Pet itemId : Pet.values()) {
    				item.put(itemId.itemId, itemId);
    			}
    		}
    
    		public static Pet forId(int id) {
    			return item.get(id);
    		}
    
    		private int npcId;
    		private int itemId;
    
    		private Pet(int npcId, int itemId) {
    			this.npcId = npcId;
    			this.itemId = itemId;
    		}
    
    		public int getNpcId() {
    			return npcId;
    		}
    
    		public int getItemId() {
    			return itemId;
    		}
    
    		public static Map<Integer, Pet> getItem() {
    			return item;
    		}
    	}
    
    	public Pets(int npcId, Player owner, WorldTile tile, int mapAreaNameHash,
    			boolean canBeAttackFromOutOfArea) {
    		super(npcId, tile, mapAreaNameHash, canBeAttackFromOutOfArea);
    		setRun(true);
    		this.owner = owner;
    		this.npcId = npcId;
    		spawnPet(npcId, owner);
    		call(true);
    	}
    
    	public void spawnPet(int npcId, Player owner) {
    		if (owner.getPet() != null) {
    			return;
    		}
    		spawnedPet = true;
    		World.getNPCs().add(this);
    		setNextGraphics(new Graphics(getDefinitions().size <= 1 ? 1314 : 1315));
    		owner.setPetFollow(owner.getIndex());
    		owner.setPet(this);
    	}
    
    	public void processNPC() {
    		if (isDead())
    			return;
    		if (!withinDistance(owner, 4)) {
    			call(false);
    			return;
    		}
    		trackTimer++;
    		if (trackTimer == 50) {
    			trackTimer = 0;
    			ticks--;
    			if (ticks == 2)
    				owner.getPackets().sendGameMessage(
    						"You have 1 minute before your familiar vanishes.");
    			else if (ticks == 1)
    				owner.getPackets().sendGameMessage(
    						"You have 30 seconds before your familiar vanishes.");
    			else if (ticks == 0) {
    				dissmissPet(false);
    				return;
    			}
    		}
    		sendFollow();
    	}
    
    	public void call() {
    		if (getAttackedBy() != null
    				&& getAttackedByDelay() > System.currentTimeMillis()) {
    			owner.getPackets().sendGameMessage(
    					"You cant call your familiar while it under combat.");
    			return;
    		} else {
    			call(false);
    			return;
    		}
    	}
    
    	public void call(boolean login) {
    		int size = getSize();
    		if (login) {
    			checkNearDirs = Misc.getCoordOffsetsNear(size);
    		} else {
    			removeTarget();
    		}
    		WorldTile teleTile = null;
    		for (int dir = 0; dir < checkNearDirs[0].length; dir++) {
    			WorldTile tile = new WorldTile(new WorldTile(owner.getX()
    					+ checkNearDirs[0][dir], owner.getY()
    					+ checkNearDirs[1][dir], owner.getPlane()));
    			if (!World.canMoveNPC(tile.getPlane(), tile.getX(), tile.getY(),
    					size))
    				continue;
    			teleTile = tile;
    			break;
    		}
    
    		if (login || teleTile != null)
    			WorldTasksManager.schedule(new WorldTask() {
    
    				public void run() {
    					setNextGraphics(new Graphics(
    							getDefinitions().size <= 1 ? 1314 : 1315));
    				}
    
    			});
    		if (teleTile == null) {
    			if (!sentRequestMoveMessage) {
    				owner.getPackets().sendGameMessage(
    						"Theres not enough space for your familiar appear.");
    				sentRequestMoveMessage = true;
    			}
    			return;
    		} else {
    			sentRequestMoveMessage = false;
    			setNextWorldTile(teleTile);
    			return;
    		}
    	}
    
    	private void sendFollow() {
    		if (getLastFaceEntity() != owner.getClientIndex())
    			setNextFaceEntity(owner);
    		if (getFreezeDelay() >= System.currentTimeMillis())
    			return;
    		int size = getSize();
    		int distanceX = owner.getX() - getX();
    		int distanceY = owner.getY() - getY();
    		if (distanceX < size && distanceX > -1 && distanceY < size
    				&& distanceY > -1 && !owner.hasWalkSteps()) {
    			resetWalkSteps();
    			if (!addWalkSteps(owner.getX() + 1, getY())) {
    				resetWalkSteps();
    				if (!addWalkSteps(owner.getX() - size - 1, getY())) {
    					resetWalkSteps();
    					if (!addWalkSteps(owner.getX(), getY() + 1)) {
    						resetWalkSteps();
    						if (!addWalkSteps(owner.getX(), getY() - size - 1))
    							return;
    					}
    				}
    			}
    			return;
    		}
    		if (!clipedProjectile(owner, true) || distanceX > size
    				|| distanceX < -1 || distanceY > size || distanceY < -1) {
    			resetWalkSteps();
    			addWalkStepsInteract(owner.getX(), owner.getY(), 2, size, true);
    			return;
    		} else {
    			resetWalkSteps();
    			return;
    		}
    	}
    
    	public void respawnFamiliar(Player owner) {
    		this.owner = owner;
    		initEntity();
    		deserialize();
    		owner.setPetFollow(owner.getIndex());
    		call(true);
    	}
    
    	public void dissmissPet(boolean loggedOut) {
    		if (!loggedOut) {
    			owner.getInventory().addItem(owner.getPetId(), 1);
    			owner.setPetId(0);
    			owner.setPet(null);
    			finish();
    		}
    		finish();
    	}
    
    	public int getNpcId() {
    		return npcId;
    	}
    
    	public void setNpcId(int npcId) {
    		this.npcId = npcId;
    	}
    
    	private int ticks;
    	private int trackTimer;
    	private transient boolean sentRequestMoveMessage;
    	private transient int checkNearDirs[][];
    }
    and here is how my npchandler has to be.

    Code:
     if (npc.getId() == 29872)
    					 //insert pet owner 
    					player.getDialogueManager().startDialogue("corp");

    Thanks!
    Reply With Quote  
     

  2. #2  
    Banned
    Join Date
    Oct 2014
    Posts
    638
    Thanks given
    74
    Thanks received
    54
    Rep Power
    0
    Does anybody have?
    Really need!
    Reply With Quote  
     

  3. #3  
    Donator

    Josh''s Avatar
    Join Date
    Jul 2012
    Age
    26
    Posts
    2,036
    Thanks given
    1,119
    Thanks received
    520
    Rep Power
    192
    Code:
    	if (npc.getId() == 29872 && npc instanceof Pet) {
    		Pet pet = (Pet) npc;
    		if (pet != player.getPet()) {
    			player.getPackets().sendGameMessage("This isn't your pet");
    			return;
    		}
    		player.getDialogueManager().startDialogue("corp");
    	}
    Reply With Quote  
     

  4. Thankful user:


  5. #4  
    Banned
    Join Date
    Oct 2014
    Posts
    638
    Thanks given
    74
    Thanks received
    54
    Rep Power
    0
    Quote Originally Posted by Josh' View Post
    Code:
    	if (npc.getId() == 29872 && npc instanceof Pet) {
    		Pet pet = (Pet) npc;
    		if (pet != player.getPet()) {
    			player.getPackets().sendGameMessage("This isn't your pet");
    			return;
    		}
    		player.getDialogueManager().startDialogue("corp");
    	}
    Thankyou!
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. How to make items unspawnable for 667
    By maximumz in forum Guides
    Replies: 5
    Last Post: 02-22-2014, 06:03 AM
  2. How to make items unspawnable for 667
    By maximumz in forum Tutorials
    Replies: 3
    Last Post: 02-22-2014, 12:08 AM
  3. Replies: 9
    Last Post: 07-01-2011, 12:14 AM
  4. Replies: 0
    Last Post: 04-12-2009, 02:31 AM
  5. How To Make Max Player (For New People)
    By Vice in forum Tutorials
    Replies: 10
    Last Post: 03-19-2008, 07:31 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •