Jump to content

[Share]Gamer's WoW ObjectDumper


Recommended Posts

Posted

info_3.3.5a_ud_full.png

> Features:

Radar:

 

\ Display all WoW objects, NPCs, Mobs and Players on radar.

\ Show aggro radius of NPCs (formula courtesy of alek900)

\ Ability to track a certain object (great for tracking rare mobs/resources)

 

Object Dumper:

 

\ Dump all objects loaded into WoW's memory.

 

> Screenshots:

 

Radar with mouseover names:

objRadar_01_v2.png

New with v2.2, MiniMode:

objRadar_05_v2.png

Object notification, with v2.2 LocationLogic:

objRadar_02_v2.png

Settings, general and notification sound:

objRadar_03_v2.png

objRadar_04_v2.png

New: MiniMode, LocationLogic, Multi process, new notification system

For more information, read the notes.

 

To-do: More.

 

Known issues: None!

 

> Credits:

~~ Gamer ~~ - Original WoW ObjectDumper/Radar; and with that the following people:

Cypher - Providing offsets and answering various question + many an entertaining flame.

kynox - Help with memory reading and blp loading.

Shynd - Blog, and answering questions.

suicidity - blp loading research.

alek900 - Aggro radius formula.

Sillyboy72 - Help with GetPlayerName function.

People from the offset dump threads. - Updated Offsets.

> Download:

Remember that you need the .NET Framework 3.5 if not already installed, which you can get there:.NET Framework Developer Center

 

Download Radar_v2.2.2.12340.rar

 

> Notes for current version v2.2.2:

--- [19.7.10]: v2.2.2:

Updated for WoW 3.3.5a.12340

> Changelog:

--- [9.2.10]: v2.2.1:

Updated for WoW 3.3.2.11403

Added setting to rename MiniMode window

Fixed color of selected unit

Fixed the error that would cause the form to be outside the desktop

Fixed some other things that I forgot

 

--- [9.12.09]: v2.2.0:

Added new 'MiniMode':

 

    Hated to have the complete radar form over the WoW window and you lost a big part of your view just for the radar part? In MiniMode you'll have just the radar and nothing else, yet keeping the notification ability. It'll have it's own settings like TopMost, Zoom and Refresh Rate, plus new opacity, radar background color and FormBorderStyle. Just click on the form to see the settings.

 

Added new 'LocationLogic v1':

 

    The notification balloon just showed the location of the object in XYZ and you got no clue where that was? Now it'll give you a short info about the location of the object.

 

Changed ObjectDump listboxes:

 

    The 'All' objects tab will now show the objects in groups. The 'Location' row will now display the location with XYZ properly. Corpses will be named as 'Corpse' instead of 'Unknown', level 'C'

 

Added multi-process ability:

 

    You'll now be able to select the process which you want to use if more than one wow process is running. To see what process you want to attach to you can flash the corresponding WoW window of the selected process.

 

Changed notifications:

 

    Notifications are now being handled in a different thread, meaning that the radar won't freeze anymore if something is found. Sounds are now embed in the application and you'll be able to choose other sounds on your HDD in settings. Added new form for notification settings, allowing to suspend the notification thread either to sound (wait until sound has finished playing until next notification) or to a specific time (wait this time, regardless of the sound)

 

Generic changes:

 

    Updated for WoW 3.3.0.10958 Players of the opposite faction (enemy or not) are now marked with a red circle around the player dot. 'Notification' tab layout changed. 'Clear list' now working as it should. Main form is now fixed and can't be resized anymore. Inner code cleanup. (err.. a bit, or not..) Settings form changed, removed 'Load BLPs?' (it stays disabled) and moved 'Always on top?' to the main form for fast access. Z coordinate in the notification balloon fixed.

 

--- [26/9/09]: v2.1.1:

Updated for 3.2.2.10482 (10505)

More GUI fixes

Funky icons

Tray icon now with context menu

Even less memory usage

A folder with sounds

More minor fixes

 

--- [18/8/09]: v2.1:

Injection fully removed, no client should crash anymore. Yay!

Fixed russian client issue

Minor fixes

 

--- [16/8/09]: v2:

Updated for 3.2.0.10192

Updated project for VS2010

Last numer of the version is now determining the wow build that this version was made for.

Added support for Unicode characters!

Updated all needed .dll's.

Merged .dll's into the resulting assembly, decreasing filesize and increasing performance. (less RAM usage, faster startup, etc.)

Fixed bug that it won't load settings like "Show aggro" and "Play Sound"

Fixed bug that caused that the sound notification would be playing forever if 2 or more objects are found at the same time.

Fixed GUI layout.

