Jump to content

Recommended Posts

Posted (edited)
Hi, friends. I wonder how I can make a specific armor set to have hero aura as a set effect when the character equipped all 5 parts of the armor item.

But there are 2 points I want to make sure.

 

1. I don't want all armor set items but only 'specific' armor series to have this effect. (e.g. elegia armor set only)

2. I don't want the character gain neither the hero's abilities nor skill but just the aura effect.

 

I heard from somewhere else that I need to fix L2PcInstance, L2ArmorSet, and Inventory these 3 sources. But the problem is, I don't know

the source keywords.

So, I hope if anybody can show me the source keywords I have to put in and instructions if possible.

 

I found a youtube video that showing the best result I want.


Edited by flyfreedom87
Posted

@UserInfo.java

 

writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // 0x01: Hero Aura

 

There you can do your tricks.

Posted (edited)

Oh... I found the source keyword in userinfo.java and tried to do something with it , but just like I said, I want to add Hero Aura as set effect on specific amor sets. Are you sure that by fixing UserInfo.java, it can even handle the set conditions of armor items?

Edited by flyfreedom87
Posted (edited)

@UserInfo.java

 

writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // 0x01: Hero Aura

 

There you can do your tricks.

I didn't test it but I think should work:

in CharInfo.java and UserInfo.java replace line :

 

writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); // Hero Aura

 

 

with this:

 

if (_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)==helmId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) == glovesId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST) == chestId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS) == legsId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET) == feetId)
{
writeC(1);
}
else
{
writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); // Hero Aura
}
 
where: helmId = Id of helm in your set, glovesId = id of gloves in your set and so on...;P

Hero skills will not be given. Only aura

Edited by SSnakEE
Posted

I just tested it, but it doesn't work. After I applied it, character's name color changed to black and that's it, when equipped all 5 pieces of armor item, no hero aura appeared.

Hmm, i tested It now, and it works :P 

UserInfo.java: (you see hero aura on yourself)

 

if (_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD)==helmId &&
_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) ==glovesId &&
_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST) == chestId &&
activeChar.getInventory()..getPaperdollItemId(Inventory.PAPERDOLL_LEGS) == legsId &&
_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET) == bootsId)
{
writeC(1);
}
else
{
writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); // Hero Aura
}

 

CharInfo.java (other players see hero aura on you)

 

if (_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)==helmId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) ==glovesId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST) == chestId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS) == legsId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET) == bootsId)
{
writeC(1);
}
else
{
writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); // Hero Aura
}

 

Posted (edited)

YEAH~! I found that I should copy and paste the source keywords of UserInfo.java for both UserInfo and CharInfo java files. And it works perfect~!!

Here is my last question, if I want to set this option to more than 2 set armors (Elegia, Versper, Vopal...etc), what should I change?

Edited by flyfreedom87
Posted

YEAH~! I found that I should copy and paste the source keywords of UserInfo.java for both UserInfo and CharInfo java files. And it works perfect~!!

Here is my last question, if I want to set this option to more than 2 set armors (Elegia, Versper, Vopal...etc), what should I change?

You can do same like with one set just add "else if" for more sets eg:

if (_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)==elegiaHelmId &&

_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) ==elegiaGlovesId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST) == elegiaChestId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS) == elegiaLegsId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET) == elegiaBootsId)
{

writeC(1);

}

else if (_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)==vorpalHelmId &&

_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) ==vorpalGlovesId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST) == vorpalChestId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS) == vorpalLegsId &&
_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET) == vorpalBootsId)
{
writeC(1);
}
else
{
writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); // Hero Aura
}

 

or 2nd way, for less code use build in classes to check sets:

 

final ArmorSet elegiaSet = ArmorSetsTable.getInstance().getSet(elegiaChestId);
final ArmorSet vorpalSet = ArmorSetsTable.getInstance().getSet(vorpalChestId);
// more sets here
if (elegiaSet.containAll(_activeChar) && _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST)==elegiaChestId )
{
writeC(1);
}
else if  (vorpalSet.containAll(_activeChar) && _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST)==vorpalChestId )
{
writeC(1);
}
//else if for more sets ...
else
{
writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // 0x01: Hero Aura
}
Posted (edited)

