加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
AntiCheat_wallclimb.cpp 1.25 KB
一键复制 编辑 原始数据 按行查看 历史
coolzoom 提交于 2019-03-29 23:42 . add missing code
#include "AntiCheat_wallclimb.h"
#include "CPlayer.h"
AntiCheat_wallclimb::AntiCheat_wallclimb(CPlayer* player) : AntiCheat(player, AntiCheatType_wallclimb)
{
}
bool AntiCheat_wallclimb::HandleMovement(MovementInfo& MoveInfo, Opcodes opcode, bool cheat)
{
AntiCheat::HandleMovement(MoveInfo, opcode, cheat);
if (isTransport())
return SetOldMoveInfo(false);
float angle = std::atan2(GetDistanceZ(), GetDistance2D()) * 180.f / M_PI_F;
if (angle <= 50.f)
SetStoredMoveInfo(false);
if (!Initialized())
return false;
if (GetDistanceZ() <= 0.f)
return SetOldMoveInfo(false);
if (GetDistanceZ() < JUMPHEIGHT_WATER)
return false;
if (isFalling())
return false;
if (isFlying() || isSwimming())
return false;
if (opcode == MSG_MOVE_FALL_LAND)
return false;
if (!cheat && angle > 50.f && !isTransport())
{
const Position* p = storedMoveInfo.GetPos();
m_Player->TeleportTo(storedMapID, p->x, p->y, p->z, p->o, TELE_TO_NOT_LEAVE_COMBAT);
if (m_Player->GetSession()->GetSecurity() > SEC_PLAYER)
m_Player->BoxChat << "Wallclimbing angle: " << angle << "\n";
return SetOldMoveInfo(true);
}
return SetOldMoveInfo(false);
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化