Now using injection for some time again, rare wow crashes may occur. Please don't post error reports or crashdumps concerning this error.

If you don't want injection, run it with the "-noinject" command. Please note that not all object/player/mob names can be resolved if disabled.

Embedded a manifest, which means that you won't get problems when you run it without administrator on Windows Vista/Windows 7.  You just can't run it without admin anymore.

For the people that demand the source: no. I won't post the source of the project again. If you can't update the old version it to 3.2 and just want to see what you did so terribly wrong, then you just won't understand the rest. It may be available later again once drastic changes have been made.

 

--- [16/2/09]: v1.9.1:

Fixed player centering bug.

 

--- [14/2/09]: v1.9:

Updated offsets to 3.0.9.

Fixed Agro -> Aggro typo.

Hopefully fixed agro radius bug, should display correctly now.

Made radar resize with window.

Fixed radar being enabled by default checkbox bug.

Should open up at the same spot you last closed it.

 

--- [5/2/09]: v1.8:

Moved most settings to the settings window rather than making the main window cluttered.

It also allows you to save most settings including colours.

Ability to load in and save notify list files.

Fixes bug where capitals wouldn't work.

Added always on top option.

Added ability to hide certain types of objects.

Allows for sound notifications. Tick sound notification in settings, and it will play SoundNotification.wav (must be in the same folder) whenever a notification bubble comes up.

 

--- [24/1/09]: v1.6:

No longer uses injection to get names which should stop all crashes.

Rotates map correctly around player to align with minimap. (Finally got this working with the name labels, had some coordinate rotation issues)

Object dumper now lists items in resizable columns rather than writing "Name: XYZ, GUID: XYZ" for each entry.

Updated target offsets - target highlighting now works.

BLP Loading has been temporarily disabled until it is more stable.

 

--- [18/1/09]: v1.3:

Features:

Wildcard notification! Now you can use 'vein' to find all veins, or 'boar' to find all boars!

 

  • 1 year later...
  • 1 year later...
  • 4 months later...
