Leaderboard
Popular Content
Showing content with the highest reputation on 09/16/12 in Posts
-
-[Client Hexing Tutorial by nkwz*]- Hi! This is a tutorial for those who are interested in learning how to edit your client.exe from beginning. This tutorial will be divided into several topics: 1. Introduction 2. Basic Knowledge 3. Tools 4. Client Editing 5. Help the rA Community! 6. Credits I want to share my knowledge about client hexing, and I'd like to make this project as an rA Community Project. It's better to have more people joining this project, because it needs lots of effort for making a fully translated client. Suggestion and questions are always welcomed, and sorry for my poor English 1. INTRODUCTION rAthena is one of the popular Ragnarok Online emulator, some of you maybe already know about other emulators such as eAthena or 3CeAM. In order to play RO, we need something named as server and client. rA, eA and the others are Server. kRO, Miruku and the others are Client. Actually you can find another custom client package, just search throughout this forum and you'll find some. Most of rA codes based from kRO, not iRO. And that's why some of the original client (not hexed yet) comes with lots of Korean words hardcoded inside them, although some part of it is already translated into English but we still need to convert Korean letters into Latin first. I recommend to translate the client from Korean into English first, because it'll be easier if you want to translate your own client.exe into your native language later. 2. BASIC KNOWLEDGE 2a. Numeral System In our daily life we use a "Base 10" numeral system, called as Decimal. It goes from 0,1,2,3....10,11,12.... But in programming world, there's also other numerical bases such as: Binary (Base 2), Octal (Base 8), Hexadecimal (Base 16). In Decimal, we count from 0-9, when we add another 1 into 9, the result is 10. In Binary, it only have 2 numbers, 1 and 0. 1 Decimal = 1 Binary, 2 Decimal = 10 Binary. 3 --> 11, 4 --> 100, 5 --> 101, 6 --> 110, 7 --> 111, 8 --> 1000. In Octal is the same, they only have 0-7, there is no '8' in this numeral system. What about Hex? It's Base 16 right? How many numbers do they have in this numeral system? Of course 16. But what to come after 10? Hex has a special case, because Hex borrows 10 numbers from Decimal (That is 0-9) and also borrows 6 letters from Latin (A-F). So if you add 1 into 9, it doesn't become 10, instead it will becomes A. 0,1,2,3.....9,10,A,B,C... What to expect if you add 1 into F? Guess what, it becomes 10! So, 9 Decimal --> 9 Hex, 10 --> A, 15 --> F, 16 --> 10, 50 --> 32, 100 --> 64. That's why they are called as "Base x", x means how many numbers they have in their numeral system. 2b. File Structure This topic isn't necessary though, but I just want to help you to understand how executable file works. There are numerous of file types in nowadays computing world, starting with the widely known txt, mp3, avi, jpg, bmp, xls, exe. This time, what we need to know is only about exe files. In Windows, almost all of applications are 'exe' files. Coders/Developers write out codes in either Low Level Language or High Level one, and after that the codes are compiled into something that we (computer user) could use without knowing anything about programming language. When the exe file is being compiled, it also store something which called as "Header" in it's beginning lines. Different compiler generates different header too. One of the header contains filesize checksum, so that's why we can't edit exe file freely as we want to, because if we're not aware about this problem, our exe file won't work at all... 2c. Hardcode vs Softcode What on earth is that? Hardcode means the code is read from the file itself. So if we want to alter the code, we need some special tools. The case is different for some codes (that some people prefer to call as 'Softcode'), those type of code can be altered because the exe file reads them from outside of the file, the notable example is 'msgstringtable.txt', when you alter the word in that file, you can see the changes when you run your client.exe So when next time someone replied in a post "It's hardcoded in the client", you know exactly what it means 3. TOOLS If we want to edit our client.exe we need some tools, such as: - Hex Editor (Obviously ;P) - Text Processor (I use Notepad++ [set encoding to UTF-8]) - Calculator (Optional) - nkwz rA Toolkit --> http://rathena.org/b...kwz-ra-toolkit/ - Charmap.exe (Can be found in every PC that uses Windows) You can get those tools in the internet. Freeware is okay too.. 4. CLIENT EDITING Phew... After reading those exhausting topics, here we are.. (Afterall I guess that's why you're reading up to this point). First, get some 2012 client.exe. For example here, I use '2012-04-10aRagexeRE.exe', any 2012 version will do, as long as the client developer doesn't change the file structure (>_<') Then open your client.exe in hex editor, you'll notice 3 sections. The leftmost part is called Offset, the middle part is Hex stream/data, the right part is ASCII data. Offset is like a location pointer, and they're increasing if we scroll down. Still remember about Hex numeral system on previous topic? Well.. here they are, the heart of every exe files, hex! The right part is just a translated code from hex into Latin characters, so some of the data can be more understandable to human eye. The problem is the client.exe comes from Korean developers, so they use their native language, Koreans! That's a nightmare for those who doesn't live in Korea... (Yes it is! ) But if the developer creates an English version, then why am I writing this tutorial? Anyway back to the topic... Hmm.. Make a copy of your client.exe, open one client.exe in hex editor, and run the other one. After you login with correct username and password, there's the Char Selection window, go create a new char. Look, our first Korean word has appeared! If you hasn't install the Korean Language pack, you'll see this "Äɸ¯Å͸¸µé±â" (Note: I uninstall my Korean Language pack in order to see those letters). Open charmap.exe, use Arial font (or another font if you want), and find that strange letters one by one. (I know this is exhausting, that's why I want to make this project as a Community Project). After you double click each letter found in charmap, you should have all (or some) of the strange letters, well this part is a little tricky because your eye have to be good to see the correct letter, if you picked a wrong letter in charmap, then your conversion process won't be a success. After you collect the letters in charmap, then open 'nkwz rA Toolkit.exe', and you'll see 2 boxes, one is Input Hex, and the other is Input Latin. Paste the letters into 'Input Latin' and voila! You have those secret codes showing in Output Hex! Äɸ¯Å͸¸µé±â --> C4C9B8AFC5CD20B8B8B5E9B1E2 Then go back to your hex editor, search for 'C4C9B8AFC5CD20B8B8B5E9B1E2' (or some part of it), and if you're lucky, then you'll find the position, if not then you'll need to meet an Arch Bishop and request Gloria for Luk+30... Please note that some hex editor can't highlight all of the code even when it's found, so you'll have to see carefully. Look at the nkwz rA Toolkit, at the bottom of the program I also have write a simple line about how many chars that has been converted in the process. Then think about some name that would fit in the game, in http://rathena.org/b...r-2012-clients/ Razor X and Judas picked 'Create Player'. Back at the nkwz rA Toolkit, type Create Player in the Input Latin, and voila again! Suddenly some magical numbers appeared in Output Hex! Important: Look at the bottom part, 'Latin: 13 char'. Make sure you use same amount of chars as the replacement! If you plan to use other name that is shorter that the original, just add some space to the end at Input Latin, so the char amount is the same like hex chars. The next thing after your convert 'Create Player' or 'Create a Char' into hex, let's go back at the hex editor and edit the value according to the generated value in nkwz rA Toolkit in Output Hex. After that, save it and run the file to see if your changes has been made correctly into the client.exe Congratulations! Now you can make your own 2012 client.exe.. ^________^ And that's a wrap! 5. HELP THE rA COMMUNITY! As like I said earlier in this tutorial, I'd like to make this as a Community Project. How to join? Just post a decent and readable screenshot of Korean garbled letters, and also the location of the window/skill/item/chat window info so it's easy to find it in the game, then help us to find the letter in charmap.exe and paste it here, just follow the example post. After that, think of a good name as the replacement (in English please) If you can't think about it now, don't worry, someone may have a good name for it. 6. CREDITS This tutorial is written by me, after I read this post --> http://rathena.org/b...r-2012-clients/ I got inspired to write this tutorial. I wrote down the codes which floating in my head last night, and that's how 'nkwz rA Toolkit' was made. Umm.. I compress the exe file with UPX, and some antivirus app doesn't like a file with UPX compression D: Thanks to Razor X for his inspiring post Thanks to Utada Hikaru, Ayumi Hamasaki and also Winamp! ^^ You can call me as nkwz* too, and btw I don't have any Twitter/Facebook account ;P Thanks for reading this tutorial and let's add more power to rA! Example: Image: Location: Login --> Create a new char Korean: Äɸ¯ÅÍ ¸¸µé±â Hex code: C4C9B8AFC5CD20B8B8B5E9B1E2 English Suggestion: Create Player / Create a Char3 points
-
Hmm.. I realize the benefit of a Diff file, it's very easy to apply the patch, but the major downside for me is, I don't know how to create a diff file and if I want to change the client then I have to wait for a next version diff to be released by Diff maker, such as ai4rei.. And some people may want to customize their language into their natives too Location: Press Esc --> Video Configuration Korean: ÀüÀå Hex: C0FCC0E5 (near 4E6F4374726C00006974656D00000000736B696C6C) Suggestion: More [4D6F7265] Location: Press Esc --> Sound Configuration Korean: ÆÄƼ¿ø ã±â ¾Ë¶÷ Hex: N/A (msgstringtable) Suggestion: Use 3D Effect (?) Inventory Window: Location: Press Alt+E Korean: Àåºñ Hex: N/A (msgstringtable) Suggestion: Equip Korean: °³ÀÎ Hex: N/A (msgstringtable) Suggestion: Fav Korean: ¾ÆÀÌÅÛ ¹ö¸®±â Àá±Ý Hex: N/A (msgstringtable) Suggestion: Item Lock Party Window: Location: Press Alt+Z Korean: ÆÄƼ°á¼º Hex: N/A (msgstringtable) Suggestion: Create Party Location: Press Alt+Z --> Create Party Korean: ÆÄƼ À̸§ µî·Ï Hex: N/A (msgstringtable) Suggestion: Party Name Location: Party Window Korean: ÆÄƼÃÊ´ë Hex: N/A (msgstringtable) Suggestion: Add to Party Location: Party Window Korean: ÆÄƼŻÅð Hex: N/A (msgstringtable) Suggestion: Leave Party Location: Party Window --> Add to Party Korean: ÃÊ´ëÇÒ Ä³¸¯ÅÍ À̸§ Hex: N/A (msgstringtable) Suggestion: Type character's name Location: Party Window --> Add to Party --> Press OK without typing anything Korean: ij¸¯Å͸íÀ» ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù. Hex: N/A (msgstringtable) Suggestion: Please type the character's name you want to invite to this party. Location: Press Alt+Z --> Create Party --> Press OK without typing anything Korean: ÆÄƼÀ̸§À» ÀÔ·ÂÇÏ¼Å¾ß ÇÕ´Ï´Ù. Hex: N/A (msgstringtable) Suggestion: Please insert the name of your party.2 points
-
Euphy's Scripts Disclaimer You may use, modify, and host all of my released scripts. You may not sell them, re-release them in any way (modified or otherwise), or remove the credits. < Event Manager > < Hunting Missions > < Queue System > < Euphy's WOE Controller > < All-In-One NPC > < Euphy's Quest Shop > < Euphy's Warper > < Item Rewards > < Custom Currency Multi-Shop > < Build Manager + > < Class Mastery System > < Class Specialization > < Badge System > < Guarantee Refine Ticket > < Item Fusion > < Euphy's MVP Ladder > < Card Trader > < NPC Duplicate Generator > < Auto-Potion >1 point
-
File Name: Account Bound Items File Submitter: Xantara File Submitted: 16 Sep 2012 File Category: Source Modifications Content Author: Xantara, Zephyrus, RO Information This system would allow (non-stackable, non-pet-egg) items to be bounded onto a player's account. This means that the bounded items cannot be traded, dropped, auctioned, nor mailed. But, they can be storaged so that it can be shared among the characters of that account. Features: - Item coloration to distinguish bounded items and non-bounded ones (see screenshot) - Script commands (getitembound, getitembound2, equipisbounded) to create and check for bounded items - At commands (@itembound, @itembound2) to create bounded items - New group permission (can_trade_bounded) to allow the group to distribute these bounded items if enabled (mostly just for High GMs / Admins) - Changes to the SQL files to track bounded items. This would effect cart, inventory, and storage databases. Tested on rAthena revision 17294 (using v1.5.1). Script Command Documentations At Commands Documentations Known Issues - When moving a bounded item to storage, item colouration is gone. However, re-opening the storage or re-logging will fix this issue.1 - When moving a bounded item to the cart inventory, item colouration is gone. However, re-logging will fix this issue.1 1 If you are able to find these packets (ie. PACKET_ZC_ADD_ITEM_TO_STORE3 and/or PACKET_ZC_ADD_ITEM_TO_CART3), please let me know! Credits Created by @Xantara Popularized by Zephyrus Idea by Ragnarok Online License This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Like my work? Rate/vote this download Rep up my support topic post Do not mirror without my consent. Click here to download this file1 point
-
As of r16771, the login-server can perform a server-side check of the client MD5 hash, ensuring that the client was not tampered. The client only send the correct MD5 hash on certain server types/server types so a diff is needed to ensures that it will send the hash, for this you can use this WeeDiffGen plugin. Check conf/login_athena.conf for instruction on how to enable it.1 point
-
File Name: Atlantis Town File Submitter: Syouji File Submitted: 16 Sep 2012 File Category: Maps & Textures Content Author: Syouji The city of Atlantis. This town consists of the following areas and features: 1. Baron Square For all of you LoL (League of Legends) players out there, I've imported the Christmas Version of Baron as the central piece of attraction in the square of Atlantis City. Baron is worshiped and governs the city. 2. Atlantis Palace Atlantis comes equipped with a royal palace which houses the elite that controls the city such as the queen, king, and other royal members. It is located directly North of Atlantis positioned in the middle-top of the map. 3. Court Yard Flower Meadow Directly South of Atlantis is a small courtyard containing several underwater plants and flowers to serve as a great place to socialize or house NPCs. 4. Houses There are several buildings West of Atlantis. They are there to serve as a local inn, tool shop, weapon/armor shop, magic shop, etc. 5. Exit Points Atlantis has several exit areas. The exit West of the City was originally designed to connect to an underwater field. You can use this for w/e you want. The exit located at the very bottom right of the map (South-East) shows a cave entrance. You can use this to connect to an underground pathway to some destination or w/e you want. Finally, there is an exit at the middle-right of the city. You will notice there is a nice flowery pathway leading towards it complete with statues and pillars. This can be used to connect to a sacred area or anything else you can come up with. 6. Waterfall Enclosure The entire city is surrounded by waterfalls producing the idea that the water is being controlled, preventing it from drowning the city. Whats controlling the water are specific pillars at different corners around the map which have magic powers of some sort.. The package provided is already packed as a GRF and ready to be added to your server. You will notice that I attached the .EXTRA file to the GRF. With this file you will be able to have a mapper edit the map without losing the currently assigned lightmaps. Therefore, feel free to edit the map but credits are still owed to me. Click here to download this file1 point
-
The command binds an instance of the item; item_trade affects all item instances. Also, these bound items are colored.1 point
-
Well, I think we should add a VERY! primitive plugin system. It could work like this: the plugin system would be able to load plugins (so or dll based on platform), and that is. We would not add any callback or such. This way one could provide a binary distributed plugin to protect her source code, and provide some headers and a patch file to the source code to add the neccessary calls to the code. We would avoid messy callbacks, still provide users with a way to distribute proprietary content.1 point
-
1 point
-
UseSSOLoginPacket was a request from malufett, forces packet 0x825 on all langtypes. Each plugin displays what it is for in the patcher, column 'description'.1 point
-
I was under the impression that it was there when I posted... either way, I have re-upped it. Edit: Works for me with said client, even with 2012-07-02aRagexeRE. Edit: The feature to save a list of diffs is actually in there already. Just do Ctrl+C inside the window and you get a list of all selected diffs stored in the clipboard.1 point
-
File Name: Guardian Stone & Barricade Repair Test Script File Submitter: Viole File Submitted: 15 Sep 2012 File Category: Utilities Content Author: Viole Just like the emperium breaker test. Here, you can practice repairing the guardian stones and barricades, and sets a time how long you repair the stone or barricade. Got 8 rooms available. ( 4 Guardian Stone Rooms & 4 Barricade Rooms ) Summons barricade when control device is repaired succesfully. Set prize for the Best Record Holder. Can enable and disable prize distribution. Edit map coordinates, if you would like to change the map, under: OnInit: //•••••••••••••••••••••••• C O N F I G U R A T I O N ••••••••••••••••••••••••// Credits: Idea from Emperium Tester by JinBlack Guardian Stone Script -- rAthena-built in Click here to download this file1 point
-
1 point
-
For new clients, where WDGAllowMultipleWindows does not work, it has become obsolete, because Gravity made the client allow multiple windows on all langtypes (basically removed the entire code responsible).1 point
-
To fix your 'answer' problem, Replace query_sql "INSERT INTO `request` (`account_id`, `char_name`, `time`, `type`, `message`) " + "VALUES ("+getcharid(3)+", '"+strcharinfo(0)+"', '"+gettimestr("%Y-%m-%d %H:%M:%S",21)+"', 'Ingame Question', '"+.@requestinput$+"')"; With query_sql "INSERT INTO `request` (`account_id`, `char_name`, `time`, `type`, `message`,`answer`) " + "VALUES ("+getcharid(3)+", '"+strcharinfo(0)+"', '"+gettimestr("%Y-%m-%d %H:%M:%S",21)+"', 'Ingame Question', '"+.@requestinput$+"', 'Not Yet Answered')"; The problem is when the INSERT query is called, the `answer` field is not being filled in. (It is Null) I suggest in the future revisions, `answer` should be able to be left null.1 point
-
How about making it configurable like AEGIS did? levelPenalty.lua -- 이파일은 lua 문법에 따라 작성해야 합니다. -- 레벨차에 의한 페널티를 설정하는 파일입니다. -- 타겟-플레이어 레벨 입니다. -- 레벨차에 의한 경험치 페널티를 설정합니다. Exp={--일반 [16]=40; [15]=115; [14]=120; [13]=125; [12]=130; [11]=135; [10]=140; [9]=135; [8]=130; [7]=125; [6]=120; [5]=115; [4]=110; [3]=105; [0]=100; [-1]=100; [-6]=95; [-11]=90; [-16]=85; [-21]=60; [-26]=35; [-31]=10; }; MvpExp={--보스형 [0]=100; }; -- 레벨차에 의한 아이템드롭률 패널티를 설정합니다. ItemDrop={--일반 [16]=50; [13]=60; [10]=70; [7]=80; [4]=90; [0]=100; [-4]=90; [-7]=80; [-10]=70; [-13]=60; [-16]=50; }; MvpItemDrop={--보스형 [0]=100; };1 point
-
With GreenBox's update, you can easily implement HShield.. I've posted a guide in my blog on how you can do it.. http://clydelion.wordpress.com/2012/09/11/how-to-use-hackshield-w-athena/1 point
-
Added: WDGEnable64kHairstyles binary builds, sources In advance, I don't know how WDGEnable127Hairstyles works and I did not bother to figure out, because the assembly has changed significantly anyway. So the following issues might or might not be the same as with the old plugin: IDs 0~12 do not correspond to the IDs defined in the client hair style table (that means, they are mixed up). While the diff allows for up to 4.29bil hair styles, some packet layouts limit the valid range to 0~65535. It might be possible to enable the full range (not that someone would need it anyway) with a few packet hacks on the server-side, though. If you specify a hair style that does not exist you get a bunch of errors, but instead of a crash, the character just turns up head-less.1 point
-
1 point
-
1 point