Compare commits

...

6 Commits
dev ... master

Author SHA1 Message Date
aozhiwei
d94635c78c 修复点射问题 2020-11-30 13:46:58 +08:00
aozhiwei
a9e333e909 1 2020-09-18 12:07:49 +08:00
aozhiwei
c56c6427da 复活添加能量护盾 2020-09-16 14:23:01 +08:00
aozhiwei
2b58177482 1 2020-09-14 13:31:06 +08:00
aozhiwei
f07f400287 1 2020-08-11 16:25:36 +08:00
aozhiwei
c2eb1b4e40 1 2020-08-10 17:30:14 +08:00
10 changed files with 86 additions and 11 deletions

View File

@ -1,5 +1,16 @@
#!/bin/bash #!/bin/bash
python manage.py restart $1 $2 source /etc/profile
source /root/.bash_profile
echo 'success' pid=$(ps -ef|grep "gameserver2001 -n $2 -i $1"|grep -v grep|awk '{print $2}')
echo $pid
if [[ $pid != "" ]]
then
echo $pid|xargs kill -9
else
echo "pid 为空"
fi
nohup ./gameserver2001 -n $2 -i $1 >> gameserver2001$2_$1.out &

View File

@ -49,6 +49,7 @@ public:
std::list<MetaData::KillPoint> killpoint_list; std::list<MetaData::KillPoint> killpoint_list;
std::list<metatable::Robot> robot_meta_list; std::list<metatable::Robot> robot_meta_list;
std::vector<MetaData::Robot> robot_list; std::vector<MetaData::Robot> robot_list;
std::list<metatable::Text> text_meta_list;
std::map<std::string, MetaData::Parameter*> parameter_hash; std::map<std::string, MetaData::Parameter*> parameter_hash;
std::map<int, MetaData::Map*> gamemap_hash; std::map<int, MetaData::Map*> gamemap_hash;
@ -72,6 +73,7 @@ public:
std::map<int, MetaData::EquipUpgrade*> equipupgrade_hash; std::map<int, MetaData::EquipUpgrade*> equipupgrade_hash;
std::map<int, MetaData::Robot*> robot_hash; std::map<int, MetaData::Robot*> robot_hash;
std::map<int, std::vector<MetaData::AirLine*>> airline_hash; std::map<int, std::vector<MetaData::AirLine*>> airline_hash;
std::map<std::string, std::string> text_hash;
void Load() void Load()
{ {
@ -115,6 +117,7 @@ public:
f8::ReadCsvMetaFile(res_path + "rankPoint@rankPoint.csv", rankpoint_meta_list); f8::ReadCsvMetaFile(res_path + "rankPoint@rankPoint.csv", rankpoint_meta_list);
f8::ReadCsvMetaFile(res_path + "equipUpgrade@equipUpgrade.csv", equipupgrade_meta_list); f8::ReadCsvMetaFile(res_path + "equipUpgrade@equipUpgrade.csv", equipupgrade_meta_list);
f8::ReadCsvMetaFile(res_path + "robot@robot.csv", robot_meta_list); f8::ReadCsvMetaFile(res_path + "robot@robot.csv", robot_meta_list);
f8::ReadCsvMetaFile(res_path + "text@text.csv", text_meta_list);
BindToMetaData(); BindToMetaData();
#if 1 #if 1
{ {
@ -129,6 +132,7 @@ public:
MetaMgr::Instance()->tank_damage_interval = MetaMgr::Instance()->GetSysParamAsFloat("tank_damage_interval", 1); MetaMgr::Instance()->tank_damage_interval = MetaMgr::Instance()->GetSysParamAsFloat("tank_damage_interval", 1);
MetaMgr::Instance()->average_oil = MetaMgr::Instance()->GetSysParamAsInt("average_oil"); MetaMgr::Instance()->average_oil = MetaMgr::Instance()->GetSysParamAsInt("average_oil");
MetaMgr::Instance()->max_oil = MetaMgr::Instance()->GetSysParamAsInt("max_oil"); MetaMgr::Instance()->max_oil = MetaMgr::Instance()->GetSysParamAsInt("max_oil");
MetaMgr::Instance()->max_energy_shield = MetaMgr::Instance()->GetSysParamAsInt("max_energy_shield");
if (MetaMgr::Instance()->K < 0.01f) { if (MetaMgr::Instance()->K < 0.01f) {
abort(); abort();
} }
@ -310,6 +314,10 @@ private:
robot_hash[meta.id()] = &item; robot_hash[meta.id()] = &item;
} }
for (auto& meta : text_meta_list) {
text_hash[meta.textid()] = meta.text();
}
} }
private: private:
@ -496,3 +504,9 @@ MetaData::Robot* MetaMgr::GetRobot(int robot_id)
auto itr = loader_->robot_hash.find(robot_id); auto itr = loader_->robot_hash.find(robot_id);
return itr != loader_->robot_hash.end() ? itr->second : nullptr; return itr != loader_->robot_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

