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
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<metatable::Robot> robot_meta_list;
std::vector<MetaData::Robot> robot_list;
std::list<metatable::Text> text_meta_list;
std::map<std::string, MetaData::Parameter*> parameter_hash;
std::map<int, MetaData::Map*> gamemap_hash;
@ -72,6 +73,7 @@ public:
std::map<int, MetaData::EquipUpgrade*> equipupgrade_hash;
std::map<int, MetaData::Robot*> robot_hash;
std::map<int, std::vector<MetaData::AirLine*>> airline_hash;
std::map<std::string, std::string> text_hash;
void Load()
{
@ -115,6 +117,7 @@ public:
f8::ReadCsvMetaFile(res_path + "rankPoint@rankPoint.csv", rankpoint_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 + "text@text.csv", text_meta_list);
BindToMetaData();
#if 1
{
@ -129,6 +132,7 @@ public:
MetaMgr::Instance()->tank_damage_interval = MetaMgr::Instance()->GetSysParamAsFloat("tank_damage_interval", 1);
MetaMgr::Instance()->average_oil = MetaMgr::Instance()->GetSysParamAsInt("average_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) {
abort();
}
@ -310,6 +314,10 @@ private:
robot_hash[meta.id()] = &item;
}
for (auto& meta : text_meta_list) {
text_hash[meta.textid()] = meta.text();
}
}
private:
@ -496,3 +504,9 @@ MetaData::Robot* MetaMgr::GetRobot(int robot_id)
auto itr = loader_->robot_hash.find(robot_id);
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);
std::vector<MetaData::Robot>* GetRobotList();
MetaData::Robot* GetRobot(int robot_id);
std::string GetText(const std::string& textid, const std::string& def_text);
int gas_inactive_time = 10;
int jump_time = 10;
@ -54,6 +55,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
float tank_damage_interval = 0.0f;
float average_oil = 0.0f;
float max_oil = 0.0f;
int max_energy_shield = 100;
private:
MetaDataLoader* loader_ = nullptr;

View File

@ -31,7 +31,12 @@ void Player::Initialize()
{
Human::Initialize();
health = meta->i->health();
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());
if (skin_meta) {
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) {
moved_frames = 0;
}
//前一个状态是纯点射
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());
if (!shot_hold) {
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)
{
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;
#if 0
TouchAllLayerHumanList
@ -930,6 +945,13 @@ void Player::_CMReconnect(f8::MsgHdr& hdr, const cs::CMReconnect& msg)
respmsg.set_errmsg("战斗重连成功");
SendNotifyMsg(respmsg);
PlayerMgr::Instance()->ReBindSocket(this);
a8::UdpLog::Instance()->Debug
("战斗服重连成功 %s %d %d",
{
account_id,
hdr.socket_handle,
old_socket_handle
});
}
void Player::UpdateDropWeapon()
@ -1111,6 +1133,8 @@ void Player::_CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg)
dead = false;
real_dead = false;
downed = false;
energy_shield = MetaMgr::Instance()->max_energy_shield;
max_energy_shield = energy_shield;
FreeDownedTimer();
health = GetMaxHP();
ResetTankSkin();

View File

@ -747,18 +747,19 @@ bool Room::CanJoin(const std::string& accountid)
void Room::OnPlayerOffline(Player* hum)
{
if (GetOnlinePlayerNum() <= 0) {
xtimer.AddDeadLineTimer
xtimer.AddDeadLineTimerAndAttach
(
SERVER_FRAME_RATE * 40,
SERVER_FRAME_RATE * 15,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
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);
}
});
},
&xtimer_attacher.timer_list_);
}
}

View File

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

View File

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

View File

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

View File

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

View File

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