Jump to content

Nebraskka

Members
  • Content Count

    44
  • Joined

  • Last visited


Reputation Activity

  1. Upvote
    Nebraskka reacted to Z3R0 in Back from the Dead   
    It's been a couple of years and for my absence, I want to apologize to those that knew me.
    I unfortunately went completely MIA. A lot has happened in the last couple of years, and I figured I owed it to some of you for just taking off the way I did.
    For the past couple of years, I have been going through a custody battle with my ex wife and it finally came to a close about a year ago. Work has been strenuous and I haven't really been able to do anything. I am finally to a point where I have stability in my life and things are finally looking up rather than down.
    I know I probably left many of you hanging and wondering... Where did Z3R0 go? I didn't die, I didn't leave, and I definitely missed RO.
    I'm coming back to study, to mentor, to help and support. I hope that you guys can forgive me for bum rushing out of here like I did, but I have always thought about the RO Community. I miss all of you, and I am so glad to be back.
    Z3R0
  2. Like
    Nebraskka got a reaction from IndieRO in [Question] How to add custom Emoticons   
    Try opening "data\sprite\이팩트\emotion.act" with ActEditor by @@Tokeiburu.
    There must be unused "Action index" from 88 to 92. Animate your own emoticon on any of those slots.
    Then you can modify lua files regarding emoticon commands and assign your own /word for emoticon here.
  3. Like
    Nebraskka reacted to zackdreaver in Community Help for Item Correct Information   
    Based on this issue page
    https://github.com/HerculesWS/Hercules/issues/980
     
     
    [1282] Krieger_Katar2
     
     
     
    [1661] Mental_Destroyer
     
     

    [2126] Guyak_Shield
     
     
     
    [2274] Ghost_Bandana
     
     

    [2936] Recovery_Ring
     
     
     
    [2968] RWC_2012_Pendant
     
     
     
    [2969] RWC_2012_Pendant_
     
     
     
    [5387] Neko_Mimi_Kafra
     
     
     
    [5462] Spiked_Scarf
     
     
     
    [5463] Rainbow_Scarf
     
     
     
    [5467] Helm_Of_Dragoon
     
     
     
    [5469] Noble_Hat
     
     
     
    [5497] King_Tiger_Doll_Hat
     
     
     
    [5579] Wanderer's_Sakkat
     
     
     
    [5580] Red_Beret
     
     
     
    [5595] Eye_Of_Juno
     
     
     
    [18528] Tare_Neko_Cru
     
     
     
    [18540] Evil_Mask
     
     
     
    [18549] Nabi_Hair_Pin
     
     
     
    [2647] Nile_Rose
     
     
     
    [5254] Deviling_Hat
     
     

    [12221] Megaphone_
     
     
     
    [5660] Gryphon_Hat
     
     
     
    [18580] Yggdrasil_Crown
     
     

    [18602] Watermelon_Slice
     
     

    [18626] Gelato_Hat
     
     

    [18629] B_Desert_Wolf_Hat
     
     

    [18671] Rudolf_Hairband
     
     

    [19026] Egir_Helm_K
     
     
     
    Please use kRO item database as reference
    http://ro.gnjoy.com/guide/runemidgarts/itemdefenselist.asp
     
     
    *Sorry for eyesore post
  4. Upvote
    Nebraskka reacted to Sephus in Introducing the Item Options System   
    Introducing the Item Options System!
     

     
    Commit
    https://github.com/HerculesWS/Hercules/commit/974222a8d3f189083205bf5d330de04a43226ad3
     
    Feature Information
    The Item Option System is a feature that was implemented in 2015-02-26 clients, allowing equipments to have up to 5 additional effects similar to cards or enchants. Each equipment is capable of having 5 information bars above the card slot/enchant bar that describes the effect of the option it is infused with.
     
    New Script Commands (The following snippet is available in doc/script_commands.txt.)
    *getequipisenableopt(<equipment slot>) This function checks if the equipped item allows the use of bonus options. Returns 1 if allowed, 0 if not. --------------------------------------- *getequippedoptioninfo(<info_type>); This function is to be used with the scripts of contents listed in db/item_options.conf only. Returns the value of the current equipment being parsed. If the equip was not found or the type is invalid, -1 is returned. --------------------------------------- *getequipoptioninfo(<equip_index>,<slot>,<type>); Gets the option information of an equipment. <equipment_index> For a list of equipment indexes see getequipid(). <option_slot> can range from 1 to MAX_ITEM_OPTIONS <type> can be IT_OPT_INDEX (the ID of the option bonus, @see "Id" or "Name" in db/item_options.conf) or IT_OPT_VALUE (the value of the bonus script of the equipment, @see "Script" in db_item_options.conf). returns the value of the slot if exists or -1 for invalid slot, type or slots. --------------------------------------- *setequipoption(<equip_index>,<slot>,<opt_index>,<value>); Set an equipment's option index or value for the specified option slot. <equipment_index> For a list of equipment indexes see getequipid(). <option_slot> can range from 1 to MAX_ITEM_OPTIONS <type> can be IT_OPT_INDEX (the ID of the option bonus, @see "Id" or "Name" in db/item_options.conf) <value> The value of the type to be set. returns 0 if value couldn't be set, 1 on success.  
     
    Release Notes
    This system allows the infusing of equipments with bonus item options. This feature is constrained to clients of packet versions greater than or equal to 20150226. Item Options and their effects are defined server-side in db/item_options.conf and client side in data/luafiles514/lua files/datainfo/addrandomoptionnametable.lub The ID of the option must tally with the correct index of the description provided in the client side file. IT_OPT_* keys and MAX_ITEM_OPTIONS macro are also exported from the source as constants. If you wish to disable item options for certain (equipment) items, an additional flag `disable_options` has been added to the item sql tables, and as `DisableOptions: true/false (boolean, defaults to false !!for equipments only!!)` to the item_db.conf files. Documentation is provided for script commands. If upgrading, don't forget to run the sql upgrade files!
    Credits
    A big thanks to all the reviewers that helped make the code closer to perfection. -
    Emistry, dastgir, MishimaHaruna, Jedzkie, Ridley8819, Asheraf, 4144.
     
    Style and Script Fixes by Asheraf (https://github.com/Asheraf)
    Initial design Idea in rAthena commit.
  5. Upvote
    Nebraskka reacted to Samuel in PartyBuff Plugin   
    Hello everyone!
     
    Updated Annie's plugin and applied Functor's bug fix.

    With this plugin, it will display party member's special buffs in party list (Alt+Z)
    Buffs are:
    Look like
    [BAFS+]Player name
     
    See original : Topic
     
    Enjoy!
     
    Plugin Link
  6. Upvote
    Nebraskka reacted to Ridley in Request mob_db the instance Faceworm   
    https://github.com/HerculesWS/Hercules/pull/1404
  7. Upvote
    Nebraskka reacted to Sephus in Hercules Battlegrounds   
    Hercules Battlegrounds
    A full conversion and enhancement of eAmod's Battlegrounds system into a easy-to-install Hercules plugin library.
    Version: 1.0a (alpha)
     

     
    Repository @ https://github.com/Smokexyz/HerculesBG

    Installation
    1) Place plugin files in plugin directory. (If you wish to re-compile the code, please do so the standard way.)
    2) Place all script files in the default directory provided in the repository (or your own).
    3) Place all database and config parts in their respective files.
    4) in conf/plugins.conf add "hBG".
     
    Instructions on installing Plugins - http://herc.ws/wiki/HPM#Building_a_plugin
     
    Battleground Modes
    Capture the Flag Eye of Storm Triple Inferno Team DeathMatch Bossnia Conquest Stone Control Domination Rush Free For All Why use it?
    1) Prevents conflicts when updating Hercules.
    2) Easy to install.
    3) Can be easily modified for more functions/features in the future.

    For contributors
    If you wish to add a free BG script to the list of available battleground modes, please contact me.
     
    Bug Reporting
    Please feel free to open an issue on the repository and I'll get to it as soon as I can.

    Donate to support the project and motivate updates.


  8. Upvote
    Nebraskka reacted to hemagx in [Collection] Sakura's Sprites 2016/9/21 Update,add 200+ headwear   
    that most perfect animation (and maybe even sprites) i've ever seen for RO
  9. Upvote
    Nebraskka reacted to Haru in Where is Herc Devs   
    No commits to the master branch doesn't mean there wasn't any development activity! There will be some commits soon, don't worry
  10. Upvote
  11. Upvote
  12. Upvote
    Nebraskka reacted to Haru in [2016-08-20] Configuration files converted to libconfig   
    Rationale:
    This changeset updates the syntax of the configuration files, to allow for more flexibility, and get rid of our some times buggy custom parser.
     
    Contents:
    All the txt-based configuration files in the conf folder have been replaced with more modular files that use the libconfig syntax. This allows more expressivity in the configuration syntax (i.e it allows to use arrays/lists/groups, especially in settings such as the starting items for players, or the hash check), but, more importantly, it allows to modularize and cross-reference some settings (for example, to change a database username and password, an user only needs to edit one file now, which is in turn included by the other files).
     
    Impact:
    Users will need to update their custom configuration. A tool that parses the old configuration and suggests appropriate edits, is included.
     
    Details:
    Some highlights about the improvements of the new syntax:
     
    The start items/start point syntax (char-server.conf) is now improved as follows:

    // Old syntax // Start point, Map name followed by coordinates (x,y) start_point_re: iz_int,97,90 start_point_pre: new_1-1,53,111 // Starting items for new characters // Format is: id1,quantity1,stackable1,idN,quantityN,stackableN // stackable: // 0 - Not stackable (weapon, armor, egg, pet armor) // 1 - Stackable start_items: 1201,1,0,2301,1,0 // Starting zeny for new characters start_zeny: 0 // New syntax player: { new: { // Start point (Renewal) start_point_re: { map: "iz_int" x: 97 y: 90 } // Start point (Pre-Renewal) start_point_pre: { map: "new_1-1" x: 53 y: 111 } // Starting items for new characters //{ // id: Item id // amount: Item amount // loc: Item position, same as in item_db if you want the item to be equipped, otherwise 0 (optional) // stackable: Is stackable? (not stackable item types: weapon, armor, egg, pet armor) //}, start_items: ( { id: 1201 // Knife amount: 1 loc: 2 stackable: false }, { id: 2301 // Cotton_Shirt amount: 1 loc: 16 stackable: false }, ) // Starting zeny zeny: 0 } The new format is certainly more verbose, but it's much easier to understand (and allows for new fields, see for example the 'loc' optional field of the starting items. 
    Another important feature is the 'global configuration' mechanism. There are files in conf/global/, that are included by all three (login, char, map) default configurations. For example, to globally edit the sql connection parameters for all three servers, an user can simply edit the configuration in conf/global/sql_connection.conf:
    sql_connection: { // [INTER] You can specify the codepage to use in your mySQL tables here. // (Note that this feature requires MySQL 4.1+) //default_codepage: "" // [LOGIN] Is `userid` in account_db case sensitive? //case_sensitive: false // For IPs, ideally under linux, you want to use localhost instead of 127.0.0.1. // Under windows, you want to use 127.0.0.1. If you see a message like // "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)" // and you have localhost, switch it to 127.0.0.1 db_hostname: "127.0.0.1" db_port: 3306 db_username: "ragnarok" db_password: "ragnarok" db_database: "ragnarok" //codepage:"" } In order to migrate the old configuration to the new format, a helper tool is provided in tools/configconverter.pl. The script will parse any existing config files with the old format, and suggest the corresponding new format. The user will need to manually paste the suggestions in the appropriate configuration file (we decided not to automate this, so that the settings are validated by a human, rather than blindly copied over). The helper tool is smart enough to understand which settings were left to their default setting in the old configuration file, and ignore them, only printing the relevant information. % perl tools/configconverter.pl =============== Hercules Configuration Migration Helper =============== = _ _ _ = = | | | | | | = = | |_| | ___ _ __ ___ _ _| | ___ ___ = = | _ |/ _ \ '__/ __| | | | |/ _ \/ __| = = | | | | __/ | | (__| |_| | | __/\__ \ = = \_| |_/\___|_| \___|\__,_|_|\___||___/ = ======================================================================= This tool will assist you through the migration of the old (txt-based) configuration files to the new (libconfig-based) format. Please follow the displayed instructions. ======================================================================= Checking conf/char-server.conf... Ok Checking conf/import/char_conf.txt... Old file is still present 1 non-default settings found. Please review and migrate the settings as described, then delete the file 'conf/import/char_conf.txt', as it is no longer used by Hercules. - Found setting: 'pincode_enabled'. Please manually move the setting to 'char-server.conf' as in the following example: char_configuration: { pincode: { enabled: false } } Checking conf/inter-server.conf... Ok Checking conf/import/inter_conf.txt... Old file is still present 0 non-default settings found. The file 'conf/import/inter_conf.txt' is no longer used by Hercules and can be deleted. Checking conf/login-server.conf... Ok Checking conf/import/login_conf.txt... Old file is still present 0 non-default settings found. The file 'conf/import/login_conf.txt' is no longer used by Hercules and can be deleted. Checking conf/map-server.conf... Ok Checking conf/import/map_conf.txt... Old file is still present 0 non-default settings found. The file 'conf/import/map_conf.txt' is no longer used by Hercules and can be deleted. Checking conf/logs.conf... Ok Checking conf/import/log_conf.txt... Old file is still present 0 non-default settings found. The file 'conf/import/log_conf.txt' is no longer used by Hercules and can be deleted. Checking conf/script.conf... Ok Checking conf/import/script_conf.txt... Old file is still present 0 non-default settings found. The file 'conf/import/script_conf.txt' is no longer used by Hercules and can be deleted. Checking conf/packet.conf... Ok Checking conf/import/packet_conf.txt... Old file is still present 0 non-default settings found. The file 'conf/import/packet_conf.txt' is no longer used by Hercules and can be deleted. Checking conf/battle.conf... Ok Checking conf/battle/battle.conf... Ok Checking conf/battle/client.conf... Ok Checking conf/battle/drops.conf... Ok Checking conf/battle/exp.conf... Ok Checking conf/battle/gm.conf... Ok Checking conf/battle/guild.conf... Ok Checking conf/battle/battleground.conf... Ok Checking conf/battle/items.conf... Ok Checking conf/battle/monster.conf... Ok Checking conf/battle/party.conf... Ok Checking conf/battle/pet.conf... Ok Checking conf/battle/homunc.conf... Ok Checking conf/battle/player.conf... Ok Checking conf/battle/skill.conf... Ok Checking conf/battle/status.conf... Ok Checking conf/battle/feature.conf... Ok Checking conf/battle/misc.conf... Ok Checking conf/import/battle_conf.txt... Old file is still present 0 non-default settings found. The file 'conf/import/battle_conf.txt' is no longer used by Hercules and can be deleted. Merge Date:Sat, 20 Aug 2016 16:27:11 +0300
     
    Related Pull Requests:
    - #1399 - https://github.com/HerculesWS/Hercules/pull/1399 - Ported the configuration to libconfig format [Haru]
     
    Related Commits:
    6be7aab - https://github.com/HerculesWS/Hercules/commit/6be7aab - Mon, 15 Feb 2016 16:19:38 +0100 Renamed some char and inter server variables [Haru]
    c84a447 - https://github.com/HerculesWS/Hercules/commit/c84a447 - Sun, 6 Sep 2015 18:08:14 +0200 Ported char-server.conf to libconfig [Haru]
    9783ce1 - https://github.com/HerculesWS/Hercules/commit/9783ce1 - Sun, 6 Sep 2015 17:58:28 +0200 HPM Hooks Update [Haru]
    ea9ceb1 - https://github.com/HerculesWS/Hercules/commit/ea9ceb1 - Mon, 7 Sep 2015 01:42:31 +0200 Ported inter-server.conf to libconfig [Haru]
    3c84a4d - https://github.com/HerculesWS/Hercules/commit/3c84a4d - Mon, 7 Sep 2015 01:39:50 +0200 HPM Hooks Update [Haru]
    f56264d - https://github.com/HerculesWS/Hercules/commit/f56264d - Thu, 11 Feb 2016 00:41:54 +0100 Ported login-server.conf to libconfig [Haru]
    9d70a6f - https://github.com/HerculesWS/Hercules/commit/9d70a6f - Sun, 21 Feb 2016 01:02:00 +0100 HPM Hooks Update [Haru]
    85d1088 - https://github.com/HerculesWS/Hercules/commit/85d1088 - Thu, 11 Feb 2016 13:28:18 +0100 Ported map-server.conf to libconfig [Haru]
    e370cc4 - https://github.com/HerculesWS/Hercules/commit/e370cc4 - Thu, 11 Feb 2016 13:39:49 +0100 HPM Hooks Update [Haru]
    86dde24 - https://github.com/HerculesWS/Hercules/commit/86dde24 - Thu, 11 Feb 2016 15:15:33 +0100 Improved map list loading [Haru]
    654bfa0 - https://github.com/HerculesWS/Hercules/commit/654bfa0 - Thu, 11 Feb 2016 15:29:27 +0100 HPM Hooks Update [Haru]
    dc2130b - https://github.com/HerculesWS/Hercules/commit/dc2130b - Sat, 19 Jul 2014 18:17:59 +0200 Updated Travis script to work with the new configuration files [Haru]
    5b983fc - https://github.com/HerculesWS/Hercules/commit/5b983fc - Thu, 11 Feb 2016 16:35:08 +0100 Ported npc config to libconfig [Haru]
    998b48e - https://github.com/HerculesWS/Hercules/commit/998b48e - Thu, 11 Feb 2016 16:38:26 +0100 HPM Hooks Update [Haru]
    1746627 - https://github.com/HerculesWS/Hercules/commit/1746627 - Thu, 11 Feb 2016 18:53:58 +0100 Ported logs.conf to libconfig [Haru]
    3f85b17 - https://github.com/HerculesWS/Hercules/commit/3f85b17 - Thu, 11 Feb 2016 18:57:33 +0100 HPM Hooks Update [Haru]
    aa3a3f4 - https://github.com/HerculesWS/Hercules/commit/aa3a3f4 - Fri, 12 Feb 2016 12:43:14 +0100 Ported script.conf to libconfig [Haru]
    8ecf562 - https://github.com/HerculesWS/Hercules/commit/8ecf562 - Fri, 12 Feb 2016 12:49:19 +0100 HPM Hooks Update [Haru]
    445a68f - https://github.com/HerculesWS/Hercules/commit/445a68f - Sun, 14 Feb 2016 01:00:00 +0100 Removed unnecessary typedefs in socket.c [Haru]
    a8ca27d - https://github.com/HerculesWS/Hercules/commit/a8ca27d - Sun, 14 Feb 2016 01:09:21 +0100 Changed access_allow and access_deny to VECTORs [Haru]
    c0e59c8 - https://github.com/HerculesWS/Hercules/commit/c0e59c8 - Fri, 12 Feb 2016 16:17:30 +0100 Ported socket.conf (was packet.conf) to libconfig [Haru]
    6cdb1e5 - https://github.com/HerculesWS/Hercules/commit/6cdb1e5 - Sat, 13 Feb 2016 15:38:23 +0100 Ported battle.conf to libconfig [Haru]
    67a84ce - https://github.com/HerculesWS/Hercules/commit/67a84ce - Sun, 17 Apr 2016 03:10:29 +0200 HPM Hooks Update [Haru]
    4e5b040 - https://github.com/HerculesWS/Hercules/commit/4e5b040 - Tue, 2 Aug 2016 01:35:41 +0200 Added option to make plugin-defined battle config entries optional [Haru]
    9e02b4e - https://github.com/HerculesWS/Hercules/commit/9e02b4e - Sat, 20 Aug 2016 15:18:14 +0200 Updated references to the old config in the documentation [Haru]
    af77eec - https://github.com/HerculesWS/Hercules/commit/af77eec - Sat, 20 Aug 2016 16:27:11 +0300 Merge pull request #1399 from HerculesWS/settings_libconfig [Andrei Karas]
     
     
    Trivia
    This change was started by our fellow developer Panikon back in 2014, and never completed until recently (September 2015, February 2016, April 2016, August 2016), when I restarted working on it.
  13. Upvote
    Nebraskka reacted to Kubix in Queue BG rewrite   
    Hello!
    I find eAmod BGs in public and rewrite some src and scripts for Hercules.
     
    BG:
    Conquest Rush Flavius TD Register - @joinbg or NPC, leave - @leavebg
    This is queue BG with multiple windows checking by Gepard ID or IP.
     
    Items:
    56 BG consumable items (using only on BG) with boxes 56 WoE consumable items (using only on WoE) with boxes Item list New script commands:
    bg_reward bg_team_reveal flooritem flooritem2xy bg_getitem bg_getkafrapoints bg_single bg_create_team (added OnPCDie and OnPCLogout events.) Settings:
     
    OnInit: // ===== Multiple Windows checking by ? // = 1 - Gepard Shield // = 2 - IP .MultipleCheck = 1; // ===== BG Colors setarray .BG_Color$[0], "0xDDA0DD", "0x7CCD7C", "0xFFA500"; // ===== BG NPC & Arena Names setarray .BG_Names$[0], "Rush", "Flavius TD", "Conquest"; setarray .BG_Arena$[0], "Rush", "Flavius_TD", "Conquest"; // ===== BG Player Amount setarray .BG_Min[0], 2, 2, 2; setarray .BG_Max[0], 30, 30, 30; // ===== BG Locations setarray .BG_Map$[0], "rush_cas04", "bat_b03", "schg_cas06"; // ===== BG X/Y Coordinates setarray .BG_GuillX[0], 270, 390, 264; setarray .BG_GuillY[0], 292, 10, 379; setarray .BG_CroixX[0], 270, 10, 295; setarray .BG_CroixY[0], 288, 290, 379; bindatcmd "joinbg", strnpcinfo(0) + "::OnJoinBG", 0, 99; bindatcmd "leavebg", strnpcinfo(0) + "::OnLeaveBG", 0, 99; // ===== Time to flood in seconds. .Flood_Time = 180; // ===== Enable debug mode? .debug = false; Sorry, not all instructions translated to English now.
    Github: https://github.com/kubixservice/QueueBG
  14. Upvote
    Nebraskka reacted to Emistry in Ragnarok Online - Virtual Reality   
  15. Upvote
    Nebraskka reacted to Haru in [2016-04-24] Visual Studio 2015 fully supported (and Visual Studio 2010 dropped)   
    Rationale:
    This is according to our Supported Platforms policy.
     
    For an overview of supported OSes and compilers, please see the wiki page https://github.com/HerculesWS/Hercules/wiki/Supported-Platforms
     
    Contents:
    VS2015 is our primary target compiler on Windows, and this merge removes all the warnings that were present when compiling with that version of Visual Studio.
    VS2010 isn't one of our supported platforms (and hasn't been for a while), so maintaining its solution inside the repository adds unnecessary work to the dev team.
     
    Impact:
    While it's currently still possible to build on VS2010 (download the files `Hercules-10.sln` and `vcproj-10/*` from an older snapshot of the repository such as https://github.com/HerculesWS/Hercules/tree/bbcb040 and put them in your Hercules directory), we offer no support for any build issues causd by future commits, nor we'll update the project/solution files.
     
    Merge Date:
    Sun, 24 Apr 2016 13:13:19 +0200
     
    Related Pull Requests:
    - #1264 - https://github.com/HerculesWS/Hercules/pull/1264 - V2015 improved compatibility and dropped VS2010 solution [Haru]
     
    Related Commits:
     
    - a92fa36 - https://github.com/HerculesWS/Hercules/commit/a92fa36 - Sun, 17 Apr 2016 13:37:08 +0200 Updated README file [Haru]
    - e69e8c5 - https://github.com/HerculesWS/Hercules/commit/e69e8c5 - Sun, 17 Apr 2016 13:43:30 +0200 Removed VS2010 project [Haru]
    - 3af03d2 - https://github.com/HerculesWS/Hercules/commit/3af03d2 - Tue, 19 Apr 2016 11:32:04 +0200 Improved parsing of the server name/port in the irc bot configuration [Haru]
    - 2b1dce1 - https://github.com/HerculesWS/Hercules/commit/2b1dce1 - Tue, 19 Apr 2016 15:26:36 +0200 Changed map_session_data::chatID to int (and renamed to chat_id) [Haru]
    - dc23fd3 - https://github.com/HerculesWS/Hercules/commit/dc23fd3 - Tue, 19 Apr 2016 16:31:57 +0200 Corrected the type for several variables through the code [Haru]
    - e4feddf - https://github.com/HerculesWS/Hercules/commit/e4feddf - Wed, 20 Apr 2016 15:40:19 +0200 Corrected the type of the 'length' argument of various broadcast-related functions [Haru]
    - d7ffa6a - https://github.com/HerculesWS/Hercules/commit/d7ffa6a - Wed, 20 Apr 2016 17:06:18 +0200 Removed the 'len' argument from clif_disp_onlyself() and clif->disp_message() [Haru]
    - 4788c81 - https://github.com/HerculesWS/Hercules/commit/4788c81 - Thu, 21 Apr 2016 20:38:18 +0200 Removed the 'len' argument from various message-related functions [Haru]
    - f5b88f9 - https://github.com/HerculesWS/Hercules/commit/f5b88f9 - Wed, 20 Apr 2016 17:23:03 +0200 Corrected the type of the 'length' argument of other message-related functions [Haru]
    - 9e58db4 - https://github.com/HerculesWS/Hercules/commit/9e58db4 - Wed, 20 Apr 2016 17:24:37 +0200 Added some files specific to VS2015 (Update 2) to gitignore [Haru]
    - 9fdb456 - https://github.com/HerculesWS/Hercules/commit/9fdb456 - Thu, 21 Apr 2016 20:57:56 +0200 HPM Hooks Update [Haru]
    - 31e27a1 - https://github.com/HerculesWS/Hercules/commit/31e27a1 - Sun, 24 Apr 2016 13:13:19 +0200 Merge pull request #1264 from HerculesWS/vs2015 [ibrahem Hossam]
  16. Upvote
    Nebraskka reacted to zackdreaver in Repository of official sprites and textures   
    Hello community,
     
    A few days ago i came with an idea to make repository of official sprites and textures
    from all non KRO server (eg: JRO, IDRO, TWRO...etc).
     
     
    My dreams is to collect all items from all official RO server,
    unfortunately many of my files got corrupted when merging some files,
    so only around 75% that can be saved.
     
    You can find my repository through this link :
     
    https://github.com/zackdreaver/RO-Clientresources
     
     
     
    Because of many items missing,
    i want your participation to help me completing the files tha not exist in repository
    through Pull Request or give me the required files via comment/PM.
     
     
    (PS: only non KRO files are accepted)
  17. Upvote
    Nebraskka reacted to hemagx in [2016-04-17] The Redesign of Client Interface and Private Headers   
    Rationale:
    For ages we got awful looking code when it come to work with socket and packet, also this code was totally manually handled.
    so many possible mistake could happen and lot of hardcoded numbers, now with this update this will not happen anymore and compiler will take care of all of this.
    also with this update we introduce first Private header, the lclif ( Login Client Interface ) header, the private headers meant for functions should not be accessed from outside the source file, however this still accessible by plugins.
    this also will prevent a long not needed re-compile time for whole project when the changes only happens in private headers.
     
    Contents:
    A total new client interface for login server (lclif.c/lclif.h).
    The first private header which meant for client interface in login server (lclif.p.h).
     
    Impact:
    The impact of this changes can be huge if you have heavy modified login server as many functions removed, moved or rewrote.
    please be careful merging this update.
     
    Details:
    Before we were dealing with packets in so ugly way and unsafe with hardcoded numbers and easy mistakes that were hard to be spoted, also we mixed code to parse packets with code to process them.
    With this update we separate packet parse and packet processing, and also we started to use structs instead of manual (offset-based) packet parsing and creation!
     
    an example of how we were writing a packet to client before, and now.
     
    Before:
    Here's an example of the server-list packet being sent to the player upon successful login
    WFIFOHEAD(fd,47+32*server_num); WFIFOW(fd,0) = 0x69; WFIFOW(fd,2) = 47+32*server_num; WFIFOL(fd,4) = sd->login_id1; WFIFOL(fd,8) = sd->account_id; WFIFOL(fd,12) = sd->login_id2; WFIFOL(fd,16) = 0; // in old version, that was for ip (not more used) //memcpy(WFIFOP(fd,20), sd->lastlogin, 24); // in old version, that was for name (not more used) memset(WFIFOP(fd,20), 0, 24); WFIFOW(fd,44) = 0; // unknown WFIFOB(fd,46) = sex_str2num(sd->sex); for (i = 0, n = 0; i < ARRAYLENGTH(server); ++i) { uint32 subnet_char_ip; if (!sockt->session_is_valid(server[i].fd)) continue; subnet_char_ip = login->lan_subnet_check(ip); WFIFOL(fd,47+n*32) = htonl((subnet_char_ip) ? subnet_char_ip : server[i].ip); WFIFOW(fd,47+n*32+4) = sockt->ntows(htons(server[i].port)); // [!] LE byte order here [!] memcpy(WFIFOP(fd,47+n*32+6), server[i].name, 20); WFIFOW(fd,47+n*32+26) = server[i].users; if( server[i].type == CST_PAYING && sd->expiration_time > time(NULL) ) WFIFOW(fd,47+n*32+28) = CST_NORMAL; else WFIFOW(fd,47+n*32+28) = server[i].type; WFIFOW(fd,47+n*32+30) = server[i].new_; n++; } WFIFOSET(fd,47+32*server_num);  
    So many numbers! And a real mess, imagine the harm that one wrong number can cause! even crash for client or server !
    And the code is barely readable or meaningful.
     
    After the update:
     
    length = sizeof(*packet) + sizeof(packet->ServerList[0]) * server_num; ip = sockt->session[sd->fd]->client_addr; //Allocate the packet WFIFOHEAD(sd->fd, length); packet = WP2PTR(sd->fd); packet->PacketType = PACKET_ID_AC_ACCEPT_LOGIN; packet->PacketLength = length; packet->AuthCode = sd->login_id1; packet->AID = sd->account_id; packet->userLevel = sd->login_id2; packet->lastLoginIP = 0x0; memset(packet->lastLoginTime, '\0', sizeof(packet->lastLoginTime)); packet->Sex = sex_str2num(sd->sex); for (i = 0, n = 0; i < ARRAYLENGTH(server); ++i) { uint32 subnet_char_ip; if (!sockt->session_is_valid(server[i].fd)) continue; subnet_char_ip = login->lan_subnet_check(ip); packet->ServerList[n].ip = htonl((subnet_char_ip) ? subnet_char_ip : server[i].ip); packet->ServerList[n].port = sockt->ntows(htons(server[i].port)); // [!] LE byte order here [!] safestrncpy(packet->ServerList[n].name, server[i].name, 20); packet->ServerList[n].usercount = server[i].users; if( server[i].type == CST_PAYING && sd->expiration_time > time(NULL) ) packet->ServerList[n].property = CST_NORMAL; else packet->ServerList[n].property = server[i].type; packet->ServerList[n].state = server[i].new_; ++n; } WFIFOSET(sd->fd, length);  
    I bet now you can place everything and know what you're dealing with, with no numbers to mistake with at all!
     
    This is how we build a packet, parsing a packet became easier too.
     
    Before:
    version = RFIFOL(fd,2); safestrncpy(username, (const char*)RFIFOP(fd,6), NAME_LENGTH); safestrncpy(password, (const char*)RFIFOP(fd,30), NAME_LENGTH); clienttype = RFIFOB(fd,54);  
    After:
    DEFPACKET(CA_LOGIN) { const struct PACKET_CA_LOGIN *packet = RP2PTR(fd); sd->version = packet->Version; sd->clienttype = packet->clienttype; safestrncpy(sd->userid, packet->ID, NAME_LENGTH); safestrncpy(sd->passwd, packet->Passwd, PASSWD_LEN); if (login->config->use_md5_passwds) MD5_String(sd->passwd, sd->passwd); sd->passwdenc = PWENC_NONE; login->client_login(fd, sd); return PACKET_VALID; }  
    we just took care of parse packet and give it to login server to process it, just as it should be, the code is cleaner and easier to read and understand.
     
    Merge Date:
    Sat, 16 Apr 2016 15:37:47 +0200
     
    Related Pull Requests:
    - #1255 - https://github.com/H...cules/pull/1255 - Login clif rewrite [hemagx]

    Related Commits:
    - bbcb040 - https://github.com/HerculesWS/Hercules/commit/bbcb040 - Sat, 16 Apr 2016 15:37:47 +0200 Merge pull request #1255 from HerculesWS/login-clif_rewrite [ibrahem Hossam]
    - 8448e3f - https://github.com/HerculesWS/Hercules/commit/8448e3f - Sat, 16 Apr 2016 15:22:21 +0200 HPM Hooks Update [Haru]
    - 15c9710 - https://github.com/HerculesWS/Hercules/commit/15c9710 - Sat, 16 Apr 2016 15:21:18 +0200 Moved packet_db to the private interface of lclif [Haru]
    - 45bbb3d - https://github.com/HerculesWS/Hercules/commit/45bbb3d - Sat, 16 Apr 2016 03:33:31 +0200 Added missing documentation [Haru]
    - 6de2242 - https://github.com/HerculesWS/Hercules/commit/6de2242 - Sat, 16 Apr 2016 03:33:20 +0200 HPM Hooks Update [Haru]
    - fb26278 - https://github.com/HerculesWS/Hercules/commit/fb26278 - Fri, 15 Apr 2016 20:14:43 +0200 Added lclif packet handlers to the lclif interface [Haru]
    - 37cc46c - https://github.com/HerculesWS/Hercules/commit/37cc46c - Thu, 31 Mar 2016 00:16:48 +0200 HPM Hooks Update [Haru]
    - 7555700 - https://github.com/HerculesWS/Hercules/commit/7555700 - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 7) [hemagx]
    - ceef84e - https://github.com/HerculesWS/Hercules/commit/ceef84e - Thu, 14 Apr 2016 13:38:12 +0200 HPM Hooks Update [Haru]
    - c8ff1e7 - https://github.com/HerculesWS/Hercules/commit/c8ff1e7 - Tue, 12 Apr 2016 14:35:21 +0200 Rewrite client interface for login server (part 6) [hemagx]
    - d8da35d - https://github.com/HerculesWS/Hercules/commit/d8da35d - Tue, 12 Apr 2016 15:25:50 +0200 Rewrite client interface for login server (part 5) [hemagx]
    - c765365 - https://github.com/HerculesWS/Hercules/commit/c765365 - Tue, 12 Apr 2016 15:24:30 +0200 Rewrite client interface for login server (part 4) [hemagx]
    - d60ef91 - https://github.com/HerculesWS/Hercules/commit/d60ef91 - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 3) [hemagx]
    - 9defcee - https://github.com/HerculesWS/Hercules/commit/9defcee - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 2) [hemagx]
    - 480e959 - https://github.com/HerculesWS/Hercules/commit/480e959 - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 1) [hemagx]
  18. Upvote
    Nebraskka reacted to Haru in [2016-04-16] introduction of private headers   
    Opinions like these are what drove the project to the situation it is in right now. Through the years we have accumulated a level of technical debt that I'm not confident we'll ever be able to fill.
    If we keep implementing new features the way we did until now, the project will turn into a big ball of mud (or rather, it already is). Architectural changes are very needed.
     
    Now, the change the broke compatibility with your patches, isn't this one (the change in order to implement the private headers is almost irrelevant in terms of changed lines of code). What you should blame is, instead, the redesign of the client interface in the login server.
     
     
    In my optinion, both changes were necessary in order for the project to go forward. I'll point out some of the reasons why I want changes like these:
     
    - The private interfaces: the change may seem pointless if the only reason is compile time (in fact, they aren't pointless - even if server owners don't recompile it often, we developers do -- and by shortening the compilation time, you increase the amount of tests we're likely to do on a patch before submitting it, or reduce the time we take to fully implement and test something). There are, though, other more important reasons. By making some methods private, we're ensuring that they aren't called by other modules, reducing the chance that new features will be implemented in a half-assed way like it happened in the past (resulting in a cleaner and more manageable codebase overall).
    Once again, keep in mind that the changes to the lclif.c file that were necessary in order to implement this were almost zero (just some lclif->xxxx or lclif_xxxx replaced by lclif->p->xxx), so this is very unlikely to break any of your patches.
     
    - The clif changes: This is important for at least three different reasons.
    Firstly, right now we're mixing login logic with packet sending logic, and that's just plain wrong (login code should be independent from the client, and clif code should be client-specific, just like it's important to separate logic from presentation in any well designed application).
    Secondly, implementing new packets, or editing old ones has become much easier and less prone to very subtle errors (think of 'WFIFOW(fd, 13 + 7 * i + 4) = foo;' versus 'packet->item[7].nameid = foo;').
    Finally, it addressed some long standing issues that made it very hard for HPM plugins to hook into packet handling. Writing a plugin that performs additional actions on a specific packet (or that completely overrides the handling of a packet) is much easier now.
     
    I already merged these changes into my own (private) codebase, where I have very large changes to the login interface, and the merge wasn't as painful as you describe it (you should consider doing it commit by commit rather than all at once - that's what I did when I merged it, and that's the reason why I refused to merge this as one mega-commit).
    On a side note, have you considered implementing your changes as a HPM plugin? If not, we'd like to hear the reasons, so that we can improve the HPM so that it's flexible enough for most use cases.
  19. Upvote
    Nebraskka reacted to JoyRo in Ingame Shortcuts Alt+A   
    was changing the wrong file there are like 2-3 diferent msgstring
  20. Upvote
    Nebraskka reacted to hemagx in [2016-04-16] introduction of private headers   
    Hello ~
     
    Rationale:
     
    For long time we had many functions or variables that were supposed to be kept privately used, but because of the design of our header files were kept a public access. This caused, on one hand, poor design choices (too much binding between separate components), and on the other hand, excessively long long re-compile for the whole project if anything changed in this headers (because cause any or all files can be affected). Now with private headers only the file meant to use this header will be recompiled resulting in less compile times, waaay less!
     
    Contents:
     
    The login server client interface (lclif) was chosen as a working prototype of this, and now has a private interface (lclif.p.h) alongside its public interface (lclif.h).
     
    Details:
     
    Currently we will start limit the private function/variable/databases to a private interface under a private header only meant to be used by the module itself. This will stop other modules from accessing the private function/variable/databases (lclif.p.h should only be included by lclif.c, but never included by other .c files), however plugins will still be able to access it if they need to (the private interface is fully HPM and HPMHooking compliant).
     
    The private interface is exposed through an opaque pointer inside the public interface.
     
    the private data can be accessed through the interface through the private interface pointer
    interface->p->private_function(); //General example lclif->p->parse_sub(fd, sd); // Example for login client interface  to be able to use the private interface into your plugin please make sure to include the private header !
    It's recommended to still include the public interface as well.
     
    //General example #include "project/file.h" #include "project/file.p.h" // Example to include Login Client Interface Private header #include "login/lclif.h" #include "login/lclif.p.h" Merge Date:Sat, 16 Apr 2016 15:37:47 +0200
     
    Related Pull Requests:
    - #1255 - https://github.com/HerculesWS/Hercules/pull/1255 - Login clif rewrite [hemagx]
     
    Related Commits:
    - 79d9ace - https://github.com/HerculesWS/Hercules/commit/79d9ace - Wed, 30 Mar 2016 23:58:17 +0200 Added support for private headers to the HPMDataCheck/HPMHooking generators [Haru]
    - c0178d2 - https://github.com/HerculesWS/Hercules/commit/c0178d2 - Thu, 31 Mar 2016 00:16:02 +0200 HPM Hooks Update [Haru]
    - ab42483 - https://github.com/HerculesWS/Hercules/commit/ab42483 - Thu, 31 Mar 2016 14:42:56 +0200 Updated GNU Make build system to support private headers [Haru]
    - 7555700 - https://github.com/HerculesWS/Hercules/commit/7555700 - Mon, 28 Mar 2016 21:54:46 +0200 Rewrite client interface for login server (part 7) [hemagx]
    - 37cc46c - https://github.com/HerculesWS/Hercules/commit/37cc46c - Thu, 31 Mar 2016 00:16:48 +0200 HPM Hooks Update [Haru]
    - 15c9710 - https://github.com/HerculesWS/Hercules/commit/15c9710 - Sat, 16 Apr 2016 15:21:18 +0200 Moved packet_db to the private interface of lclif [Haru]
    - 8448e3f - https://github.com/HerculesWS/Hercules/commit/8448e3f - Sat, 16 Apr 2016 15:22:21 +0200 HPM Hooks Update [Haru]
    - bbcb040 - https://github.com/HerculesWS/Hercules/commit/bbcb040 - Sat, 16 Apr 2016 15:37:47 +0200 Merge pull request #1255 from HerculesWS/login-clif_rewrite [ibrahem Hossam]
  21. Upvote
    Nebraskka reacted to Mystery in dDelays(Anti NoDelays) - Releasing this weekend   
    Due to the outbreak of drama-causing posts... the topic will remain locked. All drama-causing posts have been removed and the member has been warned with content moderating. Failure to post appropriate content within the moderating period will result in a forum suspension and then a ban. I don't tolerate trolls and drama people. I get enough of that everyday.
     
    This topic will remain locked until Dastgir decides to open it with news.
  22. Upvote
    Nebraskka reacted to ellandson in What this means?   
    I did, then I should not worry about it...
  23. Upvote
    Nebraskka reacted to hemagx in What this means?   
    it's the settings the server compiled with, it help us developers if you report core bugs to include it !
  24. Upvote
    Nebraskka reacted to Raily in cutin not working for some reason   
    params.~
  25. Upvote
    Nebraskka reacted to Dastgir in Plugin Collections   
    Hello Community,
     I am feeling like, there's many plugin on forum, but not been actively used, due to out-of-date plugin
     
    I have updated Shikazu's Plugin first(as it was requested on the thread from 25th April), maybe Shikazu busy on his rl.
    Also I have included My Plugins there.
     
    I would like to add more plugins there(which are not updated on hercules forum <- please suggest if you find some outdated plugin and want me to update it )
     
    List of Plugins and Owners:
    https://github.com/dastgir/HPM-Plugins/blob/master/README.md  
    Repository: https://github.com/dastgir/HPM-Plugins
     
    Thanks.
×
×
  • Create New...

Important Information

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