Thread: removing objects

Page 2 of 2 FirstFirst 12
Results 11 to 18 of 18
  1. #11  
    Registered Member
    Join Date
    Nov 2012
    Posts
    599
    Thanks given
    14
    Thanks received
    54
    Rep Power
    26
    Quote Originally Posted by Santa Hat View Post
    Code:
    package com.rs.utils;
    
    import com.rs.game.World;
    import com.rs.game.WorldObject;
    import com.rs.game.WorldTile;
    
    import java.io.*;
    
    public class ObjectRemover {
    
    	public static void loadRemovedObjects() {
    		try (BufferedReader br = new BufferedReader(new FileReader("data/objects/objects.txt"))) {
    			String sCurrentLine;
    			while ((sCurrentLine = br.readLine()) != null) {
    				String[] words = sCurrentLine.split(", ");
    				WorldObject object = new WorldObject(Integer.valueOf(words[0]), Integer.valueOf(words[1]), Integer.valueOf(words[2]), new WorldTile(Integer.valueOf(words[3]), Integer.valueOf(words[4]), Integer.valueOf(words[5])));
    				World.deleteObject(object);
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		} 
    	}
    	
    	public static void printObject(WorldObject object) {
    		File file = new File("data/objects/objects.txt");
    		BufferedWriter writer;
    		try {
    			writer = new BufferedWriter(new FileWriter(file, true));
    			writer.write(object.getId() + ", " + object.getType() + ", " + object.getRotation() +", "+object.getX()+", "+object.getY()+", "+object.getPlane());
    			writer.newLine();
    			writer.flush();
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		World.removeObject(object, true);
    	}
    	
    }
    Add that class into the "utils" folder, you can call the printObject function from anywhere like a command.

    Then call
    Code:
    ObjectRemover.loadRemovedObjects();
    in the Launcher class within the main function, then you can add a file within "data/objects/objects.txt" and add all the objects you want to remove in there, don't mess around with hundreds of if statements bro.

    Example data within the objects.txt file

    Code:
    17311, 10, 0, 3359, 3339, 0
    17311, 10, 0, 3358, 3339, 0
    hmm idk what im doing wrong the objects are not being removed?
    Reply With Quote  
     

  2. #12  
    Registered Member Defuse's Avatar
    Join Date
    Jun 2020
    Posts
    18
    Thanks given
    0
    Thanks received
    3
    Rep Power
    41
    at region.java add this easy way to remove object via coordinates

    public void checkLoadMap() {
    if (getLoadMapStage() == 0) {
    setLoadMapStage(1);
    CoresManager.slowExecutor.execute(new Runnable() {
    @Override
    public void run() {
    try {
    loadRegionMap();
    setLoadMapStage(2);
    if (!isLoadedObjectSpawns()) {
    loadObjectSpawns();
    setLoadedObjectSpawns(true);
    }
    if (getAllObjects() != null) //bork
    for (WorldObject o : getAllObjects()) {
    if (o == null)
    continue;
    if (o.getX() == 2824 && o.getY() == 3861 && o.getPlane() == 1) {
    World.removeObject(o, true);
    }
    }
    //for (WorldObject o : getAllObjects()) {
    // WorldObject sampleBarrier = new WorldObject(1, 10, 1, 123, 123, 0);
    // if(o != null && o != sampleBarrier)
    // World.spawnObject(new WorldObject(1, 10, 1, 123, 123, 0));
    //}
    if (!isLoadedNPCSpawns()) {
    loadNPCSpawns();
    setLoadedNPCSpawns(true);
    }
    } catch (Throwable e) {
    Logger.handle(e);
    }
    }
    });
    }
    }
    Attached image
    Reply With Quote  
     

  3. #13  
    Success is the worst teacher

    Santa Hat's Avatar
    Join Date
    Oct 2012
    Age
    27
    Posts
    3,334
    Thanks given
    807
    Thanks received
    1,185
    Rep Power
    190
    Quote Originally Posted by khayam View Post
    hmm idk what im doing wrong the objects are not being removed?
    Try replace your addObject function in Region class with

    Code:
    	public void addObject(WorldObject object, int plane, int localX, int localY) {
    		if(World.restrictedTiles != null){
    			for(WorldObject restrictedTile : World.restrictedTiles){
    				if(restrictedTile != null){
    					int restX = restrictedTile.getX(), restY = restrictedTile.getY();
    					int restPlane = restrictedTile.getPlane();
    					if(object.getX() == restX && object.getY() == restY && object.getPlane() == restPlane){
    						World.spawnObject(new WorldObject(-1, restrictedTile.getType(), restrictedTile.getRotation(), restrictedTile.getX(), restrictedTile.getY(), restrictedTile.getPlane()), false);
    						return;
    					}
    				}
    			}
    		}
    		addMapObject(object, localX, localY);
    		if (objects == null)
    			objects = new WorldObject[4][64][64][];
    		WorldObject[] tileObjects = objects[plane][localX][localY];
    		if (tileObjects == null)
    			objects[plane][localX][localY] = new WorldObject[] { object };
    		else {
    			WorldObject[] newTileObjects = new WorldObject[tileObjects.length + 1];
    			newTileObjects[tileObjects.length] = object;
    			System.arraycopy(tileObjects, 0, newTileObjects, 0, tileObjects.length);
    			objects[plane][localX][localY] = newTileObjects;
    		}
    	}


    Reply With Quote  
     

  4. #14  
    Registered Member
    Join Date
    Nov 2012
    Posts
    599
    Thanks given
    14
    Thanks received
    54
    Rep Power
    26
    Quote Originally Posted by Santa Hat View Post
    Try replace your addObject function in Region class with

    Code:
    	public void addObject(WorldObject object, int plane, int localX, int localY) {
    		if(World.restrictedTiles != null){
    			for(WorldObject restrictedTile : World.restrictedTiles){
    				if(restrictedTile != null){
    					int restX = restrictedTile.getX(), restY = restrictedTile.getY();
    					int restPlane = restrictedTile.getPlane();
    					if(object.getX() == restX && object.getY() == restY && object.getPlane() == restPlane){
    						World.spawnObject(new WorldObject(-1, restrictedTile.getType(), restrictedTile.getRotation(), restrictedTile.getX(), restrictedTile.getY(), restrictedTile.getPlane()), false);
    						return;
    					}
    				}
    			}
    		}
    		addMapObject(object, localX, localY);
    		if (objects == null)
    			objects = new WorldObject[4][64][64][];
    		WorldObject[] tileObjects = objects[plane][localX][localY];
    		if (tileObjects == null)
    			objects[plane][localX][localY] = new WorldObject[] { object };
    		else {
    			WorldObject[] newTileObjects = new WorldObject[tileObjects.length + 1];
    			newTileObjects[tileObjects.length] = object;
    			System.arraycopy(tileObjects, 0, newTileObjects, 0, tileObjects.length);
    			objects[plane][localX][localY] = newTileObjects;
    		}
    	}
    i get 2 errors when i add that:

    http://prntscr.com/swuvly
    http://prntscr.com/swuvqt
    Reply With Quote  
     

  5. #15  
    Success is the worst teacher

    Santa Hat's Avatar
    Join Date
    Oct 2012
    Age
    27
    Posts
    3,334
    Thanks given
    807
    Thanks received
    1,185
    Rep Power
    190
    Quote Originally Posted by khayam View Post
    I changed the ArrayList to contain WorldObject instead of WorldTile, so I can store the objects rotation, type etc..

    Code:
    	
    	public static List<WorldObject> restrictedTiles = new ArrayList<WorldObject>();
    	
    	public static void deleteObject(WorldObject object){
    		restrictedTiles.add(object);
    	}
    do you have a function "addMapObject" in Region?


    Reply With Quote  
     

  6. Thankful user:


  7. #16  
    Registered Member
    Join Date
    Nov 2012
    Posts
    599
    Thanks given
    14
    Thanks received
    54
    Rep Power
    26
    No im missing that method could you provide pls?
    Reply With Quote  
     

  8. #17  
    Success is the worst teacher

    Santa Hat's Avatar
    Join Date
    Oct 2012
    Age
    27
    Posts
    3,334
    Thanks given
    807
    Thanks received
    1,185
    Rep Power
    190
    Quote Originally Posted by khayam View Post
    No im missing that method could you provide pls?
    I imagine you have it, it's probably called something else

    Code:
    	public void addMapObject(WorldObject object, int x, int y) {
    		if (map == null)
    			map = new RegionMap(regionId, false);
    		if (clipedOnlyMap == null)
    			clipedOnlyMap = new RegionMap(regionId, true);
    		int plane = object.getPlane();
    		int type = object.getType();
    		int rotation = object.getRotation();
    		if (x < 0 || y < 0 || x >= map.getMasks()[plane].length || y >= map.getMasks()[plane][x].length)
    			return;
    		ObjectDefinitions objectDefinition = ObjectDefinitions.getObjectDefinitions(object.getId()); // load
    																										// here
    
    		if (type == 22 ? objectDefinition.getClipType() != 0 : objectDefinition.getClipType() == 0)
    			return;
    		if (type >= 0 && type <= 3) {
    			map.addWall(plane, x, y, type, rotation, objectDefinition.isProjectileCliped(), true);
    			if (objectDefinition.isProjectileCliped())
    				clipedOnlyMap.addWall(plane, x, y, type, rotation, objectDefinition.isProjectileCliped(), true);
    		} else if (type >= 9 && type <= 21) {
    			int sizeX;
    			int sizeY;
    			if (rotation != 1 && rotation != 3) {
    				sizeX = objectDefinition.getSizeX();
    				sizeY = objectDefinition.getSizeY();
    			} else {
    				sizeX = objectDefinition.getSizeY();
    				sizeY = objectDefinition.getSizeX();
    			}
    			map.addObject(plane, x, y, sizeX, sizeY, objectDefinition.isProjectileCliped(), true);
    			if (objectDefinition.isProjectileCliped())
    				clipedOnlyMap.addObject(plane, x, y, sizeX, sizeY, objectDefinition.isProjectileCliped(), true);
    		} else if (type == 22) {
    			// map.addFloor(plane, x, y);
    		}
    	}


    Reply With Quote  
     

  9. #18  
    Registered Member
    Join Date
    Nov 2012
    Posts
    599
    Thanks given
    14
    Thanks received
    54
    Rep Power
    26
    Quote Originally Posted by Santa Hat View Post
    I imagine you have it, it's probably called something else

    Code:
    	public void addMapObject(WorldObject object, int x, int y) {
    		if (map == null)
    			map = new RegionMap(regionId, false);
    		if (clipedOnlyMap == null)
    			clipedOnlyMap = new RegionMap(regionId, true);
    		int plane = object.getPlane();
    		int type = object.getType();
    		int rotation = object.getRotation();
    		if (x < 0 || y < 0 || x >= map.getMasks()[plane].length || y >= map.getMasks()[plane][x].length)
    			return;
    		ObjectDefinitions objectDefinition = ObjectDefinitions.getObjectDefinitions(object.getId()); // load
    																										// here
    
    		if (type == 22 ? objectDefinition.getClipType() != 0 : objectDefinition.getClipType() == 0)
    			return;
    		if (type >= 0 && type <= 3) {
    			map.addWall(plane, x, y, type, rotation, objectDefinition.isProjectileCliped(), true);
    			if (objectDefinition.isProjectileCliped())
    				clipedOnlyMap.addWall(plane, x, y, type, rotation, objectDefinition.isProjectileCliped(), true);
    		} else if (type >= 9 && type <= 21) {
    			int sizeX;
    			int sizeY;
    			if (rotation != 1 && rotation != 3) {
    				sizeX = objectDefinition.getSizeX();
    				sizeY = objectDefinition.getSizeY();
    			} else {
    				sizeX = objectDefinition.getSizeY();
    				sizeY = objectDefinition.getSizeX();
    			}
    			map.addObject(plane, x, y, sizeX, sizeY, objectDefinition.isProjectileCliped(), true);
    			if (objectDefinition.isProjectileCliped())
    				clipedOnlyMap.addObject(plane, x, y, sizeX, sizeY, objectDefinition.isProjectileCliped(), true);
    		} else if (type == 22) {
    			// map.addFloor(plane, x, y);
    		}
    	}
    thanks, you was right i actually already have that method was just name different
    Reply With Quote  
     

  10. Thankful user:


Page 2 of 2 FirstFirst 12

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. need remove object thingy
    By Santaher0 in forum Requests
    Replies: 4
    Last Post: 04-14-2009, 12:44 PM
  2. How do i remove objects?
    By ryannathans in forum Help
    Replies: 3
    Last Post: 03-25-2009, 08:43 AM
  3. removing objects
    By Darkie in forum Help
    Replies: 1
    Last Post: 02-07-2009, 07:17 PM
  4. Removing Objects in Dev 7 Souce?????
    By helcast in forum Tutorials
    Replies: 4
    Last Post: 01-26-2008, 08:12 AM
  5. Removing Objects In An Area (UNTESTED)
    By Llama in forum Tutorials
    Replies: 10
    Last Post: 06-21-2007, 09:33 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
  •