Thread: Mini-map icons

Page 2 of 2 FirstFirst 12
Results 11 to 16 of 16
  1. #11  
    Soon to be a Blaziken

    Torchic's Avatar
    Join Date
    Mar 2011
    Age
    29
    Posts
    1,711
    Thanks given
    14
    Thanks received
    452
    Rep Power
    529
    The minimap icons are "invisible" objects (type 22) with a sprite bound to them, but spawning them and editing their coordinates is kind of difficult because they can't be spawned like normal objects. You can however look at the icon loop in the client and modify the coordinates for already existing icons. You can do this by checking for specific x and y coords or by the actual icon id (which can be found in the sprite index, archive 318) If you're looking to add custom icons or move icons around you can check the draw method to write the icons at specific coordinates.

    Reply With Quote  
     

  2. #12  
    Registered Member

    Join Date
    Dec 2009
    Posts
    774
    Thanks given
    367
    Thanks received
    455
    Rep Power
    927
    I don't know how people got to index 5, but maybe it's me, I haven't really done research to this yet.

    In index 2, archive 36 (the so called worldmap information archive), are the properties of the minimap icons defined:

    Code:
    public void decode(byte arg0, Stream arg1, int arg2) {
    		try {
    			anInt1238++;
    			if (arg0 <= 29) {
    				method861(-124);
    			}
    			if (arg2 != 1) {
    				if (arg2 == 2) {
    					hoverSpriteId = arg1.readUnsignedShort(8104);
    				} else if ((arg2 ^ 0xffffffff) == -4) {
    					mapLabel = arg1.readString(false);
    				} else if (arg2 != 4) {
    					if (arg2 != 5) {
    						if (arg2 != 6) {
    							if (arg2 == 7) {
    								int i = arg1.readUnsignedByte(-52);
    								if ((i & 0x2 ^ 0xffffffff) == -3) {
    									isVisible = true;
    								}
    								if ((0x1 & i) == 0) {
    									aBoolean1244 = false;
    								}
    							} else if (arg2 != 8) {
    								if (arg2 == 9) {
    									bitConfigId = arg1.readUnsignedShort(8104);
    									if ((bitConfigId ^ 0xffffffff) == -65536) {
    										bitConfigId = -1;
    									}
    									configId = arg1.readUnsignedShort(8104);
    									if ((configId ^ 0xffffffff) == -65536) {
    										configId = -1;
    									}
    									anInt1249 = arg1.readUnsignedInt(-2);
    									anInt1264 = arg1.readUnsignedInt(-2);
    								} else if (arg2 >= 10 && (arg2 ^ 0xffffffff) >= -15) {
    									clickOptions[arg2 - 10] = arg1.readString(false);
    								} else if (arg2 == 15) {
    									int i = arg1.readUnsignedByte(-22);
    									anIntArray1269 = new int[i * 2];
    									for (int i_1_ = 0; ((i * 2 ^ 0xffffffff) < (i_1_ ^ 0xffffffff)); i_1_++) {
    										anIntArray1269[i_1_] = arg1.readSignedShort(1625554944);
    									}
    									anInt1263 = arg1.readUnsignedInt(-2);
    									anInt1247 = arg1.readUnsignedInt(-2);
    								} else if (arg2 != 16) {
    									if (arg2 != 17) {
    										if ((arg2 ^ 0xffffffff) == -19) {
    											anotherSpriteId = arg1.readUnsignedShort(8104);
    										} else if (arg2 == 19) {
    											anInt1262 = arg1.readUnsignedShort(8104);
    										} else if ((arg2 ^ 0xffffffff) == -21) {
    											anotherBitConfigThingy = arg1.readUnsignedShort(8104);
    											if (anotherBitConfigThingy == 65535) {
    												anotherBitConfigThingy = -1;
    											}
    											basicConfigId = arg1.readUnsignedShort(8104);
    											if ((basicConfigId ^ 0xffffffff) == -65536) {
    												basicConfigId = -1;
    											}
    											anInt1234 = arg1.readUnsignedInt(-2);
    											anInt1265 = arg1.readUnsignedInt(-2);
    										} else if (arg2 != 21) {
    											if ((arg2 ^ 0xffffffff) == -23) {
    												anInt1254 = arg1.readUnsignedInt(-2);
    											}
    										} else {
    											anInt1257 = arg1.readUnsignedInt(-2);
    										}
    									} else {
    										optionEnd = arg1.readString(false);
    									}
    								} else {
    									aBoolean1239 = false;
    								}
    							} else {
    								aBoolean1250 = (arg1.readUnsignedByte(-98) ^ 0xffffffff) == -2;
    							}
    						} else {
    							anInt1256 = arg1.readUnsignedByte(-64);
    						}
    					} else {
    						anInt1268 = arg1.read3Bytes(false);
    					}
    				} else {
    					labelColor = arg1.read3Bytes(false);
    				}
    			} else {
    				mapIconSpriteId = arg1.readUnsignedShort(8104);
    			}
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("kb.D(" + arg0 + ',' + (arg1 != null ? "{...}" : "null") + ',' + arg2 + ')'));
    		}
    	}
    Now, the world map definition class has two methods which create a sprite:
    Code:
    public Sprite method855(int arg0, boolean arg1, GraphicsToolkit toolkit) {
    		try {
    			anInt1255++;
    			int i = !arg1 ? mapIconSpriteId : hoverSpriteId;
    			int i_0_ = i | toolkit.anInt1781 << -2105317123;
    			Sprite class152 = ((Sprite) Node_Sub2.aClass214_4098.get(122, i_0_));
    			if (arg0 != -4379) {
    				return null;
    			}
    			if (class152 != null) {
    				return class152;
    			}
    			if (!Class214.aClass158_3131.method2343(arg0 + 4269, i)) {
    				return null;
    			}
    			SpriteDefinition class124 = SpriteDefinition.getFirstSpriteDefinition(Class214.aClass158_3131, i, 0);
    			if (class124 != null) {
    				class152 = toolkit.createSprite(class124, true);
    				Node_Sub2.aClass214_4098.method2773(true, class152, i_0_);
    			}
    			return class152;
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("kb.B(" + arg0 + ',' + arg1 + ',' + (toolkit != null ? "{...}" : "null") + ')'));
    		}
    	}
    Code:
    	public Sprite method862(GraphicsToolkit arg0, int arg1) {
    		try {
    			anInt1270++;
    			Sprite class152 = ((Sprite) (Node_Sub2.aClass214_4098.get(arg1 + 127, 0x20000 | anotherSpriteId | arg0.anInt1781 << 508290877)));
    			if (arg1 != -1) {
    				anInt1257 = 6;
    			}
    			if (class152 != null) {
    				return class152;
    			}
    			Class214.aClass158_3131.method2343(-119, anotherSpriteId);
    			SpriteDefinition class124 = SpriteDefinition.getFirstSpriteDefinition(Class214.aClass158_3131, anotherSpriteId, 0);
    			if (class124 != null) {
    				class152 = arg0.createSprite(class124, true);
    				Node_Sub2.aClass214_4098.method2773(true, class152, arg0.anInt1781 << 1946935645 | (anotherSpriteId | 0x20000));
    			}
    			return class152;
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("kb.G(" + (arg0 != null ? "{...}" : "null") + ',' + arg1 + ')'));
    		}
    	}
    Here are the drawing methods for both, this is the draw method for the first one:
    Code:
    public static void createWorldMapSprite(int arg0, int arg1, int regionId, GraphicsToolkit toolkit, int arg4, Class183 arg5, int arg6, int arg7, WidgetComponentDefinition componentDefinition) {
    		do {
    			try {
    				anInt1766++;
    				if (arg4 == 2) {
    					WorldMapDefinition worldMapDefinition = Node_Sub2_Sub32.getWorldMapDefinition(regionId, (byte) 1);
    					if (worldMapDefinition == null || !worldMapDefinition.isVisible || !worldMapDefinition.method861(arg4 + -3)) {
    						break;
    					}
    					if (worldMapDefinition.anIntArray1269 != null) {
    						int[] is = new int[worldMapDefinition.anIntArray1269.length];
    						for (int i = 0; (i ^ 0xffffffff) > (is.length / 2 ^ 0xffffffff); i++) {
    							int i_134_;
    							if ((Node_Sub2_Sub34.anInt6035 ^ 0xffffffff) != -5) {
    								i_134_ = (Class148.anInt1982 + (int) Class120.aFloat1578) & 0x3fff;
    							} else {
    								i_134_ = (int) Class120.aFloat1578 & 0x3fff;
    							}
    							int i_135_ = Class31.SINES[i_134_];
    							int i_136_ = Class31.COSINES[i_134_];
    							if (Node_Sub2_Sub34.anInt6035 != 4) {
    								i_135_ = 256 * i_135_ / (256 + Class1_Sub7.anInt3590);
    								i_136_ = i_136_ * 256 / (256 + Class1_Sub7.anInt3590);
    							}
    							is[2 * i] = ((((i_136_ * (arg1 + worldMapDefinition.anIntArray1269[i * 2] * 4)) + (worldMapDefinition.anIntArray1269[1 + i * 2] * 4 + arg6) * i_135_) >> -642431153) + (componentDefinition.renderWidth / 2 + arg7));
    							is[1 + 2 * i] = -(((4 * worldMapDefinition.anIntArray1269[i * 2 + 1] + arg6) * i_136_ - (4 * worldMapDefinition.anIntArray1269[i * 2] + arg1) * i_135_) >> 2000279151) + arg0 + componentDefinition.renderHeight / 2;
    						}
    						Class123.method1070(toolkit, is, worldMapDefinition.anInt1247, componentDefinition.anIntArray2478, componentDefinition.anIntArray2310);
    						for (int i = 0; -1 + is.length / 2 > i; i++) {
    							toolkit.method1226(is[2 * i], is[2 * i - -1], is[(1 + i) * 2], is[1 + (i * 2 + 2)], worldMapDefinition.anInt1263, 1, arg5, arg7, arg0);
    						}
    						toolkit.method1226(is[is.length - 2], is[is.length - 1], is[0], is[1], worldMapDefinition.anInt1263, 1, arg5, arg7, arg0);
    					}
    					Sprite class152 = null;
    					if ((worldMapDefinition.mapIconSpriteId ^ 0xffffffff) != 0) {
    						class152 = worldMapDefinition.method855(-4379, false, toolkit);
    						if (class152 != null) {
    							Node_Sub2_Sub3.method1487(arg7, arg6, arg5, 2, class152, arg0, componentDefinition, arg1);
    						}
    					}
    					if (worldMapDefinition.mapLabel == null) {
    						break;
    					}
    					int i = 0;
    					if (class152 != null) {
    						i = class152.method2204();
    					}
    					Font class44 = Class204.aClass44_2982;
    					FontMetricsDefinition class55 = Class169.aClass55_2269;
    					if ((worldMapDefinition.anInt1256 ^ 0xffffffff) == -2) {
    						class55 = IntegerNode.aClass55_4469;
    						class44 = Class184.aClass44_2633;
    					}
    					if ((worldMapDefinition.anInt1256 ^ 0xffffffff) == -3) {
    						class55 = Class89.aClass55_3259;
    						class44 = Class93.aClass44_1222;
    					}
    					Node_Sub2_Sub1.method1472(componentDefinition, arg1, class55, class44, arg5, i, worldMapDefinition.mapLabel, arg7, arg6, (byte) 45, arg0, worldMapDefinition.labelColor);
    				}
    			} catch (RuntimeException runtimeexception) {
    				throw Node_Sub2_Sub6.method1495(runtimeexception, ("nr.PG(" + arg0 + ',' + arg1 + ',' + regionId + ',' + (toolkit != null ? "{...}" : "null") + ',' + arg4 + ',' + (arg5 != null ? "{...}" : "null") + ',' + arg6 + ',' + arg7 + ',' + (componentDefinition != null ? "{...}" : "null") + ')'));
    			}
    			break;
    		} while (false);
    	}
    As you can see, an interface component is being used, however, in second drawing method, there is no component used:
    Code:
    public static void method1106(GraphicsToolkit toolkit, int arg1, WorldMapDefinition worldMapDefinition, Node_Sub20 arg3) {
    		try {
    			anInt1695++;
    			Sprite class152 = worldMapDefinition.method862(toolkit, -1);
    			if (class152 != null) {
    				int i = class152.method2206();
    				if (class152.method2204() > i) {
    					i = class152.method2204();
    				}
    				int i_0_ = 10;
    				int i_1_ = arg3.anInt4428;
    				int i_2_ = arg3.anInt4429;
    				int i_3_ = 0;
    				int i_4_ = 0;
    				int i_5_ = 0;
    				if (worldMapDefinition.mapLabel != null) {
    					i_3_ = Class169.aClass55_2269.method620(null, 108, worldMapDefinition.mapLabel, (Class1_Sub2.aStringArray3509), null);
    					for (int i_6_ = 0; i_6_ < i_3_; i_6_++) {
    						String string = Class1_Sub2.aStringArray3509[i_6_];
    						if (i_6_ < -1 + i_3_) {
    							string = string.substring(0, -4 + string.length());
    						}
    						int i_7_ = Class67.aClass140_912.method2131(string);
    						if (i_4_ < i_7_) {
    							i_4_ = i_7_;
    						}
    					}
    					i_5_ = (Class67.aClass140_912.method2127() * i_3_ - -(Class67.aClass140_912.method2132() / 2));
    				}
    				int i_8_ = arg3.anInt4428 + i / 2;
    				int i_9_ = arg3.anInt4429;
    				if (i_1_ >= Class127.anInt1737 - -i) {
    					if (i_1_ > Class127.anInt1718 + -i) {
    						i_1_ = Class127.anInt1718 - i;
    						i_8_ = -5 + (-(i_4_ / 2) + Class127.anInt1718 + -(i / 2) + -i_0_);
    					}
    				} else {
    					i_1_ = Class127.anInt1737;
    					i_8_ = 5 + i_4_ / 2 + (i_0_ + (i / 2 + Class127.anInt1737));
    				}
    				if ((i + Class127.anInt1722 ^ 0xffffffff) >= (i_2_ ^ 0xffffffff)) {
    					if (i_2_ > -i + Class127.anInt1719) {
    						i_2_ = Class127.anInt1719 + -i;
    						i_9_ = -i_5_ + (Class127.anInt1719 + (-(i / 2) - i_0_));
    					}
    				} else {
    					i_9_ = i / 2 + (i_0_ + Class127.anInt1722);
    					i_2_ = Class127.anInt1722;
    				}
    				int i_10_ = (0xffff & (int) (32767.0 * (Math.atan2(-arg3.anInt4428 + i_1_, i_2_ + -arg3.anInt4429) / 3.141592653589793)));
    				class152.method2209(i_1_ + i / 2.0F, i_2_ + i / 2.0F, 4096, i_10_);
    				int i_11_ = -2;
    				int i_12_ = -2;
    				int i_13_ = -2;
    				int i_14_ = -2;
    				if (worldMapDefinition.mapLabel != null) {
    					i_11_ = -5 + (-(i_4_ / 2) + i_8_);
    					i_12_ = i_9_;
    					i_13_ = i_11_ + (i_4_ - -10);
    					i_14_ = 3 + (Class67.aClass140_912.method2127() * i_3_ + i_12_);
    					if ((worldMapDefinition.anInt1254 ^ 0xffffffff) != -1) {
    						toolkit.drawFilledPixels(i_13_ + -i_11_, i_14_ + -i_12_, i_11_, i_12_, worldMapDefinition.anInt1254, -92);
    					}
    					if ((worldMapDefinition.anInt1257 ^ 0xffffffff) != -1) {
    						toolkit.method1262(-i_12_ + i_14_, i_11_, -i_11_ + i_13_, false, i_12_, worldMapDefinition.anInt1257);
    					}
    					for (int i_15_ = 0; (i_3_ ^ 0xffffffff) < (i_15_ ^ 0xffffffff); i_15_++) {
    						String string = Class1_Sub2.aStringArray3509[i_15_];
    						if ((-1 + i_3_ ^ 0xffffffff) < (i_15_ ^ 0xffffffff)) {
    							string = string.substring(0, -4 + string.length());
    						}
    						Class67.aClass140_912.method2133(toolkit, string, i_8_, i_9_, worldMapDefinition.labelColor, true);
    						i_9_ += Class67.aClass140_912.method2127();
    					}
    				}
    				if (arg1 != worldMapDefinition.mapIconSpriteId || worldMapDefinition.mapLabel != null) {
    					i >>= 1;
    					Node_Sub42 class131_sub42 = new Node_Sub42(arg3);
    					class131_sub42.anInt4681 = i_2_ + -i;
    					class131_sub42.anInt4684 = -i + i_1_;
    					class131_sub42.anInt4687 = i_1_ + i;
    					class131_sub42.anInt4682 = i_13_;
    					class131_sub42.anInt4680 = i_14_;
    					class131_sub42.anInt4679 = i_12_;
    					class131_sub42.anInt4678 = i_11_;
    					class131_sub42.anInt4690 = i_2_ - -i;
    					Class74.aClass119_1011.method1018((byte) -128, class131_sub42);
    				}
    			}
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("nc.B(" + (toolkit != null ? "{...}" : "null") + ',' + arg1 + ',' + (worldMapDefinition != null ? "{...}" : "null") + ',' + (arg3 != null ? "{...}" : "null") + ')'));
    		}
    	}
    All this code is from a 562 client.
    link removed
    Reply With Quote  
     

  3. Thankful users:


  4. #13  
    Contributor

    clem585's Avatar
    Join Date
    Sep 2013
    Posts
    3,788
    Thanks given
    706
    Thanks received
    702
    Rep Power
    570
    Quote Originally Posted by Admiral Slee View Post
    I don't know how people got to index 5, but maybe it's me, I haven't really done research to this yet.

    In index 2, archive 36 (the so called worldmap information archive), are the properties of the map icons defined:

    Code:
    public void decode(byte arg0, Stream arg1, int arg2) {
    		try {
    			anInt1238++;
    			if (arg0 <= 29) {
    				method861(-124);
    			}
    			if (arg2 != 1) {
    				if (arg2 == 2) {
    					hoverSpriteId = arg1.readUnsignedShort(8104);
    				} else if ((arg2 ^ 0xffffffff) == -4) {
    					mapLabel = arg1.readString(false);
    				} else if (arg2 != 4) {
    					if (arg2 != 5) {
    						if (arg2 != 6) {
    							if (arg2 == 7) {
    								int i = arg1.readUnsignedByte(-52);
    								if ((i & 0x2 ^ 0xffffffff) == -3) {
    									isVisible = true;
    								}
    								if ((0x1 & i) == 0) {
    									aBoolean1244 = false;
    								}
    							} else if (arg2 != 8) {
    								if (arg2 == 9) {
    									bitConfigId = arg1.readUnsignedShort(8104);
    									if ((bitConfigId ^ 0xffffffff) == -65536) {
    										bitConfigId = -1;
    									}
    									configId = arg1.readUnsignedShort(8104);
    									if ((configId ^ 0xffffffff) == -65536) {
    										configId = -1;
    									}
    									anInt1249 = arg1.readUnsignedInt(-2);
    									anInt1264 = arg1.readUnsignedInt(-2);
    								} else if (arg2 >= 10 && (arg2 ^ 0xffffffff) >= -15) {
    									clickOptions[arg2 - 10] = arg1.readString(false);
    								} else if (arg2 == 15) {
    									int i = arg1.readUnsignedByte(-22);
    									anIntArray1269 = new int[i * 2];
    									for (int i_1_ = 0; ((i * 2 ^ 0xffffffff) < (i_1_ ^ 0xffffffff)); i_1_++) {
    										anIntArray1269[i_1_] = arg1.readSignedShort(1625554944);
    									}
    									anInt1263 = arg1.readUnsignedInt(-2);
    									anInt1247 = arg1.readUnsignedInt(-2);
    								} else if (arg2 != 16) {
    									if (arg2 != 17) {
    										if ((arg2 ^ 0xffffffff) == -19) {
    											anotherSpriteId = arg1.readUnsignedShort(8104);
    										} else if (arg2 == 19) {
    											anInt1262 = arg1.readUnsignedShort(8104);
    										} else if ((arg2 ^ 0xffffffff) == -21) {
    											anotherBitConfigThingy = arg1.readUnsignedShort(8104);
    											if (anotherBitConfigThingy == 65535) {
    												anotherBitConfigThingy = -1;
    											}
    											basicConfigId = arg1.readUnsignedShort(8104);
    											if ((basicConfigId ^ 0xffffffff) == -65536) {
    												basicConfigId = -1;
    											}
    											anInt1234 = arg1.readUnsignedInt(-2);
    											anInt1265 = arg1.readUnsignedInt(-2);
    										} else if (arg2 != 21) {
    											if ((arg2 ^ 0xffffffff) == -23) {
    												anInt1254 = arg1.readUnsignedInt(-2);
    											}
    										} else {
    											anInt1257 = arg1.readUnsignedInt(-2);
    										}
    									} else {
    										optionEnd = arg1.readString(false);
    									}
    								} else {
    									aBoolean1239 = false;
    								}
    							} else {
    								aBoolean1250 = (arg1.readUnsignedByte(-98) ^ 0xffffffff) == -2;
    							}
    						} else {
    							anInt1256 = arg1.readUnsignedByte(-64);
    						}
    					} else {
    						anInt1268 = arg1.read3Bytes(false);
    					}
    				} else {
    					labelColor = arg1.read3Bytes(false);
    				}
    			} else {
    				mapIconSpriteId = arg1.readUnsignedShort(8104);
    			}
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("kb.D(" + arg0 + ',' + (arg1 != null ? "{...}" : "null") + ',' + arg2 + ')'));
    		}
    	}
    Now, the world map definition class has two methods which create a sprite:
    Code:
    public Sprite method855(int arg0, boolean arg1, GraphicsToolkit toolkit) {
    		try {
    			anInt1255++;
    			int i = !arg1 ? mapIconSpriteId : hoverSpriteId;
    			int i_0_ = i | toolkit.anInt1781 << -2105317123;
    			Sprite class152 = ((Sprite) Node_Sub2.aClass214_4098.get(122, i_0_));
    			if (arg0 != -4379) {
    				return null;
    			}
    			if (class152 != null) {
    				return class152;
    			}
    			if (!Class214.aClass158_3131.method2343(arg0 + 4269, i)) {
    				return null;
    			}
    			SpriteDefinition class124 = SpriteDefinition.getFirstSpriteDefinition(Class214.aClass158_3131, i, 0);
    			if (class124 != null) {
    				class152 = toolkit.createSprite(class124, true);
    				Node_Sub2.aClass214_4098.method2773(true, class152, i_0_);
    			}
    			return class152;
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("kb.B(" + arg0 + ',' + arg1 + ',' + (toolkit != null ? "{...}" : "null") + ')'));
    		}
    	}
    Code:
    	public Sprite method862(GraphicsToolkit arg0, int arg1) {
    		try {
    			anInt1270++;
    			Sprite class152 = ((Sprite) (Node_Sub2.aClass214_4098.get(arg1 + 127, 0x20000 | anotherSpriteId | arg0.anInt1781 << 508290877)));
    			if (arg1 != -1) {
    				anInt1257 = 6;
    			}
    			if (class152 != null) {
    				return class152;
    			}
    			Class214.aClass158_3131.method2343(-119, anotherSpriteId);
    			SpriteDefinition class124 = SpriteDefinition.getFirstSpriteDefinition(Class214.aClass158_3131, anotherSpriteId, 0);
    			if (class124 != null) {
    				class152 = arg0.createSprite(class124, true);
    				Node_Sub2.aClass214_4098.method2773(true, class152, arg0.anInt1781 << 1946935645 | (anotherSpriteId | 0x20000));
    			}
    			return class152;
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("kb.G(" + (arg0 != null ? "{...}" : "null") + ',' + arg1 + ')'));
    		}
    	}
    Here are the drawing methods for both, this is the draw method for the first one:
    Code:
    public static void createWorldMapSprite(int arg0, int arg1, int regionId, GraphicsToolkit toolkit, int arg4, Class183 arg5, int arg6, int arg7, WidgetComponentDefinition componentDefinition) {
    		do {
    			try {
    				anInt1766++;
    				if (arg4 == 2) {
    					WorldMapDefinition worldMapDefinition = Node_Sub2_Sub32.getWorldMapDefinition(regionId, (byte) 1);
    					if (worldMapDefinition == null || !worldMapDefinition.isVisible || !worldMapDefinition.method861(arg4 + -3)) {
    						break;
    					}
    					if (worldMapDefinition.anIntArray1269 != null) {
    						int[] is = new int[worldMapDefinition.anIntArray1269.length];
    						for (int i = 0; (i ^ 0xffffffff) > (is.length / 2 ^ 0xffffffff); i++) {
    							int i_134_;
    							if ((Node_Sub2_Sub34.anInt6035 ^ 0xffffffff) != -5) {
    								i_134_ = (Class148.anInt1982 + (int) Class120.aFloat1578) & 0x3fff;
    							} else {
    								i_134_ = (int) Class120.aFloat1578 & 0x3fff;
    							}
    							int i_135_ = Class31.SINES[i_134_];
    							int i_136_ = Class31.COSINES[i_134_];
    							if (Node_Sub2_Sub34.anInt6035 != 4) {
    								i_135_ = 256 * i_135_ / (256 + Class1_Sub7.anInt3590);
    								i_136_ = i_136_ * 256 / (256 + Class1_Sub7.anInt3590);
    							}
    							is[2 * i] = ((((i_136_ * (arg1 + worldMapDefinition.anIntArray1269[i * 2] * 4)) + (worldMapDefinition.anIntArray1269[1 + i * 2] * 4 + arg6) * i_135_) >> -642431153) + (componentDefinition.renderWidth / 2 + arg7));
    							is[1 + 2 * i] = -(((4 * worldMapDefinition.anIntArray1269[i * 2 + 1] + arg6) * i_136_ - (4 * worldMapDefinition.anIntArray1269[i * 2] + arg1) * i_135_) >> 2000279151) + arg0 + componentDefinition.renderHeight / 2;
    						}
    						Class123.method1070(toolkit, is, worldMapDefinition.anInt1247, componentDefinition.anIntArray2478, componentDefinition.anIntArray2310);
    						for (int i = 0; -1 + is.length / 2 > i; i++) {
    							toolkit.method1226(is[2 * i], is[2 * i - -1], is[(1 + i) * 2], is[1 + (i * 2 + 2)], worldMapDefinition.anInt1263, 1, arg5, arg7, arg0);
    						}
    						toolkit.method1226(is[is.length - 2], is[is.length - 1], is[0], is[1], worldMapDefinition.anInt1263, 1, arg5, arg7, arg0);
    					}
    					Sprite class152 = null;
    					if ((worldMapDefinition.mapIconSpriteId ^ 0xffffffff) != 0) {
    						class152 = worldMapDefinition.method855(-4379, false, toolkit);
    						if (class152 != null) {
    							Node_Sub2_Sub3.method1487(arg7, arg6, arg5, 2, class152, arg0, componentDefinition, arg1);
    						}
    					}
    					if (worldMapDefinition.mapLabel == null) {
    						break;
    					}
    					int i = 0;
    					if (class152 != null) {
    						i = class152.method2204();
    					}
    					Font class44 = Class204.aClass44_2982;
    					FontMetricsDefinition class55 = Class169.aClass55_2269;
    					if ((worldMapDefinition.anInt1256 ^ 0xffffffff) == -2) {
    						class55 = IntegerNode.aClass55_4469;
    						class44 = Class184.aClass44_2633;
    					}
    					if ((worldMapDefinition.anInt1256 ^ 0xffffffff) == -3) {
    						class55 = Class89.aClass55_3259;
    						class44 = Class93.aClass44_1222;
    					}
    					Node_Sub2_Sub1.method1472(componentDefinition, arg1, class55, class44, arg5, i, worldMapDefinition.mapLabel, arg7, arg6, (byte) 45, arg0, worldMapDefinition.labelColor);
    				}
    			} catch (RuntimeException runtimeexception) {
    				throw Node_Sub2_Sub6.method1495(runtimeexception, ("nr.PG(" + arg0 + ',' + arg1 + ',' + regionId + ',' + (toolkit != null ? "{...}" : "null") + ',' + arg4 + ',' + (arg5 != null ? "{...}" : "null") + ',' + arg6 + ',' + arg7 + ',' + (componentDefinition != null ? "{...}" : "null") + ')'));
    			}
    			break;
    		} while (false);
    	}
    As you can see, an interface component is being used, however, in second drawing method, there is no component used:
    Code:
    public static void method1106(GraphicsToolkit toolkit, int arg1, WorldMapDefinition worldMapDefinition, Node_Sub20 arg3) {
    		try {
    			anInt1695++;
    			Sprite class152 = worldMapDefinition.method862(toolkit, -1);
    			if (class152 != null) {
    				int i = class152.method2206();
    				if (class152.method2204() > i) {
    					i = class152.method2204();
    				}
    				int i_0_ = 10;
    				int i_1_ = arg3.anInt4428;
    				int i_2_ = arg3.anInt4429;
    				int i_3_ = 0;
    				int i_4_ = 0;
    				int i_5_ = 0;
    				if (worldMapDefinition.mapLabel != null) {
    					i_3_ = Class169.aClass55_2269.method620(null, 108, worldMapDefinition.mapLabel, (Class1_Sub2.aStringArray3509), null);
    					for (int i_6_ = 0; i_6_ < i_3_; i_6_++) {
    						String string = Class1_Sub2.aStringArray3509[i_6_];
    						if (i_6_ < -1 + i_3_) {
    							string = string.substring(0, -4 + string.length());
    						}
    						int i_7_ = Class67.aClass140_912.method2131(string);
    						if (i_4_ < i_7_) {
    							i_4_ = i_7_;
    						}
    					}
    					i_5_ = (Class67.aClass140_912.method2127() * i_3_ - -(Class67.aClass140_912.method2132() / 2));
    				}
    				int i_8_ = arg3.anInt4428 + i / 2;
    				int i_9_ = arg3.anInt4429;
    				if (i_1_ >= Class127.anInt1737 - -i) {
    					if (i_1_ > Class127.anInt1718 + -i) {
    						i_1_ = Class127.anInt1718 - i;
    						i_8_ = -5 + (-(i_4_ / 2) + Class127.anInt1718 + -(i / 2) + -i_0_);
    					}
    				} else {
    					i_1_ = Class127.anInt1737;
    					i_8_ = 5 + i_4_ / 2 + (i_0_ + (i / 2 + Class127.anInt1737));
    				}
    				if ((i + Class127.anInt1722 ^ 0xffffffff) >= (i_2_ ^ 0xffffffff)) {
    					if (i_2_ > -i + Class127.anInt1719) {
    						i_2_ = Class127.anInt1719 + -i;
    						i_9_ = -i_5_ + (Class127.anInt1719 + (-(i / 2) - i_0_));
    					}
    				} else {
    					i_9_ = i / 2 + (i_0_ + Class127.anInt1722);
    					i_2_ = Class127.anInt1722;
    				}
    				int i_10_ = (0xffff & (int) (32767.0 * (Math.atan2(-arg3.anInt4428 + i_1_, i_2_ + -arg3.anInt4429) / 3.141592653589793)));
    				class152.method2209(i_1_ + i / 2.0F, i_2_ + i / 2.0F, 4096, i_10_);
    				int i_11_ = -2;
    				int i_12_ = -2;
    				int i_13_ = -2;
    				int i_14_ = -2;
    				if (worldMapDefinition.mapLabel != null) {
    					i_11_ = -5 + (-(i_4_ / 2) + i_8_);
    					i_12_ = i_9_;
    					i_13_ = i_11_ + (i_4_ - -10);
    					i_14_ = 3 + (Class67.aClass140_912.method2127() * i_3_ + i_12_);
    					if ((worldMapDefinition.anInt1254 ^ 0xffffffff) != -1) {
    						toolkit.drawFilledPixels(i_13_ + -i_11_, i_14_ + -i_12_, i_11_, i_12_, worldMapDefinition.anInt1254, -92);
    					}
    					if ((worldMapDefinition.anInt1257 ^ 0xffffffff) != -1) {
    						toolkit.method1262(-i_12_ + i_14_, i_11_, -i_11_ + i_13_, false, i_12_, worldMapDefinition.anInt1257);
    					}
    					for (int i_15_ = 0; (i_3_ ^ 0xffffffff) < (i_15_ ^ 0xffffffff); i_15_++) {
    						String string = Class1_Sub2.aStringArray3509[i_15_];
    						if ((-1 + i_3_ ^ 0xffffffff) < (i_15_ ^ 0xffffffff)) {
    							string = string.substring(0, -4 + string.length());
    						}
    						Class67.aClass140_912.method2133(toolkit, string, i_8_, i_9_, worldMapDefinition.labelColor, true);
    						i_9_ += Class67.aClass140_912.method2127();
    					}
    				}
    				if (arg1 != worldMapDefinition.mapIconSpriteId || worldMapDefinition.mapLabel != null) {
    					i >>= 1;
    					Node_Sub42 class131_sub42 = new Node_Sub42(arg3);
    					class131_sub42.anInt4681 = i_2_ + -i;
    					class131_sub42.anInt4684 = -i + i_1_;
    					class131_sub42.anInt4687 = i_1_ + i;
    					class131_sub42.anInt4682 = i_13_;
    					class131_sub42.anInt4680 = i_14_;
    					class131_sub42.anInt4679 = i_12_;
    					class131_sub42.anInt4678 = i_11_;
    					class131_sub42.anInt4690 = i_2_ - -i;
    					Class74.aClass119_1011.method1018((byte) -128, class131_sub42);
    				}
    			}
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("nc.B(" + (toolkit != null ? "{...}" : "null") + ',' + arg1 + ',' + (worldMapDefinition != null ? "{...}" : "null") + ',' + (arg3 != null ? "{...}" : "null") + ')'));
    		}
    	}
    All this code is from a 562 client.
    I probably confused billboards and (mini)map. Pretty sure the billboards are loaded through objects.
    Project thread
    Reply With Quote  
     

  5. #14  
    Registered Member

    Join Date
    Dec 2009
    Posts
    774
    Thanks given
    367
    Thanks received
    455
    Rep Power
    927
    Quote Originally Posted by clem585 View Post
    I probably confused billboards and (mini)map. Pretty sure the billboards are loaded through objects.
    Ye, I should be debugging this one day to verify everything though.
    link removed
    Reply With Quote  
     

  6. #15  
    Registered Member
    Join Date
    Jun 2016
    Posts
    311
    Thanks given
    213
    Thanks received
    64
    Rep Power
    48
    Class277_Sub1 >
    Code:
    	final void method3352(int type, int objectId, Class84 class84, int i_49_, GraphicsToolkit graphicstoolkit, int i_50_, int i_51_, int i_52_, int i_53_, int i_54_, int i_55_, int xinregion, int yinregion, int regionid) {
    You need to remove the Mini map icons from your specified region then spawn them server sided as objects, the id's were released in the configuration subforum btw
    Attached image
    discord link removed
    Reply With Quote  
     

  7. #16  
    Registered Member

    Join Date
    Feb 2013
    Age
    28
    Posts
    664
    Thanks given
    46
    Thanks received
    196
    Rep Power
    127
    Quote Originally Posted by Admiral Slee View Post
    I don't know how people got to index 5, but maybe it's me, I haven't really done research to this yet.

    In index 2, archive 36 (the so called worldmap information archive), are the properties of the minimap icons defined:

    Code:
    public void decode(byte arg0, Stream arg1, int arg2) {
    		try {
    			anInt1238++;
    			if (arg0 <= 29) {
    				method861(-124);
    			}
    			if (arg2 != 1) {
    				if (arg2 == 2) {
    					hoverSpriteId = arg1.readUnsignedShort(8104);
    				} else if ((arg2 ^ 0xffffffff) == -4) {
    					mapLabel = arg1.readString(false);
    				} else if (arg2 != 4) {
    					if (arg2 != 5) {
    						if (arg2 != 6) {
    							if (arg2 == 7) {
    								int i = arg1.readUnsignedByte(-52);
    								if ((i & 0x2 ^ 0xffffffff) == -3) {
    									isVisible = true;
    								}
    								if ((0x1 & i) == 0) {
    									aBoolean1244 = false;
    								}
    							} else if (arg2 != 8) {
    								if (arg2 == 9) {
    									bitConfigId = arg1.readUnsignedShort(8104);
    									if ((bitConfigId ^ 0xffffffff) == -65536) {
    										bitConfigId = -1;
    									}
    									configId = arg1.readUnsignedShort(8104);
    									if ((configId ^ 0xffffffff) == -65536) {
    										configId = -1;
    									}
    									anInt1249 = arg1.readUnsignedInt(-2);
    									anInt1264 = arg1.readUnsignedInt(-2);
    								} else if (arg2 >= 10 && (arg2 ^ 0xffffffff) >= -15) {
    									clickOptions[arg2 - 10] = arg1.readString(false);
    								} else if (arg2 == 15) {
    									int i = arg1.readUnsignedByte(-22);
    									anIntArray1269 = new int[i * 2];
    									for (int i_1_ = 0; ((i * 2 ^ 0xffffffff) < (i_1_ ^ 0xffffffff)); i_1_++) {
    										anIntArray1269[i_1_] = arg1.readSignedShort(1625554944);
    									}
    									anInt1263 = arg1.readUnsignedInt(-2);
    									anInt1247 = arg1.readUnsignedInt(-2);
    								} else if (arg2 != 16) {
    									if (arg2 != 17) {
    										if ((arg2 ^ 0xffffffff) == -19) {
    											anotherSpriteId = arg1.readUnsignedShort(8104);
    										} else if (arg2 == 19) {
    											anInt1262 = arg1.readUnsignedShort(8104);
    										} else if ((arg2 ^ 0xffffffff) == -21) {
    											anotherBitConfigThingy = arg1.readUnsignedShort(8104);
    											if (anotherBitConfigThingy == 65535) {
    												anotherBitConfigThingy = -1;
    											}
    											basicConfigId = arg1.readUnsignedShort(8104);
    											if ((basicConfigId ^ 0xffffffff) == -65536) {
    												basicConfigId = -1;
    											}
    											anInt1234 = arg1.readUnsignedInt(-2);
    											anInt1265 = arg1.readUnsignedInt(-2);
    										} else if (arg2 != 21) {
    											if ((arg2 ^ 0xffffffff) == -23) {
    												anInt1254 = arg1.readUnsignedInt(-2);
    											}
    										} else {
    											anInt1257 = arg1.readUnsignedInt(-2);
    										}
    									} else {
    										optionEnd = arg1.readString(false);
    									}
    								} else {
    									aBoolean1239 = false;
    								}
    							} else {
    								aBoolean1250 = (arg1.readUnsignedByte(-98) ^ 0xffffffff) == -2;
    							}
    						} else {
    							anInt1256 = arg1.readUnsignedByte(-64);
    						}
    					} else {
    						anInt1268 = arg1.read3Bytes(false);
    					}
    				} else {
    					labelColor = arg1.read3Bytes(false);
    				}
    			} else {
    				mapIconSpriteId = arg1.readUnsignedShort(8104);
    			}
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("kb.D(" + arg0 + ',' + (arg1 != null ? "{...}" : "null") + ',' + arg2 + ')'));
    		}
    	}
    Now, the world map definition class has two methods which create a sprite:
    Code:
    public Sprite method855(int arg0, boolean arg1, GraphicsToolkit toolkit) {
    		try {
    			anInt1255++;
    			int i = !arg1 ? mapIconSpriteId : hoverSpriteId;
    			int i_0_ = i | toolkit.anInt1781 << -2105317123;
    			Sprite class152 = ((Sprite) Node_Sub2.aClass214_4098.get(122, i_0_));
    			if (arg0 != -4379) {
    				return null;
    			}
    			if (class152 != null) {
    				return class152;
    			}
    			if (!Class214.aClass158_3131.method2343(arg0 + 4269, i)) {
    				return null;
    			}
    			SpriteDefinition class124 = SpriteDefinition.getFirstSpriteDefinition(Class214.aClass158_3131, i, 0);
    			if (class124 != null) {
    				class152 = toolkit.createSprite(class124, true);
    				Node_Sub2.aClass214_4098.method2773(true, class152, i_0_);
    			}
    			return class152;
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("kb.B(" + arg0 + ',' + arg1 + ',' + (toolkit != null ? "{...}" : "null") + ')'));
    		}
    	}
    Code:
    	public Sprite method862(GraphicsToolkit arg0, int arg1) {
    		try {
    			anInt1270++;
    			Sprite class152 = ((Sprite) (Node_Sub2.aClass214_4098.get(arg1 + 127, 0x20000 | anotherSpriteId | arg0.anInt1781 << 508290877)));
    			if (arg1 != -1) {
    				anInt1257 = 6;
    			}
    			if (class152 != null) {
    				return class152;
    			}
    			Class214.aClass158_3131.method2343(-119, anotherSpriteId);
    			SpriteDefinition class124 = SpriteDefinition.getFirstSpriteDefinition(Class214.aClass158_3131, anotherSpriteId, 0);
    			if (class124 != null) {
    				class152 = arg0.createSprite(class124, true);
    				Node_Sub2.aClass214_4098.method2773(true, class152, arg0.anInt1781 << 1946935645 | (anotherSpriteId | 0x20000));
    			}
    			return class152;
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("kb.G(" + (arg0 != null ? "{...}" : "null") + ',' + arg1 + ')'));
    		}
    	}
    Here are the drawing methods for both, this is the draw method for the first one:
    Code:
    public static void createWorldMapSprite(int arg0, int arg1, int regionId, GraphicsToolkit toolkit, int arg4, Class183 arg5, int arg6, int arg7, WidgetComponentDefinition componentDefinition) {
    		do {
    			try {
    				anInt1766++;
    				if (arg4 == 2) {
    					WorldMapDefinition worldMapDefinition = Node_Sub2_Sub32.getWorldMapDefinition(regionId, (byte) 1);
    					if (worldMapDefinition == null || !worldMapDefinition.isVisible || !worldMapDefinition.method861(arg4 + -3)) {
    						break;
    					}
    					if (worldMapDefinition.anIntArray1269 != null) {
    						int[] is = new int[worldMapDefinition.anIntArray1269.length];
    						for (int i = 0; (i ^ 0xffffffff) > (is.length / 2 ^ 0xffffffff); i++) {
    							int i_134_;
    							if ((Node_Sub2_Sub34.anInt6035 ^ 0xffffffff) != -5) {
    								i_134_ = (Class148.anInt1982 + (int) Class120.aFloat1578) & 0x3fff;
    							} else {
    								i_134_ = (int) Class120.aFloat1578 & 0x3fff;
    							}
    							int i_135_ = Class31.SINES[i_134_];
    							int i_136_ = Class31.COSINES[i_134_];
    							if (Node_Sub2_Sub34.anInt6035 != 4) {
    								i_135_ = 256 * i_135_ / (256 + Class1_Sub7.anInt3590);
    								i_136_ = i_136_ * 256 / (256 + Class1_Sub7.anInt3590);
    							}
    							is[2 * i] = ((((i_136_ * (arg1 + worldMapDefinition.anIntArray1269[i * 2] * 4)) + (worldMapDefinition.anIntArray1269[1 + i * 2] * 4 + arg6) * i_135_) >> -642431153) + (componentDefinition.renderWidth / 2 + arg7));
    							is[1 + 2 * i] = -(((4 * worldMapDefinition.anIntArray1269[i * 2 + 1] + arg6) * i_136_ - (4 * worldMapDefinition.anIntArray1269[i * 2] + arg1) * i_135_) >> 2000279151) + arg0 + componentDefinition.renderHeight / 2;
    						}
    						Class123.method1070(toolkit, is, worldMapDefinition.anInt1247, componentDefinition.anIntArray2478, componentDefinition.anIntArray2310);
    						for (int i = 0; -1 + is.length / 2 > i; i++) {
    							toolkit.method1226(is[2 * i], is[2 * i - -1], is[(1 + i) * 2], is[1 + (i * 2 + 2)], worldMapDefinition.anInt1263, 1, arg5, arg7, arg0);
    						}
    						toolkit.method1226(is[is.length - 2], is[is.length - 1], is[0], is[1], worldMapDefinition.anInt1263, 1, arg5, arg7, arg0);
    					}
    					Sprite class152 = null;
    					if ((worldMapDefinition.mapIconSpriteId ^ 0xffffffff) != 0) {
    						class152 = worldMapDefinition.method855(-4379, false, toolkit);
    						if (class152 != null) {
    							Node_Sub2_Sub3.method1487(arg7, arg6, arg5, 2, class152, arg0, componentDefinition, arg1);
    						}
    					}
    					if (worldMapDefinition.mapLabel == null) {
    						break;
    					}
    					int i = 0;
    					if (class152 != null) {
    						i = class152.method2204();
    					}
    					Font class44 = Class204.aClass44_2982;
    					FontMetricsDefinition class55 = Class169.aClass55_2269;
    					if ((worldMapDefinition.anInt1256 ^ 0xffffffff) == -2) {
    						class55 = IntegerNode.aClass55_4469;
    						class44 = Class184.aClass44_2633;
    					}
    					if ((worldMapDefinition.anInt1256 ^ 0xffffffff) == -3) {
    						class55 = Class89.aClass55_3259;
    						class44 = Class93.aClass44_1222;
    					}
    					Node_Sub2_Sub1.method1472(componentDefinition, arg1, class55, class44, arg5, i, worldMapDefinition.mapLabel, arg7, arg6, (byte) 45, arg0, worldMapDefinition.labelColor);
    				}
    			} catch (RuntimeException runtimeexception) {
    				throw Node_Sub2_Sub6.method1495(runtimeexception, ("nr.PG(" + arg0 + ',' + arg1 + ',' + regionId + ',' + (toolkit != null ? "{...}" : "null") + ',' + arg4 + ',' + (arg5 != null ? "{...}" : "null") + ',' + arg6 + ',' + arg7 + ',' + (componentDefinition != null ? "{...}" : "null") + ')'));
    			}
    			break;
    		} while (false);
    	}
    As you can see, an interface component is being used, however, in second drawing method, there is no component used:
    Code:
    public static void method1106(GraphicsToolkit toolkit, int arg1, WorldMapDefinition worldMapDefinition, Node_Sub20 arg3) {
    		try {
    			anInt1695++;
    			Sprite class152 = worldMapDefinition.method862(toolkit, -1);
    			if (class152 != null) {
    				int i = class152.method2206();
    				if (class152.method2204() > i) {
    					i = class152.method2204();
    				}
    				int i_0_ = 10;
    				int i_1_ = arg3.anInt4428;
    				int i_2_ = arg3.anInt4429;
    				int i_3_ = 0;
    				int i_4_ = 0;
    				int i_5_ = 0;
    				if (worldMapDefinition.mapLabel != null) {
    					i_3_ = Class169.aClass55_2269.method620(null, 108, worldMapDefinition.mapLabel, (Class1_Sub2.aStringArray3509), null);
    					for (int i_6_ = 0; i_6_ < i_3_; i_6_++) {
    						String string = Class1_Sub2.aStringArray3509[i_6_];
    						if (i_6_ < -1 + i_3_) {
    							string = string.substring(0, -4 + string.length());
    						}
    						int i_7_ = Class67.aClass140_912.method2131(string);
    						if (i_4_ < i_7_) {
    							i_4_ = i_7_;
    						}
    					}
    					i_5_ = (Class67.aClass140_912.method2127() * i_3_ - -(Class67.aClass140_912.method2132() / 2));
    				}
    				int i_8_ = arg3.anInt4428 + i / 2;
    				int i_9_ = arg3.anInt4429;
    				if (i_1_ >= Class127.anInt1737 - -i) {
    					if (i_1_ > Class127.anInt1718 + -i) {
    						i_1_ = Class127.anInt1718 - i;
    						i_8_ = -5 + (-(i_4_ / 2) + Class127.anInt1718 + -(i / 2) + -i_0_);
    					}
    				} else {
    					i_1_ = Class127.anInt1737;
    					i_8_ = 5 + i_4_ / 2 + (i_0_ + (i / 2 + Class127.anInt1737));
    				}
    				if ((i + Class127.anInt1722 ^ 0xffffffff) >= (i_2_ ^ 0xffffffff)) {
    					if (i_2_ > -i + Class127.anInt1719) {
    						i_2_ = Class127.anInt1719 + -i;
    						i_9_ = -i_5_ + (Class127.anInt1719 + (-(i / 2) - i_0_));
    					}
    				} else {
    					i_9_ = i / 2 + (i_0_ + Class127.anInt1722);
    					i_2_ = Class127.anInt1722;
    				}
    				int i_10_ = (0xffff & (int) (32767.0 * (Math.atan2(-arg3.anInt4428 + i_1_, i_2_ + -arg3.anInt4429) / 3.141592653589793)));
    				class152.method2209(i_1_ + i / 2.0F, i_2_ + i / 2.0F, 4096, i_10_);
    				int i_11_ = -2;
    				int i_12_ = -2;
    				int i_13_ = -2;
    				int i_14_ = -2;
    				if (worldMapDefinition.mapLabel != null) {
    					i_11_ = -5 + (-(i_4_ / 2) + i_8_);
    					i_12_ = i_9_;
    					i_13_ = i_11_ + (i_4_ - -10);
    					i_14_ = 3 + (Class67.aClass140_912.method2127() * i_3_ + i_12_);
    					if ((worldMapDefinition.anInt1254 ^ 0xffffffff) != -1) {
    						toolkit.drawFilledPixels(i_13_ + -i_11_, i_14_ + -i_12_, i_11_, i_12_, worldMapDefinition.anInt1254, -92);
    					}
    					if ((worldMapDefinition.anInt1257 ^ 0xffffffff) != -1) {
    						toolkit.method1262(-i_12_ + i_14_, i_11_, -i_11_ + i_13_, false, i_12_, worldMapDefinition.anInt1257);
    					}
    					for (int i_15_ = 0; (i_3_ ^ 0xffffffff) < (i_15_ ^ 0xffffffff); i_15_++) {
    						String string = Class1_Sub2.aStringArray3509[i_15_];
    						if ((-1 + i_3_ ^ 0xffffffff) < (i_15_ ^ 0xffffffff)) {
    							string = string.substring(0, -4 + string.length());
    						}
    						Class67.aClass140_912.method2133(toolkit, string, i_8_, i_9_, worldMapDefinition.labelColor, true);
    						i_9_ += Class67.aClass140_912.method2127();
    					}
    				}
    				if (arg1 != worldMapDefinition.mapIconSpriteId || worldMapDefinition.mapLabel != null) {
    					i >>= 1;
    					Node_Sub42 class131_sub42 = new Node_Sub42(arg3);
    					class131_sub42.anInt4681 = i_2_ + -i;
    					class131_sub42.anInt4684 = -i + i_1_;
    					class131_sub42.anInt4687 = i_1_ + i;
    					class131_sub42.anInt4682 = i_13_;
    					class131_sub42.anInt4680 = i_14_;
    					class131_sub42.anInt4679 = i_12_;
    					class131_sub42.anInt4678 = i_11_;
    					class131_sub42.anInt4690 = i_2_ - -i;
    					Class74.aClass119_1011.method1018((byte) -128, class131_sub42);
    				}
    			}
    		} catch (RuntimeException runtimeexception) {
    			throw Node_Sub2_Sub6.method1495(runtimeexception, ("nc.B(" + (toolkit != null ? "{...}" : "null") + ',' + arg1 + ',' + (worldMapDefinition != null ? "{...}" : "null") + ',' + (arg3 != null ? "{...}" : "null") + ')'));
    		}
    	}
    All this code is from a 562 client.
    The minimap icons are simply floor decorations as part of index5 he wants to edit the positions of them hence why editing the actual map itself (removing the old minimap floor decoration and adding his new chosen one at a location) is better and simpler than editing the client in any way shape or form.
    Reply With Quote  
     

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. Mini-Map Icons Positioning
    By Ali_ in forum Help
    Replies: 2
    Last Post: 06-13-2015, 11:05 AM
  2. Mini-Map Map Icons
    By Ali_ in forum Help
    Replies: 1
    Last Post: 06-11-2015, 11:50 PM
  3. Adding additional mini-map icons?
    By Mind Games in forum Help
    Replies: 5
    Last Post: 12-29-2014, 06:01 PM
  4. Replies: 0
    Last Post: 02-24-2013, 07:22 PM
  5. icons on mini map
    By Flippy in forum Help
    Replies: 1
    Last Post: 06-23-2009, 06:02 AM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •