This commit is contained in:
aozhiwei 2020-12-01 17:40:57 +08:00
commit 62adb69ef8
8 changed files with 112 additions and 47 deletions

View File

@ -738,9 +738,15 @@ void Human::UpdatePoisoning()
bool need_notify = poisoning_time > 1000;
while (poisoning_time > 1000) {
if (room->GetGasData().is_last_gas) {
DecHP(room->GetGasData().new_area_meta->i->hurt(), VP_SafeArea, "毒圈", VW_SafeArea);
DecHP(room->GetGasData().new_area_meta->i->hurt(),
VP_SafeArea,
MetaMgr::Instance()->GetText("battle_server_killer_gas", "毒圈"),
VW_SafeArea);
} else {
DecHP(room->GetGasData().old_area_meta->i->hurt(), VP_SafeArea, "毒圈", VW_SafeArea);
DecHP(room->GetGasData().old_area_meta->i->hurt(),
VP_SafeArea,
MetaMgr::Instance()->GetText("battle_server_killer_gas", "毒圈"),
VW_SafeArea);
}
if (dead) {
poisoning_time = 0;
@ -976,10 +982,11 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
Entity* hum = room->GetEntityByUniId(killer_id);
if (hum && hum->IsEntityType(ET_Player)) {
if (killer_id == GetEntityUniId()) {
std::string msg = a8::Format("%s 自杀",
{
killer_name,
});
std::string msg = a8::Format
(MetaMgr::Instance()->GetText("battle_server_dead_specate", "%s 自杀").c_str(),
{
killer_name,
});
SendRollMsg(msg);
} else {
((Human*)hum)->stats.kills++;
@ -987,22 +994,25 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
((Human*)hum)->kill_humans.insert(this);
((Human*)hum)->SyncAroundPlayers(__FILE__, __LINE__, __func__);
if (weapon_id == VW_Tank) {
std::string msg = a8::Format("%s 使用 %s 干掉了 %s",
{
killer_name,
"载具",
name
});
std::string msg = a8::Format
(MetaMgr::Instance()->GetText("battle_server_dead_car",
"%s 使用 载具 干掉了 %s").c_str(),
{
killer_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
});
std::string msg = a8::Format
(MetaMgr::Instance()->GetText("battle_server_dead_weapon",
"%s 使用 %s 干掉了 %s").c_str(),
{
killer_name,
equip_meta->i->name(),
name
});
SendRollMsg(msg);
}
}
@ -1011,37 +1021,42 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
switch (weapon_id) {
case VW_SafeArea:
{
std::string msg = a8::Format("%s 被毒圈干掉",
{
name
});
std::string msg = a8::Format
(MetaMgr::Instance()->GetText("battle_server_dead_gas", "%s 被毒圈干掉").c_str(),
{
name
});
SendRollMsg(msg);
}
break;
case VW_Spectate:
{
std::string msg = a8::Format("%s 自杀",
{
name
});
std::string msg = a8::Format
(MetaMgr::Instance()->GetText("battle_server_dead_specate", "%s 自杀").c_str(),
{
name
});
SendRollMsg(msg);
}
break;
case VW_SelfDetonate:
{
std::string msg = a8::Format("%s 被炸死",
{
name
});
std::string msg = a8::Format
(MetaMgr::Instance()->GetText("battle_server_dead_self_detonate",
"%s 被炸死").c_str(),
{
name
});
SendRollMsg(msg);
}
break;
case VW_Mine:
{
std::string msg = a8::Format("%s 被地雷炸死",
{
name
});
std::string msg = a8::Format
(MetaMgr::Instance()->GetText("battle_server_dead_mine", "%s 被地雷炸死").c_str(),
{
name
});
SendRollMsg(msg);
}
break;
@ -3152,7 +3167,11 @@ void Human::ProcBuffEffect(Human* caster, Buff* buff)
MetaMgr::Instance()->terminator_meta &&
meta != MetaMgr::Instance()->terminator_meta) {
WinExp(this, MetaMgr::Instance()->terminator_meta->i->exp() + 1);
room->NotifySysPiao("终结者出现", a8::MkRgb(255, 0, 0), 3);
room->NotifySysPiao
(MetaMgr::Instance()->GetText("battle_server_terminator_appear",
"终结者出现").c_str(),
a8::MkRgb(255, 0, 0), 3
);
OnChgToTerminator();
}
}

View File

@ -62,6 +62,7 @@ public:
std::vector<MetaData::Robot> robot_list;
std::list<metatable::AI> ai_meta_list;
std::list<MetaData::AI> ai_list;
std::list<metatable::Text> text_meta_list;
std::map<std::string, MetaData::Parameter*> parameter_hash;
std::map<int, MetaData::Map*> gamemap_hash;
@ -90,6 +91,7 @@ public:
std::map<int, MetaData::Robot*> robot_hash;
std::map<int, std::vector<MetaData::AirLine*>> airline_hash;
std::map<int, MetaData::AI*> ai_hash;
std::map<std::string, std::string> text_hash;
void Load()
{
@ -138,6 +140,7 @@ public:
f8::ReadCsvMetaFile(res_path + "equipUpgrade@equipUpgrade.csv", equipupgrade_meta_list);
f8::ReadCsvMetaFile(res_path + "robot@robot.csv", robot_meta_list);
f8::ReadCsvMetaFile(res_path + "ai@ai.csv", ai_meta_list);
f8::ReadCsvMetaFile(res_path + "text@text.csv", text_meta_list);
BindToMetaData();
#if 1
{
@ -616,6 +619,11 @@ private:
item.Init();
ai_hash[a8::MakeInt64(meta.ai_level(), meta.ai_mode())] = &item;
}
for (auto& meta : text_meta_list) {
text_hash[meta.textid()] = meta.text();
}
}
private:
@ -848,3 +856,9 @@ MetaData::AI* MetaMgr::GetAI(int ai_level, int ai_mode)
auto itr = loader_->ai_hash.find(a8::MakeInt64(ai_level, ai_mode));
return itr != loader_->ai_hash.end() ? itr->second : nullptr;
}
std::string MetaMgr::GetText(const std::string& textid, const std::string& def_text)
{
auto itr = loader_->text_hash.find(textid);
return itr != loader_->text_hash.end() ? itr->second : def_text;
}

View File

@ -48,6 +48,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
int GetKillPointParam2(int kill_num);
MetaData::Robot* RandRobot(std::set<int>& refreshed_robot_set);
MetaData::AI* GetAI(int ai_level, int ai_mode);
std::string GetText(const std::string& textid, const std::string& def_text="");
int gas_inactive_time = 10;
int newbie_gas_inactive_time = 5;

View File

@ -294,7 +294,10 @@ void Obstacle::Explosion(Bullet* bullet)
float dmg = meta->i->damage();
float def = hum->ability.def;
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
hum->DecHP(finaly_dmg, VP_Mine, "地雷", VW_Mine);
hum->DecHP(finaly_dmg,
VP_Mine,
MetaMgr::Instance()->GetText("battle_server_killer_mine", "地雷"),
VW_Mine);
}
}
break;

