Thread: My server area tool.

Page 3 of 3 FirstFirst 123
Results 21 to 30 of 30
  1. #21  
    WVWVWVWVWVWVWVW

    _jordan's Avatar
    Join Date
    Nov 2012
    Age
    23
    Posts
    2,865
    Thanks given
    62
    Thanks received
    1,530
    Discord
    View profile
    Rep Power
    5000
    Looks great

    Spoiler for signature:
    When your vision is crystal clear, they say it's razor-sharp
    A focused mind is said to be like a knife, but the scalpel is wisdom
    All one can do is accept that life is a double-edged sword
    Stay on the edge

    -



    Reply With Quote  
     

  2. Thankful user:


  3. #22  
    Registered Member
    Teemuzz's Avatar
    Join Date
    Oct 2009
    Posts
    2,710
    Thanks given
    1,132
    Thanks received
    400
    Rep Power
    701


    Finished tile flags! Now loading bridges and al kharid/canifis NPCs and buildings properly!


    Edit: Finished NPC encoding... This will be released for public use soon.
    I'm back.
    ScapeEmulator #592 Convert [Only registered and activated users can see links. ]/[Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  4. #23  
    Community Veteran

    mige5's Avatar
    Join Date
    Aug 2008
    Posts
    5,322
    Thanks given
    546
    Thanks received
    1,129
    Discord
    View profile
    Rep Power
    1806
    ur water color looks way too dark (though just a minor thing)? - looks like this on mine (which I guess is how it should look like):


    - anyway, thats great progress u have made so far.
    ...
    Reply With Quote  
     

  5. Thankful user:


  6. #24  
    Registered Member
    Teemuzz's Avatar
    Join Date
    Oct 2009
    Posts
    2,710
    Thanks given
    1,132
    Thanks received
    400
    Rep Power
    701
    Quote Originally Posted by Cedia View Post
    wow looks really nice so far man. One question though, will this be released as a open source tool?
    Yeah.
    Quote Originally Posted by mige5 View Post
    ur water color looks way too dark (though just a minor thing)? - looks like this on mine (which I guess is how it should look like):


    - anyway, thats great progress u have made so far.

    Thanks mige! The watercolor problem could be on my drawing. I don't know how to handle the definitions right.. Might get to them later on. Need to finish saving the area data first.
    I'm back.
    ScapeEmulator #592 Convert [Only registered and activated users can see links. ]/[Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  7. #25  
    anInt69

    Max _'s Avatar
    Join Date
    Feb 2012
    Age
    23
    Posts
    1,814
    Thanks given
    428
    Thanks received
    727
    Rep Power
    599
    Quote Originally Posted by Pea2nuts View Post
    open source?
    He said yes above
    Reply With Quote  
     

  8. Thankful users:


  9. #26  
    Registered Member
    Teemuzz's Avatar
    Join Date
    Oct 2009
    Posts
    2,710
    Thanks given
    1,132
    Thanks received
    400
    Rep Power
    701



    Okay, running some release tests now. For 600+ (tested using a 614 cache) loading, you need newer NPC Definitions (loading the newer data) And possibly trackdef/enumtype loaders for newer versions. For 666(?) + revisions you need ref7 support, which i'll add later on if it isn't added by the community. I'll provide the source for the cache system (ripped from the client) later on.

    EDIT: Finished automated borderline calculation (easy, but added.)

    Need to do: Trackdefinition thingies, npc defs, etc etc.

    Expect a release in 48 hours.
    EDIT: Decided to take a roadtrip with a friend. Re-expect a release within 48 hours.
    I'm back.
    ScapeEmulator #592 Convert [Only registered and activated users can see links. ]/[Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  10. #27  
    Registered Member
    Polish Civil's Avatar
    Join Date
    May 2010
    Age
    25
    Posts
    1,338
    Thanks given
    445
    Thanks received
    187
    Discord
    View profile
    Rep Power
    441
    Dem sprite sizes are big xDDd

    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  11. #28  
    Registered Member
    Teemuzz's Avatar
    Join Date
    Oct 2009
    Posts
    2,710
    Thanks given
    1,132
    Thanks received
    400
    Rep Power
    701
    Quote Originally Posted by Pea2nuts View Post
    If you are interested in adding the map icons/scenes before you release here is some useful information:

    in object def opcode 107 is the ID of the worldmaptype (index 2 archive 36)

    Here is the worldmaptype from 831:
    Code:
    package com.jagex.game.runetek5.config.worldmaptype;
    
    import java.nio.ByteBuffer;
    import java.util.HashMap;
    import java.util.Hashtable;
    import java.util.logging.Logger;
    
    import net.openrs.util.ByteBufferUtils;
    
    
    public class WorldMapType {
    	
        private static final Logger logger = Logger.getLogger(WorldMapType.class.getName());
        int transVar;
        public int anInt2274;
        public int minimapSprite = -1;
        public int worldmapSprite = -1;
        public int anInt2277 = -1;
        public int anInt2278;
        public int anInt2279;
        public int fontType = 0;
        int anInt2281;
        int anInt2282;
        public int anInt2284;
        public boolean aBool2286 = true;
        public String[] aStringArray2288;
        public String aString2289;
        int anInt2290;
        int anInt2291;
        public int minimapScale;
        public boolean aBool2294 = false;
        int anInt2295;
        int anInt2296;
        int anInt2297;
        int transVarBit;
        public int[] transforms;
        public int[] anIntArray2300;
        public int anInt2301;
        public int anInt2302;
        public int anInt2303;
        public int anInt2304;
        public int anInt2305;
        public int anInt2306;
        public int textColour;
        public int anInt2308;
        public int anInt2311;
        public int anInt2312;
        public int[] anIntArray2313;
        public byte[] aByteArray2314;
        public String text;
        public int anInt2316;
        public boolean aBool2317;
        HashMap<Integer, Object> params;
        public int anInt2319;
    	public int unknownType2;
    	public int unknownType1;
        
    	protected void decode(ByteBuffer buffer) {
    		while (true) {
    			int opcode = buffer.get() & 0xFF;
    			if (opcode == 0)
    				return;
    			decode(buffer, opcode);
    		}
    	}
    	
        protected void decode(ByteBuffer buffer, int opcode) {
    		if (opcode == 1) {
    		    minimapSprite = ByteBufferUtils.getSmartInt(buffer);
    		} else if (opcode == 2) {
    		    worldmapSprite = ByteBufferUtils.getSmartInt(buffer);
    		} else if (opcode == 3) {
    		    text = ByteBufferUtils.readString(buffer);
    		} else if (opcode == 4) {
    		    textColour = ByteBufferUtils.getMedium(buffer);
    		} else if (opcode == 5) {
    		    anInt2277 = ByteBufferUtils.getMedium(buffer);
    		} else if (opcode == 6) {
    		    fontType = buffer.get() & 0xFF;
    		} else if (7 == opcode) {
    		    int i_3_ = buffer.get() & 0xFF;
    		    if ((i_3_ & 0x1) == 0) {
    		    	aBool2286 = false;
    		    }
    		    if (2 == (i_3_ & 0x2)) {
    		    	aBool2294 = true;
    		    }
    		} else if (opcode == 8) {
    			buffer.get();
    		} else if (9 == opcode) {
    		    transVarBit = buffer.getShort() & 0xFFFF;
    		    if (transVarBit == 65535) {
    		    	transVarBit = -1;
    		    }
    		    transVar = buffer.getShort() & 0xFFFF;
    		    if (transVar == 65535) {
    		    	transVar = -1;
    		    }
    		    anInt2291 = buffer.getInt();
    		    anInt2281 = buffer.getInt();
    		} else if (opcode >= 10 && opcode <= 14) {
    		    aStringArray2288[opcode - 10] = ByteBufferUtils.readString(buffer);
    		} else if (opcode == 15) {
    		    int i_4_ = buffer.get() & 0xFF;
    		    anIntArray2300 = new int[i_4_ * 2];
    		    for (int i_5_ = 0; i_5_ < 2 * i_4_; i_5_++) {
    		    	anIntArray2300[i_5_] = buffer.getShort();
    		    }
    		    anInt2305 = buffer.getInt();
    		    int i_6_ = buffer.get() & 0xFF;
    		    anIntArray2313 = new int[i_6_];
    		    for (int i_7_ = 0; i_7_ < anIntArray2313.length; i_7_++) {
    		    	anIntArray2313[i_7_] = buffer.getInt();
    		    }
    		    aByteArray2314 = new byte[i_4_];
    		    for (int i_8_ = 0; i_8_ < i_4_; i_8_++) {
    		    	aByteArray2314[i_8_] = buffer.get();
    		    }
    		} else if (16 == opcode) {
    		    aBool2317 = false;
    		} else if (17 == opcode) {
    		    aString2289 = ByteBufferUtils.readString(buffer);
    		} else if (18 == opcode) {
    		    anInt2290 = ByteBufferUtils.getSmartInt(buffer);
    		} else if (19 == opcode) {
    		    anInt2278 = buffer.getShort() & 0xFFFF;
    		} else if (20 == opcode) {
    		    anInt2297 = buffer.getShort() & 0xFFFF;
    		    if (anInt2297 == 65535) {
    		    	anInt2297 = -1;
    		    }
    		    anInt2282 = buffer.getShort() & 0xFFFF;
    		    if (65535 == anInt2282) {
    		    	anInt2282 = -1;
    		    }
    		    anInt2295 = buffer.getInt();
    		    anInt2296 = buffer.getInt();
    		} else if (21 == opcode) {
    		    anInt2279 = buffer.getInt();
    		} else if (opcode == 22) {
    		    anInt2316 = buffer.getInt();
    		} else if (23 == opcode) {
    		    anInt2306 = buffer.get() & 0xFF;
    		    anInt2311 = buffer.get() & 0xFF;
    		    anInt2308 = buffer.get() & 0xFF;
    		} else if (24 == opcode) {
    		    anInt2284 = buffer.getShort();
    		    anInt2312 = buffer.getShort();
    		} else if (opcode == 25) {
    		    anInt2319 = ByteBufferUtils.getSmartInt(buffer);
    		} else if (26 == opcode || opcode == 27) {
    		    transVarBit = buffer.getShort() & 0xFFFF;
    		    if (transVarBit == 65535) {
    		    	transVarBit = -1;
    		    }
    		    transVar = buffer.getShort() & 0xFFFF;
    		    if (65535 == transVar) {
    		    	transVar = -1;
    		    }
    		    int i_9_ = -1;
    		    if (27 == opcode) {
    				i_9_ = buffer.getShort() & 0xFFFF;
    				if (65535 == i_9_) {
    				    i_9_ = -1;
    				}
    		    }
    		    int i_10_ = buffer.get() & 0xFF;
    		    transforms = new int[i_10_ + 2];
    		    for (int i_11_ = 0; i_11_ <= i_10_; i_11_++) {
    				transforms[i_11_] = buffer.getShort() & 0xFFFF;
    				if (transforms[i_11_] == 65535) {
    				    transforms[i_11_] = -1;
    				}
    		    }
    		    transforms[i_10_ + 1] = i_9_;
    		} else if (opcode == 28) {
    		    minimapScale = buffer.get() & 0xFF;
    		} else if (29 == opcode) {
    		    unknownType1 = buffer.get() & 0xFF;
    		} else if (30 == opcode) {
    		    unknownType2 = buffer.get() & 0xFF;
    		} else if (opcode == 249) {
    			int length = buffer.get() & 0xFF;
    		    if (null == params) {
    				params = new HashMap<Integer, Object>(length);
    		    }
    			for (int index = 0; index < length; index++) {
    				boolean stringInstance = (buffer.get() & 0xFF) == 1;
    				int key = ByteBufferUtils.getMedium(buffer);
    				Object val;
    				if (stringInstance) {
    					val = ByteBufferUtils.readString(buffer);
    				} else {
    					val = buffer.getInt();
    				}
    				params.put(key, val);
    			}
    		} else {
    			logger.info("Error unrecognised .worldmap config code: {" + opcode + "}");
    		}
        }
        
        protected void postDecode() {
    		if (anIntArray2300 != null) {
    		    for (int i_16_ = 0; i_16_ < anIntArray2300.length; i_16_ += 2) {
    				if (anIntArray2300[i_16_] < anInt2301) {
    				    anInt2301 = anIntArray2300[i_16_];
    				} else if (anIntArray2300[i_16_] > anInt2303) {
    				    anInt2303 = anIntArray2300[i_16_];
    				}
    				if (anIntArray2300[1 + i_16_] < anInt2302) {
    				    anInt2302 = anIntArray2300[1 + i_16_];
    				} else if (anIntArray2300[1 + i_16_] > anInt2304) {
    				    anInt2304 = anIntArray2300[1 + i_16_];
    				}
    		    }
    		}
        }
        
        WorldMapType(int i) {
    		aStringArray2288 = new String[5];
    		anInt2290 = -1;
    		anInt2291 = -1;
    		anInt2281 = -1;
    		transVarBit = -1;
    		transVar = -1;
    		anInt2297 = -1;
    		anInt2282 = -1;
    		transforms = null;
    		anInt2301 = 2147483647;
    		anInt2302 = 2147483647;
    		anInt2303 = -2147483648;
    		anInt2304 = -2147483648;
    		anInt2306 = -1;
    		anInt2311 = -1;
    		anInt2308 = -1;
    		minimapScale = -1;
    		aBool2317 = true;
    		anInt2278 = -1;
    		anInt2319 = -1;
    		anInt2274 = i;
        }
    }
    opcode 1 is the archive ID in index 8 of the minimap icon
    please note pre 800 was readUnsignedShort instead of getSmartInt for everything that uses getSmartInt
    besides that the definitions should work on all versions


    Now in object def opcode 102 is the mapscenetype id (index 2 archive 34)

    Here is the mapscenetype from 831:
    Code:
    package com.jagex.game.runetek5.config.mapscenetype;
    
    import java.nio.ByteBuffer;
    import java.util.logging.Logger;
    
    import net.openrs.util.ByteBufferUtils;
    
    
    public class MapSceneType {
    	
    	private static final Logger logger = Logger.getLogger(MapSceneType.class.getName());
    	public int spriteId;
    	public int color;
    	public boolean enlarge = false;
    	
    	protected void decode(ByteBuffer buffer, int opcode) {
    		if (opcode == 1)
    			spriteId = ByteBufferUtils.getSmartInt(buffer);
    		else if (opcode == 2)
    			color = ByteBufferUtils.getMedium(buffer);
    		else if (opcode == 3)
    			enlarge = true;
    		else if (opcode == 4)
    			spriteId = -1;
    		else
    			logger.info("Error unrecognised .mapscene config code: {" + opcode + "}");
    	}
    	
    	protected void decode(ByteBuffer buffer) {
    		while (true) {
    			int opcode = buffer.get() & 0xFF;
    			if (opcode == 0)
    				return;
    			decode(buffer, opcode);
    		}
    	}
    }
    opcode 1 is the archive id in index8 for the sprite
    The same goes for the fact that pre800 used unsigned short instead of smartInt

    some more info is that in objectdef, opcode 101 is the mapscene icons rotation and opcode 105 is whether it should be flipped vertically
    Thanks, just as i can't be arsed to do sprites yet. I do have the mapicons already refactored on the client i use, but haven't done landscape loading nor landscape definitions. :v





    Finished loading 614 npc definitions.. maybe i'll find a 666+ npc definitions loader and i'll use it.. Don't know yet

    Also testing this on the 530 cache, should be working, but idk Might have differences on some stuffs

    530 works. Now if someone told me what index has NPC Definitions in the osrs cache, i'd be happy!
    I'm back.
    ScapeEmulator #592 Convert [Only registered and activated users can see links. ]/[Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  12. #29  
    Registered Member
    Teemuzz's Avatar
    Join Date
    Oct 2009
    Posts
    2,710
    Thanks given
    1,132
    Thanks received
    400
    Rep Power
    701
    [Only registered and activated users can see links. ]
    I'm back.
    ScapeEmulator #592 Convert [Only registered and activated users can see links. ]/[Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  13. #30  
    Apple Computers
    Bridget7298's Avatar
    Join Date
    Aug 2007
    Age
    29
    Posts
    1,085
    Thanks given
    99
    Thanks received
    48
    Rep Power
    231
    Pretty impressive, keep up the good work!
    Reply With Quote  
     

Page 3 of 3 FirstFirst 123

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: 4
    Last Post: 06-06-2013, 10:19 PM
  2. My Area Tool
    By mige5 in forum Show-off
    Replies: 38
    Last Post: 06-23-2012, 10:22 PM
  3. Replies: 0
    Last Post: 03-13-2011, 03:16 AM
  4. All My Server Tools Together!
    By qwertyuiopmun in forum Tools
    Replies: 8
    Last Post: 03-21-2008, 06:42 PM
  5. selling my server for runescape account
    By simmonsja16 in forum RS2 Server
    Replies: 6
    Last Post: 09-04-2007, 02:09 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
  •