Jump to content

Kenpachi

Core Developers
  • Content Count

    204
  • Joined

  • Last visited

  • Days Won

    32

Everything posted by Kenpachi

  1. 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
  2. Hi. There is neither a bonus called bAddClass nor a constant called Class_All in Hercules. ~Kenpachi
  3. Hi. Just update your server to the latest release. Alternatively you can apply this patch: 1e572d0bd99b2f1f2b6a29f0184c9fb28e0db655.patch (How to apply a patch file.) ~Kenpachi
  4. Hi. Please don't revive dead topics if you just opened a similar one by yourself. I answered in your topic. ~Kenpachi
  5. Hi. In src/map/status.c -> function status_calc_pc_() find this line (#3099 in current release): status->copy(&sd->battle_status, bstatus); Add above (replace <your_race_here> with the race you want to modify): #ifdef RENEWAL sd->race_tolerance[<your_race_here>] = max(sd->race_tolerance[<your_race_here>], 50); #else sd->subrace[<your_race_here>] = max(sd->subrace[<your_race_here>], 50); #endif In src/map/pc.c -> function pc_bonus() find this block: case SP_SHORT_WEAPON_DAMAGE_RETURN: if(sd->state.lr_flag != 2) sd->bonus.short_weapon_damage_return += val; break; case SP_LONG_WEAPON_DAMAGE_RETURN: if(sd->state.lr_flag != 2) sd->bonus.long_weapon_damage_return += val; break; case SP_MAGIC_DAMAGE_RETURN: //AppleGirl Was Here if(sd->state.lr_flag != 2) sd->bonus.magic_damage_return += val; break; Replace it with: case SP_SHORT_WEAPON_DAMAGE_RETURN: if (sd->state.lr_flag != 2) sd->bonus.short_weapon_damage_return += val; sd->bonus.short_weapon_damage_return = max(sd->bonus.short_weapon_damage_return, 50); break; case SP_LONG_WEAPON_DAMAGE_RETURN: if (sd->state.lr_flag != 2) sd->bonus.long_weapon_damage_return += val; sd->bonus.long_weapon_damage_return = max(sd->bonus.long_weapon_damage_return, 50); break; case SP_MAGIC_DAMAGE_RETURN: //AppleGirl Was Here if (sd->state.lr_flag != 2) sd->bonus.magic_damage_return += val; sd->bonus.magic_damage_return = max(sd->bonus.magic_damage_return, 50); break; In src/map/status.c -> function status_calc_pc_() find this block: //Underflow protections. if(sd->dsprate < 0) sd->dsprate = 0; if(sd->castrate < 0) sd->castrate = 0; if(sd->delayrate < 0) sd->delayrate = 0; if(sd->hprecov_rate < 0) sd->hprecov_rate = 0; if(sd->sprecov_rate < 0) sd->sprecov_rate = 0; Add below: sd->delayrate = max(sd->delayrate, 50); Don't forget to re-compile. 😉 ~Kenpachi
  6. Hi. if (rand(10000) < 2000) // 20% chance to fail. // FAIL else // SUCCESS ~Kenpachi
  7. We're working on that issue. (https://github.com/HerculesWS/Hercules/pull/2647) ~Kenpachi
  8. Hercules uses libconfig based database files. Since you're using rAthena, please get support there. ~Kenpachi
  9. I can't reproduce this with latest server version. Which version is your server? (In the map-server console find [Info]: Git revision (src):) Which client do you use? Any modifications to the server? ~Kenpachi
  10. For the skill use event, there is a plugin (with additional features): Maybe it needs a little fixing, tho. ~Kenpachi
  11. Hi. Untested; just converted to Hercules! OnPCSkillUseEvent.diff getskillname.diff ~Kenpachi
  12. Hi. The error is caused by something trying to set a skills name. (Type 64 = BL_SKILL) As far as I can tell, this can only happen in setunittitle() script command or setunitdata() script command (type = UDT_GROUP), because those two script commands don't verify the BL type. Do you have custom scripts which use these script commands? If not, can you re-produce this error and tell us how? ~Kenpachi
  13. 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
  14. Hi. If you're only working with equipped items, you can use the getequipid() script command to read the item's ID. But there's no script command to generally get an item's ID from its name. ~Kenpachi
  15. Hi. You can either forward the server ports in your router to the computer where the server runs on, or you can use tools like Hamachi to create a VPN. You should find many explanations/guides on google for both methods. ~Kenpachi
  16. 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
  17. 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
  18. Hi. That tool isn't even close to be compatible with Hercules, since it's designed for Cronus. Please don't use it. Here is a syntax-fixed version of your script: ~Kenpachi
  19. Nope. That script command just enables you to check if the character is walking or not. You can use it to prevent that freeze you mentioned. Your script may could look like this, after you added the script command to your source: izlude,124,148,4 script test#iz 4_F_NURSE,{ .@GID = getcharid(3); unitwalk .@GID,128,124; while (unitiswalking(.@GID) == 1) sleep2(50); unitwalk .@GID,128,109; while (unitiswalking(.@GID) == 1) sleep2(50); unitwalk .@GID,121,98; while (unitiswalking(.@GID) == 1) sleep2(50);  unitwalk .@GID,108,97; end; } ~Kenpachi
  20. Unfortunately the script engine currently provides no command to check if a character is walking or not. Guess you have to play with the sleep times a bit. //EDIT: I wrote a script command to check if a unit is walking: https://github.com/HerculesWS/Hercules/pull/2628 You may add it by yourself, or wait until the PR is merged. ~Kenpachi
  21. Hi. From doc/script_commands.txt *unitwalk(<GID>, <x>, <y>) *unitwalk(<GID>, <target_GID>) This is one command, but can be used in two ways. If only the first argument is given, the unit whose GID is given will start walking towards the target whose GID is given. When 2 arguments are passed, the given unit will walk to the given x,y coordinates on the map where the unit currently is. Examples: //Will move/walk the poring we made to the coordinates 150,150 unitwalk(.GID, 150, 150); //NPC will move towards the attached player. unitwalk(.GID, getcharid(CHAR_ID_ACCOUNT));//a player's GID is their account ID .GID is the character's account ID. ~Kenpachi
  22. Hello. Please provide information about what you did exactly. (Item DB entries and client data entries.) Moved the topic to General Server Support section. ~Kenpachi
  23. 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
  24. Indeed. But the permission flag skill_unconditional makes all conditions being ignored. From skill.c skillnotok(): if (pc_has_permission(sd, PC_PERM_SKILL_UNCONDITIONAL)) return 0; // can do any damn thing they want And because @brunosc explicitly asked for gemstones, I wrote that dirty little hack. 😅 ~Kenpachi
×
×
  • Create New...

Important Information

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