From 8df475806c698175e5a824846cc765217c25f0d9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 18 Jul 2019 11:55:52 +0800 Subject: [PATCH] 1 --- server/gameserver/android.cc | 1 + server/gameserver/bullet.cc | 16 +++++++++++++-- server/gameserver/human.cc | 37 ++++++++++++++++++++--------------- server/gameserver/human.h | 1 + server/gameserver/obstacle.cc | 2 +- server/gameserver/player.cc | 1 + 6 files changed, 39 insertions(+), 19 deletions(-) diff --git a/server/gameserver/android.cc b/server/gameserver/android.cc index 78eeb60..4619303 100644 --- a/server/gameserver/android.cc +++ b/server/gameserver/android.cc @@ -53,5 +53,6 @@ void Android::GiveEquip() weapons[GUN_SLOT1].meta = weapon_meta; weapons[GUN_SLOT1].Recalc(); curr_weapon = &weapons[GUN_SLOT1]; + DirectReload(); } } diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 5a0683b..666e51e 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -246,10 +246,22 @@ void Bullet::ProcMissible(const a8::XParams& param) if (target && !target->dead) { if (bullet_meta->i->equip_subtype() == BulletType_Trace) { if (src_pos.Distance(target->pos) < bullet_meta->i->range()) { - target->DecHP(bullet_meta->i->atk(), sender->entity_uniid, sender->name, bullet_meta->i->id()); + if (!target->HasBuffEffect(BET_Invincible)) { + target->DecHP(bullet_meta->i->atk(), + sender->entity_uniid, + sender->name, + bullet_meta->i->id() + ); + } } } else { - target->DecHP(bullet_meta->i->atk(), sender->entity_uniid, sender->name, bullet_meta->i->id()); + if (!target->HasBuffEffect(BET_Invincible)) { + target->DecHP(bullet_meta->i->atk(), + sender->entity_uniid, + sender->name, + bullet_meta->i->id() + ); + } } } } diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index fc2e3d0..799a59a 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1152,22 +1152,7 @@ void Human::UpdateAction() curr_weapon->weapon_id == action_item_id ) { { - int ammo = curr_weapon->ammo; - if (ammo < curr_weapon->GetClipVolume()) { - if (GetInventory(WEAPON_SLOT) > 0) { - int add_num = 0; - if (GetInventory(WEAPON_SLOT) <= - curr_weapon->GetClipVolume() - ammo) { - add_num = GetInventory(WEAPON_SLOT); - DecInventory(WEAPON_SLOT, add_num); - } else { - add_num = curr_weapon->GetClipVolume() - ammo; - DecInventory(WEAPON_SLOT, add_num); - } - curr_weapon->ammo += add_num; - need_sync_active_player = true;; - } - } + DirectReload(); } } } @@ -1272,6 +1257,26 @@ void Human::UpdateAction() } } +void Human::DirectReload() +{ + int ammo = curr_weapon->ammo; + if (ammo < curr_weapon->GetClipVolume()) { + if (GetInventory(WEAPON_SLOT) > 0) { + int add_num = 0; + if (GetInventory(WEAPON_SLOT) <= + curr_weapon->GetClipVolume() - ammo) { + add_num = GetInventory(WEAPON_SLOT); + DecInventory(WEAPON_SLOT, add_num); + } else { + add_num = curr_weapon->GetClipVolume() - ammo; + DecInventory(WEAPON_SLOT, add_num); + } + curr_weapon->ammo += add_num; + need_sync_active_player = true;; + } + } +} + void Human::SendUIUpdate() { cs::SMUiUpdate notifymsg; diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 8ebf000..2e307f7 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -188,6 +188,7 @@ class Human : public Entity void SendDebugMsg(const std::string& debug_msg); void SendRollMsg(const std::string& roll_msg); void UpdateAction(); + void DirectReload(); void SendUIUpdate(); void SendWxVoip(); int GetWeaponConfigLv(int weapon_id); diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 839fb58..22f1865 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -203,7 +203,7 @@ void Obstacle::Explosion() case ET_Player: { Human* hum = (Human*)target; - if (!hum->dead) { + if (!hum->dead && hum != master) { float dmg = meta->i->damage(); float def = hum->ability.def + hum->ability.def_add; float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index ea34d32..a22c174 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -43,6 +43,7 @@ void Player::Initialize() weapons[GUN_SLOT1].meta = weapon_meta; weapons[GUN_SLOT1].Recalc(); curr_weapon = &weapons[GUN_SLOT1]; + DirectReload(); } } RecalcBaseAttr();