Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 08/22/13 in all areas

  1. We here at rAthena believe that the users have the right to know what our team believes this project should be. rAthena Goals: Emulation AccuracyOur top priority of this project should be put towards creating an experience that matches that of the official servers. Right now, we are far from reaching that goal, but with focus on this particular issue, and with the help of people like you, we can close the gap between the official servers and ourselves. While this may never reach 100% accuracy due to constantly changing aspects in official servers, we could definitely do better than where we are right now. StabilityWhile we continue to fix bugs and add additional new content, it is extremely important that we remain focused on creating a project you can rely on to manage itself while you are away from your server. We want you to feel comfortable walking away knowing that you won't come back to a downed server. Resource ConsumptionCode speed and resource reduction should remain a lower priority as accuracy and stability are more important than saving some memory or process time. A successful project requires this understanding. Sometimes we may improve code that we come across during fixing other bugs or re-writing sections of code, but at this time, we should not focus on finding and fixing some of the more resource consuming portions of code. CustomizationWe're "core" developers. We develop a platform for people to build off of. Out of the box, we aim to maintain parity with AEGIS, and beyond that, we will provide tools and support (as long as it doesn't detract from the core!) for people aiming to customize beyond that. Anything our users make and wish to have added to the public source also needs to be approved and improved on an individual basis. If you're looking to start up a server project which follows the above principles, then rAthena is the project for you.
    3 points
  2. Hey guys, Made a loading screen for my server today, decided to share it with everyone. Example: Loading Screen 2 Loading Screen 3 Let me know how you guys like it, I'll make more in the future if you guys think its good (: Download Link http://www.sendspace.com/file/etfwkx http://www.sendspace.com/file/a1fzck http://www.sendspace.com/file/3fmxw0
    2 points
  3. View File GRF Editor Hey everyone, This is a GRF tool I started to develop for my own personnal use, but I thought I'd share it since I've upgraded the UI. Its primary goal is to be easy to use while offering a wide variety of options and customizations. The software is quite stable and can handle large operations easily. How to install Download the zip archive provided from the download link at the bottom of this description or directly from there : http://www.mediafire.com/?aflylbhblrzpz0h Install the application with GRF Editor Installer.exe; if you are missing a .NET Framework you will be prompted to download it. Once you are done, you can start the program from the link on your desktop. Key features Overall speed is faster (or at least equal) than any GRF tool. Common operations : add, delete, merge, extract, preview, save. Undo and redo for any operation. It can open any GRF file. Clean and very interactive interface. Saving formats supported : 0x200, 0x103 and 0x102 (through the Settings page) and conversion to the Thor format. Instant filter and search options (example : "map .gat"). File association and context menus integration for .grf, .gpf, .rgz and .thor (through the Settings page). Can rebuild separated images into one file easily. Drag and drop (with the ALT key, can be modified in the Settings page). This is a big part of the software; most of the items can be moved around within the application itself or from/to Windows Explorer. Tools Sprite editor : a simple sprite editor with powerful features. Semi-transparent images can be added, you can easily change the order or replace images, etc. This tool can convert images in the wrong type by showing you multiple solutions (merging a new palette, dithering the image by using current palette, using the closest color, and a few more). Grf validation : allows you to validate a GRF with multiple settings. It can detect corrupted GRF entries, invalid sprites, empty files, non-GRF files, duplicate files and a lot more. Flat maps maker : generates flat maps from .gat and .rsw files. Useful to generate WoE maps or to fasten up the loading time. Patch maker : generates a GRF patch based on two different GRFs. Hash viewer : shows the hash code (both CRC32 and MD5) for files. Image converter : converts an image to any format requested (BMP, PNG, JPG, TGA). GrfCL : used to create batch files (.bat) which can automate tasks on GRF files. See the content in GrfCL.rar in the download for more information. This tool can be customized from the sources as well. Palette recolorer : creates new sprites by changing their colors (this tool is now deprecated). Client database editor : allows modifications of the database client files (txt and lua) with easy and simple tools. Work in progress. Grf encryption The encryption feature has been enabled again. It's similar to what it used to be and it has been tested on client versions ranging from 2012-08-01 to 2014-02-05. Some error messages will be displayed if necessary. If you have an issue, copy the error message (with the code, if there's one) and send me the client executable with the cps.dll file generated by GRF Editor. There shouldn't be compatibility issues anymore though! Thor files Thor files are patches used by Thor Patcher ( http://thor.aeomin.net/ ). Because of their similarity with the GRF file structure, they have been integrated within GRF Editor. The primary utility of this feature is that it allows you to add encrypted files to a Thor patch. All the other options can be achieved by using Thor Maker. You'll find the necessary steps below, but test your patches before sending them off to players (I've done a lot of testing on my end, but better be safe). If you're using SecureGRF, then make a new GRF, add the files and encrypt it. In GRF Editor, open the encrypted GRF you just made, use "Save as" and name the new file with a .thor extension. That's it, if you want to change the output directory, click on the root node of the project and select the tab "Container options". You can select the output mode and the GRF to merge the patch with. Simply save again if you change these properties. If you're using GRF Editor's encryption, then make a new Thor file (File > New > New Thor) and add the files you want to patch it with. Right-click on the files you want to encrypt and use Encryption > Encrypt. Technical stuff Requires .Net Framework 3.5 (SP1) Client Profile to run (3.5 or more will work as well). Automatically converts file name encoding to their proper values (you can change the encoding). Data virtualization is used as much as possible to preview files, meaning the files aren't completely loaded. Right-clicking an item will bring up the available options with that file. Preview file formats : txt, log, xml, lua, lub, bmp, png, tga, jpp, db, ebm, pal, gnd, rsw, gat, rsm, str, spr, act, imf, fna and wav. Services are "crash ready", meaning that you will be warned about a failed operation and no work will be lost (the application won't close and crash). It tries to continue operating even if it meets unsual conditions. Operations can be cancelled by clicking on the button near the progress bar. The warning level can be changed to avoid messages like "Please select a folder first." When prompted with an error, use Ctrl-C to copy the current dialog's content. Some screenshots! 1) Previewing an act file, while showing the search feature 2) Preview of a model file (rsm) 3) Preview of GrfCL with the MakeGrf command 4) Preview of maps 5) Preview of Grf validation 6) Search feature (press Ctrl-F or Ctrl-H to bring up within a text editor) Got a feedback? I'd gladly hear you out and fix issues you have with the program. Submitter Tokei Submitted 01/11/2013 Category GRF Files Video Content Author Tokeiburu  
    1 point
  4. Hello guys!! This is my first time to write a tutorial. I hope it can help many beginner that don't know how to create your own ragnarok world. This server setting is just made to play offline. So if you want to make your own private server there are several things you need to learn more on setting ip, opening ports etc, and i'm not going to explain it in here Credits goes to: Nickyzai for kRO client K3dt for decompiled ragexe Mleo1 for Loki launcher Shakto, Yommy, MStream for xDiffPatcher Michieru, Dastgirpojee for Data folder translation Magicaltux for Grf Builder Ai4rei for Open Setup Okay let's get started, please follow all the steps correctly! This is all the things you need to create your own ragnarok world: 1. TortoiseSVN - http://tortoisesvn.net/downloads.html 2. Visual Basic - http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products 3. MySQL - http://dev.mysql.com/downloads/installer/ 4. MySQL Workbench 5.2.47 http://dev.mysql.com/downloads/tools/workbench/ 5. rAthena SVN Repository - https://rathena.svn.sourceforge.net/svnroot/rathena/ 6. kRO client by nickyzai - http://www.nickyzai.com/?p=kro 7. Loki Launcher by mleo1 - http://hercules.ws/board/topic/1070-loki-launcher/ 8. Decompiled ragexe by k3dt - http://k3dt.eu/Ragexe/unpacked/ 9. xDiffPatcher v2 - http://www.mediafire.com/?fibc47gzvdshp8o 10. DiffFiles - http://k3dt.eu/Ragexe/unpacked/Diffs/ 11. Data folder translation - https://subversion.assembla.com/svn/client-side-translation/ 12. Grf Builder - http://www.grfbuilder.com/#download 13. RO Open Setup - http://rathena.org/board/topic/63177-ro-open-setup-v280277-last-updated-20130702/ After you download all that things, do this: 1. Install tortoise 2. Install visual basic 3. Install MySQL (please remember your root password! If you change it but if you did not change then the default root password is ‘root’) 4. Install MySQL Workbench 5. Install kRO client After you install all of that, let’s prepare the client: 1. Open your kRO client and update it until completed. 2. Download your ragexe file in this (http://k3dt.eu/Ragexe/unpacked/) In this tutorial i used 2013-07-03aRagexe.exe 3. Download your xDiffFiles in this (http://k3dt.eu/Ragexe/unpacked/Diffs/) in this tutorial I used 2013-07-03aRagexe.exe so I must download the same date for Diff files which is “Diff 2013-07-03 v1” in order the xDiffPatcher to work. 4. Open your xDiffPatcher.exe select your ragexe file you download before which is I used (2013-07-03aRagexe.exe) and then select your Diff files which is I used (Diff 2013-07-03 v1) and click LOAD. Now look in “diff option” there are several choice to pick, I recommended you to check this option: - Disable Ragexe Filename Check - Disable HShield - Disable Packet Encryption - Enable Multiple GRFs -@ Bug Fix - Ignore Missing File Error - Ignore Missing Palette Error - Increase Headgear ViewID to 5000 - Increase Zoom - Load ItemInfo.lua before lub - Read Data Folder First - Read msgstringtable.txt - Read questid2display.txt - Translate Client In English - Use Normal Guild Brackets - Use Ragnarok Icon - eXtract MsgStringTable.txt - eXtract txt file strings After you finish check the option click Diff’n’Save! Move the patched ragexe you made to your kRO client folder 5. Open the loki launcer folder and right-click loki.ini, change this: ; Must be on same dir of Loki Exe = "ragexe.exe" Into ; Must be on same dir of Loki Exe = "2013-07-03aRagexe_patched.exe" (I change into 2013-07-03aRagexe_patched.exe because I patched my 2013-07-03aRagexe.exe. if you use another ragexe please changed into yours) Save it and move all of file in loki launcher folder into your kRO client folder. 6. Create new folder and name it ‘Data Folder Translation' right-click on ‘Data Folder Translation’ folder and choose ‘SVN checkout…’ Fill this link https://subversion.a...de-translation/ in “url of repository” and click ok, this will download your 'data translation folder' from latest revision. After complete click ok. Open your data translation folder you download before then open folder “data” right click clientinfo.xml and choose edit. Edit into your version, I’m changed it into 38 because I used 2013-07-03aRagexe.exe. You can find your version in folder Server\trunk\db\packet_db.txt note: If you can’t find clientinfo.xml just open notepad and copy code below to your notepad and save it as clientinfo.xml <?xml version="1.0" encoding="euc-kr" ?> <clientinfo> <servicetype>korea</servicetype> <servertype>primary</servertype> <connection> <display>Ragnarok</display> <balloon>Ragnarok</balloon> <desc>Ragnarok</desc> <address>127.0.0.1</address> <port>6900</port> <version>38</version> <langtype>0</langtype> <registrationweb></registrationweb> <aid> <admin></admin> <yellow></yellow> </aid> </connection> </clientinfo> 7. Open your grfbuilder click ‘new’ to create grf, name it to rathena and save it, then choose ‘merge dir’ find your data translation folder you download before. And then choose the folder ‘data’ inside data translation folder then click Ok. wait after complete. click close. Move the rathena.grf you’ve made to kRO client folder. 8. Now change all lua extension to lub extension in your data translation folder you've download place this script in your data translation folder data/luafiles514 folder And run it. Script Link: http://www.mediafire.com/download/jvtac0j8f6m604v/luatolub.bat note: rename 'luatolub.bat.txt' into 'luatolub.bat and double click (to run) it. After you done. Copy the 'data' and 'system' folder inside the data translation foder you've download to your kRO client and replace any same files with that. 9. Edit your DATA.ini in your kRO client folder into this: [Data] 0=rathena.grf 1=data.grf 2=rdata.grf Then save it. note: If you can’t find DATA.ini just open notepad and copy code up there to your notepad and save it as DATA.ini 10. Extract the 'Open Setup' you've download before and move the 'opensetup.exe' into your kRO client folder Now your kRO client is ready. Now for the Server 1. Create new folder and name it ‘Server’ 2. right-click on ‘Server’ folder and choose ‘SVN checkout…’ 3. Fill this link (https://rathena.svn.sourceforge.net/svnroot/rathena/) in “url of repository” and click ok, this will download your server files from latest rathena server. After complete click ok. 4. Open Server\trunk\conf then rename ‘import-tmpl’ folder into ‘import’ 5. Open Server\trunk\conf open file ‘char_athena.conf’ with notepad and look for this: // Server Communication username and password. userid: s1 (change ‘s1’ to whatever you want but here I use ‘username’ as userid for tutorial only) passwd: p1 (change ‘p1’ to whatever you want but here I used ‘password’ as password) *note: I suggest you to fill the username and password as I do, to prevent human error, because if you put wrong userid and passwd the server connection between login and map can’t be establish. //login_ip: 127.0.0.1 (REMOVE THE ‘//’ IN FRONT OF login_ip: 127.0.0.1 so it will look like this login_ip: 127.0.0.1) //char_ip: 127.0.0.1 (REMOVE THE ‘//’ IN FRONT OF char_ip: 127.0.0.1 so it will look like this char_ip: 127.0.0.1) Once you done save it. 6. Still in Server Server\trunk\conf now you open file ‘inter_athena.conf’ with notepad and search for all of this: sql.db_username: ragnarok (change ‘ragnarok’ into your MySQL username which is I use default ‘root’) sql.db_password: ragnarok (change ‘ragnarok’ into your MySQL password which is I use default ‘root’) sql.db_database: ragnarok (change ‘ragnarok’ into ‘rathena’ because later we make database using name ‘rathena’) char_server_id: ragnarok (change ‘ragnarok’ into ‘root’) char_server_pw: ragnarok (change ‘ragnarok’ into ‘root’) char_server_db: ragnarok (change ‘ragnarok’ into ‘rathena’) map_server_id: ragnarok (change ‘ragnarok’ into ‘root’) map_server_pw: ragnarok (change ‘ragnarok’ into ‘root’) map_server_db: ragnarok (change ‘ragnarok’ into ‘rathena’) log_db_id: ragnarok (change ‘ragnarok’ into ‘root’) log_db_pw: ragnarok (change ‘ragnarok’ into ‘root’) log_db_db: ragnarok (THIS ONE YOU CHANGE INTO ‘logs’ because later we make database ‘logs’ Once you’ve done SAVE it. 7. Still in Server Server\trunk\conf now you open file ‘map_athena.conf’ with notepad and search for: // Interserver communication passwords, set in account.txt (or equiv.) userid: s1 (Change ‘s1’ into ‘username’ because as I explain on up there before) passwd: p1 (Change ‘p1’ into ‘password’ because as I explain on up there before) // Character Server IP // The map server connects to the character server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. //char_ip: 127.0.0.1 (Remove the ‘//’) // Map Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. //map_ip: 127.0.0.1 (Remove the ‘//’) Done and Save it. 8. Still in Server Server\trunk\conf now you open file ‘subnet_athena.conf’ with notepad and change this: subnet: 255.0.0.0:127.0.0.1:127.0.0.1 you must find your subnet by opening ‘command prompt’ (start menu > all programs> accessories> command prompt) after you open your command prompt, type this ‘-ipconfig’ it will look like this 9. Open your MySQL Workbench double click on ‘Local instance MySQL’ as in the picture to open. Input your password which is ‘root’ if you haven’t change it on first time you install it. 10. Click on ‘Create new Schema’ just like on the pic below to create new ‘schema’ and name it ‘rathena’ then click ‘apply’ and then ‘apply’ and ‘finish’. Now close and reopen your MySQL workbench. 11. repeat the step 10 but name the schema as a ‘logs’ then click ‘apply’ and then ‘apply’ and ‘finish’. Now close and reopen your MySQL Workbench. 12. Enter again to you ‘Local instance MySQL’ just like the step 9 and double click on ‘rathena’ to select it, and then click ‘file’ and choose ‘Open SQL Script’ and go to rAthena\trunk\sql-files and open ‘main.sql’ click OPEN and click the ‘Lightning button’ on picture below. Wait until its done and close your MySQL Workbench and Open it again to refresh. repeat step 12 but now you 'Open SQL Script’ and go to rAthena\trunk\sql-files open 'logs.sql' click OPEN and click the ‘Lightning button’ on picture below. Wait until its done and close your MySQL Workbench and Open it again to refresh. 13. After you re-open your MySQL Workbench, double click on ‘rathena’ then double click on ‘table’ and find ‘login’ right click on it and choose ‘Select Rows – Limit 1000’ just like the picture below: 14. Change the ‘s1’ and ‘p1’ on the right table to ‘username’ and ‘password’ by double click on each of them and type it. Just like the picture below, when you done click ‘apply’ then ‘apply’ and ‘finish’ 15. Now Open folder Server\trunk\src\common and right-click mmo.h choose edit and search this line #define PACKETVER YYYYMMDD Change it with the date version you choose for your client before Example: #define PACKETVER 20130703 (My client ragexe is 2013-07-03aRagexe.exe that’s why I write 20130703) And save it. 15. Now let’s recompile your server, open Server\trunk\ right-click ‘rAthena-10.sln’ open with Microsoft Visual c++ 16. Change the ‘debug’ into ‘release’ like the picture below. 17. Block (select) char-server.sql, login-server.sql, map-server.sql, mapcache and then right click and choose ‘build selection’ like in the picture below: 18. Go to your Server\trunk\db and open file ‘packet_db.txt’ with notepad and add this line in bottom //2013-07-03 Ragexe packet_ver: 38 0x0369,7,actionrequest,2:6 0x083C,10,useskilltoid,2:4:6 0x0437,5,walktoxy,2 0x035F,6,ticksend,2 0x0930,5,changedir,2:4 0x07E4,6,takeitem,2 0x0362,6,dropitem,2:4 0x07EC,8,movetokafra,2:4 0x0364,8,movefromkafra,2:4 0x0438,10,useskilltopos,2:4:6:8 0x0366,90,useskilltoposinfo,2:4:6:8:10 0x096A,6,getcharnamerequest,2 0x0368,6,solvecharname,2 0x0838,12,searchstoreinfolistitemclick,2:6:10 0x0835,2,searchstoreinfonextpage,0 0x0819,-1,searchstoreinfo,2:4:5:9:13:14:15 0x0811,-1,reqtradebuyingstore,2:4:8:12 0x0202,6,reqclickbuyingstore,2 0x0817,2,reqclosebuyingstore,0 0x0815,-1,reqopenbuyingstore,2:4:8:9:89 0x0365,18,bookingregreq,2:4:6 // 0x0363,8 CZ_JOIN_BATTLE_FIELD 0x0281,-1,itemlistwindowselected,2:4:8:12 0x022D,19,wanttoconnection,2:6:10:14:18 0x0802,26,partyinvite2,2 // 0x0436,4 CZ_GANGSI_RANK 0x0360,26,friendslistadd,2 0x094A,5,hommenu,2:4 0x0873,36,storagepassword,2:4:20 If you choose another date of your ragexe you can find your ‘packet’ in this link http://rathena.org/board/topic/82726-2013-ragexe-and-diff-up-to-date-2013-07-03/ Just copy and paste it to your ‘packet_db.txt’ like I did. 19. Now you are ready to start your server, open rAthena\trunk and open file ‘runserver-sql.bat’ wait until all server loaded like the pic below: 20. Now go to your kRO client Folder and open ‘Loki.exe’ in the login screen you can create account by doing this; In ID you can fill your ID with _M for male and _F for female And then input your password, After that you may login to your id without _M or _F anymore. 21. Some Screenshoot in the game I think that's all guys. sorry for any mistake and good luck creating your own Ragnarok World don't forget to clik the button if you found this post useful and thx for reading this bad tutorial ________________________________________________________________________________________________________ Note: only do this step if you found the problem below. Problem 1: setup resolution problem: there is missing file in kRO client\system\lua514\ that file name is optioninfo.lub you may download from here and put on that folder. Problem 2: 'queryNavi_Distance_Map' problem: go to Data Folder Translation\Data\luafiles514\lua files\navigation then deleted the file below: navi_linkdistance_krpri.lub navi_linkdistance_krsak.lub navi_npcdistance_krpri.lua navi_npcdistance_krsak.lua _________________________________________________________________________________________________________ edited : - adding missing step in client - adding new file Open Setup from Ai4rei - adding missing step in server (repeat step 12 but now you 'Open SQL Script’ and go to rAthena\trunk\sql-files open 'logs.sql' click OPEN and click the ‘Lightning button’ on picture below. Wait until its done and close your MySQL Workbench and Open it again to refresh.) - fixing some step in client about grf builder because if change lua to lub first then merge give error query_navi_map but don't worry now the step are correct. - adding missing step about downloading 'data translation folder' from repository link - fix some unclear words and fix the repository link. - deleted fixcamera angle from patch list because for shift right click issue, and add some note about setup resolution problem - fix xdiff files link
    1 point
  5. Preamble I have written an achievement system I want to share with you. It is not the best way to solve achievement systems nor is it very efficient(though it might be more efficient than NPC scripting) and if you already have an achievement system(src or npc) and it's working for you, please don't change to mine. Mine is rather old(about half a year or more) and back then it was the first time I wrote something completly new for eAthena. What I did today was applying the system to rA and create a working diff. If you are willing to use this system then I beg you to report any bug found. Also, if there is enough demand, I might consider re-writing it from scratch, because I am overall unhappy with the system, but not really motivated to further work on it in greater detail. Also the code-style I used back then is totally going against the one I am using nowadays... Don't judge me! Functions There are pre-defined types of achievements in this system Monsterkill Achievements Itemfind Achievements (Only use this for Items NOT trade/drop/storage-able, or else it will result in abuse) Itemuse Achievements Explore Achievements Quest Achievements Special Achievements Let me explain them one after another: Monsterkill Achievements(0): Well, name says it mostly, but there is a bit more to it. You can define different types per achievement. The types are counting by ID(0), by size(1), by race(2), by element(3) or for all MvPs(4). And if player A has killed X monsters that meet the requirement, then he gets the achievement. Itemfind Achievements(1): Again, name says what it does. If you find certain items, you get the achievement. Make sure you only use it on non tradeable etc. items or it will be abused. It can also be filtered into types. They are the following: ID(0), Equip(1)[see item_db->equip), Type(2)[see item_db->type]. It will count if you drop it and pick it up again, so really, only use it on items not storageable, tradeable and dropable! Itemuse Achievements(2): Its porpuse is to count every item used. This achievement might be bugged, report anything you find fishy! It uses the same filtering as Itemfind, so please refer to that. Explore Achievements(3): When entering a map, the system checks whether the map is inside the database for explore achievements and if so, it sets the count. If the player visited all maps for one achievement, then he receives the achievement. Quest Achievements(4): When finishing certain quests, you are able to gain quest achievements. Simple as that! Special Achievements(5): This are achievements in the achievement database. But they are only applicable over @achieve from a GM or with the achieve script_command. This achievement has Event porpuses and is only added for a complete database for your website etc. Now comes the technical stuff... How to install the achievement system 1. Download the *.diff and the *.sql file(they are in the *.rar provided). 2. Import the *.sql into your rAthena database. 3. Apply the *.diff onto your rAthena server. 4. Check your ./conf/battle/exp.conf and ./conf/battle/misc.conf: Two new configs have been added: achievement_cutin_duration and achievement_exp_rate. Read the conf files for more information and change it to whatever you wish it to be. 5. Add the two new files ./src/map/achievement.c and ./src/map/achievement.h to your MAKEFILE or to your project solution and recompile! (^ Up to this point, I won't provide ANY support ^) How to add achievements Well, that is mainly why I would like to find another way of solving the achievement system. But currently it is like this: 1. Add your achievement to achievement_db. Here is a brief summary of the columns: If you chose 5 as type, you are nearly done, skip step 2. If you chose another type, please read on. 2. Go to the respective table of your chosen type: 0->mob_achievement 1->item_achievement 2->itemuse_achievement 3->explore_achievement 4->quest_achievement Now add an entry for your newly added achievement. The columns are rather similiar, but I'll explain in greater detail: mob_achievement: achievement_id: Set to ID assigned by achievement_db for your new achievement type: See description of Mobkill Achievements. There are numbers in brackets for each filtering type valueX: The value for what to filter. I.e. if you chose ID, then place an ID here. If you chose elements, place a number from the element enum here (see script_commands or src for reference) amountX: How many to kill itemfind_achievement: itemuse_achievement: achievement_id: Set to ID assigned by achievement_db for your new achievement type: See description of Itemfind Achievements. There are numbers in brackets for each filtering type valueX: The value for what to filter. I.e. if you chose ID, then place an ID here. amountX: How many to find/use explore_achievement: achievement_id: Set to ID assigned by achievement_db for your new achievement mapX: Name of the map. I.e. prontera quest_achievement: achievement_id: Set to ID assigned by achievement_db for your new achievement questX: ID of the quest 3. Last step is to reload the AchievementDB ingame via @reloadachievement or restart your server. Atcommands So, I added two atcommands working together with this System: @achieve <Achievement_ID> <Player_Name>. Give <Player_Name> Achievement with <Achievement_ID> as ID. IT DOES NOT CHECK WHETHER HE MEETS THE REQUIREMENTS! Built in for debugging and special achievements @reloadachievements. Reload the Achievement DBs. Helpfully if you added new achievements and don't want to restart the server. Scriptcommands *Achieve( <AchievementID>{, <Account_ID>}); Same as the Atcommand. If no account_id is given, use attached player. Does also not check if player meets requirements. Intended for special achievements *GetAchievementInfo(<AchievementID>, <flag>); Flag determines what to return: 0 = type, 1 = bexp, 2 = jexp, 3 = nameid, 4 = points, 5 = status 5 Only works with attached players and returns 1 if the player finished the achievement and 0 otherwise. *GetAchievementName(<AchievementID>); Returns the name of the achievement *GetAchievementCutin(<AchievementID>); Returns the name of the cutin of the achievement I think this is about all you need to know. Please report any bugs and post any suggestions. If you overwhelm me enough, I might rework it to be more user-friendly! Only post bugs and suggestions after you've read through the whole article. I will notive if you haven't. At last Download achievement.patch achievement.sql €dit: I really want to stress the following facts again: Read the whole article! Only use if you are unable to script/code a system that is suficient to suit your needs or this system matches your needs perfectly(well, w/e)! Report any found bug! €dit²: Forgot to mention. The last achievement is stored within the permanent playervariable "LastAchievement" and it stores the ID of the achievement. So you can check it via NPC script etc. Changelog: 1.0 FIrst version 1.1 Fixxed bug of not deleting the cutins properly [Thanks Dexter] 1.2 Fixxed cutin bug fully, fixxed typos in config
    1 point
  6. Well a few people know i have been working on these. So here goes. Did I hear right? 1. Yes it is what you are thinking. The Custom Job patch allow you to modify the existing jobs and add new jobs in a fashion similar to HeliumRO's Xray Clients (and some extra stuff you will see below) but using lua files. 2. Similarly Custom Shield Patch allows you to throw the existing 4 shield limit out the door and modify existing as well as add more shield equipment types to your liking using lua files. 3. For now I have tested them out on a set of clients (for others the logic followed were the same so I didn't bother with the rest). Ofcourse if any bug comes up I will work on fixing them. 4. Patches were made with existing patches in mind and therefore will not affect any and existing diffs present in a client you use. Infact you are supposed to use these last only. 5. Custom Job Patch has also an override for Class names based on gender. For it to work Langtype Korean Jobname Fix is expected to be enabled (for xDiff patches it is a part of Translate to English patch) 6. So is there a limit ? yes for now i have limited them as max shields to 10 and max job id to 4300. So how does it work ? 1. Get the xdiff file for your client version (from the link below) 2. Get the lua files (also from the link below) 3. Modify/Add entries to the lua files (Format is specified below) 4. Load your client and xdiff file in xDiffPatcher 5. Let it Rip!... i mean Patch!! 6. And last but not least place the lua files in their proper locations. Lua File Formats - Custom Job Patch Custom Job Patch makes use of 7 lua files (similar to the various txt files Xray client had).They need to be present in the luafiles514/lua files/admin path. 1) PCIdentity.lua: This file is already present in the official GRF but we are going to use a modified version of that one. All Job Sprites have a corresponding Job ID (including costumes and Job Mounts). This file defines all of them and their relationships to each other. This is done with the help of 3 tables => i) pcJobTbl (mandatory): This is where the job id value is defined and mapped to a string for identification. JT_KAGEROU = 4211, -- 4211 is the job id for kagerou class ii) Halter_Map : This is where you specify which job id is the job mount of which class. Ofcourse if you dont plan to add a job mount for a class you can ignore this one. [pcJobTbl.JT_KAGEROU] = pcJobTbl.JH_KAGEROU, -- maps kagerou job to it's frog mount (JH_KAGEROU) iii) Shrink_Tbl : This is list of job IDs that need to be ... shrunk i.e. specify all Baby Jobs here. pcJobTbl.JT_SWORDSMAN_B, -- will include Baby Swordsman in the list 2) PCPaths.lua: Lua equivalent of class_tab.txt . Defines the prefix string used for each class to get its sprite & act file path. i.e. prefix in => /data/sprite/Àΰ£Á·/¸öÅë/<gender>/<prefix>_<gender>.spr (& act as well). This is done with the help of two tables (only one of which needs to be filled for a class). i) PCStitchTbl : If your job uses a completely new sprite with a new filename then you can assign it in this table. [pcJobTbl.JT_SWORDMAN] = "°Ë»ç" -- Prefix for Swordsman ii) PCStitchInheritTbl : If your job is sharing an existing sprite path already used by a job specified in PCStitchTBl then you can simply connect them in this table (target job id inherits from source job id). [pcJobTbl.JT_SWORDMAN_H] = pcJobTbl.JT_SWORDMAN, --JT_SWORDMAN_H is High Swordsman which uses --same sprite as Swordsman All of the remaining lua files follow a similar pattern with one table for direct assignment and the other one for inheriting value from another job id 3) PCImfs.lua: Lua equivalent of imf_tab.txt . Defines the prefix string for imf files of each class. i) PCImfTbl : [pcJobTbl.JT_KNIGHT] = "±â»ç", -- Prefix for Knight ii) PCImfInheritTbl : [pcJobTbl.JT_KNIGHT_H] = pcJobTbl.JT_KNIGHT, -- JT_KNIGHT_H is Lord Knight and has the same -- imf as Knight class. 4) PCHands.lua: Lua equivalent of reality_dir_tab.txt. Defines the prefix strings used for Weapons and Shields of each class i) PCHandsTbl : [pcJobTbl.JT_ASSASSIN] = "¾î¼¼½Å\\¾î¼¼½Å", -- Prefix for Assassin ii) PCHandsInheritTbl : [pcJobTbl.JT_GUILLOTINE_CROSS] = pcJobTbl.JT_ASSASSIN, -- Guillotine Cross picks up --weapons/shields from the same path as Assassin class 5) PCPals.lua Lua equivalent of reality_tab.txt. Defines the prefix strings for the body palettes. i) PCPalTbl: [pcJobTbl.JT_MAGICIAN] = "¸¶¹ý»ç", -- prefix for Mage ii) PCPalInheritTbl: [pcJobTbl.JT_MAGICIAN_H] = pcJobTbl.JT_MAGICIAN, -- High Mage uses same prefix as Mage class 6) PCNames.lua Lua equivalent of monstrosity_tab.txt (in part since mobs are defined by jobname.lua) . As the file name says this is where you define all your class names. Reason i saved this for last is because this file is slightly different from the previous 4. Here you can define the class name seperately for both genders. For male classes => i) PCJobNameTbl : [pcJobTbl.JT_WARLOCK] = "Warlock", -- Kind of obvious right? ii) PCJobNameInheritTbl : [pcJobTbl.JT_WARLOCK_H] = pcJobTbl.JT_WARLOCK, -- JT_WARLOCK_H is Transcendent version of -- warlock class and ofcourse it will have same name For female classes => iii) PCJobNameTbl_F : [pcJobTbl.JT_WARLOCK] = "Witch", -- Now the female Warlock will be called Witch iv) PCJobNameInheritTbl_F : [pcJobTbl.JT_WARLOCK_H] = pcJobTbl.JT_WARLOCK, -- Same for Transcendent Warlock By default if your gender is female and there is no names defined using either iii) or iv) above then it checks in the tables for male gender. 7) PCFuncs.lua Contains Necessary functions used by the client - DO NOT TOUCH THIS FILE unless you know what you are doing!!! Lua File Formats - Custom Shield Patch Custom Shield Patch makes use of 2 lua files as specified below. They need to be present in luafiles514/lua files/datainfo folder. 1) ShieldTable.lua : This lua file is the only one you need to configure. It contains 3 tables and is similar in format to WeaponTable.lua i) Shield_IDs : Defines a list of IDs which includes both Shield Types & Item IDs used by shield items in item_db.txt. Shield Items can only start from item id 2101 onwards so anything lesser than that will be considered as a shield type id. To distinguish between them we use the ST (Shield Type) and SI (Shield Item) prefixes. ST_MSHIELD = 4, -- Mirror Shield Type SI_Platinum_Shield = 2122, -- Platinum Shield's Item ID ii) ShieldNameTable : Here we assign suffix strings for Shield Types i.e. shield suffix in => /data/sprite/¹æÆÐ/<hand prefix>_<gender>_<shield suffix>.spr [Shield_IDs.ST_MSHIELD] = "_¹Ì·¯½¯µå", --Suffix for Mirror shield iii) ShieldMapTable : Here we specify which Shield Type is used by each of the Shield Items. [Shield_IDs.SI_Platinum_Shield] = Shield_IDs.ST_MSHIELD, -- Platinum Shield uses -- Mirror Shield sprite 2) ShieldTable_F.lua : Contains Necessary functions used by the client - DO NOT TOUCH THIS FILE unless you know what you are doing!!! Ok.. So Where do i get the files? Download link Final Note If you have any issues or doubts about the xDiff files or Lua files (I expect some in this department) let me know. So Enjoy
    1 point
  7. Hello, here is another pre-made map and its from the movie Epic. its more on natures and big nature! suits to fit the leafman! xD here are some screenshots of the map. Hope ya like it! C&C are accepted Video of the map The video is a bit laggy coz of my recorder sucks! xD maybe next time it'll be smooth.. but when in-game its nice and smooth Screenshots In-Game Screenshots Thank you! Feel free to comment xD CLICK HERE TO DOWNLOAD FILE
    1 point
  8. Hello, I've decided to release a fluxcp coded theme for free. I have posted the design below, comments and ratings are appreciated. I'll be releasing the theme once its coded. Thank you!
    1 point
  9. I would like to suggest a "Paid Request" section were members/server owners can briefly post what they need. Then members that are willing to apply for the task can simply hit them up and discuss the details such as a price and what-so-ever. The reason for this is because my personal experience with the paid services section isn't all that great, I've had it happen several times that I messaged someone who posted in there but they never gotten back to me. Shamefully enough, some of the members in question were even Devs - they read the message, but just never responded, while it was clearly a service they said they offered. Any thoughts about this?
    1 point
  10. Paid requests can be posted in Jobs Available. In your post or topic title, just mention that you are willing to pay someone for their services.
    1 point
  11. This is the reason why i keep learning about everything on RO but it takes time and patience you rA team are my motivation and inspiration thank you for providing us the emulator more power
    1 point
  12. nice, i would like to try this
    1 point
  13. Nice map! Alot of detail I can barely see the shadows though. In my opinion, I think the map would look better if it was a bit brighter. Overall, wonderful map!
    1 point
  14. Very cute vending map! <3 there's a lot of space for vendors. good job
    1 point
  15. Cool idea for a vending map imo...
    1 point
  16. Yes, and clientinfo.xml in your client's /data/ folder.
    1 point
  17. The number refer to id number sql on Brynner player id....
    1 point
  18. - script OnPCLoginEvent#GMCheck -1,{ OnPCLoginEvent: if (getcharid(3) == 2000000) { mes "You can't login on this server."; close2; atcommand "@kick "+ strcharinfo(0); } end; }
    1 point
  19. This suggestion is great! So that, paid developers/designers/etc will be able to know who needs a specific paid work.
    1 point
  20. A long time since the last post (vacation, home relocation, waiting internet access). A lot of things were changed in the CORE to have a better organized code, I will not talk a lot about it since it's not finished yet, but it's sure now, roBrowser never be so stable. I will just detail the visual change. Intro Window A new button comes: "start", simply to run the tool without needed to send a client file (and so switching to remote GRF). The idea change too, instead of reading the GRFs, it's now reading the entire client (select all your files and give it to him), so I can select what I want to use (client, data.ini, grfs) and extract informations I need to run the tool. Packetver Auto-Detection Now roBrowser should be able to support packets from 2004 to (near)today and send the appropriate packets to the server. It can detect packetver from two techniques: If you drag drop your client, roBrowser get the packetver from the compiled date of your executable (PE Header). Guessing packetver from the packets received from servers. I didn't see an error for now since I connected on pservers. Configuration File A configuration file appeared in roBrowser, for now there is not much parameters but I will expend it in future. It's currently possible to set the : packetver ( YYYYMMDD / "auto", "client", "server"). remote host (default: http://grf.robrowser.com/). grf_list ( default: "data.ini", or json representation). clientinfo file (sclientinfo ? clientinfo ? other ? json representation ?). set specific configs for each servers in clientinfo if using json representation. UI I modify the chararacters on char-select UI, the selected player is moving (same animation that after the player get hit). I still need to check the window size for the char-select to know if need to write the mapname or not... Still in progress, I continue to write UI for the game, it's the most boring part... I added some checks on map loader, since an old update, if there was an error the loading just stop. So right now, if there is an error with a texture not found, model error, or other, the loading just skip and continue. Log System I extended the log system to be clean with differents colors for each informations, it's just easier to catch information and errors, all packets (and their structures) are accessibles throw the log and it's possible to know if they have a callback or not. And now ? Currently working on finishing to organize the code, after still a lot to do with all the UI and packets to interract with but the structure is here. Planning a release on september if I find time before my next vacations. Bonus Do you remember some posts back, I show some screenshots of a GRF Viewer using roBrowser's Core ? Here a video I made some months ago : Note: the models are a little slow to load : the reason because of a "no-cache" option that reload all scripts (network connection) each time you try to load a RSM. Without this options, it's instant loading. It will of course be available with roBrowser's source code (I would like to post it in my old GRF Viewer topic, but it's archived and I can't update it...).
    1 point
  21. Я их уже выложил в другом месте, как и многие мелкие доработки, возможно и здесь продублирую в будущем.
    1 point
×
×
  • Create New...