Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
ну оно так то везде так, после обычной атаки, игроку в таргет берется игрок или существо, атаковавшее его. но это только от обычной атаки.Может от рефлекта? )
А ну да это я затупокну оно так то везде так, после обычной атаки, игроку в таргет берется игрок или существо, атаковавшее его. но это только от обычной атаки.
Это в движке клиента.После физ атаки по персонажу у него в таргете появляется атаковавший его игрок, как и где можно это убрать, подскажите плз.
Когда моб кастует скилл, то он тоже берется в таргет. Про игроков не помню.ну оно так то везде так, после обычной атаки, игроку в таргет берется игрок или существо, атаковавшее его. но это только от обычной атаки.
это в сервере, где то в АИ искать нужноЭто в движке клиента.
Когда моб кастует скилл, то он тоже берется в таргет. Про игроков не помню.
Странные познания=) Это AI на сервере) Такое происходит если у вас в таргете никого нет и вы получаете физ урон, возможно даже только с автоатак работает, за физ скилы не уверен.Это в движке клиента.
Когда моб кастует скилл, то он тоже берется в таргет. Про игроков не помню.
o thank you !it's a feature in the client. To remove it is necessary to edit dll.
It's hard to adapt that fix for l2jmobius?It is a server and client option, you need to modify both, although there is also a way to "skip" this with an algorithm to fool the client, I have it implemented on my h5 server.
@Override
protected void onEvtAttacked(Creature attacker, int damage)
{
if ((attacker instanceof Attackable) && !((Attackable) attacker).isCoreAIDisabled())
{
if (_actor.isPlayer())
{
if (_actor.getTarget() == null)
{
_actor.setTarget(attacker);
}
if (_actor.isInvul())
{
return;
}
}
clientStartAutoAttack();
}
}
Mobius has no characterAI but I thing I will find itin CharacterAIКод:@Override protected void onEvtAttacked(Creature attacker, int damage) { if ((attacker instanceof Attackable) && !((Attackable) attacker).isCoreAIDisabled()) { if (_actor.isPlayer()) { if (_actor.getTarget() == null) { _actor.setTarget(attacker); } if(_actor.isInvul()) { return; } } clientStartAutoAttack(); } }
well on mobius i cant find something similar to edit.in CharacterAIКод:@Override protected void onEvtAttacked(Creature attacker, int damage) { if ((attacker instanceof Attackable) && !((Attackable) attacker).isCoreAIDisabled()) { if (_actor.isPlayer()) { if (_actor.getTarget() == null) { _actor.setTarget(attacker); } if(_actor.isInvul()) { return; } } clientStartAutoAttack(); } }
well on mobius i cant find something similar to edit.
@Override
protected void onIntentionAttack(Creature target)
{
if ((target == null) || !target.isTargetable())
{
clientActionFailed();
return;
}
if (getIntention() == AI_INTENTION_REST)
{
// Cancel action client side by sending Server->Client packet ActionFailed to the Player actor
clientActionFailed();
return;
}
if (_actor.isAllSkillsDisabled() || _actor.isCastingNow() || _actor.isControlBlocked())
{
// Cancel action client side by sending Server->Client packet ActionFailed to the Player actor
clientActionFailed();
return;
}
// Check if the Intention is already AI_INTENTION_ATTACK
if (getIntention() == AI_INTENTION_ATTACK)
{
// Check if the AI already targets the Creature
if (getTarget() != target)
{
// Set the AI attack target (change target)
setTarget(target);
// stopFollow();
// Launch the Think Event
notifyEvent(CtrlEvent.EVT_THINK, null);
}
else
{
clientActionFailed(); // else client freezes until cancel target
}
}
else
{
// Set the Intention of this AbstractAI to AI_INTENTION_ATTACK
changeIntention(AI_INTENTION_ATTACK, target);
// Set the AI attack target
setTarget(target);
// stopFollow();
// Launch the Think Event
notifyEvent(CtrlEvent.EVT_THINK, null);
}
}
Код:@Override protected void onIntentionAttack(Creature target) { if ((target == null) || !target.isTargetable()) { clientActionFailed(); return; } if (getIntention() == AI_INTENTION_REST) { // Cancel action client side by sending Server->Client packet ActionFailed to the Player actor clientActionFailed(); return; } if (_actor.isAllSkillsDisabled() || _actor.isCastingNow() || _actor.isControlBlocked()) { // Cancel action client side by sending Server->Client packet ActionFailed to the Player actor clientActionFailed(); return; } // Check if the Intention is already AI_INTENTION_ATTACK if (getIntention() == AI_INTENTION_ATTACK) { // Check if the AI already targets the Creature if (getTarget() != target) { // Set the AI attack target (change target) settarget(target); // stopFollow(); // Launch the Think Event notifyEvent(CtrlEvent.EVT_THINK, null); } else { clientActionFailed(); // else client freezes until cancel target } } else { // Set the Intention of this AbstractAI to AI_INTENTION_ATTACK changeIntention(AI_INTENTION_ATTACK, target); // Set the AI attack target settarget(target); // stopFollow(); // Launch the Think Event notifyEvent(CtrlEvent.EVT_THINK, null); } }
Не помнишь случайно название функции или примерное место, куда нужно копать на клиенте, чтобы в таргете переставал появляться атакующий тебя персонаж / моб? Пытался найти в nwindow.dll, но пока что безуспешно. Выше привели пример решения со стороны AI на ява сервере, но интересует фикс на уровне клиента.это в клиенте фича. Чтобы убрать надо править dll.