Skip to content
MPGHThe Dark Arts
/
RegisterLog in
Forum
Community
What's NewLatest posts across the boardTrendingHottest threads right nowSubscribedThreads you follow
Discussion
GeneralIntroductionsEntertainmentDebate FortFlaming & Rage
Board
News & AnnouncementsMPGH TimesSuggestions & HelpGiveaways
More Sections
Art & Graphic DesignProgrammingHackingCryptocurrency
Hacks & Cheats
Games
ValorantCS2 / CS:GOCall of Duty / WarzoneFortniteApex LegendsEscape From Tarkov
+14 moreLeague of LegendsGTA VMinecraftRustROTMGBattlefieldTroveBattleOnCombat ArmsCrossFireBlackshotRuneScapeDayZDead by Daylight
Resources
Game Hacking TutorialsReverse EngineeringGeneral Game HackingAnti-CheatConsole Game Hacking
Tools
Game Hacking ToolsTrainers & CheatsHack/Release NewsNew
Submit a release →Share your cheat, tool, or config with the community.
AINEW
AI Tools
General & DiscussionPrompt EngineeringLLM JailbreaksHotAI Agents & AutomationLocal / Open Models
AI × Gaming
AI Aimbots & VisionML Anti-CheatGame Bots & Automation
Create
AI Coding / Vibe CodingAI Art & MediaAI Voice & TTS
The AI frontier →Where game hacking meets modern machine learning. Jump in.
Marketplace
Buy & Sell
SellingBuyingTradingUser Services
Trust & Safety
Middleman LoungeMarketplace TalkVouch Copy Profiles
Money
Cryptocurrency TalkCurrency ExchangeWork & Job Offers
Start selling →List accounts, services, and goods. Use the middleman to trade safe.
MPGH The Dark Arts

A community for offensive security research, reverse engineering, and AI.

Community

ForumMarketplaceSearch

Account

RegisterLog in

Legal

Privacy PolicyForum RulesHelp & FAQ
© 2026 MPGH · All rights reserved.Built by the community, for the community. For educational purposes onlyContent is shared for security research and education — we don't condone illegal use. You're responsible for complying with applicable laws. Use at your own risk.
Home › Forum › MultiPlayer Game Hacks & Cheats › Realm of the Mad God Hacks & Cheats › Realm of the Mad God Help & Requests › Changin the Autonexus

Changin the Autonexus

Posts 1–15 of 16 · Page 1 of 2
RA
raikoug
Changin the Autonexus
Hi, I would like to change the autonexus code to be like this (pseudo code)
Code:
if (life < 30%)
 if (priest % mana ok)
    hit space 
 else if (potion in inventory)
    use it
 else
   autonexus
