Jump to content

fourxhackd

Members
  • Content Count

    28
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by fourxhackd

  1. @vBrenth Thanks for the additional info. I'll do a little more testing on this. I'll write what I find here.
  2. When I inspect @mi Mavka to see the droprates of a mob, it shows the following: We can see that Witherless Rose drops at a 9.00% chance. However, when @whodrops is executed, the Mavka is shown multiple times with various drop rates: Please take note that above, I made a source edit so that the mob ID will be shown beside the name of the mob. Unusually, it shows a drop rate of 16.80%, 16.20%, and 9.00%. I was expecting that it should show the Witherless Rose at 9.00% chance ONCE. Do you guys have some idea why this is happening? I've been reading up on @whodrops and how the item_data struct is loaded, but i'm kind of stuck.
  3. I debugged Stolao's script and tried to make it work for Hercules (December 2018). Here's the result: https://gist.github.com/darrensapalo/f0c5dec2b988f7c4d9be8d24d91b6e90 I'm linking outside of Hercules into a Github gist so that it can easily be branched out to, if necessary.
  4. Amazing quality, good formatting for the zip folder (already ready to be copy-pasted into data folder or GPF/thor). Great content!
  5. I experienced something similar. I was using FluxCP Addons - Vote for Points by User Feefty which was last updated in 2015. I forked the code and updated it to do the following: fix the incorrect vote points not being read caused by some SQL nuances, update instructions to include chmod for the image directory to allow image upload If you're still trying to fix this problem, I suggest you apply the fix found here: https://github.com/darrensapalo/FluxCP_Addons-VoteForPoints/commit/76f456f24a689971f2c6dcd87650e0d3d8f626f4
  6. I used the resolution 1440x900 and it worked as well. More details.
  7. Reserving this post. Topics Secondary topics. Open source development. Contributing to rAthena or Hercules. External links to other important concepts in RO dev. Link to another thread, to gather data: a poll about what are difficult topics that lack documentation.
  8. Reserving this post. Topics Networking. Ports, port forwarding. IP Addresses. Packets. Packet versions.
  9. Reserving this post. Topics Client side development. Client side data and resources. Client side tools. Hexing, patching, configuring your own client.
  10. Reserving this post. Table of Contents Server side development Source code and what it means to compile Server configuration and customization NPC Scripting Source code editing Mid-level overview of Hercules The illustration below shows a more detailed view of the server (left) and the client (right). As you can see, it is OVERWHELMING, especially for a thirteen year old. So listen to me first when I say I want you to focus on the left side, which is the server side aspect of RO development. Server-side development On the left side, we will be focusing on the server-side development. We begin at the top most part of the server-side, which begins with the source code. What does "Source code" mean? The quote above and below is lifted from my own writings regarding Compiling and source code in the Hercules Wiki. Source Code and what it means to Compile Analogy (Language when traveling) You are a Filipino. You know the language Filipino as your main language. When you study in school and university, you learn the language English and Spanish. When you travel visit Korea, you learn a little Korean too. You are becoming more and more adaptable wherever you go. You can go to Europe, Spain, Korea, etc. When you go to South Korea, you think of ordering food because you will eat. First, you think in Filipino "Gutom ako" which means "I am hungry" in English. So you get your Language Book for Koreans and say the korean counterpart which is 나 배고파 (na baegopa). By speaking Korean, you are understood by people in Korea. Parallelism in RO Development In RO Development, your source code is your main language. In your head, when you are thinking, that is the language that you hear when you think. In the example above, the source code is Filipino. I, fourxhackd, think in Filipino. When I have something I want to share in the forums of Hercules, I translate my understanding into the language necessary for you the readers, so that you will understand me. Changing from Filipino to English is called translation. Changing from source code to executable code is called compiling. Translation is necessary because not all people are Filipino, or English. Some are Korean, some are French, Chinese. Compilation is necessary because not all machines are Windows, or Unix. Some are OSX, Ubuntu, Fedora, etc. Because there are Language Books or Dictionaries for Filipino, we can perform translation from Filipino to another language (e.g. to English). Because there are Compilers for the C Programming Language, we can perform compiling from C Source Code to Runnable Executable Files (e.g. for Linux). Because we already know what ideas we have in our minds that we want to share, and because we have dictionaries, we are able to adapt and talk to people in different countries. Because Hercules shared with us the source code for RO server development, and because we have compilers, we are able to deploy RO server development code for any environment. Given the above analogy and explanation, I hope that you understand better what the words "source code" and "compile" mean, and why they are important. We will continue now with the assumption that you understand compiling source code, and that you will be able to follow different kinds of guides available throughout the forums/knowledge-base. Now that you understand it better, we can conclude this section by saying the following: Review the diagram at the top of this post again. Through compiling, we can produce produce the server executable programs (map, char, and login) from the source code. Extended Reading On Compiling and how to Compile, specifically in the context of Hercules - https://github.com/HerculesWS/Hercules/wiki/Compiling Wikipedia - Compiler https://en.wikipedia.org/wiki/Compiler Wikipedia - Source code https://en.wikipedia.org/wiki/Source_code Server Configuration We will now continue to talk about configuring your server. This is the bottom part of the left side of the diagram. I will not go into too much detail on this, since configuration is pretty much straightforward and well documented. The only advice I have is to read the documentation already provided! Go to your hercules_server_folder/doc and read everything! Read all the comments that your wise masters have left behind for you. It is my opinion that configuring and customizing the server is the simplest part of RO development, for the simple reason that you need only change one value to another. Do not be afraid to test something out, and to bring it back if it doesn't work. It is okay to make mistakes. For example, in conf/map/battle/exp.conf: // Rate at which exp. is given. (Note 2) base_exp_rate: 100 // Rate at which job exp. is given. (Note 2) job_exp_rate: 100 If you are not sure what 100 means, then first read the documentation above. //========================================================================= // Battle (Experience) Configuration File //========================================================================= // Note 1: Value is a config switch (true/false) // Note 2: Value is in percents (100 means 100%) // Note 3: The max level of classes is stored in the exp table. // See files db/exp.txt and db/exp2.txt to change them. //========================================================================= Note 2 means that value is in percent, and that 100 means 100%. Now you understand! Now that you understand, try making it 200. See the difference. Then make it 10000. Test it out. Find out for yourself. It is important to think critically: "I wonder what will happen if I change this". Think. Test. Understand. That will build your confidence that you know what you are doing. NPC Scripting NPC Scripting is a type of server configuration, except that it focuses solely on NPC scripts. Just like my advice in general server configuration, read the documentation! Open hercules_server_folder/doc/script_commands.txt and read the whole document until it has been ingrained in you. In school, you are forced to read text books to understand math, or science. However, we cannot apply it immediately in the world to understand the value of math and science. In RO development, you CAN read text books (like the script bible) to understand NPC scripting. Unlike math and science, your understanding of scripting can BRING TO LIFE new NPCs into the world. Celebrate this new found power of creation! Unfinished This guide is not yet finished. I'll be writing about it in more detail soon.
  11. Introduction I'm planning to write a guide to Ragnarok Online development that begins with the big picture of server development, and transition into more detail through a series of carefully selected newbie questions to guide our path. I'll be providing extended reading materials (other people's guides, relevant tools) relevant to the current topic. Table of Contents How is this guide different Expectations Learning RO development the best way Who are we and what do we know? What do we see in games? High-level overview of Games Mid-level overview of Hercules How is this guide different? The guide will read less like a technical document that tells you "what to do". It will read more like a novel that walks through the questions a newbie would ask, just like when a newbie is on an adventure and exploring the unknown. So don't be afraid of the unknown, or the difficult challenges ahead. That's where we're going (there's more EXP there), and we'll find treasure and grow stronger that way! Expectations This guide works with the following assumptions: The target audience is a thirteen year old who has no computer science background at all (Or at least, the guide will explain things very simply to make sure even thirteen year olds could do it). Software development terminologies will be given two things: (a) an Explain Like I'm Five years old explanation; and (b) links for deeper reading. The target audience has never coded, or scripted before. The target audience has played other games. Preferably online games and RPGs such as World of Warcraft, DotA 2. The other games will be examples I will use when explaining certain topics. Learning RO development the best way Here are a few suggestions to make your RO development experience less frustrating and much, much more pleasant: Have an interest in playing RO and wanting to have an RO of your own. Have a little bit of patience and diligence to read about how things work. Have commitment to keep your eyes on what you want to accomplish. Cherish every victory no matter how small (e.g. make this npc talk, make this item give +99 LUK instead of +1 LUK). Every victory is a victory. Be open to experiencing things that you do not know. Have the humility to acknowledge what you cannot do and what you do not know, and to ask for help when you are lost. Have the humility, respectful reverence to the forum leaders who spare some of their valuable time not only to educate and teach you what they know, but also who contribute to building RO servers for free (open source development). Who are we and what do we know? We begin with what all gamers know: we like to play games. What are games that you are actually familiar with? I know I've played RO back in 2003. I played counter strike a decade ago, I tried out Gunbound and Runescape, I played Adventure Quest (Flash game). I even enjoyed writing in Gaia Online, doing role-play in forum threads. During my stay in the university (2011-2018), I played loads of DotA 2 and it showed me what competitive/professional gaming looked like, showing me the depth of gaming that I haven't seen before. I played shooter games like Overwatch, PUBG, Destiny 2, and different kinds of games from Steam like Project Zomboid and Stardew Valley. The reason why I bring up different kinds of games is because this is our shared or common knowledge. It is what unites you and me, two strangers in the internet. Our common love for playing RO and playing games in general. So now that you've gotten to know me a little better, we now ask the question: How does a person transition from a gamer into a game developer? What do we see in games? Scenario It's 8PM and you are at your house. You just finished having dinner, and are now about to start playing in your favorite RO private server. You go to your computer, you open up the game's patcher. You find some updates. "New game content!" you think to yourself. You go to the website to read about the changes: It might be changes to the items, buffs to your favorite RO class, or changes to the map, or new NPCs and events and dungeons! Your RO finishes updating, and your game begins. What happened? We begin our journey into game and server development with terminologies. Terminologies? Why do I have to memorize these things? We have to know what we call things to make sure we understand each other. If you don't understand me, you will not learn. If you get confused, you will get lost. If you do not know the terminology for the things you are having a problem with, you won't know how to say what your problem is. Game Website - This is the website where you go to learn how to install a private RO server, read about game changes and news, and interact with other people in the community through forums. Patcher - This is the tool that you use to make sure you're updated. Otherwise, you'll encounter outdated game information, problems, and worst case scenario: crashes. Game Client - This is the runnable program that you are in when playing the game. For example TalonRO.exe, or AeRO.exe. From the perspective of a gamer, these are all the areas where they interact with a game provider: They use the website to download the installer. The patcher updates the game. They run the game to play. High-level overview of Games What is a client? Simply put, a client is an application or a program that communicates with a remote system called a server. These terminologies are used when under a system that follows a client-server architecture. Alright, so what is a client and a server architecture? Imagine the following: You go to a restaurant to eat dinner. When you sit down, the waiter comes to you. The waiter is who you talk to and interact with so that the kitchen knows what food to cook for you. The waiter who takes your order and makes sure you are having a good time is the client. He is the interface between you and the kitchen. The kitchen which deals with the inventory of goods and making sure that chefs are doing the processes to produce food is the server. You can have multiple clients (e.g. TalonRO.exe distributed to different players across the world) that connect to one server. That in a nutshell is a client and server architecture. What does a client-to-server interaction look like? The illustration below is a very simplified illustration of a client-server architecture. This means that a client The server (on the left) and the client (on the right) communicate with each other. That is how the game works. Green - When it comes to accessing a game website (which is actually a web server) requires a web client or web browser like Google Chrome or Mozilla Firefox. Orange - When your patcher is running, it asks the question "Are there any new updates?" specifically to a patch server, which has a master list of patches. It's like how a customer in a restaurant asks "What can I order?" and the client tells them "This is what the kitchen can cook". Blue - When your game connects to the server, it not only can ask questions (e.g. "What is my player's level and stats?") it can also tell the server what to do (e.g. "Move my player to prontera X and Y location). The client interfaces between you (the player) and the server. That's the high-level overview of how games work. It's a combination or orchestration of fast-paced conversations between people (players on clients) and machines (servers that allow players to play together). There are machines in between to facilitate all of these complicated processes. Keywords: Port forwarding One example of a machine that facilitates people playing together is Hercules, or rAthena. These are game servers that follows a specific set of rules or instructions that dictate what is expected when RO clients connect to RO servers. What do you mean by "follows a specific set of rules or instructions"? A protocol is a set of specific rules or instructions. Having a set of specific rules or instructions makes sure that we follow the same rules. For example, if we play the game Rock Paper Scissors (roshambo, bato bato piks), we need to know the following rules: You're supposed to make a choice of either Rock or Paper or Scissors. You only choose one. You're supposed to make a choice after counting 1, 2, and 3. Rock is represented as a closed fist. Scissors is represented with two fingers (index and middle) extended. Paper is represented with five fingers extended. Rock beats Scissors. Paper beats Rock. Scissors beats Paper. When we learn about the rules and follow them, we can play Rock Paper Scissors. Two players can then follow the rules, understand each other, and agree as to who won the game. If players did not follow the rules ("1, 2, 3 - Suddenly, a player shows Fire which he says beats Rock Paper and Scissors!") then people would be confused, feel cheated, and things will not work. There will be misunderstandings. When it comes to game servers, we need a set of rules to follow as well. The protocol is the set of rules for how the server and the client will communicate. If your game server and your client does not follow the same protocol, they will have misunderstandings and they will not work. An example of protocols in RO development is the use of the following port values: 5121, 6121, 6900. If you don't have a client that talks to the server at the expected port, your server will be confused and will not respond to any requests. An example of protocol is the agreement on which packet version to use. If you use the wrong packet version, your server will not understand the packets being sent by your client. Relevant Keywords: Packets, PACKETVER, Compiling, Ports We talked about an example of machines that facilitate processes to enable multiple people to play together (MMORPG). An example of this is Hercules, which we look into more detail below in the following post.
  12. Using @Dastgir's updated charms.c plugin found in his Github (Apr 29 2017), I was able to test it and it seems to be working fine on my build. Dropping the item from my inventory results to the effects (+1 STR in my case) to disappear. Picking the item up returns the effect. The command @itemreset removes the effect as well. I do however, experience a warning when I build on a unix-based (Ubuntu) system. The warnings showed up when I executed the command: make clean && make all Warnings Despite the warning, the effects seem to be fine and I am currently having no problems whatsoever.
  13. I solved the problem by starting from scratch: 1. Selecting a different RagexeRE client. 2. Re-hexing the said unpatched client. 3. Using an updated translation. And it works. For details of my client configuration and context, see my post in rAthena. Copy-pasted for redundancy/availability 2017-06-14 RagexeRE client Unpatched Client Download Link. Asheraf Translation used Commit 0ceb79723f8ffae69d5e1e5ff3ba99efb8bd6a08 Download link NEMO NEMO patcher Download Link Client Patching Profile settings 3 Chat Flood Remove Limit 8 Custom Window Title 9 Disable 1rag1 type parameters (Recommended) 13 Disable Ragexe Filename Check (Recommended) 16 Disable Swear Filter 18 Skip Service Selection Screen 20 Extend Chat Box 21 Extend Chat Room Box 22 Extend PM Box 23 Enable /who command (Recommended) 24 Fix Camera Angles (Recommended) 28 Increase Headgear ViewID 31 Increase Zoom Out 75% 33 Always Call SelectKoreaClientInfo() (Recommended) 34 Enable /showname (Recommended) 35 Read Data Folder First 36 Read msgstringtable.txt (Recommended) 37 Read questid2display.txt (Recommended) 38 Remove Gravity Ads (Recommended) 39 Remove Gravity Logo (Recommended) 40 Restore Login Window (Recommended) 41 Disable Nagle Algorithm (Recommended) 44 Translate Client (Recommended) 46 Use Normal Guild Brackets (Recommended) 47 Use Ragnarok Icon 48 Use Plain Text Descriptions (Recommended) 49 Enable Multiple GRFs (Recommended) 50 Skip License Screen 52 Use Custom Font 53 Use Ascii on All LangTypes (Recommended) 64 @ Bug Fix (Recommended) 65 Load Custom lua file instead of iteminfo*.lub (Recommended) 69 Extend Npc Dialog Box 71 Ignore Resource Errors 72 Ignore Missing Palette Error 73 Remove Hourly Announce (Recommended) 74 Increase Screenshot Quality 76 Enforce Official Login Background 84 Remove Serial Display (Recommended) 90 Enable DNS Support (Recommended) 91 Disconnect to Login Window 97 Cancel to Login Window (Recommended) 100 Disable Multiple Windows 204 Increase Attack Display 207 Resize Font 213 Disable Help Message on Login (Recommended) 216 Hide Cash Shop 234 Ignore Lua Errors 240 Load custom ClientInfo file Thanks again for your valuable time, Asheraf.
  14. A very useful client that I am currently using. My hexed client configuration is described here if anyone is interested, while the kRO client I used was this one.
  15. Formatting issues, indentation, and usability of the guide make it a little difficult to understand. I wrote a simple-to-understand guide (with pictures!) as a response to the original post in rAthena. I hope that someone finds it useful. Edit: I called it the original post in rAthena because the formatting of sir @Neo's post in rAthena was much more readable as compared to here.
  16. From what I understand, you have a novice/beginner experience in starting up a server, so "compiling" must be a difficult concept. I wrote about it in more detail here: https://github.com/HerculesWS/Hercules/wiki/Compiling Start with figuring out your operating system, so that you can determine which guide to follow. Once you know what operating system to use, just follow the instructions in the mapcache guide. Let me know what part you get stuck in.
  17. Building the mapcache on a Windows machine Yes, I've tested building the mapcache on Visual Studio on a Windows machine. I've updated the documentation for how to build the plugins (like the mapcache plugin) for windows. It is under Building HPM Plugin for MSVC. I also included the screenshots that used to be in the mediawiki site. Building the mapcache Hello there. I just recently updated the guide for building the mapcache on a Hercules server (December 2018). It's found in the Github Wiki under Mapcache. It generally covers more-or-less the same thing that Myriad has already discussed. What it requires from you is: You need to understand how Hercules' Plugin Manager (HPM) works You need to understand how to add and build a plugin using the HPM. Since you're trying to build the mapcache, just go here and read about the Mapcache. If you think some parts of it are confusing, or difficult to understand, please respond on this thread so I can add details to the tutorial.
  18. I see you want to learn how to script NPCs. On your Hercules server folder, check out the documentaton for scripting. This will start you off so that your "little knowledge in this area" becomes bigger. You'll eventually become a great scripter! The documentation for scripting is found in: doc/script_commands.txt I want to do X, where do I look for that? Specifically for the things you want to learn, look for the following sections in the document: Create an npc Script loading structure, Script file format which requires "xxx" zeny Variables, Zeny to register a "guild_name" Variables when the registration ends *initnpctimer if it was the guild name Operators, conditional operators teleport *warp the guild members Arrays Arrays may be a more difficult topic to learn on your own, but reading other people's scripts will help you understand how it works. You can ask questions. If you get started on scripting it, I can give you some feedback on your code when I'm free.
  19. Problem When I open my newly hexed 2018 client, I'm getting the errors as shown in the images below. First attempt details Client version 2018-06-20eRagexeRE.exe downloaded from Nemo downloadable clients Hexed using 4144's continuation of the Nemo client What I think is wrong I know that when you get a client and hex it, you need to get the corresponding data folder/System folder for that RO to make sure that it finds the data that it needs. I highly suspect that my problem is caused by my client's data and System files which are for version 2014-02-05bRagexe.exe. I have a good feeling the data structures have changed in the course of almost five years. Do you agree with my diagnosis? If so, where do I find the data/system files for more updated versions? Are the data and System files something I'm supposed to extract from Full Clients itself? Is it not hosted and available somewhere? Edit: I tried: Downloading a full client 2018 (2018-08-13) to make sure my System and data files are updated My DATA.INI set up so that rdata.grf is given priority (=1), then data.grf comes next (=2). I avoided using my existing GRF, so that I am only using data from the full client. I made sure the data and System folders are untouched. Only the clientinfo.xml and sclientinfo.xml were modified in the data folder. The problem still exists. I also tried using MathReaper's hexed client but it's still getting the same problems.
  20. Thank you both for the advice. I will move forward with using a newer client and post the details of my experiment and its results here. Edit I did the following: Used Rytech's release of 2017-06-14b, Configured using the continued NEMO Patcher using the recommended patches, Updated server (src/map/mmo.h) to use the correct PACKETVER, Ran the server and tested the client. Results The newer client was able to fix the visual artifacts on the screen. Findings From my review of Hercules and rAthena, NEMO and available clients, it seems that 2017-06-14b is the most stable client that is most used. Various reasons were because: themida software protection on the newer clients, making it difficult for newer clients to be hex editable rAthena's focus to support only RagexeRE (and not including Ragexe and RagexeZero); understandable because of limited development and testing resources I'll make use of this client. Again, thanks for the recommendation guys. Edit: @4144 says that Hercules works with the newer 2018 clients patched with the latest Nemo. I'll try my luck to see how to make the errors go away when I hex a 2018 client (some lua/lub files are missing and I'm not sure where to find the right version of the files. I might open a different thread for it).
  21. Hello there, Do you guys have an idea what is causing this visual error? I'm not sure if it's cause by: corrupted map files bad client configuration some other client file that i haven't configured Issue Black spots show up in only certain parts of the map. It appears to be some kind of tiling issue, or resource problem. Client in use 2014-02-05bRagexe.exe Completely updated client using rsu-kro-rag-lite.exe as of December 14, 2018. Hercules Server version Hercules 32-bit for Windows Git revision (src): '6b3a70adefd5eea89ad4144a48c24501e4cdfa52' Git revision (scripts): '6b3a70adefd5eea89ad4144a48c24501e4cdfa52' Operating system Windows 8 Enterprise (build 9200) [x86_64] If there's missing information I need to provide, please let me know what I need to share. Thanks in advance!
  22. Version 1.1

    33 downloads

    This program automates some of the tedious manual process of building a plugin into your Hercules server on a Windows Machine. It follows the instructions on the Hercules Wiki. From the guide linked, this does steps 1 to 10 of the Old Method (for Windows). The requirements are still the same (IDE, etc.). This simply manages the repetitive things that need to be done manually. It also performs error checking so that it's newbie friendly. What does it do? 1. Locates `YourProject.c`. 2. Locates your Hercules folder. 3. Copies your `YourProject.c` file into your `hercules/src/plugins/` folder. 4. Select which visual studio project to use. 5. Copies the `plugin-sample.vcxproj` template into your own `YourProject.vcxproj`. 6. Opens the `YourProject.vcxproj` and replace all instances of: <ProjectName>plugin-sample</projectname> into <ProjectName>YourProject</projectname> 7. Replaces: <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">sample</targetname> into <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">YourProject</targetname> 8. Replace: <ClCompile Include="..\src\plugins\sample.c" /> into <ClCompile Include="..\src\plugins\YourProject.c" /> 9. Finally, instructs you to do the remaining things, as specified in the Hercules Wikipedia.
×
×
  • Create New...

Important Information

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