Jump to content

Ind

Retired Staff
  • Content Count

    1655
  • Joined

  • Last visited

  • Days Won

    131

Reputation Activity

  1. Upvote
    Ind got a reaction from athron in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  2. Upvote
    Ind got a reaction from Dastgir in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  3. Upvote
    Ind got a reaction from Michi in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  4. Upvote
    Ind got a reaction from Neo-Mind in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  5. Upvote
    Ind got a reaction from mkbu95 in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  6. Upvote
    Ind got a reaction from hsombini in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  7. Upvote
    Ind got a reaction from Napster in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  8. Upvote
    Ind got a reaction from quesoph in HPM Hooking Now Available!   
    Hercules Plugin Manager: Hooking
     
    Hello~! What?!
    In March 1st we started the Hercules Renewal Phase One, in order to prepare Hercules for this update, and now 7 months later it's fully complete, we've gone all over the map-server's code, taken hundreds of notes, modified thousands of lines, and have greatly improved our knowledge, making it very much worth the effort. HPM Hooking
    Zero Processing OverheadNormally programs that avail hooking end up paying a price for it, processing-time-wise, HPM Design frees Hercules from that toll -- absolutely no processing overhead to functions not being hooked to. Smart, Flexible Design Hooks receive all function params as pointers, whereas the original is int pc_dropitem(struct map_session_data *sd,int n,int amount)the one for the hook shall be (struct map_session_data *sd,int *n,int *amount)which allows for hooks to modify any and all data as it pleases.
    postHooks receive one additional param, which accounts for the result of the original function, int <name>(int retVal, struct map_session_data *sd,int *n,int *amount)In this case it'd allow for the postHook to react properly to what the original returned, in this case (for pc_dropitem) 0 (failure) or 1 (success) Hooking is a simple operation, it is possible to hook an infinite number of times to the over 2k hookable functions (all the interfaced ones, accounting for over 99% of map server) HPExport void plugin_init (void) {     addHookPre("pc->dropitem",my_pc_dropitem_preHook);  /* int my_pc_dropitem_preHook(struct map_session_data *sd,int *n,int *amount) */     addHookPost("pc->dropitem",my_pc_dropitem_postHook);/* int my_pc_dropitem_postHook(int retVal, struct map_session_data *sd,int *n,int *amount) */ } DocumentationThe sample plugin has already been updated to demonstrate hooking, the documentation present in the wiki will be updated shortly. Hercules-Hooks Updates This covers how we'll maintain the hookable points up to date with the game server's code The cache that boosts the hooks -- Made Possible Thanks to Haruna! -- is maintained by an application, for a couple days it will remain like that so we can keep an eye on it and debug as we go, once we're confident with it we'll enable its standalone mode, which will make the process automatic (without the need for developers to proofread and approve) and able to follow up on any new commits within seconds of it landing on the repository. Also in
    Haruna has redesigned the Makefile for plugins, so those of you not using windows will need to re-enter your plugins in it (its much easier now, Haruna provided a very straight-forward documentation in the file) Pre-existing plugins will need to be recompiled, given the chances in the Hercules Plugin Manager, attempting to load any not-recompiled plugin will lead to it not being loaded (and a warning in console will be displayed) Design by
    Haruna, Xgear, Gepard and Ind Special Thanks to
    Hercules Team, Contributors, for all have contributed to us getting here, Thank you all very much! Takkun for the MSVC-2012 project files Haruna for the MSVC-2010 project files Link~u!
    Commit And - On the Horizon
    Script Engine UpdatesThose of you who lurk our page on github probably have already noticed some stuff from it, we'll soon be resuming, for those of you not familiar with it: Many syntax additions and improvements (Thanks to Haruna!) Limitless array support, improvements to array storage and processing Support for Char and Account variable arrays (and no more limit on amount of char/acc vars), improvements to processing and storage of char/acc variables. Catching UpWe hear you, we're lagging on staying up to date with the releases of other projects, we'll be prioritising towards catching up with them. Hercules Stress Test ServerI'll be delaying the release of our Stress Test Server, while it is now viable thanks to hooking, I'd like to prioritise catching up with other releases
  9. Upvote
    Ind reacted to ossi0110 in [Guide] Adding Custom Homunculus   
    Hello Hercules,   Here is a Guide on how to ADD a Custom Homunculus into your Server and Client . Special Thanks to "Neo" for helping me and providing me the xDiff file for it   The Hardcoded Client Limit of Homunculus are 6052,  The xDiff file raises this  limit till 7000. So we can use many Custom Homunculus now   For this Guide I'm using the IDs 6080 and 6081, you can use any ID between 6053 - 7000.       Server Side Configuration.     First we need to ADD our Custom Homunculus in the db/homunculus_db.txt Simply follow the existing format.    In my example here I am using ID 6080 for my Custom Homunculus ID and 6081 will be the Evolved Custom Homunculus ID    
    6080,6081,Hercules,537,60000,0,1,7,0,700,150,40,17,20,15,35,24,12,60,100,4,9,5,19,5,19,5,19,4,20,6,20,6,20,1,10,10,20,1,5,1,4,1,5,4,10,1,10,1,3   
      Now let add some skills for them. Open db/homun_skill_tree_db.txt Here we need to set all Skill for our New Homunculus , in my Example I Used the Skill from the Vanilmirth Homunculus.    
    //Hercules Custom Homunculus6080,8013,5,0,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE6080,8014,5,8013,3,0,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC6080,8015,5,8013,5,0,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT   
      Server Source code Modifications     Now lets move on to the SRC folder. Open mmo.h (SRC/COMMON/mmo.h)   search for this  line   #define MAX_HOMUNCULUS_CLASS 52   
      Currently this limits usable IDs to 6001-6052   Change to     
    #define MAX_HOMUNCULUS_CLASS 1001   
      now we can use IDs from 6053-7000 as well for Homunculus.   Remember the xDiff only raises till 7000 now so if you add it beyond that range you are out of luck for now.   Next we open the homunculus.c (SRC/MAP/homunculus.c)   here we search for   // Normal Homunculus   you will see a few case statements following this line. We need to add our Regular Homunculus here In my example I am adding case 6080: (it should look like this)    
    // Normal Homunculus case 6001: case 6005: case 6002: case 6006: case 6003: case 6007: case 6004: case 6008: case 6080:   
    Same way below it you will see the cases for Evolved Homunculus so we add ours there. In my example I am adding case 6081: (it should look like this - you can skip this step if you dont have an evolved one)    
    // Evolved Homunculus case 6009: case 6013: case 6010: case 6014: case 6011: case 6015: case 6012: case 6016: case 6081:   
    Now save the file. Source code modifications are done so recompile the server.         Client Side Changes.   First what you need is a client that supports the addition of custom Homunculus.  Make your patched client (better to have official patches already patched up first). Download the xDiff file for your client date from http://sourceforge.net/p/neocustoms/code/HEAD/tree/xDiffs/ Patch your client with the downloaded xDiff File using xDiffPatcher (Select Enable Custom Homunculus)    You are Ready to Rumble.   Now that you have the client, let's make it use our homun sprites. First we add the Homunculus ID to npcidentity.lub at the end. (dataluafiles514lua filesdatainfonpcidentity.lub) Mine are as follows.    
    JT_MER_Water_Ghost = 6080,JT_MER_Water_Ghost2 = 6081   
      You will also notice the following line in the same file  
    JT_MER_LAST = 6053  
     
      Now that we have more 6052 it would be wise to set it to the max value + 1 = 7001 to avoid confusion i.e.  
    JT_MER_LAST = 7001,   
      Save & Close npcidentity.lub   Now we add the sprite information in jobname.lub at the end (dataluafiles514lua filesdatainfojobname.lub) the same way you would add for a mob or npc.    
    [jobtbl.JT_MER_Water_Ghost] = "Water_Ghost",[jobtbl.JT_MER_Water_Ghost2] = "Water_Ghost2"   
      Now that the Lua files are done we can add the sprite files into the appropriate folder which is => data/sprite/homun In my example I will add the following files to that folder : Water_Ghost.spr, Water_Ghost.act, Water_Ghost2.spr and Water_Ghost2.act   All the files are set . Now you can start your client and test out your homunculus. Fastest way to check => use @makehomun 6080   Enjoy your Custom Homunculus!!     ossi0110
  10. Upvote
    Ind got a reaction from evilpuncker in @autotrade to persist through reboots/crashes   
    this is a planned feature to be built in into hercules, should be added soon.
  11. Upvote
    Ind got a reaction from Angelmelody in @autotrade to persist through reboots/crashes   
    this is a planned feature to be built in into hercules, should be added soon.
  12. Upvote
    Ind got a reaction from Jey in Hercules April 22 Patch   
    Hercules April 22 Patch
    Hello~! - What?!
    1st, most of these things were meant to be released separately but as I started to work with them one thing hooked up to another and I ended up deciding to get all out at once No second today! The all-long, all-mighty list
    New Map Zone DB Updates Added New "All" Zone, easy way to add modifiers to all maps in the game. Automatically inherited by all existent zones. Added new zone setting disabled_commands, can disable any command in any zone "command-name: min-group-lv" also supports min group level to override, to enable back a command disabled by inheritance just use "command-name: 0" Added new zone setting skill_damage_cap (as requested by the community), can cap any skill damage to any range of unit types, and also a new core config "HMAP_ZONE_DAMAGE_CAP_TYPE" that controls how the cap is applied (before or after modifiers) New target-type support (used by skill_damage_cap and disabled_skills): PET (special thanks to frenzmu06 for bringing it up!), CLONE and MOB_BOSS Added support to ids! item and skill ids may now be employed in all sections of the file in the place of item/skill names Detailed Map Zone DB Update Hercules Channel System Update Added a IRC bridge as requested by the community, allows users outside of the game (but in a irc network e.g. thru mobile/cel app) to communicate with anyone in-game that is within a specific #channel, and vice-versa Detailed Channel System Update Added Beret and Yommy's suggestion on cash shop file format, also added support for item ids Added Ryuuzaki's kafra point support to the new cashshop Updated map-server's save_setting, added new option: 128, to save buyingstore transactions on the fly Revisited bindatcmd feature, dropped level support, added group level support and added a new flag capable of deciding whether calls to that command should be logged in the atcommand log. Performance Improvement Added a in-memory list to store existent shops (saves iterating through all online players) Modified searchstore to use said db above, making its queries faster Improved pc_groups processing, decreased runtime ram usage by a about 1mb. Improved @command log processing through groups, now caching the state (no longer does dbmap lookup). Improved atcommand.conf file processing (was doing a extra lookup instead of using atcommand_exists already-performed lookup result) Improved atcommand's help file processing (no more lookups! string is now cached directly in the atcommandinfo struct of each command) and data management Improved @help's processing: dropped the huge config file lookup and replaced by using the caches. Improved atcommand logging, added option to not log specific commands (so you dont waste log room with stuff such as @iteminfo/@mobinfo/etc) -- atcommand.conf nolog group Sightly improved zone inheritance processing. Speeded up mvp drop processing Speeded up item log processing Speeded up mob item drop processing Misc With map_zone_db's new clone support, flag 0x8000 (no-clone-use) in the skill db was dropped With map_zone_db's new way to block commands, mapflag nogo was dropped. Fixed a number of discrepancies between unsigned and signed variables in many packets. Fixed loading messages for exp_db, attr_fix, statpoint, mob_chat_db, mob_pouch, mob_branch, mob_classchange, mob_boss, mob_poring and item_group_db pets from gms who cant drop items no longer can loot items (prevents exploit where gm kills something, pet loots, then drops and action is not logged nor blocked). Fixed combo bonuses that used getrefine on weapons/cards that affect weapons. Added @searchstore as to offer same availability to gms as @auction/@mail does Improved 2013 client charselect procedure, all thanks to Yommy! Links~!
    Commit
  13. Upvote
    Ind got a reaction from IndieRO in Introducing Hercules' Map Zone Database   
    Introducing Hercules' Map Zone Database
    Hello~! - What?!
    1st, it is a merge from item_noequip.txt and skill_nocast_db.txt functionality. 2nd, it is a major improvement on what these features did in both performance and usability. map_zone_db.txt format sample
    {     name: "My Zone"     inherit: ( "My Other Zone" )     disabled_skills: {         AL_HEAL: "PLAYER | MONSTER | ELEMENTAL"         AL_TELEPORT: "MONSTER"         MG_FIREBOLT: "NONE"         //MG_NAPALMBEAT: "PLAYER"         //ID11: "PLAYER"     }     disabled_items: {         Assumptio_5_Scroll: false         //Apple: true         //ID501: true     }     mapflags: (         "adjust_skill_damage    MG_FIREBOLT    250",         "adjust_unit_duration    PR_SANCTUARY    50"     )     /* "command:min-group-lv-to-override" e.g. "heal: 70" */     disabled_commands: {         //Example Below makes @heal be used in maps within this zone only by those group lv 70 and above         //heal: 70     }     skill_damage_cap: {         //Exemple Below caps firebolt damage in maps within this zone to a maximum 50 damage,         // (depends on HMAP_ZONE_DAMAGE_CAP_TYPE in src/config/core.h)         // when cast vs players and monsters.         //MG_COLDBOLT: (50,"PLAYER | MONSTER")     } } Notes on the format
    In disabled_skills the var following the name (: "PLAYER | MONSTER | HOMUN | MERCENARY | ELEMENTAL | PET | CLONE | MOB_BOSS") is what allows a zone to know what unit types should have this skill disabled. In the sample above, for example, in My Zone, player, monster and elemental unit types are unable to cast heal, while only monsters are unable to cast teleport. this variable may also be used to ignore skills from inheritance, for example if My Other Zone disabled a number of skills, including MG_FIREBOLT, in My Zone all of them will be disabled as well, except for MG_FIREBOLT since it is set as NONE. In disabled_items the var following the name (: true or : false) is what allows a zone to override what it inherited, for example if My Other Zone disables a number of items, including Assumptio_5_Scroll, in My Zone all of them will be disabled as well, except Assumptio_5_Scroll since it is as false. A zone may enforce an unlimited number of mapflags on all its maps, by using this sample all maps under My Zone will have Fire Bolt damage increased by 2.5x and Sanctuary will have its duration halved. A unlimited number of maps may be linked to a specific zone through a mapflag '<map name><tab>mapflag<tab>zone<tab><zone name>' Changes The mf_restrict (restrict) was dropped. item_noequip.txt and skill_nocast_db.txt were dropped, replaced by map_zone_db.txt. setmapflag script command was modified to support the new zones. @mapinfo was modified to support the new zones, also modified the formatting and made it include the amount of vendings. Improvements As opposed to item_noequip.txt and skill_nocast_db.txt, map_zone_db.txt supports an unlimited number of zones. map_zone_db.txt implementation surpasses the ones from item_noequip.txt and skill_nocast_db.txt, making item equipping (pc_useitem/status_calc_pc) and skill using (previously skillnotok, now status_check_skilluse) processing much faster and efficient. @mapinfo performance was improved (was doing chat room dbmap lookups without even checking if player was on the map in question) Special Thanks to Muad_Dib <3. to lighta for discussing the feature with me and helping design the unit-based restrictions on skills to Bahmut and Emistry for ideas on how to format the file. to kyeme for feature ideas. Links~! Commit Commit 2 (update) Map Zone Database File
  14. Upvote
    Ind got a reaction from Jedzkie in Memory Slasher !!" - May 30 Patch   
    Hercules casts "Memory Slasher !!" - May 30 Patch
    Memory Slasher !!
    Regardless all the fancy features in it, this patch's greatest achievement is smart, clever employment of memory, by looking at our memory usage wisely we've been able to reduce map-server's memory (RAM) usage by more than 2/3, about 183MB of RAM were dropped, while maintaining Hercules outstanding record on performance improvement. Beyond the memory usage drop there is also a significant processing speed improvement which can be noticed during boot, map cache loading which used to account for most of the map-servers boot time no longer exists, its gone, dead, fini, boom! it was replaced by a smart map cache handler that loads its data only when a map is necessary (the data is then kept until shut down), this logic also makes map-server's shut down process a hell lot faster.
     
    Instance Rework
    As suggested by the community, this wasnt supposed to be bundled with this commit but the memory usage improvements required me to modify how instances were stored, so I re-wrote part of it to fit the suggestion as well.
    Instance Functionality/Feature Server may now create instances of any maps regardless of client-side edits, e.g. one can clone prontera and call it "mymapname" (as is best described in the *instance_attachmap script command note) Instances may now be available in 4 distinct ways (as is best described in *instance_create script command note), by nobody (server type instance, to be used with special map names), by a sole character, by a party, or by a guild Script Command Changes *instance_create 2nd param is now called owner_id instead of party_id, and it got a 3rd optional param that defines what kind of owner id it is (when not provided, assumes party_id, for backwards compatibility), available options are (IOT_ stands for INSTANCE OWNER TYPE) IOT_NONE (0), IOT_CHAR (1), IOT_PARTY (2) and IOT_GUILD (3). *instance_destroy no longer autodetects instance id from party id *instance_attachmap now supports a 4th, optional, param, "<new map name>", it will allow you to specify a entirely new map name for the instance (without the need of client-side edits). This option can be best employed when used on a instance of <owner_type> IOT_NONE *instance_detachmap no longer autodetects instance id from party id *instance_id no longer supports any param *instance_set_timeout no longer autodetects instance id from party id *instance_announce no longer autodetects instance id from party id, and to tell it to autodetect from the attached script you must set instance_id param as -1 as opposed to 0 *instance_npcname no longer autodetects instance id from party id *has_instance no longer autodetects instance from party, however it now checks if attached player possesses a instance with same map as has_instance(<param>) checks for *instance_warpall no longer autodetects instance from party Other ChangesInstance IDs (valid ones) are now always >= 0 as opposed to > 0 (update your scripts!) Battlegrounds Queue
    As suggested by the community, most of its features were added in this patch, we were unable to finish it though because we lacked some information, we've put our questions in this topic, once our questions are answered we should be able to finish it in a matter of minutes (all the heavy lifting was done in this patch).
    Arenas They're easily configurable in the new conf/battlegrounds.conf file, it possible to add more arenas by editing the client's lua files/entryqueue/entryqueuelist.lua file Configuration Sample arenas: ({    name: "Tierra Gorge" //must match the name in client files    event: "Tierra_BG2::OnPlayerListReady"    minLevel: 80    maxLevel: 150    reward: {/* amount of badges awarded on each case */        win: 3        loss: 1        draw: 1    }    minPlayers: 6 /* minimum amount of players to start */    maxPlayers: 60 /* maximum amount of players */    minTeamPlayers: 6 /* minimum amount of team members required for a team (party or guild) to join */    delay_var: "Tierra_BG_Tick" /* npc variable name that will store the delay for this match */    maxDuration: 30 /* maximum duration in minutes, if reached game ends and highest score wins (or calls a draw if scores are equal) */},{    name: "KVM (Level 59 and below)" //must match the name in client files    event: "KvM03_BG::OnPlayerListReady"    minLevel: 1    maxLevel: 59    reward: {/* amount of badges awarded on each case */        win: 1        loss: 0        draw: 0    }    minPlayers: 4 /* minimum amount of players to start */    maxPlayers: 60 /* maximum amount of players */    minTeamPlayers: 5 /* minimum amount of team members required for a team (party or guild) to join */    delay_var: "KVM_BG_Tick" /* npc variable name that will store the delay for this match */    maxDuration: 30 /* maximum duration in minutes, if reached game ends and highest score wins (or calls a draw if scores are equal) */}) QueueWe wanted to make the queue as easy to play with as possible, so we've created a whole new set of script commands designed with this purpose. These commands make it easy to create and control queues for anything, games, events, quests, and of course in this case, the battleground's queue. Queue - Script Commands *queue()creates a new queue instance, returns created queue id set .@id,queue(); *queuesize(<queue_id>)returns the amount of entries in queue instance of <queue_id>. set .@length,queuesize(.@queue_id); *queueadd(<queue_id>,<var_id>)adds <var_id> to queue of <queue_id>, returns 1 if <var_id> is already present in the queue, 0 otherwise. queueadd(.@queue_id,.@var_id); *queueremove(<queue_id>,<var_id>)removes <var_id> from queue of <queue_id>, returns 1 if <var_id> is not present in the queue, 0 otherwise. queueremove(.@queue_id,.@var_id); *queueopt(<queue_id>,<optionType>,{Optional <option val>})modifies <queue_id>'s <optionType>, when <option val> is not present, <optionType> is removed from <queue_id>, when present it modifies <queue_id>'s <optionType> with the new <option val> value.
    Currently 3 options are available, HQO_OnDeath (0), HQO_OnLogout (1), HQO_OnMapChange (2) (the constant names are not final). queueopt(.@queue_id,0,"MyNPC::MyOnQueueMemberDeathEventName");It allows you to hook npc events to be triggered by specific actions that may happen to a player in the queue (when the queue in question is used for account ids) *queuedel(<queue_id>)deletes <queue_id> returns 1 when <queue_id> is not found, 0 otherwise. queuedel(.@queue_id); *queueiterator(<queue_id>)creates a new queue iterator instance, a queue iterator is not a reference to a queue's actual members, it copies the queues members when initialized, this way you can loop through them even if you remove them from the queue set .@it,queueiterator(.@queue_id); *qicheck(<queue_iterator_id>)checks whether there is a next member in the iterator's queue, 1 when it does, 0 otherwise. qicheck(.@queue_iterator_id); *qiget(<queue_iterator_id>)obtains the next member in the iterator's queue, returns the next member's id or 0 when it doesnt exist. for( set .@elem,qiget(.@queue_iterator_id); qicheck(.@queue_iterator_id); set .@elem,qiget(.@queue_iterator_id) ) *qiclear(<queue_iterator_id>)deletes a queue iterator from memory, returns 1 when it fails, 0 otherwise. qiclear(.@queue_iterator_id) Sample Usage: /* say create a queue */set .@id,queue();queueadd(.@id,getcharid(3));/* ... add as many entries ... (no limit) */if( queuesize(.@id) == 999 ) {    /* whatever */}/* anywhere in the code */set .@it,queueiterator(.@id);for( set .@elem,qiget(.@it); qicheck(.@it); set .@elem,qiget(.@it) ) {    //do anything e.g.    /* attachrid .@elem; */    /* mes "ID:"+.@elem; */}qiclear(.@it); Special Thanks To
    Yommy for providing me with a hell lot of data for the BG Queue, wouldn't have been able to get it to this point without his help. Rosiel for his suggestion on the instance feature Xgear for his help with the network timeout bug mkbu95 for pinpointing the script parser bug All of Hercules Staff for their ideas/suggestions/criticism and support, and for keeping me sane during this memory slashing madness The Future~! This patch sure has taken me away from my usual bug-squashing mode, I'll be going back to my over-10-bug-fix-a-day schedule. We have quite a hell lot planned so this might not last long, make sure to keep an eye on your bug reports for I sure will be replying to them. Link~u! Commit 1 Commit 2 Commit 3
  15. Upvote
    Ind got a reaction from Hadeszeus in Introducing Cash Shop Support   
    Cash Shop Support
    Hello~! - What?!
    1st, getting this together has only been possible thanks to Yommy 2nd, really, without Yommy's help this wouldn't have worked 3rd, did I already mention Yommy made this possible? screenHercules006.jpg
    cashshop_db.conf format
    //==================================================== //=       _   _                     _ //=      | | | |                   | | //=      | |_| | ___ _ __ ___ _   _| | ___  ___ //=      |  _  |/ _ \ '__/ __| | | | |/ _ \/ __| //=      | | | |  __/ | | (__| |_| | |  __/\__ \ //=      \_| |_/\___|_|  \___|\__,_|_|\___||___/ //=                                                   //=            http://herc.ws/board/                         //==================================================== //= http://herc.ws/board/topic/367-introducing-cash-shop-support/ cash_shop: ( {     cat_0: { //New         Apple:100         ID531:250     }     cat_1: { //Popular         ID513:100         Banana_Juice:250     }     cat_2: { //Limited         Grape:100         ID533:250     }     cat_3: { //Rental         ID515:100         Carrot_Juice:250     }     cat_4: { //Permanent         Green_Herb:100         ID510:250     }     cat_5: { //Scroll         ID501:100         ID502:250     }     cat_6: { //Usable         White_Potion:150         Blue_Potion:500     }     cat_7: { //Other         ID909:400         ID907:500     } } ) Is it ready?!
    The packets work, you can buy, list, etc. BUUUUT I wouldn't bet it is 100% complete -- I'm not very aware of how the cashpoint stuff works, I'd guess the behavior is not 100% -- BUUUT getting the packets to work was the toughest part, just drop us a bug report and we sure will fix any broken formulas instantly. I'm not aware of what the official servers have in it being sold either, I've put random garbage with absurdly high prices in the db (so we all can debug). BTW This only works on ragexe (not ragexere!) clients, e.g. : http://herc.ws/board/topic/289-2013-ragexe-area/ Special Thanks
    Yommy Yommy ...Yommy! malufett Judas Beret kLabMouse And everyone whos helped us get the 2013 client to work, Thank you All! to Beret and Yommy for the new file format suggestion! Links~!
    Commit cashshop_db.conf file
  16. Upvote
    Ind got a reaction from fourxhackd in Introducing Hercules Channel System   
    Introducing Hercules' Channel System
    Hello~! - What?!
    1st, it is a replacement for the old @main 2nd, it is a super ultra mega improvement compared to the functionality @main provided. 3rd, whops. there is no 3rd. channels.conf format
        /* default channels (available on boot) */     default_channels: {         /* channel_name : channel_messages_color */          main: "Orange" /* available as #main */         support: "Blue" /* available as #support */         trade: "Red" /* available as #trade */         offtopic: "Cyan" /* available as #offtopic */         /* as many channels as you like */     }     /* colors available */     colors: {         Default: "0xffffff" /* custom channels will use the first in the list unless a font is selected thru @channel */         Red: "0xff0000"         Blue: "0x83cfe9"         Orange: "0xe57c00"         Cyan: "0x00b89d"         Yellow: "0xffff90"         Green: "0x28bf00"         Normal: "0x00ff00"         /* as many colors as you like */     }     /* allow users to create their own (private) channels through @channels command? */     /* (must also allow players to use @channels in groups.conf) */     allow_user_channel_creation: true     /* "map_local_channel" is a instanced channel unique to each map */     map_local_channel: true     map_local_channel_name: "map" /* available as #map */     map_local_channel_color: "Yellow"     map_local_channel_autojoin: true /* can disable autojoin in specific maps through mapflag or zone: nomapchannelautojoin */     /* "ally_channel" is a channel shared by all your guild allies */     ally_channel_enabled: true     ally_channel_name: "ally" /* available as #ally */     ally_channel_color: "Green"     ally_channel_autojoin: true Notes on the format/configuration
    default_channels is the list of reboot-persistent channels, you can setup as many as you like and each can have its own color for chat, which you can specify in colors (again, you can setup as many as you like) map_local_channel is a feature that grants each map its own instanced channel (available, by default as #map -- which can be changed as per map_local_channel_name) map_local_channel_autojoin whether users will autojoin the local channel when they load a map with it enabled map_local_channel_autojoin can be disabled on selected maps (e.g. if you dont want it on gvg maps) through a mapflag (with a horribly long name D:) '<map name><tab>mapflag<tab>nomapchannelautojoin' ally_channel_enabled is a feature that grants a instanced channel for each guild's allies (as well as their own members), available by default as #ally -- which can be changed as per map_local_channel_name ally_channel_autojoin whether users will autojoin their respective ally chats upon login. New Commands Explained
    @join Simple: @join <#channel_name>or, for password-protected rooms: @join <#channel_name> <password> @channel Does a number of things. Create a new channel (option available as long as allow_user_channel_creation is enabled) @channel create <#channel_name> <password> List public channels (groups with hchsys_admin can view private channels as well) @channel list Change a channel's color (requires to be owner of said channel or be in a group with hchsys_admin permission) @channel setcolor Samples available colors and displays their keys/names @channel list colors Leaves a specific channel @channel leave <#channel_name> Binds your global chat to a specific channel, making everything you type that'd normally be displayed to nearby characters be redirected to that channel instead @channel bindto <#channel_name> Unbinds your global chat from the current (if any) binded channel @channel unbind Bans a specific character from a channel @channel ban <#channel name> <character name> Lists all banned characters from a channel (groups with channel system admin permission can also see their account id) @channel banlist <#channel name> Unbans a specific character from a channel @channel unban <#channel name> <character name> Changes a channel's options (for now, channel message delay and announce-when-someone-joins) @channel setopt <#channel name> <option name> <option value> How to speak in a #channel
    You can either bind a channel to your global chat (see @channel bindto above) or PM the channel you want to speak to, if you attempt to send a pm to a non-password protected channel that you have not joined, you'll autojoin. Other stuff
    as I coded this feature I also improved overall guild processing/lookup, extremely, extremely faster (did I already say its ridiculously faster? WoE overhead probably more than halved with this). over a hundred lookups were replaced by a cached guild state that takes only 4~8 bytes per player. The commit also fixed a "wearing-garment-removed-costume-garment-look" bug - special thanks to jTynne for letting me know~! Groups with channel admin permission can bypass the channel message delay Special Thanks
    to Streusel for proposing an idea that'd end up as the @channel bindto feature. to Frost for proposing the per-channel message delay limitation to Fatalis for proposing what'd end up as the @channel ban, @channel unban and @channel unbanall to Zopokx for proposing an improvement to how the map/local channels function Links~!
    Commit Commit (update)
  17. Upvote
    Ind got a reaction from sketchyphoenix in Hercules Plugin Manager: Update   
    Hercules Plugin Manager: Update
    Hello~! What?
    This is the first major update to our Hercules Plugin Manager, HPM, since it has been first introduced some 3 months ago Made Possible Thanks to Haruna, Gepard and Xgear In this Update
    Initial Char and Login Server support Custom Packet support (and thus ability to override existent packets) in all 3 servers Initial Custom Data Struct supportThe ability for a plugin to create and append data structs to existent data, currently available to player units (map_session_data) and network pipes (socket_data), we'll be extending this to others as we go by, drop us a word if you need it somewhere it isn't available yet Documentation Update
    The documentation is currently being updated and will be available over http://herc.ws/wiki/HPM once it is complete The sample (src/plugins/sample.c) has been updated to demonstrate the usage of the new features Up-and-Coming
    HPM HooksSince HPM was first released we've greatly advanced in the design of this feature, which will take full advantage of our Hercules Renewal Phase One and be extremely efficient Hercules Stress Test ServerOur Stress Test Server will become a reality as soon as the HPM Hooks is released, as it is the one condition necessary for it to function as we intend it to Link!~u
    Commit
  18. Upvote
    Ind reacted to Gepard in Flux Control Panel for Hercules   
    Well then, if pros and cons have to be studied, then go study first, and only then come here and share your wisdom. Cause right now you're talking some totally general stuff about how cool would it be to do this and that, but you are not willing to discuss any specific issues related to FluxCP, which this topic happens to be about.
     
    I'm not discrediting anything you say, I'm just pointing that what you're saying isn't really useful for further FluxCP development, so in fact irreleveant. I don't see the point in discussing "why FluxCP isn't so awesome as I'd like it to be" or similarly abstract stuff, but unfortunately that's exactly what you're trying to "discuss" here. 
     
    It's you who started the bashing without giving any reasonable points and it's you who first came to weird conclusions ("this topic is fluxcp ad"). If you claim that some app has "conception fails and critical exploits" you must have something to back up your words. That's what I expect from a serious discussion.
     
    That being said, I'm waiting for a PM with details about the exploit you mentioned.
     
    Last but not least, I'm sorry for being so straightforward. This is just how I am, and I'm not really hostile towards you or anything like that. 
  19. Upvote
    Ind got a reaction from jaBote in Hercules Plugin Manager: Update   
    Hercules Plugin Manager: Update
    Hello~! What?
    This is the first major update to our Hercules Plugin Manager, HPM, since it has been first introduced some 3 months ago Made Possible Thanks to Haruna, Gepard and Xgear In this Update
    Initial Char and Login Server support Custom Packet support (and thus ability to override existent packets) in all 3 servers Initial Custom Data Struct supportThe ability for a plugin to create and append data structs to existent data, currently available to player units (map_session_data) and network pipes (socket_data), we'll be extending this to others as we go by, drop us a word if you need it somewhere it isn't available yet Documentation Update
    The documentation is currently being updated and will be available over http://herc.ws/wiki/HPM once it is complete The sample (src/plugins/sample.c) has been updated to demonstrate the usage of the new features Up-and-Coming
    HPM HooksSince HPM was first released we've greatly advanced in the design of this feature, which will take full advantage of our Hercules Renewal Phase One and be extremely efficient Hercules Stress Test ServerOur Stress Test Server will become a reality as soon as the HPM Hooks is released, as it is the one condition necessary for it to function as we intend it to Link!~u
    Commit
  20. Upvote
    Ind got a reaction from Jedzkie in Hercules Plugin Manager: Update   
    Hercules Plugin Manager: Update
    Hello~! What?
    This is the first major update to our Hercules Plugin Manager, HPM, since it has been first introduced some 3 months ago Made Possible Thanks to Haruna, Gepard and Xgear In this Update
    Initial Char and Login Server support Custom Packet support (and thus ability to override existent packets) in all 3 servers Initial Custom Data Struct supportThe ability for a plugin to create and append data structs to existent data, currently available to player units (map_session_data) and network pipes (socket_data), we'll be extending this to others as we go by, drop us a word if you need it somewhere it isn't available yet Documentation Update
    The documentation is currently being updated and will be available over http://herc.ws/wiki/HPM once it is complete The sample (src/plugins/sample.c) has been updated to demonstrate the usage of the new features Up-and-Coming
    HPM HooksSince HPM was first released we've greatly advanced in the design of this feature, which will take full advantage of our Hercules Renewal Phase One and be extremely efficient Hercules Stress Test ServerOur Stress Test Server will become a reality as soon as the HPM Hooks is released, as it is the one condition necessary for it to function as we intend it to Link!~u
    Commit
  21. Upvote
    Ind got a reaction from mkbu95 in Hercules Plugin Manager: Update   
    Hercules Plugin Manager: Update
    Hello~! What?
    This is the first major update to our Hercules Plugin Manager, HPM, since it has been first introduced some 3 months ago Made Possible Thanks to Haruna, Gepard and Xgear In this Update
    Initial Char and Login Server support Custom Packet support (and thus ability to override existent packets) in all 3 servers Initial Custom Data Struct supportThe ability for a plugin to create and append data structs to existent data, currently available to player units (map_session_data) and network pipes (socket_data), we'll be extending this to others as we go by, drop us a word if you need it somewhere it isn't available yet Documentation Update
    The documentation is currently being updated and will be available over http://herc.ws/wiki/HPM once it is complete The sample (src/plugins/sample.c) has been updated to demonstrate the usage of the new features Up-and-Coming
    HPM HooksSince HPM was first released we've greatly advanced in the design of this feature, which will take full advantage of our Hercules Renewal Phase One and be extremely efficient Hercules Stress Test ServerOur Stress Test Server will become a reality as soon as the HPM Hooks is released, as it is the one condition necessary for it to function as we intend it to Link!~u
    Commit
  22. Upvote
    Ind got a reaction from JulioCF in Hercules Plugin Manager: Update   
    Hercules Plugin Manager: Update
    Hello~! What?
    This is the first major update to our Hercules Plugin Manager, HPM, since it has been first introduced some 3 months ago Made Possible Thanks to Haruna, Gepard and Xgear In this Update
    Initial Char and Login Server support Custom Packet support (and thus ability to override existent packets) in all 3 servers Initial Custom Data Struct supportThe ability for a plugin to create and append data structs to existent data, currently available to player units (map_session_data) and network pipes (socket_data), we'll be extending this to others as we go by, drop us a word if you need it somewhere it isn't available yet Documentation Update
    The documentation is currently being updated and will be available over http://herc.ws/wiki/HPM once it is complete The sample (src/plugins/sample.c) has been updated to demonstrate the usage of the new features Up-and-Coming
    HPM HooksSince HPM was first released we've greatly advanced in the design of this feature, which will take full advantage of our Hercules Renewal Phase One and be extremely efficient Hercules Stress Test ServerOur Stress Test Server will become a reality as soon as the HPM Hooks is released, as it is the one condition necessary for it to function as we intend it to Link!~u
    Commit
  23. Upvote
    Ind got a reaction from Jguy in Hercules Plugin Manager: Update   
    Hercules Plugin Manager: Update
    Hello~! What?
    This is the first major update to our Hercules Plugin Manager, HPM, since it has been first introduced some 3 months ago Made Possible Thanks to Haruna, Gepard and Xgear In this Update
    Initial Char and Login Server support Custom Packet support (and thus ability to override existent packets) in all 3 servers Initial Custom Data Struct supportThe ability for a plugin to create and append data structs to existent data, currently available to player units (map_session_data) and network pipes (socket_data), we'll be extending this to others as we go by, drop us a word if you need it somewhere it isn't available yet Documentation Update
    The documentation is currently being updated and will be available over http://herc.ws/wiki/HPM once it is complete The sample (src/plugins/sample.c) has been updated to demonstrate the usage of the new features Up-and-Coming
    HPM HooksSince HPM was first released we've greatly advanced in the design of this feature, which will take full advantage of our Hercules Renewal Phase One and be extremely efficient Hercules Stress Test ServerOur Stress Test Server will become a reality as soon as the HPM Hooks is released, as it is the one condition necessary for it to function as we intend it to Link!~u
    Commit
  24. Upvote
    Ind got a reaction from karazu in Flux Control Panel for Hercules   
    in that case i'd recommend you go visit your eye doctor, because that has not been said here.We saw many of our users struggling with their fluxcp installations and, since the fluxcp repos have failed to help them, we decided to step in and fork to help these users ourselves. and that is all there is to it. I myself like ceres better, but our users were struggling with flux and not ceres, so we're forking flux to help these users.
  25. Upvote
    Ind got a reaction from Mumbles in Flux Control Panel for Hercules   
    in that case i'd recommend you go visit your eye doctor, because that has not been said here.We saw many of our users struggling with their fluxcp installations and, since the fluxcp repos have failed to help them, we decided to step in and fork to help these users ourselves. and that is all there is to it. I myself like ceres better, but our users were struggling with flux and not ceres, so we're forking flux to help these users.
×
×
  • Create New...

Important Information

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