Jump to content
  • 0

[Suggestion/Help] - New Interlude skills


Question

Posted

I tryed to port GOD buffs to interlude by making new skills in xml, also add in skillname/skillgrp/skillsoundgrp. So far i only used Interlude source (copy/paste from other skills/icons), to not mess-up anything untill i have the skills working as they should.

 

The buffs are working, however only if casted by my custom buffer and if i add the skills to myself, they dont show up in the skill list.

 

 

My problems are:

 

1.: What i should do more in order to make the skills show properly in skill list and be castable.

2.: Is there any way to change the "stackType" to allow multiple skills (like improved buffs later chronicles). For the moment i`m using a temporary solution, that i`ve made all stackTypes to match the new buff, but as it is, if someone wannts to use for ex: focus/deathwhisper (without the new buff), they wont work togheter because of same stackType.

 

I don't think server pack matters much about this problems, however i`m using L2j Frozen.

 

Here's an example of the skill in xml:

<!--Tree of Life Blessing - Buff Skill - (Pipe Organ Melody remake)
Increases Max HP by 43%, Max MP by 43%, Max CP by 43%, and HP Recovery Bonus by 20%.-->
<skill id="40003" levels="1" name="Tree of Life Blessing">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="tolMastery">
				<mul order="0x30" stat="maxHp" val="1.43"/>
				<mul order="0x30" stat="maxMp" val="1.43"/>
				<mul order="0x30" stat="maxCp" val="1.43"/>
				<mul order="0x30" stat="regHp" val="1.2"/>
			</effect>
		</for>
</skill>

 

shot00000cra.jpg

 