Guest
This topic is now closed to further replies.


  • Posts

    • hello, i want to wtt my charracter in l2elmorelab 1x harbor for 1.5kkk adena in l2reborn 10x new. Or if you interested tell me your offer. :)) Clean Mail 30 lvl Cleric Naked   Updated.
    • package ai.npc.NFWalker; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import l2r.gameserver.enums.CtrlIntention; import l2r.gameserver.model.Location; import l2r.gameserver.model.actor.L2Npc; import l2r.gameserver.model.quest.Quest; import l2r.gameserver.network.clientpackets.Say2; import l2r.gameserver.network.serverpackets.NpcSay; public class NFWalkerAI extends Quest { private static final int WALKER_NPC_ID = 20116; private final Map<String, Route> routes = new HashMap<>(); private final Map<Integer, Integer> npcIndexes = new HashMap<>(); private final Map<Integer, Boolean> npcReverse = new HashMap<>(); private final Map<Integer, String> npcCurrentRoute = new HashMap<>(); public NFWalkerAI() { super(-1, NFWalkerAI.class.getSimpleName(), "ai/npc/NFWalker"); loadRoutes(); addSpawnId(WALKER_NPC_ID); } private void loadRoutes() { // Route 1 Data Route route1 = new Route("route1"); route1.addPoint(new RoutePoint(0, 149363, 172341, -941, 0, false, "")); route1.addPoint(new RoutePoint(1, 148568, 172328, -980, 5, true, "Puff")); route1.addPoint(new RoutePoint(2, 148536, 172792, -980, 0, false, "")); // Route 2 Data Route route2 = new Route("route2"); route2.addPoint(new RoutePoint(0, 149363, 172341, -941, 0, false, "")); route2.addPoint(new RoutePoint(1, 150248, 172328, -980, 5, true, "Rise my children! Bring me the servants of the god! Let them be offered to our god Bifrons!")); route2.addPoint(new RoutePoint(2, 150248, 172776, -980, 0, false, "")); // Add routes to the map routes.put("route1", route1); routes.put("route2", route2); } @Override public String onSpawn(L2Npc npc) { if (npc.getId() == WALKER_NPC_ID) { selectInitialRouteForNpc(npc); } return super.onSpawn(npc); } @Override public String onAdvEvent(String event, L2Npc npc, l2r.gameserver.model.actor.instance.L2PcInstance player) { if (event.equalsIgnoreCase("move")) { moveNpc(npc); } else if (event.equalsIgnoreCase("check_reached")) { checkIfReached(npc); } return null; } private void moveNpc(L2Npc npc) { String routeName = npcCurrentRoute.get(npc.getObjectId()); Route route = routes.get(routeName); Integer pointIndex = npcIndexes.get(npc.getObjectId()); if (route != null && pointIndex != null) { RoutePoint point = route.getPoints().get(pointIndex); if (point.isRun()) { npc.setRunning(); } else { npc.setWalking(); } if (!point.getChat().isEmpty()) { npc.broadcastPacket(new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getId(), point.getChat())); } npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(point.getX(), point.getY(), point.getZ())); // Log movement intention System.out.println("NPC " + npc.getObjectId() + " moving to " + point.getX() + ", " + point.getY() + ", " + point.getZ()); // Schedule a check to see if the NPC has reached its destination startQuestTimer("check_reached", 1000, npc, null); } } private void checkIfReached(L2Npc npc) { String routeName = npcCurrentRoute.get(npc.getObjectId()); Route route = routes.get(routeName); Integer pointIndex = npcIndexes.get(npc.getObjectId()); if (route != null && pointIndex != null) { RoutePoint point = route.getPoints().get(pointIndex); Location currentLocation = npc.getLocation(); Location targetLocation = new Location(point.getX(), point.getY(), point.getZ()); // Check if the NPC has reached the target location if (currentLocation.equals(targetLocation)) { // Log that the NPC has reached the target System.out.println("NPC " + npc.getObjectId() + " reached target " + targetLocation); // Schedule the next movement startQuestTimer("move", point.getDelay() * 1000, npc, null); if (!npcReverse.get(npc.getObjectId())) { pointIndex++; if (pointIndex >= route.getPoints().size()) { npcReverse.put(npc.getObjectId(), true); pointIndex = route.getPoints().size() - 1; } } else { pointIndex--; if (pointIndex < 0) { npcReverse.put(npc.getObjectId(), false); pointIndex = 0; // Choose a new route after completing the current one in both directions switchRouteForNpc(npc); return; } } npcIndexes.put(npc.getObjectId(), pointIndex); } else { // Check again after 1 second startQuestTimer("check_reached", 1000, npc, null); } } } private void selectInitialRouteForNpc(L2Npc npc) { // Randomly select either route1 or route2 String selectedRouteName = "route" + (new Random().nextInt(2) + 1); npcCurrentRoute.put(npc.getObjectId(), selectedRouteName); npcIndexes.put(npc.getObjectId(), 0); npcReverse.put(npc.getObjectId(), false); startQuestTimer("move", 5000, npc, null); // Log initial route selection System.out.println("NPC " + npc.getObjectId() + " selected initial route " + selectedRouteName); } private void switchRouteForNpc(L2Npc npc) { String currentRoute = npcCurrentRoute.get(npc.getObjectId()); String newRoute = currentRoute.equals("route1") ? "route2" : "route1"; npcCurrentRoute.put(npc.getObjectId(), newRoute); npcIndexes.put(npc.getObjectId(), 0); npcReverse.put(npc.getObjectId(), false); startQuestTimer("move", 5000, npc, null); // Log route switching System.out.println("NPC " + npc.getObjectId() + " switched to route " + newRoute); } private static class Route { private List<RoutePoint> points = new ArrayList<>(); public Route(String name) { } public void addPoint(RoutePoint point) { points.add(point); } public List<RoutePoint> getPoints() { return points; } } private static class RoutePoint { private int id; private int x, y, z, delay; private boolean run; private String chat; public RoutePoint(int id, int x, int y, int z, int delay, boolean run, String chat) { this.id = id; this.x = x; this.y = y; this.z = z; this.delay = delay; this.run = run; this.chat = chat; } public int getId() { return id; } public int getX() { return x; } public int getY() { return y; } public int getZ() { return z; } public int getDelay() { return delay; } public boolean isRun() { return run; } public String getChat() { return chat; } } } I looking for help, with this, the npc not start to move. Im trying to create, an NPC wich have multiple walk routes basic logic is  random pick a route complite the route  like Route 1 start form zero (0 -> 1 -> 2(or more) -> 1 -> 0) When the npc return to 0, the script should pic the other route and start again.  And if there is a message like point 1 here     "route1.addPoint(new RoutePoint(1, 148568, 172328, -980, 5, true, "Puff"));" The npc should display the chat message. Currently my problem is the npc not moving, but if I manage it to start moving its randomly move between the route 1 and 2 set of coordinates. Currently for me its  a nightmare. I hope anyone can help somhow.
    • We are certainly not an ambulance, but we will definitely cure you of blacklists and empty pockets. Live freely with SX! Each of you will receive a trial version of SX to familiarize yourself with the product, all you have to do is post in this thread
    • qual e o valor pra atualizar o java da soucer ?
  • Topics

×
×
  • Create New...