-
Content Count
59 -
Joined
-
Last visited
-
Days Won
3
Reputation Activity
-
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.
-
KeiKun got a reaction from jowi in *cloakonnpc but on monsters
I think you're talking about https://github.com/HerculesWS/Hercules/pull/3138
-
-
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.
-
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
-
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.
-
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
-
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...
-
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
-
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.
-
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.
-
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
-
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?
-
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
-
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
-
-
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.
-
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 -
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/ ?
-
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/
-
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.
-
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>};
-
-
-