[fix] AloneTcpClient

This commit is contained in:
lkeme 2020-04-17 23:56:22 +08:00
parent 15bb434c1b
commit 2b45dc46c0

View File

@ -185,24 +185,102 @@ class ZoneTcpClient
return false; return false;
} }
$data = []; $data = [];
$update_room = false;
switch ($de_raw['cmd']) { switch ($de_raw['cmd']) {
case 'TV_START': case 'TV_START':
// 小电视 // 小电视飞船(1)
$data = [
'room_id' => self::$room_id,
'raffle_id' => $de_raw['data']['id'],
'raffle_title' => $de_raw['data']['title'],
'raffle_type' => 'small_tv',
'source' => $msg
];
break; break;
case 'RAFFLE_START': case 'SPECIAL_GIFT':
// 活动礼物 // 节奏风暴(1)
break; if (array_key_exists('39', $de_raw['data'])) {
case 'LOTTERY_START': if ($de_raw['data']['39']['action'] == 'start') {
// 抽奖 $data = [
break; 'room_id' => self::$room_id,
case 'PK_LOTTERY_START': 'raffle_id' => $de_raw['data']['39']['id'],
// 乱斗 'raffle_title' => '节奏风暴(1)',
'raffle_type' => 'storm',
'source' => $msg
];
}
}
break; break;
case 'GUARD_LOTTERY_START': case 'GUARD_LOTTERY_START':
// 舰长 // 舰长(1)
$data = [
'room_id' => $de_raw['data']['roomid'],
'raffle_id' => $de_raw['data']['id'],
'raffle_title' => '总督舰长(1)',
'raffle_type' => 'guard',
'source' => $msg
];
break; break;
case 'ALL_MSG': case 'GUARD_MSG':
// 未知 // 舰长(2)
// {"buy_type":3,"cmd":"GUARD_MSG","msg":":?淩白夜:? 在本房间开通了舰长"}
$data = [
'room_id' => self::$room_id,
'raffle_id' => self::$raffle_id++,
'raffle_title' => '总督舰长(2)',
'raffle_type' => 'guard',
'source' => $msg
];
break;
case 'LOTTERY_START':
// 舰长(3)
$data = [
'room_id' => $de_raw['data']['roomid'],
'raffle_id' => $de_raw['data']['id'],
'raffle_title' => '总督舰长(3)',
'raffle_type' => 'guard',
'source' => $msg
];
break;
case 'ANCHOR_LOT_START':
// 天选时刻(1)
$data = [
'room_id' => $de_raw['data']['room_id'],
'raffle_id' => $de_raw['data']['id'],
'raffle_title' => '天选时刻(1)',
'raffle_type' => 'anchor',
'source' => $msg
];
break;
case 'PK_LOTTERY_START':
// PK大乱斗(1)
$data = [
'room_id' => $de_raw['data']['room_id'],
'raffle_id' => $de_raw['data']['id'],
'raffle_title' => 'PK大乱斗(1)',
'raffle_type' => 'pk',
'source' => $msg
];
break;
case 'PK_BATTLE_END':
// PK大乱斗(2)
$data = [
'room_id' => self::$room_id,
'raffle_id' => $de_raw['pk_id'],
'raffle_title' => 'PK大乱斗(2)',
'raffle_type' => 'pk',
'source' => $msg
];
break;
case 'RAFFLE_START':
// 高能抽奖(1)
$data = [
'room_id' => self::$room_id,
'raffle_id' => $de_raw['data']['id'],
'raffle_title' => $de_raw['data']['title'], // 高能抽奖(1)
'raffle_type' => 'raffle',
'source' => $msg
];
break; break;
case 'NOTICE_MSG': case 'NOTICE_MSG':
$msg_type = $de_raw['msg_type']; $msg_type = $de_raw['msg_type'];
@ -227,46 +305,43 @@ class ZoneTcpClient
'raffle_type' => 'raffle', 'raffle_type' => 'raffle',
'source' => $msg 'source' => $msg
]; ];
} }
break; break;
case 'GUARD_MSG': case 'DANMU_GIFT_LOTTERY_START':
$data = [ // 弹幕抽奖(1)
'room_id' => $de_raw['roomid'], // $data = [
'raffle_id' => self::$raffle_id++, // 'room_id' => $de_raw['data']['room_id'],
'raffle_title' => '总督舰长', // 'raffle_id' => $de_raw['data']['id'],
'raffle_type' => 'raffle', // 'raffle_title' => $de_raw['data']['title'],
'source' => $msg // 'raffle_type' => 'raffle',
]; // 'source' => $msg
// ];
break; break;
case 'SPECIAL_GIFT': case 'PREPARING':
if (array_key_exists('39', $de_raw['data'])) { // 房间内下播消息。
if ($de_raw['data']['39']['action'] == 'start') { $update_room = true;
$data = [
'room_id' => $de_raw['roomid'],
'raffle_id' => self::$raffle_id++,
'raffle_title' => '节奏风暴',
'raffle_type' => 'raffle',
'source' => $msg
];
}
}
break; break;
case 'SYS_GIFT': case 'CUT_OFF':
/** // 房间内被下播消息。
* 系统礼物消息, 广播 $update_room = true;
*/
break; break;
case 'SYS_MSG': case 'WARNING':
/** // 房间内管理员警告消息。
* 系统消息, 广播 $update_room = true;
*/
break; break;
// TODO 支持更多消息类型
default: default:
$data = []; $data = [];
break; break;
} }
// 下播处理
if ($update_room) {
self::triggerReConnect([
'area_id' => self::$area_id,
'wait_time' => time()
]);
}
// 处理数据
if (!empty($data)) { if (!empty($data)) {
unset($data['source']); unset($data['source']);
if (!isset(self::$raffle_list[$data['raffle_type']])) { if (!isset(self::$raffle_list[$data['raffle_type']])) {