remove zombie mode code
This commit is contained in:
parent
f498cafa47
commit
217cc3f938
@ -63,14 +63,11 @@ void Android::InternalUpdate(int delta_time)
|
||||
|
||||
void Android::GiveEquip()
|
||||
{
|
||||
MetaData::Equip* weapon_meta = MetaMgr::Instance()->GetEquip
|
||||
(room->GetRoomMode() == kZombieMode ?
|
||||
robot_meta->i->zbmode_weapon_id() : robot_meta->i->weapon_id());
|
||||
MetaData::Equip* weapon_meta = MetaMgr::Instance()->GetEquip(robot_meta->i->weapon_id());
|
||||
if (weapon_meta) {
|
||||
weapons[GUN_SLOT1].weapon_idx = GUN_SLOT1;
|
||||
weapons[GUN_SLOT1].weapon_id = weapon_meta->i->id();
|
||||
weapons[GUN_SLOT1].weapon_lv = room->GetRoomMode() == kZombieMode ?
|
||||
robot_meta->i->zbmode_weapon_lv() : robot_meta->i->weapon_lv();
|
||||
weapons[GUN_SLOT1].weapon_lv = robot_meta->i->weapon_lv();
|
||||
weapons[GUN_SLOT1].ammo = 0;
|
||||
weapons[GUN_SLOT1].meta = weapon_meta;
|
||||
weapons[GUN_SLOT1].Recalc();
|
||||
|
@ -224,21 +224,6 @@ enum VirtualPlayer_e
|
||||
VP_Mine = 9000003,
|
||||
};
|
||||
|
||||
#if 0
|
||||
enum EquipAttr_e
|
||||
{
|
||||
EA_View = 1, //客户端用
|
||||
EA_ShotRange = 2,
|
||||
EA_Volume = 3,
|
||||
EA_AutoAngle = 4, //客户端用
|
||||
EA_BulletAngle = 5,
|
||||
EA_Atk = 6,
|
||||
EA_Def = 7,
|
||||
EA_Speed = 8,
|
||||
EA_End
|
||||
};
|
||||
#endif
|
||||
|
||||
enum EquipType_e
|
||||
{
|
||||
EQUIP_TYPE_WEAPON = 1,
|
||||
@ -307,21 +292,18 @@ enum ObjectSyncFlags_e
|
||||
enum RoomMode_e
|
||||
{
|
||||
kChiJiMode = 0,
|
||||
kZombieMode = 1,
|
||||
kRoomModeEnd
|
||||
};
|
||||
|
||||
enum RaceType_e
|
||||
{
|
||||
kHumanRace = 1,
|
||||
kZombieRace = 2
|
||||
};
|
||||
|
||||
enum AIMode_e
|
||||
{
|
||||
kChiJiAiMode = 0,
|
||||
kHumanAiMode = 1,
|
||||
kZombieAiMode = 2
|
||||
};
|
||||
|
||||
enum ColliderTag_e
|
||||
@ -434,12 +416,6 @@ enum HpOpt_e
|
||||
const char* const PROJ_NAME_FMT = "game%d_gameserver";
|
||||
const char* const PROJ_ROOT_FMT = "/data/logs/%s";
|
||||
|
||||
const float TEN_W = 10000 * 10;
|
||||
|
||||
const int SYS_RESET_TIME = 2*60; //每日两点重置
|
||||
|
||||
const int DEF_WEAPON_ID = 12103;
|
||||
|
||||
const int SERVER_FRAME_RATE = 20;
|
||||
const int SYNC_FRAME_RATE = 10;
|
||||
const float FRAME_RATE_MS = 1000.0f / SERVER_FRAME_RATE;
|
||||
@ -473,17 +449,12 @@ const int FIGHTING_MODE_BULLET_NUM = 10000 * 10000;
|
||||
const int MAX_NODE_ID = 8;
|
||||
const int MAX_INSTANCE_ID = 500;
|
||||
|
||||
const int WALK_ZONE_WIDTH = 100;
|
||||
|
||||
const int MAX_TEAM_NUM = 4;
|
||||
|
||||
const int MAX_SYS_HTTP_NUM = 2;
|
||||
const int MAX_USER_HTTP_NUM = 8;
|
||||
const int MAX_ALL_HTTP_NUM = MAX_SYS_HTTP_NUM + MAX_USER_HTTP_NUM;
|
||||
|
||||
const int DEFAULT_BORN_POINT_X = 3000;
|
||||
const int DEFAULT_BORN_POINT_Y = 3000;
|
||||
|
||||
const int ADPLAY_BUFFID = 1006;
|
||||
|
||||
const int FIXED_OBJECT_MAXID = 20140;
|
||||
@ -494,15 +465,6 @@ const int VIEW_RANGE = 512;
|
||||
|
||||
const int MAX_AI_LEVEL = 8;
|
||||
|
||||
const int HUMAN_RACE_META_START_ID = 5001;
|
||||
const int ZOMBIE_RACE_META_START_ID = 6001;
|
||||
|
||||
const int TERMINATOR_BUFF_ID = 1033;
|
||||
|
||||
#if 0
|
||||
const int TURN_OVER_SKILL_ID = 41001;
|
||||
#endif
|
||||
|
||||
const int HUNLUAN_BUFFID = 6001;
|
||||
|
||||
const long long SPEC_MAP_OBJECT_FLAGS = A8_DEFINE_RANGE_BIT(long long, kColliderSpecTag_Begin, kColliderSpecTag_End);
|
||||
|
@ -1478,9 +1478,6 @@ bool Creature::IsProperTarget(Creature* target, bool no_teammate)
|
||||
if (!no_teammate && team_id == target->team_id) {
|
||||
return false;
|
||||
}
|
||||
if (room->GetRoomMode() == kZombieMode && GetRace() == target->GetRace()) {
|
||||
return false;
|
||||
}
|
||||
if (target->IsInvincible()) {
|
||||
return false;
|
||||
}
|
||||
@ -1498,11 +1495,7 @@ bool Creature::IsProperTarget(Creature* target, bool no_teammate)
|
||||
|
||||
bool Creature::IsEnemy(Creature* target)
|
||||
{
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
return target->GetRace() != GetRace();
|
||||
} else {
|
||||
return team_id != target->team_id;
|
||||
}
|
||||
return team_id != target->team_id;
|
||||
}
|
||||
|
||||
void Creature::TraverseProperTargets(std::function<void (Creature*, bool&)> func)
|
||||
|
@ -352,21 +352,6 @@ void FrameEvent::AddItemChg(CreatureWeakPtr& sender, int item_id, int item_num)
|
||||
}
|
||||
}
|
||||
|
||||
void FrameEvent::AddZombieIdChg(CreatureWeakPtr& sender)
|
||||
{
|
||||
chged_zombieids_.push_back(sender);
|
||||
int idx = chged_zombieids_.size() - 1;
|
||||
{
|
||||
sender.Get()->TraverseAllLayerHumanList
|
||||
(
|
||||
[idx] (Human* hum, bool& stop)
|
||||
{
|
||||
hum->chged_zombieid_.push_back(idx);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void FrameEvent::AddDead(CreatureWeakPtr& sender, int revive_time)
|
||||
{
|
||||
if (sender.Get()) {
|
||||
@ -500,9 +485,6 @@ void FrameEvent::Clear()
|
||||
if (!chged_weapon_ammo_.empty()) {
|
||||
chged_weapon_ammo_.clear();
|
||||
}
|
||||
if (!chged_zombieids_.empty()) {
|
||||
chged_zombieids_.clear();
|
||||
}
|
||||
if (!dead_alive_objs_.empty()) {
|
||||
dead_alive_objs_.clear();
|
||||
}
|
||||
|
@ -42,7 +42,6 @@ public:
|
||||
void AddSkillCdChg(CreatureWeakPtr sender, int skill_id, int left_time);
|
||||
void AddSkillCurrTimesChg(CreatureWeakPtr sender, int skill_id, int curr_times);
|
||||
void AddItemChg(CreatureWeakPtr& sender, int item_id, int item_num);
|
||||
void AddZombieIdChg(CreatureWeakPtr& sender);
|
||||
void AddDead(CreatureWeakPtr& sender, int revive_time);
|
||||
void AddRevive(CreatureWeakPtr& sender);
|
||||
void AddCarChg(CreatureWeakPtr& sender);
|
||||
@ -65,7 +64,6 @@ private:
|
||||
std::vector<CreatureWeakPtr> chged_hps_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, int, int>> chged_skillcds_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, int, int>> chged_skill_curr_times_;
|
||||
std::vector<CreatureWeakPtr> chged_zombieids_;
|
||||
std::vector<CreatureWeakPtr> chged_cars_;
|
||||
std::vector<std::tuple<int, int, int>> dead_alive_objs_;
|
||||
std::vector<std::tuple<CreatureWeakPtr, ::cs::MFPropertyChg>> chged_props_;
|
||||
|
@ -366,17 +366,6 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
}
|
||||
}
|
||||
}
|
||||
for (size_t idx : hum->chged_zombieid_) {
|
||||
if (idx < room->frame_event.chged_zombieids_.size()) {
|
||||
auto& chg_hum = room->frame_event.chged_zombieids_[idx];
|
||||
{
|
||||
auto p = msg->add_chged_property_list();
|
||||
p->set_obj_id(chg_hum.Get()->GetUniId());
|
||||
p->set_property_type(kPropZombieId);
|
||||
p->set_value(chg_hum.Get()->AsHuman()->meta->i->id());
|
||||
}
|
||||
}
|
||||
}
|
||||
for (size_t idx : hum->dead_alive_objs_) {
|
||||
if (idx < room->frame_event.dead_alive_objs_.size()) {
|
||||
auto p = msg->add_dead_alive_objs();
|
||||
@ -411,9 +400,6 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (room->GetRoomMode() == kZombieMode && room->BattleStarted()) {
|
||||
room->FillObjectPositions((Human*)hum, *msg);
|
||||
}
|
||||
if (room->frame_event.airdrops_.size() > 0) {
|
||||
*msg->mutable_airdrop() = room->frame_event.airdrops_.Get(0);
|
||||
}
|
||||
@ -428,16 +414,6 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(Human* hum)
|
||||
room->GetFrameNo() - hum->join_frameno <= 2) {
|
||||
msg->set_alive_count(room->AliveCount());
|
||||
}
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
if (room->BattleStarted()) {
|
||||
int game_left_time = MetaMgr::Instance()->zbmode_game_duration * 1000 -
|
||||
(room->GetFrameNo() - room->GetBattleStartFrameNo()) * FRAME_RATE_MS;
|
||||
game_left_time = std::max(0, game_left_time);
|
||||
msg->set_game_left_time(game_left_time);
|
||||
} else {
|
||||
msg->set_game_left_time(MetaMgr::Instance()->zbmode_game_duration * 1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
@ -93,28 +93,6 @@ void GameLog::GameEnd(Player* hum)
|
||||
prop = nullptr;
|
||||
}
|
||||
|
||||
void GameLog::ZbModeEnd(Room* room)
|
||||
{
|
||||
int game_id = GAME_ID;
|
||||
|
||||
a8::MutableXObject* prop = a8::MutableXObject::NewObject();
|
||||
prop->SetVal("game_uniid", a8::XValue(room->GetRoomUuid()).GetString());
|
||||
prop->SetVal("room_type", a8::XValue(room->GetRoomType()).GetString());
|
||||
prop->SetVal("room_mode", a8::XValue((int)room->GetRoomMode()));
|
||||
prop->SetVal("battle_started", a8::XValue(room->BattleStarted() ? 1 : 0));
|
||||
|
||||
if (room->BattleStarted()) {
|
||||
prop->SetVal("human_alive_count", room->GetAliveCountByRace(kHumanRace));
|
||||
prop->SetVal("zombie_alive_count", room->GetAliveCountByRace(kZombieRace));
|
||||
prop->SetVal("game_timeout", room->IsGameTimeOut() ? 1 : 0);
|
||||
}
|
||||
|
||||
f8::TGLog::Instance()->AddTrackLog(game_id, "gameover", 0, "gameover", prop);
|
||||
|
||||
delete prop;
|
||||
prop = nullptr;
|
||||
}
|
||||
|
||||
void GameLog::ForceOver(Room* room)
|
||||
{
|
||||
int game_id = GAME_ID;
|
||||
|
@ -10,7 +10,6 @@ class GameLog : public a8::Singleton<GameLog>
|
||||
public:
|
||||
void GameStart(Player* hum);
|
||||
void GameEnd(Player* hum);
|
||||
void ZbModeEnd(Room* room);
|
||||
void ForceOver(Room* room);
|
||||
|
||||
private:
|
||||
|
@ -3,33 +3,7 @@
|
||||
|
||||
int g_hint_flags = 0;
|
||||
|
||||
bool Global::IsVirtualItem(int itemid)
|
||||
{
|
||||
return (itemid == VID_Item_Exp ||
|
||||
itemid == VID_Item_Gold ||
|
||||
itemid == VID_Soul_Stone ||
|
||||
itemid == VID_Pickaxe);
|
||||
}
|
||||
|
||||
time_t Global::BetweenDays(time_t time1, time_t time2)
|
||||
{
|
||||
return (time1 + g_time_zone*3600)/3600/24 - (time2 + g_time_zone*3600)/3600/24;
|
||||
}
|
||||
|
||||
time_t Global::GetDaySeconds(time_t time, int incdays)
|
||||
{
|
||||
return time_t((time + g_time_zone * 3600)/3600/24 + incdays) * 3600 * 24 - 3600 * g_time_zone;
|
||||
}
|
||||
|
||||
bool Global::IsTimeToReset(int time)
|
||||
{
|
||||
return BetweenDays(g_nowtime - 60 * SYS_RESET_TIME, time - 60 * SYS_RESET_TIME) > 0;
|
||||
}
|
||||
|
||||
|
||||
int Global::g_nowtime = time(nullptr);
|
||||
int Global::g_time_zone = 8;
|
||||
bool Global::g_shutdown = false;
|
||||
ColliderComponent* Global::last_collider = nullptr;
|
||||
|
||||
bool IsValidSlotId(int slot_id)
|
||||
|
@ -10,14 +10,7 @@ class Global : public a8::Singleton<Global>
|
||||
friend class a8::Singleton<Global>;
|
||||
public:
|
||||
|
||||
static bool IsVirtualItem(int itemid);
|
||||
static bool IsTimeToReset(int time);
|
||||
static time_t BetweenDays(time_t time1, time_t time2);
|
||||
static time_t GetDaySeconds(time_t time, int incdays = 0);
|
||||
|
||||
static int g_nowtime;
|
||||
static int g_time_zone; // 默认东八区
|
||||
static bool g_shutdown;
|
||||
static ColliderComponent* last_collider;
|
||||
};
|
||||
|
||||
|
@ -158,8 +158,6 @@ void Human::FillMFObjectLess(Room* room, Human* hum, cs::MFPlayerFull* full_data
|
||||
p->set_dead(dead);
|
||||
p->set_downed(downed);
|
||||
p->set_disconnected(disconnected);
|
||||
p->set_anim_type(anim_type);
|
||||
p->set_anim_seq(anim_seq);
|
||||
for (auto itr : skins) {
|
||||
auto skin = p->add_skin();
|
||||
itr.ToPB(skin);
|
||||
@ -193,8 +191,6 @@ void Human::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data
|
||||
p->set_dead(dead);
|
||||
p->set_downed(downed);
|
||||
p->set_disconnected(disconnected);
|
||||
p->set_anim_type(anim_type);
|
||||
p->set_anim_seq(anim_seq);
|
||||
p->set_speed(GetSpeed() * SERVER_FRAME_RATE);
|
||||
for (auto itr : skins) {
|
||||
auto skin = p->add_skin();
|
||||
@ -775,33 +771,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||
stats.killer_name = killer_name;
|
||||
stats.weapon_id = weapon_id;
|
||||
GetTrigger()->Die();
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
dead = true;
|
||||
downed = false;
|
||||
real_dead = true;
|
||||
dead_frameno = room->GetFrameNo();
|
||||
DoGetDown();
|
||||
if (HasBuffEffect(kBET_Camouflage)) {
|
||||
RemoveBuffByEffectId(kBET_Camouflage);
|
||||
}
|
||||
ClearLordMode();
|
||||
ClearBuffList();
|
||||
room->frame_event.AddDead(GetWeakPtrRef(),
|
||||
meta->i->revive_time() * 1000);
|
||||
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||
room->xtimer.AddDeadLineTimerAndAttach
|
||||
(meta->i->revive_time() * SERVER_FRAME_RATE,
|
||||
a8::XParams()
|
||||
.SetSender(this),
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Human* hum = (Human*)param.sender.GetUserData();
|
||||
hum->Revive();
|
||||
},
|
||||
&xtimer_attacher.timer_list_
|
||||
);
|
||||
room->OnHumanDie(this);
|
||||
} else {
|
||||
{
|
||||
dead = true;
|
||||
downed = false;
|
||||
SetHP(0.0f);
|
||||
@ -1002,9 +972,6 @@ void Human::RemoveOutObjects(Entity* entity)
|
||||
|
||||
bool Human::HasLiveTeammate()
|
||||
{
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
return true;
|
||||
}
|
||||
bool has = false;
|
||||
if (GetTeam()) {
|
||||
GetTeam()->TraverseMembers
|
||||
@ -1023,30 +990,6 @@ bool Human::HasLiveTeammate()
|
||||
|
||||
bool Human::HasNoDownedTeammate()
|
||||
{
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
if (GetRace() == kHumanRace) {
|
||||
bool has_now_downed_teammate = false;
|
||||
Human* myself = this;
|
||||
room->TraverseHumanList
|
||||
(
|
||||
a8::XParams(),
|
||||
[myself, &has_now_downed_teammate] (Human* hum, const a8::XParams& param)
|
||||
{
|
||||
if (myself != hum &&
|
||||
!hum->dead &&
|
||||
!hum->downed &&
|
||||
hum->GetRace() == kHumanRace) {
|
||||
has_now_downed_teammate = true;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
);
|
||||
return has_now_downed_teammate;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
bool has = false;
|
||||
if (GetTeam()) {
|
||||
GetTeam()->TraverseMembers
|
||||
@ -1664,115 +1607,6 @@ void Human::_UpdateMove(int speed)
|
||||
}
|
||||
}
|
||||
|
||||
void Human::ChangeToRace(RaceType_e race, int level)
|
||||
{
|
||||
#if 1
|
||||
abort();
|
||||
#endif
|
||||
if (race != kHumanRace &&
|
||||
race != kZombieRace) {
|
||||
abort();
|
||||
}
|
||||
if (race_ != race && IsAndroid()) {
|
||||
Android* android = (Android*)this;
|
||||
android->ai->Reset();
|
||||
#if 0
|
||||
if (race == kHumanRace) {
|
||||
android->ai->SetAiMode(kHumanAiMode);
|
||||
} else if (race == kZombieRace) {
|
||||
android->ai->SetAiMode(kZombieAiMode);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
race_ = race;
|
||||
level_ = level;
|
||||
if (race_ == kHumanRace) {
|
||||
meta = MetaMgr::Instance()->GetPlayer(HUMAN_RACE_META_START_ID + level_ - 1);
|
||||
if (!meta) {
|
||||
abort();
|
||||
}
|
||||
exp_ = meta->i->exp();
|
||||
OnMetaChange();
|
||||
} else if (race_ == kZombieRace) {
|
||||
DoGetDown();
|
||||
meta = MetaMgr::Instance()->GetPlayer(ZOMBIE_RACE_META_START_ID + level_ - 1);
|
||||
if (!meta) {
|
||||
abort();
|
||||
}
|
||||
exp_ = meta->i->exp();
|
||||
OnMetaChange();
|
||||
} else {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
void Human::ChangeToRaceAndNotify(RaceType_e race, int level)
|
||||
{
|
||||
ChangeToRace(race, level);
|
||||
room->frame_event.AddZombieIdChg(GetWeakPtrRef());
|
||||
}
|
||||
|
||||
void Human::WinExp(Human* sender, int exp)
|
||||
{
|
||||
if (race_ != kHumanRace &&
|
||||
race_ != kZombieRace) {
|
||||
abort();
|
||||
}
|
||||
if (room->debug_trace) {
|
||||
a8::UdpLog::Instance()->Debug
|
||||
(
|
||||
"WinExp before sender_id:%d uniid:%d race:%d level:%d exp:%d add_exp:%d ",
|
||||
{
|
||||
sender->GetUniId(),
|
||||
GetUniId(),
|
||||
GetRace(),
|
||||
GetLevel(),
|
||||
GetExp(),
|
||||
exp
|
||||
}
|
||||
);
|
||||
}
|
||||
exp_ += exp;
|
||||
MetaData::Player* old_meta = meta;
|
||||
int start_meta_id = race_ == kHumanRace ? HUMAN_RACE_META_START_ID : ZOMBIE_RACE_META_START_ID;
|
||||
ClearSkill();
|
||||
do {
|
||||
MetaData::Player* tmp_meta = MetaMgr::Instance()->GetPlayer(start_meta_id + level_);
|
||||
if (!tmp_meta) {
|
||||
break;
|
||||
}
|
||||
if (exp_ >= tmp_meta->i->exp()) {
|
||||
meta = tmp_meta;
|
||||
AddSkill(meta->i->active_skill());
|
||||
ResetSkill();
|
||||
++level_;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
} while (true);
|
||||
if (old_meta != meta) {
|
||||
room->frame_event.AddZombieIdChg(GetWeakPtrRef());
|
||||
OnMetaChange();
|
||||
if (GetRace() == kZombieRace && meta->i->level() == 3) {
|
||||
room->OnZombieAppear(this);
|
||||
}
|
||||
}
|
||||
if (room->debug_trace) {
|
||||
a8::UdpLog::Instance()->Debug
|
||||
(
|
||||
"WinExp after sender_id:%d uniid:%d race:%d level:%d exp:%d add_exp:%d ",
|
||||
{
|
||||
sender->GetUniId(),
|
||||
GetUniId(),
|
||||
GetRace(),
|
||||
GetLevel(),
|
||||
GetExp(),
|
||||
exp
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void Human::_InternalUpdateMove(float speed)
|
||||
{
|
||||
float nx = GetMoveDir().x * speed;
|
||||
@ -1927,9 +1761,6 @@ void Human::ClearFrameData()
|
||||
if (!chged_race_.empty()) {
|
||||
chged_race_.clear();
|
||||
}
|
||||
if (!chged_zombieid_.empty()) {
|
||||
chged_zombieid_.clear();
|
||||
}
|
||||
if (!dead_alive_objs_.empty()) {
|
||||
dead_alive_objs_.clear();
|
||||
}
|
||||
@ -2121,50 +1952,6 @@ void Human::GenBattleReportData(a8::MutableXObject* params)
|
||||
params->SetVal("rank_score", stats.rank_score);
|
||||
}
|
||||
|
||||
void Human::GenZbModeBattleReportData(a8::MutableXObject* params)
|
||||
{
|
||||
params->SetVal("room_mode", room->GetRoomMode());
|
||||
int rank = 0;
|
||||
{
|
||||
std::vector<Human*> human_list;
|
||||
room->TraverseHumanList(a8::XParams(),
|
||||
[&human_list] (Human* hum, a8::XParams& param) -> bool
|
||||
{
|
||||
human_list.push_back(hum);
|
||||
return true;
|
||||
});
|
||||
std::sort(human_list.begin(), human_list.end(),
|
||||
[] (Human* a, Human* b )
|
||||
{
|
||||
if (a->stats.kills > b->stats.kills) {
|
||||
return true;
|
||||
}
|
||||
if (a->stats.kills < b->stats.kills) {
|
||||
return false;
|
||||
}
|
||||
if (a->stats.last_kill_frameno < b->stats.last_kill_frameno) {
|
||||
return true;
|
||||
}
|
||||
return a->GetUniId() < b->GetUniId();
|
||||
});
|
||||
rank = human_list.size();
|
||||
for (size_t i = 0; i < human_list.size(); ++i) {
|
||||
if (human_list[i] == this) {
|
||||
rank = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
stats.rank = rank;
|
||||
params->SetVal("account_id", account_id);
|
||||
params->SetVal("session_id", session_id);
|
||||
params->SetVal("map_id", room->GetMapMeta()->i->map_id());
|
||||
params->SetVal("game_time", time(nullptr));
|
||||
params->SetVal("rank", rank);
|
||||
params->SetVal("kills", stats.kills);
|
||||
params->SetVal("room_uuid", room->GetRoomUuid());
|
||||
}
|
||||
|
||||
void Human::DeadDrop()
|
||||
{
|
||||
auto SkinCanDrop =
|
||||
@ -2304,11 +2091,7 @@ void Human::DeadDrop()
|
||||
void Human::SendBattleReport()
|
||||
{
|
||||
a8::MutableXObject* params = a8::MutableXObject::NewObject();
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
GenZbModeBattleReportData(params);
|
||||
} else {
|
||||
GenBattleReportData(params);
|
||||
}
|
||||
GenBattleReportData(params);
|
||||
auto on_ok = [] (a8::XParams& param, a8::XObject& data)
|
||||
{
|
||||
};
|
||||
@ -2614,27 +2397,7 @@ void Human::DropItems(Obstacle* obstacle)
|
||||
|
||||
void Human::Revive()
|
||||
{
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
if (GetRace() == kHumanRace) {
|
||||
ChangeToRaceAndNotify(kZombieRace, 1);
|
||||
}
|
||||
dead = false;
|
||||
downed = false;
|
||||
real_dead = false;
|
||||
SetHP(GetMaxHP());
|
||||
ClearBuffList();
|
||||
{
|
||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(kREVIVE_BUFF_ID);
|
||||
if (buff_meta) {
|
||||
AddBuff(this, buff_meta, 1);
|
||||
}
|
||||
}
|
||||
room->frame_event.AddRevive(GetWeakPtrRef());
|
||||
room->OnHumanRevive(this);
|
||||
|
||||
ResetSkill();
|
||||
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||
} else {
|
||||
{
|
||||
auto callback =
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
@ -2943,87 +2706,6 @@ ObjectSyncFlags* Human::GetObjectSyncFlags(int obj_uniid)
|
||||
}
|
||||
}
|
||||
|
||||
void Human::OnMetaChange()
|
||||
{
|
||||
if (GetRace() == kZombieRace) {
|
||||
MetaData::Equip* weapon_meta = MetaMgr::Instance()->GetEquip(meta->i->normal_skill());
|
||||
if (weapon_meta) {
|
||||
default_weapon.weapon_idx = 0;
|
||||
default_weapon.weapon_id = weapon_meta->i->id();
|
||||
default_weapon.weapon_lv = 1;
|
||||
default_weapon.ammo = 1;
|
||||
default_weapon.meta = weapon_meta;
|
||||
default_weapon.Recalc();
|
||||
weapons[0] = default_weapon;
|
||||
SetCurrWeapon(&weapons[0]);
|
||||
}
|
||||
}
|
||||
float hp = meta->i->health();
|
||||
for (auto& weapon : spec_weapons) {
|
||||
if (weapon.meta) {
|
||||
hp += weapon.meta ? weapon.GetAttrValue(kHAT_MaxHp) : 0;
|
||||
}
|
||||
}
|
||||
SetHP(hp);
|
||||
room->frame_event.AddHpChg(GetWeakPtrRef());
|
||||
RecalcBaseAttr();
|
||||
ClearSkill();
|
||||
AddSkill(meta->i->active_skill());
|
||||
ResetSkill();
|
||||
ClearPassiveSkill();
|
||||
AddPassiveSkill(meta->i->passive_skill());
|
||||
}
|
||||
|
||||
void Human::OnChgToTerminator()
|
||||
{
|
||||
Buff* buff = GetBuffByEffectId(kBET_Terminator);
|
||||
if (buff) {
|
||||
std::vector<std::string> strings;
|
||||
a8::Split(buff->meta->i->buff_param4(), strings, ':');
|
||||
if (strings.size() >= 3) {
|
||||
for (size_t i = 0; i < strings.size(); ++i) {
|
||||
int weapon_id = a8::XValue(strings[i]);
|
||||
MetaData::Equip* weapon_meta = MetaMgr::Instance()->GetEquip(weapon_id);
|
||||
if (weapon_meta) {
|
||||
Weapon* weapon = nullptr;
|
||||
switch (i) {
|
||||
case 0:
|
||||
{
|
||||
weapon = &weapons[0];
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
weapon = &weapons[GUN_SLOT1];
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
weapon = &weapons[GUN_SLOT2];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
}
|
||||
break;
|
||||
}
|
||||
weapon->weapon_idx = i;
|
||||
weapon->weapon_id = weapon_meta->i->id();
|
||||
weapon->weapon_lv = 1;
|
||||
weapon->meta = weapon_meta;
|
||||
weapon->Recalc();
|
||||
weapon->ammo = weapon->GetClipVolume();
|
||||
if (i == 0) {
|
||||
default_weapon = *weapon;
|
||||
}
|
||||
}
|
||||
}
|
||||
}//end if
|
||||
need_sync_active_player = true;
|
||||
SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||
}
|
||||
}
|
||||
|
||||
void Human::ProcReloadAction()
|
||||
{
|
||||
Weapon* p_weapon = GetCurrWeapon();
|
||||
@ -3589,10 +3271,6 @@ void Human::OnBulletHit(Bullet* bullet)
|
||||
if (IsInvincible()) {
|
||||
return;
|
||||
}
|
||||
if (bullet->sender.Get()->room->GetRoomMode() == kZombieMode &&
|
||||
bullet->sender.Get()->GetRace() == GetRace()) {
|
||||
return;
|
||||
}
|
||||
if (HasBuffEffect(kBET_Jump) ||
|
||||
HasBuffEffect(kBET_Fly)) {
|
||||
return;
|
||||
|
@ -103,8 +103,6 @@ class Human : public Creature
|
||||
std::string user_data;
|
||||
long long last_cmmove_frameno = 0;
|
||||
bool disconnected = false;
|
||||
int anim_type = 0;
|
||||
int anim_seq = 0;
|
||||
Skin skin_jlf;
|
||||
int backpack = 0;
|
||||
int helmet = 0;
|
||||
@ -264,9 +262,6 @@ class Human : public Creature
|
||||
bool HasSpecMove();
|
||||
void _UpdateSpecMove();
|
||||
virtual void _UpdateMove(int speed) override;
|
||||
void ChangeToRace(RaceType_e race, int level);
|
||||
void ChangeToRaceAndNotify(RaceType_e race, int level);
|
||||
void WinExp(Human* sender, int exp);
|
||||
Car* GetCar() { return car_; }
|
||||
void SetCar(Car* car) { car_ = car; }
|
||||
int GetSeat() { return seat_; }
|
||||
@ -290,7 +285,6 @@ protected:
|
||||
private:
|
||||
void ClearFrameData();
|
||||
void GenBattleReportData(a8::MutableXObject* params);
|
||||
void GenZbModeBattleReportData(a8::MutableXObject* params);
|
||||
void FillSMGameOver(cs::SMGameOver& msg);
|
||||
void SendBattleReport();
|
||||
void Revive();
|
||||
@ -306,8 +300,6 @@ private:
|
||||
std::set<GridCell*>& inc_grids,
|
||||
std::set<GridCell*>& dec_grids);
|
||||
void RemoveFromScene();
|
||||
void OnMetaChange();
|
||||
void OnChgToTerminator();
|
||||
void ProcReloadAction();
|
||||
void ProcUseItemAction();
|
||||
void ProcReliveAction();
|
||||
@ -356,7 +348,6 @@ protected:
|
||||
std::vector<int> chged_level_;
|
||||
std::vector<int> chged_exp_;
|
||||
std::vector<int> chged_race_;
|
||||
std::vector<int> chged_zombieid_;
|
||||
std::vector<int> dead_alive_objs_;
|
||||
std::vector<int> chged_cars_;
|
||||
std::vector<int> chged_props_;
|
||||
|
@ -170,6 +170,12 @@ namespace MetaData
|
||||
return itr != car_num_limit.end() ? itr->second : 666;
|
||||
}
|
||||
|
||||
a8::Vec2 Map::GetCenter() const
|
||||
{
|
||||
a8::Vec2 center(i->map_width() / 2, i->map_height() / 2);
|
||||
return center;
|
||||
}
|
||||
|
||||
void MapThing::Init()
|
||||
{
|
||||
{
|
||||
|
@ -36,6 +36,7 @@ namespace MetaData
|
||||
void Init2();
|
||||
std::string RandTemplate();
|
||||
int GetCarLimit(int car_id);
|
||||
a8::Vec2 GetCenter() const;
|
||||
};
|
||||
|
||||
struct Attr
|
||||
|
@ -211,17 +211,8 @@ public:
|
||||
MetaMgr::Instance()->other_fill_interval = MetaMgr::Instance()->GetSysParamAsInt("other_fill_interval", 2000);
|
||||
MetaMgr::Instance()->map_cell_width = MetaMgr::Instance()->GetSysParamAsInt("map_cell_width", 64 * 8);
|
||||
MetaMgr::Instance()->bullet_planck_step_length = std::max(15, MetaMgr::Instance()->GetSysParamAsInt("bullet_planck_step_length", 15));
|
||||
METAMGR_READ(zbmode_gas_inactive_time, 25);
|
||||
METAMGR_READ(zbmode_game_duration, 300);
|
||||
METAMGR_READ(zbmode_player_num, 15);
|
||||
METAMGR_READ(zbmode_init_zombie_num, 2);
|
||||
if (MetaMgr::Instance()->zbmode_init_zombie_num >=
|
||||
MetaMgr::Instance()->zbmode_player_num) {
|
||||
abort();
|
||||
}
|
||||
{
|
||||
METAMGR_READ(prebattle_box_id_chiji, 0);
|
||||
METAMGR_READ(prebattle_box_id_zb, 0);
|
||||
}
|
||||
{
|
||||
METAMGR_READ(newbie_first_robot_ammo, 3);
|
||||
@ -380,12 +371,6 @@ public:
|
||||
METAMGR_READ(level1room_robot_autodie_distance, 500);
|
||||
METAMGR_READ_STR(level1room_born_point, "");
|
||||
|
||||
#if 0
|
||||
METAMGR_READ(refresh_robot_min_num, 5);
|
||||
METAMGR_READ(refresh_robot_max_num, 10);
|
||||
METAMGR_READ(refresh_robot_min_time, 5);
|
||||
METAMGR_READ(refresh_robot_max_time, 10);
|
||||
#endif
|
||||
}
|
||||
if (MetaMgr::Instance()->K < 0.01f) {
|
||||
abort();
|
||||
|
@ -65,10 +65,6 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
||||
int newbie_gas_inactive_time = 5;
|
||||
int midbrid_gas_inactive_time = 15;
|
||||
int common_gas_inactive_time = 15;
|
||||
int zbmode_gas_inactive_time = 15;
|
||||
int zbmode_game_duration = 60 * 2;
|
||||
int zbmode_player_num = 15;
|
||||
int zbmode_init_zombie_num = 2;
|
||||
float K = 100.0f;
|
||||
float kill_param = 0.0f;
|
||||
float rank_param = 0.0f;
|
||||
@ -178,7 +174,6 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
||||
MetaData::Player* terminator_meta = nullptr;
|
||||
|
||||
int prebattle_box_id_chiji = 0;
|
||||
int prebattle_box_id_zb = 0;
|
||||
|
||||
int prebattle_can_use_skill = 0;
|
||||
int watchable = 0;
|
||||
|
@ -510,10 +510,6 @@ void Player::ObstacleInteraction(Obstacle* entity)
|
||||
|
||||
void Player::LootInteraction(Loot* entity)
|
||||
{
|
||||
if (room->GetRoomMode() == kZombieMode &&
|
||||
GetRace() == kZombieRace) {
|
||||
return;
|
||||
}
|
||||
if (entity->pickuped ||
|
||||
entity->count <= 0) {
|
||||
return;
|
||||
@ -567,7 +563,7 @@ void Player::LootInteraction(Loot* entity)
|
||||
weapon->ammo = 0;
|
||||
weapon->meta = item_meta;
|
||||
weapon->Recalc();
|
||||
if (room->GetRoomMode() == kZombieMode && HasBuffEffect(kBET_Car)) {
|
||||
if (HasBuffEffect(kBET_Car)) {
|
||||
} else {
|
||||
AutoLoadingBullet();
|
||||
}
|
||||
@ -1663,11 +1659,7 @@ std::vector<std::tuple<int, int, int>>* Player::GetBox(int box_id)
|
||||
}
|
||||
}
|
||||
int drop_id = 0;
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
drop_id = MetaMgr::Instance()->prebattle_box_id_zb;
|
||||
} else {
|
||||
drop_id = MetaMgr::Instance()->prebattle_box_id_chiji;
|
||||
}
|
||||
drop_id = MetaMgr::Instance()->prebattle_box_id_chiji;
|
||||
MetaData::Drop* drop_meta = MetaMgr::Instance()->GetDrop(drop_id);
|
||||
if (drop_meta) {
|
||||
std::vector<std::tuple<int, int, int>> drop_items;
|
||||
|
@ -371,10 +371,6 @@ void Room::CreateAndroid(int robot_num)
|
||||
alive_count_chged_frameno_ = GetFrameNo();
|
||||
++PerfMonitor::Instance()->alive_count;
|
||||
refreshed_robot_set_.insert(robot_meta->i->id());
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
hum->ChangeToRace(kHumanRace, 1);
|
||||
}
|
||||
|
||||
if (!CanAddToScene(hum)) {
|
||||
a8::SetBitFlag(hum->status, CS_Disable);
|
||||
} else {
|
||||
@ -744,55 +740,7 @@ void Room::InternalRemoveObjectLater(Entity* entity, a8::XTimerAttacher& xtimer_
|
||||
|
||||
void Room::OnHumanDie(Human* hum)
|
||||
{
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
if (debug_trace) {
|
||||
a8::UdpLog::Instance()->Debug
|
||||
(
|
||||
"OnHumanDie uniid:%d name:%s race:%d level:%d exp:%d killer_id:%d ",
|
||||
{
|
||||
hum->GetUniId(),
|
||||
hum->name,
|
||||
hum->GetRace(),
|
||||
hum->GetLevel(),
|
||||
hum->GetExp(),
|
||||
hum->stats.killer_id
|
||||
}
|
||||
);
|
||||
}
|
||||
if (hum->GetRace() == kHumanRace) {
|
||||
RemoveRescue(hum);
|
||||
hum->DeadDrop();
|
||||
std::vector<Human*> alive_humans;
|
||||
alive_humans.reserve(GetRoomMaxPlayerNum());
|
||||
for (auto& pair : human_hash_) {
|
||||
if (pair.second != hum) {
|
||||
pair.second->WinExp(hum, hum->meta->i->dead_exp());
|
||||
}
|
||||
if (!pair.second->dead && pair.second->GetRace() == kHumanRace) {
|
||||
alive_humans.push_back(pair.second);
|
||||
}
|
||||
}
|
||||
if (alive_humans.size() == 1) {
|
||||
Human* terminator = alive_humans[0];
|
||||
if (!terminator->HasBuffEffect(kBET_Terminator)) {
|
||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(TERMINATOR_BUFF_ID);
|
||||
if (buff_meta) {
|
||||
terminator->AddBuff(terminator, buff_meta, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
Human* killer = GetPlayerByUniId(hum->stats.killer_id);
|
||||
if (killer && killer != hum) {
|
||||
killer->WinExp(hum, hum->meta->i->killer_exp());
|
||||
}
|
||||
}
|
||||
} else if (hum->GetRace() == kZombieRace) {
|
||||
} else {
|
||||
abort();
|
||||
}
|
||||
NotifyUiUpdate();
|
||||
} else {
|
||||
{
|
||||
--alive_count_;
|
||||
alive_count_chged_frameno_ = GetFrameNo();
|
||||
--PerfMonitor::Instance()->alive_count;
|
||||
@ -975,7 +923,7 @@ bool Room::CanJoin(const std::string& accountid,
|
||||
self_room_mode = kChiJiMode;
|
||||
}
|
||||
if (self_room_mode > kRoomModeEnd) {
|
||||
self_room_mode = kZombieMode;
|
||||
self_room_mode = kChiJiMode;
|
||||
}
|
||||
if (room_mode_ != self_room_mode) {
|
||||
return false;
|
||||
@ -1071,33 +1019,6 @@ void Room::FillSMUiUpdate(cs::SMUiUpdate& msg)
|
||||
TypeConvert::ToPb(pair.second.pos, car->mutable_pos());
|
||||
}
|
||||
}
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
#if 1
|
||||
{
|
||||
zombie_alive_count_ = 0;
|
||||
human_alive_count_ = 0;
|
||||
for (auto& pair : human_hash_) {
|
||||
if (pair.second->GetRace() == kHumanRace) {
|
||||
++human_alive_count_;
|
||||
} else if (pair.second->GetRace() == kZombieRace) {
|
||||
++zombie_alive_count_;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
msg.set_zombie_num(zombie_alive_count_);
|
||||
msg.set_human_num(human_alive_count_);
|
||||
if (BattleStarted() && human_alive_count_ <= 2 && !sent_terminator_airdrop) {
|
||||
sent_terminator_airdrop = true;
|
||||
MetaData::AirDrop* airdrop_meta = MetaMgr::Instance()->GetAirDrop
|
||||
(map_meta_->i->terminator_airdrop());
|
||||
if (airdrop_meta) {
|
||||
AirDrop(airdrop_meta->i->appear_time(),
|
||||
airdrop_meta->i->drop_id(),
|
||||
airdrop_meta->i->id());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Team* Room::GetAliveTeam()
|
||||
@ -1204,21 +1125,6 @@ void Room::UpdateGas()
|
||||
break;
|
||||
}
|
||||
if (gas_data_.gas_mode != GasInactive && gas_data_.gas_mode != GasJump) {
|
||||
#if 1
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
int zombie_num = 0;
|
||||
for (auto& pair : human_hash_) {
|
||||
if (pair.second->GetRace() == kZombieRace) {
|
||||
++zombie_num;
|
||||
}
|
||||
}
|
||||
if (zombie_num >= GetRoomMaxPlayerNum() && !game_over_) {
|
||||
game_over_ = true;
|
||||
game_over_frameno_ = GetFrameNo();
|
||||
OnGameOver();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (gas_data_.gas_mode != GasInactive && GetRoomMode() == kChiJiMode) {
|
||||
if (!IsGameOver() && alive_count_ <= MAX_TEAM_NUM && GetAliveTeamNum() <= 1) {
|
||||
game_over_ = true;
|
||||
@ -1449,7 +1355,7 @@ bool Room::GenSmallCircle()
|
||||
|
||||
void Room::MatchTeam(Human* hum)
|
||||
{
|
||||
if (!hum->team_uuid.empty() && GetRoomMode() != kZombieMode) {
|
||||
if (!hum->team_uuid.empty()) {
|
||||
for (auto& pair : human_hash_) {
|
||||
if (pair.second != hum) {
|
||||
if (!hum->team_uuid.empty() && pair.second->team_uuid == hum->team_uuid) {
|
||||
@ -1471,9 +1377,6 @@ void Room::MatchTeam(Human* hum)
|
||||
|
||||
void Room::CombineTeam()
|
||||
{
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
return;
|
||||
}
|
||||
std::map<int, size_t> need_combine_teams;
|
||||
std::map<int, size_t> need_combine_teams_copy;
|
||||
|
||||
@ -1642,28 +1545,7 @@ void Room::CombineTeam()
|
||||
|
||||
void Room::InitAirDrop()
|
||||
{
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
for (int airdrop_id : map_meta_->airdrops) {
|
||||
MetaData::AirDrop* airdrop_meta = MetaMgr::Instance()->GetAirDrop(airdrop_id);
|
||||
if (airdrop_meta) {
|
||||
xtimer.AddDeadLineTimerAndAttach
|
||||
(SERVER_FRAME_RATE * airdrop_meta->i->time(),
|
||||
a8::XParams()
|
||||
.SetSender(this)
|
||||
.SetParam1(airdrop_meta->i->appear_time())
|
||||
.SetParam2(airdrop_meta->i->drop_id())
|
||||
.SetParam3(airdrop_meta->i->id()),
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Room* room = (Room*)param.sender.GetUserData();
|
||||
if (!room->IsGameOver()) {
|
||||
room->AirDrop(param.param1, param.param2, param.param3);
|
||||
}
|
||||
},
|
||||
&xtimer_attacher_.timer_list_);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
{
|
||||
std::list<MetaData::AirDrop>& air_drops = MetaMgr::Instance()->GetAirDrops();
|
||||
for (auto& air_drop : air_drops) {
|
||||
if (air_drop.i->id() >= 1 && air_drop.i->id() <= 6) {
|
||||
@ -1698,11 +1580,6 @@ void Room::AirDrop(int appear_time, int box_id, int airdrop_id)
|
||||
box_id = spec_box_id;
|
||||
}
|
||||
}
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
if (airdrop_id != map_meta_->i->terminator_airdrop()) {
|
||||
NotifyCountdown(TEXT("battle_server_box_countdown", "距离物资箱抵达还有%d秒"), appear_time / 1000);
|
||||
}
|
||||
}
|
||||
if (thing_meta && thing_meta->i->type() == 2) {
|
||||
a8::Vec2 dir = a8::Vec2::UP;
|
||||
dir.Rotate(a8::RandAngle());
|
||||
@ -1780,18 +1657,6 @@ void Room::AirDrop(int appear_time, int box_id, int airdrop_id)
|
||||
);
|
||||
obstacle->PushCollisionObjects();
|
||||
obstacle->is_treasure_box = true;
|
||||
if (room->GetRoomMode() == kZombieMode) {
|
||||
obstacle->is_terminator_airdrop_box =
|
||||
airdrop_id == room->map_meta_->i->terminator_airdrop();
|
||||
if (obstacle->is_terminator_airdrop_box) {
|
||||
room->NotifySysPiao
|
||||
(
|
||||
TEXT("battle_server_box_serviced", "终结者补给箱已送达"),
|
||||
a8::MkRgb(0, 255, 0),
|
||||
3
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
&xtimer_attacher_.timer_list_);
|
||||
@ -1894,9 +1759,6 @@ void Room::OnGameOver()
|
||||
pair.second->SendGameOver();
|
||||
}
|
||||
}
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
GameLog::Instance()->ZbModeEnd(this);
|
||||
}
|
||||
RoomMgr::Instance()->AddOverRoom(room_uuid_);
|
||||
}
|
||||
|
||||
@ -2333,34 +2195,6 @@ void Room::SecondRandPoint()
|
||||
last_human_hash_[tmp_humans[i]->GetUniId()] = tmp_humans[i];
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG
|
||||
#if 0
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
BornPoint* born_point = nullptr;
|
||||
int i = 0;
|
||||
for (auto& pair : human_hash_) {
|
||||
if (!born_point) {
|
||||
born_point = pair.second->born_point;
|
||||
} else {
|
||||
++i;
|
||||
pair.second->born_point = born_point;
|
||||
a8::Vec2 pos = pair.second->born_point->RandPoint();
|
||||
pos.x += i * 60;
|
||||
pair.second->SetPos(pos);
|
||||
pair.second->FindLocation();
|
||||
pair.second->RefreshView();
|
||||
grid_service->MoveHuman(pair.second);
|
||||
#if 0
|
||||
if (++i > 5) {
|
||||
i = 0;
|
||||
born_point = nullptr;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void Room::NotifyGameStart()
|
||||
@ -2423,9 +2257,6 @@ void Room::NotifyGameStart()
|
||||
if (room_type_ == RT_NewBrid || room_type_ == RT_MidBrid) {
|
||||
NewBieRoomStart();
|
||||
}
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
ZombieModeStart();
|
||||
}
|
||||
}
|
||||
|
||||
void Room::InitObstacleDatas()
|
||||
@ -2449,17 +2280,7 @@ long long Room::GetGasInactiveTime()
|
||||
return App::Instance()->debug_params.find(1) != App::Instance()->debug_params.end() ?
|
||||
App::Instance()->debug_params[1] : 10;
|
||||
#endif
|
||||
if (room_mode_ == kZombieMode) {
|
||||
#if DEBUG
|
||||
if (f8::IsTestEnv()) {
|
||||
return MetaMgr::Instance()->zbmode_gas_inactive_time;
|
||||
} else {
|
||||
return 5 + 5;
|
||||
}
|
||||
#else
|
||||
return MetaMgr::Instance()->zbmode_gas_inactive_time;
|
||||
#endif
|
||||
} else {
|
||||
{
|
||||
if (room_type_ == RT_NewBrid) {
|
||||
if (creator_game_times_ <= 0) {
|
||||
return MetaMgr::Instance()->newbie_gas_inactive_time;
|
||||
@ -3101,9 +2922,7 @@ void Room::UnInitDebugInfo()
|
||||
|
||||
a8::Vec2 Room::GetDefaultBornPoint()
|
||||
{
|
||||
a8::Vec2 pos = a8::Vec2(DEFAULT_BORN_POINT_X + rand() % 1400,
|
||||
DEFAULT_BORN_POINT_Y + rand() % 1500);
|
||||
return pos;
|
||||
return map_meta_->GetCenter();
|
||||
}
|
||||
|
||||
void Room::AddPlayerPostProc(Player* hum)
|
||||
@ -3142,13 +2961,6 @@ void Room::AddPlayerPostProc(Player* hum)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (GetRoomMode() == kZombieMode) {
|
||||
#if 0
|
||||
hum->ChangeToRace(kZombieRace, 2);
|
||||
#else
|
||||
hum->ChangeToRace(kHumanRace, 1);
|
||||
#endif
|
||||
}
|
||||
#ifdef DEBUG
|
||||
xtimer.AddRepeatTimerAndAttach
|
||||
(SERVER_FRAME_RATE * 5,
|
||||
@ -3335,56 +3147,6 @@ void Room::NewBieRoomStart()
|
||||
#endif
|
||||
}
|
||||
|
||||
void Room::ZombieModeStart()
|
||||
{
|
||||
if (GetRoomMode() != kZombieMode) {
|
||||
abort();
|
||||
}
|
||||
if (human_hash_.size() != GetRoomMaxPlayerNum()) {
|
||||
abort();
|
||||
}
|
||||
#ifdef DEBUG
|
||||
debug_trace = true;
|
||||
#endif
|
||||
std::vector<Human*> human_list;
|
||||
for (auto& pair : human_hash_) {
|
||||
human_list.push_back(pair.second);
|
||||
if (RoomMgr::Instance()->IsGM(pair.second->account_id)) {
|
||||
debug_trace = true;
|
||||
}
|
||||
}
|
||||
std::random_shuffle(human_list.begin(), human_list.end());
|
||||
for (size_t i = 0; i < 2; ++i) {
|
||||
Human* hum = human_list[i];
|
||||
hum->ChangeToRace(kZombieRace, 1);
|
||||
}
|
||||
battle_report_timer_ = xtimer.AddDeadLineTimerAndAttach
|
||||
(SERVER_FRAME_RATE * MetaMgr::Instance()->zbmode_game_duration,
|
||||
a8::XParams()
|
||||
.SetSender(this),
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Room* room = (Room*)param.sender.GetUserData();
|
||||
#if 1
|
||||
if (!room->game_over_) {
|
||||
room->game_timeout_ = true;
|
||||
room->game_over_ = true;
|
||||
room->game_over_frameno_ = room->GetFrameNo();
|
||||
room->OnGameOver();
|
||||
}
|
||||
#else
|
||||
room->BattleReport();
|
||||
#endif
|
||||
},
|
||||
&xtimer_attacher_.timer_list_,
|
||||
[] (const a8::XParams& param)
|
||||
{
|
||||
Room* room = (Room*)param.sender.GetUserData();
|
||||
room->battle_report_timer_ = nullptr;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Human* Room::GetOneCanEnableAndroid()
|
||||
{
|
||||
std::vector<Human*> humans;
|
||||
@ -3700,25 +3462,6 @@ void Room::NotifySysPiao(const std::string& msg, int color, int duration)
|
||||
}
|
||||
}
|
||||
|
||||
void Room::OnZombieAppear(Human* hum)
|
||||
{
|
||||
if (hum->GetRace() == kZombieRace && hum->meta->i->level() == 3 && !sent_zombie_boss_notify) {
|
||||
sent_zombie_boss_notify = true;
|
||||
TraversePlayerList
|
||||
(
|
||||
a8::XParams()
|
||||
.SetParam1(hum->meta->i->name()),
|
||||
[] (Player* hum, a8::XParams& param)
|
||||
{
|
||||
hum->SendSysPiaoMsg(a8::Format(TEXT("battle_server_appear", "%s出现了").c_str(),
|
||||
{param.param1.GetString()}),
|
||||
a8::MkRgb(255, 0, 0),
|
||||
3);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
int Room::GetAliveCountByRace(RaceType_e race)
|
||||
{
|
||||
int count = 0;
|
||||
@ -3744,19 +3487,7 @@ int Room::GetOnlinePlayerNum()
|
||||
|
||||
size_t Room::GetRoomMaxPlayerNum()
|
||||
{
|
||||
#if 1
|
||||
return map_meta_->i->player();
|
||||
#else
|
||||
if (room_mode_ == kZombieMode) {
|
||||
return MetaMgr::Instance()->zbmode_player_num;
|
||||
} else {
|
||||
if (IsMiniRoom()) {
|
||||
return MINI_ROOM_MAX_PLAYER_NUM;
|
||||
} else {
|
||||
return NORMAL_ROOM_MAX_PLAYER_NUM;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void Room::InitAndroidAI()
|
||||
|
@ -211,7 +211,6 @@ public:
|
||||
void RemoveRescue(Human* hum);
|
||||
void NotifyCountdown(const std::string& msg, int time);
|
||||
void NotifySysPiao(const std::string& msg, int color, int duration);
|
||||
void OnZombieAppear(Human* hum);
|
||||
int GetAliveCountByRace(RaceType_e race);
|
||||
int GetOnlinePlayerNum();
|
||||
RoomObstacle* CreateObstacle(int id, float x, float y);
|
||||
@ -292,7 +291,6 @@ private:
|
||||
void ForceSetBornPoint(Human* hum, BornPoint* born_point);
|
||||
BornPoint* ForceTakeBornPoint(Human* hum, BornPoint* reserve_born_point);
|
||||
void NewBieRoomStart();
|
||||
void ZombieModeStart();
|
||||
void CreateLevel0RoomSpecThings();
|
||||
bool CanAddToScene(Human* hum);
|
||||
void SyncFrameData();
|
||||
@ -327,7 +325,6 @@ private:
|
||||
const std::vector<MetaData::MapTplThing*>* loots_ = nullptr;
|
||||
const std::vector<Building*>* buildings_ = nullptr;
|
||||
const std::vector<MetaData::MapTplThing*>* level0room_spec_things_ = nullptr;
|
||||
bool sent_zombie_boss_notify = false;
|
||||
|
||||
bool waiting_start_ = false;
|
||||
GasData gas_data_;
|
||||
@ -339,7 +336,6 @@ private:
|
||||
int elapsed_time_ = 0;
|
||||
int alive_count_ = 0;
|
||||
long long alive_count_chged_frameno_ = 0;
|
||||
int zombie_alive_count_ = 0;
|
||||
int human_alive_count_ = 0;
|
||||
MetaData::AirLine* airline_ = nullptr;
|
||||
a8::XTimerAttacher xtimer_attacher_;
|
||||
|
@ -46,9 +46,6 @@ static RoomType_e GetHumanRoomType(const cs::CMJoin& msg, int& game_times)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (msg.room_mode() == kZombieMode) {
|
||||
return RT_OldBrid3;
|
||||
}
|
||||
|
||||
if (!msg.team_uuid().empty() && msg.team_members().size() > 1) {
|
||||
for (auto& team_member : msg.team_members()) {
|
||||
@ -139,8 +136,7 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg)
|
||||
#if 1
|
||||
{
|
||||
cs::CMJoin* mutable_msg = (cs::CMJoin*)&msg;
|
||||
if (mutable_msg->room_mode() != kChiJiMode &&
|
||||
mutable_msg->room_mode() != kZombieMode) {
|
||||
if (mutable_msg->room_mode() != kChiJiMode) {
|
||||
mutable_msg->set_room_mode(kChiJiMode);
|
||||
}
|
||||
}
|
||||
|
@ -73,8 +73,7 @@ void Team::CombineBornPoint()
|
||||
}
|
||||
} //end if
|
||||
if (!member->born_point) {
|
||||
member->SetX(DEFAULT_BORN_POINT_X + rand() % 100);
|
||||
member->SetY(DEFAULT_BORN_POINT_Y + rand() % 200);
|
||||
member->SetPos(room->GetDefaultBornPoint());
|
||||
} else {
|
||||
member->SetPos(member->born_point->RandPoint());
|
||||
}
|
||||
|
@ -205,8 +205,6 @@ message Player
|
||||
optional int32 exp = 17;
|
||||
optional int32 dead_exp = 18;
|
||||
optional int32 killer_exp = 19;
|
||||
optional int32 zbmode_weapon_id = 20;
|
||||
optional int32 zbmode_weapon_lv = 21;
|
||||
optional int32 revive_time = 22;
|
||||
optional string name = 23;
|
||||
optional int32 normal_skill = 24;
|
||||
@ -230,9 +228,6 @@ message Robot
|
||||
optional int32 weapon_id = 4;
|
||||
optional int32 weapon_lv = 5;
|
||||
|
||||
optional int32 zbmode_weapon_id = 6;
|
||||
optional int32 zbmode_weapon_lv = 7;
|
||||
|
||||
optional int32 sex = 8;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user