Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 03/19/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.47GB to 2.44GB. I have also compressed the official_data.grf file from 1.24GB to 477MB. Before BGM, the Rö folder has a total size of 2.96GB, after BGM it reaches 3.30GB 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.
    7 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. Do you have very old clients or emulators lying around? Maybe that old hard drive with RO stuff? How about those old CD-Rs on the shelf? Or are you simply a RO data hoarder? WE WANT YOU! Hi, I’m vit. I’m developing along with o oldinroplayer a *Ragnarok Online Cross-Episode Database*, called RagnaDB. It’s a db in which you’re able to choose a specific episode and we’ll show you all the info precisely as it was back in the day. The idea is for it to be the “one RO database to rule them all”. For this to exist, there’s a great deal of historical research and digital data scavenging involved. Since we’re committed to historical accuracy, we’re on a journey to finding old files (client and server) to feed the db with, as well as (old) reliable sources for data validation. If you were waiting for the right moment to shine and looking for a group of people who will truly appreciate and see value in those dozens of RO gigabytes collecting dust like no one ever had, this is the moment! We’ll love to have you! If any of the words above piqued your interest, you’re more than welcome here. Join our Discord to hear about the latest updates or just hang around! Our Discord: https://discord.gg/cueAdED64N RagnaDB: https://ragnadb.com/
    4 points
  4. Version 1.0.0

    114 downloads

    [Event] Chess 1.0 By: MihaSenpai About: Hello Everynyan! My name is Mihael and I hope you are all well. I recently found these files in a personal repository and decided to share them with you. The .ZIP Contains the files: Script: NPC programmed for two players to participate in a game of chess. Map: Files containing the original Map of the event. Sprites: Files containing the event's ORIGINAL NPC Sprites. Hope you like it. If you have any questions, you can contact us here on the Forum or via Discord. A belated Happy 2024 to everyone.
    Free
    4 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. Version 1.0.1

    107 downloads

    i recoded older rAthena Serv Monitor by DarkIrata in newer WPF -> Added Multithreading Server Start -> Added 1Click-Restart Server Button -> Added the WebServ -> Errorlogs are working and saving without crashes -> New design the open-src code -> https://github.com/AoShinRO/rAthena-ServMonitor-ByAoShinHo
    Free
    3 points
  7. Prueba cambiando (BaseLevel/2) por status_get_lv(src)
    2 points
  8. src/status.cpp search for: // Skill-related recovery (only when sit) there you can edit the source. ^-^
    2 points
  9. 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
  10. I have multiple generator project, maybe u can try.
    2 points
  11. Here is another fully furbished Morroc Town! Join my Discord Channel: https://discord.gg/AhBjDJnEW3 Cinematic! morom.mp4
    2 points
  12. This is my new work Payon Town ROM! Join my Discord Channel: https://discord.gg/AhBjDJnEW3 Cinematic! payorm.mp4
    2 points
  13. Was having errors running my own 20220406 client, and this saved me. Thanks for this !
    2 points
  14. 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
  15. 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
  16. Hello, I'm sharing this project, since this might help someone who need to generate this easily. The file that generated = CheckAttendance_EN.lub & attendance.yml Download, extract, add it in your System folder and server file or create a patch or anything. You can access to this simple project here : https://x-files.amirazman.my/attendance. Let me know if you having issues and Ill update it if possible & have some leisure time to play with.
    2 points
  17. Already answered your question in discord.
    2 points
  18. Hello, ive update this for weapon, robe and headgear generator, so when there is no script, its not generated at iteminfo. too. Let me know if you found any issue or anymore improvements/ideas to make this tools better. Ive been planning to add the SQL part too, but maybe later.
    2 points
  19. Version 1.0.1

    130 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

    219 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. https://github.com/rathena/rathena/blob/master/src/config/renewal.hpp#L45C1-L45C21 If you didnt want Renewal drop mode, then you can disable it.
    1 point
  22. 1) You add the numbers together that you want it enabled for. For example if you only want Heal and Sactuary to be boosted by this bonus, then you would put "3" (1+2). If you want everything to be affected from that list you put 1+2+4+8+16+32+64+128+256=511. 2) If you are running renewal, you can define the exp and drop penalty here: https://github.com/rathena/rathena/blob/master/db/re/level_penalty.yml
    1 point
  23. Solo copia y pega y ya esta, no tienes que modificar nada.
    1 point
  24. Hola, creo que rAthena tiene más soporte y actualizaciones. 1- Abre \npc\re\scripts_jobs.conf. Encuentra y comenta estas líneas: // - 3-1 npc: npc/re/jobs/3-1/archbishop.txt npc: npc/re/jobs/3-1/mechanic.txt npc: npc/re/jobs/3-1/ranger.txt npc: npc/re/jobs/3-1/rune_knight.txt npc: npc/re/jobs/3-1/warlock.txt npc: npc/re/jobs/3-1/guillotine_cross.txt // - 3-2 npc: npc/re/jobs/3-2/genetic.txt npc: npc/re/jobs/3-2/minstrel.txt npc: npc/re/jobs/3-2/royal_guard.txt npc: npc/re/jobs/3-2/shadow_chaser.txt npc: npc/re/jobs/3-2/sorcerer.txt npc: npc/re/jobs/3-2/sura.txt npc: npc/re/jobs/3-2/wanderer.txt 2- NPC actualizado: prontera,153,193,6 script Job Master 123,{ function Get_Job_Equip; // Checks if the Player has the required level. // closes if not, returns if yes function Require_Level { if (BaseLevel < getarg(0) || JobLevel < getarg(1)) { .@blvl = getarg(0) - BaseLevel; .@jlvl = getarg(1) - JobLevel; mes "Level requirement:"; mes ((getarg(0)>1)? "^bb0000"+getarg(0)+"^000000 (^bb0000Base^000000) / ":"")+"^00bb00"+ getarg(1)+"^000000 (^00bb00Job^000000)"; mes "You need " + ((.@blvl > 0) ? "^bb0000"+.@blvl+"^000000 more base levels " + ((.@jlvl > 0) ? "and " : "") : "") + ((.@jlvl > 0) ? "^00bb00"+.@jlvl+"^000000 more job levels " : "") + "to continue."; close; } return; } // Checks if the given eac is a baby class function Is_Baby { return ((getarg(0, eaclass())&EAJL_BABY)>0); } // Checks if the player can change to third class. // Note: This does not include the level checks. function Can_Change_Third { // To change to third class you either need to be: // * Second Class // * Transcendent Second Class // * Baby Second Class if( !.ThirdClass ) return false; // Third job change disabled if( !(eaclass()&EAJL_2) ) return false; // Not second Class if( eaclass()&EAJL_THIRD ) return false; // Already Third Class if( roclass(eaclass()|EAJL_THIRD) < 0 ) return false; // Job has no third Class if( (eaclass()&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE ) return false; // Exp. Super Novice equals 3rd Cls, but has it's own case if( Is_Baby() && (!.BabyClass || !.BabyThird) ) return false; // No Baby (Third) change allowed return true; } function Can_Rebirth { // To rebirth, you need to be: // * Second Class if( !.RebirthClass ) return false; // Rebirth disabled if( !(eaclass()&EAJL_2) ) return false; // Not second Class if( eaclass()&(EAJL_UPPER|EAJL_THIRD) ) return false; // Already Rebirthed/ Third Class if( roclass(eaclass()|EAJL_UPPER) < 0 ) return false; // Job has no transcended class if( Is_Baby() && !.BabyClass ) return false; // No Baby changes allowed return true; } // Checks if the given eac is a first class function Is_First_Cls { return (getarg(0) <= EAJ_TAEKWON); } function Check_Riding { // Note: Why we should always check for Riding: // Mounts are considered as another class, which // would make this NPC bigger just to handle with // those special cases. if (checkfalcon() || checkcart() || checkriding() || ismounting()) { mes "Please remove your " + ((checkfalcon()) ? "falcon" : "") + ((checkcart()) ? "cart" : "") + ((checkriding()) ? "Peco" : "") + ((ismounting()) ? "mount" : "") + " before proceeding."; close; } return; } function Check_SkillPoints { if (.SkillPointCheck && SkillPoint) { mes "Please use all your skill points before proceeding."; close; } return; } // addJobOptions is essentially the same like // setarray .@array[getarraysize(.@array)],opt1,opt2,...; // It's just easier to read, since we're using it very often function Job_Options { .@argcount = getargcount(); .@arr_size = getarraysize(getarg(0)); for( .@i = 1; .@i < .@argcount; .@i++) { setarray getelementofarray(getarg(0), .@arr_size++),getarg(.@i); } } // Begin of the NPC mes .NPCName$; Check_Riding(); Check_SkillPoints(); // initialisation .@eac = eaclass(); .@third_possible = Can_Change_Third(); .@rebirth_possible = Can_Rebirth(); .@first_eac = .@eac&EAJ_BASEMASK; .@second_eac = .@eac&EAJ_UPPERMASK; // Note: These are already set in pc.cpp // BaseClass = roclass(.@eac&EAJ_BASEMASK) which is the players First Class // BaseJob = roclass(.@eac&EAJ_UPPERMASK) which is the players Second Class //dispbottom "Debug: eac ("+.@eac+"), third ("+.@third_possible+"), rebirth("+.@rebirth_possible+"), BaseClass ("+BaseClass+"), BaseJob ("+BaseJob+")"; // From here on the jobmaster checks the current class // and fills the the array `.@job_opt` with possible // job options for the player. if( .@rebirth_possible ) { if (.JumpRebirth) { // SALTAR AL TRASCENDENTE Require_Level(.Req_Second[0], .Req_Second[1]); Job_Options(.@job_opt, Class + Job_Novice_High); } else { // Rebirth option (displayed on the top of the menu) Require_Level(.Req_Rebirth[0], .Req_Rebirth[1]); Job_Options(.@job_opt, Job_Novice_High); } } if( .@third_possible ) { // Third Job change (displayed below rebirth) Require_Level(.Req_Third[0], .Req_Third[1]); Job_Options(.@job_opt, roclass(.@eac|EAJL_THIRD)); } if (.SecondExpanded && (.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE && // is Super Novice !(eaclass()&EAJL_THIRD) ) { // not already Expanded SN // (Baby) Super Novice to Expanded (Baby) Super Novice if( !Is_Baby(.@eac) || (.BabyClass && .BabyExpanded) ) { // .BabyClass & .BabyExpanded must be enabled if the is a baby Require_Level(.Req_Exp_SNOVI[0], .Req_Exp_SNOVI[1]); Job_Options(.@job_opt,roclass(.@eac|EAJL_THIRD)); // Expanded SN is "third" cls } } if (.SecondExpanded && ((.@eac&(~EAJL_BABY)) == EAJ_NINJA || // is (Baby) Ninja (.@eac&(~EAJL_BABY)) == EAJ_GUNSLINGER)) { // is (Baby) Gunslinger // (Baby) Ninja to (Baby) Kagerou / Oboro // (Baby) Gunslinger to (Baby) Rebellion if( !Is_Baby(.@eac) || (.BabyClass && .BabyExpanded) ) { // .BabyClass & .BabyExpanded must be enabled if the is a baby Require_Level(.Req_Exp_NJ_GS[0], .Req_Exp_NJ_GS[1]); // Kagerou, Oboro, Rebellion are considered as a 2-1 class Job_Options(.@job_opt, roclass(.@eac|EAJL_2_1)); } } // Player is Job_Novice, Job_Novice_High or Job_Baby if (.@first_eac == EAJ_NOVICE && .@second_eac != EAJ_SUPER_NOVICE) { // MAPID_NOVICE, MAPID_SUPER_NOVICE, MAPID_NOVICE_HIGH, MAPID_BABY Require_Level(.Req_First[0], .Req_First[1]); switch(Class) { case Job_Novice: // First job change Job_Options(.@job_opt,Job_Swordman, Job_Mage, Job_Archer, Job_Acolyte, Job_Merchant, Job_Thief, Job_Super_Novice, Job_Taekwon, Job_Gunslinger, Job_Ninja); if( .BabyNovice ) Job_Options(.@job_opt, Job_Baby); break; case Job_Novice_High: // Job change after rebirth if( .LastJob && lastJob ) Job_Options(.@job_opt, roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER)); else Job_Options(.@job_opt, Job_Swordman_High, Job_Mage_High, Job_Archer_High, Job_Acolyte_High, Job_Merchant_High, Job_Thief_High); break; case Job_Baby: if( !.BabyClass ) break; // First job change as a baby Job_Options(.@job_opt, Job_Baby_Swordman, Job_Baby_Mage, Job_Baby_Archer,Job_Baby_Acolyte, Job_Baby_Merchant, Job_Baby_Thief); if( .BabyExpanded ) Job_Options(.@job_opt, Job_Super_Baby, Job_Baby_Taekwon, Job_Baby_Gunslinger, Job_Baby_Ninja); if( .BabySummoner ) Job_Options(.@job_opt, Job_Baby_Summoner); break; default: mes "An error has occurred."; close; } } else if( Is_First_Cls(.@eac) || // First Class Is_First_Cls(.@eac&(~EAJL_UPPER)) || // Trans. First Cls (.BabyClass && Is_First_Cls(.@eac&(~EAJL_BABY))) ) { // Baby First Cls // Player is First Class (not Novice) // most jobs should have two options here (2-1 and 2-2) .@class1 = roclass(.@eac|EAJL_2_1); // 2-1 .@class2 = roclass(.@eac|EAJL_2_2); // 2-2 // dispbottom "Debug: Classes: class1 ("+.@class1+"), class2 ("+.@class2+")"; if(.LastJob && lastJob && (.@eac&EAJL_UPPER)) { // Player is rebirth Cls and linear class changes are enforced Require_Level(.Req_Second[0], .Req_Second[1]); Job_Options(.@job_opt, lastJob + Job_Novice_High); } else { // Class is not enforced, player can decide. if( .@class1 > 0 ) { // 2-1 Require_Level(.Req_Second[0], .Req_Second[1]); Job_Options(.@job_opt, .@class1); } if( .@class2 > 0 ) { // 2-2 Require_Level(.Req_Second[0], .Req_Second[1]); Job_Options(.@job_opt, .@class2); } } } // Displaying the Job Menu defined by .@job_opt. // .@job_opt should not be changed below this line. function Job_Menu; Job_Menu(.@job_opt); close; // Displays the job menu function Job_Menu { // getarg(0) is the .@job_opt array holding all available job changes. function Confirm_Change; while(true) { .@opt_cnt = getarraysize(getarg(0)); if( .@opt_cnt <= 0 ) { mes "No more jobs are available."; close; } .@selected = 0; // Just a single job class given, no select needed if (.@opt_cnt > 1) { // Multiple job classes given. Select one and save it to .@class // After that confirm .@class mes "Select a job."; .@menu$ = ""; for (.@i = 0; .@i < .@opt_cnt; .@i++) { if( getelementofarray(getarg(0), .@i) == Job_Novice_High) .@jobname$ = "^0055FFRebirth^000000"; else .@jobname$ = jobname(getelementofarray(getarg(0), .@i)); .@menu$ = .@menu$ + " ~ " + .@jobname$ + ":"; } .@menu$ = .@menu$+" ~ ^777777Cancel^000000"; .@selected = select(.@menu$) - 1; if( .@selected < 0 || .@selected >= .@opt_cnt ) close; next; mes .NPCName$; } .@class = getelementofarray(getarg(0), .@selected); if ((.@class == Job_Super_Novice || .@class == Job_Super_Baby) && BaseLevel < .SNovice) { // Special Level Requirement because Super Novice and // Super Baby can both be selected in one of the first class // changes. That's why the Level Requirement is after and not before // the selection. mes "A base level of " + .SNovice + " is required to turn into a " + jobname(.@class) + "."; return; } // Confirm the Class Confirm_Change(.@class, .@opt_cnt > 1); next; mes .NPCName$; } return; } // Executes the actual jobchange and closes. function Job_Change { .@previous_class = Class; .@to_cls = getarg(0); next; mes .NPCName$; mes "You are now " + callfunc("F_InsertArticle", jobname(.@to_cls)) + "!"; if (.@to_cls == Job_Novice_High && .LastJob) lastJob = Class; // Saves the lastJob for rebirth jobchange .@to_cls; if (.@to_cls == Job_Novice_High) resetlvl(1); else if (.@to_cls == Job_Baby) { resetstatus; resetskill; set SkillPoint,0; } specialeffect2 EF_ANGEL2; specialeffect2 EF_ELECTRIC; if (.@previous_class != Class) { if (.Platinum) callfunc "F_GetPlatinumSkills"; if (.GetJobEquip) Get_Job_Equip(); } close; // Always closes after the change } function Confirm_Change { // Player confirms he want to change into .@class .@class = getarg(0, -1); .@back = getarg(1, false); if( .@class < 0 || eaclass(.@class) == -1 ) { mes "Unknown Class Error."; close; } mes "Do you want to change into ^0055FF"+jobname(.@class)+"^000000 class?"; .@job_option$ = " ~ Change into ^0055FF"+jobname(.@class)+"^000000 class"; if( .@class == Job_Novice_High) .@job_option$ = " ~ ^0055FFRebirth^000000"; if (select(.@job_option$+": ~ ^777777" + ((.@back) ?"Go back" : "Cancel") + "^000000") == 1) { Job_Change(.@class); } if (!.@back) close; // "Cancel" pressed return; } // Function which gives a job related item to the player // the items are the rewards from the original job change quests function Get_Job_Equip { // Note: The item is dropping, when the player can't hold it. // But that's better than not giving the item at all. .@eac = eaclass(); if( .@eac&EAJL_THIRD ) { // Third Class Items getitem 2795,1; // Green Apple Ring for every 3rd Class switch(BaseJob) { // BaseJob of Third Cls // For Normal Third, Baby Third and Transcended Third Cls case Job_Knight: getitem 5746,1; break; // Rune Circlet [1] case Job_Wizard: getitem 5753,1; break; // Magic Stone Hat [1] case Job_Hunter: getitem 5748,1; break; // Sniper Goggle [1] case Job_Priest: getitem 5747,1; break; // Mitra [1] case Job_Blacksmith: getitem 5749,1; break; // Driver Band [1] case Job_Assassin: getitem 5755,1; break; // Silent Executor [1] case Job_Crusader: getitem 5757,1; break; // Dip Schmidt Helm [1] case Job_Sage: getitem 5756,1; break; // Wind Whisper [1] case Job_Bard: getitem 5751,1; break; // Maestro Song's Hat [1] case Job_Dancer: getitem 5758,1; break; // Dying Swan [1] case Job_Monk: getitem 5754,1; break; // Blazing Soul [1] case Job_Alchemist: getitem 5752,1; break; // Midas Whisper[1] case Job_Rogue: getitem 5750,1; // Shadow Handicraft [1] getitem 6121,1; // Makeover Brush getitem 6122,1; break; // Paint Brush } } else if (.@eac&EAJL_2) { // Second Class (And not Third Class) switch(BaseJob) { // Second Class case Job_Knight: getitem 1163,1; break; // Claymore [0] case Job_Priest: getitem 1522,1; break; // Stunner [0] case Job_Wizard: getitem 1617,1; break; // Survivor's Rod [0] case Job_Blacksmith: getitem 1360,1; break; // Two-Handed-Axe [1] case Job_Hunter: getitem 1718,1; break; // Hunter Bow [0] case Job_Assassin: getitem 1254,1; break; // Jamadhar [0] case Job_Crusader: getitem 1410,1; break; // Lance [0] case Job_Monk: getitem 1807,1; break; // Fist [0] case Job_Sage: getitem 1550,1; break; // Book [3] case Job_Rogue: getitem 1222,1; break; // Damascus [1] case Job_Alchemist: getitem 1126,1; break; // Saber [2] case Job_Bard: getitem 1907,1; break; // Guitar [0] case Job_Dancer: getitem 1960,1; break; // Whip [1] case Job_Super_Novice: getitem 1208,1; break; // Main Gauche [4] case Job_Star_Gladiator: getitem 1550,1; break; // Book [3] case Job_Soul_Linker: getitem 1617,1; break; // Survivor's Rod [0] } } else { // Neither Second or Third Cls // => First Cls or not covered by the switch switch(BaseClass) { // First Class case Job_Swordman: getitem 1108,1; break; // Blade [4] case Job_Mage: getitem 1602,1; break; // Rod [4] case Job_Archer: getitem 1705,1; break; // Composite Bow [4] case Job_Acolyte: getitem 1505,1; break; // Mace [4] case Job_Merchant: getitem 1302,1; break; // Axe [4] case Job_Thief: getitem 1208,1; break; // Main Gauche [4] case Job_Gunslinger: getitem 13101,1; break; // Six Shooter [2] case Job_Ninja: getitem 13010,1; break; // Asura [2] } } return; } OnInit: // Initialisation, do not edit these .NPCName$ = "[Job Master]"; // Settings .ThirdClass = false; // Enable third classes? .RebirthClass = true; // Enable rebirth classes? .SecondExpanded = true; // Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion? .BabyNovice = true; // Enable Baby novice classes? Disable it if you like player must have parent to get job baby. .BabyClass = true; // Enable Baby classes? .BabyThird = false; // Enable Baby third classes? .BabyExpanded = true; // Enable Baby Expanded classes: Ex. Baby Ninja, Baby Taekwon, etc. .BabySummoner = true; // Enable Baby Summoner? .LastJob = true; // Enforce linear class changes? .SkillPointCheck = true; // Force player to use up all skill points? .Platinum = true; // Get platinum skills automatically? .GetJobEquip = false; // Get job equipment (mostly weapons) on job change? .JumpRebirth = true; // SALTAR AL TRASCENDENTE // Level Requirements setarray .Req_First[0],1,10; // Minimum base level, job level to turn into 1st class setarray .Req_Second[0],1,40; // Minimum base level, job level to turn into 2nd class setarray .Req_Rebirth[0],99,50; // Minimum base level, job level to rebirth setarray .Req_Third[0],99,50; // Minimum base level, job level to change to third class setarray .Req_Exp_NJ_GS[0],99,70; // Minimum base level, job level to turn into Expanded Ninja and Gunslinger setarray .Req_Exp_SNOVI[0],99,99; // Minimum base level, job level to turn into Expanded Super Novice .SNovice = 45; // Minimum base level to turn into Super Novice // Setting adjustments by PACKETVER if( PACKETVER < 20161207 ) { if( .BabyExpanded ) debugmes "jobmaster: BabyExpanded is disabled due to outdated PACKETVER."; if( .BabySummoner ) debugmes "jobmaster: BabySummoner is disabled due to outdated PACKETVER."; .BabyExpanded = false; .BabySummoner = false; } end; } 3- Sí.
    1 point
  25. Hi. Try this one if you do not want to use instance system, modified from AnnieRuru' Private MVP & Branch Room in \npc\custom\etc\mvp_room.txt //===== rAthena Script ======================================= //= Private MVP & Branch Room //===== By: ================================================== //= AnnieRuru //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Allows players to rent an MVP room for personal use, //= or for a party or guild. //===== Additional Comments: ================================= //= 1.0 First version, edited. [Euphy] //============================================================ prontera,148,174,5 script DB Room Manager 4_F_RUSGREEN,{ mes "[^EFCC00 DB Room Manager ^000000]"; mes "How are thing with you?", " "; mes "I offer two types of DB Room. Choose what best suits your need."; switch(select("Public DB Room", "Private DB Room", "Buy Branches", "Cancel")) { case 1: .@room = select( "Enter Room 1 ["+ getmapusers("06guild_01") +"]", "Enter Room 2 ["+ getmapusers("06guild_02") +"]", "Enter Room 3 ["+ getmapusers("06guild_03") +"]", "Enter Room 4 ["+ getmapusers("06guild_04") +"]"); warp "06guild_0"+ .@room, 0,0; end; case 2: clear; mes "[^EFCC00 DB Room Manager ^000000]"; if ( getvariableofnpc( .rentcost, "DB Room Helper" ) ) mes "The cost to rent a room for "+ getvariableofnpc( .timeout, "DB Room Helper" ) +" minutes is "+ callfunc("F_InsertComma", getvariableofnpc( .rentcost, "DB Room Helper" ) ) +"z."; else mes "You can only use the room for only "+ getvariableofnpc( .timeout, "DB Room Helper" ) +" minutes."; mes " "; .@menu$ = ""; for ( .@i = 5; .@i <= 8; .@i++ ) { if ( getvariableofnpc( .renttime[.@i], "DB Room Helper" ) ) { //mes "Room #"+ .@i +" = "+ .color$[ .type[.@i] ] + .whoinuse$[.@i] +"^000000"; .@menu$ += "Enter Room " + .@i + " ["+ .color$[ .type[.@i] ] + .whoinuse$[.@i] +"^000000]:"; } else .@menu$ += "Rent Room " + .@i + ":"; } next; .@room = select(.@menu$)+4; if ( getvariableofnpc( .renttime[.@room], "DB Room Helper" ) ) { if ( .inuseid[.@room] == getcharid( .type[.@room] ) ) { warp "06guild_0"+ .@room, 0,0; close; } else { mes "[^EFCC00 DB Room Manager ^000000]"; mes "This room is reserved for "; mes .color$[ .type[.@room] ] + .whoinuse$[.@room] +"^000000."; mes "Please select another."; close; } } mes "[^EFCC00 DB Room Manager ^000000]"; mes "Reserve this room for..."; next; .@type = select( "For my party members", "For my guild members", "For personal account use" ); if ( !getcharid(.@type) ) { mes "[^EFCC00 DB Room Manager ^000000]"; mes "You do not own a "+( ( .@type == 1 )? "Party" : "Guild" )+"."; close; } else if ( Zeny < getvariableofnpc( .rentcost, "DB Room Helper" ) ) { mes "You don't have enough zeny to rent a room."; close; } else if ( getvariableofnpc( .renttime[.@room], "DB Room Helper" ) ) { mes "[^EFCC00 DB Room Manager ^000000]"; mes "I'm sorry, somebody else has already registered this room faster than you."; close; } for ( .@i = 1; .@i <= 8; .@i++ ) { if ( ( getvariableofnpc( .renttime[.@i], "DB Room Helper" ) ) && .@type == .type[.@i] && getcharid(.@type) == .inuseid[.@i] ) { mes "[^EFCC00 DB Room Manager ^000000]"; mes "You already rented Room#"+ .@i +". Use that room instead."; close; } } set .type[.@room], .@type; set .inuseid[.@room], getcharid(.@type); set .whoinuse$[.@room], strcharinfo( ( .@type == 3 )? 0 : .@type ); Zeny -= getvariableofnpc( .rentcost, "DB Room Helper" ); warp "06guild_0"+ .@room, 0,0; killmonsterall "06guild_0"+ .@room; donpcevent "Private DB Room Helper#"+ .@room +"::OnEnterMap"; close; case 3: close2; callshop "DB_Room#branch", 1; end; case 4: close; } OnInit: .color$[1] = "^EE8800"; // party color .color$[2] = "^70CC11"; // guild color .color$[3] = "^0000FF"; // account color end; } - script DB Room Helper -1,{ if (.renttime[ atoi( strnpcinfo(2) ) ]) npctalk "Time left: " + callfunc( "Time2Str", .renttime[ atoi( strnpcinfo(2) ) ] + .timeout * 60 ),strnpcinfo(0),bc_self; switch ( select(.menu$ + "Leave this room:" + (compare(strnpcinfo(1),"Private")?"Give up this room":"") ) ) { case 1: if ( mobcount( "this","" ) ) { npctalk "I cannot offer heal service when there are monsters around.",strnpcinfo(0),bc_self; end; } sc_end SC_STONE; sc_end SC_SLOWDOWN; sc_end SC_FREEZE; sc_end SC_SLEEP; sc_end SC_CURSE; sc_end SC_SILENCE; sc_end SC_CONFUSION; sc_end SC_BLIND; sc_end SC_BLEEDING; sc_end SC_DECREASEAGI; sc_end SC_POISON; sc_end SC_HALLUCINATION; sc_end SC_STRIPWEAPON; sc_end SC_STRIPARMOR; sc_end SC_STRIPHELM; sc_end SC_STRIPSHIELD; sc_end SC_CHANGEUNDEAD; sc_end SC_ORCISH; sc_end SC_BERSERK; sc_end SC_SKE; sc_end SC_SWOO; sc_end SC_SKA; percentheal 100,100; specialeffect2 EF_HEAL; npctalk "You are completely healed.",strnpcinfo(0),bc_self; end; case 2: npctalk "Are you sure you want to leave this room?",strnpcinfo(0),bc_self; if ( select( "No, stay here","Yes, leave now") == 2 ) warp .respawnmap$, .respawnx, .respawny; end; case 3: if ( getmapusers( strcharinfo(3) ) > 1 ) { npctalk "There are still some players in this room. Make sure you are the last member in this room to use this option.",strnpcinfo(0),bc_self; end; } mes "[DB Room Helper]"; mes "Are you sure you want to give up this room?"; if ( .rentcost ) mes "You will need to pay again to enter this room."; next; if ( select( "Yes", "No" ) == 2 ) close; awake strnpcinfo(0); end; } close; OnEnterMap: .@id = atoi( strnpcinfo(2) ); .renttime[.@id] = gettimetick(2); sleep .timeout * 60000; mapwarp strnpcinfo(4), .respawnmap$, .respawnx, .respawny; .renttime[.@id] = 0; killmonsterall strnpcinfo(4); end; OnInit: if ( !getstrlen( strnpcinfo(2) ) ) { // Config --------------------------------------------------------------------------------------- // Room rental time, in minutes. // When time runs out, all players inside the room will be kicked out. // Do NOT set this to zero! .timeout = 60; .rentcost = 100000; // Zeny cost for renting a room (0 = free) // Options setting inside the room .@menu[1] = 1; // Turn Heal option On/Off // Respawn point when players leave the room set .respawnmap$, "prontera"; set .respawnx, 150; set .respawny, 174; // Config Ends ------------------------------------------------------------------------ if ( !.timeout ) set .timeout, 60; .menu$ = ( .@menu[1] ? "Heal" : "" ) +":" ; } else { mapannounce strnpcinfo(4), "An administrator has refreshed the server. Please re-register this room.", bc_map; mapwarp strnpcinfo(4), .respawnmap$, .respawnx, .respawny; } end; } - shop DB_Room#branch -1,604:100000,12103:10000000 06guild_01,49,49,4 duplicate(DB Room Helper) DB Room Helper#1 4_F_RUSGREEN 06guild_02,49,49,4 duplicate(DB Room Helper) DB Room Helper#2 4_F_RUSGREEN 06guild_03,49,49,4 duplicate(DB Room Helper) DB Room Helper#3 4_F_RUSGREEN 06guild_04,49,49,4 duplicate(DB Room Helper) DB Room Helper#4 4_F_RUSGREEN 06guild_05,49,49,4 duplicate(DB Room Helper) Private DB Room Helper#5 4_F_RUSGREEN 06guild_06,49,49,4 duplicate(DB Room Helper) Private DB Room Helper#6 4_F_RUSGREEN 06guild_07,49,49,4 duplicate(DB Room Helper) Private DB Room Helper#7 4_F_RUSGREEN 06guild_08,49,49,4 duplicate(DB Room Helper) Private DB Room Helper#8 4_F_RUSGREEN 06guild_01 mapflag nowarpto 06guild_02 mapflag nowarpto 06guild_03 mapflag nowarpto 06guild_04 mapflag nowarpto 06guild_05 mapflag nowarpto 06guild_06 mapflag nowarpto 06guild_07 mapflag nowarpto 06guild_08 mapflag nowarpto 06guild_01 mapflag nomemo 06guild_02 mapflag nomemo 06guild_03 mapflag nomemo 06guild_04 mapflag nomemo 06guild_05 mapflag nomemo 06guild_06 mapflag nomemo 06guild_07 mapflag nomemo 06guild_08 mapflag nomemo 06guild_01 mapflag noteleport 06guild_02 mapflag noteleport 06guild_03 mapflag noteleport 06guild_04 mapflag noteleport 06guild_05 mapflag noteleport 06guild_06 mapflag noteleport 06guild_07 mapflag noteleport 06guild_08 mapflag noteleport 06guild_01 mapflag nosave SavePoint 06guild_02 mapflag nosave SavePoint 06guild_03 mapflag nosave SavePoint 06guild_04 mapflag nosave SavePoint 06guild_05 mapflag nosave SavePoint 06guild_06 mapflag nosave SavePoint 06guild_07 mapflag nosave SavePoint 06guild_08 mapflag nosave SavePoint 06guild_01 mapflag nopenalty 06guild_02 mapflag nopenalty 06guild_03 mapflag nopenalty 06guild_04 mapflag nopenalty 06guild_05 mapflag nopenalty 06guild_06 mapflag nopenalty 06guild_07 mapflag nopenalty 06guild_08 mapflag nopenalty
    1 point
  26. - script motd -1,{ OnPCLoginEvent: announce "EXP - Base: "+(getBattleFlag("base_exp_rate")/100)+"% / Job: "+(getBattleFlag("job_exp_rate")/100)+"%"+"\n"+"Drop - General: "+(getBattleFlag("item_rate_common")/100)+"% Cards: "+(getBattleFlag("item_rate_card")/100)+"%",bc_self; end; }
    1 point
  27. Let me know if you have any issue, suggestion or ideas for it. Glad it could help you out.
    1 point
  28. @PsyOps and @Sapito Sucio you are the best!!!
    1 point
  29. 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
  30. - We added Shiba BEP20 Token to payments gateway If you have any inquiries, please let us know
    1 point
  31. 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
  32. Oh nice! I'm glad you were able to resolve it.
    1 point
  33. 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! LINK TO FILE: https://mega.nz/file/tGFCxRSL#y5S8uLWw0cMCrLt059ycmZSeeFY1oLYTSVJwa0BoEWs [DONE] 1st class 2nd class advanced class 3rd class 3rd japan edition class 4th class latest expanded classes previous versions of some classes custom extended classes The total number of sprites in the pack: all classes from novice to 4th class (with different types of weapons) x 3 official color sets = 600 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
    1 point
  34. Hi again, can you add minimaps like ayothaya and amatsu dungeon ? There's a quick way to make minimaps with latest GRF Editor.
    1 point
  35. This is still working since I add to to my local server few days ago. A "solution" found for the window not being closed, is to run clif_refresh which does same than @refresh I tried many ways but nothing worked, just that..
    1 point
  36. 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
  37. If you're looking for something clientside there are various launchers with some serverside communication. For example rgzlauncher. You'd need to send a custom packet/message to the launcher which exists at the same time as the client and then run the application from that launcher. You could also just create your own launcher which does something similar.
    1 point
  38. Project will expire in 11 days and 5 hours

    Our monthly fees: Web Hosting ($32) VPS Backup Drive ($13) 200GB Offsite NAS Sendgrid SMTP Relay ($10) So you all get the emails you're supposed to. Misc software renewals ($5) Forum apps and plugins that require license renewal every 6 months are broken down to a monthly value. There are other costs for back-end services which are specifically sponsored by individual members of the rAthena project so do not require community crowdfunding.
    1 point
  39. Check if you can download kRO_FullClient_20230404.zip --- https://drive.google.com/file/d/1ceW09_uIishuOTaneLhxVJjBax5Qz1OP/view?usp=sharing
    1 point
  40. It seemed interesting, so I took a bit of everybody's work and here is my attempt with a novice. ➡ Also, my take on asking for a release. It's basically won't happen, for several reasons : Rendering issue: While the sprites can be used in 3D space (it's simply using UV coordinates, so it's basically free), the UI doesn't support scaling whatsoever; your characters will stay giant in status and skill windows, it's not negotiable. Performances: My novice has height time more pixels than the original sprite and 4 times more colors. I'm sure I could write a tool to reduce the color numbers, but it wouldn't change the fact that crossing through Prontera (or whatever is your capital city) with this kind of sprites would make the vram requirement explode, possibly beyond the 32 bit limitation of the client. And I'm not even talking about the palette system breaking. Reality check: Would you even see it? This is a 1080p screenshot of RO, with my upscaled novice right beside a real in game novice. Can you honestly see the difference? Probably not a first glance. So, beside higher resolution (1440p and 4k, basically) or in a more zoomed in scenario, this doesn't really bring much to the table. It's just a nice exercise to learn a bit about AI upscaling, I spent the whole day learning, and I'm quite satisfied with the result for a total noob.
    1 point
  41. Olá a todos! por muito tempo me dediquei ao ragnarok, aprimorando-o de alguma forma e depois de vários anos ganhei experiência de todos os lados, consigo entender o cliente perfeitamente, modificar feitiço entre tantas outras coisas muito legais, no final decidi criar o meu Brinco com todas as coisas que aprendi, e hoje está em desenvolvimento, mas hoje colocarei aqui a maior vitrine de todas as coisas que terminei ou converti para RO. aqui você vai encontrar sprites, monstros, efeitos e outros .. alguns eu fiz a pedido de algum cliente outros foram feitos só para o meu jogo. Efeitos: Tags: Monstros: Hp Bar custom ? Efeitos de LevelUp: Temas de danos: Itens / Auras: Asas 3d Outros: Vou postar mais coisas legais! obrigado
    1 point
  42. Version 1.0.0

    446 downloads

    Well I searched this script a lot but I did not find any free, I found another on another site made by CarlosKiller, but for another emulator, so I adapted it to rathena. It has 2 script, one in English and one in Portuguese. Modifications made by me: Add item: A category has been added, a protection not to add the same item twice, after adding an item you will be asked if you want to add another item and at the end you will be asked if you want to do @reloaditemdb. Category: For example, 0 ~ 8 if you enter 9 you will receive a message stating that there is no such category and will ask you to retype the category. Delete item: The items in the store with the id appear in the list, making it easier to delete the desired item. Reload CashShop: After adding or removing an item in the cash shop is necessary to upgrade the store and must be logged in to be able to see the changes. It really took a lot of work, I hope you enjoy it. Note: I am not the creator of this script just adapted and modified many things in it to be compatible with rAthena. Note2: If it is allowed to put the original script link, let me know that post here. Below is the original script without modification. (remembering that does not work in rathena this script) There is a function that I removed, because I could not adapt correctly, that you could see the store items in npc, I was able to modify but when removing some item, he did not remove from the store, only giving restart, and when updating the store doubled the items as well.
    Free
    1 point
  43. @Ahoy if u enabled VIP SYSTEM ... or conf/login_athena
    1 point
  44. Version 1.0

    9527 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
    1 point
  45. Version 1.0.2

    8887 downloads

    ~ 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/
    Free
    1 point
  46. Version 1.1.0

    597 downloads

    This is an expansion to currently existing vending module. It allows listing of all vending items and filter list by item name. Installation: Download the file Extract it to addons folder of flux That's it. Click the Vending Info menu then click the List Items sub menu.
    Free
    1 point
  47. Version 1.0.0

    86 downloads

    Simple mobile responsive FluxCP theme. Includes: Header/Logo PSD Fonts PSDs for two homepage images Theme files for use with up-to-date FluxCP 6 Loading Screens using same background This theme is capable of using new ReCaptcha code. This theme is designed with ease of customisation in mind. Simply swap out the background image for a totally different feel to your site. This theme has been uploaded to rAthena under the @Files user and is available for a very low price. Sales generated under this user is kept by rAthena and not commission based.
    5.00 USD
    1 point
  48. Version 1.2

    2084 downloads

    Status Icon Included: Blind Stone Confusion Curse Sleep Poison Freeze Stun Silence Undead DPoison Click here to see the installation guide
    Free
    1 point
  49. Heya! WFIFOHEAD(fd, slen); WFIFOW(fd,0)=0xb4; WFIFOW(fd,2)=slen; WFIFOL(fd,4)=npcid; memcpy((char*)WFIFOP(fd,8), mes, slen-8); WFIFOSET(fd,WFIFOW(fd,2)); Let's say you want to send the message "hello", slen being 5 + 9 = 14. First call is obvious, sets the length of the packet. WFIFOW means "Write a Word to the socket (a Word is 2 bytes - uint16) at position 0", giving you the following raw output so far : 0xb4 0x00 - ... It is reversed because of the endianness, which is "always" in little-endian. WFIFOW(fd,2), same as above, giving you (14 = 0x0E) : 0xb4 0x00 - 0x0E 0x00 - ... WFIFOL means "Write a Long to the socket (a Long is 4 bytes - uint32) at position 4", giving you the following raw output so far (let's say the npcid is 297520349 = 0x11BBCCDD) : 0xb4 0x00 - 0x0E 0x00 - 0xDD 0xCC 0xBB 0x11 - ... WFIFOP retrieves the char pointer for the writing socket buffer at the specified position. memcpy simply copies the content of mes ("hello") to that position. Giving you... 0xb4 0x00 - 0x0E 0x00 - 0xDD 0xCC 0xBB 0x11 - 0x48 0x65 0x6c 0x6c 0x6f 0x00 WFIFOSET sets the buffer to the correct position to send it (WFIFOW actually returns a pointer to the position, so in this case it's handy because it returns slen; then again it's a bit pointless, it could have just been "WFIFOSET(fd,slen);" and it would be clearer). /// 00b4 <packet len>.W <npc id>.L <message>.?B This means 0x00b4 is your packet id, followed by a Word (packet length), followed by a Long (npc id), followed by a variable number of bytes (your message). 0x00b4,-1 That means the size of the packet is unknown/variable (indeed, the message can be of any size). 0x00b5,6 That means the size of the packet is always 6 bytes. In this case, the first 2 bytes are the packet ID, the next 4 bytes are the npc id, or : 00b5 <npc id>.L The packet field can be used for something like... 0x00b5,6,clif_scriptnext,2; - this can help you retrieve the positions more easily. For example : packet_db[sd->packet_ver][RFIFOW(fd,0) /* packet id */].pos[0] // pos[0] here is the "2" you defined earlier. Some packet_ver defines different indexes for the same packet, that's why it's useful not to use pre-defined values. To write a new packet, you have the right idea. Find a packet not used, go in a high range to avoid further conflicts. Also there's a packet limit, not really sure where it's defined on rAthena though.
    1 point
×
×
  • Create New...