-
Content Count
204 -
Joined
-
Last visited
-
Days Won
33
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by Kenpachi
-
Adding Limit or Cap Resistance, Reflect Chance, and Skill Delay
Kenpachi replied to ThyroDree's question in Source Support
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 -
Hi. There is neither a bonus called bAddClass nor a constant called Class_All in Hercules. ~Kenpachi
-
Hi. Just update your server to the latest release. Alternatively you can apply this patch: 1e572d0bd99b2f1f2b6a29f0184c9fb28e0db655.patch (How to apply a patch file.) ~Kenpachi
-
Hi. Please don't revive dead topics if you just opened a similar one by yourself. I answered in your topic. ~Kenpachi
-
Adding Limit or Cap Resistance, Reflect Chance, and Skill Delay
Kenpachi replied to ThyroDree's question in Source Support
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 -
[Request] Exchanger NPC with successful percentage function
Kenpachi replied to hadiesyafiq's question in Script Requests
Hi. Quick'n'dirty: ~Kenpachi -
[Request] Exchanger NPC with successful percentage function
Kenpachi replied to hadiesyafiq's question in Script Requests
Hi. if (rand(10000) < 2000) // 20% chance to fail. // FAIL else // SUCCESS ~Kenpachi -
We're working on that issue. (https://github.com/HerculesWS/Hercules/pull/2647) ~Kenpachi
-
How to put Asura skill in a mob? skill mob db
Kenpachi replied to Skits's question in Database Requests
Hercules uses libconfig based database files. Since you're using rAthena, please get support there. ~Kenpachi -
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
-
For the skill use event, there is a plugin (with additional features): Maybe it needs a little fixing, tho. ~Kenpachi
-
Hi. Untested; just converted to Hercules! OnPCSkillUseEvent.diff getskillname.diff ~Kenpachi
-
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
-
Newbie question: how get an item ID by item name?
Kenpachi replied to Kavaline's question in Script Support
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 -
Newbie question: how get an item ID by item name?
Kenpachi replied to Kavaline's question in Script Support
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 -
How can i connect my friends for a test server?
Kenpachi replied to Exze's question in General Server Support
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 -
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
-
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
-
Need help fixing this npc quest script i got from a tool.
Kenpachi replied to Skits's question in Script Support
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 -
[Solved] Possible to move character's player ?
Kenpachi replied to Baps's question in Script Support
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 -
[Solved] Possible to move character's player ?
Kenpachi replied to Baps's question in Script Support
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 -
[Solved] Possible to move character's player ?
Kenpachi replied to Baps's question in Script Support
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 -
(help) items are not displayed in hercules emulator.
Kenpachi replied to darling fajardo's question in General Server Support
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 -
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
-
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