Jump to content

KeiKun

Members
  • Content Count

    59
  • Joined

  • Last visited

  • Days Won

    3

Reputation Activity

  1. Like
    KeiKun reacted to 4144 in Http support in hercules (merged to hercules)   
    Some progress update. Complete things:
    Add support for gif guild emblems. Add support for emblems bigger than 64k bytes. Add shared configs support between login/char/map/api. Add configuration with default emotes for new chars.  
  2. Like
    KeiKun got a reaction from jowi in *cloakonnpc but on monsters   
    I think you're talking about https://github.com/HerculesWS/Hercules/pull/3138
  3. Like
    KeiKun reacted to Yommy in The End of A Era - Goodbye 3CeAM   
    ❤️
  4. Like
    KeiKun reacted to 4144 in Http support in hercules (merged to hercules)   
    Some update on project. now also implemented
    extend plugins support for inter server packets. add support for api to login, char, map packets. protection against different attacks on servers. sample http plugin.  
     
  5. Upvote
    KeiKun reacted to pan in Multi-threaded Hercules   
    Long time no see!
    I've been dabbling with adding multi-thread support to Hercules for quite some time and even started quite a few server projects from scratch, and having failed in most of my attempts - last year I tried again with a new core design and it seems to be working so far. A lot of the systems that the server core is reliant were reworked, I believe some of these changes can even be used upstream but they would need to be revised first. This is mostly a proof of concept.
    I'm still planning on finishing the map-server but as of now only login and char servers have multi-thread enabled - I didn't test with multiple users yet. There's no linux / FreeBSD support because I want to have everything in working condition before trying to add another I/O paradigm, the architecture is very reliant on the way that this module works so I thought it'd better to implement the whole server before trying to add other paradigms.
    Lately I haven't got much free time to finish the map-server, but sometime later this year I think I can finish it.
    The code is at https://github.com/panikon/HerculesMT , I forked from stable v2021.08.04
     
    Server architecture

    Hercules employs a multi-server approach in order to better load balance player requests, so for each game world there'll be at least three separate program instances running at all times. These instrances are: login-server, char-server and map-server. Each of which can only access a subset of the world's SQL tables and is responsible for a different step of the game experience.

    Authentication and account database changes are segregated to the login-server, while character selection and character specific information are to the char-server, and the actual gameplay to the map-server.
    The login-server is the player entry-point and can be responsible for multiple different world instances, so it's possible to use the same account table (login) for multiple worlds (char-server + map-server) and to dynamically change their IP without needing to push a new patch. After authentication the player is queried for which service they'll use and then the server relays the proper address so the client can connect.
    In the char-server the player usually is queried again for a four digit PIN (PACKETVER >= 20180124), after which they can select which playable character will be used to play. The server then relays the address of the proper map-server to the client.
    A single world instance can have multiple map-servers where each is responsible for a zone (set of maps), all inter map connectivity is managed by the char-server. When the player requests to change character the char-server IP is then relayed.
    A single map-server can be responsible for multiple different zones, and each will be a different thread.
     
    Relationship of each of the possible server instances

     Brown - Game world | White - program instances
     
    Core design
    All servers are multi-threaded. Basic server functions are assigned to different threads:

    Console (../src/common/console.c):
    This thread is responsible for all console input operations. Timer (../src/common/timer.c):
    The timer thread manages the `timer_heap` and dequeues timer actions from the `timer_queue`. Each timer can be ran in a different thread depending on the `timer_target`, this is accomplished by either queuing an action in one of the available action queues (`target_id`) or by running the specified function in the main timer loop (`do_timer`).
    Other threads queue different timer actions (add, delete, set tick) to the `timer_queue`.
    The timer module is also responsible for tick acquiral via (`timer->gettick` and `timer->gettick_nocache`). Message(../src/common/showmsg.c):
    The message thread is used to synchronize the output of multiple different threads, each call to `Show*` instead of being directly outputted to `STDOUT` is queued in the `showmsg_queue` and then dequeued by the main thread function `showmsg_worker`. I/O Worker(../src/common/socket.c):
    All I/O operations are asynchronous and implemented via I/O completion ports and a thread pool. The main workers are defined in `socket_worker` and after a operation is dequeued it's converted into an action (`socket_operation_process`) that is then queued to the proper action worker (each session has a responsible worker, and it's obtained by the I/O worker via `action->queue_get`).
    These workers don't execute any "business logic" so we can minimize the time that they are blocked by any given operation, and also so we can better isolate different session groups without having to take into account in I/O operations (e.g. in map-server each zone has a different action worker and multiple actions can be queued simultaneously without having to block any of the threads for a longer period of time). Action Worker(../src/common/action.c):
    Action workers perform all the "business logic" of each of the servers, and each is responsible for a different session group. After every action loop all send actions are queued to the completion port.

    Login-server:
    Each char-server connection has a different worker. Player connections are randomly assigned. Char-server:
    Each map-server connection has a different worker. Player connections are randomly assigned. Map-server:
    Player connections are assigned depending on the current map according to the different configured zones. The char-server connection is randomly assigned.



    Thread relationships

  6. Like
    KeiKun reacted to Ai4rei in Elurair, v2.14.0.369 - last updated 2024/04/14   
    Elurair Patching Launcher
    (RO Patcher Lite+ROCred Merge)
     

     
    About
    Universal auto-patcher for all your updating needs combined with a launcher, which is fully skinnable, highly customizable and easy on resources. It is free of any cost and works on every 32-bit and 64-bit Microsoft* Windows* platform. How this came to be: Future of ROCred and RO Patcher Lite
     
    Known Issues
    None.
     
    FAQ
    Q: Does the patcher support encrypted GRFs?
    A: Yes, common GRF encryption schemes are supported.
    Q: Can I use the Patcher part without the Launcher part?
    A: Yes, the Launcher mechanics and UI can be disabled in configuration.
    Q: Can I use the Launcher part without the Patcher part?
    A: Yes, remove all Patcher sections from the configuration.
     
    Download & Website
    http://ai4rei.net/p/skal
     
    License

    This work is licensed under a Creative Commons Attribution-Noncommercial 4.0 International License.
  7. Like
    KeiKun reacted to Ai4rei in RAGP Extractor, v1.0 - last updated 2021/12/27   
    RAGP Extractor

     
    About
    Rudimentary command-line tool to extract RAGP files (such as the assets in Ragnarok: Valkyrie Uprising).
     
    Usage
    unragp <file> Extracts <file> into current directory.
     
    Known Issues
    Because I wrote it on a whim to check out Ragnarok: Valkyrie Uprising game resources, there are no error messages. Either the program ends in OK or NG.
     
    Download
    Find attached. Source for reference: https://github.com/ai4rei/unragp
     
    License
    CC0 1.0 Universal
    2021-12-27ragp-1.0.zip
  8. Like
    KeiKun reacted to 4144 in Upcoming clients support (already merged)   
    Soon into hercules will be merged support for all not supported yet clients 2020 and 2021 from here: http://nemo.herc.ws/clients/#clients
     
    For free clients can be downloaded here (official and unchanged): http://nemo.herc.ws/downloads/#downloadable-exe
    For zero clients exists commercial option here: https://discord.com/channels/724239709966041128/907992656104275969
     
    Here pull request with support for new clients: https://github.com/HerculesWS/Hercules/pull/3082
     
    Other missing new features may come soon...
     
  9. Like
    KeiKun reacted to 4144 in Http support in hercules (merged to hercules)   
    For long time i worked on incomplete yet project for add http support into hercules.
    And this is funding page for this project.
     
    What parts this project contains already:
    new server with http support (named api-server). missing packets for guild emblems. http guild emblems (bmp, gif). hotkeys. emotes. adventurer agency (without search). basic plugins support for all this. basic plugins support for custom urls. extend plugins support for inter server packets. add support for api to login, char, map packets. protection against different attacks on servers. sample http plugin. Add support for emblems bigger than 64k bytes. Add shared configs support between login/char/map/api. Add configuration with default emotes for new chars.  
    What need to add
    adventurer agency search. extend service urls support. add support for browsers and web panels api for control servers. twitter like messages support for old clients. support for vending shops load/save. other different small things.  
    Now this project merged to hercules.
    Merged pull request: https://github.com/HerculesWS/Hercules/pull/3198
     
     
  10. Like
    KeiKun reacted to Ai4rei in RO Patcher Lite, v4.2.2.1316 - last updated 2023/12/18   
    Updated to 4.1.3, this release fixes an assertion when applying optimized patches.
    Updated to 4.1.4, this release adds support for the new, short-lived (2021-11-03 ~ 2021-11-17) kRO Sakray server. This is a different server from the one removed in 4.1.2 and requires a new full client. There is no mirror support for this one and it is released only as part of the bundle package.
  11. Like
    KeiKun got a reaction from Vortex_Impact in How to remove the MVP damage taken adjustment ?   
    On mob_db.conf, remove all DamageTakenRate: 10 placed in each MVP monster there.
  12. Like
    KeiKun reacted to Asheraf in Upcoming Feature: Macro Detection Interface   
    Macro Detection Interface
     
    Four new client interfaces are getting implemented in Hercules:
    - Macro Register UI
    - Macro Detector UI
    - Macro Reporter UI
    - Captcha Preview UI
     
    Usable though the chat commands: /macro_register, /macro_detector, macro_preview for all clients starting 2016-06-30.
    Available for testing now at: https://github.com/HerculesWS/Hercules/pull/3051
     
    Some sample images


  13. Upvote
    KeiKun reacted to Aethelingaeg in Skill effect not showing   
    Hexed: 2018-04-18bRagexeRE
     
    The following skills are not showing any effect when casted:
    Ignition Break King's Grace The damage is applied correctly.
    Cloud kill visual effect is bigger than expected. Where can i change this?

     
    Also, elemental shield is not working at all.
    I'm using the last version of stable branch (hercules).
    Can you help me find where my problem may be? Which lua files should i look for to fix this?
     
     
  14. Like
    KeiKun reacted to Ridley in Behold, 2021 is coming   
    The New Year is the perfect occasion to appreciate all the good things that the past year has given you and all the good things that are yet to come. In the past 365 days you have experienced beautiful moments in spite of any hard times in 2020, and they wouldn’t have been quite the same without all of the special people in your life.
    Convey your warmest New Year wishes and show your friends and family you put some extra thought into wishing them the happiest of New Years with the perfect sentiment. Cheers to successes. Cheers to failures. And cheers to those who helped you make your year what it was.
     
    We always overestimate the change that will occur in the next two years and underestimate the change that will occur in the next ten.
    -Bill Gates
  15. Like
    KeiKun reacted to AnnieRuru in Dicebet Gambling   
    @KeiKun ask me to convert this rathena script to hercules
    https://rathena.org/board/topic/112255-quests-games-dicebet-gambling/
    soo ....
     
    Download:
    script
     
    nothing much to say here, read the original topic in rathena forum
     
    original script use Zeny to bet, this script use an item to place the bet
     
     
  16. Like
    KeiKun reacted to AnnieRuru in Stylist   
    2.1 - script
    - fix a bug that player recall can bypass changelook
     
    thanks to @KeiKun
  17. Upvote
    KeiKun reacted to Ai4rei in Simple DLL Loader for RO Clients, last updated 2014/01/05   
    Simple DLL Loader for RO Clients


    About
    If you expect some super simple application, let me disappoint you, there is none; everything is already part of the RO client. Consider this post as a proof-of-concept. There are also certain catches that you should be aware of, before you start jumping for joy.

    All you need to do, is to give your library a .asi, .m3d or .flt extension instead of .dll and it will miraculously get loaded by the client when it starts up and is unloaded once it shuts down.

    While you can load pretty much any dynamic library this way, there is a major catch: when your DLL gets loaded, most of the initialization is already complete and the window is already visible, DirectX is not initialized at that point. So while this might be ideal for a client plug-in, that messes with the window or the client runtime, it's probably less usable for hot-patching of the initialization code. Another catch is, that the client will load fine when your DLL is deleted.

    Summary: While the process of loading a DLL with the extensions .asi, .m3d and .flt is simple, the point at which it gets loaded might be unsuitable for certain uses. Since it's not intrusive, it might be of use for client plug-ins.

    Demo: The linked demo consists of a pre-build DLL with source, that displays a message when loaded and unloaded for convenience of testing this PoC.

    Edit:
    Another issue noticed by Cataclysm: If "Sound Mode" in RO setup is set to "No Sound", DLLs will not be loaded.

    Download
    demo

    QA
    How does this work?
    Your DLL is loaded as a driver for the Miles Sound System (mss32.dll), but since it does not register with it, it does not interfere with it in any way.  
    License

    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  18. Upvote
    KeiKun reacted to Ind in Introducing Bank Support   
    Bank Support

    Account-Wide Bank
    May store up to 2.1 Billion Zeny Works on clients from 2013-07-24 onwards New DB Table 'account_data' Primarily to store the bank value, we have plans to employ it on new features as well (the official exp/death/drop modifiers for example) Run the '2013-10-09--21-38.sql' and '2013-10-10--16-36.sql' upgrade files. New Log TypeBan(K) to store bank transactions Bank Enable/Disable SwitchIn /conf/battle/feature.conf map-server.conf/save_settings UpdateNew '256' option to save bank transactions as soon as they take place. Made Possible Thanks to Yommy
    Wouldn't have been able to complete the feature without all the data Yommy made available, Thanks! Special Thanks
    Yommy Haru Links~!
    Commit
  19. Upvote
    KeiKun reacted to Poison in Map Zone DB: enabled_items and enabled_skills   
    How about enabled_items and enabled_skills in addition to this http://herc.ws/board/topic/302-introducing-hercules-map-zone-database/ ?
  20. Upvote
    KeiKun reacted to Poison in Hercules vs rAthena   
    This topic should be deleted or archived in reference to this: http://herc.ws/board/topic/799-rathena-devsstaffmembers-on-hercules/
  21. Upvote
    KeiKun reacted to Uzieal in Uzieal's Art Corner   
    Welcome!
    So I am a graphic designer in my spare time & I love making signatures, avatars, banners, webpages, icons, logos, sprites & more! One thing that makes me cringe is a bad or empty avatar or simply terrible signature. I think if you are going to be a part of a community you should have a half decent representation of yourself that people can recognize. So here is my Art Corner, I will be offering Avatars and Signatures to the community for free, first come first serve and I will only be taking so many requests at a time. 
     
    So here is what I need from you before I can begin a request.
    ( Before Requesting please note, you must have at least 20 posts. )                       Request List Round #1
     
    1.  An image or description of your In-game character sprite + headgear set.         Request # 1   - NeoMind 
    2.  Any Specific Color Scheme you would like example; Red, White & Blue.             Request # 2   - Valor 
    3.  Any images you like that could possibly be used for the request.                       Request # 3   - Mysterious
    4.  Text you would like to be included or a short quote etc.                                   Request # 4   - ossi0110
    5.  Which name you would like on the Signature / Avatar.                                     Request # 5   - xilence01
    6.  Some contact info of sorts so I can contact you if needed.                                Request # 6   - Dastgir Pojee
     
    Post this information here or in a PM and I will update the Request list as we go.
     
    Sample Avatars 
            
    Sample Banners

    Sample Signatures


        
      

       Ancient Work Spoiler
    All credit for renders, fonts, sprites, etc belong to the original artists or organizations etc. if an image you have created shows up here and was not requested by me to be used it was likely provided for me as a request, if you do not wish it to be used please contact me and royalties, proper accreditation or removal will be provided promptly, as an artist I try to respect the wishes of other artists to the best of my ability so thank you for your patience. 
  22. Upvote
    KeiKun reacted to Poison in MoveNPC Script Command (Move Map to Map)   
    How about making this script command move npcs map to map? What do you guys think?
     
    *movenpc "<NPC name>",<x>,<y>{,<dir>},{<map>};
     
     
  23. Upvote
    KeiKun got a reaction from sketchyphoenix in CrashSaver   
    i don't see gdb hard to read
    >_<
  24. Upvote
    KeiKun got a reaction from akbare in CrashSaver   
    i don't see gdb hard to read
    >_<
  25. Upvote
    KeiKun got a reaction from JulioCF in Client 2005/06/07 - download ?   
    i got sakray here
     
    6/28/2005
×
×
  • Create New...

Important Information

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