Jump to content

adeptfrog

Members
  • Posts

    15
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by adeptfrog

  1. Hello guys,

    This is my very first map created for Ragnarok Online. I've decided to create the latest DotA 2 map since there's really no updated version of a DotA 2 map elsewhere (at least when I searched 😅). This map is perfect as a battleground map or for any team-based PvP. It needs a custom script capable of controlling battleground units and events if you really want to mimic MOBA gameplay though.

     

    Hope you like it! 😄

    screenshot.png

    blue.png

    bot.png

    bot2.png

    mid.png

    red.png

    top.png

    top2.png

    • Upvote 2
    • Love 1
    • Like 1
  2. Equipment Upgrade System


    A multi-level upgrade system for your equipment similar to ROM:EL equipment upgrades. Easily manage the upgrade bonuses of your equipment without duplicating them. The only downside is, the upgrade system doesn't support any 4 slotted equipment.

    For easy explanation, we will go with 2 equipment samples:
    Equipment 50103 (Costume Fate Magic Book) and Equipment 50107 (Costume Fate Wand)

    How to Use:

    Go and edit your file equipment_upgrades.txt

    1. You add your upgrade bonuses at section II. EQUIPMENT BONUSES and list the item bonus just like the 2 samples.
    2. Enumerate all the requirements for upgrading the equipment at section III. EQUIPMENT REQUIREMENTS and list it just like the 2 samples.
    (3.) Optional. If you are planning to add more than 5 upgrades or if you modified the item ID of enchant stones, you must also update the section I. EQUIPMENT UPGRADE LEVEL MODIFIERS.

    Go and edit your file item_db.yml

    1. You must add this first:

    # UPGRADE ENCHANT CARD SLOTS
      - Id: 50108
        AegisName: S_Upgrade_I
        Name: Upgrade - I
        Type: Card
        SubType: Enchant
      - Id: 50109
        AegisName: S_Upgrade_II
        Name: Upgrade - II
        Type: Card
        SubType: Enchant
      - Id: 50110
        AegisName: S_Upgrade_III
        Name: Upgrade - III
        Type: Card
        SubType: Enchant
      - Id: 50111
        AegisName: S_Upgrade_IV
        Name: Upgrade - IV
        Type: Card
        SubType: Enchant
      - Id: 50112
        AegisName: S_Upgrade_V
        Name: Upgrade - V
        Type: Card
        SubType: Enchant

    (2.) Optional. If you are planning to add more than 5 upgrades or if you modified the item ID of enchant stones, you must add/update the necessary item_db entry for those just like the above entries. (with the correct enchantIDs of course)
    3. IMPORTANT: Every time you add an equipment upgrade bonus to an item, you must also add this line: callfunc("GetUpgradeBonus");

    Here are some sample entry using the 2 equipment samples for your reference:

    - Id: 50103
        AegisName: C_Fate_MagicBook
        Name: Costume Fate Magic Book
        Type: ShadowGear
        Weight: 100
        View: 115
        Jobs:
          Sage: true
        Locations:
          Shadow_Weapon: true
        Script: |
          bonus bAspdRate,50;
          bonus2 bSubEle,Ele_Ghost,5;
          bonus3 bAutoSpell,"MG_THUNDERSTORM",10,200;
          callfunc("GetUpgradeBonus");
      - Id: 50107
        AegisName: C_Fate_Wand
        Name: Costume Fate Wand
        Type: ShadowGear
        Weight: 100
        View: 119
        Jobs:
          SoulLinker: true
        Locations:
          Shadow_Weapon: true
        Script: |
          bonus bAspdRate,50;
          bonus2 bSubEle,Ele_Neutral,5;
          bonus2 bMagicAtkEle,Ele_Dark,5;
          callfunc("GetUpgradeBonus");

    Lastly, go and edit your file iteminfo.lua

    1. You must add this first:

    [50108] = {
            unidentifiedDisplayName = "Upgrade - I",
            unidentifiedResourceName = "Wolf_Orb_M_Counter_1",
            unidentifiedDescriptionName = { "" },
            identifiedDisplayName = "Upgrade - I",
            identifiedResourceName = "Wolf_Orb_M_Counter_1",
            identifiedDescriptionName = { "^0066FFThis equipment is currently at Upgrade - I^000000" },
            slotCount = 0,
            ClassNum = 0,
            costume = false
        },
        [50109] = {
            unidentifiedDisplayName = "Upgrade - II",
            unidentifiedResourceName = "Wolf_Orb_Mag_1",
            unidentifiedDescriptionName = { "" },
            identifiedDisplayName = "Upgrade - II",
            identifiedResourceName = "Wolf_Orb_Mag_1",
            identifiedDescriptionName = { "^404DD9This equipment is currently at Upgrade - II^000000" },
            slotCount = 0,
            ClassNum = 0,
            costume = false
        },
        [50110] = {
            unidentifiedDisplayName = "Upgrade - III",
            unidentifiedResourceName = "Wolf_Orb_Robust_1",
            unidentifiedDescriptionName = { "" },
            identifiedDisplayName = "Upgrade - III",
            identifiedResourceName = "Wolf_Orb_Robust_1",
            identifiedDescriptionName = { "^8033B3This equipment is currently at Upgrade - III^000000" },
            slotCount = 0,
            ClassNum = 0,
            costume = false
        },
        [50111] = {
            unidentifiedDisplayName = "Upgrade - IV",
            unidentifiedResourceName = "Wolf_Orb_Str_1",
            unidentifiedDescriptionName = { "" },
            identifiedDisplayName = "Upgrade - IV",
            identifiedResourceName = "Wolf_Orb_Str_1",
            identifiedDescriptionName = { "^BF1A8CThis equipment is currently at Upgrade - IV^000000" },
            slotCount = 0,
            ClassNum = 0,
            costume = false
        },
        [50112] = {
            unidentifiedDisplayName = "Upgrade - V",
            unidentifiedResourceName = "Wolf_Orb_Hp_1",
            unidentifiedDescriptionName = { "" },
            identifiedDisplayName = "Upgrade - V",
            identifiedResourceName = "Wolf_Orb_Hp_1",
            identifiedDescriptionName = { "^FF0066This equipment is currently at Upgrade - V^000000" },
            slotCount = 0,
            ClassNum = 0,
            costume = false
        },

    (2.) Optional. If you are planning to add more than 5 upgrades or if you modified the item ID of enchant stones, you must add/update the necessary iteminfo entry for those just like the above entries. (with the correct enchantIDs of course)
    3. Then add your equipment upgrade description. Here are some sample entry using the 2 equipment samples for your reference:

    [50103] = {
            unidentifiedDisplayName = "Costume Fate Magic Book",
            unidentifiedResourceName = "Fate_MagicBook",
            unidentifiedDescriptionName = { "Unknown Item, can be identified by using a ^6666CCMagnifier^000000." },
            identifiedDisplayName = "Costume Fate Magic Book",
            identifiedResourceName = "Fate_MagicBook",
            identifiedDescriptionName = {
                "Slightly increase attack speed",
                "+5% Resistance to Ghost element",
                "Adds a chance of autocasting Thunder Storm when physically attacking",
                "+1% Matk per ^0000FFupgrade^000000",
                "+1 Allstats per ^0000FFupgrade^000000",
                "________________________",
                "^0000FF[Upgrades]",
                "^0066FFI: +2% Ignore Mdef",
                "^404DD9II: +4 Attack Range",
                "^8033B3III: Adds a chance of autocasting Heaven's Drive when physically attacking",
                "^BF1A8CIV: +3% Ignore Mdef",
                "^FF0066V: Has a low chance of autocasting Spider Web when physically attacking, +5% Ghost Resistance",
                "^000000________________________",
                "Class:^6666CC Costume Weapon^000000",
                "Weight:^009900 10^000000",
                "Jobs:^6666CC Sage^000000"
            },
            slotCount = 0,
            ClassNum = 115,
            costume = true
        },
        [50107] = {
            unidentifiedDisplayName = "Costume Fate Wand",
            unidentifiedResourceName = "Fate_Wand",
            unidentifiedDescriptionName = { "Unknown Item, can be identified by using a ^6666CCMagnifier^000000." },
            identifiedDisplayName = "Costume Fate Wand",
            identifiedResourceName = "Fate_Wand",
            identifiedDescriptionName = {
                "Slightly increase attack speed",
                "+5% Resistance to Neutral element",
                "+5% Shadow Magical DMG",
                "+1% Matk per ^0000FFupgrade^000000",
                "+1 Allstats per ^0000FFupgrade^000000",
                "________________________",
                "^0000FF[Upgrades]",
                "^0066FFI: +5% Shadow Magical DMG",
                "^404DD9II: +5% Demi-Human Resistance",
                "^8033B3III: +10% Shadow Magical DMG",
                "^BF1A8CIV: Reduces any reflected damage from enemies by 50%",
                "^FF0066V: +20% Ignore Mdef, +5% Neutral Resistance",
                "^000000________________________",
                "Class:^6666CC Costume Weapon^000000",
                "Weight:^009900 10^000000",
                "Jobs:^6666CC Soul Linker^000000"
            },
            slotCount = 0,
            ClassNum = 119,
            costume = true
        },

    That's basically it! You may implement it to an existing equipment to make it more relevant and usable 🙂

    DM me on Discord for questions and clarification.


    • Submitter
    • Submitted
      01/07/25
    • Category
    • Video
    • Content Author
      adeptfrog

     

  3. Guild Package Manager


    An automated guild package manager that will help your server manage the distribution of guild package. Currently the script checks the following:

    1. Must be a new guild on the server
    2. Must have at least {.@min-1} Guild Members ({.@min} including the Guild Leader)
    3. Guild Members must be online
    4. Guild Members must have a unique IP (duals are not counted and won't be receiving any rewards) {.@bypassipcheck == 0}
    5. Both Guild Leader and Guild Members must be at their maximum level {.@blvl}/{.@jlvl}
    6. Both Guild Leader and Guild Members must not participated on any Guild Recruitment on the past

    Configurations:
    .@min = 5; // Minimum Guild Count Requirement
    .@blvl = 255; // Required Base Level
    .@jlvl = 120; // Required Job Level
    .@bypassipcheck = 0; // Bypass IP Check

    Notes:
     » All contents must be Guild-bounded
     » Sharable within the guild by using @gstorage or trading guildmates
     » Guildmates who left the guild will have their guild-bounded items automatically transfer into @gstorage (including compounded cards)

    Example Packages: (feel free to modify the packages in functions getrlp, getrap, getrwp, always use getitembound/getitembound2 with Bound_Guild flag)
     » Recruitment Leader Pack (for Guild Leader only) - 1x BTS Armor Set
     » Recruitment Armor Pack (for Guild Members only) - 1x Quest Valkyrie Set of choice
     » Recruitment Weapon Pack (for All) - 1x +7 Custom Weapon of choice (Quest Weapon)

    ItemDB Packages:

    - Id: {YOUR .@rlpid ID HERE}
      AegisName: Recruitment_Leader_Pack
      Name: Recruitment Leader Pack
      Type: Delayconsume
      Buy: 2
      Script: |
        callfunc "getrlp";
    - Id: {YOUR .@rapid ID HERE}
      AegisName: Recruitment_Armor_Pack
      Name: Recruitment Armor Pack
      Type: Delayconsume
      Buy: 2
      Script: |
        callfunc "getrap";
    - Id: {YOUR .@rwpid ID HERE}
      AegisName: Recruitment_Weapon_Pack
      Name: Recruitment Weapon Pack
      Type: Delayconsume
      Buy: 2
      Script: |
        callfunc "getrwp";

     

  4. Hello, so I was implementing bHPVanishRate on my high rate server with custom items for PvP but the problem is it also works on monsters/MVP. Then I replaced it with bHPVanishRaceRate which specifies what race does this effect works only which is exactly what I wanted. But the problem with bHPVanishRaceRate is all your damage is basically locked to n% of the target's HP. The weird thing about these two are bHPVanishRate doesn't reveal the vanished HP on your screen while it display your own damage. On the other hand, bHPVanishRaceRate replaces your own damage with the vanished HP instead.

     

    The outcome I wanted is the additive damage from bHPVanishRate ([n% target's HP] + [your own damage[) but only works on players. I hope someone can help me with this, Thank you!

     

    For better understanding here are some videos of the test: (lower damage is bHPVanishRate but HP vanish also works, additive to your own damage; higher damage is bHPVanishRaceRate which is displayed as your damage but disregards all your own damage)

  5. On 4/5/2024 at 12:28 AM, Terran Bear said:

    I also share the same question. Link please?
     

    There's an alternate method for this, you will need to use bodystyle instead of changebase. With that, you will also need to add a lot of sprites on your grf under costume_1, costume_2, etc..., downside is the palettes are broken. I made a third and fourth job costumes with this method, pm me if you still want it 😉

  6. On 6/11/2020 at 6:44 AM, sader1992 said:

    line 97

    
    for (.@i = 0; .@i < @inventorylist_count; ++.@i) {
    		if (@inventorylist_id[.@i] == .@refineitemid && !@inventorylist_equip[.@i] && @inventorylist_card1[.@i] == 0 && @inventorylist_refine[.@i] == 0) {
    			delitem @inventorylist_id[.@i], 1;
    		}
    	}

    this could delete more that what it need to refine an item , you see it will delete all the items , for example , you need 5 to refine and you have 10 , the 10 will be deleted

     

    also like 4 (.@safe = 10;)is not used in the script

    That was some major flaw on my end, its now fixed, Thank you so much for this!

  7. Advanced Safe Refiner


    Just sharing my own safe refiner NPC that mimics the Safe Refinement System of ROM:EL. As the item increases its refinement level, the materials required will grow exponentially as it requires the copy of the item you are refining based on its next refinement level. The NPC can only refine the item if its next refinement process is not safe anymore for Hollgrehenn.

    Settings:

    .@npc_name$ = Name of your NPC

    .@price - The required zeny for refining.

    .@canfail - Refining can fail but keeps the target equipment and stays at the current refinement level (0 = disabled; 1 = enabled)

    .@same - Check if the materials has the same refinement level (0 = disabled; 1 = enabled)

    .@startsafe - Start counting materials after the safe refine on Hollgrehenn (0 = disabled; 1 = enabled)

    .@mineralcostmultiplier - The Oridecon/Elunium required per refine based on [.@startsafe] settings (0 = disabled)

    [ START SAFE TABLE ]
    At Weapon Lvl 4 / Armor Lvl 1
    +4 -> +5 = 1 copy
    +5 -> +6 = 2 copies
    +6 -> +7 = 3 copies
    +7 -> +8 = 4 copies
    +8 -> +9 = 5 copies
    +9 -> +10 = 6 copies


     

    • Upvote 1
  8. VPatcher


    Just sharing my own Ragnarok Patcher for your server. A simple Ragnarok Client Patcher with rsumerge GRF Merge support powered by .NET Framework written in C#.

    INSTRUCTION
    1. Serve your files using the built-in php server on the server
    2. Create your new patch folder inside "patches" folder, add "list.txt" inside the newly created patch folder and enumerate all the files inside the folder with the following format:

    [File Name][tab][File Path]([tab][Patch Target])[newline]

    (parentheses indicates that the argument is optional, do not include the characters on formatting)
    (even though [File Path] is required, leave blank after the tab if the path is the root)

    Ex: RagnarokOnline.exe[tab][newline]
         OptionInfo.lua[tab]savedata/[newline]
         iteminfo.lua[tab]System/[newline]
         patch.grf[tab][tab]mygrf.grf[newline]

    Important Note: When naming your patch folders, it is important to consider its alphabetical order. With this, the last patch folder detected will override all the patches.

    3. Replace the background skin of the WinForm in the Designer tab


    • Submitter
    • Submitted
      05/29/2020
    • Category
    • Video
    • Content Author
      dizonivan11

     

    • Like 1
×
×
  • Create New...