添加坦克压人处理

This commit is contained in:
aozhiwei 2019-08-29 15:27:21 +08:00
parent f7d50f25f1
commit 559eec5146
4 changed files with 38 additions and 3 deletions

View File

@ -112,6 +112,7 @@ enum VirtualWeapon_e
VW_Spectate = 9000001,
VW_SelfDetonate = 9000002,
VW_Mine = 9000003,
VW_Tank = 9000004,
};
enum VirtualPlayer_e

View File

@ -762,15 +762,25 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
((Human*)hum)->stats.kills++;
((Human*)hum)->kill_humans.insert(this);
((Human*)hum)->SyncAroundPlayers();
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(weapon_id);
if (equip_meta) {
if (weapon_id == VW_Tank) {
std::string msg = a8::Format("%s 使用 %s 干掉了 %s",
{
killer_name,
equip_meta->i->name(),
"载具",
name
});
SendRollMsg(msg);
} else {
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(weapon_id);
if (equip_meta) {
std::string msg = a8::Format("%s 使用 %s 干掉了 %s",
{
killer_name,
equip_meta->i->name(),
name
});
SendRollMsg(msg);
}
}
}
} else {
@ -1986,6 +1996,26 @@ int Human::SkinLv()
return skin.skin_lv;
}
void Human::CheckSkinTank()
{
if (tank_weapon.meta) {
std::set<Human*> objects;
for (auto& grid : grid_list) {
for (Human* hum: grid->human_list) {
if (hum != this && !hum->dead &&
(hum->team_id == 0 || team_id != hum->team_id)) {
if (TestCollision(hum)) {
objects.insert(hum);
}
}
}
}//end for
for (Human* hum : objects) {
hum->BeKill(entity_uniid, name, VW_Tank);
}
}
}
void Human::_UpdateMove(int speed)
{
for (int i = 0; i < speed; ++i) {

View File

@ -208,6 +208,7 @@ class Human : public Entity
const Skin& GetSkin();
int SkinId();
int SkinLv();
void CheckSkinTank();
protected:
void _UpdateMove(int speed);

View File

@ -123,6 +123,9 @@ void Player::UpdateMove()
if (last_collision_door && !TestCollision(last_collision_door)) {
last_collision_door = nullptr;
}
if (tank_weapon.meta) {
CheckSkinTank();
}
}
void Player::UpdateShot()