Файл: sys/function.php
Строк: 284
<?php
// -------------- Функция удачного сообщения -------------//
function msg($var)
{
echo '<div class="msg">' . $var . '</div>';
}
// -------------- Функция сообщения об ошибке -------------//
function err($var)
{
echo '<div class="err">' . $var . '</div>';
}
// -------------- Функция генерации пароля -------------//
function genPass($size)
{
$letter = 'qwertyuipasdfghjklzxcvbnm';
$letter .= strtoupper($letter);
$letter .= '123456789';
mt_srand((double)microtime()*1000000);
$pass = "";
for ($i = 0; $i < $size; $i++)
$pass .= $letter[mt_rand(0, strlen($letter) - 1)];
return $pass;
}
// -------------- Функция вычисления передвижения -------------//
function travel_time($speed, $x1, $y1, $x2, $y2)
{
$a6 = ($x2 - $x1) * ($x2 - $x1);
$b6 = ($y2 - $y1) * ($y2 - $y1);
$c6 = $a6 + $b6;
$distance = sqrt($c6);
$arrival = ($distance / $speed) * 3600;
$arrival = explode('.', $arrival);
return $arrival[0];
}
// -------------- Функция вычисления названия зданий -------------//
function builds($var)
{
$Construct = mysql_fetch_assoc(mysql_query("SELECT cid FROM construct WHERE cid = '$var' LIMIT 1"));
switch($Construct['cid']):
case 1:
$name = '<img src="images/building_group_1_small.png" alt=""/> Ферма';
break;
case 2:
$name = '<img src="images/building_group_2_small.png" alt=""/> Шахта';
break;
case 3:
$name = '<img src="images/building_group_3_small.png" alt=""/> Лесопилка';
break;
case 4:
$name = '<img src="images/building_group_4_small.png" alt=""/> Каменоломня';
break;
case 5:
$name = '<img src="images/building_group_5_small.png" alt=""/> Прииск';
break;
case 6:
$name = '<img src="images/building_group_6_small.png" alt=""/> Казарма';
break;
case 7:
$name = '<img src="images/building_group_7_small.png" alt=""/> Торговая палата';
break;
case 8:
$name = '<img src="images/building_group_8_small.png" alt=""/> Склад';
break;
case 9:
$name = '<img src="images/building_group_9_small.png" alt=""/> Рынок';
break;
case 10:
$name = '<img src="images/building_group_10_small.png" alt=""/> Кузница';
break;
case 11:
$name = '<img src="images/building_group_11_small.png" alt=""/> Дипломатический центр';
break;
case 12:
$name = '<img src="images/building_group_12_small.png" alt=""/> Цитадель';
break;
case 13:
$name = '<img src="images/building_group_13_small.png" alt=""/> Бастион';
break;
case 14:
$name = '<img src="images/building_group_14_small.png" alt=""/> Смотровая башня';
break;
endswitch;
return $name;
}
//------------- Функция вычисления макс. параметров -------------//
function compute_params($var, $v)
{
// $v == 1 сколько опыта осталось
// $v == 0 сколько опыта всего
$SQL = mysql_fetch_assoc(mysql_query("SELECT level, practice FROM generals WHERE id = '$var' LIMIT 1"));
$UP = (50 * $SQL['level'] + 50);
if ($v == 1) $r = ($UP - $SQL['practice']);
elseif ($v == 0) $r = (50 * $SQL['level'] + 50);
return $r;
}
//------------- Функция графической полосы -------------//
function rating($var, $v)
{
$only = compute_params($var, 0); // всего
$remaining = compute_params($var, 1); // осталось
// $v = набрано
$ratimg = 'red.gif';
$percent = round($v * 100 / $only);
return '<img src="/images/' . $ratimg . '" width="' . $percent . '" height="7" alt=""/><img src="/images/green.gif" width="' . (100 - $percent) . '" height="7" alt=""/><small>' . $percent . '%</small>';
}
// -------------- Функция параметров улучшеных юнита -------------//
function paramUnit($uid, $player, $var)
{
$ItIsSql = mysql_fetch_assoc(mysql_query("SELECT id, power, defence FROM upgraded_units WHERE player = '$player' AND uid = '$uid' LIMIT 1"));
if ($var == 1)
{
if (!isset($ItIsSql['id']) && $uid == 1) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['power'];
if (!isset($ItIsSql['id']) && $uid == 2) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['power'];
if (!isset($ItIsSql['id']) && $uid == 3) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['power'];
if (!isset($ItIsSql['id']) && $uid == 4) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['power'];
if (!isset($ItIsSql['id']) && $uid == 5) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['power'];
return $return;
}
if ($var == 2)
{
if (!isset($ItIsSql['id']) && $uid == 1) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['defence'];
if (!isset($ItIsSql['id']) && $uid == 2) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['defence'];
if (!isset($ItIsSql['id']) && $uid == 3) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['defence'];
if (!isset($ItIsSql['id']) && $uid == 4) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['defence'];
if (!isset($ItIsSql['id']) && $uid == 5) $return = 0;
elseif (isset($ItIsSql['id'])) $return = $ItIsSql['defence'];
return $return;
}
}
// -------------- Функция вычисления времени передвижения -------------//
function val($sec)
{
if ($sec < 0)
{
$travel = '0:00:00';
}
else
{
$do = explode('.', $sec / 3600);
$second = round($sec - $do[0] * 3600);
$e = explode('.', $second / 60);
$Q = round($second - $e[0] * 60);
$e = $e[0];
if ($do[0] != 0) $hour .= $do[0] . ' ч. ';
if ($e != 0) $mins .= $e . ' мин. ';
$travel = $hour . $mins . $Q . ' сек.';
}
return $travel;
}
// -------------- Функция конвертации краткого времени -------------//
function conv($var)
{
if ($var > 60) $print .= round($var / 60) . ' мин. ';
else $print .= $var . ' сек. ';
return $print;
}
//-------------Функция текстовой каптчи-------------//
function captcha($var)
{
$var = strtr($var, array(0 => 'ноль ',
1 => 'один ',
2 => 'два ',
3 => 'три ',
4 => 'четыре ',
5 => 'пять ',
6 => 'шесть ',
7 => 'семь ',
8 => 'восемь ',
9 => 'девять '));
return $var;
}
//-------------функция игнора-------------//
function ignor($f1 = NULL, $f2 = NULL, $w = NULL)
{
if (isset($f1)) $f1 = char($f1, 0);
if (isset($f2)) $f2 = char($f2, 0);
if (isset($w)) $w = char($w, 0);
$f = mysql_fetch_assoc(mysql_query("SELECT id FROM `ignor` WHERE `user_id` = '$f1' AND `ig_id` = '$f2'"));
if ($w == NULL) {
if ($f1 != $f2) {
if (isset($f['id'])) return 1;
else return 0;
} else {
return 0;
}
} else {
if (isset($f['id'])) return $f[$w];
}
}
// -------------- Функция форматирования времени -------------//
function itime($time, $zm)
{
$time = $time + $zm * 3600;
$time__ = date('j n Y', $time);
if ($time__ == date('j n Y', time() + $zm * 3600))
return 'Сегодня в ' . date('H:i', $time);
elseif ($time__ == date('j n Y', time() - 3600 * (24 - $zm)))
return 'Вчера в ' . date('H:i', $time);
else
return strtr(date('j M Y в H:i', $time), array('Jan' => 'Янв', 'Feb' => 'Фев', 'Mar' => 'Мар', 'Apr' => 'Апр', 'May' => 'Мая', 'Jun' => 'Июн', 'Jul' => 'Июл', 'Aug' => 'Авг', 'Sep' => 'Сен', 'Oct' => 'Окт', 'Nov' => 'Ноя', 'Dec' => 'Дек'));
}
//------------------ Функция вывода и замены смайлов --------------------//
function smiles($text, $root = NULL)
{
$root = ($root == 1) ? '../' : '';
$dir = opendir($root . 'smiles');
while($file = readdir($dir))
{
if (strpos($file, '.gif') != false)
{
$file = str_replace('.gif', '', $file);
$text = str_replace(':'.$file.':', '<img src="'.$root.'smiles/'.$file.'.gif" alt="'.$file.'"/>', $text);
}
}
closedir($dir);
return $text;
}
//------------------ Функция определения реального IP --------------------//
require 'classIP.php';
$ipinit = new ipinit();
$ipl = $ipinit->ip;
$ipp = long2ip($ipl);
unset($ipinit);
//------------------ Функция определения реального браузера --------------------//
if (empty($_SESSION['user_brow'])) {
if (isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'])) {
$agent = $_SERVER['HTTP_X_OPERAMINI_PHONE_UA'];
} elseif (isset($_SERVER['HTTP_USER_AGENT'])) {
$agent = $_SERVER['HTTP_USER_AGENT'];
} else {
$agent = 'Not_detected';
}
$agent = preg_replace('|http://|i','', $agent);
$agent = strtok($agent,'( ');
$_SESSION['user_brow'] = substr($agent, 0, 22);
}
$agent = char($_SESSION['user_brow'], 0);
//-------------Функция правильного вычитания-------------//
function minus($all, $minus)
{
$all -= $minus;
if (0 > $all) $all = 0;
return $all;
}
//-------------Функция правильного добавления-------------//
function plus($all, $plus, $num)
{
$all += $plus;
if ($num < $all) $all = $num;
return $all;
}
//-------------Функция бана-------------//
function ban($t)
{
$t2 = minus($t, time());
if (empty($t2)) $t3 = 'Время вышло';
elseif ($t2 > (60 * 60 * 24 * 30)) $t3 = round($t2 / (60 * 60 * 24 * 30)) . ' мес.';
elseif ($t2 > (60 * 60 * 24)) $t3 = round($t2 / (60 * 60 * 24)) . ' дн.';
elseif ($t2 > (60 * 60)) $t3 = round($t2 / (60 * 60)) . ' час.';
elseif ($t2 > 60) $t3 = round($t2 / 60) . ' мин.';
else $t3 = $t2 . ' сек.';
return $t3;
}
//-------------функции склонения чисел-------------//
function plural($n, $form1, $form2, $form5)
{
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}
//-------------функции онлайна юзера-------------//
function online_user($ius)
{
if (isset($ius)) $ius = intval($ius);
$result = mysql_query("SELECT `id`, `onl` FROM `users` WHERE `id` = '$ius' LIMIT 1");
$nik = mysql_fetch_assoc($result);
if (!empty($nik['id']) && $nik['onl'] + 300 > time())
{
return $ius;
}
}
//------------функция фильтра цифр-------------//
function number($var)
{
return abs((int)$var);
}
//------------функция транслита-------------//
function translit($str)
{
$translate = array
(
'YO' => 'Ё', 'Yo' => 'Ё', 'yo' => 'ё', 'ZH' => 'Ж',
'Zh' => 'Ж', 'zh' => 'ж', 'CH' => 'Ч', 'Ch' => 'Ч',
'ch' => 'ч', 'SH' => 'Ш', 'Sh' => 'Ш', 'sh' => 'ш',
'SHC' => 'Щ', 'Shc' => 'Щ', 'shc' => 'щ', 'QQ' => 'Ъ',
'qq' => 'ъ', 'YE' => 'Э', 'Ye' => 'Э', 'ye' => 'э',
'YU' => 'Ю', 'Yu' => 'Ю', 'yu' => 'ю', 'YA' => 'Я',
'Ya' => 'Я', 'ya' => 'я', 'YI' => 'Ы', 'Yi' => 'Ы',
'yi' => 'ы', 'A' => 'А', 'a' => 'а', 'B' => 'Б',
'b' => 'б', 'C' => 'Ц', 'c' => 'ц', 'D' => 'Д',
'd' => 'д', 'E' => 'Е', 'e' => 'е', 'F' => 'Ф',
'f' => 'ф', 'G' => 'Г', 'g' => 'г', 'H' => 'Х',
'h' => 'х', 'X' => 'Х', 'x' => 'х', 'I' => 'И',
'i' => 'и', 'K' => 'К', 'k' => 'к', 'L' => 'Л',
'l' => 'л', 'M' => 'М', 'm' => 'м', 'N' => 'Н',
'n' => 'н', 'O' => 'О', 'o' => 'о', 'P' => 'П',
'p' => 'п', 'Q' => 'Ь', 'q' => 'ь', 'R' => 'Р',
'r' => 'р', 'S' => 'С', 's' => 'с', 'T' => 'Т',
't' => 'т', 'U' => 'У', 'u' => 'у', 'V' => 'В',
'v' => 'в', 'W' => 'Ш', 'w' => 'ш', 'J' => 'Й',
'j' => 'й', 'Z' => 'З', 'z' => 'з'
);
preg_match_all('/#([^[]+)#/U', $str, $a);
$str = strtr($str, $translate);
preg_match_all('/#([^[]+)#/U', $str, $b);
$str = str_replace(array_values($b[0]), array_values($a[1]), $str);
return $str;
}
//-------------функция инфы о юзере-------------//
function user($ref, $w = NULL)
{
if (!ctype_digit($ref))
{
$ref = char($ref, 0);
$result = mysql_query("SELECT * FROM `users` WHERE `nick` = '$ref' LIMIT 1");
}
else
{
$ref = number($ref);
$result = mysql_query("SELECT * FROM `users` WHERE `id` = '$ref' LIMIT 1");
}
$nik = mysql_fetch_array($result);
if (isset($w)) return $nik[$w];
else return $nik['id'];
}
//-------------функция форматирования времени-------------//
function timeAgo($timestamp, $granularity = 2, $format = 'Y-m-d H:i:s')
{
$difference = time() - $timestamp;
if ($difference < 0) return 'только что';
elseif ($difference < 864000)
{
$periods = array('нед.' => 604800, 'дн.' => 86400, 'ч.' => 3600, 'мин.' => 60, 'сек.' => 1);
$output = '';
foreach($periods as $key => $value)
{
if ($difference >= $value)
{
$time = round($difference / $value);
$difference %= $value;
$output .= ($output ? ' ' : '') . $time . ' ';
$output .= (($time > 1 && $key == 'дн.') ? $key . 'сек.' : $key);
$granularity--;
}
if ($granularity == 0) break;
}
return ($output ? $output : 'только что');
}
else return date($format, $timestamp);
}
//-------------функция записи онлайна-------------//
function visit($room)
{
global $user, $ipl, $agent;
if (!empty($_SESSION['us']))
{
$agent = char($agent, 0);
mysql_query("UPDATE `users` SET
`onl` = '" . time() . "',
`visit` = '" . date('d-m-y в H:i') . "',
`ip` = '$ipl',
`soft` = '$agent',
`where` = '$room'
WHERE `id` = '$user[id]' LIMIT 1");
}
}
//-------------функция экранирования и замены спецсимволов-------------//
function char($message, $n)
{
$message = preg_replace("/(rn)+(rn)/i", "rnrn", $message);
$message = nl2br(htmlspecialchars($message, ENT_QUOTES, 'UTF-8'));
$message = iconv('utf-8', 'windows-1251', $message);
$message = iconv('windows-1251', 'utf-8', $message);
$message = preg_replace('#(.|?|!|s){3,}#', '111', $message);
$message = ($n == true) ? addcslashes($message, '_%') : $message;
return $message;
}
?>