When i'm using 2-handed sword (or any melee weapon) my soulshot wont load properly.Every 2-3 hits i miss 1 soulshot (less dmg)
How can i change the soulshot re-load time?I looked over here:
final int timeAtk = calculateTimeBetweenAttacks(target, weaponItem);
// Recharge any active auto soulshot tasks for player (or player's summon if one exists).
if (this instanceof L2PcInstance)
{
((L2PcInstance) this).rechargeAutoSoulShot(true, false, false, timeAtk);
}
else if (this instanceof L2Summon)
{
((L2Summon) this).getOwner().rechargeAutoSoulShot(true, false, true, timeAtk);
}
// Verify if soulshots are charged.
boolean wasSSCharged;
if (this instanceof L2Summon && !(this instanceof L2PetInstance))
{
wasSSCharged = ((L2Summon) this).getChargedSoulShot() != L2ItemInstance.CHARGED_NONE;
}
else
{
wasSSCharged = weaponInst != null && weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE;
}
// Get the Attack Speed of the L2Character (delay (in milliseconds) before next attack)
// the hit is calculated to happen halfway to the animation - might need further tuning e.g. in bow case
final int timeToHit = timeAtk / 2;
_attackEndTime = GameTimeController.getGameTicks();
_attackEndTime += (timeAtk / GameTimeController.MILLIS_IN_TICK);
_attackEndTime -= 1;
int ssGrade = 0;
if (weaponItem != null)
{
ssGrade = weaponItem.getCrystalType();
}
// Create a Server->Client packet Attack
Attack attack = new Attack(this, wasSSCharged, ssGrade);
boolean hitted;
// Set the Attacking Body part to CHEST
setAttackingBodypart();
// Heading calculation on every attack
this.setHeading(Util.calculateHeadingFrom(this.getX(), this.getY(), target.getX(), target.getY()));
// Get the Attack Reuse Delay of the L2Weapon
final int reuse = calculateReuseTime(target, weaponItem);
// Select the type of attack to start
if (weaponItem == null)
{
hitted = doAttackHitSimple(attack, target, timeToHit);
}
else if (weaponItem.getItemType() == L2WeaponType.BOW)
{
hitted = doAttackHitByBow(attack, target, timeAtk, reuse);
}
else if (weaponItem.getItemType() == L2WeaponType.POLE)
{
hitted = doAttackHitByPole(attack, timeToHit);
}
else if (isUsingDualWeapon())
{
hitted = doAttackHitByDual(attack, target, timeToHit);
}
else
{
hitted = doAttackHitSimple(attack, target, timeToHit);
}
// Flag the attacker if it's a L2PcInstance outside a PvP area
L2PcInstance player = null;
if (this instanceof L2PcInstance)
{
player = (L2PcInstance) this;
}
else if (this instanceof L2Summon)
{
player = ((L2Summon) this).getOwner();
}
if (player != null)
{
player.updatePvPStatus(target);
}
// Check if hit isn't missed
if (!hitted)
{
// MAJAX fix
sendPacket(new SystemMessage(SystemMessageId.MISSED_TARGET));
// Abort the attack of the L2Character and send Server->Client ActionFailed packet
abortAttack();
}
else
{
/*
* ADDED BY nexus - 2006-08-17 As soon as we know that our hit landed, we must discharge any active soulshots. This must be done so to avoid unwanted soulshot consumption.
*/
// If we didn't miss the hit, discharge the shoulshots, if any
if (this instanceof L2Summon && !(this instanceof L2PetInstance))
{
((L2Summon) this).setChargedSoulShot(L2ItemInstance.CHARGED_NONE);
}
else if (weaponInst != null)
{
weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_NONE);
}
if (player != null)
{
if (player.isCursedWeaponEquiped())
{
// If hitted by a cursed weapon, Cp is reduced to 0
if (!target.isInvul())
{
target.setCurrentCp(0);
}
}
else if (player.isHero())
{
if (target instanceof L2PcInstance && ((L2PcInstance) target).isCursedWeaponEquiped())
{
// If a cursed weapon is hitted by a Hero, Cp is reduced to 0
target.setCurrentCp(0);
}
}
}
weaponInst = null;
weaponItem = null;
}
// If the Server->Client packet Attack contains at least 1 hit, send the Server->Client packet Attack
// to the L2Character AND to all L2PcInstance in the _KnownPlayers of the L2Character
if (attack.hasHits())
{
broadcastPacket(attack);
fireEvent(EventType.ATTACK.name, new Object[]
{
getTarget()
});
}
// Like L2OFF mobs id 27181 can teleport players near cabrio
if (this instanceof L2MonsterInstance && ((L2MonsterInstance) this).getNpcId() == 27181)
{
final int rndNum = Rnd.get(100);
final L2PcInstance gettarget = (L2PcInstance) this.getTarget();
if (rndNum < 5 && gettarget != null)
gettarget.teleToLocation(179768, 6364, -2734);
}
// Like L2OFF if target is not auto attackable you give only one hit
if (this instanceof L2PcInstance && target instanceof L2PcInstance && !target.isAutoAttackable(this))
{
((L2PcInstance) this).getAI().clientStopAutoAttack();
((L2PcInstance) this).getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, this);
}
// Notify AI with EVT_READY_TO_ACT
ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), timeAtk + reuse);
attack = null;
player = null;
}
I was waiting for you to wrap all this stuff around xD The true is that he selling Lucera 2 IL on Classic client claiming this the best stuff but reality maybe pvp srv can this shit adopt and the maps was taken from devmem or how it calllz forgot this guy who makingmaps, use this all work without even geodata selling this crap and claim its the best pack, he sould ban from ucera cominity for crappy image but up to them ) Anyway this shit was selin for money and u can download for free )
the translation on google is something about discovering a mammoths dick or something
but generally he says that "dick" a lot maybe he likes them
but whats the story behind and what is the truth ..we will never know
Question
lewnidasds
Hello everyone!
I'm using l2j Frozen and i have soulshot issue.
When i'm using 2-handed sword (or any melee weapon) my soulshot wont load properly.Every 2-3 hits i miss 1 soulshot (less dmg)
How can i change the soulshot re-load time?I looked over here:
final int timeAtk = calculateTimeBetweenAttacks(target, weaponItem); // Recharge any active auto soulshot tasks for player (or player's summon if one exists). if (this instanceof L2PcInstance) { ((L2PcInstance) this).rechargeAutoSoulShot(true, false, false, timeAtk); } else if (this instanceof L2Summon) { ((L2Summon) this).getOwner().rechargeAutoSoulShot(true, false, true, timeAtk); } // Verify if soulshots are charged. boolean wasSSCharged; if (this instanceof L2Summon && !(this instanceof L2PetInstance)) { wasSSCharged = ((L2Summon) this).getChargedSoulShot() != L2ItemInstance.CHARGED_NONE; } else { wasSSCharged = weaponInst != null && weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE; } // Get the Attack Speed of the L2Character (delay (in milliseconds) before next attack) // the hit is calculated to happen halfway to the animation - might need further tuning e.g. in bow case final int timeToHit = timeAtk / 2; _attackEndTime = GameTimeController.getGameTicks(); _attackEndTime += (timeAtk / GameTimeController.MILLIS_IN_TICK); _attackEndTime -= 1; int ssGrade = 0; if (weaponItem != null) { ssGrade = weaponItem.getCrystalType(); } // Create a Server->Client packet Attack Attack attack = new Attack(this, wasSSCharged, ssGrade); boolean hitted; // Set the Attacking Body part to CHEST setAttackingBodypart(); // Heading calculation on every attack this.setHeading(Util.calculateHeadingFrom(this.getX(), this.getY(), target.getX(), target.getY())); // Get the Attack Reuse Delay of the L2Weapon final int reuse = calculateReuseTime(target, weaponItem); // Select the type of attack to start if (weaponItem == null) { hitted = doAttackHitSimple(attack, target, timeToHit); } else if (weaponItem.getItemType() == L2WeaponType.BOW) { hitted = doAttackHitByBow(attack, target, timeAtk, reuse); } else if (weaponItem.getItemType() == L2WeaponType.POLE) { hitted = doAttackHitByPole(attack, timeToHit); } else if (isUsingDualWeapon()) { hitted = doAttackHitByDual(attack, target, timeToHit); } else { hitted = doAttackHitSimple(attack, target, timeToHit); } // Flag the attacker if it's a L2PcInstance outside a PvP area L2PcInstance player = null; if (this instanceof L2PcInstance) { player = (L2PcInstance) this; } else if (this instanceof L2Summon) { player = ((L2Summon) this).getOwner(); } if (player != null) { player.updatePvPStatus(target); } // Check if hit isn't missed if (!hitted) { // MAJAX fix sendPacket(new SystemMessage(SystemMessageId.MISSED_TARGET)); // Abort the attack of the L2Character and send Server->Client ActionFailed packet abortAttack(); } else { /* * ADDED BY nexus - 2006-08-17 As soon as we know that our hit landed, we must discharge any active soulshots. This must be done so to avoid unwanted soulshot consumption. */ // If we didn't miss the hit, discharge the shoulshots, if any if (this instanceof L2Summon && !(this instanceof L2PetInstance)) { ((L2Summon) this).setChargedSoulShot(L2ItemInstance.CHARGED_NONE); } else if (weaponInst != null) { weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_NONE); } if (player != null) { if (player.isCursedWeaponEquiped()) { // If hitted by a cursed weapon, Cp is reduced to 0 if (!target.isInvul()) { target.setCurrentCp(0); } } else if (player.isHero()) { if (target instanceof L2PcInstance && ((L2PcInstance) target).isCursedWeaponEquiped()) { // If a cursed weapon is hitted by a Hero, Cp is reduced to 0 target.setCurrentCp(0); } } } weaponInst = null; weaponItem = null; } // If the Server->Client packet Attack contains at least 1 hit, send the Server->Client packet Attack // to the L2Character AND to all L2PcInstance in the _KnownPlayers of the L2Character if (attack.hasHits()) { broadcastPacket(attack); fireEvent(EventType.ATTACK.name, new Object[] { getTarget() }); } // Like L2OFF mobs id 27181 can teleport players near cabrio if (this instanceof L2MonsterInstance && ((L2MonsterInstance) this).getNpcId() == 27181) { final int rndNum = Rnd.get(100); final L2PcInstance gettarget = (L2PcInstance) this.getTarget(); if (rndNum < 5 && gettarget != null) gettarget.teleToLocation(179768, 6364, -2734); } // Like L2OFF if target is not auto attackable you give only one hit if (this instanceof L2PcInstance && target instanceof L2PcInstance && !target.isAutoAttackable(this)) { ((L2PcInstance) this).getAI().clientStopAutoAttack(); ((L2PcInstance) this).getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE, this); } // Notify AI with EVT_READY_TO_ACT ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), timeAtk + reuse); attack = null; player = null; }I dont know if i'm looking right.
Thanks for the help!
3 answers to this question
Recommended Posts