_getZid(); $teamUuid = $nodeId . '_' . $zid . '_' . md5($this->_getAccountId() . $this->_getNowTime()); /*if (!in_array(array ( self::MATCH_MODE_NORMAL, self::MATCH_MODE_RANK, self::MATCH_MODE_PVE, ), $matchMode)) { $this->_rspErr(1, 'match mode error'); return; }*/ // $userDb = $this->_getOrmUserInfo(); $userDb = User::find('6513_2006_HaABddcrIdHDoj0qg73FFwvyrYkqOsQd'); //验证pve_instance_id合法性 if ($pveInstanceId){ $pveGame = \mt\PveGemini::get($pveInstanceId); if (!$pveGame){ $this->_rspErr(1, 'pve_instance_id error'); return; } if (!in_array($pveInstanceId,\mt\PveGemini::getAbleCombatMeta($userDb['pve_instance_id']))){ $this->_rspErr(1, 'pve_instance_id error'); return; } } $userDto = User::info($userDb); $userDto['is_leader'] =1; $userDto['createtime'] = $userDb['createtime']; $teamDb = array( 'team_uuid' => $teamUuid, 'state' => 0, 'payload' => '', 'match_mode' => $matchMode, 'pve_instance_id' => $pveInstanceId, 'slot_num' => 4, 'member_list' => array($userDto)); $r = $this->_getRedis($teamUuid); $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspData(array( 'team_uuid' => $teamUuid )); } public function teamInfo() { $teamUuid = getReqVal('team_uuid', ''); $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { $this->_rspErr(1, 'The team has been disbanded'); return; } $r->pexpire(TEAMID_KEY . $teamUuid, 1000*600); $this->_rspData(array( 'team_info' => $teamDb )); } public function joinTeam() { $teamUuid = getReqVal('team_uuid', ''); $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { $this->_rspErr(1, 'The team has been disbanded'); return; } if (count($teamDb['member_list']) >= $teamDb['slot_num']) { $this->_rspErr(2, 'The team is full'); return; } foreach ($teamDb['member_list'] as $member) { if ($member['account_id'] == $this->_getAccountId()) { $this->_rspData(array( 'team_uuid' => $teamUuid )); return; } } $userDb = User::find($this->_getAccountId()); //验证pve_instance_id合法性 if ($teamDb['pve_instance_id']>0){ if (!in_array($teamDb['pve_instance_id'],\mt\PveGemini::getAbleCombatMeta($userDb['pve_instance_id']))) { $this->_rspErr(1, 'No challenge'); return; } } $userDto = User::info($userDb); $userDto['createtime'] = $userDb['createtime']; array_push($teamDb['member_list'], $userDto); $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspData(array( 'team_uuid' => $teamUuid )); } public function leaveTeam() { $teamUuid = getReqVal('team_uuid', ''); $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { $this->_rspOk(); return; } $newMemberList = array(); foreach ($teamDb['member_list'] as $member) { if ($member['account_id'] != $this->_getAccountId()) { array_push($newMemberList, $member); } } $teamDb['member_list'] = $newMemberList; $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); } public function kickout() { $teamUuid = getReqVal('team_uuid', ''); $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { $this->_rspOk(); return; } $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); } public function closeSlot() { $teamUuid = getReqVal('team_uuid', ''); $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { $this->_rspOk(); return; } $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); } public function openSlot() { $teamUuid = getReqVal('team_uuid', ''); $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { $this->_rspOk(); return; } $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); } public function handover() { $teamUuid = getReqVal('team_uuid', ''); $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { $this->_rspOk(); return; } $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); } public function cancel() { $teamUuid = getReqVal('team_uuid', ''); $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { $this->_rspOk(); return; } $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); } public function startGame() { $teamUuid = getReqVal('team_uuid', ''); $r = $this->_getRedis($teamUuid); $teamDb = $this->readTeamDb($r, $teamUuid); if (empty($teamDb)) { $this->_rspErr(1, 'The team has been disbanded'); return; } $teamDb['state'] = 1; $this->saveTeamDb($r, $teamUuid, $teamDb); $this->_rspOk(); } private function readTeamDb($r, $teamUuid) { $teamDbStr = $r->get(TEAMID_KEY . $teamUuid); if (empty($teamDbStr)) { return null; } $teamDb = json_decode($teamDbStr, true); return $teamDb; } private function saveTeamDb($r, $teamUuid, $teamDb) { $r->set(TEAMID_KEY . $teamUuid, json_encode($teamDb)); $r->pexpire(TEAMID_KEY . $teamUuid, 1000*600); } }