I did as your e.g. but when I copy & paste _inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET) == vorpalBootsId)... these parts, an error message appeared say: '_inv cannot be resolved' with some suggested solutions, among them I tried 'Create field '_inv'' and 'Create constant '_inv'' but it didn't work. I wonder how did you handle this problem?

Edited by flyfreedom87
Posted (edited)

Notice that in "UserInfo.java" you use: _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)
while in "CharInfo.java" it is: _inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)

 

Edited by SSnakEE
Posted (edited)

Hmm, I got the _inv error exactly when I input the keywords into the "CharInfo.java". I don't know why but, fortunately I found that  _activeChar.getInventory() is work both "UserInfo.java" and "CharInfo.java" and the result is what I wanted.

 Anyway, without your help SSnakEE, I could never get it done. I really appreciate your kind answers. Thank you my friend~!! ;D

The post can be locked now.

Edited by flyfreedom87

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Introducing: Daily & Weekly Missions!   I've released a major panel update with a new Missions system and expanded language support.   Players can now complete daily and weekly missions directly through the panel and claim rewards such as balance or items. Mission progress is tied to in-game activity and supported panel actions, and the update also adds a dedicated Missions page, dashboard mission previews, claimable mission indicators, and full admin tools for creating and managing missions.   The Roll page now shows the potential reward drops below the roll container.   Alongside this, I’ve expanded the panel’s language support with new locale options, including Bulgarian, Czech, Georgian, Lithuanian, Polish, Romanian, Japanese, Simplified Chinese, and Traditional Chinese.     The Demo is now updated with the new features for you to try out!
    • I sell complete packs. If you want to add an item, NPC, etc., you have to do that yourselves. Your friend bought the pack; he's the one who needs to configure his server type. He received what he bought as agreed, and I'm saying this without knowing who you're talking about, because anyone who buys something receives what was agreed upon.   Regards. mmmmm L2Velmore ????   If that's the one, I see everything went well... if I remember correctly you were crying over $100, I gave you a better price, and I suppose you made thousands with that... And you're still coming back to complain? :=)
    • I know many people have struggled with this specific issue and had trouble setting up the correct behavior for Toggle skills in aCis. By default, toggles interrupt the player's movement (retail-like), which often feels clunky to players who prefer a smoother, more modern experience. I've prepared a clean solution that eliminates this "freeze" and allows for fluid movement while toggling your auras. Below is the code on how to achieve this. Hope it helps! Changes in PlayerAI.java: Modified doActiveIntention to properly update the active state without stalling. Removed the forced stop() during toggle casting. Added a MoveToLocation broadcast to ensure other players see your movement correctly (prevents visual "teleporting" or desync). Best regards 😃 diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/ai/type/PlayerAI.java b/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/ai/type/PlayerAI.java index ba0425a..1b2658d 100644 --- a/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/ai/type/PlayerAI.java +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/ai/type/PlayerAI.java @@ -28,6 +28,7 @@  import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;  import net.sf.l2j.gameserver.network.serverpackets.AutoAttackStart;  import net.sf.l2j.gameserver.network.serverpackets.ChairSit; +import net.sf.l2j.gameserver.network.serverpackets.MoveToLocation;  import net.sf.l2j.gameserver.network.serverpackets.MoveToLocationInVehicle;  import net.sf.l2j.gameserver.network.serverpackets.MoveToPawn;  import net.sf.l2j.gameserver.network.serverpackets.StopMove; @@ -159,7 +160,10 @@      @Override      public synchronized void doActiveIntention()      { -        doIdleIntention(); +        prepareIntention(); +        _currentIntention.updateAsActive(); +        if (!getActor().isMoving()) +            thinkIdle();      }            @Override @@ -280,8 +284,9 @@                    if (skill.isToggle())          { -            getActor().getMove().stop();              getActor().getCast().doToggleCast(skill, target); +            if (getActor().isMoving()) +                getActor().broadcastPacket(new MoveToLocation(getActor()));          }          else          { https://pastebin.com/twZujZ3Y
    • The pot calling the kettle black.  '' GX-EXT'' He did some work for a friend and hasn’t finished it to this day—so, the pot calling the kettle black. I find it funny.   '' GX-EXT' IS TRASH PERSONA      
    • Looks that many source is gonna leak?
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..