ps: i did tryed to use search, without much luck. maybe i`m just not using the right tags, so please skip this advice :)

4 answers to this question

Recommended Posts

  • 0
Posted

For 2), you say the fix yourself : you fucked up all stackType. Revert what you did for regular skills, and about skills you added use stackType from the pack you ninja-ed it (and/or edit them yourself if they weren't ok).

  • 0
Posted

For 2), you say the fix yourself : you -beep-ed up all stackType. Revert what you did for regular skills, and about skills you added use stackType from the pack you ninja-ed it (and/or edit them yourself if they weren't ok).

 

Thanks for answer, but...

 

no, i do not ninjaed/steal the skills from anywhere, except copy/paste/modify from other skills and used god buffs info (lvl 4 for melodies) to make them be the same or close to them.

 

The new skills have multiple effects in one (ex: bless the body + bless the soul + paagrio fist + regeneration) and i had to change the stacktype of those skills to be the same as new buff, else they would stack with the new buff instead to be replaced.

 

 

I need different stacktype for each effect like in next example, but either l2j interlude does not support multiple stack or is because of new skill ids, doesnt work...

 

3	        <skill id="1500" levels="1" name="Improved Magic">
4	                <set name="mpConsume" val="28" />
5	                <set name="target" val="TARGET_ONE" />
6	                <set name="skillType" val="BUFF" />
7	                <set name="reuseDelay" val="2000" />
8	                <set name="hitTime" val="1500" />
9	                <set name="isMagic" val="true" />
10	                <set name="operateType" val="OP_ACTIVE" />
11	                <set name="castRange" val="400" />
12	                <set name="effectRange" val="900" />
13	                <set name="aggroPoints" val="655" />
14	                <for>
15	                        <effect name="Buff" time="2400" val="0" stackOrder="99" stackType="ma_up">
16	                                <mul order="0x30" stat="mAtk" val="1.75" />
17	                        </effect>
18	                        <effect name="Buff" time="2400" val="0" stackOrder="99" stackType="MagicDefUp" noicon="1">
19	                                <mul order="0x30" stat="mDef" val="1.3" />
20	                        </effect>
21	                </for>
22	        </skill>

 

 

le:

 

while looking for help, im also trying to workaround for a solution. Doing an overall search about stacktype/stackorder i think the solution is in one of the next files:

 

/gameserver/model/L2Character.java
/gameserver/model/L2Effect.java
/gameserver/skills/DocumentBase.java
/gameserver/skills/effects/EffectTemplate.java

 

However my java skills arent that awesome to modify this without screwing everything up, even if is probably just a few lines of code...

  • 0
Posted

What was the stackType before you messed it replacing with "tolMastery" ?

 

none... since i created the skills myself, using similar skills. Still need to recheck/fix some skill stats to match the real value (for ex: vampiric,reflect, elements), but overall they are ok.

 

 

normally the skills should be like:

 

<!--Vampire's Touch - Buff Skill - (Lute Melody remake)
Increases party members Atk. Spd. with 37% and Casting Spd. +34% for a period of time. Also adds vampiric effect when they deal normal damage to an enemy.-->
<skill id="40000" levels="1" name="Vampire's Touch">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="pAtkSpeedUp">
				<mul order="0x30" stat="pAtkSpd" val="1.37"/>
			</effect>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="mAtkSpeedUp" noicon="1">
				<mul order="0x30" stat="mAtkSpd" val="1.34"/>
			</effect>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="vampRage" noicon="1">
				<add order="0x40" stat="absorbDam" val="9"/>
			</effect>
		</for>
</skill>

 

If i use the above formula stackType replace the other buffs (acumen/haste/vampiric rage types), but wont stop them to be buffed again and stack with new buff.

 

 

Here are the all new skills, which i have purely made because i hate 3-4 buff rows when they can be really nice like in god. And no, they are not ninjaed from anywhere, is not that hard to put togheter a few skills, but make them work properly seems to be...

 

<?xml version='1.0' encoding='utf-8'?>
<list>
<!--Vampire's Touch - Buff Skill - (Lute Melody remake)
Increases party members Atk. Spd. with 37% and Casting Spd. +34% for a period of time. Also adds vampiric effect when they deal normal damage to an enemy.-->
<skill id="40000" levels="1" name="Vampire's Touch">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="vtMastery">
				<mul order="0x30" stat="pAtkSpd" val="1.37"/>
				<mul order="0x30" stat="mAtkSpd" val="1.34"/>
				<add order="0x40" stat="absorbDam" val="9"/>
			</effect>
		</for>
</skill>

<!--Thiefs Guidance - Buff Skill - (Harp Melody remake)
Increases party members Accuracy by 8, Evasion by 8 and Speed by 37. -->
<skill id="40001" levels="1" name="Thiefs Guidance">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="tgMastery">
				<add order="0x40" stat="rEvas" val="4"/>
				<add order="0x40" stat="accCombat" val="8"/>
				<add order="0x40" stat="runSpd" val="37"/>
			</effect>
		</for>
</skill>

<!-- Death Whispers - Buff Skill - (Guitar Melody remake)
Increases P.Critical Rate +38%, P.Critical Damage +35%, and M. Critical Rate +20, and reduces their MP cost for physical and magical skills by 10%. -->
<skill id="40002" levels="1" name="Death Whispers">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="dwMastery">
				<mul order="0x30" stat="cAtk" val="1.35"/>
				<basemul order="0x40" stat="rCrit" val="0.38"/>
				<add order="0x40" stat="mCritRate" val="20"/>
				<mul order="0x30" stat="PhysicalMpConsumeRate" val="0.9"/>
				<mul order="0x30" stat="MagicalMpConsumeRate" val="0.9"/>
			</effect>
		</for>
</skill>

<!--Tree of Life Blessing - Buff Skill - (Pipe Organ Melody remake)
Increases Max HP by 43%, Max MP by 43%, Max CP by 43%, and HP Recovery Bonus by 20%.-->
<skill id="40003" levels="1" name="Tree of Life Blessing">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="tolMastery">
				<mul order="0x30" stat="maxHp" val="1.43"/>
				<mul order="0x30" stat="maxMp" val="1.43"/>
				<mul order="0x30" stat="maxCp" val="1.43"/>
				<mul order="0x30" stat="regHp" val="1.2"/>
			</effect>
		</for>
</skill>

<!--Paagrio's Power - Buff Skill - (Horn Melody remake)
Increases P. Atk.+23%, P. Def.+15%, M. Atk.+91%, and M. Def.+30%.-->
<skill id="40004" levels="1" name="Paagrio's Power">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="ppMastery">
				<mul order="0x30" stat="pAtk" val="1.23"/>
				<mul order="0x30" stat="pDef" val="1.15"/>
				<mul order="0x30" stat="mAtk" val="1.91"/>
				<mul order="0x30" stat="mDef" val="1.3"/>
			</effect>
		</for>
</skill>

<!--Aden's Glory - Buff Skill - (Drum Melody remake)
Increases Max MP by 20% and HP Recovery bonus +20%, M. Critical Rate +20 and increases P. Atk. and M. Atk. +10%. Atk. Spd., Casting Spd. +20%, P. Def. and M. Def. +20%, +10% debuff resistance.-->
<skill id="40005" levels="1" name="Aden's Glory">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="agMastery">
				<mul order="0x30" stat="regHp" val="1.2"/>
				<mul order="0x30" stat="maxMp" val="1.2"/>
				<add order="0x40" stat="mCritRate" val="20"/>
				<mul order="0x30" stat="pAtk" val="1.1"/>
				<mul order="0x30" stat="mAtk" val="1.1"/>
				<mul order="0x30" stat="pDef" val="1.2"/>
				<mul order="0x30" stat="mDef" val="1.2"/>
				<mul order="0x30" stat="pAtkSpd" val="1.2"/>
				<mul order="0x30" stat="mAtkSpd" val="1.2"/>
				<mul order="0x30" stat="cancelVuln" val="0.9"/>
				<mul order="0x30" stat="debuffVuln" val="0.9"/>
			</effect>
		</for>
</skill>

<!--Fury unleashead - Buff Skill - (Prevailing Sonata remake)
Increases party members' Atk. Spd. by 15%, Casting Spd. by 30%, Max HP by 35%, MP recovery bonus by 20% and decreases MP Consumption for magic skill by 10% and the magic cancel rate.-->
<skill id="40006" levels="1" name="Fury Unleashed">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="fuMastery">
				<mul order="0x30" stat="regMp" val="1.2"/>
				<mul order="0x30" stat="maxHp" val="1.3"/>
				<mul order="0x30" stat="pAtkSpd" val="1.15"/>
				<mul order="0x30" stat="mAtkSpd" val="1.3"/>
				<mul order="0x30" stat="PhysicalMpConsumeRate" val="0.9"/>
				<mul order="0x30" stat="MagicalMpConsumeRate" val="0.9"/>
				<sub order="0x40" stat="cancel" val="53"/>
			</effect>
		</for>
</skill>

<!--Daring Devil - Buff Skill - (Daring Sonata remake)
Increases P. Atk. by 8%, M. Atk. by 16%, Atk. Spd. and Casting Spd. by 8% and decreases P. Def. by 3%, M. Def. by 11% and P. Evasion by 4. Also bestows an 8% Vampiric Rage effect and a chance of reflecting 10% of the damage received.-->
<skill id="40007" levels="1" name="Daring Devil">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="ddMastery">
				<mul order="0x30" stat="pAtk" val="1.08"/>
				<mul order="0x30" stat="mAtk" val="1.16"/>
				<mul order="0x30" stat="pAtkSpd" val="1.08"/>
				<mul order="0x30" stat="mAtkSpd" val="1.08"/>
				<mul order="0x30" stat="pDef" val="0.97"/>
				<mul order="0x30" stat="mDef" val="0.89"/>
				<sub order="0x40" stat="rEvas" val="4"/>
				<add order="0x40" stat="absorbDam" val="8"/>
				<add order="0x40" stat="reflectDam" val="10"/>
			</effect>
		</for>
</skill>

<!--Refreshing Winds - Buff Skill - (Refreshing Sonata remake)
Increases HP recovery bonus by 20%, Accuracy+4, Evasion+3 and Speed+20, and decreases MP cost by 20% for skills and skill reuse times by 10%.-->
<skill id="40008" levels="1" name="Refreshing Winds">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="rwMastery">
				<mul order="0x30" stat="regHp" val="1.2"/>
				<add order="0x40" stat="accCombat" val="4"/>
				<add order="0x40" stat="rEvas" val="3"/>
				<add order="0x40" stat="runSpd" val="20"/>
				<mul order="0x30" stat="PhysicalMpConsumeRate" val="0.8"/>
				<mul order="0x30" stat="MagicalMpConsumeRate" val="0.8"/>
				<mul order="0x30" stat="mReuse" val="0.9"/>
				<mul order="0x30" stat="pReuse" val="0.9"/>
			</effect>
		</for>
</skill>

<!--Elemental protection - Buff Skill - (Elemental Protection remake)
Increases the party members resistances to Fire, Water, Wind, and Earth attacks by 30.-->
<skill id="40009" levels="1" name="Elemental Protection">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="epMastery">
			<mul order="0x30" stat="waterVuln" val="0.7"/>
			<mul order="0x30" stat="fireVuln" val="0.7"/>
			<mul order="0x30" stat="windVuln" val="0.7"/>
			<mul order="0x30" stat="earthVuln" val="0.7"/>
			</effect>
		</for>
</skill>

<!--Mental protection - Buff Skill - (Mental Protection remake)
Increases resistances to Hold, Sleep and Mental by 50, buff-canceling by 30, and debuff attacks by 20.-->
<skill id="40010" levels="1" name="Mental Protection">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="mpMastery">
			<mul order="0x40" stat="rootVuln" val="0.5"/>
			<mul order="0x30" stat="sleepVuln" val="0.5"/>
			<mul order="0x30" stat="confusionVuln" val="0.5"/>
			<mul order="0x30" stat="derangementVuln" val="0.5"/>
			<mul order="0x30" stat="cancelVuln" val="0.7"/>
			<mul order="0x30" stat="debuffVuln" val="0.8"/>
			</effect>
		</for>
</skill>

<!--Divine protection - Buff Skill - (Divine Protection remake)
Increases a targets resistances to Stun +40%, Poison and Bleed by 50%, Holy and Dark by 30.-->
<skill id="40011" levels="1" name="Divine Protection">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="dpMastery">
			<mul order="0x30" stat="stunVuln" val="0.6"/>
			<mul order="0x40" stat="poisonVuln" val="0.5"/>
			<mul order="0x30" stat="bleedVuln" val="0.5"/>
			<mul order="0x30" stat="holyVuln" val="0.7"/>
			<mul order="0x30" stat="darkVuln" val="0.7"/>
			</effect>
		</for>
</skill>

<!-- Wizard's Empower (Wizard's Harmony remake)
Increases P. Atk. by 8%, M. Atk. by 40%, Atk. Spd. and Casting Spd. by 8%, M. Def. by 14%, M. Critical Rate by 100%, MP recovery bonus by 20%, Speed by 8 and decreases P. Def. by 8%, P. Evasion by 4, MP Consumption of magic skill by 15%, MP Consumption of physical skill by 5%, and skill cooldown by 20%.-->
<skill id="40012" levels="1" name="Wizard's Empower">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="hMastery">
			<mul order="0x30" stat="pAtk" val="1.08"/>
			<mul order="0x30" stat="mAtk" val="1.4"/>
			<mul order="0x30" stat="pAtkSpd" val="1.08"/>
			<mul order="0x30" stat="mAtkSpd" val="1.08"/>
			<mul order="0x30" stat="mDef" val="1.14"/>
			<mul order="0x40" stat="mCritRate" val="2"/>
			<mul order="0x30" stat="regMp" val="1.2"/>
			<add order="0x40" stat="runSpd" val="8"/>
			<mul order="0x30" stat="pDef" val="0.92"/>
			<sub order="0x40" stat="rEvas" val="4"/>
			<mul order="0x30" stat="PhysicalMpConsumeRate" val="0.95"/>
			<mul order="0x30" stat="MagicalMpConsumeRate" val="0.85"/>
			<mul order="0x30" stat="mReuse" val="0.8"/>
			<mul order="0x30" stat="pReuse" val="0.8"/>
			</effect>
		</for>
</skill>

<!-- Warrior's Might (Warriors's Harmony remake)
Increases P. Atk. by 35%, M. Atk. by 16%, Atk. Spd. and Casting Spd. by 8%, P. Critical Damage by 35%, P. Critical Rate by 100, Speed by 8 and decreases M. Def. by 16%, P. Def. by 8%, and P. Evasion by 4.-->
<skill id="40013" levels="1" name="Warrior's Might">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="hMastery">
			<mul order="0x30" stat="pAtk" val="1.35"/>
			<mul order="0x30" stat="mAtk" val="1.16"/>
			<mul order="0x30" stat="pAtkSpd" val="1.08"/>
			<mul order="0x30" stat="mAtkSpd" val="1.08"/>
			<mul order="0x30" stat="cAtk" val="1.35"/>
			<add order="0x40" stat="rCrit" val="100"/>
			<add order="0x40" stat="runSpd" val="8"/>
			<mul order="0x30" stat="mDef" val="0.84"/>
			<mul order="0x30" stat="pDef" val="0.92"/>
			<sub order="0x40" stat="rEvas" val="4"/>
			</effect>
		</for>
</skill>

<!-- Knight Stance (Knights's Harmony remake)
Increases the selected party member's P. Atk. by 12%, P. Def. by 45%, shield defense rate by 30%, shield P. Def. by 50%, P. Critical Damage by 35% and P. Critical Rate by 100%.-->
<skill id="40014" levels="1" name="Knight Stance">
	<set name="mpConsume" val="100" />
	<set name="target" val="TARGET_SELF" />
	<set name="skillType" val="BUFF" />
	<set name="reuseDelay" val="2000" />
	<set name="hitTime" val="1500" />
	<set name="isMagic" val="true" />
	<set name="operateType" val="OP_ACTIVE" />
	<set name="castRange" val="400" />
	<set name="effectRange" val="900" />
		<for>
			<effect count="1" name="Buff" time="3600" val="0" stackOrder="99" stackType="hMastery">
			<mul order="0x30" stat="pDef" val="1.45"/>
			<mul order="0x30" stat="pAtk" val="1.12"/>
			<mul order="0x30" stat="cAtk" val="1.35"/>
			<add order="0x40" stat="rCrit" val="100"/>
			<mul order="0x30" stat="rShld" val="1.3"/>
			<mul order="0x30" stat="sDef" val="1.5"/>
			</effect>
		</for>
</skill>
</list>

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchiha.sellpass.io/ Join our server for more products : https://discord.gg/uthciha-services https://campsite.bio/utchihaamkt  
    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchiha.sellpass.io/ Join our server for more products : https://discord.gg/uthciha-services https://campsite.bio/utchihaamkt  
    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchiha.sellpass.io/ Join our server for more products : https://discord.gg/uthciha-services https://campsite.bio/utchihaamkt  
    • Hello everyone, I would like some help adapting this file for a custom community board l2jFrozen:   package com.l2jfrozen.gameserver.communitybbs; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import java.util.StringTokenizer; import javolution.util.FastMap; import com.l2jfrozen.Config; import com.l2jfrozen.gameserver.cache.HtmCache; import com.l2jfrozen.gameserver.communitybbs.Manager.BaseBBSManager; import com.l2jfrozen.gameserver.communitybbs.Manager.ClanBBSManager; import com.l2jfrozen.gameserver.communitybbs.Manager.PostBBSManager; import com.l2jfrozen.gameserver.communitybbs.Manager.RegionBBSManager; import com.l2jfrozen.gameserver.communitybbs.Manager.TeleBBSManager; import com.l2jfrozen.gameserver.communitybbs.Manager.TopicBBSManager; import com.l2jfrozen.gameserver.communitybbs.Manager.shopBBSManager; import com.l2jfrozen.gameserver.handler.IBBSHandler; import com.l2jfrozen.gameserver.model.L2Clan; import com.l2jfrozen.gameserver.model.L2World; import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance; import com.l2jfrozen.gameserver.model.multisell.L2Multisell; import com.l2jfrozen.gameserver.network.L2GameClient; import com.l2jfrozen.gameserver.network.SystemMessageId; import com.l2jfrozen.gameserver.network.serverpackets.ShowBoard; import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage; public class CommunityBoard { private static CommunityBoard _instance; private final Map<String, IBBSHandler> _handlers; protected final SimpleDateFormat fmt = new SimpleDateFormat("H:mm."); public CommunityBoard() { _handlers = new FastMap<>(); // null; } public boolean checkPlayerConditions(L2PcInstance activeChar, String command) { if (activeChar.isInOlympiadMode()) { activeChar.sendMessage("CommunityBoard use is prohibited at the Olympiad"); return false; } if (activeChar.isFlying() || activeChar.isMounted()) { activeChar.sendMessage("CommunityBoard use is prohibited at while flying or mounted!"); return false; } if (activeChar.inObserverMode()) { activeChar.sendMessage("CommunityBoard use is prohibited in ObserveMode!"); return false; } if (activeChar.isAlikeDead() || activeChar.isDead()) { activeChar.sendMessage("CommunityBoard use is prohibited While Dead"); return false; } if (activeChar.isInCombat()) { activeChar.sendMessage("CommunityBoard use is prohibited in Combat!"); return false; } if (activeChar.isCastingNow()) { activeChar.sendMessage("CommunityBoard use is prohibited while Casting!"); return false; } if (activeChar.isAttackingNow()) { activeChar.sendMessage("CommunityBoard use is prohibited while Attacking!"); return false; } if (activeChar.isInDuel()) { activeChar.sendMessage("CommunityBoard use is prohibited while Playing Duel!"); return false; } if (activeChar.isFishing()) { activeChar.sendMessage("CommunityBoard use is prohibited while Fishing!"); return false; } if (activeChar.isInStoreMode()) { activeChar.sendMessage("CommunityBoard use is prohibited in StoreMode!"); return false; } if (activeChar.isInJail() || activeChar.isCursedWeaponEquipped() || activeChar.isFlying() || activeChar.isInBoat() || activeChar.isProcessingTransaction() || activeChar.isStunned()) { activeChar.sendMessage("CommunityBoard use is prohibited right now!"); return false; } return true; } public static CommunityBoard getInstance() { if (_instance == null) { _instance = new CommunityBoard(); } return _instance; } /** * by Azagthtot * @param handler as IBBSHandler */ public void registerBBSHandler(final IBBSHandler handler) { for (final String s : handler.getBBSCommands()) { _handlers.put(s, handler); } } /** * by Azagthtot * @param client * @param command */ public void handleCommands(final L2GameClient client, final String command) { L2PcInstance activeChar = client.getActiveChar(); if (activeChar == null) return; if(!checkPlayerConditions(activeChar, command)) return; if (Config.COMMUNITY_TYPE.equals("full")) { String cmd = command.substring(4); String params = ""; final int iPos = cmd.indexOf(" "); if (iPos != -1) { params = cmd.substring(iPos + 1); cmd = cmd.substring(0, iPos); } final IBBSHandler bbsh = _handlers.get(cmd); if (bbsh != null) { bbsh.handleCommand(cmd, activeChar, params); } else { if (command.startsWith("_bbsclan")) { String text = HtmCache.getInstance().getHtm("data/html/CommunityBoard/index.htm"); //Custom Community Board text = text.replace("%CharName%", String.valueOf(activeChar.getName())); text = text.replace("%CharClass%", String.valueOf(activeChar.getClassId().name())); text = text.replace("%CharLevel%", String.valueOf(activeChar.getLevel())); if (activeChar.isNoble()) { text = text.replace("%nobless%", "Yes"); } else { text = text.replace("%nobless%", "No"); } L2Clan clan = activeChar.getClan(); if (clan != null) { text = text.replace("%CharClan%", String.valueOf(activeChar.getClan().getName())); } else { text = text.replace("%CharClan%", "No Clan"); } text = text.replace("%CharIP%", String.valueOf(activeChar.getClient().getConnection().getInetAddress().getHostAddress())); text = text.replace("%PlayerOnline%", String.valueOf(L2World.getInstance().getAllPlayers().size()* 1)); text = text.replace("%ServerTime%", fmt.format(new Date(System.currentTimeMillis()))); //Custom Community Board BaseBBSManager.separateAndSend(text, activeChar); } else if (command.startsWith("_bbsmemo")) { String text = HtmCache.getInstance().getHtm("data/html/CommunityBoard/index.htm"); //Custom Community Board text = text.replace("%CharName%", String.valueOf(activeChar.getName())); text = text.replace("%CharClass%", String.valueOf(activeChar.getClassId().name())); text = text.replace("%CharLevel%", String.valueOf(activeChar.getLevel())); if (activeChar.isNoble()) { text = text.replace("%nobless%", "Yes"); } else { text = text.replace("%nobless%", "No"); } L2Clan clan = activeChar.getClan(); if (clan != null) { text = text.replace("%CharClan%", String.valueOf(activeChar.getClan().getName())); } else { text = text.replace("%CharClan%", "No Clan"); } text = text.replace("%CharIP%", String.valueOf(activeChar.getClient().getConnection().getInetAddress().getHostAddress())); text = text.replace("%PlayerOnline%", String.valueOf(L2World.getInstance().getAllPlayers().size()* 1)); text = text.replace("%ServerTime%", fmt.format(new Date(System.currentTimeMillis()))); //Custom Community Board BaseBBSManager.separateAndSend(text, activeChar); } else if (command.startsWith("_bbsgetfav")) { String text = HtmCache.getInstance().getHtm("data/html/CommunityBoard/index.htm"); //Custom Community Board text = text.replace("%CharName%", String.valueOf(activeChar.getName())); text = text.replace("%CharClass%", String.valueOf(activeChar.getClassId().name())); text = text.replace("%CharLevel%", String.valueOf(activeChar.getLevel())); if (activeChar.isNoble()) { text = text.replace("%nobless%", "Yes"); } else { text = text.replace("%nobless%", "No"); } L2Clan clan = activeChar.getClan(); if (clan != null) { text = text.replace("%CharClan%", String.valueOf(activeChar.getClan().getName())); } else { text = text.replace("%CharClan%", "No Clan"); } text = text.replace("%CharIP%", String.valueOf(activeChar.getClient().getConnection().getInetAddress().getHostAddress())); text = text.replace("%PlayerOnline%", String.valueOf(L2World.getInstance().getAllPlayers().size()* 1)); text = text.replace("%ServerTime%", fmt.format(new Date(System.currentTimeMillis()))); //Custom Community Board BaseBBSManager.separateAndSend(text, activeChar); } else if (command.startsWith("_bbstopics")) { String text = HtmCache.getInstance().getHtm("data/html/CommunityBoard/index.htm"); //Custom Community Board text = text.replace("%CharName%", String.valueOf(activeChar.getName())); text = text.replace("%CharClass%", String.valueOf(activeChar.getClassId().name())); text = text.replace("%CharLevel%", String.valueOf(activeChar.getLevel())); if (activeChar.isNoble()) { text = text.replace("%nobless%", "Yes"); } else { text = text.replace("%nobless%", "No"); } L2Clan clan = activeChar.getClan(); if (clan != null) { text = text.replace("%CharClan%", String.valueOf(activeChar.getClan().getName())); } else { text = text.replace("%CharClan%", "No Clan"); } text = text.replace("%CharIP%", String.valueOf(activeChar.getClient().getConnection().getInetAddress().getHostAddress())); text = text.replace("%PlayerOnline%", String.valueOf(L2World.getInstance().getAllPlayers().size()* 1)); text = text.replace("%ServerTime%", fmt.format(new Date(System.currentTimeMillis()))); //Custom Community Board BaseBBSManager.separateAndSend(text, activeChar); } else if (command.startsWith("_bbsposts")) { String text = HtmCache.getInstance().getHtm("data/html/CommunityBoard/index.htm"); //Custom Community Board text = text.replace("%CharName%", String.valueOf(activeChar.getName())); text = text.replace("%CharClass%", String.valueOf(activeChar.getClassId().name())); text = text.replace("%CharLevel%", String.valueOf(activeChar.getLevel())); if (activeChar.isNoble()) { text = text.replace("%nobless%", "Yes"); } else { text = text.replace("%nobless%", "No"); } L2Clan clan = activeChar.getClan(); if (clan != null) { text = text.replace("%CharClan%", String.valueOf(activeChar.getClan().getName())); } else { text = text.replace("%CharClan%", "No Clan"); } text = text.replace("%CharIP%", String.valueOf(activeChar.getClient().getConnection().getInetAddress().getHostAddress())); text = text.replace("%PlayerOnline%", String.valueOf(L2World.getInstance().getAllPlayers().size()* 1)); text = text.replace("%ServerTime%", fmt.format(new Date(System.currentTimeMillis()))); //Custom Community Board BaseBBSManager.separateAndSend(text, activeChar); } else if (command.startsWith("_bbstop")) { String text = HtmCache.getInstance().getHtm("data/html/CommunityBoard/index.htm"); //Custom Community Board text = text.replace("%CharName%", String.valueOf(activeChar.getName())); text = text.replace("%CharClass%", String.valueOf(activeChar.getClassId().name())); text = text.replace("%CharLevel%", String.valueOf(activeChar.getLevel())); if (activeChar.isNoble()) { text = text.replace("%nobless%", "Yes"); } else { text = text.replace("%nobless%", "No"); } L2Clan clan = activeChar.getClan(); if (clan != null) { text = text.replace("%CharClan%", String.valueOf(activeChar.getClan().getName())); } else { text = text.replace("%CharClan%", "No Clan"); } text = text.replace("%CharIP%", String.valueOf(activeChar.getClient().getConnection().getInetAddress().getHostAddress())); text = text.replace("%PlayerOnline%", String.valueOf(L2World.getInstance().getAllPlayers().size()* 1)); text = text.replace("%ServerTime%", fmt.format(new Date(System.currentTimeMillis()))); //Custom Community Board BaseBBSManager.separateAndSend(text, activeChar); } else if (command.startsWith("_bbshome")) { String text = HtmCache.getInstance().getHtm("data/html/CommunityBoard/index.htm"); //Custom Community Board text = text.replace("%CharName%", String.valueOf(activeChar.getName())); text = text.replace("%CharClass%", String.valueOf(activeChar.getClassId().name())); text = text.replace("%CharLevel%", String.valueOf(activeChar.getLevel())); if (activeChar.isNoble()) { text = text.replace("%nobless%", "Yes"); } else { text = text.replace("%nobless%", "No"); } L2Clan clan = activeChar.getClan(); if (clan != null) { text = text.replace("%CharClan%", String.valueOf(activeChar.getClan().getName())); } else { text = text.replace("%CharClan%", "No Clan"); } text = text.replace("%CharIP%", String.valueOf(activeChar.getClient().getConnection().getInetAddress().getHostAddress())); text = text.replace("%PlayerOnline%", String.valueOf(L2World.getInstance().getAllPlayers().size()* 1)); text = text.replace("%ServerTime%", fmt.format(new Date(System.currentTimeMillis()))); //Custom Community Board BaseBBSManager.separateAndSend(text, activeChar); } else if (command.startsWith("_bbsloc")) { String text = HtmCache.getInstance().getHtm("data/html/CommunityBoard/index.htm"); //Custom Community Board text = text.replace("%CharName%", String.valueOf(activeChar.getName())); text = text.replace("%CharClass%", String.valueOf(activeChar.getClassId().name())); text = text.replace("%CharLevel%", String.valueOf(activeChar.getLevel())); if (activeChar.isNoble()) { text = text.replace("%nobless%", "Yes"); } else { text = text.replace("%nobless%", "No"); } L2Clan clan = activeChar.getClan(); if (clan != null) { text = text.replace("%CharClan%", String.valueOf(activeChar.getClan().getName())); } else { text = text.replace("%CharClan%", "No Clan"); } text = text.replace("%CharIP%", String.valueOf(activeChar.getClient().getConnection().getInetAddress().getHostAddress())); text = text.replace("%PlayerOnline%", String.valueOf(L2World.getInstance().getAllPlayers().size()* 1)); text = text.replace("%ServerTime%", fmt.format(new Date(System.currentTimeMillis()))); //Custom Community Board BaseBBSManager.separateAndSend(text, activeChar); } else if (command.startsWith("_bbstele")) { TeleBBSManager.getInstance().parsecmd(command, activeChar); } else if (command.startsWith("_bbsShop")) { shopBBSManager.getInstance().parsecmd(command, activeChar); } else if(command.startsWith("_bbsmultisell;")) { StringTokenizer st = new StringTokenizer(command, ";"); st.nextToken(); shopBBSManager.getInstance().parsecmd("_bbsShop;" + st.nextToken(), activeChar); L2Multisell.getInstance().SeparateAndSend(Integer.parseInt(st.nextToken()), activeChar, false, 0); } else { ShowBoard sb = new ShowBoard("<html><body><br><br><center>the command: " + command + " is not implemented yet</center><br><br></body></html>", "101"); activeChar.sendPacket(sb); sb = null; activeChar.sendPacket(new ShowBoard(null, "102")); activeChar.sendPacket(new ShowBoard(null, "103")); } } } else if (Config.COMMUNITY_TYPE.equals("old")) { RegionBBSManager.getInstance().parsecmd(command, activeChar); } else { activeChar.sendPacket(new SystemMessage(SystemMessageId.CB_OFFLINE)); } activeChar = null; } /** * @param client * @param url * @param arg1 * @param arg2 * @param arg3 * @param arg4 * @param arg5 */ public void handleWriteCommands(final L2GameClient client, final String url, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5) { L2PcInstance activeChar = client.getActiveChar(); if (activeChar == null) return; if (Config.COMMUNITY_TYPE.equals("full")) { if (url.equals("Topic")) { TopicBBSManager.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar); } else if (url.equals("Post")) { PostBBSManager.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar); } else if (url.equals("Region")) { RegionBBSManager.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar); } else if (url.equals("Notice")) { ClanBBSManager.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar); } else { ShowBoard sb = new ShowBoard("<html><body><br><br><center>the command: " + url + " is not implemented yet</center><br><br></body></html>", "101"); activeChar.sendPacket(sb); sb = null; activeChar.sendPacket(new ShowBoard(null, "102")); activeChar.sendPacket(new ShowBoard(null, "103")); } } else if (Config.COMMUNITY_TYPE.equals("old")) { RegionBBSManager.getInstance().parsewrite(arg1, arg2, arg3, arg4, arg5, activeChar); } else { ShowBoard sb = new ShowBoard("<html><body><br><br><center>The Community board is currently disable</center><br><br></body></html>", "101"); activeChar.sendPacket(sb); sb = null; activeChar.sendPacket(new ShowBoard(null, "102")); activeChar.sendPacket(new ShowBoard(null, "103")); } activeChar = null; } }   And making it work in another l2jOrion project:   package l2jorion.game.community; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import l2jorion.Config; import l2jorion.game.community.manager.BaseBBSManager; import l2jorion.game.community.manager.ClanBBSManager; import l2jorion.game.community.manager.FavoriteBBSManager; import l2jorion.game.community.manager.FriendsBBSManager; import l2jorion.game.community.manager.MailBBSManager; import l2jorion.game.community.manager.PostBBSManager; import l2jorion.game.community.manager.RankBBSManager; import l2jorion.game.community.manager.RegionBBSManager; import l2jorion.game.community.manager.TopBBSManager; import l2jorion.game.community.manager.TopicBBSManager; import l2jorion.game.handler.ICommunityBoardHandler; import l2jorion.game.model.actor.instance.L2PcInstance; import l2jorion.game.network.L2GameClient; import l2jorion.game.network.SystemMessageId; import l2jorion.logger.Logger; import l2jorion.logger.LoggerFactory; public class CommunityBoardManager { protected static Logger LOG = LoggerFactory.getLogger(CommunityBoardManager.class); private Map<String, ICommunityBoardHandler> _handlers = new HashMap<>(); private final Map<Integer, String> _bypasses = new ConcurrentHashMap<>(); private static CommunityBoardManager _instance; public static CommunityBoardManager getInstance() { if (_instance == null) { _instance = new CommunityBoardManager(); } return _instance; } private CommunityBoardManager() { registerBBSHandler(new TopBBSManager()); registerBBSHandler(new FavoriteBBSManager()); registerBBSHandler(new RegionBBSManager()); registerBBSHandler(new ClanBBSManager()); registerBBSHandler(new TopicBBSManager()); registerBBSHandler(new MailBBSManager()); registerBBSHandler(new FriendsBBSManager()); registerBBSHandler(new TopicBBSManager()); registerBBSHandler(new PostBBSManager()); registerBBSHandler(new RankBBSManager()); LOG.info("CommunityBoardHandlers: Loaded " + _handlers.size() + " handlers"); } public void registerBBSHandler(ICommunityBoardHandler handler) { for (String bypass : handler.getBypassBbsCommands()) { if (_handlers.containsKey(bypass)) { continue; } _handlers.put(bypass, handler); } } public void onBypassCommand(L2GameClient client, String command) { final L2PcInstance player = client.getActiveChar(); if (player == null) { return; } if (Config.COMMUNITY_TYPE.equals("off")) { player.sendPacket(SystemMessageId.CB_OFFLINE); return; } /* * if (!AutoImageSenderManager.wereAllImagesSent(player)) { player.sendMessage("Community wasn't loaded yet, try again in few seconds."); player.sendPacket(new ExShowScreenMessage("Community wasn't loaded yet, try again in few seconds.", 2000, 2, false)); return; } */ String cmd = command.substring(4); String params = ""; final int iPos = cmd.indexOf(" "); if (iPos != -1) { params = cmd.substring(iPos + 1); cmd = cmd.substring(0, iPos); } ICommunityBoardHandler bypass = _handlers.get(cmd); if (bypass != null) { bypass.handleCommand(cmd, player, params); } else { if (command.startsWith("_bbshome")) { TopBBSManager.getInstance().parseCmd(command, player); } else if (command.startsWith("_bbsgetfav") || command.startsWith("bbs_add_fav") || command.startsWith("_bbsdelfav_")) { FavoriteBBSManager.getInstance().parseCmd(command, player); } else if (command.startsWith("_bbsloc")) { RegionBBSManager.getInstance().parseCmd(command, player); } else if (command.startsWith("_bbsclan")) { ClanBBSManager.getInstance().parseCmd(command, player); } else if (command.startsWith("_bbsmemo")) { TopicBBSManager.getInstance().parseCmd(command, player); } else if (command.startsWith("_bbsmail") || command.equals("_maillist_0_1_0_")) { MailBBSManager.getInstance().parseCmd(command, player); } else if (command.startsWith("_friend") || command.startsWith("_block")) { FriendsBBSManager.getInstance().parseCmd(command, player); } else if (command.startsWith("_bbstopics")) { TopicBBSManager.getInstance().parseCmd(command, player); } else if (command.startsWith("_bbsposts")) { PostBBSManager.getInstance().parseCmd(command, player); } else if (command.startsWith("_bbsshowrank")) { RankBBSManager.getInstance().parseCmd(command, player); } else { BaseBBSManager.separateAndSend("<html><body><br><br><center>The command: " + command + " isn't implemented.</center></body></html>", player); } } } public void handleWriteCommands(L2GameClient client, String url, String arg1, String arg2, String arg3, String arg4, String arg5) { final L2PcInstance player = client.getActiveChar(); if (player == null) { return; } if (Config.COMMUNITY_TYPE.equals("off")) { player.sendPacket(SystemMessageId.CB_OFFLINE); return; } if (url.equals("Topic")) { TopicBBSManager.getInstance().parseWrite(arg1, arg2, arg3, arg4, arg5, player); } else if (url.equals("Post")) { PostBBSManager.getInstance().parseWrite(arg1, arg2, arg3, arg4, arg5, player); } else if (url.equals("_bbsloc")) { RegionBBSManager.getInstance().parseWrite(arg1, arg2, arg3, arg4, arg5, player); } else if (url.equals("_bbsclan")) { ClanBBSManager.getInstance().parseWrite(arg1, arg2, arg3, arg4, arg5, player); } else if (url.equals("Mail")) { MailBBSManager.getInstance().parseWrite(arg1, arg2, arg3, arg4, arg5, player); } else if (url.equals("Clan")) { ClanBBSManager.getInstance().parseWrite(arg1, arg2, arg3, arg4, arg5, player); } else if (url.equals("_friend")) { FriendsBBSManager.getInstance().parseWrite(arg1, arg2, arg3, arg4, arg5, player); } else { BaseBBSManager.separateAndSend("<html><body><br><br><center>The command: " + url + " isn't implemented.</center></body></html>", player); } } public ICommunityBoardHandler getCommunityHandler(String bypass) { if (_handlers.isEmpty()) { return null; } for (Map.Entry<String, ICommunityBoardHandler> entry : _handlers.entrySet()) { if (bypass.contains(entry.getKey())) { return entry.getValue(); } } return null; } public void addBypass(L2PcInstance player, String title, String bypass) { _bypasses.put(player.getObjectId(), title + "&" + bypass); } public String removeBypass(L2PcInstance player) { return _bypasses.remove(player.getObjectId()); } public Map<Integer, String> getAllBypass() { return _bypasses; } }  
  • Topics

×
×
  • Create New...