Hi there, i was always interested in how to develop software, this summer i said to myself "why not?" and i started to study a bit of c++.
So the problem is, i'm playing nostale right now so i tought i could start with a bot for nostale to learn it but it is harder than i expected.
I started with simple security options, i got an open source packet logger and developed my own ui with qt, after some time the security worked just fine so i started with something more serious, how to get a list of the items in my inventory. And here is the problem: i can't get it to work. I tried to scan with cheat engine for the current amount of an item, dropped a part of it and scanned for the next value to find a single result, right clicked it and clicked on "find out what access this address", than i had four results with increased access with open inventory and no access with closed inventory. I click on the first result use the address found in "the value of the pointer needed to find this address is XXXXXX" to dissect the data structure. what i find is something like this
There are item id's and current amount, i'm doing it right? do you have suggestions on how to go about it from now?
If you have some time to waste on this i would be glad, and if you can explain how to go about it like you would explain it to a monkey. Thanks.
First, thank you very much for your answer. I tought about that but i get the inv packet only when i start the game so if i inject the dll after i can't access the inv packet anymore.
I checked the logs and i see only the "npinfo 0" packet sent before all the info about the character. I need to send that again when i refresh the item list in the ui? Isn't it risky? And when the bot will use an item (potions for example)do you think it's "safe" to send the packet or do you suggest to use the in game function if possible? Sorry for asking so many questions, i'm just very new to this.
As long as you craft the packet correctly it should be safe. Calling a game function for using items will only craft the packet for you and send it to the server.
First, thank you very much for your answer. I tought about that but i get the inv packet only when i start the game so if i inject the dll after i can't access the inv packet anymore.
I checked the logs and i see only the "npinfo 0" packet sent before all the info about the character. I need to send that again when i refresh the item list in the ui? Isn't it risky? And when the bot will use an item (potions for example)do you think it's "safe" to send the packet or do you suggest to use the in game function if possible? Sorry for asking so many questions, i'm just very new to this.
I would suggest to customize EWSF.EWS in order to auto-inject your software and continue full packet-based.
If being memory based is a requirement (which I wouldn't recommend, because of the complexity and the maintenance it required), please make it clear
As long as you craft the packet correctly it should be safe. Calling a game function for using items will only craft the packet for you and send it to the server.
So, i tried to use some items with the packet logger opened and if i got it right it is "u_i 1 playerid inventorytype PositionInInventory 0 0"?
I can find the playerID scanning the memory for the value i find in the cond packet, the inventory type for basic items is 0 for equipment, 1 for potions and the like and 2 for snacks. For every item i use the last two values are 0 0, i assume i can go with those for almost every item?
I'm still stuck on how to get the item list.
Quote:
Originally Posted by Apourtartt
I would suggest to customize EWSF.EWS in order to auto-inject your software and continue full packet-based.
If being memory based is a requirement (which I wouldn't recommend, because of the complexity and the maintenance it required), please make it clear
I'm sorry, like i said i'm very new to this, can you elaborate please?
From what i read in this forum the safest option for target, attack and walk is to use the in-game functions, am i wrong?
As long as you craft the packet correctly it should be safe. Calling a game function for using items will only craft the packet for you and send it to the server.
So, i tried to use some items with the packet logger opened and if i got it right it is "u_i 1 playerid inventorytype PositionInInventory 0 0"?
I can find the playerID scanning the memory for the value i find in the cond packet, the inventory type for basic items is 0 for equipment, 1 for potions and the like and 2 for snacks. For every item i use the last two values are 0 0, i assume i can go with those for almost every item?
I'm still stuck on how to get the item list.
Quote:
Originally Posted by Apourtartt
I would suggest to customize EWSF.EWS in order to auto-inject your software and continue full packet-based.
If being memory based is a requirement (which I wouldn't recommend, because of the complexity and the maintenance it required), please make it clear
I'm sorry, like i said i'm very new to this, can you elaborate please?
From what i read in this forum the safest option for target, attack and walk is to use the in-game functions, am i wrong?
I'm sorry, like i said i'm very new to this, can you elaborate please?
From what i read in this forum the safest option for target, attack and walk is to use the in-game functions, am i wrong?
EWSF.EWS is a file you have in your Nostale directory. In reality it is a .dll file that exports two functions: ShowNostaleSplash and FreeNostaleSplash.
What you can do is to make your software to export those functions and consider ShowNostaleSplash as your current main function.
That way, you make sure your software is ready even before the player connects, and therefore, be able to get the inv packets.
Here is an example:
I wouldn't say one is safer than the other, but it is indeed easier to screw up by using packets, because game functions (not all, but some of them) have some safeguards.
If your packet-based software is able to make you ban, so will your memory-based software, and the other way around.
EWSF.EWS is a file you have in your Nostale directory. In reality it is a .dll file that exports two functions: ShowNostaleSplash and FreeNostaleSplash.
What you can do is to make your software to export those functions and consider ShowNostaleSplash as your current main function.
That way, you make sure your software is ready even before the player connects, and therefore, be able to get the inv packets.
Here is an example:
I wouldn't say one is safer than the other, but it is indeed easier to screw up by using packets, because game functions (not all, but some of them) have some safeguards.
If your packet-based software is able to make you ban, so will your memory-based software, and the other way around.
I tought i had seen something similar when i started this bot to learn c++ and searched some open source projects for reference.
Turns out it is an unfinished project of yours, if i got it right the final result would be something similar to that.
Then to summarize it would be like this(?):
for packet-based bot
pros:
Easier to develope.
Way less maintenance needed because there is no need to update patterns and pointers.
No need for asm code.
cons:
Need to start the bot before the game?
Higher chance to get a ban if i mess up the code and send the wrong packet.
longer code.
for memory-based bot
pros:
Less chance to get a ban if i mess up the code because probably the game will just crash?
Can start the bot whenever.
Less code.
cons:
Harder to develope.
Need to update pointers and patterns after some game updates.
Need asm code.
I think i will go for the memory-based bot for now, after all i'm trying to develope it more to learn to code than to use the bot itself.
Still, thank you very much for your help.
Ty very much, this is what i search for.
Can you explain to me how you got the pattern and the offsets or suggest some tutorial on how to do it? So i can learn and search by myself other patterns or pointers.
this is a good starting point. The given structures are outdated but the pattern (memory signatures, or how you call it) still work. (this saves you hours)
Add the address that is in the value of the found address with the pattern to
"Dissect data/structures" play around with it and you understand.
If you use "find out what access this address" on the given pattern for SceneManager you almost find all the functions you need to write a bot.
[LIST] WarRock Privat Server List! [LIST] 07/27/2013 - WarRock - 46 Replies http://archiv.so/images/2013/03/01/bQaXx.png
Hallo elitepvpers Community!
Da es in letzter Zeit viele unnötige Threads, mit Fragen zu guten
Privat Servern gab, möchte ich es Neulingen (Newbies) etwas erleichern!
Und das ganze soll durch diese Liste an mir bekannten WarRock P-Servern
geschehen.
Sollten euch noch weitere Server bekannt sein, schreibt den
Thread-Link & Namen als Kommentar, damit ich diesen Server
eventueller Weise auch noch rein editieren kann.