Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 03/26/24 in all areas

  1. Froggo Rö Folder This is a simple RO folder that contains everything you need to run a 2022-04-06 client, the latest publicly available. I have cleaned and compressed the data.grf file to reduce its size from 3.87GB to 2.15GB. official_data.grf took the same treatment and the file size went down to 426MB. Additionally, I have added a mini-map to all those maps that were lacking one, approximately 275 mini-maps were added, I only ignored some indoor (_in) and guild castles maps. Before BGM, the Rö folder has a total size of 2.62GB, after BGM it reaches 2.96GB Screenshots Requirements Server Up & Running with ‎‏‏‎ PACKETVER=20220406 Visual C++ Redistributables DirectX Runtime Features Includes latest RoEnglishRE - 16/mar/2024 Custom Lua Support jRO Enchantment Display Includes rsu-kro-rag-lite (kRO updater) - v4.2.2.1316 Includes opensetup - v3.1.0.627 Includes iRO's Setup.exe, thanks to relzz! Includes AzzyAI 1.55 Includes Packet Viewer Download click here to download a .zip file of this ro-folder Extra Warp Profile for 2022-04-06 used for FroggoClient.exe (mirror) 2022-04-06 Vanilla Ragexe Client Login Screen Creator Official Ragnarok Complete Installer (08/Jan/2024)(mirror) Froggö Ro Folder Gitlab's Repo FAQ Why am I getting CHARACTER_INFO size error when trying to log in? Possible reasons: You are using outdated rAthena which doesn't work with 2022-04-06 client. You haven't set correct PACKETVER or done it with mistakes (skill issue ). You haven't recompiled rAthena. You haven't restarted server after recompilation. Why am I getting errors about MSVCP140.dll, VCRUNTIME140.dll when executing FroggoClient.exe? You haven't installed Visual C++ Redist, check requirements section, if problem persists, try installing this too Visual C++ Redist for VS 2012u4 What is official_data.grf ? official_data.grf is from the ROResourceCollection project, which brings many items, mobs and npc files from other RO Regions and merges it into one convenient grf. Why does the Setup.exe opens instead of the FroggoClient.exe? In your Windows registry there is no data about your selected graphic card, to fix it, just set up your settings in Setup.exe and click on OK, be aware to don't select DirectX9, stay on DirectX7 What was removed from the data.grf? Several unnecessary files were removed from the data.grf . These included residual files such as thumbs.db and stray BMP Screenshots. However, the majority of the cleanup was performed in the mob and npc sprite folders. In these folders, some .spr files contained sprites (images) that were not utilized in their corresponding .act files. For example, the monster katrinn's .spr file contained approximately 140 images, but only 6 of them were actually used. In total, out of nearly 90,000 collective images, around 9,400 were removed alv.
    8 points
  2. Let's continue to explore new horizons in mapping! A seamless map containing the entire island of Angrboda, where the place of worship of the god Odin is located. The island can be used for a Battle Royale in the RO lore, for other events or as a replacement for the standard three locations. The map size is 400x400 tiles or 800x800 cells. .•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•. odin1map video: Lighting and shadows have been completely restored. In addition, local lighting has been added in various places. Since the map was created for special modes, the places available to players have been expanded. So the huge hill between the first and second areas was completely opened, and a coastal zone was added in the second area. Passages, descents and ascents were also added. The bridge connects the areas. Especially for the Battle Royale mode, shooting and using skills from lowlands and hills is allowed.
    4 points
  3. A new large map for group events with many players. This map contains three parts of Fortress Saint Darmain and Beacon Island with Pharos Lighthouse. It is also surrounded by parts of neighboring locations for ambience. And the main innovation is that you can enter all houses and caves without switching to another map. The map size is 450x450 tiles or 900x900 cells. .•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•.•°'°•. st_darmain Video: Since the four main maps cmd_fild06(07,08,09) were united by one theme, they were ideal for connection. They represent four different zones - jungle, desert, island, mountain ranges. And in the mountains there are a lot of obstacles in the form of fort ruins. The map is suitable for group events such as Battle Royale and etc. In the south and east of the map there are houses and caves available for visiting. The lighthouse rooms were designed by me, the rest of the rooms were taken from the maps in_rogue, job3_guil01(02), que_job01, alb_ship, and anthell01(02). Here you can place loot or simply hide from other players. In the second half of the video you can see a visit to all the premises. Also added climbs to the gazebos in the small green area, many passages and added the ability to use skills and shoot from lowlands and hills as usual. Shadows and lighting recreated. P.S. When creating the map, difficulties arose with different water levels in different maps, so I had to take the average water level as a basis.
    3 points
  4. Hmm, there is an approximation that can be done which will probably be good enough. The point 2 is misleading; what is seen in the UI is a blend of the background + layers. You can't separate them as it's already a final image, if that makes sense. But you could in theory extract a transparency value by using a black and white background version of the composite image. Then do some math magic and approximate the bgra values. I've added the option in 1.1.0, though it's a bit awkward to use (found in File > Export as PNG...).
    3 points
  5. 1. rathena/src/map/script.hpp Search: HAT_EF_MAX Replace: /* Custom Hateffects */ HAT_EF_arcane_aura_A, HAT_EF_arcane_aura_B, HAT_EF_gluttony_aura_A, HAT_EF_gluttony_aura_B, HAT_EF_MAX = 9999 2. rathena/src/map/script_constants.hpp Search: export_constant(HAT_EF_EFST_C_20TH_ANNIVERSARY_HAT); Replace: export_constant(HAT_EF_EFST_C_20TH_ANNIVERSARY_HAT); /* Custom Hateffects */ export_constant(HAT_EF_arcane_aura_A); export_constant(HAT_EF_arcane_aura_B); export_constant(HAT_EF_gluttony_aura_A); export_constant(HAT_EF_gluttony_aura_B); 3. Compile you Server. 4. Copy in you Data/texture/effect/(arcane_aura) and (gluttony_aura) Data(Example_Auras).zip 5. Data/luafiles514/lua files/hateffectinfo/hateffectinfo.lub Search: HAT_EF_efst_C_20th_Anniversary_Hat = 176 } Replace: HAT_EF_efst_C_20th_Anniversary_Hat = 176, HAT_EF_arcane_aura_A = 177, HAT_EF_arcane_aura_B = 178, HAT_EF_gluttony_aura_A = 179, HAT_EF_gluttony_aura_B = 180 } resourceFileName: route effect(Data/effect/name you effect folder/name you str file.str) IsIgnoreRiding: if true when mounting a mount or asking for hateffect will not go up, it will ignore this action isRenderBeforeCharacter: If true when using hateffect it will be over the character. hatEffectPos: Position the Y anchor (up and down) of the hateffect hatEffectPosX: Positions hateffect X anchor (left right) isAdjustPositionWhenShrinkState: always true isAdjustSizeWhenShrinkState: always true Search: [HatEFID.HAT_EF_efst_C_20th_Anniversary_Hat] = { resourceFileName = "efst_C_20th_Anniversary_Hat\\20th_f.str", hatEffectPos = -6, hatEffectPosX = 0, isIgnoreRiding = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true } } Replace: [HatEFID.HAT_EF_efst_C_20th_Anniversary_Hat] = { resourceFileName = "efst_C_20th_Anniversary_Hat\\20th_f.str", hatEffectPos = -6, hatEffectPosX = 0, isIgnoreRiding = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true }, [HatEFID.HAT_EF_arcane_aura_A] = { resourceFileName = "arcane_aura\\arcane_aura_particle.str", hatEffectPos = -1, hatEffectPosX = 0, isRenderBeforeCharacter = false, isIgnoreRiding = false, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true }, [HatEFID.HAT_EF_arcane_aura_B] = { resourceFileName = "arcane_aura\\arcane_aura.str", hatEffectPos = -2, hatEffectPosX = 0.2, isRenderBeforeCharacter = true, isIgnoreRiding = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true }, [HatEFID.HAT_EF_gluttony_aura_A] = { resourceFileName = "gluttony_aura\\gluttony_aura_particle.str", hatEffectPos = -1, hatEffectPosX = 0, isRenderBeforeCharacter = false, isIgnoreRiding = false, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true }, [HatEFID.HAT_EF_gluttony_aura_B] = { resourceFileName = "gluttony_aura\\gluttony_aura.str", hatEffectPos = -2, hatEffectPosX = 0.2, isRenderBeforeCharacter = true, isIgnoreRiding = true, isAdjustPositionWhenShrinkState = true, isAdjustSizeWhenShrinkState = true } } 6. Add Script NPC: rathena\npc\custom\hateffect.txt (Use command @efc in game) - script HATEFFECT -1,{ OnHatEffect: if(getgmlevel()>= 80){ input .@number; if (.@number < 1) end; if (.@number >= 301) end; for(.@i = 1; .@i < 300; ++.@i) hateffect .@i,false; hateffect .@number,true; end; } OnInit: bindatcmd "efc",strnpcinfo(3)+"::OnHatEffect"; end; } 7. Add npc in rathena\npc\scripts_custom.conf npc: npc/custom/hateffect.txt 8. (OPTIONAL) Add Hateffect in item: Example: - Id: 2301 AegisName: Cotton_Shirt Name: Cotton Shirt Type: Armor Buy: 10 Weight: 100 Defense: 1 Locations: Armor: true ArmorLevel: 1 Refineable: true Script: | hateffect HAT_EF_arcane_aura_A,true; hateffect HAT_EF_arcane_aura_B,true; UnEquipScript: | hateffect HAT_EF_arcane_aura_A,false; hateffect HAT_EF_arcane_aura_B,false; Update: My project all Auras. (09/27/2023) - Pack Auras: My Project All Auras Too my project Ragnarok Online Pre-Renewal(Offline) and guide for easy update. - Data Folder + Server: Google Drive or MediaFire - Client RO: Google Drive or MediaFire Guide for start server and Play: 0. Dowloand Client RO and Update. 1. Download Data Folder + Server 2. Copy all files C:/MyServer/Client (In folder Ragnarok Onmline). 3. Run C:/MyServer/UwAmp/UwAmp.exe 4. Start Server C:/MyServer/rathena/runserver.exe Enjoy!!! Gluttony Aura: Arcane Aura: Credits: LCDTheOG Fros
    3 points
  6. Hey there, fellow Ragnarok enthusiasts! Welcome to RO Artisan Hub, your cozy corner of creativity where we sprinkle a little bit of magic onto your Ragnarok Online server. Are you ready to give your players an eye-popping visual feast that'll have them coming back for more? You're in the right place! Here's a peek at the goodies we've got lined up for you: Custom Patcher Skins - Tired of the same old loading screens? Our patcher skins are like a breath of fresh air, offering a visual treat that'll get your players excited before they even step foot into your world. (CODE INCLUDED!) Interface Designs - Clunky menus are a thing of the past. We'll deck out your UI with a slick, user-friendly design that's not just pretty to look at but also a breeze to navigate. Logo & Branding - First impressions count, and a killer logo sets the stage for your server's identity. Let us craft a branding package that'll make your server the talk of the town (or, in this case, the world of Midgard). Promotional Graphics - Need to spread the word about your server's latest and greatest features? Our promotional graphics are perfect for catching eyes on social media, forums, and beyond. We're all about collaboration here at RO Artisan Hub, so we'll be with you every step of the way to ensure the final product isn't just good; it's exactly what you envisioned. Your satisfaction is our top priority, and we're not happy until you're over the moon with your new designs. So what are you waiting for? Let's get together and make your Ragnarok Online server the envy of them all. Drop us a message, and we'll start spinning those creative gears right away! Happy gaming, The RO Artisan Hub Team Discord Server: https://discord.gg/KpXFFwrE
    2 points
  7. Fixed in 1.8.7.1. There was an issue with UV texture coordinates being all set to 0 on new tiles.
    2 points
  8. After encountering issues with the current data.grf, I decided to start from scratch and overhaul the entire process. The result? A significantly reduced file size for the data.grf Previously, the data.grf weighed in at around 2.45GB, but now it’s down to just 2.15GB. In addition to the file size reduction, I’ve added 275~ mini maps to maps that were lacking them. The entire folder, including BGM, now stands at 2.96GB. What was done to the poor data.grf? Besides cleaning up unused sprites from npc and mob folders, now I converted all .BMP files to be 8bit, this doesn't affect quality on a game like RO, instead, it actually makes it easier for the client to handle those assets. .JPG and .PNG were treated as well but with some differences. Feel free to report any issue here
    2 points
  9. Prueba cambiando (BaseLevel/2) por status_get_lv(src)
    2 points
  10. src/status.cpp search for: // Skill-related recovery (only when sit) there you can edit the source. ^-^
    2 points
  11. I have multiple generator project, maybe u can try.
    2 points
  12. Here is another fully furbished Morroc Town! Join my Discord Channel: https://discord.gg/AhBjDJnEW3 Cinematic! morom.mp4
    2 points
  13. This is my new work Payon Town ROM! Join my Discord Channel: https://discord.gg/AhBjDJnEW3 Cinematic! payorm.mp4
    2 points
  14. Was having errors running my own 20220406 client, and this saved me. Thanks for this !
    2 points
  15. I just wanted to stop in to say thanks to the Dev team for continuing to support this great game after all these years. RO was a very important game to me in my youth and to see that the community is still active after all this time is amazing. Back in the old days, I always considered running my own server, but I only finally bit the bullet on it recently. I never suspected that the entire server backend would be open-source! As such, I modded the bejeezus out of it. For starters, my server is PRE-RE, however, I backported almost all of the new content from Renewal into it. Here is my Doram character in Malangdo. It's actually pretty easy to pull renewal content into PRE-RE, since they use the same server backend. To pull renewal enemies into pre-re is as simple as grabbing them from db/re's mob-db and mob-skill-db and pulling them into pre-re's mob-db / mob-skill-db. Of course, renewal enemies have slightly different stats, in particular their "max attack" is their "matk" value and their def and mdef values are usually way too high, but that's easily fixed with SDE. Ditto for items and cards, using item-db. As far as the maps are concerned, they're already all in the game, they just don't have warps, so you just need to grab the npc/warps files from renewal and pull them into pre-re. Many renewal dungeons are instances, so you can either pull the instance into pre-re, or do what I did and turn the instance dungeons into normal dungeon floors by adding warps and recreating their mob tables. As for the Doram, it's fairly easy to add them too, I'll probably make a post explaining how to do it at some point. The main thing you have to do is remove your service_korea folder from your prere grf file, which will allow the one from renewal that allows the creation of Doram to be used instead. Then there's a flag in the server settings somewhere that you have to modify so the server won't reject character creation requests for Doram. I'll write up something on this later. The biggest thing I added by far is the ability to rebirth as Super Novice, Star Gladiator, Soul Linker, Ninja, Gunslinger, and Summoner. It always annoyed me that the classes added after the first 12 never got the ability to rebirth, so I did it myself. It's not possible (or at least I can't figure out how to do it) to add new classes to the game since class sprites are hardcoded in the client file, so instead the way I did this is that when you rebirth as one of the new classes, it unlocks a new "quest skill" which is a pre-requisite for their transcendent abilities. The game also checks to see if you have this skill when it determines if you are transcendent (say, for equipping transcendent only armor or getting the 25% max hp / sp bonuses), and it also uses it to force you to the transcendent exp tables. I'd love to share the code for this, but there's so many code changes that it probably can't be done without me just zipping up my entire codebase, which is also somewhat out of date. By I encourage other intrepid coders to experiment! A reborn Ninja's new skill tree. Note the presence of a few Kagerou skills, despite the fact that he is a still a Ninja. The "reborn" skill in the bottom left is the new quest skill that makes this possible. For Ninja / Gunslinger / Star Gladiator / Soul Linker, they get a few skills from their next job as transcendent skills, with many alterations (for example, Soul Linker gains Espa and Eswhoo, but they don't require spirit energy to use, since it's not available. In exchange they have much less power). Summoner gets his post level 100 skills as transcendent skills, since the max level cap is 99. Super Novice gets to become Expanded Super Novice. I also added the ability for Novices to use bows, which required me to make a custom animation for this. The dream of Bow Super Novice is finally real! Beyond this, I also added like a hundred new pets. They all have custom portraits and speech lines. I put up a guide on how to add custom pets elsewhere on the forum if you want to do this. This poor Lunatic is NOT ready for what's about to happen. And then I manually rebalanced the effect of every card in the game and manually tweaked the exp and drop rates of almost every monster in the game. My server is technically 10x, but the beginning feels like 5x or so, while the late game feels more like 20x, because lategame monsters give more exp. I also fixed a ton of bugs and made a number of enhancements, for example if you use the whodrops command, it now shows exact matches first, so if you do "whodrops boots" you actually see slotted boots now! At this point, there's probably some room for debate as to whether or not this game is still Ragnarok Online or something else entirely, but I'm having fun with it. The only problem is that now my regular job seems boring by comparison. Having complete control over the codebase for one of the best games of all time is pretty much impossible to top. Oh well. Everyone reaches the pinnacle of their career sooner or later. I'm sorry if this sounded like a giant advertisement. Actually, my server will probably never be open to the general public. However, where my code is easily distributable I'll probably make some of it available. I've already put up a couple topics sharing some of the files I've written, and I'll probably try to put up a few more once everything is adequately tested (I've also crashed my server about a hundred times already).
    2 points
  16. I'm developing a server based on a game called Harvest Moon. Conclude the Farm system, it will accept trees, vegetables and animals. What do you think? Any suggestions? Content of the video in Portuguese.
    2 points
  17. There are two methods for doing that: Once you have the current frame, click on: Then add the name of the file, like "test.wav". The file should be in data\wav\test.wav You can add a bunch of sound names by editing the list instead: Then select the sound for the frame from the list. If the sound doesn't play when testing the sprite, then it's just because it wasn't found in the resources. That's not really important, but you can add more resources from File > Settings > Sound:
    2 points
  18. Version 1.2

    780 downloads

    I just updated the existed one by raPalooza~ to include the K and M indicator. DarkBreath is there too. The K is light green like a frog and the M is red wine like frog's blood Used font is PixelOperator 8
    Free
    2 points
  19. Version 1.0.1

    137 downloads

    ***Include Abyss Lake4**** -IllusionTeddy Bear/Labyrinth base on https://www.divine-pride.net/ (Include Drops Table) -No Portal -Issgard Dun/Frozen scale Field are custom to fit my server. (Custom Drops Table) Install : Put Mob and mob skill to rathena\db\import PutNpcfiles (Custom.txt) to rathena\npc\custom add new line npc: npc/custom/Custom.txt at rathena\npc\scripts_custom.conf
    Free
    2 points
  20. Version 1.0.0

    224 downloads

    Hello everyone! Happy New Year! Here are my handmade gifts, custom maps for you: 2024: navayo (+nav_beach, nav_in01, nav_in02) https://rathena.org/board/topic/116200-showcase-navayo/ anrydrago https://rathena.org/board/topic/124265-showcase-miniquest-anry-dragon/ 2023: x_base https://rathena.org/board/topic/140494-showcase-x-base/ crimea https://rathena.org/board/topic/132870-showcase-crimea/ barcode https://rathena.org/board/topic/116040-showcase-barcode/ ice2xlake https://rathena.org/board/topic/124194-showcase-ice-twice-lake/ lv_beach https://rathena.org/board/topic/116553-showcase-love-beach/ yavin1b https://rathena.org/board/topic/116300-showcase-yavin1b/ mystvil https://rathena.org/board/topic/117187-showcase-mystical-vil/ crystal https://rathena.org/board/topic/116079-showcase-crystal/ 1@scp087 https://rathena.org/board/topic/116223-showcase-scp-087/ mag_dun03_ https://rathena.org/board/topic/127185-showcase-magma-dungeon-lvl-3/ b_book(1,2,3,4) https://rathena.org/board/topic/116491-showcase-four-battle-books/ The size of attachments (30mb) on rAthena does not allow to add map resources. You can find the full materials here: https://mega.nz/folder/8atXmYgC#yJEL_ssWj8D8XwmpgInYiQ ~ Keep calm and use it on your server ~ ~ Don't claim my work as yours please and etc ~ ~ Any requests/reports - https://rathena.org/board/profile/47250-w0wzukubg/ Thanks, Zuku ~
    Free
    2 points
  21. Version 1.2.0.0

    7584 downloads

    Heya! This is a new project I've made aiming to manage the various databases as easily as possible. This tool was initially developped using Client database editor's engine, a tool from GRF Editor. It has been adapted to support more database formats and many of the features have been improved. How to install Download the zip archive provided from the download link at the top right corner of this description or directly from there : http://www.mediafire.com/download/p0zhcc8ipa6cjt3 . Install the application with SDE 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. Features Both rAthena and Hercules' formats are supported by the application. Many conversions between rAthena and Hercules are possible. Converting items can be done simply by right-clicking on the elements and selecting "Copy entries to clipboard (ServerType)". Undo and redo commands are available, as well as navigation commands (quite useful when switching tabs a lot). There are many shortcuts within the application, all of which are shown when right-clicking items or going through the menus. I do plan on adding more as well. The databases are 'merged' between each other to offer an easier view. This is true mostly for the item and mob databases. Flag fields can be entered with either an hexadecimal value or an integer value. You will have to add "0x" if you want to enter an hexadecimal number though. For Windows XP users, the program's layout may change a bit. The Aero theme is applied to make sure the application looks like it should. Getting started Create a new project from File > New project. Go in the settings tab and set the path of your database. If you're using pre-renewal, then drop the pre-re folder in the "Server DB path" box (drop the re folder otherwise). Don't drop your "db" folder, it simply won't work! Save your project file to avoid redoing this step everytime you reload the application by going in File > Save project info. The project info file is automatically saved, so you don't need to save it everytime you do a modification in the settings. If you associate .sde files with this tool, you will be able to start up your project from the project file directly (which is more convenient). The last setting is the resource files and it is optional. Simply drag and drop a GRF in the paths list. This will add icons in the items list view (it will also make the application slower when scrolling for that list). Easy input fields All the fields are easy to set and most of them have tooltips. For example, to edit the drops of a mob, simply right-click on the items and change the drop value (both float and integer values are accepted in the field : typing 5.20 is the same as typing 520). How to save the database There are multiple ways to save the database : quick save, full save and export. Quick save keeps the commands you've applied on the database (Ctrl-S), this is the saving option you should be using. Full save (Ctrl-Shift-S) does not keep the commands and you will not be able to undo any operations afterwards. Export (File > Export to db/SQL) exports the database to another folder and this is normally used to convert databases. When saving, the comments are preserved as much as possible, but this is not always possible. For example, the items table from Hercules is always rewritten, so the comments will be lost in this file. Unmodified tables will not be saved. Disabling a tab will also prevent the associated table from being rewritten/saved. This can be achieved by right-clicking on a tab and selecting "Disable 'table name'". SQL support You can export your current database to SQL from File > Export to SQL > ... The first option in the list is the current database format. The other options are used for conversions between rAthena and Hercules. Backups system The application automatically creates backups everytime you save the database (can be disabled in Settings > Enable backups manager). You can revert to a previous date by going in Tools > Backups manager. This tool's purpose is to make sure you never lose any important data (as well as preventing data corruption). Merging or adding lines from another database It is possible to merge databases by going in Edit > Add item from raw db line. Simply copy and paste the lines from the database you want to add. You must select the corresponding table before doing so, of course. (Known bug : adding lines with invalid parameters will put the database in an invalid state). Synchronize with client database files If "Synchronize with client database files" is checked in the Settings tab, you'll be able to turn on all the following features. Bind item tabs together (suggested by UltraCat) This feature enables you to quickly alternate between the Item and Client Items tabs. Whenever you switch table, it will autoselect the item previously selected. The text search filter will also be applied to all three tables (Item/Item2/Client Items). Subfilters (such as item description, script, etc) will be ignored if the item isn't included in the search result. Manage view IDs automatically (suggested by UltraCat) This feature allows you to completely ignore the view IDs for headgears and costumes. Only the identified resource's field is taken into account when synchronizing with the client databases, so make sure you set at least this field! You must also set up the lua paths; go in any item table and click on the wheel next to the "View ID" field. This will bring up a dialog to setup the paths (preferably, the files should be located in your data folder to avoid saving the GRF all the time). They will be automatically decompiled if necessary. If everything has been properly set, the View ID field for the headgears and costumes will be grayed out. When saving, you'll notice some view IDs will be switched around, but SDE will try to keep your original IDs as much as possible. The view names will be changed to the item's Aegis Name (has no effect ingame). Mob sprites edition In the mob tables, you will find a wheel button, similar to the view IDs. Setting up the paths will allow you to see the mob sprites as they will appear ingame (except for granny models, like emperium for instance). The "..." button can let you select the sprites from the mob folder in the GRFs (or data folder). Preview images With the client tables synchronization, the preview image for items in the list view will be properly displayed. This is handy for custom items. Notepad++ support There is support for Notepad++ to easily find items in a text (or conf) database. Right-click an item and use "Select in Notepad++". Search feature The search engine is the same used as CDE, so it should make it easy to find an item. There is also a hidden search option : if you type "[number_of_slots] 4" it will give all the items with 4 slots or "[refineable] true" will give you all refineable items. This can be applied to any attribute in the table which are not shown in the search panel. Todo list Import from SQL (is that even necessary?). Automatically create a table from a file. Batch files / command line methods (would be similar to GrfCL). Known bug : exporting mob_skill_db from Hercules to SqlRenewalHercules doesn't seem to be parsing properly (for this file only). Type safety (check for invalid inputs, use the same SQL rules when loading the databases). Hope you enjoy this tool! The sources will be available on githut for the next release. If you have a feedback or suggestions, let me know and I'll probably add them to the software. Sources https://github.com/Tokeiburu/RagnarokSDE
    Free
    2 points
  22. You can enable/disable it here : https://github.com/rathena/rathena/blob/master/src/config/renewal.hpp comment it to disable it by adding // at early lines for example //#define RENEWAL
    1 point
  23. Before have some suggestion about the SQL generator. I don't think its needed since you might change some data generated and there are already SQL generator from rathena (yaml2sql.bat) so you can use your edited YML and generate the exact SQL for it. And since I saw some users are struggling setting up server with custom max levels, maybe Ill create a generator for that too.
    1 point
  24. Unfortunately, that's not an str effect. You cannot edit the Evil Land because it's a 3D ground effect. It also happens to be hard coded in the client. You can change the texture (data\texture\effect\evilland\demonground.tga), but that won't do much. I presume bRO is the official server, correct? Then it's a bit weird that you're lagging. Evil Land isn't a fancy effect at all, it's a single texture shown on the floor: I looked at rAthena's db/source and it's using Layout 1 instead of 0, which makes the effect being sent 9 times instead of 1, which is wrong of course. That would normally be the reason for your lag, but since it's bRO... then it doesn't make sense. I made a basic gray looking evil land if you want to give it a shot nonetheless. demonground.tga demonground_alpha_translucent.tga Well, unless bRO still uses a very old client, then there's really nothing you can do...
    1 point
  25. 1 point
  26. @Cydh or @Capuche I can't help. May u help him? Rynbef~
    1 point
  27. Flux CP Addons, Crypto Payments Gateway Installation 1. Open addons and add into your addons folder. 2. Upload database.sql to your MySQL database 3. Copy folder "lib" to your "lib" folder in Ragnarok FLUX CP 4. Register account at xPayapi https://xpayapi.com/ 5. Create new merchant 6. Set up merchant. - Title => Merchant Title - Domain => Your Flux CP domain - URL notifications about the payment of the invoice => https://yourdomain.com/ ?module=crypto&action=notify - URL Pages with a message about successful payment => https://yourdomain.com/ ?module=crypto&action=process - URL Pages with a failure message when paying => https://yourdomain.com/ ?module=crypto&action=cancel 7. Access link https://your.site.com/?module=donatecrypto 8. Done, Test it! If still cannot access, just copy "addons > crypto > themes > default > crypto (this folder)" to your Themes Folder Download here
    1 point
  28. Oh snap, I forgot this thread xD I did my testing and tried some stuff, but you can't really get those numbers more together as you downsize them. I tried with extremely low size numbers and still, a padding is added between the numbers, also, using low size numbers make it look so blurry and awful xD
    1 point
  29. Awesome! I think I should use a few things from ur great stuff. It's not only more for newbies. Rly great! Thank u for ur work and for sharing this stuff for free! Rynbef~
    1 point
  30. Hey Leute, als neuer deutscher und englischer Forum Moderator freue ich mich, den deutschen Bereich auch wieder etwas Regelkonformer zu gestalten. Bitte schreibt ausschließlich auf Deutsch in den Topics/ Posts und Titel. Ihr könnt noch die Englische Sprache hinzufügen, aber dafür gibt es die Englischen Sections. Ich würde mich interessieren, wer noch alles da ist, aus der kleinen deutschen Community. Schreibt doch gerne mal was. Und ich bin hier, um euch zu helfen Rynbef~
    1 point
  31. Oh nice! I'm glad you were able to resolve it.
    1 point
  32. Hi, I didn't have to do anything to enable 4th jobs on my local server using (hexed) 20220406 ragexe on 2022 client data. Maybe you're missing the 4th jobs sprites while the server side works fine ?
    1 point
  33. It's in PT _BR if I'm right but @Oklonirsend an English one. Maybe u can compare Rynbef~
    1 point
  34. Hi. please put scripts inside a code box next time, the indentation is all lost otherwise. //==== DarkRO Scripts ==================================== //= Credit Exchanger //===== By: ================================================== //= //===== Current Version: ===================================== //= 1.4 //===== Description: ========================================= //= Allow to Convert Zeny into a Ticket. //===== Changelog: =========================================== //= Not yet tested for bugs //= 1.0 Implementation //= 1.1 Re-script (added quest) //= 1.2 Automated zeny-to-credit exchange and vice-versa //= 1.3 Added @security checking. //= 1.4 Added Black Credit Exchange feature //============================================================ - script Credit Agent -1,{ set @header$,"[^FF8000 Credit Agent ^000000]"; .@credit_id = 40000; //Credit Item ID if (checksecurity()) { message strcharinfo(0), "You can't do this action, Protected by @security."; end; } if(#CREDITPASSPORT > gettimetick(2)) { disable_items; setpcblock(PCBLOCK_COMMANDS, true, getcharid(3)); getinventorylist(); mes @header$; mes "Hello, I can see that you still have your Intergalactical Passport."; mes " "; mes "What can I do for you?"; mes " "; mes "^FF0000Your current credit: " + F_InsertComma(countitem(.@credit_id)); next; switch(prompt("I want to change Zeny to Credit:I want to change Credit to Zeny.:Nothing, just passing by.")){ case 255: setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); break; case 1: if (@inventorylist_count == MAX_INVENTORY && !countitem(.@credit_id)) { setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "You need to clear your inventory first."; close(); } mes @header$; mes "The exchange rate is fixed and its ^00008810,000,000^000000 Zeny = 1 ^FF0000Credit^000000."; mes " "; mes "How will you exchange your Zeny?"; next; .@i = prompt("Decide on how many Credits I need.:Exchange all my Zeny:Cancel"); if (.@i == 3) goto L_Cancel; else if (.@i == 255) { setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); break; } else if (.@i == 1) { mes @header$; mes "How much Credits do you need?"; mes " "; mes "^FF0000(Enter '0' to cancel the transaction)^000000"; next; input @ZTC; if (@ZTC <= 0) goto L_Cancel; else if (@ZTC > MAX_ZENY / 10000000) { L_Exceed: setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "Sorry, but you have"; mes "exceeded from the limit."; close(); } else if (@ZTC > Zeny / 10000000) { L_LessZeny: setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "You don't have enough zeny."; close(); } else { L_ConvertZTC: if (!checkweight(.@credit_id,@ZTC)) { mes @header$; mes "Sorry. You can't hold this amount of credit."; mes "Such amount would exceed your weight limit."; for(; @ZTC; @ZTC--) if (checkweight(.@credit_id,@ZTC)) break; if (@ZTC) { mes "You can only hold up to " + @ZTC + "."; mes "Would this amount do?"; next; if (select("Ok, " + @ZTC + " is acceptable", "No, just cancel") == 2) callsub L_Cancel; } else { setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); close; } } mes @header$; mes "You will be receiving ^FF0000"+@ZTC+" Credit"+(@ZTC != 1 ? "s":"")+"^000000."; mes " "; mes "Proceed?"; next; .@menu = prompt("I changed my mind:Proceed!"); if (.@menu == 1) { setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); close(); break; } if (.@menu == 255) { setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); break; } setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); Zeny -= @ZTC * 10000000; getitem .@credit_id, @ZTC; mes @header$; mes "Here you go!"; mes "Thank you for using our service."; close(); } } else { @ZTC = Zeny / 10000000; if (@ZTC == 0) goto L_LessZeny; else goto L_ConvertZTC; } break; case 2: goto L_ConvertCTZ_Main; break; default: L_Cancel: setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "Please do come back, Have a nice day!."; close; break; } end; } if(#CRED_Q == 1) { disable_items; setpcblock(PCBLOCK_COMMANDS, true, getcharid(3)); mes @header$; mes "Welcome back!, "+strcharinfo(0)+"."; mes "Do you have what I asked for?"; next; switch(prompt("Yes, here it is!:What do I need again?:I want to change Credit to Zeny.:Not yet.")){ case 255: setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); break; case 1: if(Zeny < 100000000){ setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "I think you are missing something this is the list that i needed:"; mes "^FF0000100,000,000 Zeny^000000."; close; } next; mes @header$; mes "Congratulations, Enjoy your Intergalactical Passport."; mes " "; mes "You may now use Zeny to ^FF0000Credit^000000 services in a matter of time."; setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); Zeny -= 100000000; #CREDITPASSPORT = 1728000+ gettimetick(2); #CRED_Q = 0; close; break; case 2: mes @header$; mes "You will have to bring me the following:"; mes "^FF0000100,000,000 Zeny^000000."; next; setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "I suggest you look for Simon in Prontera. He is known as gumbling master that could provide you tickets."; mes " "; mes "I'll be waiting for you!"; close; break; case 3: goto L_ConvertCTZ_Main; break; case 4: setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "Okay, Hurry up!"; close; break; } } mes @header$; mes "Hello, It looks like you don't have an Intergalactical Passport yet."; mes " "; mes "Would you like to have one?"; next; switch(prompt("Yes, I'd like to have one.:Intergalactical Passport? What is that?:I want to change Credit to Zeny.:No thanks!")){ case 1: mes @header$; mes "Very well. You will have to bring me the following:"; mes "^FF0000100,000,000 Zeny^000000."; next; mes @header$; mes "I suggest you look for Simon in Prontera. He is known as gumbling master that could provide you tickets."; mes " "; mes "I'll be waiting for you!"; #CRED_Q = 1; close; break; case 2: mes @header$; mes "An Intergalactical Passport is required to use the Intergalactical currency: ^FF0000Credit^000000."; mes " "; mes "The value of ^FF0000Credit^000000 is equivalent to ^00008810,000,000^000000 Zeny."; next; mes @header$; mes "Once you have this passport, You can exchange Zeny to ^FF0000Credit^000000 with any Credits Agents in major towns."; next; mes @header$; mes "^FF0000NOTE^000000: That the passport is not required when exchanging ^FF0000Credit^000000 to Zeny."; next; mes @header$; mes "That contract will last for 20 days. After that time, You will have to renew your passport."; close; break; case 3: disable_items; setpcblock(PCBLOCK_COMMANDS, true, getcharid(3)); L_ConvertCTZ_Main: mes @header$; mes "The exchange rate is fixed and its 1 ^FF0000Credit^000000 = ^00008810,000,000^000000 Zeny."; mes " "; mes "How will you exchange your ^FF0000Credits^000000?"; next; .@i = prompt("Decide how many Credits to exchange.:Exchange all my Credits:Cancel"); if (.@i == 3) goto L_Cancel; else if (.@i == 255) { setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); break; } else if (.@i == 1) { mes @header$; mes "How many ^FF0000Credits^000000 do you want to exchange?"; mes " "; mes "^FF0000(Enter '0' to cancel transaction)^000000"; next; input @CTZ; if (@CTZ <= 0) goto L_Cancel; else if (@CTZ > countitem(.@credit_id)) { L_LessCredit: setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "You don't have enough Credits."; close(); } else { @CTZ_ = Zeny%10000000; if (@CTZ_ > 0) @CTZ_ = ((MAX_ZENY/10000000) - (Zeny/10000000)) - 1; else @CTZ_ = (MAX_ZENY/10000000) - (Zeny/10000000); if (@CTZ > (MAX_ZENY/10000000) || @CTZ_ < @CTZ ) goto L_Exceed; if (@CTZ > countitem(.@credit_id)) goto L_LessCredit; L_ConvertCTZ: mes @header$; mes "You will be exchanging your ^FF0000"+@CTZ+" Credit"+(@CTZ != 1 ? "s":"")+"^000000."; mes " "; mes "Proceed?"; next; .@menu = prompt("I changed my mind:Proceed!"); if (.@menu == 1) { setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); close(); break; } if (.@menu == 255) { setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); break; } delitem .@credit_id, @CTZ; Zeny += 10000000 * @CTZ; message(strcharinfo(0), "You have received "+F_InsertComma(10000000 * @CTZ)+" Z."); setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "Here you go!"; mes "Thank you for using our service."; close(); } close(); } else { @CTZ = countitem(.@credit_id); .@ZenyCap = (MAX_ZENY - Zeny) / 10000000; if (@CTZ == 0) goto L_LessCredit; if (@CTZ >= .@ZenyCap) @CTZ = .@ZenyCap; if (@CTZ == 0) goto L_Exceed; goto L_ConvertCTZ; } break; case 4: setpcblock(PCBLOCK_COMMANDS, false, getcharid(3)); mes @header$; mes "Please do come back, Have a nice day!."; close; break; } } // Duplicates //prontera,132,215,5 duplicate(Credit Agent) Credit Agent#prt 4_M_KHBOY market,99,53,6 duplicate(Credit Agent) Credit Agent#mall 4_M_KHBOY
    1 point
  35. Yet another Mining System Inspired by Mir4 Mining, I have worked the details to be as close to the source found in internet. Player can't mine a Mine that another Player is already mining. Progress of Mining can be canceled by trying to walk away. Progress of Mining while be canceled when Player received damage. Progress of Mining while be canceled when Player can't carry the item gained from Mine. When The Mine is exhausted it will hide away and move / re-spawn in different place. The default drop item (Dark Steel) replaced by Phracon Common Mine (Gray/White): 25-30 Dark Steel Uncommon (Green): 35-40 Dark Steel Rare (Blue): 45-60 Dark Steel Epic (Red): 100-150 Dark Steel Legendary (Yellow): 150-200 Dark Steel Script configuration has been made easy to understand and modify .mine_drop = 1010; // Phracon .miner_distance = 2; .mine_distance = 7; /* * minetype(<index>,"<Name>",<MaxHP>,<Drop Min Amount>,<Drop Max Amount>); */ minetype(0, "Common", 3, 25, 30); minetype(1, "Uncommon", 200, 35, 40); minetype(2, "Rare", 300, 45, 60); minetype(3, "Epic", 400, 100, 150); minetype(4, "Legendary", 500, 150, 200); /* * minespawn("<map name>",<Common Amount>); * minespawn("<map name>",<Common Amount>,<Uncommon Amount>); * minespawn("<map name>",<Common Amount>,<Uncommon Amount>,<Rare Amount>); * minespawn("<map name>",<Common Amount>,<Uncommon Amount>,<Rare Amount>,<Epic Amount>); * minespawn("<map name>",<Common Amount>,<Uncommon Amount>,<Rare Amount>,<Epic Amount>,<Legendary Amount>); * * Example: * minespawn("anthell01", 50, 25, 12, 5, 2); * - this will spawn listed Mine below in map "anthell01": * - 50 Common Mine * - 25 Uncommon Mine * - 12 Rare Mine * - 5 Epic Mine * - 2 Legendary Mine */ minespawn("anthell01", 50, 25, 12, 5, 2); In Game Record ... Can be expanded further like, Reduction Timer or Drop amount bonus when using certain equip or like setting different item, rate and amount that can be set in configuration..
    1 point
  36. Its only here for showcase until I am satisfied with it.
    1 point
  37. Built-in archive support in windows is a joke, it has never been good. Use 7-zip (free) or equivalent software to extract !
    1 point
  38. I'm just now seeing this and don't have the time to test things out, but I've had problems warping players with similar BG scripts. I can't exactly remember what the problem was because its been years, but you should try collecting all of the players cids/aids for each team and then warping them individually instead of mapwarp/partywarp.
    1 point
  39. https://raw.githubusercontent.com/rathena/rathena/master/db/import-tmpl/job_stats.yml Should support till level 1000 if im not mistaken.
    1 point
  40. create an account in login table, fill in the username, password, and also the groupID, which is 99 if u want it to be admin account. and as above, if you enable _M _F registration, u also can do that in the client.
    1 point
  41. Preview: [media=] [/media]This is my old script and I just do a little update. Equip pickaxe and helmet, hit the stone and see did any mineral drop. * Download : Your pickaxe (item_db.txt) : http://pastebin.com/y40BYB82 Script : Minner.txt
    1 point
  42. Version 2.5.0

    273 downloads

    a simple log of all the Mvp cards on the server saved in a table
    Free
    1 point
  43. 1 point
  44. I saw a lot of posts about this over the years, but none seemed updated for the most recent version. I recently spent a lot of time on pets, so here's a quick guide. I did everything for pre-renewal, but I would imagine most of this would work for renewal too, you might just need to add some stuff about evolution. What you'll need: GRF Editor SDE (Server Database Editor) Both of these can be found elsewhere on this forum and are used for most things involving editing your server. Understanding GRF files: When the client needs a file, it searches through the GRF files in a certain order to find it. The order it uses is specified in data.ini in the client's root folder. Mine looks like this. [Data] 0=rathena_resources.grf 1=pre20190427.grf 2=renewal20190427.grf 3=palettes.grf 4=data.grf 5=rdata.grf It looks in files that are higher in the list first. This means rathena_resources.grf is checked first, and rdata.grf is checked last. This means that if I need to override a file which is normally in data,grf, I can simply add it to any grf file that is higher in the list, and it will be used instead of the one in data.grf, without having to modify that file. Since rathena_resources.grf is first in the list, it's easiest to add your files to that. Getting started with your custom pet: The first two things your pet needs are an egg and a taming item. For eggs, I simply chose to replace an existing pet egg that was unused. In Pre-Re, there aren't any unused eggs, but we can fix that. In a text editor, open up the item_db.txt file for renewal, which is under your db/re folder. Search for 9001, which will get you to the beginning of the pet eggs. Renewal has tons of them! Copy and paste all the eggs that renewal's item_db has into pre-re's item db, and now they'll be available for pre-re to use. Now open up SDE. To add an egg for your new pet, all we have to do is rename it. Use the item search and find an egg you don't care about. Change its Aegis Name and Name to be the one of the pet you want. For example, I made Garm Baby, so the Aegis name is Garm_Baby_Egg and the Name is Garm Baby Egg. This part is done. Now we need a taming item. It's easiest to make a taming item by using a miscellaneous item. For Garm Baby, I used Nursing Bottle. To turn this item into a taming item, first we have to change it from a Misc Item to a Usable item, which is done using the dropdown in the upper right. We then need to set the Applicable Job to FFFFFFFF, upper to 7, and Gender to Both. Now we need to set the script. The script must look like this: pet 1515; Except that the number must match the id number of the enemy you want to be able to capture. Look this up in the mob database. You might want to modify the drop rates on your item through the mob database too, particularly if it's an item that no one in the game drops. Most pet items also have a sell price of 2500 and a weight of 50, if you want to be consistent. Use "save database (quick)" to save your changes. We're done with SDE for now. Adding your pet to the game: The next thing to do is to add your pet to pet_db.yml so it can spawn into the game. The installation I have actually breaks pet_db.yml into two parts. There's one file inside pre-re that contains the pet's basic information, and one inside import that contains its skill information. You could merge these files if you wanted, but if not you'll need to update both. There are already a bunch of entries in this file, so you can probably just copy one. Note that when it comes to yaml files, the spacing of the file is important, so make sure you copy it exactly including the spacing. Here's the one I used for Garm Baby. - Mob: GARM_BABY TameItem: Milk_Bottle EggItem: Garm_Baby_Egg FoodItem: Ice_Piece Fullness: 4 IntimacyFed: 10 CaptureRate: 500 Script: > .@i = getpetinfo(PETINFO_INTIMATE); if( .@i >= PET_INTIMATE_LOYAL ){ bonus2 bResEff,Eff_Freeze,5000; } The entries for MOB, TameItem, EggItem, and FoodItem are all Aegis_Names, you can look these up through SDE. For example, the Nursing Bottle's Aegis Name is actually Milk_Bottle. The script is something you'll have to come up with on your own. There's a bunch of examples in the file already you can draw on. My script makes the pet give you 50% resistance to the freeze status. If you want the pet to use skills, you'll need to update the other yml file inside import. Garm Baby has this inside that file: - Mob: GARM_BABY AttackRate: 8000 RetaliateRate: 8000 ChangeTargetRate: 800 SupportScript: > petskillattack "MG_FROSTDIVER",5,10,30; The main thing we care about is the SupportScript. This is what attack your pet will use. Here, this pet uses Frost Driver level 5, between 10-30% of the time depending on how happy it is. For a support skill, you use petskillsupport instead, with values like this one: petskillsupport "HP_ASSUMPTIO",1,80,100,100; This pet would cast Assumptio level 1 with an 80 second delay, when your hp and sp are 100% or less. There's also stat bonuses available: petskillbonus bLuk,5,20,40; This pet gives a bonus of 5 luck for 20 seconds, with a 40 second delay between uses. For more detail, look in script_commands.txt within Rathena's doc folder. With this, you can now restart your server and your pet will exist in the game! There will still be a bit of jank, for example its egg won't show the right name on the client, it won't have a picture, and it won't talk, we'll discuss how to fix that next. Fixing your pet's egg entry: This one is fairly easy. Navigate to your client folder and open up System/iteminfo.lua This is where the game stores all the item translations. Find the egg that you used by searching for its item id inside square brackets, like this [9001]. The description will be listed here. If you added a completely new egg, it won't be in this file and you'll need to add an entry for it. Update the name so it shows the right name. You can also add a description if you want. Mine looks like this, but it doesn't need to be this fancy. [9108] = { unidentifiedDisplayName = "Garm Baby Egg", unidentifiedResourceName = "¾ðµ¥µå¾Ë", unidentifiedDescriptionName = { "..." }, identifiedDisplayName = "Garm Baby Egg", identifiedResourceName = "¾ðµ¥µå¾Ë", identifiedDescriptionName = { "An egg in which a Garm Baby Cute Pet rests.", "Can be hatched by using a ^33CC33Pet Incubator^000000.", "^33CC33Special Power ^000000:", "Casts level 5 Frost Driver against the enemy", "^33CC33Loyal Bonus^000000", "Increases resistance to the Freeze status by 50%", "Class:^6666CC Monster Egg^000000" }, slotCount = 0, ClassNum = 0 }, Adding a picture for your pet: Every pet has a little picture that is displayed in their pet window. If you don't do this step, it'll just display NO IMAGE. This is not cool, so let's add an image. This requires GRF editor. To start with, you should probably open up data.grf, just to know how it's structured. Images for pets are stored in data/texture/userinterface/illust . If you search this folder for "pet", you'll see the existing images. They are all 90x134 pixels, your image will need to be this size too. Name it something like pet_garm_baby.bmp. You could just upload your file into data.grf, but data.grf is huge and thus it's slow to send update to this file to your players. Instead, it's easier to put it into rathena_resources.grf. It does not have this folder, but you can create it using GRF editor. Remember, any files you put inside something higher in the list of GRF files will override the earlier files. After adding your file, you'll notice that it won't actually display in game. This is because there is also a table of pets in the application that maintains the paths to the images that you need to update. This file is called petinfo.lub, and it is stored inside data.grf in the folder data/luafiles514/lua files/datainfo. We'll need to make a copy of this file, so extract it using right click extract with GRF editor. This file needs specific encoding to read the Korean characters, so make sure to save the file with ANSI encoding when you're done. There are many tables in this file that you'll need to add your pet to. Generally, you can follow the format they use. You'll notice that most of the entries use an identifier that looks like this: [jobtbl.JT_GARM_BABY] = "GARM_BABY", This is an entry into the file jobidentity.lub, which is in the same folder. You should not need to modify that file, pretty much every enemy in the game is already in there, just enter your pet's Aegis name here, in all caps. When you come to this table: PetEggItemID_PetJobID You'll need to give your pet a new JobID, you can just assign a new one at the end. When you're finished updating this file, add it into your rathena_resources.grf, making the same folder path for it as above, so it will overwrite the one in the base game. Make sure to save your GRF afterwards. If you find that the pet accessories on your server no longer work after doing this, you saved the file with the wrong encoding. I fixed this by switching all the pet accessory files to the english names and adding them all to my GRF files, but the smart way is probably just to use a text editor that handles encoding properly, like notepad++. Making your pet talk: To make your pet talk, it needs entries in pettalktable.xml. For me, this file was in my renewal.grf file, in the data folder. This is fairly straightforward, you can just copy and then modify Poring's entry. You just need to know what to put for the enclosing tags. The name must match the entry you made in the PetNameTable inside petinfo.lub. I put the name "GARM_BABY" for my pet, so the tag must say <GARM_BABY>. For some reason, my pets only talked when I put their entries near the beginning of the file. I suspect one of the entries inside the default file has an error in it, but I haven't found it. Either way, adding them to the top of the file is safe. With all of this stuff done, just save your GRF edits and restart the game (it's not necessary to restart the server for GRF changes) and hopefully your pet should talk and have a picture! Once you confirm everything works, you'll need to distribute the changed grf files and iteminfo.lua to your players. It's probably worth adding all your custom pets to the server first before you open in to the public! I'm sorry that this was long, no one said custom pets were going to be easy. Hopefully it all works for you.
    1 point
  45. (UPDATED 2022-05-16) Unlike popular believe, Brasilis actually existed in pre-renewal, but only on bRO and jRO. Since it never existed on kRO, it is undefined in what rAthena consider "official stats". As of today I pushed the pre-renewal Brasilis monsters stats (jRO version) to rAthena master. Originally we left the guessed values as they were, but as we now have the YAML format that allows overwriting only selected stats of a monster rather than having to copy over the whole line, it's better to have as many official values as possible already in the base file. Now the only thing you need to do to get the bRO version of pre-renewal is to overwrite the ATK values. I've attached mob_db_bra_atk.yml which includes these changes. If you have no custom changes to your monsters, then you can just name it "mob_db.yml" and overwrite the file in \db\import\. Otherwise just copy the monster lines into the "Body" section of your file. I originally released the monster stats already in 2013, but the jRO values were guessed based on Doddler's comment that they seem to be about "3x" as high. In the meantime jRO actually released their customized values so we know the real ATK stats now. I also fixed the ATK in my original release from 2013, but keep in mind that the mob_db.txt format changed. This monster lines in the file will only work until rAthena from March 2016. After that you will need to fix the "mode" of the monsters (see here: https://github.com/rathena/rathena/commit/55e4df14c2141f291a985c391408a045ec1b25c4) or just use latest rAthena which uses YAML format. My old file also includes the spawns, they should still be working, but I did not test it (alternatively you can just use the renewal spawn files for bra_fild and bra_dun). bRO and jRO have slightly different versions, here are the differences: - the bRO version is the original version, but features really low monster attack, jRO considered this as too easy / exploitable and decided to strongly increase the ATK of the monsters (around 3x as much) - bRO's field map mainly has Headless Mule's and Curupira spawning, first floor is mainly Piranha and second floor is mainly Iara - jRO removed Headless Mule from the field map completely and added more Toucan and Jaguar spawns instead - jRO added Thara Frog and Headless Mule to the first dungeon floor - jRO removed all weaker monsters except Hydra on the second dungeon floor and added Headless Mule instead Issues that are not 100% official because a leak is missing: - monster modes in pre-renewal are unknown (both bRO and jRO), jRO reported that Iara was actually aggressive, however since we have no leaks on the monster modes, I simply used the renewal ones - the spawn types of jRO are 100% official, but the amounts are estimated Everything else should be 100% accurate. bra_all.txt mob_db_bra_atk.yml
    1 point
  46. @Ahoy if u enabled VIP SYSTEM ... or conf/login_athena
    1 point
  47. I just tried on client 2018-06-21aRagexeRE thanks so much @melv0 1. How to change the maximum level of your server? https://gist.github.com/cydh/d82a06472f12c4ec7f38ab3de22fe86b 2. How to make the aura appear at a maximum level other than 99? data\luafiles514\lua files\service_korea\ExternalSettings_kr.lub & externalsettings_kr_sak.lub MaxLevelTable = { BaseLevel = 99, << Edit this part into 255 BaseLevel3rd = 185, BaseLevelExtend2 = 160, BaseLevelUpperJob = 185, BaseLevelHomun = 185, BaseLevelDoram = 185, JobLevelNovice = 10, JobLevelSuperNovice = 99, JobLevelBase = 50, JobLevel2nd = 70, JobLevel3rd = 65, JobLevelExtend2 = 50, JobLevelUpperJob = 60, JobLevelDoram = 55 } and that's it, see magic ingame ?
    1 point
  48. Hello there @Questune09, >>>>> step 1: after finshing the quest, under getitem ( the prize ) add this : set CooldownQuest,gettimetick(2); step 2: and before taking the quest add time check: if(gettimetick(2) - CooldownQuest < (60 * 60 * 24)) { next; mes "[ Daily Quest ]"; mes "^FF0000Sorry you have to wait 24 Hours until you can do the Quest again!^000000"; close; } <<<<< or use this prt_in,82,93,2 script Daily Quest 513,{ if (getgmlevel() >= 80) goto GM_Menu; L_START: if (getgmlevel() >= 80) next; mes "[ Daily Quest ]"; mes "Total Daily Quests Finished: ^008800"+$DailyQuestTotal+"^000000."; mes "Today Daily Quests Finished: ^0000FF"+$DailyQuestToday+"^000000."; next; mes "[Daily Quest]"; mes "Hello "+strcharinfo(0)+"!"; mes "Do you want to start today's Quest?"; mes " "; menu "Yes!",-,"Nahh",L_Close; if(gettimetick(2) - CooldownQuest < (60 * 60 * 24)) { next; mes "[ Daily Quest ]"; mes "^FF0000Sorry you have to wait 24 Hours until you can do the Quest again!^000000"; close; } next; mes "[Daily Quest]"; mes "You'll need these item for Today's Quest:"; mes "^FF0000"+getitemname($QuestItem1)+"^000000 x "+$QuestItem1HM+""; mes "^FF0000"+getitemname($QuestItem2)+"^000000 x "+$QuestItem2HM+""; mes "^FF0000"+getitemname($QuestItem3)+"^000000 x "+$QuestItem3HM+""; mes "In exchange you will get ^0000FF"+getitemname($DailyQuestPrize)+"^000000 x "+$DailyQuestPrizeHM+""; next; mes "[Daily Quest]"; mes "Do you have the items?"; menu "Yes! I do.",-,"Gimme some time.",L_Close; if(countitem($QuestItem1) >= $QuestItem1HM) && (countitem($QuestItem2) >= $QuestItem2HM) && (countitem($QuestItem3) >= $QuestItem3HM) goto FinishQuest; next; mes "[Daily Quest]"; mes "You only have "+countitem($QuestItem1HM)+" of ^FF0000"+getitemname($QuestItem1)+"^000000, "+countitem($QuestItem2HM)+" of ^FF0000"+getitemname($QuestItem2)+"^000000, "+countitem($QuestItem3HM)+" of ^FF0000"+getitemname($QuestItem3)+"^000000."; mes "Come back when you have it! Better get the items quickly. It's gonna change in a Day!"; close; L_Close: next; mes "[Daily Quest]"; mes "Come back again! Get the Items!"; mes "Goodbye!"; close; GM_Menu: mes "[Daily Quest]"; mes "Hello GM "+strcharinfo(0)+"!"; mes "What can I do for you today?"; menu "Player Menu",L_START,"Change Today's Quest/Prize",L_ChangeQuest,"Close",L_Close; L_ChangeQuest: next; mes "[Daily Quest]"; mes "What will you like to change?"; next; menu "Go back.",GM_Menu,"Prize [^0000FF"+getitemname($DailyQuestPrize)+"^000000 x "+$DailyQuestPrizeHM+"]",L_ChangePrize,"Change Quest Randomly",L_ChangeQuestRandom,"Change Quest by Myself",L_ChangeQuestMyself; L_ChangeQuestMyself: next; mes "[Daily Quest]"; mes "Which item would you like to change first?"; menu "Go Back.",L_ChangeQuest,"Item 1 [^FF0000"+getitemname($QuestItem1)+"^000000 x "+$QuestItem1HM+"]",L_ChangeItem1,"Item 2 [^FF0000"+getitemname($QuestItem2)+"^000000 x "+$QuestItem2HM+"]",L_ChangeItem2,"Item 3 [^FF0000"+getitemname($QuestItem3)+"^000000 x "+$QuestItem3HM+"]",L_ChangeItem3; L_ChangeItem1: next; mes "[Daily Quest]"; mes "Alright. What will be the item?"; next; input $QuestItem1; next; L_ChangeItem12: mes "[Daily Quest]"; mes "How much of ^ff0000"+getitemname($QuestItem1)+"^000000 do you want?"; mes "It must be in the range of ^0088001 ~ 200^000000."; next; input $QuestItem1HM; next; if ($QuestItem1HM > 200) goto L_HMItem1Denied; mes "[Daily Quest]"; mes "Item 1 Set."; set $DailyQuestToday,0; mes "^FF0000"+getitemname($QuestItem1)+"^000000 x "+$QuestItem1HM+"."; next; goto L_ChangeQuest; L_HMItem1Denied: mes "[Daily Quest]"; mes "This item (^ff0000"+getitemname($QuestItem1)+"^000000) must be in a range of ^0088001 ~ 200^000000."; next; goto L_ChangeItem12; L_ChangeItem2: next; mes "[Daily Quest]"; mes "Alright. What will be the item?"; next; input $QuestItem2; next; L_ChangeItem22: mes "[Daily Quest]"; mes "How much of ^ff0000"+getitemname($QuestItem2)+"^000000 do you want?"; mes "It must be in the range of ^0088001 ~ 150^000000."; next; input $QuestItem2HM; next; if ($QuestItem2HM > 150) goto L_HMItem2Denied; mes "[Daily Quest]"; mes "Item 2 Set."; set $DailyQuestToday,0; mes "^FF0000"+getitemname($QuestItem2)+"^000000 x "+$QuestItem2HM+"."; next; goto L_ChangeQuest; L_HMItem2Denied: mes "[Daily Quest]"; mes "This item (^ff0000"+getitemname($QuestItem2)+"^000000) must be in a range of ^0088001 ~ 150^000000."; next; goto L_ChangeItem22; L_ChangeItem3: next; mes "[Daily Quest]"; mes "Alright. What will be the item?"; next; input $QuestItem3; next; L_ChangeItem32: mes "[Daily Quest]"; mes "How much of ^ff0000"+getitemname($QuestItem3)+"^000000 do you want?"; mes "It must be in the range of ^0088001 ~ 50^000000."; next; input $QuestItem3HM; next; if ($QuestItem3HM > 50) goto L_HMItem3Denied; mes "[Daily Quest]"; mes "Item 3 Set."; set $DailyQuestToday,0; mes "^FF0000"+getitemname($QuestItem3)+"^000000 x "+$QuestItem3HM+"."; next; goto L_ChangeQuest; L_HMItem3Denied: mes "[Daily Quest]"; mes "This item (^ff0000"+getitemname($QuestItem3)+"^000000) must be in a range of ^0088001 ~ 50^000000."; next; goto L_ChangeItem32; L_ChangeQuestRandom: set $QuestItem1, rand(701,1065); set $QuestItem1HM, rand(1,200); set $QuestItem2, rand(701,1065); set $QuestItem2HM, rand(1,150); set $QuestItem3, rand(701,1065); set $QuestItem3HM, rand(1,50); set $DailyQuestToday,0; mes "[Daily Quest]"; mes "This is the Daily Quest:"; mes "^FF0000"+getitemname($QuestItem1)+"^000000 x "+$QuestItem1HM+""; mes "^FF0000"+getitemname($QuestItem2)+"^000000 x "+$QuestItem2HM+""; mes "^FF0000"+getitemname($QuestItem3)+"^000000 x "+$QuestItem3HM+""; next; goto GM_Menu; L_ChangePrize: next; mes "[Daily Quest]"; mes "Input the Prize"; next; input $DailyQuestPrize; next; mes "[Daily Quest]"; mes "The Prize: "+getitemname($DailyQuestPrize)+" x How many?"; next; input $DailyQuestPrizeHM; next; mes "[Daily Quest]"; mes "This is what you like?"; mes "^0000ff"+getitemname($DailyQuestPrize)+"^000000 x "+$DailyQuestPrizeHM+"."; menu "Yup, Thanks.",GM_Menu,"Noo! I made a mistake!",L_ChangePrize; FinishQuest: next; mes "[Daily Quest]"; mes "You got ^0000FF"+getitemname($DailyQuestPrize)+"^000000 x "+$DailyQuestPrizeHM+"."; delitem $QuestItem1,$QuestItem1HM; delitem $QuestItem2,$QuestItem2HM; delitem $QuestItem3,$QuestItem3HM; getitem $DailyQuestPrize,$DailyQuestPrizeHM; set CooldownQuest,gettimetick(2); set $DailyQuestTotal,$DailyQuestTotal +1; set $DailyQuestToday,$DailyQuestToday +1; close; } - script DailyQuestItemChanger -1,{ OnInit: OnClock0000: while ( getitemname( set( $QuestItem1, rand(701,1065) ) ) == "null" ); set $QuestItem1HM, rand(1,200); while ( getitemname( set( $QuestItem2, rand(701,1065) ) ) == "null" ); set $QuestItem2HM, rand(1,150); while ( getitemname( set( $QuestItem3, rand(701,1065) ) ) == "null" ); set $QuestItem3HM, rand(1,50); set $DailyQuestToday,0; end; } i recommend do adding the codes manually
    1 point
  49. All old maps are in our download section: https://rathena.org/board/files/file/7-old-payon-morocc-10/ https://rathena.org/board/files/file/2392-old-izlude-and-alberta/
    1 point
×
×
  • Create New...