But, know only the mana position, not the current class position, the inventory position, and the health potion code.. (and even I don't know how to say press space, or use potion!)

Ok, I really don't know a lot, but I don't want the code ready!!! only some hint
(such as the if and else in actionscript or assembler!)

Thanks!

---------- Post added at 05:17 PM ---------- Previous post was at 05:13 PM ----------

oh... I though I was in the help section, damn! sorry!

---------- Post added at 05:26 PM ---------- Previous post was at 05:17 PM ----------

Searching I found these:

Code:
in  _-0CP\Options.class.asasm (16 hits)
	Line 2289:       pushstring          "Use Inventory Slot 1"
	Line 2290:       pushstring          "Use item in inventory slot 1"
	Line 2300:       pushstring          "Use Inventory Slot 2"
	Line 2301:       pushstring          "Use item in inventory slot 1"
	Line 2308:       pushstring          "Use Inventory Slot 3"
	Line 2309:       pushstring          "Use item in inventory slot 1"
	Line 2316:       pushstring          "Use Inventory Slot 4"
	Line 2317:       pushstring          "Use item in inventory slot 1"
	Line 2325:       pushstring          "Use Inventory Slot 5"
	Line 2326:       pushstring          "Use item in inventory slot 1"
	Line 2333:       pushstring          "Use Inventory Slot 6"
	Line 2334:       pushstring          "Use item in inventory slot 1"
	Line 2360:       pushstring          "Use Inventory Slot 7"
	Line 2361:       pushstring          "Use item in inventory slot 1"
	Line 2379:       pushstring          "Use Inventory Slot 8"
	Line 2380:       pushstring          "Use item in inventory slot 1"
and this

Code:
in    com\company\assembleegameclient\net\_-1f.class.asasm (13 hits)
	Line 10109:       getproperty         QName(PackageNamespace(""), "INVENTORY_0_STAT")
	Line 11009:       getproperty         QName(PackageNamespace(""), "INVENTORY_0_STAT")
	Line 11031:       getproperty         QName(PackageNamespace(""), "INVENTORY_1_STAT")
	Line 11064:       getproperty         QName(PackageNamespace(""), "INVENTORY_2_STAT")
	Line 11094:       getproperty         QName(PackageNamespace(""), "INVENTORY_3_STAT")
	Line 11129:       getproperty         QName(PackageNamespace(""), "INVENTORY_4_STAT")
	Line 11138:       getproperty         QName(PackageNamespace(""), "INVENTORY_5_STAT")
	Line 11157:       getproperty         QName(PackageNamespace(""), "INVENTORY_6_STAT")
	Line 11178:       getproperty         QName(PackageNamespace(""), "INVENTORY_7_STAT")
	Line 11188:       getproperty         QName(PackageNamespace(""), "INVENTORY_8_STAT")
	Line 11211:       getproperty         QName(PackageNamespace(""), "INVENTORY_9_STAT")
	Line 11227:       getproperty         QName(PackageNamespace(""), "INVENTORY_10_STAT")
	Line 11236:       getproperty         QName(PackageNamespace(""), "INVENTORY_11_STAT")
I think something is moving... ^^

---------- Post added at 05:30 PM ---------- Previous post was at 05:26 PM ----------

plus I found theese

com/company/assembleegameclient/ui/Inventory.class.asasm and script one..

---------- Post added at 05:34 PM ---------- Previous post was at 05:30 PM ----------

UHU nice this

Code:
      findpropstrict      QName(PackageNamespace("_-0CP"), "_-GX")
      pushstring          "useInvSlot1"
      pushstring          "Use Inventory Slot 1"
      pushstring          "Use item in inventory slot 1"
      constructprop       QName(PackageNamespace("_-0CP"), "_-GX"), 3
      callpropvoid        QName(PrivateNamespace("*", "_-0CP:Options#0"), "_-yZ"), 1
only I really don't understand what the heck means all this

is the pushstring "UseInvSlot1" the function to use invslot 1... or is the findpropstrict??

---------- Post added at 05:43 PM ---------- Previous post was at 05:34 PM ----------

OH dear, i found this ...

AVM2 Instructions

it's... beatifull... I love this! HAHA (anything usefull like this? link it!!!)

---------- Post added at 06:07 PM ---------- Previous post was at 05:43 PM ----------

I realized that if someone (a very gentle one) could comment the autonexus code, I could try to understand the programming sintax (i can program in c/c++/java and others so maybe I will understand something)....
like commenting this code, I sure will understand a lot (I know I'm asking a LOT... )

Code:
L461:
      getlex              QName(PackageNamespace(""), "_-0HB")
      getlocal1
      setproperty         QName(PackageNamespace(""), "lastDamage_")

L464:
      pushtrue


pop
getlocal0
getlex              QName(PackageNamespace(""), "map_")
getproperty         QName(PackageNamespace(""), "player_")
ifne L475
getlex              QName(PackageNamespace(""), "map_")
getproperty         QName(PackageNamespace(""), "name_")
pushstring "Nexus"
ifeq L475
getlex QName(PackageNamespace(""), "_-aY")
convert_d
getlex QName(PackageNamespace(""), "_-LT")
convert_d
divide
pushbyte 7
convert_d
pushbyte 20
convert_d
divide
ifgt L475
getlex              QName(PackageNamespace(""), "map_")
getproperty         QName(PackageNamespace(""), "gs_")
getproperty         QName(PackageNamespace(""), "gsc_")
callpropvoid        QName(PackageNamespace(""), "_-M6"), 0

			
L475:			
	pushtrue       
     
L465:
      returnvalue
     end ; code
    end ; body
   end ; method
  end ; trait
#1 · 13y ago
nilly
nilly
Nice idea. I might do some work on this.

The key to understanding all this is know how the stack works. If you don't understand at least that, nothing will make very much sense. I went ahead and commented the autonexus code including what the stack looks like as the code is executed. It should help.

Code:
pop ; take off the pushtrue that was pushed to the stack above

getlocal0 ; push current object onto stack --- Stack: CurrentObject

getlex              QName(PackageNamespace(""), "map_") ; push the property "map_" of the current object onto stack --- Stack: CurrentObject.map_, CurrentObject
getproperty         QName(PackageNamespace(""), "player_") ; push player object onto stack (uses the getlex instruction below to find it) --- Stack: CurrentObject.map_.player_, CurrentObject

ifne L475 ; if CurrentObject != CurrentObject.map_.player_ jump to L475 (we don't want our code making decisions based on other players health) --- Stack: (Nothing)

getlex              QName(PackageNamespace(""), "map_") ; push the property "map_" of the current object onto stack --- Stack: CurrentObject.map_
getproperty         QName(PackageNamespace(""), "name_") ; push the property "name_" of "map_" onto stack (uses object from getlex instruction above) --- Stack: CurrentObject.map_.name_

pushstring "Nexus" ; push "Nexus" onto stack --- Stack: "Nexus", CurrentObject.map.name_

ifeq L475 ; if "Nexus" = CurrentObject.map.name_ do nothing --- Stack: (Nothing)

getlex QName(PackageNamespace(""), "_-aY") ; CurrentObject is our player so get property "_-aY" of CurrentObject (get our current health) --- Stack: CurrentObject._-aY
convert_d ; converts first thing on stack to a double --- Stack: ofTypeDouble(CurrentObject._-aY)
getlex QName(PackageNamespace(""), "_-LT") ; get property "_-LT" of CurrentObject (get our max health) --- Stack: CurrentObject._-LT, ofTypeDouble(CurrentObject._-aY)
convert_d ; convert CurrentObject._-LT to type double --- Stack: ofTypeDouble(CurrentObject._-LT), ofTypeDouble(CurrentObject._-aY)
divide ; divide first 2 objects on stack _-aY / _-LT (i know this seems backwards but this is how it works) --- Stack: ofTypeDouble(_-aY/_-LT)

pushbyte 7 ; push 7 onto stack --- Stack: 7, ofTypeDouble(_-aY/_-LT)
convert_d ; convert first object on stack to type double --- Stack: ofTypeDouble(7), ofTypeDouble(_-aY/_-LT)
pushbyte 20 ; push 20 onto stack --- Stack: 20, ofTypeDouble(7), ofTypeDouble(_-aY/_-LT)
convert_d ; convert first object on stack to type double --- Stack: ofTypeDouble(20), ofTypeDouble(7), ofTypeDouble(_-aY/_-LT)
divide ; divide first 2 objects on stack ofTypeDouble(7)/ofTypeDouble(20) --- Stack: ofTypeDouble(7.0/20.0), ofTypeDouble(_-aY/_-LT)

ifgt L475 ; if ofTypeDouble(_-aY/_-LT) > ofTypeDouble(7.0/20.0) do nothing --- Stack: (Nothing)

getlex              QName(PackageNamespace(""), "map_") ; get CurrentObject.map_ --- Stack: CurrentObject.map_
getproperty         QName(PackageNamespace(""), "gs_") ; get property gs_ of CurrentObject.map_ --- Stack: CurrentObject.map_.gs_
getproperty         QName(PackageNamespace(""), "gsc_") ; get property gsc_ of CurrentObject.map_.gs_ --- Stack: CurrentObject.map_.gs_.gsc_
callpropvoid        QName(PackageNamespace(""), "_-M6"), 0 ; call property "_-M6" (the game's goto nexus function) of CurrentObject.map_.gs_.gsc_ --- Stack: (Nothing)
You might want to copy paste this into something that doesn't have word wrap on as the formatting is horrible here on the forums.
#2 · edited 13y ago · 13y ago
RA
raikoug
Omg You'r a savior!! This is LIGHT into the darkness..
I understand a few things I really really need:
callpropvoid means to call a function. And I saw something that was ver very similar to a "use slot #" function...

I can't understand this: how the hell the stack get reinitialized?? for example, when you make an if##, the stak stack become "nothing".. it is a rule of this language?

getlex and getproperty aren't the same command?

my "pseudo code" must change, from this:

Code:
if (life < 30%)
 if (priest % mana ok)
    hit space 
 else if (potion in inventory)
    use it
 else
   autonexus
to this:

all autonexus code until
Code:
ifgt L475 

getproperty (current_class) ; stack: current_class
pushstring "code_for_priest" ; stack: code for priest, current class

ifne Line_of_potion_test ; if player is a priest continue, else go to test the inventory    stack: nothing

getlex (current_tmana); stack: current_mana
getlex (spell_cost); stack: spell_cost, current_mana

ifgt (use_spell and L475); stack: nothing

;;; the next one should be line_of_potion_test ;;;

getlex (slot_1) ; stack: slot_1
pushstring "code_for_pot_1" ; stack: code_for_pot_1, slot_1

ifeq (use_pot and L475)

;;; REPEAT the last 3 lines for any healing potion there is in rotmg, and for any slot!! ;;;
;;; should be 3 type of potion if I'm not wrong, and 8 slots, so there are 24 ;;;

;;; all slots tested, and didn't find anything!! ;;;
;;; use teleport!!! ;;;

getlex              QName(PackageNamespace(""), "map_") ;
getproperty         QName(PackageNamespace(""), "gs_") ; 
getproperty         QName(PackageNamespace(""), "gsc_") ;
callpropvoid        QName(PackageNamespace(""), "_-M6"), 0 ;
I had to force the code to go to the potion_test line becouse I can't figure how to do a double check:
if priest and mana (use_spell and L475).

I evend don't know if the you can perform two action in a "if##"... like I did...

---------- Post added at 08:31 PM ---------- Previous post was at 08:28 PM ----------

This idea could be better if the auto_spell of priest, and auto_potion starts when the player need that amount of life ... but First I want to do the simple thing...
#3 · 13y ago
maxim1200
maxim1200
Wrong place to put this theard.
#4 · 13y ago
RA
raikoug
I know, I wrote it in the first post, but I don't know how to move the thread...
#5 · 13y ago
nilly
nilly
I can't understand this: how the hell the stack get reinitialized?? for example, when you make an if##, the stak stack become "nothing".. it is a rule of this language?
The stack gets used up by the instructions used. So if you use ifeq instruction, be sure to have the 2 things you want to compare on the stack as it will pop them off the stack to do it's operation.

getlex and getproperty aren't the same command?
They are virtually the same. getlex is used for getting properties of the current object and has no stack requirements. getproperty needs an object on the stack from which it will get property.

Code:
getlex QName(PackageNamespace(""), "map_")

is the same as

getlocal0 <--- getlocal0 always links to the current object
getproperty QName(PackageNamespace(""), "map_")
You got the right idea with your nexus code although the properties you're looking for to do the comparison will likely be buried all over the place and will take some searching. Also you can't do two comparisons at once. You have to test each condition one at a time (this isn't a high-level language).
#6 · 13y ago
RA
raikoug
ok, now I have only to find the properties.

anyway, the dowble action is allowed??

If i make a "ifeq" i can make

ifeq (do this and this) ?? if yes, how?? example, if I see that there is a potion, (than I will do a ifeq between slot and potion_prop) i will have

ifeq callpropvoid QName(PackageNamespace(""), "_-use_slot:X"), L475;

is that ok?

---------- Post added at 09:20 PM ---------- Previous post was at 09:14 PM ----------

although I think the potion code should be one the one you use to cheat engine (uselessly) the game
http://www.mpgh.net/forum/599-realm-...m-id-list.html

---------- Post added at 09:26 PM ---------- Previous post was at 09:20 PM ----------

found this in
com\company\assembleegameclient\util\loadEmbeds.me thod.asasm
Code:
   getlex              QName(PackageNamespace("_-vf"), "_-5T")
   pushstring          "use_potion"
   callpropvoid        QName(PackageNamespace(""), "load"), 1


---------- Post added at 09:33 PM ---------- Previous post was at 09:26 PM ----------

maybe there is an ID for the class too...

---------- Post added at 09:44 PM ---------- Previous post was at 09:33 PM ----------

the potion test maybe is so:

Code:
getlex QName(PackageNamespace(""), "INVENTORY_4_STAT"); 4 becouse the count start with 0
pustring "2594" ; health potion!!

ifeq callpropvoid QName(PrivateNamespace("*", "_-0CP:Options#0"), "_-yZ"), 1; that should be the use inventory slot 1 function.
and repeat the code for all slots, and for all health potion types.
#7 · edited 13y ago · 13y ago
nilly
nilly
ifeq callpropvoid QName(PackageNamespace(""), "_-use_slot:X"), L475;
^^ that won't work.

More like this

getlocal0
getproperty QName(PackageNamespace(""), "myInventoryItems")
getproperty QName(PackageNamespace(""), "myInventorySlotContentsId_1")

pushint PotionIdNumber

ifeq HavePotion_UseIt_1

getlocal0
getproperty QName(PackageNamespace(""), "myInventoryItems")
getproperty QName(PackageNamespace(""), "myInventorySlotContentsId_2")

pushint PotionIdNumber

ifeq HavePotion_UseIt_2

....

HavePotion_UseIt_1:
getlocal0
getproperty QName(PackageNamespace(""), "useItems")
callpropvoid QName(PackageNamespace(""), "useMyInventorySlot_1")

jump Done

HavePotion_UseIt_2:
getlocal0
getproperty QName(PackageNamespace(""), "useItems")
callpropvoid QName(PackageNamespace(""), "useMyInventorySlot_1")

jump Done

...

Done:
This certainly isn't the best way of doing it but it kind of shows you how to implement if statements and such.
#8 · 13y ago
RA
raikoug
I try to comment this code, becouse it seems that I don't get something important

Code:
getlocal0 ; with this i target local prop? dunno... it push the local register to 0... 
getproperty QName(PackageNamespace(""), "myInventoryItems"); put in stack myInventoryItems
getproperty QName(PackageNamespace(""), "myInventorySlotContentsId_1"); added the ID of slot 1

pushint PotionIdNumber; added the potion id. Stack: PotionIdNumber, myInventorySlotConstestId_1, myInventoryItems 

ifeq HavePotion_UseIt_1; I have 3 elements in stack, eq between? 

getlocal0
getproperty QName(PackageNamespace(""), "myInventoryItems")
getproperty QName(PackageNamespace(""), "myInventorySlotContentsId_2")

pushint PotionIdNumber

ifeq HavePotion_UseIt_2 ; this is a call to a function, i imagine... the functions that are below... 

....

HavePotion_UseIt_1:
getlocal0
getproperty QName(PackageNamespace(""), "useItems")
callpropvoid QName(PackageNamespace(""), "useMyInventorySlot_1")

jump Done  ; whut?

HavePotion_UseIt_2:
getlocal0
getproperty QName(PackageNamespace(""), "useItems")
callpropvoid QName(PackageNamespace(""), "useMyInventorySlot_1")

jump Done

...

Done:
Everything but the part where my stack has 3 elements is clear. You do directly to function if potion founded. that's nice.
#9 · 13y ago
nilly
nilly
getlocal0 ; with this i target local prop? dunno... it push the local register to 0...
getproperty QName(PackageNamespace(""), "myInventoryItems"); put in stack myInventoryItems
getproperty QName(PackageNamespace(""), "myInventorySlotContentsId_1"); added the ID of slot 1
getlocal0 pushes the handle of the calling class to the stack. For instance, getlocal0 in Player.class.asasm will push the calling Player object (or class if you will) to the stack. This is useful when you want to get a variable of the class.

The getproperty instruction that follows will use the first thing on the stack, looking 'inside' it for the property you typed in. It will then push a handle to that property on the stack.

The next getproperty again uses the first thing on the stack (pop's it off the stack), looking inside it for the property listed. It will then push a handle to that property on the stack.

ifeq HavePotion_UseIt_2 ; this is a call to a function, i imagine... the functions that are below...
It isn't a function, more like a goto statement. When compiling, the compiler will see "HavePotion_UseIt_2" after ifeq and will look for "HavePotion_UseIt_2:" in the code. It will then code in the appropriate jump including the correct number of bytes to skip.

jump Done ; whut?
jump is the command used when you want to go to another part of the code. Similar to ifeq, only it has no conditionals, it will always jump to where ever you tell it. Done is the label I chose (could be any name). The compiler will look for Done: and code in the appropriate jump.

I think that should cover most of what you are wondering about in the code.
#10 · edited 13y ago · 13y ago
Cygnusx3o
Cygnusx3o
Please move this thread.
#11 · 13y ago
gorgor
gorgor
one time I changed the source code of a C#project ( doing autonexus at 30% based on screenshot).
I changed it to teleport me to an alt if it was available... this was when we could TP on WC...
#12 · 13y ago
nilly
nilly
Well I've done some work on this and so far I got the autospell if priest, autopot, and autonexus working together. There are still a few things that need refining. So far it only works with "Health Potion" but I think I figured out a way to easily check to see if the pot is a heal pot in general. The other thing is having the auto priest heal tied into the auto-nexus seems dangerous, at least to the level 3's and 5's I've been testing it with. When the spell is cast it doesn't immediately heal the character like potions do. It takes time (probably due to communication with the server) and during that time if you're getting shotgunned you're extremely vulnerable as autonexus will not kick in because the code see you have enough mana to cast a spell. The other thing is when the auto-nexus part kicks in, it seems to kick to the player connection screen a lot. This isn't a big issue but something to think about. I'll refine this a bit and post the code later.
#13 · 13y ago
RA
raikoug
Oh... you managed to find when a player is a priest and when he is not? ... wow...
#14 · 13y ago
nilly
nilly
Just posted the source code for it here: http://www.mpgh.net/forum/599-realm-...exus-code.html
#15 · 13y ago
Posts 1–15 of 16 · Page 1 of 2

Post a Reply

Similar Threads

  • Post the scariest shit you have seen!By arunforce in General
    26Last post 19y ago
  • Does the Firefly skin Suck?By Dave84311 in General
    11Last post 19y ago
  • I Always Wondered What Dutch Kids Sung In The ShowerBy RebornAce in General
    6Last post 17y ago
  • Plz I Want Maple Global Hacks And Where Do I Get Game Engine 2 Make The Hacks Work???By mattinthehat in MapleStory Hacks, Cheats & Trainers
    3Last post 20y ago
  • Two Biggest Spammers on the forums!By Dave84311 in General
    20Last post 20y ago

Tags for this Thread

None