- Хроники
- Chaotic Throne: High Five
- Исходники
- Присутствуют
- Сборка
- CCCP HF last (https://mmo-dev.info/threads/cccp-hf-last.18160/)
Здравствуйте! Направьте, пожалуйста, в какую сторону копать.
Во время юза скилла какая-то вакханалия происходит, админ чары нормально все этапы проходят, а обычные почему-то фейлятся. Я никак не могу понять, где может быть зарыта эта проверка.
Прикрутил дебаг буквально на каждый конд, персонаж их успешно проходит, а потом молча фейлится:
На всякий случай:
Выглядит это вот так, сначала админ чар, потом обычный:
Посмотреть вложение 2021-07-26 13-22-58.mp4
Во время юза скилла какая-то вакханалия происходит, админ чары нормально все этапы проходят, а обычные почему-то фейлятся. Я никак не могу понять, где может быть зарыта эта проверка.
Прикрутил дебаг буквально на каждый конд, персонаж их успешно проходит, а потом молча фейлится:
Java:
package com.l2cccp.gameserver.skills.skillclasses;
import java.util.List;
import com.l2cccp.gameserver.instancemanager.ReflectionManager;
import com.l2cccp.gameserver.model.Creature;
import com.l2cccp.gameserver.model.Player;
import com.l2cccp.gameserver.model.Skill;
import com.l2cccp.gameserver.model.Zone;
import com.l2cccp.gameserver.model.actor.instances.player.TpBookMark;
import com.l2cccp.gameserver.network.l2.components.SystemMsg;
import com.l2cccp.gameserver.network.l2.s2c.SystemMessage;
import com.l2cccp.gameserver.skills.SkillEntry;
import com.l2cccp.gameserver.templates.StatsSet;
/**
* @author VISTALL
* @date 17:03/08.08.2011
*/
public class BookMarkTeleport extends Skill
{
public BookMarkTeleport(StatsSet set)
{
super(set);
}
@Override
public boolean checkCondition(SkillEntry skillEntry, final Creature activeChar, final Creature target, boolean forceUse, boolean dontMove, boolean first)
{
if(!activeChar.isPlayer() || !super.checkCondition(skillEntry, activeChar, target, forceUse, dontMove, first))
return false;
else
activeChar.sendMessage("1");
Player player = activeChar.getPlayer();
TpBookMark loc = (TpBookMark)player.getVars().get(Player.TELEPORT_BOOKMARK);
if(loc == null)
{
player.sendPacket(new SystemMessage(SystemMsg.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS).addSkillName(skillEntry));
return false;
}
else
activeChar.sendMessage("2");
if(player.isActionBlocked(Zone.BLOCKED_ACTION_USE_BOOKMARK))
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_MY_TELEPORTS_IN_THIS_AREA);
return false;
}
else
activeChar.sendMessage("3");
if(player.getActiveWeaponFlagAttachment() != null)
{
player.sendPacket(SystemMsg.YOU_CANNOT_TELEPORT_WHILE_IN_POSSESSION_OF_A_WARD);
return false;
}
else
activeChar.sendMessage("4");
if(player.isInOlympiadMode())
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_IN_AN_OLYMPIAD_MATCH);
return false;
}
else
activeChar.sendMessage("5");
if(player.getReflection() != ReflectionManager.DEFAULT)
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_MY_TELEPORTS_IN_AN_INSTANT_ZONE);
return false;
}
else
activeChar.sendMessage("6");
if(player.isInDuel())
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_DUEL);
return false;
}
else
activeChar.sendMessage("7");
if(player.isInCombat() || player.getPvpFlag() != 0)
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_MY_TELEPORTS_DURING_A_BATTLE);
return false;
}
else
activeChar.sendMessage("8");
if(player.isOnSiegeField() || player.isInZoneBattle())
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_PARTICIPATING_A_LARGESCALE_BATTLE_SUCH_AS_A_CASTLE_SIEGE_FORTRESS_SIEGE_OR_HIDEOUT_SIEGE);
return false;
}
else
activeChar.sendMessage("9");
if(player.isFlying())
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_MY_TELEPORTS_WHILE_FLYING);
return false;
}
else
activeChar.sendMessage("10");
if(player.isInWater() || player.isInBoat())
{
player.sendPacket(SystemMsg.YOU_CANNOT_USE_MY_TELEPORTS_UNDERWATER);
return false;
}
else
activeChar.sendMessage("11");
if(first && !player.consumeItem(13016, 1))
{
player.sendPacket(SystemMsg.YOU_CANNOT_TELEPORT_BECAUSE_YOU_DO_NOT_HAVE_A_TELEPORT_ITEM);
return false;
}
else
activeChar.sendMessage("12");
return true;
}
@Override
public void useSkill(SkillEntry skillEntry, Creature activeChar, List<Creature> targets)
{
activeChar.sendMessage("use 13");
}
}
Java:
package com.l2cccp.gameserver.network.l2.c2s;
import com.l2cccp.commons.collections.CollectionUtils;
import com.l2cccp.gameserver.model.Player;
import com.l2cccp.gameserver.model.actor.instances.player.TpBookMark;
import com.l2cccp.gameserver.skills.SkillEntry;
import com.l2cccp.gameserver.tables.SkillTable;
public class RequestTeleportBookMark extends L2GameClientPacket
{
private static final SkillEntry SKILL = SkillTable.getInstance().getSkillEntry(2588, 1);
private int _slot;
@Override
protected void readImpl()
{
_slot = readD();
}
@Override
protected void runImpl()
{
Player activeChar = getClient().getActiveChar();
if(activeChar == null)
return;
if(activeChar.isActionsDisabled() || activeChar.isTeleportBlocked())
{
activeChar.sendActionFailed();
return;
}
TpBookMark bookMark = CollectionUtils.safeGet(activeChar.getTpBookMarks(), _slot - 1);
if(bookMark == null)
return;
activeChar.getVars().set(Player.TELEPORT_BOOKMARK, bookMark);
activeChar.getAI().Cast(SKILL, activeChar);
}
}
Посмотреть вложение 2021-07-26 13-22-58.mp4