diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 803ed5e..494e2df 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -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(); } } diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 2adab43..db7d6a5 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -62,6 +62,7 @@ public: std::vector robot_list; std::list ai_meta_list; std::list ai_list; + std::list text_meta_list; std::map parameter_hash; std::map gamemap_hash; @@ -90,6 +91,7 @@ public: std::map robot_hash; std::map> airline_hash; std::map ai_hash; + std::map 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; +} diff --git a/server/gameserver/metamgr.h b/server/gameserver/metamgr.h index 76a9aae..81b5d6c 100755 --- a/server/gameserver/metamgr.h +++ b/server/gameserver/metamgr.h @@ -48,6 +48,7 @@ class MetaMgr : public a8::Singleton int GetKillPointParam2(int kill_num); MetaData::Robot* RandRobot(std::set& 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; diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 54395f4..e711cd7 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -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; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 95dff57..3388a5b 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -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); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 1aab7f1..420602b 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -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); } diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index d901f24..ce1c72b 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -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); diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index 112126c..bf49bba 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -271,6 +271,12 @@ message AI optional int32 ai_mode = 12; } +message Text +{ + optional string textid = 1; + optional string text = 2; +} + //end message DoorObjJson