$reduce = 5; break; case 'gold': $reduce = 10; break; case 'def': $reduce = 1; break; } } else { $reduce = 1; } foreach ($_POST['Array']['result'] as $val) { if (isset($val['killed']) and in_array($val['name'], $res_check)) { $eb = $_POST['Array']['time'] + $gk_time[$val['vehicleType']] / $reduce * 60 * 60; gk_insert_tanks($val, $eb, $db); // запись в бд } } unset($res_check); unset($gk_time); } /********** End **********/ /********** Parse activity replay **********/ if (isset($_POST['activityreplay']) and isset($_FILES) and $auth->replays) { $activity_error = ''; foreach ($_FILES as $a_filename => $a_file) { $res_check = array_keys($res); $cache_activity = new Cache(ROOT_DIR . '/cache/activity/'); $file_num = substr($a_filename, -1); $file_error = null;
function gk_parse_file($file, $res, $gk_time, $lang, $db, $reducer = 0) { $file_error = null; $show_table = null; $team_id = null; $battle_time = null; $reduce = 1; if ($file['filename']['size'] > 1024 * 6 * 1024) { $file_error .= $lang['gk_error_1']; } if (is_uploaded_file($file['filename']['tmp_name']) and $file['filename']['error'] == 0 and !isset($file_error)) { $lines = file($_FILES["filename"]["tmp_name"]); } else { $file_error .= $lang['gk_error_2']; } unset($file); unset($_FILES); if (!$file_error) { $handle = trim($lines[0]); if (isset($lines[1])) { $handle .= trim($lines[1]); } if (!preg_match('/{\\"clientVersionFromXml(.*)\\"}/', $handle, $gk_result)) { $file_error .= $lang['gk_error_3']; } /* if(!preg_match('/{\"crewActivityFlags(.*)arenaTypeID\"(.*?)}/', $handle, $gk_result2)) { if($file_error) { $file_error .= $lang['gk_error_4']; } else { $show_table = true; } } */ if (preg_match('/\\[(.*)\\]/', $handle, $gk_result2)) { $gk_tmp = explode('}, {', $gk_result2['1']); //print_r($res); $gk_tmp['0'] = $gk_tmp['0'] . '}'; $gk_tmp['1'] = '{' . $gk_tmp['1'] . '}'; //$gk_tmp['2'] = '{'.$gk_tmp['2']; $gk_data2 = json_decode($gk_tmp['0'], true); $gk_data3 = json_decode($gk_tmp['1'], true); if (!isset($gk_data2['isWinner'])) { if ($file_error) { $file_error .= $lang['gk_error_4']; } else { $show_table = true; } } else { // begin else $lineCount = count($lines); $output = array(); for ($i = 1; $i < $lineCount; $i += 1) { if (substr($lines[$i], 0, 2) == 's.') { break; } //Vehicle Lock Mode if (preg_match('/vehLockMode/', $lines[$i])) { if (substr($lines[$i + 2], 1) == 1) { $gk_data2['vehicleLockMode'] = 1; } else { $gk_data2['vehicleLockMode'] = 0; } } //Battle duration if (preg_match('/duration/', $lines[$i])) { $num = substr($lines[$i + 2], 1); if (is_numeric($num)) { $gk_data2['lifeTime'] = $num; } else { $gk_data2['lifeTime'] = 15 * 60; } } } if ($gk_data2['isWinner'] == 1) { switch ($reducer) { case 'normal': $reduce = 2; break; case 'start': $reduce = 5; break; case 'gold': $reduce = 10; break; } } } // end else } unset($lines, $gk_result2); } if ($show_table) { $file_error .= $lang['gk_error_4']; $gk_data = json_decode($gk_result['0'], true); unset($gk_result); foreach ($gk_data['vehicles'] as $val) { if (in_array($val['name'], $res)) { $pieces = explode(':', $val['vehicleType']); $teams[$val['team']][$val['name']] = $pieces['1']; if ($val['name'] == $gk_data['playerName']) { $team_id = $val['team']; } } } $check_time = date_parse($gk_data['dateTime']); if ($check_time['error_count'] == 0) { $battle_time = mktime($check_time['hour'], $check_time['minute'], $check_time['second'], $check_time['month'], $check_time['day'], $check_time['year']); $file_error .= $lang['gk_error_10']; } else { $show_table = false; $file_error .= ':-( :\'('; } unset($gk_data); } if (!$file_error) { $gk_data = json_decode($gk_result['0'], true); unset($gk_result); if (!in_array($gk_data['playerName'], $res)) { $file_error .= $lang['gk_error_5']; } if ($gk_data2['vehicleLockMode'] != 1) { $file_error .= $lang['gk_error_6']; } } if (!$file_error) { if (is_array($gk_data3)) { foreach ($gk_data3 as $id => $val) { $pieces = explode(':', $val['vehicleType']); $teams[$val['team']][$val['name']]['vehicleType'] = $pieces['1']; $teams[$val['team']][$val['name']]['isAlive'] = $val['isAlive']; $teams[$val['team']][$val['name']]['name'] = $val['name']; if ($val['name'] == $gk_data['playerName']) { $team_id = $val['team']; } } } else { foreach (array_keys($gk_data['vehicles']) as $id) { preg_match_all('/\\"' . $id . '\\": {\\"vehicleType\\"(.*?)\\"isTeamKiller\\"(.*?)}/', $handle, $gk_result3); $gk_result3['0']['1'] = '{' . $gk_result3['0']['1'] . '}'; $info = json_decode($gk_result3['0']['1'], true); $pieces = explode(':', $info[$id]['vehicleType']); $teams[$info[$id]['team']][$info[$id]['name']]['vehicleType'] = $pieces['1']; $teams[$info[$id]['team']][$info[$id]['name']]['isAlive'] = $info[$id]['isAlive']; $teams[$info[$id]['team']][$info[$id]['name']]['name'] = $info[$id]['name']; if ($info[$id]['name'] == $gk_data['playerName']) { $team_id = $info[$id]['team']; } } } unset($handle); foreach ($teams[$team_id] as $name => $value) { $eb = $gk_data2['arenaCreateTime'] + $gk_data2['lifeTime'] + $gk_time[$value['vehicleType']] / $reduce * 60 * 60; if (!$value['isAlive'] and in_array($name, $res)) { gk_insert_tanks($value, $eb, $db); // запись в бд } } } unset($gk_data); unset($gk_data2); if ($show_table and isset($teams[$team_id])) { $r['error'] = $file_error; $r['team'] = $teams[$team_id]; $r['time'] = $battle_time + 15 * 60; $r['reduce'] = $reducer; return $r; } if (!$file_error) { return 0; } else { $r['error'] = $file_error; return $r; } }