コード例 #1
0
ファイル: gk.php プロジェクト: user0101010/MSFC
                 $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;
コード例 #2
0
ファイル: func_gk.php プロジェクト: user0101010/MSFC
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;
    }
}