@ -42,6 +42,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
int GetKillPointParam2(int kill_num); int GetKillPointParam2(int kill_num);
std::vector<MetaData::Robot>* GetRobotList(); std::vector<MetaData::Robot>* GetRobotList();
MetaData::Robot* GetRobot(int robot_id); MetaData::Robot* GetRobot(int robot_id);
std::string GetText(const std::string& textid, const std::string& def_text);
int gas_inactive_time = 10; int gas_inactive_time = 10;
int jump_time = 10; int jump_time = 10;
@ -54,6 +55,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
float tank_damage_interval = 0.0f; float tank_damage_interval = 0.0f;
float average_oil = 0.0f; float average_oil = 0.0f;
float max_oil = 0.0f; float max_oil = 0.0f;
int max_energy_shield = 100;
private: private:
MetaDataLoader* loader_ = nullptr; MetaDataLoader* loader_ = nullptr;

View File

@ -31,7 +31,12 @@ void Player::Initialize()
{ {
Human::Initialize(); Human::Initialize();
health = meta->i->health(); health = meta->i->health();
max_energy_shield = energy_shield; if (energy_shield) {
energy_shield = MetaMgr::Instance()->max_energy_shield;
max_energy_shield = energy_shield;
} else {
max_energy_shield = 0;
}
skin_meta = MetaMgr::Instance()->GetDress(SkinId()); skin_meta = MetaMgr::Instance()->GetDress(SkinId());
if (skin_meta) { if (skin_meta) {
skill_meta = MetaMgr::Instance()->GetSkill(skin_meta->i->skill_id()); skill_meta = MetaMgr::Instance()->GetSkill(skin_meta->i->skill_id());
@ -862,8 +867,13 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg)
if (moving) { if (moving) {
moved_frames = 0; moved_frames = 0;
} }
shot_start = msg.shot_start(); //前一个状态是纯点射
shot_hold = msg.shot_hold(); if (shot_start && !shot_hold) {
} else {
shot_start = msg.shot_start();
shot_hold = msg.shot_hold();
}
fly_distance = std::min(200.0f, msg.fly_distance()); fly_distance = std::min(200.0f, msg.fly_distance());
if (!shot_hold) { if (!shot_hold) {
series_shot_frames = 0; series_shot_frames = 0;
@ -914,6 +924,11 @@ void Player::_CMMove(f8::MsgHdr& hdr, const cs::CMMove& msg)
void Player::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg) void Player::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg)
{ {
int old_socket_handle = socket_handle;
if (socket_handle != 0) {
GGListener::Instance()->ForceCloseChildSocket(socket_handle);
PlayerMgr::Instance()->RemovePlayerBySocket(socket_handle);
}
socket_handle = hdr.socket_handle; socket_handle = hdr.socket_handle;
#if 0 #if 0
TouchAllLayerHumanList TouchAllLayerHumanList
@ -930,6 +945,13 @@ void Player::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg)
respmsg.set_errmsg("战斗重连成功"); respmsg.set_errmsg("战斗重连成功");
SendNotifyMsg(respmsg); SendNotifyMsg(respmsg);
PlayerMgr::Instance()->ReBindSocket(this); PlayerMgr::Instance()->ReBindSocket(this);
a8::UdpLog::Instance()->Debug
("战斗服重连成功 %s %d %d",
{
account_id,
hdr.socket_handle,
old_socket_handle
});
} }
void Player::UpdateDropWeapon() void Player::UpdateDropWeapon()
@ -1111,6 +1133,8 @@ void Player::_CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg)
dead = false; dead = false;
real_dead = false; real_dead = false;
downed = false; downed = false;
energy_shield = MetaMgr::Instance()->max_energy_shield;
max_energy_shield = energy_shield;
FreeDownedTimer(); FreeDownedTimer();
health = GetMaxHP(); health = GetMaxHP();
ResetTankSkin(); ResetTankSkin();

View File

@ -747,18 +747,19 @@ bool Room::CanJoin(const std::string& accountid)
void Room::OnPlayerOffline(Player* hum) void Room::OnPlayerOffline(Player* hum)
{ {
if (GetOnlinePlayerNum() <= 0) { if (GetOnlinePlayerNum() <= 0) {
xtimer.AddDeadLineTimer xtimer.AddDeadLineTimerAndAttach
( (
SERVER_FRAME_RATE * 40, SERVER_FRAME_RATE * 15,
a8::XParams() a8::XParams()
.SetSender(this), .SetSender(this),
[] (const a8::XParams& param) [] (const a8::XParams& param)
{ {
Room* room = (Room*)param.sender.GetUserData(); Room* room = (Room*)param.sender.GetUserData();
if (room->GetOnlinePlayerNum() <= 0) { if (room->GetOnlinePlayerNum() <= 0 && !room->added_to_over_room) {
RoomMgr::Instance()->AddOverRoom(room->room_uuid); RoomMgr::Instance()->AddOverRoom(room->room_uuid);
} }
}); },
&xtimer_attacher.timer_list_);
} }
} }

View File

@ -49,6 +49,7 @@ public:
long long pending_request = 0; long long pending_request = 0;
long long last_debugout_tick = 0; long long last_debugout_tick = 0;
a8::Vec2 last_player_jump_pos; a8::Vec2 last_player_jump_pos;
bool added_to_over_room = false;
~Room(); ~Room();
void Init(); void Init();

View File

@ -128,7 +128,7 @@ void RoomMgr::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg)
.SetSender(socket_handle), .SetSender(socket_handle),
[] (const a8::XParams& param) [] (const a8::XParams& param)
{ {
GGListener::Instance()->ForceCloseClient(param.sender); GGListener::Instance()->ForceCloseChildSocket(param.sender);
} }
); );
}; };
@ -136,6 +136,11 @@ void RoomMgr::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg)
Room* room = GetRoomByUuid(a8::XValue(msg.room_uuid())); Room* room = GetRoomByUuid(a8::XValue(msg.room_uuid()));
if (!room) { if (!room) {
send_reconnect_failed(hdr.socket_handle, 1, "房间已销毁"); send_reconnect_failed(hdr.socket_handle, 1, "房间已销毁");
a8::UdpLog::Instance()->Debug
("房间已销毁 %s",
{
msg.room_uuid()
});
return; return;
} }
Player* hum = room->GetPlayerByAccountId(msg.account_id()); Player* hum = room->GetPlayerByAccountId(msg.account_id());
@ -190,6 +195,7 @@ void RoomMgr::AddOverRoom(long long room_uuid)
inactive_room_hash_.erase(room_uuid); inactive_room_hash_.erase(room_uuid);
Room* room = GetRoomByUuid(room_uuid); Room* room = GetRoomByUuid(room_uuid);
if (room) { if (room) {
room->added_to_over_room = true;
room->game_over_tick = a8::XGetTickCount(); room->game_over_tick = a8::XGetTickCount();
room->game_over_timer = a8::Timer::Instance()->AddRepeatTimer(500, room->game_over_timer = a8::Timer::Instance()->AddRepeatTimer(500,
a8::XParams() a8::XParams()

View File

@ -38,4 +38,5 @@ enum SMMessageId_e
_SMDebugMsg = 1010; _SMDebugMsg = 1010;
_SMWxVoip = 1011; _SMWxVoip = 1011;
_SMUiUpdate = 1012; _SMUiUpdate = 1012;
_SMGameStart = 1013;
} }

View File

@ -413,6 +413,9 @@ message MFObjectFull
optional MFProjectileFull union_obj_8 = 9; optional MFProjectileFull union_obj_8 = 9;
optional MFSmokeFull union_obj_9 = 10; optional MFSmokeFull union_obj_9 = 10;
optional MFHeroFull union_obj_10 = 11; optional MFHeroFull union_obj_10 = 11;
optional int32 obj_uniid = 14; //id
optional int32 object_flags = 15; // 1<<0: 1<<1
} }
//() //()
@ -887,4 +890,10 @@ message SMUiUpdate
optional int32 alive_count = 1; // optional int32 alive_count = 1; //
optional int32 kill_count = 2; // optional int32 kill_count = 2; //
repeated MFCar car_list = 3; // repeated MFCar car_list = 3; //
} }
//
message SMGameStart
{
}

View File

@ -190,6 +190,12 @@ message KillPoint
optional int32 parameter2 = 3; optional int32 parameter2 = 3;
} }
message Text
{
optional string textid = 1;
optional string text = 2;
}
//end //end
message DoorObjJson message DoorObjJson