Jump to content

KirieZ

Core Developers
  • Content Count

    201
  • Joined

  • Last visited

  • Days Won

    12

Everything posted by KirieZ

  1. KirieZ

    Inserting sql

    I think you are missing a ; at the end of the alter table statement. not sure if this solves everything, but looking into a bit of SQL syntax should help understanding the other errors.
  2. KirieZ

    Fake Players

    Yes, SpriteId is the sprite you are copying from. SpriteName is the sprite/unique name for this monster you are creating now. ViewData / SpriteId is the sprite you are copying the image from. So if you want your mercenary to look like a Knight (Id = 7), SpriteId = 7 should work ( from https://github.com/HerculesWS/Hercules/blob/stable/db/constants.conf#L83 ) It has been ages since I last used that... but I don't think you need to touch client
  3. KirieZ

    Fake Players

    If you are looking to make monsters look like players, but still be a monster (like mob_avail used to do), use "ViewData" field in mob_db.conf. This field was created to replace mob_avail.txt and is equivalent to it, but better for reading/setting up
  4. Hello and welcome 1. I am not sure what you meant or what to answer... If you are asking whether there is an injector ready to use (I think 7 days to day uses BepInEx?) the answer is not really. You can use NEMO to inject windows DLLs, but this is just basic DLL injection. Anything you want to do you are on your own. Talking about RO this is very low level stuff that only a few people know and maybe it is not what you are looking for... 2. Most of this stuff is server sided (a.k.a. in Hercules folders). The GRF will only keep resource files and some lua files will batch some info like map path and descriptions. But exp tables and etc are server sided. For your plans, I think most of the things will be done in Hercules and client lua files, I am not a pro in custom skills though. 3. Player data is saved in you SQL database. Should be possible to play in LAN with some configuration in your clientinfo and hercules files (conf folder)
  5. this script seems fine. May you post your entire item db entry? And please, explain what "not working" means for you (e.g. no effect at all, effect not exactly as expected, etc)
  6. You didn't say what you are stuck at, so I will assume you are just new to hercules and don't know where to look for docs. For bonuses conceded by equipment, item bonus docs is the place to go. You can use general script commands, but for character bonuses, item bonus docs is where you will find the commands specific for items. You can check it here: https://github.com/HerculesWS/Hercules/blob/stable/doc/item_bonus.md (it is also in your hercules copy, at doc/item_bonus.md)
  7. This indeed looks like a mapcache issue. 'Map Cache' is what we call the copy of the maps that Hercules keeps on the server side. While the client has the gat/rsw/gnd files to define what the map looks like and how each cell behaves, the server also needs its own data, specially for the cell part, and this comes into the Map Cache file. The Map Cache files are meant for things like determining water in the map (for skills that needs that) and to tell which cells are walkable/not walkable/shootable/etc. Without it, a modded client could walk through walls and etc. When your client has map files that doesn't match the server ones, you get things like you see a path but clicking it doesn't let you walk through. Because the server sees the map as a completely different thing than what you are seeing in-game. From your description, this seems exactly the case. To fix that, you should regenerate the map cache file for this map using the map cache plugin. I think this guide may help you, it is in the repository docs folder: https://github.com/HerculesWS/Hercules/blob/stable/doc/map_cache.md you should pick the files from your GRF and follow the steps to recreate the map cache of the map you are having issues with. and yes, izlude and the academy map changed a few times along the years.
  8. My guess would be that your lua files are not compatible with your client version. OR those skills have invalid settings in the lua file. The error basically says that "AttackRange" is not set for this skill. Which may be because it is missing or because it was not properly registered by the lua functions.
  9. If I understood right, you want to put the emperium in the middle of the area and spawn barricade monsters in the black line. And while the barricade is still up, no one can go through the cell? I think you can follow how official servers does it (more or less), spawn barricade mosnters + set the cells to not walkable, when the barricade monster is killed, you trigger an event and change the cell to walkable. check out setcell script command
  10. Hello, This is Hercules emulator forum, not rAthena emulator, I think you will have better answers asking in the right place ( https://rathena.org/board/ ). Although versions this old did share some similarities with Hercules, Hercules is quite a different project from rA nowadays. Asking in the rAthena website will allow your question to be seen by rAthena users, and you will get answers from people who actually use rAthena. If it helps, I think you may able to find some info by looking into the vcproj files in your emulator folder, but if I remember correctly, Hercules and rAthena did not name them the same, and I don't know how rAthena did it. Perhaps someone in rAthena forums knows how they were organized back then. CentOS 6 is still downloadable. It is no longer supported, but it still available for download at their own site (just google "centos 6" and look at CentOS website). https://www.centos.org/download/#older-versions
  11. I think clients from 2019 and up supports up to ID 2 billion, even for costumes. I am not sure which client you are using, but newer clients should be the only real option.
  12. Oh, sorry, I misread that part. Hmm, it does look correct to me. I tried copying to my own server and it works. Which client version are you using? One thing I think it is worth trying is to use an ItemId < 32k. Although it shouldn't be an issue, but just to rule out the client doing something weird. Older clients used to support only up to 32k item ids and I think there was a period of time where ETC items could have IDs > 32k but equipments could not (I may be wrong). so I would test a smaller id just to rule this out.
  13. Costumes should go into the costumes equipment slot. Not on normal equipment slot. Try this: Change: Loc: "EQP_HEAD_TOP" To: Loc: "EQP_COSTUME_HEAD_TOP"
  14. I am making a hard guess here since I never used it. But did you try setting "CoolTimeQuest = 1" in OngoingQuestInfoList_True ? The quest from your screenshot has this property set.
  15. Since there is a lot of info going on here, I will try to break into a few questions and possibilities for you to investigate. First, are you using Hercules? Because job_exp.conf doesn't exists in Hercules. We have exp_group_db.conf. I will assume it was just a typo and that you meant exp_group_db.conf for the rest of this answer. 1. you mention HP and SP going to 1 when you change job exp and level. Does this happen while you are below level 99 or because after doing that you are able to go over it and then the issue shows up? Usually, new levels will have issues because the HP and SP tables are not ready for them. To fix this, you have to expand the HP and SP tables in job_db.conf 2. From your print, you mean that you simply doesn't see the EXP bars, right? if I recall correctly, the EXP bars get hidden on clients due to a lua config in the client side. I don't know which config though
  16. Maybe you are missing some official files? Maybe using a newer data will solve it. just from the path it is hard to tell what it is related to. regarding translation, this text is gibberish representing korean characters in a system not ready to handle korean characters. with a korean language pack your computer will render korean text instead of this gibberish. It is not entirely possible to translate it, since the exe and official files relies on this path. if you translate, you would have to update every file that references those original paths, including the game executable This weird string is actually the path + filename of the missing file (in other words, it is not "encrypted", it is just korean characters being displayed in a messy way)
  17. Hercules doesn't have a "episode changer" nor an exact running episode. RO itself doesn't follow a straight line of updates around the world, as each server got different content at different times. We follow kRO, kind of. If you are in pre-re, you are likely around 13.2, the latest episode before renewal, and you likely have most content (at least as far as I know). For renewal, there isn't a specific episode, we are missing some stuff of pretty much every renewal episode. Like, we have Rebellion (which is from 15.x) but we don't have faceworm instance which if from 14.x. If you check this filter in GitHub for example, you can see a few episodes and their missing/implemented content: https://github.com/HerculesWS/Hercules/issues?q=is%3Aissue+is%3Aopen+episode
  18. it might be that your client was modified to use a different item info file. Which client are you using? and did you use "Load Custom lua file instead of iteminfo*.lub" patch on nemo? if you have used this patch, you have to use whatever name you set there. The error in your print is saying that it tried to find the image (null).bmp, most likely it is getting something wrong while loading your lua. Did you get any error when the client starts? this may also give a hint about the issue. -- for signboard, deleting it will make the client load from GRF, the right way would be to edit it to not show signboards (by emptying the list of signboards)
  19. These are all related to your client Lua files. (Note: ".lua" may be ".lub" and you may have some other suffix depending on main/RE or if you have some nemo patch renaming them) The small yellow/white text is part of Quest UI, it is in System/OngoingQuestInfoList_True.lua The item issue is likely related to some issue in System/ItemInfo_True.lua The icons are in data/luafiles514/lua files/signboardlist.lub
  20. The reason I mentioned enabling/disabling plugins, and also trying a clean hercules is to help you find where the issue is. There is no way to fix without knowing where the issue is. If you can find the hercules version (follow 4144 advice above), try creating a separate folder and cloning hercules in this version and build and run it with no further customization (just change client date and set pre-re). Make a totally new server, should take you only a few minutes. This will tell whether it is an hercules bug or a bug in your changes (most likely, at least I don't remember hercules having this issue in the last few years). If it is an hercules issue, you may search the fix in herc repo and apply manually, or update your emulator, or fix it yourself. I don't think there is another way around it. Hercules changelog may help find what to look for in this case. If it is an issue with your custom changes, disabling your plugins and scripts can help you pin point where to dig further. - If you disable all plugins and scripts and the issue persists: The issue is changes in source itself (so you are limited to src/ folder) - If it works, try to enable 1 plugin, test, 1 more plugin, test, and so on, until you find the culprit (or find that it is not a plugin issue) - If all plugins are loaded and drops are still working, enable a few scripts per time, test, enable more, until you find the culprit (so you have only a few scripts, which you can them do the reverse process: disable 1 per time until it works again: you found the actual culprit) If the issue is in source, you can use a debugger (Btw, what you pasted above is NOT a debugger, it is just the build log). A debugger allows you to step through each line of code and check values there, this will help you find some line that is no behaving as expected. You seem to be using Windows and Visual Studio, so you can see a bit about debugging here: - https://github.com/HerculesWS/Hercules/wiki/MSVC-Crash-Debugging (This will give the steps to run the debugger -- you won't get into the "crash step" though) - https://learn.microsoft.com/en-us/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=vs-2022
  21. I will add some ideas and questions here - Are you on latest herc? - Renewal or Pre-renewal? - Have you tried a clean herc? (This will help solve the question whether it is an Hercules issue or a customization issue) If you change rates back to the original, does something drops? - If it does, maybe there is a bug there... - If it doesn't, ok -- rates shouldn't be the problem Does using mobinfo shows the drops? If it doesn´t, there might be something wrong with your drop loading If a clean herc also shows this problem, we would have to look the entire drop logic (or in case last test is "yes", something specific for bonus calculation), I don't think there are other ways. If a clean herc works fine, you have to debug your customizations. Things to consider: 1. Do you have any installed plugins that affects drops? 2. Do you have scripts that affects drops? 3. If you disable every plugin, does it solve? 4. If you disable your custom NPCs, does it solve? 5. Do you have source changes? If yes, any of them touches drops? this may be the culprit. 6. If none of the above helps, I guess the only way will be to really go into the drop logic and try to find where something is going wrong (debugger may help here) Hope this helps
  22. I would say that possible or impossible really depends on how far you want to go and how much you know about programming / hercules source It is not supported by default. So if you are looking for a config to enable it, the answer is: no, not possible. But we have complete access to Hercules source and database so it is possible to just make a new implementation of a new storage (or modify the existing one) that works based on character, just like we have storage for guilds and for accounts. I don't know if it matters for the client which kind of storage you are using, if it does, just send it as an account storage and should work fine. The server side is what really matters. If you are going forward with the idea of making a new storage, looking into the current storage implementation may serve as an useful reference (I think starting at src/map/storage.c and src/char/int_storage.c would be great starting points)
  23. It won´t be able to read the variable itself, but if the variable value is included in soemthing that is sent to the player (e.g. in a mes), it will be written in plain text there. if .@encrypted$ is part of the url you are writing with mes command, it will be in the text. .@encrypted$ = "lalala"; // Until now, .@encrypted$ is only visible to the server .@urlForClient$ = "<URL>Code Page<INFO>http://www.myserver.com/antibot?code=" + .@encrypted$ + "</INFO></URL>"; // .@urlForClient$ is still only visible to the server, but it contains the value of .@encrypted$ inside it (Because we are concatenating) mes("Go to " + .@urlForClient$ +" to get your code"); // The text will be sent to the client, including the url, that includes the text in ".@encrypted$" // The client doesn't know that there is a concat here, but it will receive a text like that: // "Go to <URL>Code Page<INFO>http://www.myserver.com/antibot?code=lalala</INFO></URL> to get your code" // // Note the value originally in ".@encrypted$" is part of this text (because I concatenated it in the steps above). // I only get the final text in client, but I could just search for "code=" and pick the value in front of it. Or search for "INFO>" and get the entire URL. input(.@input$); if (strcmp(.@theRealCode$, .@input$) == 0) mes("Ok, you are not a bot"); //... But you are right that, this value being encrypted, the bot developer/user have to open the website and scrap the decrypted value that was shown in there.
  24. I think I should step back first and explain a few things: Most things the bot can do requires someone that knows what they are doing. Making it talk to custom NPCs generally requires someone to do some advanced config telling it what do to. It is not simply "use this super cool npc" and it is ready. At the very least people would have to code the conversation sequence, etc. And as more custom stuff is required, it will require more knowledge for the one coding it. And I may be totally wrong, but usually the amount of users with advanced knowledge is far smaller than the ones with very simple knowledge of setting a "kill monster and use storage" config. If the target is to stop even the ones with advanced knowledge, most things you can do using Hercules only will be bypassable. If you are targeting the majority that has less knowledge, simply having a NPC may make it somewhat hard for a considerable amount of botters. I think the main thing to keep in mind is that, the bot is simply another software, and it is coded in a programming language (openkore specifically is coded in Perl), anyone with knowledge to change it can code it to do anything the language allows them to, even outside RO scope (if there is a way to open a web page in perl, openkore could be coded to do it too). General purpose antibot measures are hardly things made in the game itself, and it is hard to make it completely safe (and sometimes it becomes something too intrusive to the real players). Measures against packet-based bots tends to be changes in the client/server communication, like custom packet encryption, or requiring other protection software running together with the game, which performs checks in the user client/computer, etc. But these only targets some classes of bots, and even them may be bypassed if there is someone with the knowledge and desire to do so (Let's say, 0.1% of botters would be able to do it? or even less..). When people limit the scope of what their cheat can do, they can even get more creative: I saw cases where people used image recognition to drive where their mouse will click, so you are not even touching the game in unnatural ways, but you get a limited scope as you have to make the image recognition pick exactly what you want (e.g. talking to a NPC gets much harder). keyboard/mouse macros are another case too (ok, this one wouldn't work to talk to NPCs, but works for hunting aggressive monsters, for example). And this is more of a suggestion: be careful to not make something so intrusive that real players starts hating the antibot haha ---- Going back to your message, If I understood it right, your NPC will be something like that: .@theRealCode$ = ...; .@encrypted$ = getMyEncryptedCode(.@theRealCode); // Imagine getMyEncryptedCode does the encryption work you mentioned mesf("Go to <URL>Code Page<INFO>http://www.myserver.com/antibot?code=%s</INFO></URL> to get your code", .@encrypted$); input(.@input$); if (strcmp(.@theRealCode$, .@input$) == 0) mes("Ok, you are not a bot"); //... If that's the case, as long as the bot user knows how to code the bot, they could read the message, make a request to this URL (which would have the encrypted code), get the value, and input it. Maybe if the URL shows the text inside an image will make it harder? probably, extracting text from image would be harder (not impossible, there are many OCR technologies today). If the programmer has knowledge to do it, and it is feasible to programmatically do something, it can do, and may be even faster than a human at that. Note that this requires someone with programming knowledge, so as long as there isn't someone with knowledge who does it and give to everybody, you would be blocking people who are simply bot users with the basic knowledge of how to config it (which I think is the majority). But not someone that knows what they are doing.
  25. Not the script itself, it will be able to read what is being sent to the client. This is NOT the script, but messages (packets) to do the actions that the client has to see. for example, when you a script like that: prontera,150,123,4 script Nice Npc 1_M_01,{ mes("Hello"); mes("How are you?"); next(); switch (select("Fine", "Bad")) { case 1: .@var = rand(100); mesf("Cool! %d", .@var); close(); case 2: mes("That's bad"); close(); } } Let's go back to the NPC identification first, once the player character (regardless of being a real client or a bot) gets near the NPC, hercules will send something like: - Hey, there is a unit of type NPC (GID: 1234, Sprite: 47) at coordinates 150,123 looking in direction 4. This NPC is named "Nice Npc". The player clicks the NPC, and client sends: - Hey server, I want to talk to unit 1234 Hercules will then process this request, see that the player is in distance and start executing the script, and thus will start sending messages telling the client what it needs to do: - Hey, Show Message "Hello" (first mes) - Hey, Show Message: "How are you?" (second mes) - Hey, Show Next Button At some point, the client will send a next clikcked input, and then Hercules: - Hey, Show Menu: "Fine, "Bad" Client will then send whether it clicked in 1 or 2, let's say the client says it clicked 1. Hercules wil lthen send: - Hey, Show Message "Cool! 50" --- Or any random number here ; note that the variable and "rand" didn't send info to the client - Hey, Show Close Button It won't send the script itself, but the stuff it needed for the client to show. It won't give script internals, like variables or function calls, but if there is something that does something in the client (e.g. render a message, show a next/close/menu, show a effect), these will be sent to the client in a message format that is suited for the communication. Note that some things in this example were NOT sent to the client: - Variables, - The random itself -- only the result of the execution is - The message for case 2 (we just clicked case 1, only case 1 will be sent) You can check what is being sent to the client using packetlogger plugin (https://github.com/HerculesWS/StaffPlugins/tree/master/4144/packetlogger), it will dump every packet sent on the network to a file (in binary form, so some knowledge on how RO networking works would be required to actually understand everything). The example I gave before that openkore could generate a script is that, if you pick all those "Hey, SHow MessagE" and write to a file as being a "mes("message")" , you kinda create the NPC back. it is not perfect, but except for the internal logic, you got all the messages, menus, effects, etc
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.