Thread: Walkroute Finder problem 742

Page 1 of 6 123 ... LastLast
Results 1 to 10 of 52
  1. #1 Walkroute Finder problem 742 
    Registered Member
    Join Date
    May 2012
    Posts
    989
    Thanks given
    19
    Thanks received
    28
    Rep Power
    0
    Code:
    java.lang.RuntimeException: null is not instanceof any reachable entity.
    	at com.rs.game.player.RouteEvent.simpleCheck(RouteEvent.java:117)
    	at com.rs.game.player.RouteEvent.processEvent(RouteEvent.java:44)
    	at com.rs.game.player.Player.processEntity(Player.java:5053)
    	at com.rs.cores.task.impl.WorldTask.execute(WorldTask.java:23)
    	at com.rs.cores.task.Task.run(Task.java:57)
    	at com.rs.cores.task.TaskManager.tick(TaskManager.java:109)
    	at com.rs.cores.task.TaskManager$1.run(TaskManager.java:41)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    	at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Code:
    private boolean simpleCheck(Player player) {
    		if (object instanceof Entity) {
    			return player.getPlane() == ((Entity) object).getPlane();
    		} else if (object instanceof WorldObject) {
    			return player.getPlane() == ((WorldObject) object).getPlane();
    		} else if (object instanceof FloorItem) {
    			return player.getPlane() == ((FloorItem) object).getTile().getPlane();
    		} else {
    			throw new RuntimeException(object + " is not instanceof any reachable entity."); throws the error here.
    		}
    	}
    Code:
    public boolean processEvent(final Player player) {
    		if (!simpleCheck(player)) {
    			player.getPackets().sendGameMessage("You can't reach that.");
    			player.getPackets().sendResetMinimapFlag();
    			return true;
    		}
    Code:
    if (routeEvent != null && routeEvent.processEvent(this))
    		    routeEvent = null; //inprocessentity void
    can anybody help me here causes players to logout.
    Attached image
    Reply With Quote  
     

  2. #2  
    Registered Member
    Join Date
    Jan 2015
    Posts
    195
    Thanks given
    137
    Thanks received
    28
    Rep Power
    27
    Well it's easy to tell that the "object" variable is null
    Code:
    throw new RuntimeException(object + " is not instanceof any reachable entity."); throws the error here.
    Then on the log is says "null is not instanceof..". I'm not sure but it seems like that "object" should be the player variable, I mean, show us the full class to see what the object variable is and where does it come from, because it's not part of the methods parameters. Try changing object for player on every place of that method.
    Spoiler for Careful seizure:
    penis
    Reply With Quote  
     

  3. #3  
    Registered Member
    Join Date
    May 2012
    Posts
    989
    Thanks given
    19
    Thanks received
    28
    Rep Power
    0
    Code:
    package com.rs.game.player;
    
    import com.rs.game.Entity;
    import com.rs.game.WorldObject;
    import com.rs.game.WorldTile;
    import com.rs.game.item.FloorItem;
    import com.rs.game.route.RouteFinder;
    import com.rs.game.route.RouteStrategy;
    import com.rs.game.route.strategy.EntityStrategy;
    import com.rs.game.route.strategy.FixedTileStrategy;
    import com.rs.game.route.strategy.FloorItemStrategy;
    import com.rs.game.route.strategy.ObjectStrategy;
    
    public class RouteEvent {
    
    	/**
    	 * Object to which we are finding the route.
    	 */
    	private Object object;
    	/**
    	 * The event instance.
    	 */
    	private Runnable event;
    	/**
    	 * Whether we also run on alternative.
    	 */
    	private boolean alternative;
    	/**
    	 * Contains last route strategies.
    	 */
    	private RouteStrategy[] last;
    
    	public RouteEvent(Object object, Runnable event) {
    		this(object, event, false);
    	}
    
    	public RouteEvent(Object object, Runnable event, boolean alternative) {
    		this.object = object;
    		this.event = event;
    		this.alternative = alternative;
    	}
    
    	public boolean processEvent(final Player player) {
    		if (!simpleCheck(player)) {
    			player.getPackets().sendGameMessage("You can't reach that.");
    			player.getPackets().sendResetMinimapFlag();
    			return true;
    		}
    		RouteStrategy[] strategies = generateStrategies();
    		if (last != null && match(strategies, last) && player.hasWalkSteps())
    			return false;
    		else if (last != null && match(strategies, last) && !player.hasWalkSteps()) {
    			for (int i = 0; i < strategies.length; i++) {
    				RouteStrategy strategy = strategies[i];
    				int steps = RouteFinder.findRoute(RouteFinder.WALK_ROUTEFINDER, player.getX(), player.getY(), player.getPlane(), player.getSize(), strategy, i == (strategies.length - 1));
    				if (steps == -1)
    					continue;
    				if ((!RouteFinder.lastIsAlternative() && steps <= 0) || alternative) {
    					if (alternative)
    						player.getPackets().sendResetMinimapFlag();
    					event.run();
    					return true;
    				}
    			}
    
    			player.getPackets().sendGameMessage("You can't reach that.");
    			player.getPackets().sendResetMinimapFlag();
    			return true;
    		} else {
    			last = strategies;
    
    			for (int i = 0; i < strategies.length; i++) {
    				RouteStrategy strategy = strategies[i];
    				int steps = RouteFinder.findRoute(RouteFinder.WALK_ROUTEFINDER, player.getX(), player.getY(), player.getPlane(), player.getSize(), strategy, i == (strategies.length - 1));
    				if (steps == -1)
    					continue;
    				if ((!RouteFinder.lastIsAlternative() && steps <= 0)) {
    					if (alternative)
    						player.getPackets().sendResetMinimapFlag();
    					event.run();
    					return true;
    				}
    				int[] bufferX = RouteFinder.getLastPathBufferX();
    				int[] bufferY = RouteFinder.getLastPathBufferY();
    
    				WorldTile last = new WorldTile(bufferX[0], bufferY[0], player.getPlane());
    				player.resetWalkSteps();
    				player.getPackets().sendMinimapFlag(
    						last.getLocalX(player.getLastLoadedMapRegionTile(),
    								player.getMapSize()),
    						last.getLocalY(player.getLastLoadedMapRegionTile(),
    								player.getMapSize()));
    				if (player.isFrozen())
    					return false;
    				for (int step = steps - 1; step >= 0; step--) {
    					if (!player.addWalkSteps(bufferX[step], bufferY[step], 25, true))
    						break;
    				}
    
    				return false;
    			}
    
    			player.getPackets().sendGameMessage("You can't reach that.");
    			player.getPackets().sendResetMinimapFlag();
    			return true;
    		}
    	}
    
    	private boolean simpleCheck(Player player) {
    		if (object instanceof Entity) {
    			return player.getPlane() == ((Entity) object).getPlane();
    		} else if (object instanceof WorldObject) {
    			return player.getPlane() == ((WorldObject) object).getPlane();
    		} else if (object instanceof FloorItem) {
    			return player.getPlane() == ((FloorItem) object).getTile().getPlane();
    		} else {
    			throw new RuntimeException(object + " is not instanceof any reachable entity.");
    		}
    	}
    
    	private RouteStrategy[] generateStrategies() {
    		if (object instanceof Entity) {
    			return new RouteStrategy[]
    			{ new EntityStrategy((Entity) object) };
    		} else if (object instanceof WorldObject) {
    			return new RouteStrategy[]
    			{ new ObjectStrategy((WorldObject) object) };
    		} else if (object instanceof FloorItem) {
    			FloorItem item = (FloorItem) object;
    			return new RouteStrategy[]
    			{ new FixedTileStrategy(item.getTile().getX(), item.getTile().getY()), new FloorItemStrategy(item) };
    		} else {
    			throw new RuntimeException(object + " is not instanceof any reachable entity.");
    		}
    	}
    
    	private boolean match(RouteStrategy[] a1, RouteStrategy[] a2) {
    		if (a1.length != a2.length)
    			return false;
    		for (int i = 0; i < a1.length; i++)
    			if (!a1[i].equals(a2[i]))
    				return false;
    		return true;
    	}
    
    }
    Attached image
    Reply With Quote  
     

  4. #4  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,788
    Thanks given
    706
    Thanks received
    702
    Rep Power
    570
    Where are you creating the RouteEvent?
    Project thread
    Reply With Quote  
     

  5. #5  
    Registered Member
    Join Date
    May 2012
    Posts
    989
    Thanks given
    19
    Thanks received
    28
    Rep Power
    0
    clanwarsrequestcontroller
    polypore creature
    flooritemhandler
    inventoryoptionshandler
    npchandler
    objecthandler
    gamepacketdecoder
    is the classes thats using setrouteevent
    now i put if(object == null)
    return false; for now so that seems to be working but thats not a real fix so not sure what the issue is.
    Attached image
    Reply With Quote  
     

  6. #6  
    Donator


    Join Date
    Jul 2013
    Posts
    1,233
    Thanks given
    1
    Thanks received
    493
    Rep Power
    0
    Quote Originally Posted by oblivion742 View Post
    clanwarsrequestcontroller
    polypore creature
    flooritemhandler
    inventoryoptionshandler
    npchandler
    objecthandler
    gamepacketdecoder
    is the classes thats using setrouteevent
    now i put if(object == null)
    return false; for now so that seems to be working but thats not a real fix so not sure what the issue is.
    What are you clicking for it to come up? A floor item, world object, player/npc?
    Reply With Quote  
     

  7. #7  
    Registered Member
    Join Date
    May 2012
    Posts
    989
    Thanks given
    19
    Thanks received
    28
    Rep Power
    0
    could be an object im not sure cause my players are doing it when im not on which kicks them out so not sure what it is.
    Attached image
    Reply With Quote  
     

  8. #8  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,788
    Thanks given
    706
    Thanks received
    702
    Rep Power
    570
    Quote Originally Posted by oblivion742 View Post
    could be an object im not sure cause my players are doing it when im not on which kicks them out so not sure what it is.
    Huh can you post all the 5 or so classes from with RouteEvent is set? I'll check them out.
    Project thread
    Reply With Quote  
     

  9. #9  
    Donator


    Join Date
    Jul 2013
    Posts
    1,233
    Thanks given
    1
    Thanks received
    493
    Rep Power
    0
    Assuming you're using MGI's pathfinding from CX, Check the route events for the following to see if they match mine:

    Floor Item pickup:


    Object Route:


    NPC Route:
    Reply With Quote  
     

  10. #10  
    Registered Member
    Join Date
    May 2012
    Posts
    989
    Thanks given
    19
    Thanks received
    28
    Rep Power
    0
    all of those methods look different compared to the mx3 route finder system.
    Attached image
    Reply With Quote  
     

Page 1 of 6 123 ... LastLast

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. Replies: 25
    Last Post: 11-01-2015, 05:57 AM
  2. Replies: 6
    Last Post: 02-13-2015, 10:20 AM
  3. Cache Problem 742
    By dragonmage in forum Help
    Replies: 2
    Last Post: 05-20-2013, 07:29 PM
  4. DC problem 742
    By SwagRS in forum Help
    Replies: 8
    Last Post: 04-11-2013, 05:56 PM
  5. 742 Cache SafeMode and Software problem
    By _jordan in forum Help
    Replies: 16
    Last Post: 12-28-2012, 11:15 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
  •