Leaderboard


Popular Content

Showing content with the highest reputation since 01/21/2020 in all areas

  1. 3 points
    Need the latest kRO Install folder for your private server? Look no further! ----> Download <---- Latest: 2020-01-24 Installation: Official kRO Updated: 24/01/2020 Download Link: http://bit.ly/latestkro Package contains RSU RO Patcher Lite for kRO and kRO RE by [Ai4rei] This package is maintained by [Akkarin] This ZIP archive is 3.83GB in size and includes all BGMs plus the latest RSU ([2018-10-23] Release 2.4.23.800) Simply download, extract, play! A fan of this topic? Hit the rep button
  2. 3 points

    Version 2.2.0

    19,478 downloads

    Third Job Costumes + New Classes The Correction With the advent of jRO releasing new Job Costumes, and also, the new classes from the Taekwon branch, many of server owners want to replace the vanilla sprites or even, implement the bodystyle system. But, there's a catch! Originally jRO, and now, even kRO spriters, have made it completely off of the default pattern of palette. In a classic example, you can notice the pattern of the RO palettes. What matters is the position of the colours, as an example, for all jobs, the white-ish tones will be always on the same row, so we can use it to create custom palettes. See how it works: But jRO didn't follow the classic pattern, making it incompatible with custom palettes (@Kamishi ones included). So, I edited frame by frame of each job sprite, of each gender, mounted or not, correcting them, converting them in a way so many of the previously created palettes will work. This package includes: Alternate Outfits: Alternate Royal Guard M/F + Gryffon Battlemount + Lion Mount Alternate Ranger M/F + Warg Battlemount + Ostrich Mount Alternate Minstrel/Wanderer + Ostrich Mount Alternate ArchBishop M/F + Alpaca Mount Alternate Warlock M/F + Fox Mount Alternate Mechanic M/F + Savage Mount Alternate Genetic M/F + Savage Mount Alternate Guillotine Cross M/F + Hyena Mount Alternate Shadow Chaser M/F + Hyena Mount Alternate Sorcerer M/F + Fox Mount Alternate Sura M/F + Alpaca Mount Alternate Rune Knight M/F + Dragon Battlemount + Lion Mount New Classes Star Emperor M/F + Wolf Mount Soul Reaper M/F + Wolf Mount As requested by @Emistry, I also added an extra, making it more compatible to default palettes: Kagerou/Oboro + Frog Mount Following the another @Emistry's request, all files are now already on GRFs. The previous version had no Cashmount palette included, this one fixes the issue. Only the already released costumes are supported at this moment. The Rune Knight seems to be the last of them, it's over a year from the first release! As a final part of the package, I'm including Classic Palettes for all Alternate Costumes. Enjoy the final product!

    Free

  3. 2 points

    Version 1.0.0

    441 downloads

    __________***PLEASE READ***__________ I updated a variety of ragnarok emojis. Example: became > Feel free to do whatever with the graphics. Use parts of it or fully, use them as a base or else - but please follow these rules: ________________________________________ Rules: Do not sell these graphics to anyone. Do not ask me to fix, adjust or change something unless you're willing to pay for it. If you upload them somewhere for others to download, please credit me and/or link back to herc.ws's download section. Contains: Ragnarok Emojis Contact Discord: 방탄#4526

    Free

  4. 1 point
    by short description There are 3 different generations of laboratory monsters: 1. Egnigem, Wickebine, Laurell, Errende, Josephina, Kavach, Armeyer 2. Seyren, Eremes, Kathryne, Margaretha, Cecil, Howard 3. Randel, Gertie, Celia, Chen, Trentini, Alphoccio, Flamel I collect them, correct mistakes, add every possible class to each monster, recolor them in 3 official color sets and improve their aura. As a basis, I took the logic of the first implemented sprites at lhz_dun01-03 If you compare the following kRO sprites with corrections in the changelog you will notice that the logic has ceased to be respected and the sprites do not even have sounds! [DONE] 1st classes, 2nd classes, advanced classes, 3rd classes, 3rd japan edition classes, king of the alley, the last one, custom extended classes, summoner The total number of sprites in the pack: ~150 classes (including different types of weapons) x 3 color sets x 2 different auras = ~900 sprites changelog: (!) Below are the non-clean gifs recorded using GifCam.exe over the Act Editor (!) So these can brake or accelerate and do not serve as an accurate image. These gifs are added just for reference For clarity, the background of the laboratory is taken, and the sprites are shown in transparent blue 969F9EE7 and with improved aura Seyren Windsor Eremes Guile Kathryne Keyron Margaretha Sorin Cecil Damon Howard Alt-Eisen Randel Lawrence Gertie Wie Celia Alde Chen Lio Trentini Ilaria Alphoccio Basil Flamel Emure Egnigem Chenia Wickebine Tres Laurell Weinder Errende Ebecee Josephina Kavach Icarus Armeyer Dinze The Last One & King of the Alley Cheril Belle (Custom) Weikath Valtz (Custom) Keytar Oracle (Custom) Rachel Wirth (Custom) Mary Liz (Custom) Zuku Bg (Custom) Homunculus
  5. 1 point
    This is a researching release, it could have something bad or you may have no idea how to use this. - Preview : - Info : You can make someone to log into server without using client. So, basically, this is a BOT. - Download : txtlogin.7z
  6. 1 point
    This is a tutorial on how to Open Port on Google Cloud for your rAthena server to be online! Linux only for now How to Open Ports on Google Cloud VPS for rAthena Linux Machines First, go to your Google Cloud Dashboard Click Networking > VPC Network > Firewall Rules After that, click Create Firewall Rule On name, put a Name you desire On the Targets, change it to: All instances in the Network Put 0.0.0.0/0 on Source IP Ranges On Protocol and ports, choose Specified Protocols and Ports Place these default ports: tcp: 5121,6121,6900; udp: 5121,6121,6900; If you have different ports, change it! ( 5121: Map 6121: Char 6900: Login ) ( Optional ) On your firewalls, add those Ports, UDP and TCP
  7. 1 point
    Hello rAthena Community I'm Earnestinence, and i'll be guiding you to setup rAthena and run Ragnarok Programs you need to install before we start Downloads: Github : https://desktop.github.com/ MySQL (When installing: make sure to check 'Use Legacy Authentication Method; Retain MySQL 5.x compatibility' ) : http://www.mysql.com/downloads/mysql/ MySQL Workbench : http://www.mysql.com/downloads/workbench/ Note: remember the username and password you set when installing ! Latest Clean kRO Full Client : by: @Akkarin Microsoft Visual Studio ( MVS ) : https://www.visualstudio.com/downloads/ Visual Studio is a code editor supporting and C andC++ compiler. more info Click here by @Aleos Notepad ++ : https://notepad-plus-plus.org/download/ Note: Notepad++ source code editor and Notepad replacement ( or just use notepad ) 2015-11-04a unpacked client: https://mega.nz/#!w84jRRjZ!iWjU1Qfsez_3nbTtqQuFWHsbda2IglPi7TBnzZWmJtI by: @Napster rAthena support all the clients listed in the packet files : read more Required Files: After you download and install GitHub download these files using GitHub File > Clone Repository rAthena ( server ) : https://github.com/rathena/rathena.git English Translated System & Data Folders RE/PRE: by @zackdreaver For Renewal: https://github.com/zackdreaver/ROenglishRE For Pre-Renewal : https://github.com/zackdreaver/ROenglishPRE NEMO Client Patcher : https://github.com/MStr3am/NEMO.git For more info see this topic by @NeoMind Client Setup : http://nn.ai4rei.net/dev/opensetup/ Client setup for Ragnarok Online by @Ai4rei ========================================== Setting up rAthena Server-Side: See video time-line: 00:02 Step 1: Download/Clone rAthena Source Open GitHub. Click Clone repository. Click URL tap. Copy and paste this URL: https://github.com/rathena/rathena.git Choose the downloading path. Click Clone and wait for it do finish downloading. Step 2: Configuring rAthena See video time-line: 00:35 open rathena/conf/import/char_conf.txt Add these lines : userid: username passwd: password login_ip: 127.0.0.1 char_ip: 127.0.0.1 [Optional] To change server name add this line : server_name: YourDesiredServerName Note: If you want to change anything in char_athena.conf, use the import-tmpl directory to avoid future issues when updating. ( just add the respective value you want ). rathena/conf/import/map_conf.txt Add these lines: userid: username passwd: password char_ip: 127.0.0.1 map_ip: 127.0.0.1 Note: If you want to change anything in map_athena.conf, use the import-tmpl directory to avoid future issues when updating. ( just add the respective value you want ). rathena/conf/import/inter_conf.txt Add these lines login_server_db: rathena ipban_db_db: rathena char_server_db: rathena map_server_db: rathena log_db_db: rathena_logs Note: If you want to change anything in map_athena.conf, use the import-tmpl directory to avoid future issues when updating. ( just add the respective value you want ). Note: I use rathena as my main database which contain all main tables (like: chars, login, guilds, etc... ). However, I like to separate my logs to rAthena_logs . Step 3: Compiling rAthena See video time-line: 02:16 Locate rathena/rAthena.sln Locate and right click rAthena.sln open with > Microsoft Visual Studio 2017 ( or 2013 / 2015 ) Wait for the MVS to load the project, when it's ready select Solution 'rAthena' (8 projects) and then right click and Click 'Clean Solution' First when clean finish successfully click on 'build Solution' Wait for it to finish, make sure the log below finish successfully Step 4: Setting SQL Database ( make sure MySQL installed and running ) See video time-line: 03:13 open MySQL Workbench log in : Using the username 'root 'and the password you set when you first install MySQL ( If you don't remember the password, you can reconfigure MySQL using MySQL installer ) once you logged in create new user account and grant Administrator Privileges: - See video time-line: 04:17 In The Left Side click on Users and Privileges At The Bottom click on Add account Set Login Name : ragnarok Set Password : ragnarok Set Confirm Password : ragnarok At The Top Menu Click Administrative Roles: and then check DBA Click Apply logout by clicking on X at the top of the current tap and then login using the new user account ragnarok with password ragnarok See video time-line: 05:00 Creating databases/schema : See video time-line: 05:26 Click on create new database/schema Set the Name: rathena ( this will be our main database/schema ) Set Charset: utf8 ( Now this's is important you need to check this ) Click apply, apply and then finish Now Click on create new database/schema Set the Name: rathena_logs ( this will be our logs database/schema ) Set Charset: utf8 ( Now this's is important you need to check this ) Click apply, apply and then finish import rathena SQL files to rathena & rathena_logs databases: See video time-line: 06:16 Double click on rathena database/schema we've just created Click on locate rathena folder and go to rathena/sql-files and click on main.sql Click on the light icon * wait for the tablet to be executed * Double click on rathena_logs database/schema we've just created Click on locate rathena folder and go to rathena/sql-files and click on logs.sql Click on the light icon * wait for the tablet to be executed * change the username and password of the server: See video time-line: 07:03 Now next/around rathena database right click on a blank area and click refresh all ( in order to view the tables we've just created or just relog ) Click on rathena database/schema > tables > locate login table.. now click on tables and locate login table then right click and click on select Rows - Limit 1000 Double click on s1 and change it to username then hit enter ( we put the userid: username in rathena/conf/import-tmpl/char_conf.txt and map_conf.txt make sure you use the same one you put in these files ) Double click on p1 and change it to password then hit enter ( we put the passwd: password in rathena/conf/import-tmpl/char_conf.txt and map_conf.txt make sure you use the same one you put in these files ) Click apply, apply and then finish Step 5 ( running the server ) Running rAthena server See video time-line: 07:35 locate rathena folder rathena/ click on runserver ( less than 8 mins without any errors ) ================================================== Client Side Running & patch ragnarok online client open Official kRO Client/ Updating kRO Files: Locate and run rsu-kro-rag-lite.exe and wait for it to finish and then rsu-kro-renewal-lite.exe and wait for it to finish updating .. Adding translated system/data files Locate ROenglishRE or ROenglishPRE and copy Data & System folders , GuildTip & Tipoftheday and paste these files into the official kro client folder ( Replace the files when asked ) Setting up clientinfo.xml : locate official kRO client folder open folder data/ and edit file clientinfo.xml change the version to 55 <version>55</version> (This might not be needed anymore.) set the langtype to 1 < To be able to write in English. ( refer to this page to find your preferred language beside English: https://github.com/rathena/rathena/wiki/Clientinfo.xml ). set admin sprite for any account you want, just put the account id <aid> <admin>2000000</admin> </aid> Copy and paste the setup file into the the official kRO client folder Patching the Client 2015-11-04 load the client and select recommended and click enter for data.ini and then CHANGE/EDIT system/iteminfo.lub to system/iteminfo.lua and check read data folder first, ignore missing palettes, ignore resource errors and then customize the client as you want Here's my additional patches: >>> Custom Window Title ( name you server ) Disable Swear Filter Disconnect to Login Window Enable Title Bar Menu Read Data Folder First Show Cancel To Service Select Ignore Missing Palette Error Ignore Resource Errors Use Ragnarok Icon ( ragnarok icon for the client ) <<< copy the new 2015-11-04aRagexe_patched and paste it your official kRO client folder now the client is ready, just run the game using 2015-11-04aRagexe_patched and Enjoy to create a male account just type ex: admin_f for female - admin_m for male and don't forget to set the account group id 99 to get full GM permissions Issue #1: Closed connection from '127.0.0.1'. Solve: go to your rathena/src/custom/defines_pre.hpp and open it with notepad++ ( or any notepad ) add this line #define PACKETVER 20151104 ======================================================== As of 28-7-2018: the topic is fully updated and support MySQL 8.x ======================================================== For further questions or concerns regarding the tutorial, Do NOT hesitate to contact me in this topic, or discord: Earnestinence#5337, which is the best way to reach me. - Earnestinence
  8. 1 point
    View File Stormbreaker Introduction Stormbreaker is a large modification system which adds a collection of new features, bonuses and script commands to your own rAthena server. This package is designed to augment your server with new features which can breathe new life into your gameplay, and comes with a getting started guide, a Git patch file, and some optional client resources. Stormbreaker is developed against the latest version of rAthena, and will be continually updated to the latest on a weekly basis. (Videos will be coming soon highlighting each feature.) Features This package includes the following: New item bonuses (83) New script commands (10) New GM commands (9) Item Bazaar Shop system Item Durability system Item Craft system Item Enchantment system Item Passive Script system Item Passive Status system More features are actively being developed and will be released in the near future. Item Bonuses All item bonuses are the same as those found on the Bonus Expansion Pack thread. If you're looking to acquire this package solely for the item bonuses, please be advised that these will be released soon for free on that thread. Stormbreaker will be updated with newer item bonuses as more are recommended. Script Commands Item Bazaar Shop The bazaar shop system functions similar to that featured in Final Fantasy XII. As a player accumulates and sells items to shops, you can configure items which become available for purchase at specialist bazaar shops by the sale of certain combinations of items. These can be items which become permanently unlocked, can be unlocked multiple times, or those which can only be purchased the once and can never be unlocked again. This feature provides a great way to reward players for farming and killing monsters, and unlocks great potential for introducing unique items and equipment available only after acquiring and selling combinations of materials. Item Durability The item durability system works much like the Witcher 3 durability for equipment. All equipment has a durability score (a percentage) which determines how much more stress it can take before breaking. As players engage in battle, their equipment will slowly degrade (completely configurable), which can lead to weakened bonuses, weakened ATK and DEF modifiers, and chances of breaking. All equipment can be repaired through special NPCs (using new script commands described above) and can also receive protection with the Chemical Protect skills (configurable.) Item durability can be configured to decrease on a fixed percentage per attack (a denomination as low as 0.0001%) or based on the amount of damage dealt/received. Note: For the item durability percentage to be visible as in the screenshot, this requires client version 2015-02-25aRagexeRE or later. Item Craft The item craft system uses the new refine user interface with a completely custom crafting database. Players can drag a source material and catalyst material into the refine window to be given the opportunity to craft something new. This feature isn't restricted to just equipment, but any other sort of item too! Your players could be upgrading their basic Red Potions to Orange Potions using Jellopies or Grapes, or could be upgrading their Knife[3] to a Knife[4] by combining it with a special material. The crafting database allows for a lot of flexibility, including key features like equipment being able to retain their refine level, cards, random options, and even item durability! Note: For the new refine interface and the crafting system, this requires client version 2016-10-12aRagexeRE or later. Item Enchantment The enchantment system similarly uses the new refine user interface to provide a beautiful and unique point for being able to upgrade equipment with random options! The custom enchantment database lets you build your own system for allowing players to add unique or powerful random options to their equipment, restricted at a per-item level. Every item supports up to a maximum of 4 different enchantment types, and can be configured with custom chance rates and costs, which can further be configured depending on the current number of enchantments already on the equipment! New server configurations let you control how many enchantments can be added to each type of equipment to add finer control. With this system, players could enchant their boring Knife with ATK + 10% by using some rare or valuable material. Note: For the new refine interface and the enchanting system, this requires client version 2016-10-12aRagexeRE or later. Item Passive Script The passive script system is designed to augment and empower the already powerful item database. The bespoke item passive script file lets you add new "equipment" scripts which are active while an item is stored in the players inventory! A player holding a rare coin in their miscellaneous item tab might find themselves with a constantly active HP + 5%, or perhaps they have acquired a sword which provides a permanent HIT - 30 while the item is held by the player. The system could also be used to reward players with EXP or Zeny increasing items. This system works with any existing or new items, and just needs a line adding to the file! Item Passive Status The passive status system works similar to the passive script system, except that the player receives a permanent (cannot be dispelled nor removed by death, nor cured from healing items) status effect while an item is held in their inventory. You could grant players a permanent Increase Agility effect while holding a magic feather, or perhaps afflict them with Poison while they carry some cursed tome. The passive status system is designed to improve on existing mechanics where equipments can provide permanent bonuses, with special flags indicating whether equipment provides the status only when equipped or when in the inventory. Support I intend to provide continual support with Stormbreaker by keeping the files up-to-date, on a weekly basis, with the latest hash of rAthena. Each week I will upload a new version of the Stormbreaker archive, along with any new augmentations (such as item bonuses, script commands) and bug fixes. If you encounter problems when running or using the new Stormbreaker features, please feel free to contact me directly on here, to my email address [email protected], or on our Discord server, and I will respond as soon as I am able (usually on the day, otherwise within 1-2 days.) For support on applying the Stormbreaker project to an older version of rAthena, again please contact me directly on here or on the Discord server. Click here to join the Discord server. Copyright Stormbreaker © Chris Copeland 2019. All rights reserved. By purchasing this package you agree that you will not share or redistribute any and all files included in the package without the express written consent of myself (Epoque, Chris Copeland), and that you will not upload this package onto any secure or unsecure file sharing websites. Submitter Epoque Submitted 03/18/2019 Category Source Modifications Video Content Author Chris Copeland
  9. 1 point
    View File Third Job Costumes & New Classes: Corrected Third Job Costumes + New Classes The Correction With the advent of jRO releasing new Job Costumes, and also, the new classes from the Taekwon branch, many of server owners want to replace the vanilla sprites or even, implement the bodystyle system. But, there's a catch! Originally jRO, and now, even kRO spriters, have made it completely off of the default pattern of palette. In a classic example, you can notice the pattern of the RO palettes. What matters is the position of the colours, as an example, for all jobs, the white-ish tones will be always on the same row, so we can use it to create custom palettes. See how it works: But jRO didn't follow the classic pattern, making it incompatible with custom palettes (@Kamishi ones included). So, I edited frame by frame of each job sprite, of each gender, mounted or not, correcting them, converting them in a way so many of the previously created palettes will work. This package includes: Alternate Outfits: Alternate Royal Guard M/F + Gryffon Battlemount + Lion Mount Alternate Ranger M/F + Warg Battlemount + Ostrich Mount Alternate Minstrel/Wanderer + Ostrich Mount Alternate ArchBishop M/F + Alpaca Mount Alternate Warlock M/F + Fox Mount Alternate Mechanic M/F + Savage Mount Alternate Genetic M/F + Savage Mount Alternate Guillotine Cross M/F + Hyena Mount Alternate Shadow Chaser M/F + Hyena Mount Alternate Sorcerer M/F + Fox Mount Alternate Sura M/F + Alpaca Mount Alternate Rune Knight M/F + Dragon Battlemount + Lion Mount New Classes Star Emperor M/F + Wolf Mount Soul Reaper M/F + Wolf Mount As requested by @Emistry, I also added an extra, making it more compatible to default palettes: Kagerou/Oboro + Frog Mount Following the another @Emistry's request, all files are now already on GRFs. The previous version had no Cashmount palette included, this one fixes the issue. Only the already released costumes are supported at this moment. The Rune Knight seems to be the last of them, it's over a year from the first release! As a final part of the package, I'm including Classic Palettes for all Alternate Costumes. Enjoy the final product! Submitter Haziel Submitted 02/24/2016 Category Job Sprites Content Author Gravity Corp  
  10. 1 point
    My custom Launcher created 100% by me Login Launcher + Update + Account Manager + Vote 4 Points + Donate No need to go to the server site What do you think? Suggestions? OLD
  11. 1 point
    View File Costume Enchantments - Custom idRO Klasik based In this script Custom NPCs to exchange listed costumes becomes Upper/Middle/Lower/Garment Enchant Stone Box Custom NPCs to enchant listed costumes by selecting the enchant stones (50% success, failure will delete the stone only) Custom NPC to exchange Enchant Stone to Upper/Middle/Lower/Garment Enchant Stone Box (require: 2,000,000,000 Zeny) Not in this script All items (server-side) that are not present in rAthena All items (client-side) that are not present in kRO (or other official clients) because idRO Klasik customization Lucky charms Exchange it Enchant it Woops, I need to find another stone Submitter Cydh Submitted 06/09/2018 Category Utilities Video https://www.youtube.com/watch?v=M0nv3YWVA6w&list=PL274vHMHfeg1-5SkmFEZWCRSvLIGeat_V Content Author Cydh
  12. 1 point
    The topic has been removed because of rAthena staff double standards and hypocrisy things. (rA staff blame me that I made a money on this topic while it's not and never was) All that I did for the last 2.5 years with around ~1k answers from my side is help for free for newbies here, but to rA staff, my topic is a pain in the ass. Sorry guys, but the topic can't be maintained on such a community anymore because of its admins. Bye
  13. 1 point

    Version 1.0.0

    336 downloads

    Simple Purple Website Responsive One-Page ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ By: Mihael Hope you like it ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ About: Website is made in php / html responsive one page, is translated in pt-br, but I believe in your potential to translate into their respective languages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Demo: Espero que gostem.

    Free

  14. 1 point
    UPDATED, NOW HAVE 72 HEADS UPDATED, NOW HAVE 84 HEADS !!!!! Here a Compiliation of basic customs Hairs from Ragnarok Online, This include the 29 oficial heads. All of these heads aren't made be me, with exception of #68, #69, #70 and #71 male heads and female #70 and #71 heads, this pack cames from internet and a bit of search, the authors put the credit on Spr files... But who diferent on that pack? - Repeated Heads Removed; - Missaligned Heads Fixed; (like #48 and #61) - 6 Unique Heads. - Now this pack is mixed with smokim pack (from cronus) - No Female Heads in Male pack, with exception of classic #43 I'm Still Working On this Pack to change female heads into male heads (like #43, #55, #56 etc - Male Hairstyles), to make all heads in Oficial Collors (1~7 to work with them), To Increase this into 100 Hairstyles Pack. Preview: DOWNLOAD: 84 Heads.zip Mirror 4Shared Mirror MediaFire
  15. 1 point
    roCORD for rAthena Hey everyone, I am currently working on a Discord bot which allows interaction between a Discord server and an in game channel. Support for Version 1 is now dropped! Version 2 can be found under this link -> https://github.com/Normynator/roCORD/tree/development Documentation about installation and configuration can be found here -> https://github.com/Normynator/roCORD/tree/development/docs More updates on Version 2 will follow.
  16. 1 point
    In case you get following messages and a client crash: Please try without Nemo Patch 'Hide build info in client'
  17. 1 point

    Version 1.0

    752 downloads

    Hi all, This is a basic damage font alternative which can be used to bring a little more high definition resolution to Ragnarok! I made this purely because I was tired of staring at the hideously stretched and over-pixelated damage numbers while I was doing some testing. Feel free to give it a try! There is a slightly wider spacing between digits that I wasn't able to close off because the client must determine spacing/positionings between, but if you want to reduce some of the spacing I have provided another .act file suffixed "_larger" which reduces the spacing but makes the damage text a bit larger. Thanks

    Free

  18. 1 point
    You can try this script by Sehrentos, it's one of the most configurable enchanters I've seen: //===== rAthena Script ======================================= //= Enchant NPC //===== By: ================================================== //= Sehrentos //===== Current Version: ===================================== //= 1.2 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Enchant player's equipment. Support multiple enchants. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 Remove enchant option. //= 1.2 Added .max_enchant option. //============================================================ // shop/cashshop/itemshop/pointshop - shop enc_atk -1,501:300; - shop enc_def -1,501:300; - shop enc_stats -1,501:300; prt_in,65,68,4 script Enchant#prt1 4_M_MERCAT1,{ disable_items; switch(select("Attack:Defence:Stats:Remove")) { case 1: @shop_name$ = "enc_atk"; break; case 2: @shop_name$ = "enc_def"; break; case 3: @shop_name$ = "enc_stats"; break; case 4: callsub S_Remove; break; default: end; } callshop @shop_name$, 1; npcshopattach @shop_name$; end; OnInit: // Settings: shop names, currencies, items, prices .max_enchant = 2; // Max amount of enchants 0-4 setarray .shop_name$[0], "enc_atk", "enc_def", "enc_stats"; setarray .shop_currency$[0],"Zeny", "Zeny", "Zeny"; setarray .enc_atk_id[0], 4760, 4761, 4806, 4815, 4814, 4813, 4812, 4826, 4827, 4828, 4829, 4830, 4831, 4819, 4766, 4767,4764,4765, 4807, 4842, 4818, 4817, 4816, 4843, 4844, 4811, 4810, 4809, 4808, 4820, 4821, 4822, 4823, 4824, 4825, 4832, 4833, 4834, 4835, 4836, 4837, 4838, 4839, 4840, 4841; setarray .enc_atk_price[0],10000,20000,30000,10000,20000,30000,40000,50000,60000,70000,80000,90000,100000,10000,20000,30000,5000,7000,10000,20000,10000,20000,30000,40000,50000,10000,20000,30000,40000,50000,60000,70000,80000,90000,100000,10000,20000,30000,40000,50000,60000,70000,80000,90000,100000; setarray .enc_def_id[0], 4805, 4850, 4851, 4852,4762, 4763,4786,4787,4788,4789, 4790,4791,4792,4793, 4794,4795,4796,4797,4798,4799,4800,4801, 4802; setarray .enc_def_price[0],10000,20000,40000,60000,5000,12000,2000,4000,6000,8000,10000,3000,5000,9000,12000,1000,2000,3000,4000,5000,2500,5000,10000; setarray .enc_stats_id[0], 4700,4710,4720,4730,4740,4750, 4701,4711,4721,4731,4741,4751, 4702,4712,4722,4732,4742,4752, 4703,4713,4723,4733,4743,4753, 4704,4714,4724,4734,4744,4754, 4705,4715,4725,4735,4745,4755, 4706,4716,4726,4736,4746,4756, 4707,4717,4727,4737,4747,4757, 4708,4718,4728,4738,4748,4758, 4709, 4719, 4729, 4739, 4749, 4759; setarray .enc_stats_price[0],1500,1500,1500,1500,1500,1500, 2500,2500,2500,2500,2500,2500, 3500,3500,3500,3500,3500,3500, 4500,4500,4500,4500,4500,4500, 5500,5500,5500,5500,5500,5500, 6500,6500,6500,6500,6500,6500, 7500,7500,7500,7500,7500,7500, 8500,8500,8500,8500,8500,8500, 9500,9500,9500,9500,9500,9500, 10500,10500,10500,10500,10500,10500; // Load shop items for([email protected] = 0; [email protected] < getarraysize(.shop_name$); [email protected]++) { [email protected]$ = .shop_name$[[email protected]]; deletearray [email protected][0],getarraysize([email protected]); deletearray [email protected][0],getarraysize([email protected]); copyarray [email protected][0], getd("."[email protected]$+"_id[0]"), getarraysize(getd("."[email protected]$+"_id")); copyarray [email protected][0], getd("."[email protected]$+"_price[0]"), getarraysize(getd("."[email protected]$+"_price")); npcshopdelitem [email protected]$,501;// Remove apple for([email protected] = 0; [email protected] < getarraysize([email protected]); [email protected]++) { npcshopadditem [email protected]$, [email protected][[email protected]], [email protected][[email protected]]; } } end; OnSellItem: end; OnBuyItem: [email protected]_count = getarraysize(@bought_nameid); if([email protected]_count < 1) end; // Get shop data by @shop_name$ [email protected]_index = inarray(.shop_name$[0], @shop_name$); if([email protected]_index == -1 || getarraysize(.shop_name$) < 1) { message strcharinfo(0), "Shop was not found!"; debugmes "Incorrect shop array detected in '"[email protected]_name$+"'! FIXME!"; end; } copyarray [email protected]_id[0], getd("."[email protected]_name$+"_id"), getarraysize(getd("."[email protected]_name$+"_id")); copyarray [email protected]_price[0], getd("."[email protected]_name$+"_price"), getarraysize(getd("."[email protected]_name$+"_price")); for([email protected] = 0; [email protected] < [email protected]_count; [email protected]++) { [email protected] = inarray([email protected]_id[0], @bought_nameid[[email protected]]); if([email protected] == -1) { message strcharinfo(0), "Price was not found!"; debugmes "Incorrect price array detected in '"[email protected]_name$+"'! FIXME!"; end; } setarray [email protected]_cost[getarraysize([email protected]_cost)],[email protected]_price[[email protected]]*@bought_quantity[[email protected]]; for ([email protected] = 0; [email protected] < @bought_quantity[[email protected]]; [email protected]++) { setarray [email protected][getarraysize([email protected])],@bought_nameid[[email protected]]; } } // Count total cost for([email protected] = 0; [email protected] < [email protected]_count; [email protected]++) { [email protected]_cost = [email protected]_cost + [email protected]_cost[[email protected]]; } // Currency check if(.shop_currency$[[email protected]_index] == "Zeny" && Zeny < [email protected]_cost) { message strcharinfo(0), "("[email protected]_cost+") Not enough "+.shop_currency$[[email protected]_index]+"!"; end; } // Other currency checks... // Select equipment (EQI) mes "[ " + strnpcinfo(1) + " ]"; mes "Please select which equipment you want me to enchant."; [email protected] = callsub(S_SelectPosition); // Check if position has equipment if(!getequipisequiped([email protected])) { clear; mes "[ " + strnpcinfo(1) + " ]"; mes "You don't have anything equipped there!"; close; } [email protected]_id = getequipid([email protected]); //Equipped item id [email protected] = getequiprefinerycnt([email protected]); //Equipped refine value [email protected] = getitemslots([email protected]_id); setarray [email protected][0], getequipcardid([email protected],0), getequipcardid([email protected],1), getequipcardid([email protected],2), getequipcardid([email protected],3); [email protected]_count = getarraysize([email protected]); [email protected]_count = getarraysize([email protected]); /*if([email protected]_count > .max_enchant) { clear; mes "[ " + strnpcinfo(1) + " ]"; mes "This item has been crafted or produced and cannot be enchanted."; close; }*/ // Check for enabled refinement /*if(!getequipisenableref([email protected])) { clear; mes "[ " + strnpcinfo(1) + " ]"; mes "I don't think I can enchant this item at all."; mes "Sorry..."; close; }*/ // Add all card slots for([email protected] = 0; [email protected] < [email protected]; [email protected]++) { setarray [email protected][getarraysize([email protected])], ([email protected][[email protected]] > 0 ? [email protected][[email protected]] : -1); } // Add previous enchants for([email protected] = [email protected]; [email protected] < [email protected]_count; [email protected]++) { if([email protected][[email protected]] > 0) { setarray [email protected][getarraysize([email protected])], [email protected][[email protected]]; } } // Add new enchants for([email protected] = 0; [email protected] < [email protected]_count; [email protected]++) { setarray [email protected][getarraysize([email protected])], [email protected][[email protected]]; } // Check for produced/crafted items 254,255 if([email protected][0] == CARD0_FORGE || [email protected][0] == CARD0_CREATE) { clear; mes "[ " + strnpcinfo(1) + " ]"; mes "This item has been crafted or produced and cannot be enchanted."; close; } // Has card sockets 4 - slots if([email protected]_count > (.max_enchant - [email protected])) { clear; mes "[ " + strnpcinfo(1) + " ]"; mes "This equipment can hold "+(.max_enchant - [email protected])+" enchant."; close; } // Has free sockets if(([email protected] + [email protected]_count) > .max_enchant || getarraysize([email protected]) > .max_enchant) { clear; mes "[ " + strnpcinfo(1) + " ]"; mes "This item does not have enough free sockets to enchant."; close; } // Confirm the setup clear; mes "[ " + strnpcinfo(1) + " ]^6E6E6E Setup^000000"; for([email protected] = 0; [email protected] < [email protected]_count; [email protected]++) { mes "Enchant: "+ getitemname([email protected][[email protected]]); } mes "Equipment: "+ getitemname(getequipid([email protected])); mes "Cost: "[email protected]_cost+" "+.shop_currency$[[email protected]_index]+"."; if (select("Create enchant:Cancel") != 1) { clear; mes "[ " + strnpcinfo(1) + " ]"; mes "Farewell."; close; } // Create selected enchant clear; mes "[ " + strnpcinfo(1) + " ]^6E6E6E Done^000000"; mes "Here is your enchanted equipment!"; delequip([email protected]ition); specialeffect2 154; if(.shop_currency$[[email protected]_index] == "Zeny") { Zeny = Zeny - [email protected]_cost; } getitem2 [email protected]_id, 1, 1, [email protected], 0, ([email protected][0] > 0 ? [email protected][0] : 0), ([email protected][1] > 0 ? [email protected][1] : 0), ([email protected][2] > 0 ? [email protected][2] : 0), ([email protected][3] > 0 ? [email protected][3] : 0); close; S_Remove: // Select equipment (EQI) mes "[ " + strnpcinfo(1) + " ]"; mes "Please select which equipment you want me to work on."; [email protected] = callsub(S_SelectPosition); // Check if position has equipment if(!getequipisequiped([email protected])) { clear; mes "[ " + strnpcinfo(1) + " ]"; mes "You don't have anything equipped there!"; close; } [email protected]_id = getequipid([email protected]); //Equipped item id [email protected] = getequiprefinerycnt([email protected]); //Equipped refine value [email protected] = getitemslots([email protected]_id); setarray [email protected][0], getequipcardid([email protected],0), getequipcardid([email protected],1), getequipcardid([email protected],2), getequipcardid([email protected],3); [email protected]_count = getarraysize([email protected]); [email protected]_count = getarraysize([email protected]); // Create selected item clear; mes "[ " + strnpcinfo(1) + " ]^6E6E6E Done^000000"; mes "Here is your equipment back!"; delequip([email protected]); specialeffect2 169; getitem2 [email protected]_id, 1, 1, [email protected], 0,0,0,0,0; for([email protected]=0; [email protected]<[email protected]; [email protected]++) { if([email protected][[email protected]] > 0) getitem [email protected][[email protected]], 1; } close; S_SelectPosition: setarray [email protected][1], EQI_HEAD_TOP, EQI_HEAD_MID, EQI_HEAD_LOW, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R; setarray [email protected]$[1], "Top", "Mid", "Low", "Armor", "Left Hand", "Right Hand", "Garment", "Shoes", "Accessory L", "Accessory R"; setarray [email protected][1], 1, 1, 1, 1, 1, 1, 1, 1, 1, 1; // 1=allow, 0=deny for([email protected]=1; [email protected]<getarraysize([email protected]); [email protected]++) { if([email protected][[email protected]] && getequipisequiped([email protected][[email protected]])) { [email protected]$ = [email protected]$ + [email protected]$[[email protected]] + "-[" + getequipname([email protected][[email protected]]) + "]"; } [email protected]$ = [email protected]$ + ":"; } [email protected] = [email protected][select([email protected]$)]; return [email protected]; }
  19. 1 point

    Version 1.0.0

    131 downloads

    __________***PLEASE READ***__________ Feel free to do whatever with the graphics. Use parts of it or fully, use them as a base or else - but please: ________________________________________ Rules: Do not sell these graphics to anyone. Do not ask me to fix, adjust or change something unless you're willing to pay for it. The PSDs might be chaotic and not cleaned as there was no need for it. If you upload it somewhere else, please credit me and/or link back to me. Contains: Ragnarok Banner/RO2 Characters

    Free

  20. 1 point
    Disable the 'emblem frame' option in the advanced settings window. On maps where gvg is enabled, the 'emblem frame' will crash the client.
  21. 1 point
    I don't know if I got this right... item_db.txt: 31024,Immortal_Cursed_Knight_Card,Immortal Cursed Knight Card,6,20,,10,,,,,,,,2,,,,,{ bonus bAtkRate,10; bonus5 bAutoSpell,2066,5,20,ATF_WEAPON,1; },{},{} 31025,Immortal_Wind_Ghost_Card,Immortal Wind Ghost Card,6,20,,10,,,,,,,,2,,,,,{ bonus bMatkRate,10; bonus5 bAutoSpell,2450,5,20,ATF_MAGIC,1; },{},{} 31026,Immortal_Cursed_Knight_Card,Immortal Cursed Knight Card,6,20,,10,,,,,,,,2,,,,,{ bonus5 bAutoSpellWhenHit,2443,5,35,ATF_WEAPON,0; bonus5 bAutoSpellWhenHit,2444,5,80,ATF_MAGIC,0; autobonus "{ bonus bFlee,200; }",30,10000,BF_WEAPON; autobonus "{ bonus bSpeedRate,10; }",25,10000,BF_MAGIC; },{},{} item_combo_db.txt: 31024:31025:31025,{ bonus bAspd,1; bonus bVariableCastrate,-10; }
  22. 1 point

    Version 1.0

    4,904 downloads

    These files are not created by me. I just found someone share a complete package of it on facebook. Thank him/her for collecting all these Skin across the world wide web, I believe some skin files was updated or fixed by him/her. So, I'll just provide a text file that contain the link to download these files from my dummy OneDrive Folder. Album Preview : http://imgur.com/a/b1MHG Installation Guide : Pick any RO Skin that you like and Download it to your PC/Laptop. Extract the files using 7-Zip / WinRar / WinZip / etc. Copy and paste the extracted files into the %System%/kRO/Skin/ folder. Again, I don't own any of these files. I just sharing the files. None of these are commercial items. Please insert / remain the credits in case you know who're them. Thank you.

    Free

  23. 1 point

    Version 1.0.0

    553 downloads

    This grf contains fixed hairstyle arrangement after using "Increase hair style limit in game" from 4144 latest NEMO updates, because after patched the hairstyle is not in correct arrangement.

    Free

  24. 1 point
    [Guide] Adding custom Random Options Introduction: In this guide I will introduce you how to implement custom Random Options. I will use as an example the bonus "bAddEff". -------------------------------------------------------------------- - Server-Side - First of all we will add our custom option to item_randomopt_db (db\import\item_randomopt_db.txt) When opening this file will appear: // Items Random Option Database // // Structure of Database: // ID,{ Bonus Script } So we add this: RDMOPT_WEAPON_FREEZE,{ bonus2 bAddEff,Eff_Freeze,getrandomoptinfo(ROA_VALUE)*100; } In this case getrandomoptinfo(ROA_VALUE) is multiplied by 100, because 100 means 1% in bAddEff. Also, we need to add the constant, opening db\const.txt. Find: "//RDMOPT_ATTR_TOLERACE_ALL 193" And add below: RDMOPT_WEAPON_FREEZE 194 Server side is finished~ -------------------------------------------------------------------- - Client-Side - For display our custom options we must adding to enumvar.lub and addrandomoptionnametable.lub, located in (luafiles514\lua files\datainfo\) Editing enumvar.lub: Find: ATTR_TOLERACE_ALL = { 193, 10 }, And add: WEAPON_FREEZE = {194, 0}, *The first number must be same that added in const.txt* Editing addrandomoptionnametable.lub: Find: [EnumVAR.MDAMAGE_SIZE_LARGE_USER[1]] = "Magical resistance Large size monster +%d%%", And add: [EnumVAR.WEAPON_FREEZE[1]] = "Freeze an enemy when attacking +%d%%", %d% is equal to ROA_VALUE. -------------------------------------------------------------------- After completing all of the above your Random Option is ready to use. Remember that there is documentation of how to add random options to items and a sample npc. If you have doubts, write on the comments.
  25. 1 point

    Version 1.0.1

    307 downloads

    Heya, This is a tool to edit mapcache files for rAthena (db/(pre-)re/map_cache.dat). It is already part of Server Database Editor as a sub tool, but I've made it a tool on its own instead. It was made to fix the issue with WeeMapCache not assigning the water tiles properly. Otherwise, it's pretty much the same interface, but easier to use. The most recent version will always be found from the mediafire link below: http://www.mediafire.com/file/tjlnooebx6am673 Source files: https://github.com/Tokeiburu/Mapcache-Editor

    Free

  26. 1 point
    File Name:w0w_custom_collectionFile Submitter: w0wZukuBgFile Submitted: 24 June 2018File Category: Sprites & PalettesDownload Link: Click here to download .•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•. butterfly_wings [x5 new] Look at the old butterfly wing and at it. Now again on the old and on the new. Why is my butterfly wing looks like a wing, not a human ear? = D I would be happy if you would prefer my work for replacement. battle_manuals [x5 new] Recolor to diversify the rates. bubble_gums [x5 new] Recolor to diversify the rates. bullets [x6 new] Just additional sprites of bullets based on standard. Fire, Water, Wind, Earth, Poison and Shadow property. card_sprites [x3 new] Now rare cards will really decorate your inventory 1 - for miniboss cards 2 - for yellow MVP cards 3 - for red MVP cards w0w_items [x6 new] 1 - Armor Charm [ID 2656] - make it's own sprite instead of the Gravity... 2 - Very Old Card Album [ID custom] - just an idea, make an item sprite according to second collection picture. 3 - Animal Detector [ID custom] - the idea came from the game BG&E. 4 - Venatu Doll [ID custom] - it can be an item for pet/mercenary activation or just a doll. 5 - Camera [ID custom] - the file includes small ingame illustration of camera. 6 - Condenced Blue Potion [ID custom] - nuff said ~ gemmed_sallet [new] Could not wait any longer, just add a ingame hat animation made by myself instead of Gravity :3 dullahan [white eyes] In one of the client updates the sprite Dullahan was changed. Since then, his eyes have disappeared. Gravity did not comment on what had happened. Very much I ask to check up this monster on your server and to replace a sprite in case of need. >>>>> w0w_cardbmp [x6 new] You can use this art work for any purpose, for example, you can make it a card on your server. sl_icons [x2 new] Two new icons for SL_GUNNER and SL_NINJA skillsSince the icons use Chinese characters, thenfor the SL_GUNNER, the 枪 means a gunand for the SL_NINJA I left the character out of skill Final Strike .•°'°•. skating_grf [new] Just added edited santa costume sprite for imitation of skating (based on 여름 summer clothes sprite v1).You may see the sample of skating in my custom map Xpalace preview: Link here blood_tears [new] My first attempt to make a custom version of any weapon. The basis was taken Blood Tears [id 1271]. .•°'°•. ~ Don't claim my or Gravity's work as yours and etc ~
  27. 1 point
    Seu desejo é uma ordem! /////////////////////////////////////////////////////// // ___________ _____.__ // \__ ___/__.__.________/ ____\__| ____ ____ // | | < | |\_ __ \ __\| |/ \ / ___\ // | | \___ | | | \/| | | | | \/ /_/ > // |____| / ____| |__| |__| |__|___| /\___ / // \/ Scripts \//_____/ // //===================================================== // Name: Poring Reporter // // Description: // A poring reporter will spread the news about your // server walking randomly throughout Prontera. // // Instructions: // Toggle walking by whispering to NPC! // (To whisper the NPC, simply send a private message // in Ragnarok to "npc:Poring Reporter") // Say "walk" and it'll start walking. // Anything else and it'll stop as soon as possible. //===================================================== /////////////////////////////////////////////////////// prontera,147,190,5 script Poring Reporter 909,{ set [email protected]_level, 99; // Necessary GM Level set [email protected]_name$, "Poring Reporter"; function NewsList; Begin: if (getgmlevel() < [email protected]_level) end; npcstop; if (.walking != 0) npctalk "Stopped walking. Tell me to \"walk\".", "", bc_self; set .walking, 0; clear; mes "[ ^f442a7"+ [email protected]_name$ +"^000000 ]"; mes "Hello, master! What are the news today?"; menu "Show news",ShowNews, "Remove news",RemoveNews, "Register news",RegisterNews; ShowNews: clear; mes "[ ^f442a7"+ [email protected]_name$ +"^000000 ]"; if (getarraysize(.news$) > 0) { mes "These are the news:"; NewsList; } else { mes "There are no news."; } next; goto Begin; RemoveNews: clear; NewsList; mes "Enter the number of the new you want to remove:"; input [email protected]; clear; mes "[ ^f442a7"+ [email protected]_name$ +"^000000 ]"; mes "Do you want to remove \"" + .news$[[email protected]] + "\"?"; if (select("Yes:No") == 1) { [email protected] = getarraysize(.news$); for ([email protected] = [email protected]; [email protected] < [email protected]; [email protected]++) { set .news$[[email protected]], .news$[[email protected]+1]; } set .news$[[email protected]], ""; } goto Begin; RegisterNews: clear; mes "[ ^f442a7"+ [email protected]_name$ +"^000000 ]"; mes "What should I spread throughout Prontera?"; input [email protected]$; clear; mes "[ ^f442a7"+ [email protected]_name$ +"^000000 ]"; mes "\"" + [email protected]$ + "\""; mes "Is that right?"; if (select("Yes:No") == 2) goto RegisterNews; set .news$[getarraysize(.news$)], [email protected]$; clear; mes "[ ^f442a7"+ [email protected]_name$ +"^000000 ]"; mes "Okay!~"; next; goto Begin; function NewsList { for ([email protected] = 0; [email protected] < getarraysize(.news$); [email protected]++) { if (.news$[[email protected]] != "") mes ([email protected]+1) + ". \""+ .news$[[email protected]] +"\""; } } OnWhisperGlobal: if (getgmlevel() < [email protected]_level) end; if (@whispervar0$ == "walk") { set .walking, 1; } else { set .walking, 0; } while (.walking == 1) { set [email protected], 142; set [email protected], 192; set [email protected], 189; set [email protected], 217; npcwalkto rand([email protected], [email protected]), rand([email protected], [email protected]); npctalk .news$[rand(getarraysize(.news$))]; sleep 5000; } end; } Para que o poring ande pelo mapa, é necessário ativá-lo enviando uma mensagem para o npc. Para fazer isso, no lugar onde você coloca o nome dos jogadores com quem deseja ter uma conversa privada, coloque o seguinte: "npc:Poring Reporter". Se você mandar a mensagem "walk", ele vai começar a andar ao redor da parte central de Prontera. Você pode alterar as coordenadas mínimas e máximas.
  28. 1 point
    Looking forward to your rate or upvote or comment on this release. Download the files here: LINK (Updated to v1.2!) Hi guys, Some of you may know me from the preview of this project a couple of days ago, I'm here to release the status icons as promised. Here's a preview of freeze effect: _______________________________________________________________________________________________________ Guide on how to install these status icon (8 Steps) Download the files here: LINK Emulator-Side Step 1: Go to src\map\status.c Look for: /* First we define the skill for common ailments. These are used in skill_additional_effect through sc cards. [Skotlex] */ set_sc( NPC_PETRIFYATTACK , SC_STONE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF ); set_sc( NPC_WIDEFREEZE , SC_FREEZE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF ); add_sc( NPC_STUNATTACK , SC_STUN ); add_sc( NPC_SLEEPATTACK , SC_SLEEP ); set_sc( NPC_POISON , SC_POISON , SI_BLANK , SCB_DEF2|SCB_REGEN ); set_sc( NPC_CURSEATTACK , SC_CURSE , SI_BLANK , SCB_LUK|SCB_BATK|SCB_WATK|SCB_SPEED ); add_sc( NPC_SILENCEATTACK , SC_SILENCE ); add_sc( NPC_WIDECONFUSE , SC_CONFUSION ); set_sc( NPC_BLINDATTACK , SC_BLIND , SI_BLANK , SCB_HIT|SCB_FLEE ); set_sc( NPC_BLEEDING , SC_BLEEDING , SI_BLEEDING , SCB_REGEN ); set_sc( NPC_POISON , SC_DPOISON , SI_BLANK , SCB_DEF2|SCB_REGEN ); Replace with: set_sc( NPC_PETRIFYATTACK , SC_STONE , SI_STONE , SCB_DEF_ELE|SCB_DEF|SCB_MDEF ); set_sc( NPC_WIDEFREEZE , SC_FREEZE , SI_FREEZE , SCB_DEF_ELE|SCB_DEF|SCB_MDEF ); set_sc( NPC_STUNATTACK , SC_STUN , SI_STUN , SCB_NONE ); set_sc( NPC_SLEEPATTACK , SC_SLEEP , SI_SLEEP , SCB_NONE ); set_sc( NPC_POISON , SC_POISON , SI_POISON , SCB_DEF2|SCB_REGEN ); set_sc( NPC_CURSEATTACK , SC_CURSE , SI_CURSE , SCB_LUK|SCB_BATK|SCB_WATK|SCB_SPEED ); set_sc( NPC_SILENCEATTACK , SC_SILENCE , SI_SILENCE , SCB_NONE ); set_sc( NPC_WIDECONFUSE , SC_CONFUSION , SI_CONFUSION , SCB_NONE ); set_sc( NPC_BLINDATTACK , SC_BLIND , SI_BLIND , SCB_HIT|SCB_FLEE ); set_sc( NPC_BLEEDING , SC_BLEEDING , SI_BLEEDING , SCB_REGEN ); set_sc( NPC_POISON , SC_DPOISON , SI_DPOISON , SCB_DEF2|SCB_REGEN ); Step 2: Go to src\map\status.h Look for: SI_JP_OTP = 816, Add below: SI_STONE = 818, SI_FREEZE = 819, SI_STUN = 820, SI_SLEEP = 821, SI_POISON = 822, SI_CURSE = 823, SI_SILENCE = 824, SI_CONFUSION = 825, SI_BLIND = 826, SI_CHANGEUNDEAD = 827, SI_DPOISON = 828, Step 3: Go to db\const.txt Look for: SI_JP_OTP 816 Add below: SI_STONE 818 SI_FREEZE 819 SI_STUN 820 SI_SLEEP 821 SI_POISON 822 SI_CURSE 823 SI_SILENCE 824 SI_CONFUSION 825 SI_BLIND 826 SI_CHANGEUNDEAD 827 SI_DPOISON 828 Step 4: Re-compile your server! Client-Side (You can skip this step if you use my .grf files to patch your server) Step 5: Go to \data\luafiles514\lua files\stateicon\efstids.lua (You can skip this step if you use my .grf files to patch your server) Look for: EFST_FLOWER_LEAF = 675, Add below: EFST_STONE = 818, EFST_FREEZE = 819, EFST_STUN = 820, EFST_SLEEP = 821, EFST_POISON = 822, EFST_CURSE = 823, EFST_SILENCE = 824, EFST_CONFUSION = 825, EFST_BLIND = 826, EFST_UNDEAD = 827, EFST_DPOISON = 828, Step 6: Go to \data\luafiles514\lua files\stateicon\stateiconimginfo.lua (You can skip this step if you use my .grf files to patch your server) Look for: [PRIORITY_RED] = { Add below: [EFST_IDs.EFST_STONE] = "STONEST.TGA", [EFST_IDs.EFST_FREEZE] = "FREEZEST.TGA", [EFST_IDs.EFST_STUN] = "STUNST.TGA", [EFST_IDs.EFST_SLEEP] = "SLEEPST.TGA", [EFST_IDs.EFST_POISON] = "POISONST.TGA", [EFST_IDs.EFST_CURSE] = "CURSEST.TGA", [EFST_IDs.EFST_SILENCE] = "SILENCEST.TGA", [EFST_IDs.EFST_CONFUSION] = "CONFUSIONST.TGA", [EFST_IDs.EFST_BLIND] = "BLINDST.TGA", [EFST_IDs.EFST_UNDEAD] = "UNDEADST.TGA", [EFST_IDs.EFST_DPOISON] = "DPOISONST.TGA", Step 7: Go to \data\luafiles514\lua files\stateicon\stateiconinfo.lua (You can skip this step if you use my .grf files to patch your server) Look for: StateIconList[EFST_IDs.EFST_HELLPOWER] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Hell Power", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"Can not be revived"}, {"Sacrifice is Disabled"}, {"Token of Siegfried disabled"} } } Add below: StateIconList[EFST_IDs.EFST_STONE] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Stone Cursed", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"All DEF contributed by items is reduced by 50%"}, {"If HP is over 25%, you will lose 1% of your HP every 5 seconds"}, {"Changes your elemental status as Earth LV 1"}, {"Ignores Steal and Lex Aeterna"}, {"Impossible to move, attack, pick up items, skill usage, sitting, force disconnection, and item usage"} } } StateIconList[EFST_IDs.EFST_FREEZE] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Frozen", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"All DEF contributed by items is reduced by 50%"}, {"Any FLEE will be negated"}, {"If HP is over 25%, you will lose 1% of your HP every 5 seconds"}, {"Changes your elemental status as Water LV 1"}, {"Ignores Steal, Lex Aeterna, Storm Gust and Snow Flake Draft"}, {"Impossible to move, attack, pick up items, skill usage, sitting, force disconnection, and item usage"} } } StateIconList[EFST_IDs.EFST_STUN] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Stunned", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"Any flee will be negated"}, {"Impossible to move, attack, pick up items, skill usage, sitting, force disconnection, and item usage"} } } StateIconList[EFST_IDs.EFST_SLEEP] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Asleep", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"If enemy attacks you, they will have 2x CRIT chance with their attack"}, {"Any flee will be negated"}, {"Impossible to move, attack, pick up items, skill usage, sitting, force disconnection, and item usage"} } } StateIconList[EFST_IDs.EFST_POISON] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Poisoned", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"Status-oriented DEF is reduced by 25%"}, {"If HP is over 25%, you will lose 1.5% + 2 HP of your max HP every second"}, {"SP Regeneration is disabled"} } } StateIconList[EFST_IDs.EFST_CURSE] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Cursed", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"Reduce your ATK by 25%"}, {"LUK becomes 0"}, {"Drastically Reduces your Movement Speed"} } } StateIconList[EFST_IDs.EFST_SILENCE] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Silenced", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"Inability to use any active skills"} } } StateIconList[EFST_IDs.EFST_CONFUSION] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Confused", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"Causes the character to move into unintended directions when trying to navigate"} } } StateIconList[EFST_IDs.EFST_BLIND] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Blinded", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"Reduce your HIT and FLEE rate by 25%"}, {"Also graphically reduces range of your visibility"} } } StateIconList[EFST_IDs.EFST_UNDEAD] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Turned Undead", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"You become Undead property"}, {"Support buffs such as Blessing and Increase AGI are removed"} } } StateIconList[EFST_IDs.EFST_DPOISON] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { {"Deadly Poisoned", COLOR_TITLE_BUFF}, {"%s", COLOR_TIME}, {"Attack speed increased."}, {"Status-oriented DEF is reduced by 25%"}, {"If HP is over 25%, you will lose 1.5% + 2 HP of your max HP every second"}, {"SP Regeneration is disabled"} } } Step 8: (You can skip this step if you use my .grf files to patch your server) Go to \data\texture\effect and add in the .tga files Whew, that's it. Now, pack it up into .grf/.gpf file if you want to and look at it go! _______________________________________________________________________________________________________ At first I wanted to charge $1 for the pack because I'm so broke right now but I don't have the heart to do it since it is my first release. So here it is. Free stuff! Looking forward to hear what you guys think. Rate it if you guys have the chance. Enjoy it, Shade
  29. 1 point

    Version 4.2

    3,956 downloads

    Support All classes including new Mounts, Oboro, Kagerou and costumes! Yay!. =3 The palettes are ranged from 0 to 35. For this pack to look the best you must use my corrected classes sprites ! These palettes are from my big 700 palette pack ! If you want more clothes dyes, you may consider asking for one of my Paletting services (More than 700 Palettes, Races and Colors! :3). Thank you very much!

    Free

  30. 1 point

    Version 1.0.0

    197 downloads

    Level Up Reward Job/Base config LevelUpReward(1,<base level>,<job id>,<zeny>,<item id>,<count>,<item id>,<count>,<item id>,<count>,etc); LevelUpReward(2,<job level>,<job id>,<zeny>,<item id>,<count>,<item id>,<count>,<item id>,<count>,etc); Example: LevelUpReward(1,5,1,999,1002,5,1005,2); //give 999 zeny 5 1002 and 2 1005 to Swordman (job id 1) when he level up to base level 5 LevelUpReward(2,10,1,999,1002,5,1005,2); //give 999 zeny 5 1002 and 2 1005 to Swordman (job id 1) when he level up to job level 10 header //===== rAthena Script ======================================= //= saders LvUpRewards //===== By: ================================================== //= Sader1992 //= Free!! //https://rathena.org/board/profile/30766-sader1992/ //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //https://github.com/sader1992/sader_scripts //===== Description: ========================================= //==== level up rewards //==== if the player is over he can use @LevelUpReward command //==== to get the rewards //============================================================ //==== please report any error you find //============================================================ //============================================================

    Free

  31. 1 point

    Version 1.0.0

    461 downloads

    This system is already activated in the source of the brAthena. It was created by Orce, and with my friend's help, we converted to rA, and it's working perfectly with the last revision Language: PT-BR, EN-US Ps. Sorry my english

    Free

  32. 1 point

    Version 1.1.0

    609 downloads

    Hello peoples, I've been asked recently to create official instances that aren't release on rathena yet. So here's my version of Infinite Space instance, based over infos took here and there, videos and divine-pride database. In the rar, you'll find all you need, including Instance file, mob, item and quest db. You'll still need up to date client (I personnaly use 20160201) to ensure the mobs are created client side. Have fun.

    Free

  33. 1 point
    https://raw.githubusercontent.com/rathena/rathena/master/conf/battle/party.conf // Prevent multiple characters of the same account to join the same party. (Note 1) block_account_in_same_party: yes
  34. 1 point

    Version 1.0.0

    158 downloads

    Welcome on Folkvang, the Forgotten Plains. This is the Land Freyja rules, a plain where dead people are brought to prepare the Ragnarok. Fight here all those who falled on the battlefield, and that Freyja and the Valkyries recognized as valorous warriors. This is a custom dungeon with an evoluting content. The mobs, exception made of Freyja, are composed by Clones of all players dying around your server. The stronger they are, the toughest the dungeon will be. Everything's configurable, so you can set the minimum and maximum level to be cloned, the highest number of clones per players, or on the whole map, the reward for killed monsters....and so on. On the screens, the map used is [email protected] The script is therefor build for br_lb map, which is provided in the rar and was created by Loutch, thanks to him. Credits: Do not claim my work as yours. Feel free to use it, even modify it, but leave the credit on file header Special Warning: This content was first designed on Hercules Emulator. While being tested, there must be some error or bugs. Feel free to report them so I can fix them.

    Free

  35. 1 point
    make sure you set this option on conf/char_athena.conf set to 1 for "email" // Restrict character deletion by email address or birthdate. // This restricts players from changing the langtype and deleting characters. // Defaults based on client date. // 1: Email address // 2: Birthdate // 3: Email address or Birthdate // IMPORTANT! // - This config only works for clients that send 0x0068 or 0x01fb for delete request. // - Use langtype 1 for newer clients (2013+), to use 0x01fb. // - Clients that are not using 0x0068 or 0x01fb, only use birthdate (YYMMDD) as default. char_del_option: 2 after diff your client with NEMO with "Always use email for character deletion"
  36. 1 point

    Version 1.8.0

    26,787 downloads

    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.

    Free

  37. 1 point

    Version 3.0

    8,091 downloads

    This pack corrects the bad pixels on ragnarok classes and heads with nose or coloured eyes. It makes palletes looks better in general. Take a look at the screenshots for samples. Contains: First classes corrected 2nd Job classes corrected Rebirth classes corrected Special classes corrected (Ninja, taekwon..) Gryphon corrected (for Rune Knight) Official Head Sprites from 1 to 27 corrected. Also contains an extra file: FIX FOR WARLOCK (Credits to Vach ). Use it only if you experience issues with Warlock sprite. If you get any issue with one of the sprites (that shouldn't happen though ), like gravity error when using skill, or moving, just delete the bad-working sprite, update it to the last gravity official version, and make me know about it. Sometimes gravity update a sprite (it happened once in 6 years...so...) and it can crash with new clients. I'm able to fix it very quickly if it happens. If you want the best looking palettes with this pack, take a look at my free Palettes and my 700 Palettes set!

    Free

  38. 1 point
    An event-driven plugin system is planned.
  39. 1 point
    Loc: Equipment location of armor and arrow-type items. Values below can be combined, i. e. 136 would indicate both accessory slots (typical value for accessories). (2^0) 1 = Lower headgear (2^1) 2 = Right hand (2^2) 4 = Garment/Robe (2^3) 8 = Accessory 1 (2^4) 16 = Armor (2^5) 32 = Left hand (2^6) 64 = Shoes (2^7) 128 = Accessory 2 (2^8) 256 = Upper headgear (2^9) 512 = Middle headgear (2^10) 1024 = Costume Upper headgear (2^11) 2048 = Costume Middle headgear (2^12) 4096 = Costume Lower headgear (2^13) 8192 = Costume Garment/Robe (2^15) 32768 = Arrow (arrow-type items only) (2^16) 65536 = Shadow Armor (2^17) 131072 = Shadow Weapon (2^18) 262144 = Shadow Shield (2^18) 524288 = Shadow Shoes (2^20) 1048576 = Shadow Accessory 2 (2^21) 2097152 = Shadow Accessory 1
  40. 1 point
    here. trunk/conf/battle/battle.conf and find // Are arrows/ammo consumed when used on a bow/gun? // 0 = No // 1 = Yes // 2 = Yes even for skills that do not specify arrow consumption when said // skill is weapon-based and used with ranged weapons (auto-guesses which // skills should consume ammo when it's acquired via a card or plagiarize) arrow_decrement: 0
  41. 1 point
    Hello i'm Already Add Few Custom icon on my Server Now i Try Wall of Fog and is Work When i try on Land Protect is Not Working ? i know Volcano,Deluge,Violent Gale have Buffs icon why on Land Protector not Working anyone ANOTHER there a Wat Effect /EFFECT is Off a few SKILl can be Display ? Like on this Server bump thanks
  42. 1 point
    - script Healer -1,{ [email protected] = 0; // Zeny required for heal [email protected] = 1; // Also buff players? (1: yes / 0: no) [email protected] = 10; // Heal delay, in seconds if (@HD > gettimetick(2)) end; if ([email protected]) { message strcharinfo(0), "Healing costs " + callfunc("F_InsertComma",[email protected]) + " Zeny."; if (Zeny < [email protected]) end; if (select("^0055FFHeal^000000:^777777Cancel^000000") == 2) end; Zeny -= [email protected]; } specialeffect2 EF_HEAL2; percentheal 100,100; if ([email protected]) { specialeffect2 EF_INCAGILITY; sc_start SC_INCREASEAGI,240000,10; specialeffect2 EF_BLESSING; sc_start SC_BLESSING,240000,10; } if (getbrokenid(1) >= 1) { repairall; } if(getgroupid() >= 5 ){ set([email protected], 5); // duration in minutes sc_start(SC_CP_HELM, ([email protected] * 1000 * 60), 1); sc_start(SC_CP_ARMOR, ([email protected] * 1000 * 60), 1); sc_start(SC_CP_SHIELD, ([email protected] * 1000 * 60), 1); sc_start(SC_CP_WEAPON, ([email protected] * 1000 * 60), 1); switch ( basejob ) { case Job_Alchemist: set [email protected], 445; break; case Job_Monk: set [email protected], 447; break; case Job_Star_Gladiator: set [email protected], 448; break; case Job_Sage: set [email protected], 449; break; case Job_Crusader: set [email protected], 450; break; case Job_SuperNovice: set [email protected], 451; break; case Job_Knight: set [email protected], 452; break; case Job_Wizard: set [email protected], 453; break; case Job_Priest: set [email protected], 454; break; case Job_Bard: case Job_Dancer: set [email protected], 455; break; case Job_Rogue: set [email protected], 456; break; case Job_Assassin: set [email protected], 457; break; case Job_Blacksmith: set [email protected], 458; break; case Job_Hunter: set [email protected], 460; break; case Job_Soul_Linker: set [email protected], 461; break; default: if ( upper == 1 && baselevel < 70 ) set [email protected], 494; } if ( [email protected] ) { sc_start4 sc_spirit, 360000, 5, [email protected],0,0; skilleffect [email protected], 5; } } if ([email protected]) @HD = gettimetick(2) + [email protected]; end; }
  43. 1 point
    A brief look at RagExe Game Framework Class (GFC) is Gravity's own name for the game engine or application architecture used in Ragnarok Online. With the Ragnarok beta release in 2001, Gravity announced the finalization of GFC 2.0. But what exactly is GFC, and where did it come from? Most game developers use commercial proprietary engines for their games, while GFC is an in-house product by Gravity's RND-1 development division. In truth, it's misleading to call it a game engine, as GFC in its current form has been used in exactly one game and is tightly coupled to it. In all likelyhood the name GFC and the notion of a game engine are just buzzwords Gravity used in an attempt at impressing investors in their early days. However, my client is strictly based on Gravity's RagExe implementation, and I guess it can therefore be said to be a clone of GFC. Here's a brief look at its history. Gravity Corp. was a relatively small developer before Ragnarok Online became an international success. Certainly no one outside of South Korea knew of them. In fact, right up until Ragnarok become ready for alpha testing they were still just Team Gravity. In 1999 they partnered up with Sonnori Entertainment in a joint venture to develop an action RPG. Arcturus: The Curse and Loss of Divinity was released with success in 2000. At this point Gravity obtained the rights to publish a game based on the popular Korean comic Ragnarök. They decided to reuse source code from Arcturus. While Arcturus and Ragnarok don't have much in common in terms of game play, resemblances can be noticed in aspects such as artistic style and music. Making Arcturus into the Ragnarok we know today required a severe overhaul of the code base. However, in many architectural decisions were left intact. What was retained became the base of GFC. Ragnarok, like Arcturus, is a 2.5D game. While Gravity at one point experimented with 3D actors in Ragnarok, the main focus has always been on sprite-based characters in a 3D world. Most of the file formats from Arcturus could therefore be reused directly in Ragnarok. This is one of the reasons why some of Gravity's file formats have strange features. For instance the world resource format (RSW) contains strings pointing to scripts files, a feature not used in Ragnarok. Some formats, like RSX (think RSM for actors) were retained and is still in the code base, but never used. A few formats from Arcturus you may know include: SPR - indexed color bitmap format ACT - actor animation RSM - hierarchical 3D models with basic animation support GND - tile based ground mesh GAT - tile based property map RSW - map format (defines a scene with objects) They also made new formats, like the worthless IMF format that no one understand what is supposed to do... (Just kidding, IMF is used when combining ACT files for player characters, but it turns out it wasn't really necessary or useful. The client uses IMF offsets when drawing the player on the character select, which is probably why headgear sometimes looks a little wonky there. It also uses it for drawing order for player character sprites in-game.) While based on DirectX 7.0, from a modern perspective GFC can be said to be software rendered. If you've ever wondered why Ragnarok uses so much CPU, that is why! Direct3D is only used as a glorified triangle rasterizer with blending and depth buffering. GFC has a fairly large entity-based actor system where every actor is responsible for rendering themselves every frame. There are a few principal object types: ground (GND), models (e.g. RSM) and game objects (actors, effects, etc). Rendering done by registering a render pass from with the renderer - basically a list of screen projected vertices and a texture. The renderer sorts the render passes by depth, opacity and other attributes, and draws everything at the end of each game cycle. This all makes for a pretty horrible design. Easy to work with, but unnecessarily taxing on the system. The only reason it worked in the first place is the low amount of polygons on the screen. (Typically below 10,000 triangles at any time.) Game objects communicate by passing messages around to each other. In Ragnarok, there is also a global state (the session) and the current game mode, which is responsible for tasks like processing input, creating actors, handling network messages and signalling actors. The diagram above shows part of the base object hierarchy in Arcturus, which is pretty tall and convoluted. In Arcturus, each enemy needed its own class specialization. In comparison the diagram below shows the object hierarchy at the time of the Ragnarok alpha release. While simplified, the principal structure is the same. I have colored a few classes that provide similar functionality in the two games. CRenderObject is any type of object that is draw on the screen, while CGameActor is any object that can be interacted with. CPc is the object type for characters controlled by a player. CNpc covers static NPCs and monsters. In Arcturus you could interact with certain 3D models (e.g. doors, chests), so C3dActor was a part of the game object hierarchy. In Ragnarok, all 3D models are just decoration and not part of the game play and aren't considered game objects. (The exceptions to the rule are Granny actors and traps, the latter of which are actually RSM models drawn by a Skill object.) From the Ragnarok alpha to commercial release the renderer was improved a bit, and the 2D actor system become more flexible. A few libraries from RAD Game Tools was integrated to provide sound, video playback and a more practical 3D format (namely GR2, thought it's only been used for a few models). Aside from that, not much has changed.
  44. 1 point
    1. Concept I've been working with a plenty amount of maps, and, here I'm glad to show a revamped version of the original Rivendel map that I did almost 2 years ago (wow time has passed really fast!) the original topic of rivendel can be found here . This is rivendel as you already know it And this is how it was before. 2 years ago, that was a pretty quite challenge for me, It was maybe my 2nd time in my life I tried to work in 3D and I was really limited around the area. Those days I didn't know anything around how to handle my own models, I didn't know about optimization, about low poly modeling or mapping textures. It was a long journey to learn these things, but I'm glad to have the chance to rework on this one, with what I can do nowadays. This map is the first one of a big update that includes a vending area, a field, a dungeon and a lot of stuff. Its really a big project I'm working for one of my customers. 2. Features Rivendel Renovation is the same rivendel. it keeps everything as before but it changes: structures, mapping in structures, white style to brown/gray colors, ground, grass and other things.3. Video *watch in HD 1080p* 4. Screenshots Some screenshots. There isn't a particular order or purpose on the screens here, just some overview screenshots and maybe some others that has to do with close ups.
  45. 1 point
    You can use mine o: wel i didn't made it, so isn't mine, but i'm using it on my server and works, also has a leader to record breaking records and enables you to restart it, creditos to the author o:! turbo_room,106,105,5 script Emperium Breaker 1288,{ // What Map will be used set .Map$,"job3_arch01"; // How many Top Breaker will be Recorded set .TopRank,5; // Message to Inform Players while inside the Room setarray .Instruction$[0], "Necesitas guild para pegarle, crea una con el emperium que se te da si no tienes guild. Por favor pon atencion.", "Esta sala es para probar que tan rapido puedes romper un Emperium.", "Preparate para romperlo, aparecera en el centro de la sala", "Al entrar se te dieron Butterfly Wings, para que puedas regresar cuando acabes, eso es todo, preparate."; while( 1 ){ mes "Esta es la sala prueba de Romper el Emperium. "; mes "Puedes calcular que tan rapido rompes el Emperium en esta sala."; next; switch( select( ( getmapusers( .Map$ ) )?"^FF0000No disponible":"^0000FFDisponible^000000", "Top ^FF0000"+.TopRank+"^000000 Record", ( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Room", ( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Ladder" )){ Case 1: if( getmapusers( .Map$ ) ){ mes "Hay otro jugador, espera a que termine por favor."; next; break; } warp .Map$,0,0; getitem 714,1; // poring coin , editar segun tu preferencia. killmonster .Map$,"All"; // removemapflag .Map$,mf_noskill; donpcevent strnpcinfo(0)+"::OnReady"; end; Case 2: mes "^ED1ADCMejor Record^000000 : "+LatestRecord/1000+"."+LatestRecord%1000+" Seconds."; for( set [email protected],0; [email protected] < .TopRank; set [email protected],[email protected] + 1 ){ if( !$TopRankTime[[email protected]] ) break; mes "^FF0000Top "+( [email protected] + 1 )+" : ^0000FF"+$TopName$[[email protected]]+" "; mes "^FF0000Tiempo : ^ED1ADC[ "+$TopRankTime[[email protected]]/1000+"."+$TopRankTime[[email protected]]%1000+" Sec. ]^000000 "; } next; break; Case 3: mapannounce .Map$,"El GM reinicio los record del Emperium Breaker.",0,0x00FF00; killmonster .Map$,"All"; sleep2 3000; mapwarp .Map$,"izlude",103,142; mes "Listo, los jugadores que estaban adentro son enviados a fuera."; next; break; Case 4: switch( select( "^0000FFAll Player^000000:^FF0000One Player^000000" ) ){ Case 1: deletearray $TopRankTime[0],getarraysize( $TopRankTime ); deletearray $TopName$[0],getarraysize( $TopName$ ); mes "RESETED WHOLE LADDER."; break; Case 2: mes "Please input the ^FF0000EXACT NAME^000000 of player you want to delete."; input .Name$; for( set [email protected],0; [email protected] < .TopRank; set [email protected],[email protected] + 1 ){ if( .Name$ == $TopName$[[email protected]] ){ deletearray $TopName$[[email protected]],1; deletearray $TopRankTime[[email protected]],1; mes "Removed ^FF0000"+.Name$+"^000000 from the List."; } } } next; break; } } OnReady: sleep2 3000; for( set [email protected],0; [email protected] < getarraysize( .Instruction$ ); set [email protected],[email protected] + 1 ){ mapannounce .Map$,.Instruction$[[email protected]],0,0x00FF00; sleep2 2500; } for( set [email protected],5; [email protected] > 0; set [email protected],[email protected] - 1 ){ mapannounce .Map$,"Cuenta regresiva : "[email protected]+" segundos.",0,0x00FF00; sleep2 1000; } //mapannounce .Map$,"Hit the Emperium Now and Skills Disabled.",0,0x00FF00; setmapflag .Map$,mf_noskill; monster .Map$,29,27,"Breaker Test",1288,1,strnpcinfo(0)+"::OnBreaked"; set .Record,0; sleep2 500; initnpctimer; end; OnTimer600000: if( !mobcount( .Map$,strnpcinfo(0)+"::OnBreaked" ) ) end; mapannounce .Map$,"You spent too much time. i think you are AFK , so you are out.",0,0xED1ADC; sleep2 3000; mapwarp .Map$,"izlude",103,142; stopnpctimer; end; OnBreaked: set .Time,getnpctimer(0); copyarray [email protected]$[0],$TopName$[0],getarraysize( $TopName$ ); copyarray [email protected][0],$TopRankTime[0],getarraysize( $TopRankTime[0] ); set LatestRecord,.Time; for( set [email protected],0; [email protected] < .TopRank; set [email protected],[email protected] + 1 ){ if( .Time < $TopRankTime[[email protected]] || !$TopRankTime[[email protected]] ){ set $TopRankTime[[email protected]],.Time; set $TopName$[[email protected]],strcharinfo(0); copyarray $TopRankTime[[email protected] + 1],[email protected][0],getarraysize( [email protected] ); copyarray $TopName$[[email protected] + 1],[email protected]$[0],getarraysize( [email protected]$ ); announce "[ "+strcharinfo(0)+" ] Tomo el ranking "+( [email protected] + 1 )+" en la sala de Rompe Emperium con un record de "+.Time/1000+"."+.Time%1000+" segundos !!!",bc_all,0xED1ADC; break; } } stopnpctimer; announce "Tiempo tomado : "+.Time/1000+"."+.Time%1000+" Seconds. ",bc_self,0xED1ADC; // removemapflag .Map$,mf_noskill; sleep2 5000; mapwarp .Map$,"izlude",103,142; end; } job3_arch01 mapflag nocommand 50 job3_arch01 mapflag gvg on job3_arch01 mapflag gvg_castle job3_arch01 mapflag monster_noteleport job3_arch01 mapflag nosave SavePoint
  46. 1 point
    conf/battle/client.conf set it to no // Show rAthena version to users when the login? display_version: yes
  47. 1 point
    Like this? prontera,150,150,0 script Sample 100,{ query_sql "SELECT `name` , `class` FROM `char` WHERE `online` = '1'", [email protected]$, [email protected]; mes "-----------------------------------"; mes "Online Users: " + getusers(1); mes "-----------------------------------"; for( set [email protected],0; [email protected] < getarraysize([email protected]$); set [email protected],[email protected] + 1) mes [email protected]$[[email protected]]+ " | Job: " +jobname([email protected][[email protected]]); mes "-----------------------------------"; close; }
  48. 1 point
    Check this post for the script A GM can give an item for all players online and offline, offline players get the item once they log in
  49. 1 point
    or use my dye_maker changed Well It's free so do as your please morocc_in,146,99,3 script Java Dullihan 58,{ //- multi dyestuff 0/1 - disabled/enabled .multi = 1; //- if ((MaxWeight-Weight) < 200 || checkweight(1201,1) == 0) { mes "- Wait a moment! -"; mes "- Currently you're carrying -"; mes "- too many items with you. -"; mes "- Please come back later -"; mes "- after you put some items into kafra storage. -"; close; } mes "[Dye Maker Java Dullihan]"; mes "Wow..."; mes "Such a nice day. Days like this are perfect to make dyes."; next; switch(select("Talk:Make Dyestuffs:Cancel")) { case 1: mes "[Dye Maker Java Dullihan]"; mes "Erm, I don't really have much to say to you. But, if you would like me to tell you about my life, I can do that. It's a little long and boring, but would you like to listen?"; next; if (select("Listen:Don't Listen") == 1) { mes "[Dye Maker Java Dullihan]"; mes "As long as I can remember, my father has been making dyes. He used to spend countless hours making dyes of different colors. Even when my mother passed away, he never stopped."; next; mes "[Dye Maker Java Dullihan]"; mes "At one point in my life, I became rebellious and ran away from home. I didn't want to be stuck to the family business and wanted to try other things."; next; mes "[Dye Maker Java Dullihan]"; mes "Anyways..."; mes "I eventually wound up back home to carry on the family tradition, making dyes for 15 years already. I guess it was really in my blood."; next; mes "[Dye Maker Java Dullihan]"; mes "Something I realized these days is that now I can understand my father. Why my father devoted everything to making dyes..."; next; mes "[Dye Maker Java Dullihan]"; mes "In the middle of all that tedious and hard work, he probably felt the magic of those colors passing on so many dreams for other people."; next; mes "[Dye Maker Java Dullihan]"; mes "It was probably for those dreams that he tried so hard to make dyes for his customers..."; next; mes "[Dye Maker Java Dullihan]"; mes "Heh... How do I know this? Well, that's the way I feel right now. Since a couple years ago, I've been able to hear what the colors were saying..."; next; mes "[Dye Maker Java Dullian]"; mes "Just watch. Someday, I'm going to succeed in making the color my father wanted to, but never got the chance to make."; close; } mes "[Dye Maker Java Dullihan]"; mes "Ahahahaha..."; mes "Well, I guess no one would want to listen to a measly dyemaker's story anyway. Hahaha...."; close; case 2: mes "[Dye Maker Java Dullihan]"; mes "Great! If you want it, I'll make it for you. I promise I'll make you the color you want. But what color dye would you like to make? The fee is different depending on the color."; next; mes "[Dye Maker Java Dullihan]"; mes "Why, do you ask? Just remember that there are colors that are easy to make, and those that require more effort and work. Please don't think the fee is too expensive."; next; mes "[Dye Maker Java Dullihan]"; mes "The color of the dye is special, made with all my heart and soul."; next; switch( select( [email protected]$ = "Scarlet Dyestuffs:Lemon Dyestuffs:Cobaltblue Dyestuffs:Darkgreen Dyestuffs:Orange Dyestuffs:Violet Dyestuffs:White Dyestuffs:Black Dyestuffs:Cancel" )) { case 1: callsub S_MakeDye,1,1,[email protected]$; break; case 2: callsub S_MakeDye,2,1,[email protected]$; break; case 3: callsub S_MakeDye,3,2,[email protected]$; break; case 4: callsub S_MakeDye,4,3,[email protected]$; break; case 5: callsub S_MakeDye,5,4,[email protected]$; break; case 6: callsub S_MakeDye,6,4,[email protected]$; break; case 7: callsub S_MakeDye,7,4,[email protected]$; break; case 8: callsub S_MakeDye,8,4,[email protected]$; break; case 9: mes "[Dye Maker Java Dullihan]"; mes "Eeeehhhh!! What's this? You change your mind now!? So disappointing..."; close; } case 3: mes "[Dye Maker Java Dullihan]"; mes "I'm not bragging or anything. But I have the skills to make dyestuff. If you ever need dyestuff, please come to me. I'll make them for you at a reasonable price."; close; } S_MakeDye: mes "[Dye Maker Java Dullihan]"; if ( .multi ) { explode([email protected]$, getarg(2), ":"); mes "How must ^FF0000"+ [email protected]$[ @menu-1 ] +"^000000 do you want to do ?"; if( input( [email protected], 1, 100000) != 0 ) { mes "Sorry, wrong value."; close; } } else [email protected] = 1; switch(getarg(0)) { case 1: setarray [email protected][0], 30*[email protected], 1*[email protected], 1*[email protected]; set [email protected],3000*[email protected]; mes "Mmm... I need "[email protected][0]+" Red Herbs, "[email protected][1]+" Counteragent, and "[email protected][2]+" Empty Bottle to make Red Dyestuffs. The fee is only "[email protected]+" zeny to make it."; setarray [email protected][0], 507, 973, 713; set [email protected],975; break; case 2: setarray [email protected][0], 30*[email protected], 1*[email protected], 1*[email protected]; set [email protected],3000*[email protected]; mes "Mmm... I need "[email protected][0]+" Yellow Herbs, "[email protected][1]+" Couneragent, and "[email protected][2]+" Empty Bottle to make Lemon Dyestuffs. The fee is only "[email protected]+" zeny to make it."; setarray [email protected][0], 508, 973, 713; set [email protected],976; break; case 3: setarray [email protected][0], 20*[email protected], 1*[email protected], 1*[email protected]; set [email protected],3500*[email protected]; mes "Mmm... I need "[email protected][0]+" Blue Herbs, "[email protected][1]+" Counteragent, and "[email protected][2]+" Empty Bottle to make Cobaltblue Dyestuff. It's hard to use the Blue Herb, so the fee is going to be "[email protected]+" zeny."; setarray [email protected][0], 510, 973, 713; set [email protected],978; break; case 4: setarray [email protected][0], 5*[email protected], 20*[email protected], 20*[email protected], 1*[email protected], 1*[email protected], 1*[email protected]; set [email protected],5000*[email protected]; mes "Mmm... I need "[email protected][0]+" Blue Herbs, "[email protected][1]+" Green Herbs, "[email protected][2]+" Yellow Herbs, "[email protected][3]+" Counteragent, "[email protected][4]+" Mixture, and "[email protected][5]+" Empty Bottle to make Darkgreen Dyestuffs. Don't get all of the materials confused. The fee is only "[email protected]+" zeny."; setarray [email protected][0], 510, 511, 508, 974, 973, 713; set [email protected],979; break; case 5: setarray [email protected][0], 20*[email protected], 20*[email protected], 1*[email protected], 1*[email protected], 1*[email protected]; set [email protected],5000*[email protected]; mes "Mmm... I need "[email protected][0]+" Red Herbs, "[email protected][1]+" Yellow Herbs, "[email protected][2]+" Counteragent, "[email protected][3]+" Mixture, and "[email protected][4]+" Empty Bottle to make Orange Dyestuff. The fee is going to be "[email protected]+" zeny."; setarray [email protected][0], 507, 508, 974, 973, 713; set [email protected],980; break; case 6: setarray [email protected][0], 10*[email protected], 30*[email protected], 1*[email protected], 1*[email protected], 1*[email protected]; set [email protected],5000*[email protected]; mes "Mmm... I need "[email protected][0]+" Blue Herbs, "[email protected][1]+" Red Herbs, "[email protected][2]+" Counteragent, "[email protected][3]+" Mixture, and "[email protected][4]+" Empty Bottle to make Violet Dyestuffs. The fee will be "[email protected]+" zeny."; setarray [email protected][0], 510, 507, 974, 973, 713; set [email protected],981; break; case 7: setarray [email protected][0], 30*[email protected], 1*[email protected], 1*[email protected]; set [email protected],3000*[email protected]; mes "Mmm... I need "[email protected][0]+" White Herbs, "[email protected][1]+" Counteragent, and "[email protected][2]+" Empty bottle to make White Dyestuffs. The fee will be "[email protected]+" zeny."; setarray [email protected][0], 509, 973, 713; set [email protected],982; break; case 8: setarray [email protected][0], 30*[email protected], 30*[email protected], 30*[email protected], 5*[email protected], 1*[email protected], 1*[email protected], 1*[email protected]; set [email protected],7000*[email protected]; mes "Mmm... I need "[email protected][0]+" of each Red, Yellow, and Green Herb, "[email protected][3]+" Blue Herbs, "[email protected][4]+" Counteragent, "[email protected][5]+" Mixture, and "[email protected][6]+" Empty Bottle. The process takes longer and more effort than the others, so it is going to be "[email protected]+" zeny."; setarray [email protected][0], 507, 508, 511, 510, 974, 973, 713; set [email protected],983; break; } next; mes "[Dye Maker Java Dullihan]"; switch(getarg(1)) { case 1: mes "Ah! I think you would have everything ready. Would you like to start the process?"; break; case 2: mes "Okay! I believe you would have everything ready. Would you like to start the process?"; break; case 3: mes "Okay! I believe you would have everything ready. Shall we begin the process?"; break; case 4: mes "Okay! I believe you would have everything prepared. Would you like to start the process?"; break; } next; if (select("Make Dyestuffs:Cancel") == 1) { set [email protected], getarraysize([email protected]); // check requirements for( set [email protected],0 ; [email protected] < [email protected] ; set [email protected],[email protected]+1 ) if( countitem([email protected][[email protected]]) < [email protected][[email protected]] ) break; if( [email protected] < [email protected] || Zeny < [email protected] ) { mes "[Dye Maker Java Dullihan]"; mes "Hmmm. Not enough..."; mes "I don't think I'll be able to make the color you want with those materials. Why don't you go get some more materials...?"; close; } // delete items for (set [email protected], 0; [email protected] < [email protected] ; set [email protected], [email protected]+1) delitem [email protected][[email protected]], [email protected][[email protected]]; set zeny,[email protected]; // get dyestuff getitem [email protected],[email protected]; mes "[Dye Maker Java Dullihan]"; mes "Hmm... It came out pretty well. A very rich color. Of course I'll be trying harder to make a more charming color..."; next; mes "[Dye Maker Java Dullihan]"; mes "Well, then. Stop by whenever you need more dyes."; close; } mes "[Dye Maker Java Dullihan]"; mes "Eeeehhhh!! What's this?"; mes "You change your mind now!? So disappointing..."; return; }
  50. 1 point
    There's no float in the script engine. To support it you have to multiply per 100 (or much). Example: set [email protected], 33 * 5 + 300; // [email protected]/100 = your result Another thing is to assume that 0.33 = 1/3 so: set [email protected], 5/3 + 3; But the result here is trunk: Floor(result).
  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up