function joinAllyMain($hako, $data) { global $init; $currentID = $data['ISLANDID']; $currentAnumber = $data['ALLYNUMBER']; $currentNumber = $hako->idToNumber[$currentID]; $island = $hako->islands[$currentNumber]; // パスワードチェック if (!AllyUtil::checkPassword($island['password'], $data['PASSWORD'])) { // password間違い HakoError::wrongPassword(); return; } // 盟主チェック if ($hako->idToAllyNumber[$currentID]) { HakoError::leaderAlready(); return; } // 複数加盟チェック $ally = $hako->ally[$currentAnumber]; if ($init->allyJoinOne && $island['allyId'][0] != '' && $island['allyId'][0] != $ally['id']) { HakoError::otherAlready(); return; } $allyMember = $ally['memberId']; $newAllyMember = array(); $flag = 0; foreach ($allyMember as $id) { if (!($hako->idToNumber[$id] > -1)) { } elseif ($id == $currentID) { $flag = 1; } else { array_push($newAllyMember, $id); } } if ($flag) { // 脱退 $newAlly = array(); foreach ($island['allyId'] as $id) { if ($id != $ally['id']) { array_push($newAlly, $id); } } $island['allyId'] = $newAlly; $ally['score'] -= $island['pop']; $ally['number']--; } else { // 加盟 array_push($newAllyMember, $currentID); array_push($island['allyId'], $ally['id']); $ally['score'] += $island['pop']; $ally['number']++; } $island['money'] -= $init->comCost[$init->comAlly]; $ally['memberId'] = $newAllyMember; // データ格納先へ $hako->islands[$currentNumber] = $island; $hako->ally[$currentAnumber] = $ally; // データ書き出し AllyUtil::allyOccupy($hako); AllyUtil::allySort($hako); $hako->writeAllyFile(); // トップへ $html = new HtmlAlly(); $html->allyTop($hako, $data); }