View File

@ -935,7 +935,7 @@ void Player::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg)
need_sync_active_player = true;
cs::SMReconnect respmsg;
respmsg.set_errcode(0);
respmsg.set_errmsg("战斗重连成功");
respmsg.set_errmsg(MetaMgr::Instance()->GetText("battle_server_reconnect_ok", "战斗重连成功"));
SendNotifyMsg(respmsg);
PlayerMgr::Instance()->ReBindSocket(this);
a8::UdpLog::Instance()->Debug
@ -1375,7 +1375,7 @@ void Player::_CMOpenBox(f8::MsgHdr& hdr, const cs::CMOpenBox& msg)
receved_box_hash_.insert(msg.box_id());
} else {
respmsg.set_errcode(1);
respmsg.set_errmsg("不能重复领取");
respmsg.set_errmsg(MetaMgr::Instance()->GetText("battle_server_received", "不能重复领取"));
}
}
SendNotifyMsg(respmsg);

View File

@ -1428,7 +1428,9 @@ void Room::AirDrop(int appear_time, int box_id, int airdrop_id)
}
if (GetRoomMode() == kZombieMode) {
if (airdrop_id != map_meta_->i->terminator_airdrop()) {
NotifyCountdown("距离物资箱抵达还有%d秒", appear_time / 1000);
NotifyCountdown(MetaMgr::Instance()->GetText("battle_server_box_countdown",
"距离物资箱抵达还有%d秒"),
appear_time / 1000);
}
}
if (thing_meta && thing_meta->i->type() == 2) {
@ -1497,7 +1499,8 @@ void Room::AirDrop(int appear_time, int box_id, int airdrop_id)
if (obstacle->is_terminator_airdrop_box) {
room->NotifySysPiao
(
"终结者补给箱已送达",
MetaMgr::Instance()->GetText("battle_server_box_serviced",
"终结者补给箱已送达"),
a8::MkRgb(0, 255, 0),
3
);
@ -2345,7 +2348,7 @@ void Room::ProcDieAndroid(int die_time, int die_num)
if (alive_humans.size() == 1) {
Human* hum = alive_humans[0];
hum->BeKill(VP_SafeArea,
"毒圈",
MetaMgr::Instance()->GetText("battle_server_killer_gas", "毒圈"),
VW_SafeArea);
a8::UnSetBitFlag(hum->status, HS_Disable);
return;
@ -2373,7 +2376,7 @@ void Room::ProcDieAndroid(int die_time, int die_num)
a8::UnSetBitFlag(hum->status, HS_Disable);
} else {
hum->BeKill(VP_SafeArea,
"毒圈",
MetaMgr::Instance()->GetText("battle_server_killer_gas", "毒圈"),
VW_SafeArea);
if (!alive_humans.empty()) {
alive_humans.erase(alive_humans.begin() + i);
@ -2439,7 +2442,7 @@ void Room::CheckAutoDie(Human* target,
} else {
a8::UnSetBitFlag(target->status, HS_Disable);
target->BeKill(VP_SafeArea,
"毒圈",
MetaMgr::Instance()->GetText("battle_server_killer_gas", "毒圈"),
VW_SafeArea);
}
}
@ -3290,7 +3293,9 @@ void Room::OnZombieAppear(Human* hum)
.SetParam1(hum->meta->i->name()),
[] (Player* hum, a8::XParams& param)
{
hum->SendSysPiaoMsg(a8::Format("%s出现了", {param.param1.GetString()}),
hum->SendSysPiaoMsg(a8::Format(MetaMgr::Instance()->GetText("battle_server_appear",
"%s出现了").c_str(),
{param.param1.GetString()}),
a8::MkRgb(255, 0, 0),
3);
}

View File

@ -201,7 +201,12 @@ void RoomMgr::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg)
Room* room = GetRoomByUuid(a8::XValue(msg.room_uuid()));
if (!room) {
send_reconnect_failed(hdr.socket_handle, 1, "房间已销毁");
send_reconnect_failed
(hdr.socket_handle,
1,
MetaMgr::Instance()->GetText("battle_server_reconnect_failreason_room_destoryed",
"房间已销毁")
);
a8::UdpLog::Instance()->Debug
("房间已销毁 %s",
{
@ -210,12 +215,24 @@ void RoomMgr::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg)
return;
}
if (room->GetRoomMode() != kChiJiMode) {
send_reconnect_failed(hdr.socket_handle, 1, "只有吃鸡模式支持重连");
send_reconnect_failed
(hdr.socket_handle,
1,
MetaMgr::Instance()->GetText("battle_server_reconnect_failreason_only_chiji",
"只有吃鸡模式支持重连"
)
);
return;
}
Player* hum = room->GetPlayerByAccountId(msg.account_id());
if (!hum) {
send_reconnect_failed(hdr.socket_handle, 1, "accountid未在房间列表");
send_reconnect_failed
(hdr.socket_handle,
1,
MetaMgr::Instance()->GetText("battle_server_reconnect_failreason_notfound_accountid",
"accountid未在房间列表"
)
);
return;
}
hum->_CMReconnect(hdr, msg);

View File

@ -271,6 +271,12 @@ message AI
optional int32 ai_mode = 12;
}
message Text
{
optional string textid = 1;
optional string text = 2;
}
//end
message DoorObjJson