Jump to content

KirieZ

Core Developers
  • Content Count

    211
  • Joined

  • Last visited

  • Days Won

    17

Reputation Activity

  1. Upvote
    KirieZ got a reaction from bWolfie in Hercules Versioning and Available Features   
    Well, the short answer is: It depends.
     
    But let's go for the long answer:
     
    RO is a game that uses client/server model, and the server (in our case, Hercules) is the one which holds most of the game logic.
     
    What this mean is, pretty much everything only happens in the game because the server tells the client to do so. To name a few examples:
    - When you click to walk, Hercules is the one saying the client it can walk, and Hercules is the one letting other knows the player is walking
    - A monster spawn only happens because Hercules is creating it and just letting the client knows the monster is there
    - An attack (and a skill) only happens because Hercules calculated it and told the client that it happened
    - A NPC is only shown in the screen because Hercules created it and told the client about its existence
    - A Quest is received by the player because, for example, a NPC in Hercules added a quest to the player, and thus Hercules told the client about that
     
    So, as you can see, pretty much everything requires something on Hercules side to work.
     
    The client also plays some part on this:
    - There are hardcoded limits of which IDs can be used
        - For example, an item which has an ID > 32k would only work on clients that supports IDs above 32k
        - Certain IDs for monsters/NPCs/etc won't be properly recognized in certain client versions
    - There are some hardcoded logic on how skills works or shows up
       - For example, the old, ground-based effect of bard/dancer performances doesn't show in 2019 clients and newer (unless you use a patch to restore the old code in client). The ground effect would still happen (Because Hercules is controlling it), but the player would see nothing in the ground.
    - UI elements are part of the client, so an older client may not have certain windows
       - But depending on the window, Hercules also needs to implement the network code to allow that window to work (e.g. Achievements, RoDEX, Equipment switch, etc)
     
    Going back to your example about 4th jobs. Having a 2022 client means:
    1. The visual effect for the 4th job skills are there
    2. If the server says your job is one of the 4th jobs, you will see the sprite and it will be treated as a player sprite
    3. You can see the new attributes window
    4. You can see the new AP bar
     
    But:
    1. You don't have job change quests (Hercules must have the NPCs, which we don't as of April/2024)
    2. You don't have a working skill tree and skills (Hercules must have the skill trees and skills coded, which we don't as of April/2024)
    3. You don't have the effect of the new attributes being applied to your damage (Hercules must have new formulas for it, which we don't as of April/2024)
     
    So:
    Base client: kRO 2023 08 04
    This means your resource files (sprites, luas, textures, maps, etc. the "visual" content and config files are from how kRO looked like in 2023-08-04).
     
    For example, if a new hat is released in 2023-05, you will have the .spr file in your data.grf (but you can't get it in game if Hercules doesn't have it)
     
    Client exe: 2022-04-06_Ragexe_1648707856
    This means that your client will process client sided things as kRO did in 2022-04-06, this means it will be affected by client limitations from this date, and it will only load files that were expected at that time.

    For example:
    - if a new UI was released in 2023, you won't see it in a 2022 client, because the code was not there yet. (even if you have the images for that UI in your data.grf, you don't have the code to actually use them)
    - if there is a new map format released in 2023 (map format meaning the structure of the files in the data.grf), this map file won't work here. On the other hand, if a map was released in 2023 using a structure that is compatible with a 2022 client, you can use it just fine.
     
    Generally, having too different dates between Client exe and Base client may give you issues, because:
    1. You have incompatible lua files (usually worked around by using translation projects)
    2. You have new resources that are not compatible with your client (usually worked around by replacing the files or avoiding certain things)
     
     
    Hercules: v2024.03
    This is Hercules release date. This just means this is the state of Hercules code as of March/2024.
     
    Hercules makes a new release every month, which may include bug fixes, new features, some custom code for something Hercules thinks is worth having, etc. You can see the changelog here: https://github.com/HerculesWS/Hercules/blob/stable/CHANGELOG.md
     
    This date has pretty much nothing to do with the other 2. The only thing that it may suggest is that a 2018 Hercules will probably not work with a 2020 client, because we couldn't even imagine what 2020 client would look like when developing code in 2018.
     
    But a 2024 Hercules doesn't mean it supports features from 2024 official servers, nor that a 2024 client would flawlessly work in Hercules. Currently, Hercules v2024.03 is a mix of content:
    1. NPC/quest/job/monsters wise, I think we are around kRO 2015
    2. Our client support is better, I think a 2022 client should work fine most of the time (some buttons won't work, though -- e.g. Equipment Switch is not there)
     
     
    Hope this clarifies a bit
  2. Like
    KirieZ got a reaction from Geras in Hercules Versioning and Available Features   
    You are welcome
     
    Regarding a roadmap, not really. We do track missing features and bugs in GitHub issues: https://github.com/HerculesWS/Hercules/issues
     
    There are some milestones regarding content, but they are more for organization purposes, as we don't have a roadmap like "We are trying to get X done next"
  3. Like
    KirieZ got a reaction from jasonch in Hercules wiki migrated to a new platform   
    Hello everyone,
     
    As you may already have seen from the 2024.03 release notes in GitHub ( https://github.com/HerculesWS/Hercules/releases/tag/v2024.03 ), Hercules' GitHub wiki has been moved to a new platform, powered by mkdocs and available at:
     
    https://docs.herc.ws/
     
     
    This change aims to make the Hercules documentation generally better since the mkdocs-powered documentation does bring a better navigation, search capabilities and editing options. With that we can, hopefully, cover the gap that many have felt after we switched from MediaWiki to GitHub Wiki, while also providing some extras (like the ability to easily have a local copy).
     
    With the new mkdocs-powered document, we have: (compared to GH Wiki)
    - A bit more control over the sections, no longer a single side bar with everything
    - Extended markdown syntax for editing docs content
    - Better searching, as results are shown as you type
    - It is now possible to properly include image in the docs, without workarounds
     
    Contributions are highly appreciated and should be made through Pull Requests to the new hercules-docs repository ( https://github.com/HerculesWS/hercules-docs ).
     
    You may find general guidance on how to run the docs locally and edit it in the Editing the Docs page ( https://docs.herc.ws/contributing/editing-the-docs/ )

    The content of the new repository was copied from the GitHub wiki (which was originally the MediaWiki content and had several contributions over the years), and reorganized into a few sections. Additionally, everything was converted to Markdown, so we should generally get an ok experience.
     
    The conversion of MediaWiki pages to Markdown was made through an automated tool (pandoc) so we should still expect some things to not be perfectly right, a few noticeable cases are:
    - Linking between pages are likely to be broken
    - Some syntax highlighting may not be in the most presentable format
    - Several images are still missing
     
    Fixing those will require manual work to replicate the images, update links, etc.
     
    Why not return to MediaWiki?
    This question has shown up a few times in our Discord, and I think it is worth linking to the topic when the move happened back then:
     
    TLDR; Maintaining MediaWiki together with IPB (our forum software) is complicated.
     
     
    Huge thanks to Haru for making this idea come true!
     
    Please let us know if you have questions, comments or suggestions for the new docs.
  4. Like
    KirieZ got a reaction from fiction in Hercules wiki migrated to a new platform   
    Hello everyone,
     
    As you may already have seen from the 2024.03 release notes in GitHub ( https://github.com/HerculesWS/Hercules/releases/tag/v2024.03 ), Hercules' GitHub wiki has been moved to a new platform, powered by mkdocs and available at:
     
    https://docs.herc.ws/
     
     
    This change aims to make the Hercules documentation generally better since the mkdocs-powered documentation does bring a better navigation, search capabilities and editing options. With that we can, hopefully, cover the gap that many have felt after we switched from MediaWiki to GitHub Wiki, while also providing some extras (like the ability to easily have a local copy).
     
    With the new mkdocs-powered document, we have: (compared to GH Wiki)
    - A bit more control over the sections, no longer a single side bar with everything
    - Extended markdown syntax for editing docs content
    - Better searching, as results are shown as you type
    - It is now possible to properly include image in the docs, without workarounds
     
    Contributions are highly appreciated and should be made through Pull Requests to the new hercules-docs repository ( https://github.com/HerculesWS/hercules-docs ).
     
    You may find general guidance on how to run the docs locally and edit it in the Editing the Docs page ( https://docs.herc.ws/contributing/editing-the-docs/ )

    The content of the new repository was copied from the GitHub wiki (which was originally the MediaWiki content and had several contributions over the years), and reorganized into a few sections. Additionally, everything was converted to Markdown, so we should generally get an ok experience.
     
    The conversion of MediaWiki pages to Markdown was made through an automated tool (pandoc) so we should still expect some things to not be perfectly right, a few noticeable cases are:
    - Linking between pages are likely to be broken
    - Some syntax highlighting may not be in the most presentable format
    - Several images are still missing
     
    Fixing those will require manual work to replicate the images, update links, etc.
     
    Why not return to MediaWiki?
    This question has shown up a few times in our Discord, and I think it is worth linking to the topic when the move happened back then:
     
    TLDR; Maintaining MediaWiki together with IPB (our forum software) is complicated.
     
     
    Huge thanks to Haru for making this idea come true!
     
    Please let us know if you have questions, comments or suggestions for the new docs.
  5. Like
    KirieZ got a reaction from kyeme in Hercules wiki migrated to a new platform   
    Hello everyone,
     
    As you may already have seen from the 2024.03 release notes in GitHub ( https://github.com/HerculesWS/Hercules/releases/tag/v2024.03 ), Hercules' GitHub wiki has been moved to a new platform, powered by mkdocs and available at:
     
    https://docs.herc.ws/
     
     
    This change aims to make the Hercules documentation generally better since the mkdocs-powered documentation does bring a better navigation, search capabilities and editing options. With that we can, hopefully, cover the gap that many have felt after we switched from MediaWiki to GitHub Wiki, while also providing some extras (like the ability to easily have a local copy).
     
    With the new mkdocs-powered document, we have: (compared to GH Wiki)
    - A bit more control over the sections, no longer a single side bar with everything
    - Extended markdown syntax for editing docs content
    - Better searching, as results are shown as you type
    - It is now possible to properly include image in the docs, without workarounds
     
    Contributions are highly appreciated and should be made through Pull Requests to the new hercules-docs repository ( https://github.com/HerculesWS/hercules-docs ).
     
    You may find general guidance on how to run the docs locally and edit it in the Editing the Docs page ( https://docs.herc.ws/contributing/editing-the-docs/ )

    The content of the new repository was copied from the GitHub wiki (which was originally the MediaWiki content and had several contributions over the years), and reorganized into a few sections. Additionally, everything was converted to Markdown, so we should generally get an ok experience.
     
    The conversion of MediaWiki pages to Markdown was made through an automated tool (pandoc) so we should still expect some things to not be perfectly right, a few noticeable cases are:
    - Linking between pages are likely to be broken
    - Some syntax highlighting may not be in the most presentable format
    - Several images are still missing
     
    Fixing those will require manual work to replicate the images, update links, etc.
     
    Why not return to MediaWiki?
    This question has shown up a few times in our Discord, and I think it is worth linking to the topic when the move happened back then:
     
    TLDR; Maintaining MediaWiki together with IPB (our forum software) is complicated.
     
     
    Huge thanks to Haru for making this idea come true!
     
    Please let us know if you have questions, comments or suggestions for the new docs.
  6. Like
    KirieZ got a reaction from dnote98 in [Release] Char Creation - remove Doram leftovers   
    It is in data/luafiles514/lua files/service_korea (_korea may be something else depending on how your client is patched and how your clientinfo looks like, but usually it is a country name)
  7. Like
    KirieZ got a reaction from 0x33 in Custom Headgear to Costume?   
    I think clients from 2019 and up supports up to ID 2 billion, even for costumes.
     
    I am not sure which client you are using, but newer clients should be the only real option.
  8. Like
    KirieZ reacted to Kenpachi in jRO Exclusive Monsters   
    View File jRO Exclusive Monsters
    All jRO Exclusive, Event and Special Episode monsters.
    This file was originally posted by @fxfreitas at Midgard-Community.
     
    The archive contains the following monster sprites:
    abyss_arthur (corridor of abyss special instance boss) AMELIT (ghost carring a gemstone) ANGLERFISH (Mini-boss) CHAOS_DEVIL_DRAGON deviruchi_w (a white deviruchi, event) domovoi (custom pet, based on RO2 domovoi) ECHIDNA EMELIT (ghost carring a gemstone) giant_deviruchi (event monster) giant_deviruchi_w (event monster) headless_mule (remake of original brasilis monster, last kRO already implemented) HERA (Episode Monster) j_taini (tiny, event monster and pet) kraken_baby (marse edit) LILITH (Episode Monster) M_DARK_KNIGHT (Mercenary monster) M_FLAME_KNIGHT (Mercenary monster) M_ICE_KNIGHT (Mercenary monster) M_LIGHT_KNIGHT (Mercenary monster) M_STONE_KNIGHT (Mercenary monster) merman_se (merman edit) METAL_DRAGON (Pet and dungeon monster) MYTHLIT (ghost carring a gemstone) pad_fafnir (Can't Move, Can't Attack) pad_helheim (Can't Move, Can't Attack) pad_horai (Can't Move, Can't Attack) pad_ifrit (Can't Move, Can't Attack) pad_kinggold (Can't Move, Can't Attack) pad_kingmetal (Can't Move, Can't Attack) pad_leviathan (Can't Move, Can't Attack) pad_muspelheim (Can't Move, Can't Attack) pad_mythlit (Can't Move, Can't Attack) pad_niraikanai (Can't Move, Can't Attack) pad_shangrila (Can't Move, Can't Attack) pad_tamadora (Pet) pad_zaerog (Can't Move, Can't Attack) pad_zerog (Can't Move, Can't Attack) poseidon (strouf edit) RUBYLIT (ghost carring a gemstone) SAPPHLIT (ghost carring a gemstone) seiren (obeaune edit) SIREN (Episode Monster) tacnu (Mini-boss) TOPALIT (ghost carring a gemstone) Submitter Kenpachi Submitted 04/22/20 Category Sprites & Palettes  
  9. Like
    KirieZ reacted to Ridley in Merry Christmas 2019 - A few words for the end of the year   
    The team at Hercules wishes you peace, joy and prosperity throughout the coming year. Thank you for your continued support and contributions. 
    We are here, because each member of our boards is proud to be part of it. I really look forward to see what 2020 will bring us.
     
    Relax and enjoy your well-earned free time as much as possible, We wish you and your family a Merry Christmas and a Happy New Year!
    Thank you,
    Ridley
  10. Like
    KirieZ got a reaction from Xross in Missing Database Columns?   
    It looks like your db is missing some parts, are you using the sql files from your emulator? Try recreating your database
  11. Upvote
    KirieZ got a reaction from fiction in [Q] Skip sql update   
    If you are sure that you have all the updates, I think you can run the queries that insert entries in the sql_updates table: https://github.com/HerculesWS/Hercules/blob/stable/sql-files/main.sql#L876
  12. Like
    KirieZ reacted to vykimo in XPRO : cross platform client   
    Touch-motions supported
    Very usefull update, I started to interest myself to mobile specific features.
    Now, Android is officially supported and here are described touch motions I implemented to navigate in game.
    I tried to be as intuitive as possible, inspired by Google Map gestures :
    Zoom : Spread fingers Perspective : Go up/down fingers Rotation : Inverted fingers Reset : Double tap It gives an immersive experience and prepare future updates for mobile client version.

  13. Like
    KirieZ reacted to Ridley in July Digest 2019   
    July Digest 2019
    The following digest covers the month of July 1st - July 31th 2019

    Team Changes
    None Added
    Added/updated packets, encryption keys and message tables for clients up to 2019-07-24. (#2498) Added a setting to have `@autoloot` take player drop penalties/bonuses into account. See `autoloot_adjust` in `drops.conf` for details. (#2505) Added a mob DB field `DamageTakenRate` to change the rate of the damage received by each monster. (#2510) Added a setting to allow homunculi to obtain a portion of the EXP gained by their master. See `hom_bonus_exp_from_master` in `homunc.conf`. Note: in order to restore the previous behavior, the setting can be changed to `0`. (#2507, issue #2313)
      Changed
    Converted various packets (`ZC_ACK_RANKING`, `ZC_STATUS_CHANGE_ACK`, `ZC_HAT_EFFECT`) into structs. (part of #2498) Changed `pc_statusup()` to send the actual stat value back to the client in case of error. (part of #2498) Disabled the `@refresh` and `@refreshall` commands during NPC conversations, causing the character to be stuck on an invisible NPC dialog until relogging. (#2499) Extended `@reloadmobdb` to update the currently spawned monsters. (#2500) Changed the party sharing checks to avoid unnecessary SQL queries. (part of #2502) Extended the `@refine` command with shortcuts to refine every normal equipment (-1), every costume equipment (-2) or every shadow equipment (-3). (#2504) Extended the `@refine` command to list the costume and shadow equipments. (#part of #2504)
    Increased the stack limit of Turisus, Asir and Pertz to unlimited and the other runestones to 60. (#2509) Extended the commands `getmonsterinfo()` and `setunitdata()` / `getunitdata()` with accessors for the new `DamageTakenRate` mob DB field, using, respectively, `MOB_DMG_TAKEN_RATE` and `UDT_DAMAGE_TAKEN_RATE`. (part of #2510) Converted the Guild Castle database to the libconfig format, in preparation for future updates. (#2506)
      Fixed
    Sanitized the use of `input()` in all the scripts to work correctly if the minimum accepted value is changed to less than zero in the configuration. It's recommended that third party scripts get updated not to assume a positive value, since the default setting may change in the future. (#2494) Fixed an issue in the Sealed Shrine script, allowing to unseal multiple Baphomets under certain conditions. (#2332) Fixed an issue that allowed an appropriately created party to enable experience sharing even if outside the sharing range. (#2502) Corrected the cooldown after killing Wounded Morroc. (#2503) Corrected `isequipped()` and `isequippedcnt()` to correctly handle costume equipment. (#2508)
      Deprecated
    None  
    Special thanks to
    @Haru @4144 @Asheraf @Emistry @KirieZ 
  14. Upvote
    KirieZ got a reaction from Random756 in Enchant sprite issue   
    IIRC Item stat enchants basically add a "card item" into the 4th slot (which enchantable items doesn't have for cards), and that item looks like an sphere. It is an item, you can find it on item db (look for Int_3 or something like that).
    You can probably change the sprite if you want, just like you do for any other item. But in this case it looks more like yourdata. grf is out of date... does other enchants work fine? I may be wrong, but this is what I remember...
    ItemInfo.lua and .lub are "the same" (actually .lub would be the "compiled" version of .lua, but a lot of time we use it in plaintext)
  15. Like
    KirieZ got a reaction from Random756 in How to change card sprite (beside of item)   
    It should be exactly like adding any item. You have to put the .spr file in the sprite directory as you did and also the item and collection bmp in texture folder. Iirc they are:
    texture/À¯ÀúÀÎÅÍÆäÀ̽º/item/<item name>.bmp  --> the sprite that appears in yor inventory
    texture/À¯ÀúÀÎÅÍÆäÀ̽º/collection/<item name>.bmp  --> the image that appears when you right click
     
  16. Like
    KirieZ got a reaction from Random756 in How to change card sprite (beside of item)   
    Hmm yes, I think you should duplicate original card act and rename to taogunka.act. You need to get it from official data.grf, it is probably at:
    data/sprite/¾ÆÀÌÅÛ/À̸§¾ø´ÂÄ«µå.act
  17. Like
    KirieZ reacted to 4144 in Nemo patcher   
    https://gitlab.com/4144/Nemo/blob/70f27fe5c114f7c7f834f95f6ab0e8decf8dc6af/ChangeLog.md
    New patches:
    Increase hair style limit in game (old) - contains old patch for extend hair sprites id for human.
    Force use icons only from stateiconimginfo.lub by Jchcc.
    Add patches for hide all other buttons by 4144.
    Add patches for set hide/show other buttons by 4144.
    Allow spam skills by hotkey by Functor, 4144.
     
    Updates patches:
    Increase hair style limit in game - now extending hairs for humans and dorams.
     
    New translations:
    Add Thai translation by Kelberwitz Blade's - found packed nemo archive in github.
     
    Plugin updates:
    Show client version always with UTC time zone.
     
  18. Like
    KirieZ reacted to Ridley in June Digest 2019   
    May Digest 2019
    The following digest covers the month of June 1st - June 30th 2019

    Team Changes
    @Asheraf is now Core Developer.  
    Added
    Added Stat Reduction Potions to the Renewal item DB. (#2483) Added the constant `MAX_NPC_PER_MAP` to the script engine. (part of #2474) Added the `cap_value()` script command, to cap a value between a minimum and maximum. (#2472) Added the `mesclear()` script command, to clean an NPC message dialog without user interaction. (#2471) Added a script for simplified installation on Windows development machines. (#2222) Added/updated packets, encryption keys and message tables for clients up to 2019-05-30. (#2468, #2490) Added support for multiple hotkeys sets (two 'tabs' on the RE clients). The constant `MAX_HOTKEYS_DB` represents the maximum amount of hotkeys saved to the database. This requires a database migration. (part of #2468) Added the `delitemidx()` script command, to delete an item by its inventory index. (#2394) Added the `getguildonline()` script command, to return the amount of online guild members. (#2290) Added the `nostorage` and `nogstorage` mapflags, disallowing storage usage on the affected maps. The `bypass_nostorage` permission is also provided, to bypass those mapflags. (#2221) Added/updated packets, encryption keys and message tables for clients up to 2019-06-05. (#2491) Added support for the new shortcuts packets in the Zero clients. (part of #2491) Added support for the Summoner class in `stylist.txt`. (part of #2357, issue #2356) Implemented the new `setfavoriteitemidx()` and `autofavoriteitem()` script commands. (#2427) Implemented the new `@reloadnpc` atcommand, to reload a single script file. (#2476) Implemented the new `identify()` and `identifyidx()` script commands and `@identifyall` atcommand. (#2487)  
    Changed
    Moved the questinfo data from map to npc data, allowing the use of multiple `questinfo()` blocks. (#2433, issue #2431) Removed code duplication from the map data cleanup functions. (part of #2433) Allow to read negative values from `input()`. The minimum value is still set to 0 in the default configuration, but it can be overridden globally by editing `input_min_value` or locally by specifying the `min` and `max` arguments to `input()`. (#2375) Extended the `getmapinfo()` command to return the total number of NPCs in a map (`MAPINFO_NPC_COUNT`). (#2474) Updated the pre-renewal Byorgue summon slave delay to match the official value, increased before renewal to prevent farming exploits. (#2456) Changed the `"all"` special value used by `killmonster()` to be lowercase and case sensitive, for consistency with other script commands. (#2380) Updated and simplified the Windows installation instructions. (part of #2222) Updated some NPC/name translations to match the official ones or the official intent. Cougar -> Kuuga Gai, Gaebolg -> Geoborg, Family -> Clan, Magic Gear -> Mado Gear (#2457) Updated the Mado Gear rental NPC to sell Mado Gear Box and Cooling Device. (part of #2457) Changed the `expandinventoryack()`, `expandinventoryresult()`, `expandinventory()` and `getinventorysize()` script commands to be lowercase, for consistency. (#2374) Suppressed unnecessary ShowWarning messages related to the `nosave`, `adjust_unit_duration` and `adjust_skill_damage` mapflags when using `@reloadscript`. (#2410, issue #2347) Updated the Rune Knight, Guillotine Cross and Ranger shops with missing items. (#2343)  
    Fixed
    Fixed the `failedremovecards()` command, to only remove the carts when `type` is set to 1, as described in its documentation. (#2477, issue #2469) Fixed a crash when using `npcspeed()`, `npcwalkto()`, `npcstop()`, `unitwalk()`, `unitwarp()`, `unitstop()` on a floating NPC without a sprite. (#2430) Fixed a stats calculation regression. (#2482) Fixed a version check for the `ZC_PING` packet. (part of #2468) Fixed errors caused by missing Option DB and Option Drop Groups DB data when the map server loads the mob database in minimal mode. (#2486, related to issue #2484) Fixed monster spawns disregarding the custom names specified. (#2496, #2491, issue #2495) Fixed the style range in `stylist.txt`, now starting from 1 instead of 0. (part of #2357, issue #2356)  
    Deprecated
    Deprecated use of `"All"` with `killmonster()`. Use `"all"` instead. (part of #2380) Deprecated the mixed case version of the `expandInventoryAck()`, `expandInventoryResult()`, `expandInventory()` and `getInventorySize()` script commands. Use the lowercase variants instead. (part of #2374)  
    Special thanks to
    @Haru @4144 @KirieZ @bWolfie @Emistry @AnnieRuru
  19. Like
    KirieZ reacted to Ai4rei in What skills should I learn in order to understand Client development?   
    Depending on how much you want DIY on the client, the learning curve can be steep.
    Imho the primary skills are knowing how the client works from the player perspective (i.e. the whole functionality available, without modifying it) and knowing the subject you want to include/exclude. Thus, if you want to deal with bots, you should also know how bots work and be able to setup and use one.
    Further down, you have to deal with C++, machine code generated from C++ (assembler), disassembling, debugging and Win32 API. If you stumble upon graphics stuff, GDI and DirectX 7 are also topics of interest. If you deal with network code and packets, some background knowledge of TCP is also helpful.
    Note, that some things are better to be done server-side rather than client-side for two reasons:
    Players can undo your client-side changes, but not server-side. Server-side is easier to edit, since you have all the source, whereas in the client you have only the gory machine code.
  20. Like
    KirieZ reacted to Ridley in May Digest 2019   
    May Digest 2019
    The following digest covers the month of May 1st - May 31st 2019

    Team Changes
    @Luciar has joined as Support Leader. Fixed
    Fixed an issue in the player name packet causing names not to be sent correctly. (#2460, issue #2459) Fixed a null pointer error on MVP drops. (#2461) Fixed a packet generation issue that caused the Guild Storage to appear empty. (#2464, issue #2463) Fixed use of ZC_SE_PC_BUY_CASHITEM_RESULT on old packet versions that didn't support it. (#2465) Fixed a calculation error in the ASPD (and/or other substats) when the maximum stats have values higher than default. (#2419) Fixed a parsing error in the HPM Hooks Generator. (#2467) Fixed a reading error in refine database caused refine chances to be incorrectly read. (#2481) Added
    Added consolemes() script function which allow the script engine to print error, warning, status, debug and info messages to the console. (part of #2440) Added the item combo effect for Geffenia Tomb of Water (2161) and La'cryma Stick (1646). (#2441, issue #1982) Added support for mobs to drop items with Random Options. See the new database file db/option_drop_group.confand the new optional syntax in the drop entries of mob_db.conf. (#2309) Added a global function F_MesItemInfo(), to print an item name with description link, formatted for the current client version. (#2068) Added/updated packets, encryption keys and message tables for clients up to 2019-05-02. (#2432) Added a new function clif_selforarea() to send packets to self, falling back to area when no target is specified. (part of #2432) Added script commands getunittitle() and setunittitle(), and the related information in the unit_datastructure. (part of #2432) Added support for players to automatically reject party invites through the party options. (part of #2432) Added an option to automatically drop the connection on the server side when a character is kicked. See drop_connection_on_quit in client.conf (note: the previous behavior was equivalent to true). (part of #2432) Added an option to force character save when the party options are changed. See save_settings in map-server.conf. (part of #2432) Added the script command closeroulette() and the related packet ZC_ACK_CLOSE_ROULETTE to close the roulette window. (part of #2432) Added a missing CSBR_BUSY value to enum CASH_SHOP_BUY_RESULT. (part of #2432) Added support for the refinery UI. See the new refine_db.conf changes and the settings enable_refinery_ui and replace_refine_npcs in features.conf to toggle between the new UI and the previous scripted refiner. (#2446) Added a new SkillInfo flag HiddenTrap, to make certain traps invisible, according to the trap_optionsconfiguration flag. The default settings have changed to match Renewal. Pre-renewal users might want to review trap_options and the now superseded traps_setting. (#2232, issues #1927 and #1928) Changed
    Extended @dropall to accept an optional argument for item type (#2439). Updated copyright header in the configuration files for year 2019. (part of #2452) Extended the getinventorylist() script command to return an array @inventorylist_favorite, set to true when the item is located in the favorite tab. (#2426) Split the function clif_blname_ack() into bl type-specific functions. (part of #2432) Extended getunitdata() and setunitdata() with support for the group ID (UDT_GROUP), and added the related information in the unit_data structure. (part of #2432) Moved the UDT_* constants from constants.conf to script.c. (part of #2432) Extended the guild expulsion information to include the character ID for supported client versions. This includes a database migration. (part of #2432) Disabled packet validation in socket_datasync(). (part of #2432) Moved the refine database and refine related functions to a new refine.c file. A public and private interface is provided, with public database accessors refine->get_bonus() and refine->get_randombonus_max(). (part of #2446) Changed several battle calculation limits to be configurable through battle/limits.conf and no longer hardcoded. Several status_data fields and battle functions now use int instead of short to accommodate this change. (#2419) Changed the unitwarp() script command to allow NPCs to be relocated to non-walkable cells (like movenpc()). (#2453) Fixed
    Corrected MSVC version naming in console (#2450). Corrected an example using a sprite number instead of a constant in README.md. (#2449) Fixed an issue in a monster death label callback in npc/custom/events/mushroom_event.txt when the monster is killed without an attached player. (#2442, issue #1955) Fixed an issue where when a chat room handler leaves, the following leader won't be checked for cell_chknochatand will bypass it. (#2443, issue #1569) Corrected the documentation for pincode.enabled in the char-server configuration. (part of #2452) Fixed an incorrectly displayed ITEMLINK entry in the OldGlastHeim script. (part of #2068) Fixed a packet size underflow in the storage packet for certain client versions. (#2424) Fixed an issue that caused named/brewed/forged items to be saved to database with the wrong character ID. Database migrations are provided, to update the existing data. (#2425, issue #2409) Fixed a truncated title in the inventory window. (part of #2432) Fixed a possible overflow in the guild member login field (only supporting timestamps until 2036-12-31). (part of #2432) Fixed a compile error with old packet versions. (part of #2432, issue #2438) Fixed a potential exploit related to the vending skill, by adding stricter validation on the vending status flags. (part of #2432) Fixed a regression, restoring the ability for HPM Hooks to hook into private interfaces, through the new macros addHookPrePriv() and addHookPostPriv(). (#2447) Fixed a zeny loss caused by the inter-server deleting zeny from messages when the user only requests to take items. (#2455) Fixed a compatibility issue with Perl 5.26 in the item converter script. (#2444) Fixed various gitlab-ci build failures, by removing some no longer supported debian versions and packages. The gcc-4.6, gcc-4.7 and gcc-5 builds have been removed. (#2458) Deprecated
    Deprecated the script command debugmes(), superseded by consolemes(). (part of #2440) Removed
    Removed the superseded traps_setting configuration flag, replaced by trap_options. (part of #2232) Special thanks to
    @Haru @4144 @Asheraf @hemagx @KirieZ
  21. Like
    KirieZ got a reaction from Axl in GvG Maps set Damage in 1   
    If I recall correctly emperium does have some special behavior for WoE (I don't recall if this behavior is activated by some woe mapflag or by gvg map flag), did you try with other mobs? And I think there are something gvg (or woe) related that hides your real damage (e.g. display 1 to client while actually causing real damage -- I think there is a battle conf for that). One way to test would be to try on a poring or some other weak monster and check if you'll kill it in one hit.
  22. Like
    KirieZ got a reaction from IndieRO in Random Options on Monster Drops   
    As of Release v2019.05.05 you can now create groups of random options that may be assigned to items dropped by monsters.
    In order to use it you must first create an Option drop group in db/option_drop_groups.conf, one group will set how each option slot is filled, the chance of it getting filled, etc. Each group has the following structure:
    <Group Name Constant>: ( { // Option Slot 1 Rate: (int) chance of filling option slot 1 (100 = 1%) // Possible options for slot 1 // min/max value : int, defaults to 0 // chance : int, 100 = 1% if not set, will be 100%/number of possibiltiies OptionName: value // or OptionName: [min value, max value] // or OptionName: [min value, max value, chance] // ... (as many as you want) }, // ... (up to MAX_ITEM_OPTION) ), Details about this file may be found on Hercules' docs (doc/option_drop_group.md). This is an example group called MYGROUP:
    MYGROUP: ( { /* Option Slot 1 */ Rate: 10000 /* It has 100% of chance of being filled */ /* This slot may have one of the following options: */ WEAPON_ATTR_WIND: 5 /* WEAPON_ATTR_WIND Lv5 (33.33%) */ WEAPON_ATTR_GROUND: [2, 4] /* WEAPON_ATTR_GROUND Lv 2~4 (33.33%) */ WEAPON_ATTR_POISON: [1, 4, 8000] /* WEAPON_ATTR_POISON Lv 1~4 (80%) */ }, { /* Option Slot 2 */ Rate: 5000 /* It has 50% of chance of being filled */ /* If filled, may have one of the following options: */ WEAPON_ATTR_WATER: 4 /* WEAPON_ATTR_WATER Lv4 (100%) */ } ) Once a group is defined, you can them assign it to monster drops in mob database by using a new syntax that works for both Drops and MvpDrops:
    AegisName: (chance, "GROUP_NAME") This will set that the item AegisName has chance chance of drop (like we already know from the format already in use), and, when dropped it will get random options as specified by the group GROUP_NAME.
    For example:
    Knife: (5000, "MYGROUP") Will make "Knife" be dropped with a chance of 50%, and when dropped it will get options as defined by MYGROUP option group, in other words, the first slot will be filled with Wind, Ground or Poison option, and the second slot may or may not be filled with Water option.
    This feature should work on any client that supports item random options.
  23. Like
    KirieZ got a reaction from Ridley in Random Options on Monster Drops   
    As of Release v2019.05.05 you can now create groups of random options that may be assigned to items dropped by monsters.
    In order to use it you must first create an Option drop group in db/option_drop_groups.conf, one group will set how each option slot is filled, the chance of it getting filled, etc. Each group has the following structure:
    <Group Name Constant>: ( { // Option Slot 1 Rate: (int) chance of filling option slot 1 (100 = 1%) // Possible options for slot 1 // min/max value : int, defaults to 0 // chance : int, 100 = 1% if not set, will be 100%/number of possibiltiies OptionName: value // or OptionName: [min value, max value] // or OptionName: [min value, max value, chance] // ... (as many as you want) }, // ... (up to MAX_ITEM_OPTION) ), Details about this file may be found on Hercules' docs (doc/option_drop_group.md). This is an example group called MYGROUP:
    MYGROUP: ( { /* Option Slot 1 */ Rate: 10000 /* It has 100% of chance of being filled */ /* This slot may have one of the following options: */ WEAPON_ATTR_WIND: 5 /* WEAPON_ATTR_WIND Lv5 (33.33%) */ WEAPON_ATTR_GROUND: [2, 4] /* WEAPON_ATTR_GROUND Lv 2~4 (33.33%) */ WEAPON_ATTR_POISON: [1, 4, 8000] /* WEAPON_ATTR_POISON Lv 1~4 (80%) */ }, { /* Option Slot 2 */ Rate: 5000 /* It has 50% of chance of being filled */ /* If filled, may have one of the following options: */ WEAPON_ATTR_WATER: 4 /* WEAPON_ATTR_WATER Lv4 (100%) */ } ) Once a group is defined, you can them assign it to monster drops in mob database by using a new syntax that works for both Drops and MvpDrops:
    AegisName: (chance, "GROUP_NAME") This will set that the item AegisName has chance chance of drop (like we already know from the format already in use), and, when dropped it will get random options as specified by the group GROUP_NAME.
    For example:
    Knife: (5000, "MYGROUP") Will make "Knife" be dropped with a chance of 50%, and when dropped it will get options as defined by MYGROUP option group, in other words, the first slot will be filled with Wind, Ground or Poison option, and the second slot may or may not be filled with Water option.
    This feature should work on any client that supports item random options.
  24. Like
    KirieZ got a reaction from Jedzkie in Random Options on Monster Drops   
    As of Release v2019.05.05 you can now create groups of random options that may be assigned to items dropped by monsters.
    In order to use it you must first create an Option drop group in db/option_drop_groups.conf, one group will set how each option slot is filled, the chance of it getting filled, etc. Each group has the following structure:
    <Group Name Constant>: ( { // Option Slot 1 Rate: (int) chance of filling option slot 1 (100 = 1%) // Possible options for slot 1 // min/max value : int, defaults to 0 // chance : int, 100 = 1% if not set, will be 100%/number of possibiltiies OptionName: value // or OptionName: [min value, max value] // or OptionName: [min value, max value, chance] // ... (as many as you want) }, // ... (up to MAX_ITEM_OPTION) ), Details about this file may be found on Hercules' docs (doc/option_drop_group.md). This is an example group called MYGROUP:
    MYGROUP: ( { /* Option Slot 1 */ Rate: 10000 /* It has 100% of chance of being filled */ /* This slot may have one of the following options: */ WEAPON_ATTR_WIND: 5 /* WEAPON_ATTR_WIND Lv5 (33.33%) */ WEAPON_ATTR_GROUND: [2, 4] /* WEAPON_ATTR_GROUND Lv 2~4 (33.33%) */ WEAPON_ATTR_POISON: [1, 4, 8000] /* WEAPON_ATTR_POISON Lv 1~4 (80%) */ }, { /* Option Slot 2 */ Rate: 5000 /* It has 50% of chance of being filled */ /* If filled, may have one of the following options: */ WEAPON_ATTR_WATER: 4 /* WEAPON_ATTR_WATER Lv4 (100%) */ } ) Once a group is defined, you can them assign it to monster drops in mob database by using a new syntax that works for both Drops and MvpDrops:
    AegisName: (chance, "GROUP_NAME") This will set that the item AegisName has chance chance of drop (like we already know from the format already in use), and, when dropped it will get random options as specified by the group GROUP_NAME.
    For example:
    Knife: (5000, "MYGROUP") Will make "Knife" be dropped with a chance of 50%, and when dropped it will get options as defined by MYGROUP option group, in other words, the first slot will be filled with Wind, Ground or Poison option, and the second slot may or may not be filled with Water option.
    This feature should work on any client that supports item random options.
  25. Like
    KirieZ got a reaction from Asheraf in Random Options on Monster Drops   
    As of Release v2019.05.05 you can now create groups of random options that may be assigned to items dropped by monsters.
    In order to use it you must first create an Option drop group in db/option_drop_groups.conf, one group will set how each option slot is filled, the chance of it getting filled, etc. Each group has the following structure:
    <Group Name Constant>: ( { // Option Slot 1 Rate: (int) chance of filling option slot 1 (100 = 1%) // Possible options for slot 1 // min/max value : int, defaults to 0 // chance : int, 100 = 1% if not set, will be 100%/number of possibiltiies OptionName: value // or OptionName: [min value, max value] // or OptionName: [min value, max value, chance] // ... (as many as you want) }, // ... (up to MAX_ITEM_OPTION) ), Details about this file may be found on Hercules' docs (doc/option_drop_group.md). This is an example group called MYGROUP:
    MYGROUP: ( { /* Option Slot 1 */ Rate: 10000 /* It has 100% of chance of being filled */ /* This slot may have one of the following options: */ WEAPON_ATTR_WIND: 5 /* WEAPON_ATTR_WIND Lv5 (33.33%) */ WEAPON_ATTR_GROUND: [2, 4] /* WEAPON_ATTR_GROUND Lv 2~4 (33.33%) */ WEAPON_ATTR_POISON: [1, 4, 8000] /* WEAPON_ATTR_POISON Lv 1~4 (80%) */ }, { /* Option Slot 2 */ Rate: 5000 /* It has 50% of chance of being filled */ /* If filled, may have one of the following options: */ WEAPON_ATTR_WATER: 4 /* WEAPON_ATTR_WATER Lv4 (100%) */ } ) Once a group is defined, you can them assign it to monster drops in mob database by using a new syntax that works for both Drops and MvpDrops:
    AegisName: (chance, "GROUP_NAME") This will set that the item AegisName has chance chance of drop (like we already know from the format already in use), and, when dropped it will get random options as specified by the group GROUP_NAME.
    For example:
    Knife: (5000, "MYGROUP") Will make "Knife" be dropped with a chance of 50%, and when dropped it will get options as defined by MYGROUP option group, in other words, the first slot will be filled with Wind, Ground or Poison option, and the second slot may or may not be filled with Water option.
    This feature should work on any client that supports item random options.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.