Jump to content

Kenpachi

Core Developers
  • Content Count

    204
  • Joined

  • Last visited

  • Days Won

    32

Reputation Activity

  1. Like
    Kenpachi got a reaction from ThyroDree in Morphogenic Hat Script Convert   
    Sorry, my fault.
     
    It's ITEMINFO_VIEWSPRITE instead of ITEMINFO_VIEWID.
     
     
    ~Kenpachi
  2. Like
    Kenpachi got a reaction from ThyroDree in Cloning Monster / Mob   
    Hi.
     
    The mob_avail.txt was merged with the mob_db.conf.
    See doc/mob_db.txt for more info.
     
     
    ~Kenpachi
  3. Like
    Kenpachi got a reaction from Zero Human in Duplicate NPC Commands   
    Hi.
     
    npc-duplicate.c
    (Additional parameter for duplicateremove() the to choose if mobs spawned by duplicate should be removed, too.)
     
     
    ~Kenpachi
  4. Upvote
    Kenpachi got a reaction from ThyroDree in Adding Limit or Cap Resistance, Reflect Chance, and Skill Delay   
    No, since you can't use RC_ALL.
     
     
    You can only use the following races. The other ones are combined types.
    RC_FORMLESS ///< Formless RC_UNDEAD ///< Undead RC_BRUTE ///< Beast/Brute RC_PLANT ///< Plant RC_INSECT ///< Insect RC_FISH ///< Fish RC_DEMON ///< Demon RC_DEMIHUMAN ///< Demi-Human (not including Player) RC_ANGEL ///< Angel RC_DRAGON ///< Dragon RC_PLAYER ///< Player RC_BOSS ///< Boss RC_NONBOSS ///< Non-boss  
     
    Yes.  The renewal code won't be compiled. But if you want to, you can add only pre-RE code. (Note the 'n' in #ifndef. This means "if NOT defined RENEWAL".)
    #ifndef RENEWAL sd->subrace[RC_FORMLESS] = max(sd->subrace[RC_FORMLESS], 50); sd->subrace[RC_UNDEAD] = max(sd->subrace[RC_UNDEAD], 50); sd->subrace[RC_BRUTE] = max(sd->subrace[RC_BRUTE], 50); sd->subrace[RC_PLANT] = max(sd->subrace[RC_PLANT], 50); sd->subrace[RC_INSECT] = max(sd->subrace[RC_INSECT], 50); sd->subrace[RC_FISH] = max(sd->subrace[RC_FISH], 50); sd->subrace[RC_DEMON] = max(sd->subrace[RC_DEMON], 50); sd->subrace[RC_DEMIHUMAN] = max(sd->subrace[RC_DEMIHUMAN], 50); sd->subrace[RC_ANGEL] = max(sd->subrace[RC_ANGEL], 50); sd->subrace[RC_DRAGON] = max(sd->subrace[RC_DRAGON], 50); sd->subrace[RC_PLAYER] = max(sd->subrace[RC_PLAYER], 50); sd->subrace[RC_BOSS] = max(sd->subrace[RC_BOSS], 50); sd->subrace[RC_NONBOSS] = max(sd->subrace[RC_NONBOSS], 50); #endif  
     
    ~Kenpachi
  5. Upvote
    Kenpachi got a reaction from hadiesyafiq in [Request] Exchanger NPC with successful percentage function   
    Hi.
     
    Quick'n'dirty:
     
     
     
    ~Kenpachi
  6. Like
    Kenpachi got a reaction from ThyroDree in [BUG] Experience Gained BUG?   
    We're working on that issue. (https://github.com/HerculesWS/Hercules/pull/2647)
     
     
    ~Kenpachi
  7. Upvote
    Kenpachi got a reaction from fiction in OnPCSkillUseEvent + getskillname   
    Hi.
     
    Untested; just converted to Hercules!
    OnPCSkillUseEvent.diff
    getskillname.diff
     
     
    ~Kenpachi
  8. Like
    Kenpachi got a reaction from Tio Akima in OnPCSkillUseEvent + getskillname   
    Hi.
     
    Untested; just converted to Hercules!
    OnPCSkillUseEvent.diff
    getskillname.diff
     
     
    ~Kenpachi
  9. Like
    Kenpachi got a reaction from Kavaline in Newbie question: how get an item ID by item name?   
    As promised over at Discord, a patch to extend getiteminfo() script command, to get an item's ID by its name:getiteminfo_extension.diff
     
     
    Usage:
    .@item_id = getiteminfo("item name", ITEMINFO_ID);  
     
    ~Kenpachi
  10. Upvote
    Kenpachi got a reaction from Tio Akima in costume item (body sprite)   
    Hi.
     
    Maybe a little bit late, but...
    You can disguise a player with the changelook() script command. Just use an item's OnEquipScript/OnUnequipScript.
    An example to disguise the player as Swordman when equipping Hat.
    { Id: 2220 AegisName: "Hat" Name: "Hat" Type: "IT_ARMOR" Buy: 1000 Weight: 200 Def: 2 Loc: "EQP_HEAD_TOP" ViewSprite: 16 OnEquipScript: <" changelook(LOOK_BASE, Job_Swordman); "> OnUnequipScript: <" changelook(LOOK_BASE, Class); "> } But this works only with jobs. If you have custom body sprites, you have to add them as new jobs.
     
     
    ~Kenpachi
  11. Like
    Kenpachi got a reaction from brunosc in No gems for ADM   
    Hi.
     
    In src/map/skill.c find function skill_get_requirement() and replace: (Should be line 15479.)
    if (itemid_isgemstone(req.itemid[i]) && skill_id != HW_GANBANTEIN) { with:
    if (itemid_isgemstone(req.itemid[i]) && sd->group->level >= 99) { /// Characters with group level >= 99 don't use gemstones. req.itemid[i] = 0; req.amount[i] = 0; } else if (itemid_isgemstone(req.itemid[i]) && skill_id != HW_GANBANTEIN) {  Or use this diff: ADMIN_NO_GEMS.diff
     
    I tested this modification with latest Hercules and it works.
     
     
    ~Kenpachi
  12. Like
    Kenpachi got a reaction from brunosc in imune negative status   
    pc_status_def_rate and mob_status_def_rate still exist in in conf/map/battle/status.conf.
    If you need pc_luk_status_def and mob_luk_status_def, I could probably write a patch for you, but have a look at the commit where they were removed and see @Ind's reasons to remove them.
     
     
    ~Kenpachi
  13. Like
    Kenpachi got a reaction from brunosc in No gems for ADM   
    Hi.
     
    Quick, dirty and untested:admin_no_gems.diff
    diff --git a/src/map/pc.c b/src/map/pc.c index 179a4b78a..c77bfbc22 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1359,6 +1359,10 @@ static bool pc_authok(struct map_session_data *sd, int login_id2, time_t expirat sd->sc_display = NULL; sd->sc_display_count = 0; + /// Characters with group level => 99 don't use gemstones. + if (sd->group->level >= 99) + sd->special_state.no_gemstone = 1; + // Request all registries (auth is considered completed whence they arrive) intif->request_registry(sd,7); return true;  
     
    ~Kenpachi
  14. Like
    Kenpachi got a reaction from capWinters in Countdown   
    Hi.
     
    In Checagem script:
    OnClock1055: set $Check, 1; end; Add a 3 second delay before setting the variable $Check to 1:
    OnClock1055: sleep 3000; set $Check, 1; end;

    ~Kenpachi
  15. Like
    Kenpachi got a reaction from pedrodks in Actualize Old Emulator Hercules   
    Sorry dude, but I wont write a complete patch for the item options system that works with your emulator version.
    it's not just updating the clif.c/.h but also packets, the socket, macros and everything else related to items.
    I spent more than an hour trying to add that diff to your emulator version, but didn't even came close to something compilable...
    Again, sorry.


    ~Kenpachi
  16. Like
    Kenpachi reacted to Asheraf in How does AEGIS read map cell data? (gat/rsw)   
    Oops, my mistake i mixed up the checks... it does indeed check for 1 element (a 4 bytes float).
    This is the struct for cell attributes in aegis, and the check against water level uses h1
    struct AttrCell { float h1; float h2; float h3; float h4; int flag; }; *Edit*: corrected the code in previous post
  17. Like
    Kenpachi reacted to Asheraf in How does AEGIS read map cell data? (gat/rsw)   
    The athena way is what aegis uses, it reads the 4th dword in the cell info struct and compares it with the map water level read from the RSW, the code roughly looks like this (quick draft so i apologize if it's not so clear).
    { std::ifstream gat_fs(filename, std::ios::binary); VALIDATE_MAGIC(gat_fs, "GRAT", 4); gat_fs.read(reinterpret_cast<char *>(&m_verMajor), sizeof(char)); gat_fs.read(reinterpret_cast<char *>(&m_verMinor), sizeof(char)); gat_fs.read(reinterpret_cast<char *>(&m_width), sizeof(int)); gat_fs.read(reinterpret_cast<char *>(&m_height), sizeof(int)); m_cells.resize(m_width * m_height); gat_fs.read(reinterpret_cast<char *>(m_cells.data()), m_cells.size()); std::for_each(m_cells.begin(), m_cells.end(), [idx = 0](struct CAttrCell &cell) mutable { if (cell.flag == 1 || cell.flag == 5) m_TileInfo[idx] |= SVR_CELL_BLOCK; if (cell.flag != 1) m_TileInfo[idx] |= SVR_CELL_ARROW; if (cell.h1 > m_waterLevel) // m_waterLevel from RSW m_TileInfo[idx] |= SVR_CELL_WATER; ++idx; }); return 0; }  
  18. Upvote
    Kenpachi reacted to Ind in Hercules Ultimate Localization Design   
    Hercules Ultimate Localization Design
    Hello~! - What?!
    Servers are now able to run under any number of languages, without having any of the default files modified Designed by Haruna and Ind  
    Translating NPCs without editing them
    By launching map server with the --generate-translations param a .pot (.po template) file will be created with all of the servers translate-able strings (including all npc dialogue), this file can be edited in text mode or by utilising any .po editor (there are many out there; for a high range of OSes) A .po file does not need to be fully translated to be used, map server will know when loading the file, and will fallback to the hardcoded string in the npc files as necessary Users are able to change their language with the new @lang command, @lang controls what language users see in @commands (msg_txt stuff) as well as over npc dialogues map-server.conf has a new setting called default_language where server owners may specify which language should be used as a base When you have a new .po file you want map server to use, add it to db/translations.conf Easy to Maintain
    Since .po is a widely used format there are many tools that can help with merging for example Poedit, which easily consolidates a translated .po file with a newly generated .pot. For example when you have a translated .po and since it was created npc dialogs were added or modified all you have to do is launch map server to generate a new .pot, open your old .po in Poedit, go "Catalog -> Update from POT file" and it will insert the new translatable strings without touching your existing translations, it will also notify you of any "obsolete" strings that are in your .po file but that are no longer in use Script Command Macro
    Besides messages.conf, all the dialogue utilised by 'mes' and 'select' is included in the .pot automatically, this patch also introduces a mechanism for utilising strings outside of these commands, the script macro _() which can be employed just as if it were a script function, for example set .@status$,_("Available"); tells map server to export "Available" as a translate-able string when it is run with --generate-translations (when running map server normally the macro has no overhead during runtime) Special Thanks to
    Raizen and Roberto from Cronus, we would not have worked on this if it weren't for them Links~!
    Commit Editing Example
  19. Upvote
    Kenpachi got a reaction from Kido in Item DB file structure overhaul   
    It isn't difficult but a load of work, which isn't necessary.
     
    I don't think there will be a converter which is compatible with my private projects.
     
    What actually concerns me most is: Did you think of all the tools in use? Every single tool which reads the item DB must be rewritten because of this update.
    Furthermore RegEx replacements are nearly impossible now, too.
     
    I wish this would have been discussed before implementing, but now it's too late. :S
     
     
    My suggestion to please everyone: Provide a converter which is capable of converting the new format into the old format.
  20. Upvote
    Kenpachi got a reaction from Kido in Item DB file structure overhaul   
    Well, backward campability should be a big point in a community project like this, but maybe that's just my opinion. And forcing people to completely rewrite their tools, isn't nice, too. Adding a field to an existing converter logic is much easier than rethinking the complete logic. I really don't know if the advatages of this update are bigger than the disadvantages. For me personally there are no advatages, so you maybe understand why I'm grumbling.
     
    Can't find a topic. Please send me a link via. PM.
     
    Currently I don't even have time to be actively developing Hercules, so I can't do this.
     
    That's the point. Think of the possibilities of SQL. You would be able to change data while server is running and this not just temporary. You could even create completely new data structures if required for a script. at runtime. (You can do this know, but not when dropping SQL.) Wouldn't whis be an advantage? "Hard to read".. Well, there are many many tools which make it easy to create SQL statements if you don't like typing them, that's not a valid reason in my opinion.
     
    Yeah, thanks for the clarification. I indeed misunderstood that one.
  21. Upvote
    Kenpachi got a reaction from Kido in Item DB file structure overhaul   
    I suggested this many times. Noone wants it. And as long as there are just a few files available in SQL my tools will use the TXT version, simply because I don't want to implement a logic for SQL an another one for TXT.
     
    Well, now you have to search another item if the item you are editing inherits another item just to see the values. And perhaps this item inherits anotherone and you now have to search this now. Furthermore you don't see all the values with one view...  I my opinion this new format is pretty confusing.
  22. Upvote
    Kenpachi reacted to Mumbles in Post your Picture!   
  23. Upvote
    Kenpachi reacted to Jguy in rAthena devs/staff/members on Hercules   
    Hello,
     
    While we do not mind that rAthena developers, staff members and regular members register an account, post or send PM's on our forums, we do not take kindly to 'rAthena is better because x y and z' posts, or anything promoting rAthena as a superior emulator because of such and such. There is no such post on rAthena made by a Hercules staff member about Hercules and we intend to keep it that way, we would appreciate the same respect.
     
    Those who do not follow this simple clause listed above will have their post(s) deleted and/or hidden from view. Repeat offenders will be suspended from our forum with no further warnings or post manipulation.
     
    We do not appreciate, nor welcome drama here. While criticism is welcome in the form of 'why doesn't Hercules have such and such a feature', drama and belittling a project (hercules or not) will not be tolerated. This is a collaboration, not a drama infested 12 year old's contest.
     
    Thank you.
  24. Upvote
    Kenpachi got a reaction from hemagx in @warp ignore map walk area   
    Well, since it's an official behaviour and implementing it just means to comment out 6 lines of code I'd say yes.
  25. Upvote
    Kenpachi reacted to Ind in Introducing Hercules Plugin Manager   
    Introducing Hercules Plugin Manager
    Hello~! What?!
    I can't express how awesome this is. It's awesome, so awesome. ...Incredibly awesome, yet another awesome feature brought to you by Hercules Thoughtfully Designed
    This features' design began long ago, a precursor to this feature, which demonstrates for how long we've been planning it, is the Hercules Renewal Phase One Usage Example
    Can be used to create @commands Can be used to create script commands Can be used to create console commands Can be used to replace core functions with your ownA example of how handy this can be: when any RO emu updates a section of the code that is used by a user's modifications, e.g. Harmony, no matter how silly the edit is (e.g. a tab alignment update) the user has to wait for his modification's developer to update his patch (unless he manages to update it on his own), if the developer in question starts to use the HPM for his hercules users instead of a patch file, his users using hercules will no longer have to wait for updates unless the way the code works changes on hercules' end. All About It - Documentation
    Its being done, most of it is already available in our wiki Hercules Plugin Mananger Building HPM Plugin for MSVC Building HPM Plugin for GCC Links~!
    Hercules Console Input Update (HPM Friendly) Commit Visual Studio 2010 2 Notes
    The plugin "sample" is currently missing projects for msvc2010 and msvc2012, thats because I dont have them, this will be solved asap, once one of our developers who possesses them logs in. Login/Char server plugin support is currently disabled, it should be enabled by the next release, which will also include Hooks support (as an alternative to overloading)
×
×
  • Create New...

Important Information

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