Compare commits
57 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5518b335a8 | |||
| 95604fc4b1 | |||
| 5df2447d34 | |||
| 328e7483cd | |||
| 3f579afaed | |||
| bae941e155 | |||
| 037d43857d | |||
| 739caee04b | |||
| 35c0b6825f | |||
| 45fc2f51b4 | |||
| 9ec0f42e17 | |||
| d9ec810f7f | |||
| 89469b919f | |||
| d0fb296691 | |||
| e8252b8d4d | |||
| c647600141 | |||
| 68fe6ec13e | |||
| b483b79df5 | |||
| 557921edfa | |||
| f3bee1c3ac | |||
| 84c0847178 | |||
| a1aca77a35 | |||
| f1d838fcc4 | |||
| 83fcf92ba0 | |||
| ef7a874772 | |||
| 80117d69a4 | |||
| 93177f70b4 | |||
| 220d965c01 | |||
| 23a2de0d17 | |||
| e3915d2495 | |||
| c071d2d293 | |||
| 2947b59172 | |||
| c3b46c30b2 | |||
| 7b822fe884 | |||
| bbb35c19f9 | |||
| 2590d62f1f | |||
| f913d8e4a3 | |||
| b3810d2349 | |||
| 008f36c094 | |||
| 90b9c8325e | |||
| 71b759232c | |||
| 6794284497 | |||
| d8063d8900 | |||
| 3f3de15fa2 | |||
| 01b64fdebe | |||
| 4f9bfb9e6b | |||
| 71b3a1c946 | |||
| d5bafe4e77 | |||
| 9e45f170c7 | |||
| e9ec7eb2f2 | |||
| 7a5dfd22a7 | |||
| cf51f4d996 | |||
| a0efddefc5 | |||
| 2f6517f5b3 | |||
| 73d69cb0ae | |||
| a53eab9795 | |||
| 924be6329b |
@@ -1,12 +1,4 @@
|
|||||||
DefaultLanguage ru
|
DefaultLanguage ru
|
||||||
AddDefaultCharset windows-1251
|
|
||||||
<IfModule mod_php5.c>
|
|
||||||
php_value session.use_trans_sid 0
|
|
||||||
php_value register_globals 1
|
|
||||||
<Directory "/usr/local/bin/php">
|
|
||||||
php_admin_value open_basedir none
|
|
||||||
</Directory>
|
|
||||||
</IfModule>
|
|
||||||
|
|
||||||
<IfModule mod_rewrite.c>
|
<IfModule mod_rewrite.c>
|
||||||
#Options +FollowSymLinks -MultiViews
|
#Options +FollowSymLinks -MultiViews
|
||||||
@@ -24,15 +16,6 @@ RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
|
|||||||
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
|
RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$
|
||||||
RewriteRule (.+) https://new-combats.com/proxy/
|
RewriteRule (.+) https://new-combats.com/proxy/
|
||||||
|
|
||||||
#RewriteCond %{HTTP_HOST} ^new-combats\.ru [NC]
|
|
||||||
#RewriteCond %{SERVER_PORT} 80
|
|
||||||
#RewriteRule ^(.*)$ https://new-combats.com/$1 [R,L]
|
|
||||||
|
|
||||||
#RewriteCond %{HTTP_HOST} ^demonscity\.ru [NC]
|
|
||||||
#RewriteCond %{SERVER_PORT} 80
|
|
||||||
#RewriteRule ^(.*)$ https://new-combats.com/$1 [R,L]
|
|
||||||
|
|
||||||
#RewriteCond %{HTTP_HOST} ^new-combats\.com [NC]
|
|
||||||
RewriteCond %{SERVER_PORT} 80
|
RewriteCond %{SERVER_PORT} 80
|
||||||
RewriteRule ^(.*)$ https://new-combats.com/$1 [R,L]
|
RewriteRule ^(.*)$ https://new-combats.com/$1 [R,L]
|
||||||
|
|
||||||
@@ -59,9 +42,6 @@ RewriteRule ^rating_pers/(.*)/?$ /reting_pers.php?$1 [L]
|
|||||||
RewriteRule ^rating_clans/?$ /reting_clans.php [L]
|
RewriteRule ^rating_clans/?$ /reting_clans.php [L]
|
||||||
RewriteRule ^rating_clans/(.*)/?$ /reting_clans.php?$1 [L]
|
RewriteRule ^rating_clans/(.*)/?$ /reting_clans.php?$1 [L]
|
||||||
|
|
||||||
#RewriteRule ^support/(.*)/?$ /support/index.php?$1 [L]
|
|
||||||
#RewriteRule ^support/?$ /support/index.php [L]
|
|
||||||
|
|
||||||
RewriteRule ^clan/(.*)/?$ /clans_inf.php?$1 [L]
|
RewriteRule ^clan/(.*)/?$ /clans_inf.php?$1 [L]
|
||||||
RewriteRule ^clan/?$ /clans_inf.php [L]
|
RewriteRule ^clan/?$ /clans_inf.php [L]
|
||||||
|
|
||||||
@@ -70,18 +50,12 @@ RewriteRule ^ruins/?$ /ruins.php [L]
|
|||||||
|
|
||||||
RewriteRule ^exp/(.*)/?$ /exp.php?$1 [L]
|
RewriteRule ^exp/(.*)/?$ /exp.php?$1 [L]
|
||||||
RewriteRule ^exp/?$ /exp.php [L]
|
RewriteRule ^exp/?$ /exp.php [L]
|
||||||
#
|
|
||||||
#
|
|
||||||
RewriteRule ^news/(.*)/?$ /n/$1 [R=301,L]
|
RewriteRule ^news/(.*)/?$ /n/$1 [R=301,L]
|
||||||
RewriteRule ^news/?$ /n [R=301,L]
|
RewriteRule ^news/?$ /n [R=301,L]
|
||||||
|
|
||||||
RewriteRule ^n/(.*)/?$ /news_script/index.php?$1 [L]
|
RewriteRule ^n/(.*)/?$ /news_script/index.php?$1 [L]
|
||||||
RewriteRule ^n/?$ /news_script/index.php [L]
|
RewriteRule ^n/?$ /news_script/index.php [L]
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
#RewriteRule ^news/(.*)/?$ /news_script/index.php?$1 [L]
|
|
||||||
#RewriteRule ^news/?$ /news_script/index.php [L]
|
|
||||||
|
|
||||||
RewriteRule ^forum/(.*)/?$ /forum_script/index.php?$1 [L]
|
RewriteRule ^forum/(.*)/?$ /forum_script/index.php?$1 [L]
|
||||||
RewriteRule ^forum/?$ /forum_script/index.php [L]
|
RewriteRule ^forum/?$ /forum_script/index.php [L]
|
||||||
@@ -101,10 +75,7 @@ RewriteRule ^rating/?$ /rating_script/index.php [L]
|
|||||||
RewriteRule ^item/(.*)/?$ /items_info.php?$1 [L]
|
RewriteRule ^item/(.*)/?$ /items_info.php?$1 [L]
|
||||||
RewriteRule ^item/?$ /items_info.php [L]
|
RewriteRule ^item/?$ /items_info.php [L]
|
||||||
RewriteRule ^repass/?$ /repass.php [L]
|
RewriteRule ^repass/?$ /repass.php [L]
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
RewriteRule ^mail/(.*)/?$ /mailconf.php?$1 [L]
|
RewriteRule ^mail/(.*)/?$ /mailconf.php?$1 [L]
|
||||||
|
|
||||||
RewriteRule ^register/?$ /register.php [L]
|
RewriteRule ^register/?$ /register.php [L]
|
||||||
@@ -126,4 +97,3 @@ RewriteRule . /index.php [L]
|
|||||||
|
|
||||||
Order Allow,Deny
|
Order Allow,Deny
|
||||||
Allow from all
|
Allow from all
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,24 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||||
<title>404</title>
|
<title>404</title>
|
||||||
<style>
|
<style>
|
||||||
body{
|
body {
|
||||||
background-color:#444;
|
background-color: #444;
|
||||||
font-size:14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
h3{
|
|
||||||
font-size:60px;
|
h3 {
|
||||||
color:#eee;
|
font-size: 60px;
|
||||||
text-align:center;
|
color: #eee;
|
||||||
padding-top:30px;
|
text-align: center;
|
||||||
font-weight:normal;
|
padding-top: 30px;
|
||||||
}
|
font-weight: normal;
|
||||||
</style>
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
ßäðî äëÿ îáðàáîòêè äàííûõ.
|
Ядро для обработки данных.
|
||||||
Îáðàáîòêà ïîåäèíêîâ, îáðàáîòêà çàÿâîê, îáðàáîòêà áîòîâ, îáðàáîòêà ïåùåð, îáðàáîòêà òóðíèðîâ, îáðàáîòêà âðåìåííûõ ãåíåðàöèé
|
Обработка поединков, обработка заявок, обработка ботов, обработка пещер, обработка турниров, обработка временных генераций
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (isset($_GET['m1'])) {
|
if (isset($_GET['m1'])) {
|
||||||
define('GAME', true);
|
define('GAME', true);
|
||||||
|
|
||||||
setlocale(LC_CTYPE, "ru_RU.CP1251");
|
|
||||||
|
|
||||||
include_once '_incl_data/__config.php';
|
include_once '_incl_data/__config.php';
|
||||||
include_once '_incl_data/class/__db_connect.php';
|
include_once '_incl_data/class/__db_connect.php';
|
||||||
@@ -22,13 +22,13 @@ if (isset($_GET['m1'])) {
|
|||||||
} elseif (isset($_GET['bk1'])) {
|
} elseif (isset($_GET['bk1'])) {
|
||||||
define('GAME', true);
|
define('GAME', true);
|
||||||
|
|
||||||
setlocale(LC_CTYPE, "ru_RU.CP1251");
|
|
||||||
|
|
||||||
include('_incl_data/__config.php');
|
include('_incl_data/__config.php');
|
||||||
include('_incl_data/class/__db_connect.php');
|
include('_incl_data/class/__db_connect.php');
|
||||||
$u = User::start();
|
$u = User::start();
|
||||||
|
|
||||||
$ins = 'Âåùè ÁÊ-1:<hr>';
|
$ins = 'Вещи БК-1:<hr>';
|
||||||
$sp = mysql_query('SELECT * FROM `items_main` WHERE `geni` = 1');
|
$sp = mysql_query('SELECT * FROM `items_main` WHERE `geni` = 1');
|
||||||
while ($pl = mysql_fetch_array($sp)) {
|
while ($pl = mysql_fetch_array($sp)) {
|
||||||
|
|
||||||
@@ -141,20 +141,15 @@ if (isset($_GET['test'])) {
|
|||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
function getIP()
|
if (!isset($_GET['robot']) && UserIp::get() != $_SERVER['SERVER_ADDR'] && UserIp::get() != '127.0.0.1' && UserIp::get(
|
||||||
{
|
) != '' && UserIp::get() != '31.131.116.166') {
|
||||||
return isset($_SERVER['HTTP_X_REAL_IP']) ? $_SERVER['HTTP_X_REAL_IP'] : $_SERVER['REMOTE_ADDR'];
|
die(UserIp::get() . '<br>' . $_SERVER['SERVER_ADDR']);
|
||||||
}
|
|
||||||
|
|
||||||
if (!isset($_GET['robot']) && getIP() != $_SERVER['SERVER_ADDR'] && getIP() != '127.0.0.1' && getIP() != '' && getIP(
|
|
||||||
) != '31.131.116.166' && !isset($_GET['test'])) {
|
|
||||||
die(getIP() . '<br>' . $_SERVER['SERVER_ADDR']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const GAME = true;
|
const GAME = true;
|
||||||
|
|
||||||
setlocale(LC_CTYPE, "ru_RU.CP1251");
|
|
||||||
|
|
||||||
include('_incl_data/__config.php');
|
include('_incl_data/__config.php');
|
||||||
include('_incl_data/class/__db_connect.php');
|
include('_incl_data/class/__db_connect.php');
|
||||||
@@ -189,14 +184,14 @@ while ($pl = mysql_fetch_array($sp)) {
|
|||||||
if ($pl['timereg'] == 0) {
|
if ($pl['timereg'] == 0) {
|
||||||
mysql_query('UPDATE `users` SET `timereg` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `timereg` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
||||||
} else {
|
} else {
|
||||||
mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
User::setOnline($pl['id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($pl['bot'] == 0) {
|
if ($pl['bot'] == 0) {
|
||||||
mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
|
|
||||||
mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
User::setOnline($pl['id']);
|
||||||
|
|
||||||
BotLogic::start($pl['id']);
|
BotLogic::start($pl['id']);
|
||||||
|
|
||||||
@@ -209,19 +204,19 @@ while ($pl = mysql_fetch_array($sp)) {
|
|||||||
if ($pl['timereg'] == 0) {
|
if ($pl['timereg'] == 0) {
|
||||||
mysql_query('UPDATE `users` SET `timereg` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `timereg` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
||||||
} else {
|
} else {
|
||||||
mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
User::setOnline($pl['id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($pl['bot'] == 0) {
|
if ($pl['bot'] == 0) {
|
||||||
mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `bot` = "2" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
mysql_query('UPDATE `stats` SET `nextAct` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `nextAct` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
||||||
mysql_query('UPDATE `users` SET `online` = "' . time() . '" WHERE `id` = "' . $pl['id'] . '" LIMIT 1');
|
User::setOnline($pl['id']);
|
||||||
|
|
||||||
echo '*';
|
echo '*';
|
||||||
}
|
}
|
||||||
echo '+';
|
echo '+';
|
||||||
echo '[' . $pl['login'] . '] -> Äåéñòâèå: ' . $pl['ipreg'] . ' , îæèäàåì: ' . ($pl['timeMain'] - time(
|
echo '[' . $pl['login'] . '] -> Действие: ' . $pl['ipreg'] . ' , ожидаем: ' . ($pl['timeMain'] - time(
|
||||||
)) . ' ñåê., çàÿâêà: ' . $pl['zv'] . ', ïîåäèíîê: ' . $pl['battle'] . '';
|
)) . ' сек., заявка: ' . $pl['zv'] . ', поединок: ' . $pl['battle'] . '';
|
||||||
echo '<hr>';
|
echo '<hr>';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
deny from all
|
deny from all
|
||||||
|
|||||||
+18
-72
@@ -1,85 +1,24 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Core\Config;
|
||||||
|
use Insallah\Tournaments\Tournament;
|
||||||
|
|
||||||
error_reporting(E_ALL ^ E_NOTICE);
|
error_reporting(E_ALL ^ E_NOTICE);
|
||||||
ini_set('display_errors', 'Off');
|
ini_set('display_errors', 'Off');
|
||||||
setlocale(LC_CTYPE, "ru_RU.CP1251");
|
|
||||||
date_default_timezone_set('Europe/Moscow');
|
date_default_timezone_set('Europe/Moscow');
|
||||||
|
|
||||||
$c = [
|
header('Cache-Control: no-cache, no-store, must-revalidate');
|
||||||
'ver' => '1.8.3.7',
|
header('Pragma: no-cache');
|
||||||
];
|
header('Expires: 0');
|
||||||
/* Конфигурации игры */
|
|
||||||
$c['name'] = 'Бойцовский Клуб';
|
|
||||||
$c['title'] = '«' . $c['name'] . '» - Бесплатная,браузерная онлайн игра'; //Название игры
|
|
||||||
$c['title2'] = ' - Бесплатная, онлайн игра посвященная сражениям и магии!';
|
|
||||||
$c['title3'] = $c['name'];
|
|
||||||
$c['keys'] = $c['name'] . ', combats.com, ' . $c['name'] . ' игра, ' . $c['name'] . ' играть, игра ' . $c['name'] . ', старый ' . $c['name'] . ', ' . $c['name'] . ' онлайн игра, ' . $c['name'] . ' браузерная игра, играть в ' . $c['name'] . ', игра бк, бк игра, старый бк, играть в бк, бк онлайн игра, новый бк, Легендарный ' . $c['name'] . ', легендарный бк, combats, комбатс, combats ru, combats com, OldBK, oldbk ru, oldbk com, олдбк, old bk, олд бк, mycombats, rebk, recombats, oldcombats, obk2'; //Ключевые слова META
|
|
||||||
$c['desc'] = '«' . $c['name'] . '» – это бесплатная увлекательная браузерная онлайн игра 2004-2009г, в которой сконцентрировано все самое лучшее от современных онлайн игр. В этой браузерной игре заложены самые интересные традиции всем известной онлайн игры под названием «' . $c['name'] . ' 2004-2009», которая, кстати, стала первооткрывателем всех браузерных игр.'; //Описание META
|
|
||||||
|
|
||||||
//Сервера
|
require_once 'mysql_override.php';
|
||||||
$c['host'] = 'new-combats.com';
|
|
||||||
$c['forum'] = 'forum.' . $c['host'];
|
|
||||||
$c['img'] = 'img' . $c['host'];
|
|
||||||
$c['thiscity'] = 'capitalcity';
|
|
||||||
$c['capitalcity'] = $c['host'];
|
|
||||||
$c['abandonedplain'] = $c['host'];
|
|
||||||
$c['exit'] = '<script>top.location="https://' . $c['host'] . '/";</script><noscript><meta http-equiv="refresh" content="0; URL=https://' . $c['host'] . '/"></noscript>';
|
|
||||||
|
|
||||||
//Валюта
|
// Для всех доработок, пока нет автозагрузки классов.
|
||||||
$c['curency_name'] = 'RUB';
|
|
||||||
$c['curency_value'] = 36;
|
|
||||||
|
|
||||||
//Бот клон
|
|
||||||
$c['bot_level'] = 0; // до какого лвл бот (включительно)
|
|
||||||
$c['propsk_die'] = 0; //Смерть при пропуске ходов, 0 - выкл. , >= 1 - количество пропусков до смерти при нападении
|
|
||||||
|
|
||||||
//Скупка
|
|
||||||
$c['exp'] = 0; //бонус опыта
|
|
||||||
$c['shop_type1'] = 100; //в гос НЕ ТРОГАТЬ
|
|
||||||
$c['shop_type2'] = 90; //в березку НЕ ТРОГАТЬ
|
|
||||||
$c['shop_all'] = 0; //Скупка на все! , 0 - сделать для отключения скупки.
|
|
||||||
$c['shop_all_type1'] = 100; //Скупка только с госе! , 0 - сделать для отключения скупки.
|
|
||||||
$c['shop_all_type2'] = 100; //Скупка только с березки! , 0 - сделать для отключения скупки.
|
|
||||||
//
|
|
||||||
$c['nosanich'] = true; //Странички Саныча не выпадают - true , выпадают - false
|
|
||||||
$c['zuby'] = false; //зубы
|
|
||||||
$c['limitedexp'] = false; //лимит опыта
|
|
||||||
$c['infinity5level'] = false; //вечные 5 уровни
|
|
||||||
$c['expstop'] = 2999999; //9; //Опыт на котором останавливаемся 11 149999999
|
|
||||||
$c['expstopu'] = 2999999; //Опыт на котором останавливаемся
|
|
||||||
$c['noobgade'] = false; //нуб квест (пещера)
|
|
||||||
$c['bonusonline'] = true; //бонус за онлайн
|
|
||||||
$c['level_ransfer'] = 8; //С какого уровня разрешены передачи
|
|
||||||
$c['znahar'] = true; //бесплатный знахарь
|
|
||||||
$c['nolevel'] = false; //лимитирование уровней
|
|
||||||
$c['noitembuy'] = false; //Не требует ресурсы для покупки
|
|
||||||
$c['effz'] = 0; //Скольким секундам равен заряд
|
|
||||||
$c['money_haot'] = true; //кр за хаоты
|
|
||||||
$c['crtoecr'] = 500; //Курс обмена кр на екр (если 0, то выключено)
|
|
||||||
$c['ecrtocr'] = 200; //Курс обмена екр на кр
|
|
||||||
$c['bonuslevel'] = true; //Бонус уровня
|
|
||||||
$c['bonussocial'] = false; //Бонус социальный
|
|
||||||
|
|
||||||
$c['w'] = date('w');
|
|
||||||
$c['m'] = date('m');
|
|
||||||
|
|
||||||
$code = '1';
|
|
||||||
$c['counters'] = '';
|
|
||||||
$c['counters_noFrm'] = '';
|
|
||||||
$c['securetime'] = 0; //Время последнего возможного взлома персов (подбор пароля по базам данных других игр)
|
|
||||||
|
|
||||||
$c['copyright'] = 'Copyright © ' . date('Y') . ' « Новый Бойцовский Клуб »';
|
|
||||||
|
|
||||||
if (isset($_GET['version'])) {
|
|
||||||
die('Version: ' . $c['ver']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Для всех доработок, пока нет автозагрузки классов.
|
|
||||||
require_once 'class/Insallah/Config.php';
|
require_once 'class/Insallah/Config.php';
|
||||||
|
|
||||||
// Попробуем в автозагрузку.
|
// Попробуем в автозагрузку.
|
||||||
// Никогда не заработает с такими названиями классов и файлов!
|
// Никогда не заработает с такими названиями классов и файлов!
|
||||||
// "На потом."
|
// "На потом."
|
||||||
spl_autoload_register(function ($className) {
|
spl_autoload_register(function ($className) {
|
||||||
# 1 with namespaces
|
# 1 with namespaces
|
||||||
# 2 without
|
# 2 without
|
||||||
@@ -94,3 +33,10 @@ spl_autoload_register(function ($className) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$code = '1';
|
||||||
|
Config::init();
|
||||||
|
$c = Config::get();
|
||||||
|
|
||||||
|
//Tournament::startAllBattles();
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
const GAME = true; // Для совместимости с этой "защитой".
|
||||||
|
const GAME_VERSION = 'alpha-7.4';
|
||||||
|
// Новая автозагрузка.
|
||||||
|
// ВНИМАНИЕ! Не введено в эксплуатацию!
|
||||||
|
|
||||||
|
require_once 'mysql_override.php';
|
||||||
|
require_once 'class/Insallah/Config.php';
|
||||||
|
|
||||||
|
spl_autoload_register(function (string $className) {
|
||||||
|
# 1 with namespaces
|
||||||
|
# 2 without
|
||||||
|
$fileName = [
|
||||||
|
__DIR__ . '/class/' . str_replace('\\', DIRECTORY_SEPARATOR, $className . '.php'),
|
||||||
|
__DIR__ . '/class/' . $className . '.php'
|
||||||
|
];
|
||||||
|
foreach ($fileName as $file) {
|
||||||
|
if (file_exists($file)) {
|
||||||
|
require_once $file;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
spl_autoload_register(function (string $classname) {
|
||||||
|
$classMap = [
|
||||||
|
'NewCombats' => __DIR__ . '/class/',
|
||||||
|
'Insallah' => __DIR__ . '/class/Insallah/',
|
||||||
|
'DarksLight2' => __DIR__ . '/class/DarksLight2/',
|
||||||
|
];
|
||||||
|
$parts = explode('\\', $classname);
|
||||||
|
$namespace = array_shift($parts);
|
||||||
|
$classFile = array_pop($parts) . '.php';
|
||||||
|
|
||||||
|
if (!array_key_exists($namespace, $classMap)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$path = implode(DIRECTORY_SEPARATOR, $parts);
|
||||||
|
$file = $classMap[$namespace] . $path . DIRECTORY_SEPARATOR . $classFile;
|
||||||
|
|
||||||
|
if (!file_exists($file) && !class_exists($classname)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once $file;
|
||||||
|
});
|
||||||
+4334
-6207
File diff suppressed because it is too large
Load Diff
+112
-114
@@ -21,7 +21,7 @@ class BotLogic
|
|||||||
|
|
||||||
static function battle_priems()
|
static function battle_priems()
|
||||||
{
|
{
|
||||||
//èñïîëüçóåì ïðèåìû â áîþ
|
//используем приемы в бою
|
||||||
if (self::$st['hpNow'] > 0 && self::$bot['battle'] > 0) {
|
if (self::$st['hpNow'] > 0 && self::$bot['battle'] > 0) {
|
||||||
|
|
||||||
$pr = explode('|', self::$bot['priems']);
|
$pr = explode('|', self::$bot['priems']);
|
||||||
@@ -36,7 +36,7 @@ class BotLogic
|
|||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($pr)) {
|
while ($i < count($pr)) {
|
||||||
if ($rz[$i] < 1 && $pr[$i] > 0) {
|
if ($rz[$i] < 1 && $pr[$i] > 0) {
|
||||||
//Ìîæíî èñïîëüçîâàòü ïðèåì, ïîäêëþ÷àåì ëîãèêó
|
//Можно использовать прием, подключаем логику
|
||||||
BotPriemLogic::start($i, $pr[$i]);
|
BotPriemLogic::start($i, $pr[$i]);
|
||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
@@ -48,15 +48,15 @@ class BotLogic
|
|||||||
static function clear_bot()
|
static function clear_bot()
|
||||||
{
|
{
|
||||||
|
|
||||||
//Î÷èñòêà áîòà, îáíóëÿåì åãî äî [0], óäàëÿåì ýôôåêòû, ïðåäìåòû è ò.ä, à òåêóùåìó ñòàâèì ëîãèí delete
|
//Очистка бота, обнуляем его до [0], удаляем эффекты, предметы и т.д, а текущему ставим логин delete
|
||||||
|
|
||||||
//Óäàëÿåì ñîîáùåíèÿ â ÷àòå
|
//Удаляем сообщения в чате
|
||||||
mysql_query('DELETE FROM `chat` WHERE `to` = "' . self::$bot['login'] . '"');
|
mysql_query('DELETE FROM `chat` WHERE `to` = "' . self::$bot['login'] . '"');
|
||||||
//Óäàëÿåì øìîòêè è ýôôåêòû
|
//Удаляем шмотки и эффекты
|
||||||
mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . self::$bot['id'] . '"');
|
mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . self::$bot['id'] . '"');
|
||||||
mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . self::$bot['id'] . '"');
|
mysql_query('DELETE FROM `eff_users` WHERE `uid` = "' . self::$bot['id'] . '"');
|
||||||
|
|
||||||
//Óäàëÿåì ñòàòû è ïîëå â þçåðñ
|
//Удаляем статы и поле в юзерс
|
||||||
mysql_query('DELETE FROM `users` WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('DELETE FROM `users` WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
mysql_query('DELETE FROM `stats` WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('DELETE FROM `stats` WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
mysql_query('DELETE FROM `online` WHERE `uid` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('DELETE FROM `online` WHERE `uid` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
@@ -80,13 +80,13 @@ class BotLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//ÏÐîâåðêà íà ôàéòðóì
|
//ПРоверка на файтрум
|
||||||
static function test_fr($id, $city = 'capitalcity')
|
static function test_fr($id, $city = 'capitalcity')
|
||||||
{
|
{
|
||||||
return $city != 'capitalcity' || $id == 0 || $id == 2 || $id == 4 || $id == 5 || $id == 7 || $id == 377;
|
return $city != 'capitalcity' || $id == 0 || $id == 2 || $id == 4 || $id == 5 || $id == 7 || $id == 377;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Äåéñòâèÿ áîòà âíå áîÿ
|
//Действия бота вне боя
|
||||||
static function actions()
|
static function actions()
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -94,9 +94,9 @@ class BotLogic
|
|||||||
|
|
||||||
if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0 && self::$bot['pass'] == 'saintlucia') {
|
if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0 && self::$bot['pass'] == 'saintlucia') {
|
||||||
|
|
||||||
//Ìîæíî: ñìåíèòü ôóëë, ïåðåéòè â äðóãóþ êîìíàòó, âõîäèòü íàéìîì, äåëàòü áàôû
|
//Можно: сменить фулл, перейти в другую комнату, входить наймом, делать бафы
|
||||||
|
|
||||||
//Ïåðåõîäèì â äðóãóþ êîìíàòó
|
//Переходим в другую комнату
|
||||||
if (true == false && self::$bot['a1'] != 0 && self::$bot['a1'] != self::$bot['room']) {
|
if (true == false && self::$bot['a1'] != 0 && self::$bot['a1'] != self::$bot['room']) {
|
||||||
|
|
||||||
self::_loc(self::$bot['a1']);
|
self::_loc(self::$bot['a1']);
|
||||||
@@ -116,22 +116,22 @@ class BotLogic
|
|||||||
mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `exp` = "3500000" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
|
|
||||||
//Äåéñòâèå â êîìíàòå
|
//Действие в комнате
|
||||||
//Ìàãàçèí
|
//Магазин
|
||||||
//Ïîêóïàåì êðèñòàëë âå÷íîñòè
|
//Покупаем кристалл вечности
|
||||||
if (self::$bot['room'] == 10 && self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) {
|
if (self::$bot['room'] == 10 && self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) {
|
||||||
$cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1'));
|
$cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1'));
|
||||||
if (!isset($cr['id'])) {
|
if (!isset($cr['id'])) {
|
||||||
//Ïîêóïàåì êðèñòàëë
|
//Покупаем кристалл
|
||||||
$u->addItem(1204, self::$bot['id']);
|
$u->addItem(1204, self::$bot['id']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//Ïåðåõîäèì â êîìíàòó äëÿ ñðàæåíèé
|
//Переходим в комнату для сражений
|
||||||
self::_loc(self::_loc_zv());
|
self::_loc(self::_loc_zv());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Åñëè áîò óæå íàáðàë îïûò äëÿ ïåðåõîäà íà 6-îé
|
//Если бот уже набрал опыт для перехода на 6-ой
|
||||||
if (self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) {
|
if (self::$bot['level'] == 5 && self::$bot['exp'] >= 12499) {
|
||||||
$cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1'));
|
$cr = mysql_fetch_array(mysql_query('SELECT `id` FROM `items_users` WHERE `item_id` = "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1'));
|
||||||
if (!isset($cr['id'])) {
|
if (!isset($cr['id'])) {
|
||||||
@@ -139,12 +139,12 @@ class BotLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ïîõîæå ÷òî áîòó ïîðà ñìåíèòü êîìïëåêò ))
|
//Похоже что боту пора сменить комплект ))
|
||||||
if (self::$bot['clss'] == 0) {
|
if (self::$bot['clss'] == 0) {
|
||||||
|
|
||||||
//Âûáèðàåì íîâûé êëàññ è øìîòêè :)
|
//Выбираем новый класс и шмотки :)
|
||||||
|
|
||||||
//Ìåíÿåì êëàññ
|
//Меняем класс
|
||||||
self::$bot['clss'] = rand(1, 4);
|
self::$bot['clss'] = rand(1, 4);
|
||||||
|
|
||||||
$x = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" '));
|
$x = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" '));
|
||||||
@@ -154,7 +154,7 @@ class BotLogic
|
|||||||
if ($x[0] > 1) {
|
if ($x[0] > 1) {
|
||||||
|
|
||||||
$x = rand(1, $x[0]);
|
$x = rand(1, $x[0]);
|
||||||
//âûáèðàåì 1 èç íåñêîëüêèõ
|
//выбираем 1 из нескольких
|
||||||
$da = ['ASC', 'DESC', 'DESC', 'ASC'];
|
$da = ['ASC', 'DESC', 'DESC', 'ASC'];
|
||||||
$da = $da[rand(0, 5)];
|
$da = $da[rand(0, 5)];
|
||||||
$com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" ORDER BY `id` ' . $da . ' LIMIT ' . ($x - 1) . ',1'));
|
$com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" ORDER BY `id` ' . $da . ' LIMIT ' . ($x - 1) . ',1'));
|
||||||
@@ -172,12 +172,12 @@ class BotLogic
|
|||||||
|
|
||||||
mysql_query('UPDATE `users` SET `clss` = "' . self::$bot['clss'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `clss` = "' . self::$bot['clss'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
|
|
||||||
/* Çàáèðàåì ñòàðûå øìîòêè è ýôôåêòû */
|
/* Забираем старые шмотки и эффекты */
|
||||||
mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `gift` = "" AND `item_id` != "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
|
mysql_query('UPDATE `items_users` SET `delete` = "' . time() . '" WHERE `gift` = "" AND `item_id` != "1204" AND `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
|
||||||
mysql_query('UPDATE `items_users` SET `iznosNOW` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
|
mysql_query('UPDATE `items_users` SET `iznosNOW` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
|
||||||
mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
|
mysql_query('UPDATE `eff_users` SET `delete` = "' . time() . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0"');
|
||||||
|
|
||||||
/* Îáíîâëÿåì ñòàòû è ïðèåìû */
|
/* Обновляем статы и приемы */
|
||||||
|
|
||||||
if ($com['pr'] == '') {
|
if ($com['pr'] == '') {
|
||||||
$i = 1;
|
$i = 1;
|
||||||
@@ -193,7 +193,7 @@ class BotLogic
|
|||||||
$i = 1;
|
$i = 1;
|
||||||
while ($i <= 20) {
|
while ($i <= 20) {
|
||||||
if ($com['e' . $i] > 0) {
|
if ($com['e' . $i] > 0) {
|
||||||
//Âûäàåì è íàäåâàåì ïðåäìåò
|
//Выдаем и надеваем предмет
|
||||||
//$it = $u->addItem($com['e'.$i],self::$bot['id']);
|
//$it = $u->addItem($com['e'.$i],self::$bot['id']);
|
||||||
$eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1'));
|
$eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1'));
|
||||||
mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time() + 9640000) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")');
|
mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time() + 9640000) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")');
|
||||||
@@ -204,7 +204,7 @@ class BotLogic
|
|||||||
$i = 1;
|
$i = 1;
|
||||||
while ($i <= 20) {
|
while ($i <= 20) {
|
||||||
if ($com['w' . $i] > 0) {
|
if ($com['w' . $i] > 0) {
|
||||||
//Âûäàåì è íàäåâàåì ïðåäìåò
|
//Выдаем и надеваем предмет
|
||||||
$it = $u->addItem($com['w' . $i], self::$bot['id']);
|
$it = $u->addItem($com['w' . $i], self::$bot['id']);
|
||||||
$eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_shop` WHERE `item_id` = "' . $com['w' . $i] . '" LIMIT 1'));
|
$eff1 = mysql_fetch_array(mysql_query('SELECT * FROM `items_shop` WHERE `item_id` = "' . $com['w' . $i] . '" LIMIT 1'));
|
||||||
if ($it > 0) {
|
if ($it > 0) {
|
||||||
@@ -217,7 +217,7 @@ class BotLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//åñëè áîò óæå 1-ûé óðîâåíü, à ñèäèò â íîâè÷êàõ :) êèäàåì åãî â çàëû
|
//если бот уже 1-ый уровень, а сидит в новичках :) кидаем его в залы
|
||||||
if (self::$bot['city'] == 'capitalcity' && self::$bot['level'] < 2 && self::$bot['room'] == 0 && self::$bot['a1'] == 0) {
|
if (self::$bot['city'] == 'capitalcity' && self::$bot['level'] < 2 && self::$bot['room'] == 0 && self::$bot['a1'] == 0) {
|
||||||
self::_loc(self::_loc_zv());
|
self::_loc(self::_loc_zv());
|
||||||
}
|
}
|
||||||
@@ -226,7 +226,7 @@ class BotLogic
|
|||||||
|
|
||||||
public $bot_last_action = [];
|
public $bot_last_action = [];
|
||||||
|
|
||||||
//Âêëþ÷àåì ëîãèêó áîòà
|
//Включаем логику бота
|
||||||
static function start($id)
|
static function start($id)
|
||||||
{
|
{
|
||||||
if (!isset($bot_last_action[$id])) {
|
if (!isset($bot_last_action[$id])) {
|
||||||
@@ -238,12 +238,12 @@ class BotLogic
|
|||||||
|
|
||||||
self::$st = $u->getStats(self::$bot, 0);
|
self::$st = $u->getStats(self::$bot, 0);
|
||||||
|
|
||||||
//Çàõîäèì áîòîì â îíëàéí
|
//Заходим ботом в онлайн
|
||||||
self::_online();
|
self::_online();
|
||||||
|
|
||||||
if (self::$bot['battle'] > 0) {
|
if (self::$bot['battle'] > 0) {
|
||||||
|
|
||||||
//Äåéñòâèÿ áîòà â ïîåäèíêå
|
//Действия бота в поединке
|
||||||
self::$btl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . mysql_real_escape_string(self::$bot['battle']) . '" AND `team_win` = "-1" LIMIT 1'));
|
self::$btl = mysql_fetch_array(mysql_query('SELECT * FROM `battle` WHERE `id` = "' . mysql_real_escape_string(self::$bot['battle']) . '" AND `team_win` = "-1" LIMIT 1'));
|
||||||
if (isset(self::$btl['id'])) {
|
if (isset(self::$btl['id'])) {
|
||||||
|
|
||||||
@@ -252,16 +252,16 @@ class BotLogic
|
|||||||
|
|
||||||
$a1 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid1` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1'));
|
$a1 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid1` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1'));
|
||||||
|
|
||||||
//Ïðîâåðÿåì âîçìîæíîñòü èñïîëüçîâàíèÿ ïðèåìîâ è äåëàåì ñïèñîê ÷òî èñïîëüçîâàòü
|
//Проверяем возможность использования приемов и делаем список что использовать
|
||||||
//èñïîëüçóåì ïðèåìû
|
//используем приемы
|
||||||
self::battle_priems();
|
self::battle_priems();
|
||||||
|
|
||||||
//Áîò ñäåëàë óäàð, íî íèêòî íå îòâåòèë, ïðîâåðÿåì òàéìàóò è åñëè ÷òî çàõîäèì
|
//Бот сделал удар, но никто не ответил, проверяем таймаут и если что заходим
|
||||||
if (isset($a1['id']) && $a1['time'] + self::$btl['timeout'] < time()) {
|
if (isset($a1['id']) && $a1['time'] + self::$btl['timeout'] < time()) {
|
||||||
$go_bot = true;
|
$go_bot = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//ÒÓÒ test
|
//ТУТ test
|
||||||
$a2 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid2` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1'));
|
$a2 = mysql_fetch_array(mysql_query('SELECT `id`,`uid1`,`uid2`,`time` FROM `battle_act` WHERE `battle` = "' . self::$btl['id'] . '" AND `uid2` = "' . self::$bot['id'] . '" ORDER BY `time` ASC LIMIT 1'));
|
||||||
if (isset($a2['uid1'])) {
|
if (isset($a2['uid1'])) {
|
||||||
mysql_query('UPDATE `stats` SET `enemy` = "' . $a2['uid1'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `enemy` = "' . $a2['uid1'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
@@ -270,41 +270,41 @@ class BotLogic
|
|||||||
if (isset($a3['uid2'])) {
|
if (isset($a3['uid2'])) {
|
||||||
mysql_query('UPDATE `stats` SET `enemy` = "' . $a3['uid2'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `enemy` = "' . $a3['uid2'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
//Ðàçìåí ñ ïðîòèâíèêîì
|
//Размен с противником
|
||||||
|
|
||||||
|
|
||||||
self::$enemy = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . self::$bot['enemy'] . '" LIMIT 1'));
|
self::$enemy = mysql_fetch_array(mysql_query('SELECT * FROM `stats` WHERE `id` = "' . self::$bot['enemy'] . '" LIMIT 1'));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
//Çàõîäèì íà ïåðñîíàæà
|
//Заходим на персонажа
|
||||||
self::inuser_go_btl(self::$bot);
|
self::inuser_go_btl(self::$bot);
|
||||||
|
|
||||||
//Ïîåäèíîê óæå çàâåðøèëñÿ, âûêèäûâàåì èç áîÿ
|
//Поединок уже завершился, выкидываем из боя
|
||||||
self::$bot['battle'] = 0;
|
self::$bot['battle'] = 0;
|
||||||
mysql_query('UPDATE `users` SET `battle` = "' . self::$bot['battle'] . '" WHERE `id` = "' . mysql_real_escape_string(self::$bot['id']) . '" LIMIT 1 ');
|
mysql_query('UPDATE `users` SET `battle` = "' . self::$bot['battle'] . '" WHERE `id` = "' . mysql_real_escape_string(self::$bot['id']) . '" LIMIT 1 ');
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
//Äåéñòâèÿ áîòà âíå ïîåäèíêà
|
//Действия бота вне поединка
|
||||||
if (self::$bot['timeMain'] < time()) {
|
if (self::$bot['timeMain'] < time()) {
|
||||||
|
|
||||||
mysql_query('UPDATE `chat` SET `time` = "' . time() . '" WHERE `to` = "' . self::$bot['login'] . '" AND `time` = "-1"');
|
mysql_query('UPDATE `chat` SET `time` = "' . time() . '" WHERE `to` = "' . self::$bot['login'] . '" AND `time` = "-1"');
|
||||||
|
|
||||||
//Äåéñòâèå âîçìîæíî ïðîèçâåñòè
|
//Действие возможно произвести
|
||||||
if (self::$bot['ipreg'] == 1 || self::$bot['ipreg'] == 2 || self::$bot['ipreg'] == 4) {
|
if (self::$bot['ipreg'] == 1 || self::$bot['ipreg'] == 2 || self::$bot['ipreg'] == 4) {
|
||||||
//Ïðèíèìàåì òîëüêî õàîòû
|
//Принимаем только хаоты
|
||||||
self::$bot['ipreg'] = 3;
|
self::$bot['ipreg'] = 3;
|
||||||
}
|
}
|
||||||
if (self::$bot['ipreg'] == 5) {
|
if (self::$bot['ipreg'] == 5) {
|
||||||
//Ïîäàåì òîëüêî õàîòû
|
//Подаем только хаоты
|
||||||
self::$bot['ipreg'] = 7;
|
self::$bot['ipreg'] = 7;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
if (self::$bot['ipreg'] == 0 || !self::test_fr(self::$bot['room'])) {
|
if (self::$bot['ipreg'] == 0 || !self::test_fr(self::$bot['room'])) {
|
||||||
|
|
||||||
//Îáíîâëÿåì ýôôåêòû
|
//Обновляем эффекты
|
||||||
$com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" LIMIT 1'));
|
$com = mysql_fetch_array(mysql_query('SELECT * FROM `a_bot_tree` WHERE `level` = "' . (self::$bot['level']) . '" LIMIT 1'));
|
||||||
if (isset($com['id'])) {
|
if (isset($com['id'])) {
|
||||||
$eft = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1'));
|
$eft = mysql_fetch_array(mysql_query('SELECT `id` FROM `eff_users` WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" LIMIT 1'));
|
||||||
@@ -313,7 +313,7 @@ class BotLogic
|
|||||||
$i = 1;
|
$i = 1;
|
||||||
while ($i <= 20) {
|
while ($i <= 20) {
|
||||||
if ($com['e' . $i] > 0) {
|
if ($com['e' . $i] > 0) {
|
||||||
//Âûäàåì è íàäåâàåì ïðåäìåò
|
//Выдаем и надеваем предмет
|
||||||
//$it = $u->addItem($com['e'.$i],self::$bot['id']);
|
//$it = $u->addItem($com['e'.$i],self::$bot['id']);
|
||||||
$eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1'));
|
$eff = mysql_fetch_array(mysql_query('SELECT * FROM `eff_main` WHERE `id2` = "' . $com['e' . $i] . '" LIMIT 1'));
|
||||||
mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time() + 86400 * 7) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")');
|
mysql_query('INSERT INTO `eff_users` (`overType`,`id_eff`,`uid`,`name`,`timeUse`,`data`,`no_Ace`) VALUES ("' . $eff['oneType'] . '","' . $eff['id2'] . '","' . self::$bot['id'] . '","' . $eff['mname'] . '","' . (time() + 86400 * 7) . '","' . $eff['mdata'] . '","' . $eff['noAce'] . '")');
|
||||||
@@ -324,25 +324,25 @@ class BotLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (self::$bot['level'] >= 13 && self::$bot['clan'] == 0 && self::$bot['align'] == 0) {
|
if (self::$bot['level'] >= 13 && self::$bot['clan'] == 0 && self::$bot['align'] == 0) {
|
||||||
//îáíóëÿåì áîòà
|
//обнуляем бота
|
||||||
self::clear_bot();
|
self::clear_bot();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Òîëüêî-÷òî èç ïîåäèíêà, õèëÿåòñÿ
|
//Только-что из поединка, хиляется
|
||||||
if (!self::test_fr(self::$bot['room'])) {
|
if (!self::test_fr(self::$bot['room'])) {
|
||||||
|
|
||||||
//Â êàêîé-òî ëîêàöèè, âèäèìî ÷òî-òî äåëàåì
|
//В какой-то локации, видимо что-то делаем
|
||||||
|
|
||||||
} elseif (self::$st['hpNow'] >= self::$st['hpAll']) {
|
} elseif (self::$st['hpNow'] >= self::$st['hpAll']) {
|
||||||
echo 1;
|
echo 1;
|
||||||
//Ïðèñòóïàåì ê àêòèâíîé äåÿòåëüíîñòè :)
|
//Приступаем к активной деятельности :)
|
||||||
mysql_query('UPDATE `stats` SET `zv`= "0",`team`= "0",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `zv`= "0",`team`= "0",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
mysql_query('UPDATE `users` SET `ipreg` = "' . self::new_action() . '",`mod_zvanie` = "Ñòàæåð" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `ipreg` = "' . self::new_action() . '",`mod_zvanie` = "Стажер" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (self::$bot['mod_zvanie'] == 'Ñòàæåð100500') {
|
if (self::$bot['mod_zvanie'] == 'Стажер100500') {
|
||||||
//Íàäåâàåì êîìïëåêò + îáíîâëÿåì ýôôåêòû
|
//Надеваем комплект + обновляем эффекты
|
||||||
mysql_query('UPDATE `eff_users` SET `timeUse` = "' . (time() + 7200) . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" AND `v1` != "priem" LIMIT 12');
|
mysql_query('UPDATE `eff_users` SET `timeUse` = "' . (time() + 7200) . '" WHERE `uid` = "' . self::$bot['id'] . '" AND `delete` = "0" AND `v1` != "priem" LIMIT 12');
|
||||||
mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet` > 0 AND `delete` = "0"');
|
mysql_query('UPDATE `items_users` SET `inOdet` = "0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet` > 0 AND `delete` = "0"');
|
||||||
$sp = mysql_query('SELECT `u`.`id`,`st`.`inslot`,`st`.`2too` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `st` ON `st`.`id` = `u`.`item_id` WHERE `u`.`inOdet` = 0 AND `st`.`inslot` > 0 AND `st`.`inSlot` <= 20');
|
$sp = mysql_query('SELECT `u`.`id`,`st`.`inslot`,`st`.`2too` FROM `items_users` AS `u` LEFT JOIN `items_main` AS `st` ON `st`.`id` = `u`.`item_id` WHERE `u`.`inOdet` = 0 AND `st`.`inslot` > 0 AND `st`.`inSlot` <= 20');
|
||||||
@@ -373,10 +373,10 @@ class BotLogic
|
|||||||
mysql_query('UPDATE `items_users` SET `inOdet` = "' . $od . '" WHERE `id` = "' . $pl['id'] . '" AND `uid` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `items_users` SET `inOdet` = "' . $od . '" WHERE `id` = "' . $pl['id'] . '" AND `uid` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mysql_query('UPDATE `items_users` SET `mod_zvanie` = "Còaæåð" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `items_users` SET `mod_zvanie` = "Cтaжер" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
|
|
||||||
//Õèëÿåìñÿ äàëüøå
|
//Хиляемся дальше
|
||||||
if (self::$bot['regHP'] == 0 || self::$bot['regMP'] == 0) {
|
if (self::$bot['regHP'] == 0 || self::$bot['regMP'] == 0) {
|
||||||
mysql_query('UPDATE `stats` SET `regHP` = "' . time() . '", `regMP` = "' . time() . '",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `regHP` = "' . time() . '", `regMP` = "' . time() . '",`hpNow` = "' . self::$st['hpNow'] . '",`mpNow` = "' . self::$st['mpNow'] . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
@@ -390,10 +390,10 @@ class BotLogic
|
|||||||
|
|
||||||
} elseif (self::$bot['ipreg'] == 1) {
|
} elseif (self::$bot['ipreg'] == 1) {
|
||||||
|
|
||||||
//Ïðèíÿòü çàÿâêó íà áîé (ôèç.)
|
//Принять заявку на бой (физ.)
|
||||||
if (self::$bot['zv'] == 0) {
|
if (self::$bot['zv'] == 0) {
|
||||||
|
|
||||||
//Âûäåëÿåì ïîäõîäÿùóþ çàÿâêó â ôèç. ïîåäèíêå
|
//Выделяем подходящую заявку в физ. поединке
|
||||||
$rz = 2;
|
$rz = 2;
|
||||||
$zv = 0;
|
$zv = 0;
|
||||||
$nozv = 0;
|
$nozv = 0;
|
||||||
@@ -415,13 +415,13 @@ class BotLogic
|
|||||||
|
|
||||||
if ($uz1st['reting'] <= floor(self::$st['reting'] * 1.27)) {
|
if ($uz1st['reting'] <= floor(self::$st['reting'] * 1.27)) {
|
||||||
|
|
||||||
//Ïðèíèìàåì çàÿâêó
|
//Принимаем заявку
|
||||||
$sa = '';
|
$sa = '';
|
||||||
if (self::$bot['sex'] == 2) {
|
if (self::$bot['sex'] == 2) {
|
||||||
$sa = 'à';
|
$sa = 'а';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text = ' [login:' . self::$bot['login'] . '] ïðèíÿë' . $sa . ' âàøó çàÿâêó íà áîé.[reflesh_main_zv_priem:' . self::$bot['id'] . ']';
|
$text = ' [login:' . self::$bot['login'] . '] принял' . $sa . ' вашу заявку на бой.[reflesh_main_zv_priem:' . self::$bot['id'] . ']';
|
||||||
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time() . "','6','0')");
|
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time() . "','6','0')");
|
||||||
mysql_query('UPDATE `stats` SET `zv` = "' . $zv['id'] . '",`team` = "2" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `zv` = "' . $zv['id'] . '",`team` = "2" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `ipreg` = "8",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
@@ -449,19 +449,19 @@ class BotLogic
|
|||||||
|
|
||||||
} elseif (self::$bot['ipreg'] == 2) {
|
} elseif (self::$bot['ipreg'] == 2) {
|
||||||
|
|
||||||
//Ïðèíÿòü çàÿâêó íà áîé (ãðóï.)
|
//Принять заявку на бой (груп.)
|
||||||
self::bot_group_haot_zv(6);
|
self::bot_group_haot_zv(6);
|
||||||
} elseif (self::$bot['ipreg'] == 3) {
|
} elseif (self::$bot['ipreg'] == 3) {
|
||||||
|
|
||||||
//Ïðèíÿòü çàÿâêó íà áîé (õàîò.)
|
//Принять заявку на бой (хаот.)
|
||||||
self::bot_group_haot_zv(7);
|
self::bot_group_haot_zv(7);
|
||||||
} elseif (self::$bot['ipreg'] == 4) {
|
} elseif (self::$bot['ipreg'] == 4) {
|
||||||
|
|
||||||
//Ïðèíÿòü çàÿâêó íà áîé (òóðíèð.)
|
//Принять заявку на бой (турнир.)
|
||||||
self::e('' . self::$bot['login'] . ', ÿ õî÷ó ïðèíÿòü òóðíèð...');
|
self::e('' . self::$bot['login'] . ', я хочу принять турнир...');
|
||||||
} elseif (self::$bot['ipreg'] == 5) {
|
} elseif (self::$bot['ipreg'] == 5) {
|
||||||
|
|
||||||
//Ïîäàòü çàÿâêó (ôèç.)
|
//Подать заявку (физ.)
|
||||||
if (self::$bot['zv'] == 0) {
|
if (self::$bot['zv'] == 0) {
|
||||||
|
|
||||||
$rz = 2;
|
$rz = 2;
|
||||||
@@ -531,34 +531,34 @@ class BotLogic
|
|||||||
|
|
||||||
} elseif (self::$bot['ipreg'] == 8) {
|
} elseif (self::$bot['ipreg'] == 8) {
|
||||||
|
|
||||||
//Îæèäàíèå íà÷àëà ïîåäèíêà
|
//Ожидание начала поединка
|
||||||
if (self::$bot['zv'] == 0) {
|
if (self::$bot['zv'] == 0) {
|
||||||
|
|
||||||
//Ïîåäèíîê íå óäàëîñü íà÷àòü
|
//Поединок не удалось начать
|
||||||
mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
} else {
|
} else {
|
||||||
$zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "' . self::$bot['zv'] . '" AND `cancel` = "0" AND `start` = "0" LIMIT 1'));
|
$zv = mysql_fetch_array(mysql_query('SELECT * FROM `zayvki` WHERE `id` = "' . self::$bot['zv'] . '" AND `cancel` = "0" AND `start` = "0" LIMIT 1'));
|
||||||
|
|
||||||
if (!isset($zv['id'])) {
|
if (!isset($zv['id'])) {
|
||||||
|
|
||||||
//Îáíóëÿåì äåéñòâèÿ
|
//Обнуляем действия
|
||||||
mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `ipreg` = "0",`timeMain` = "' . self::rnd() . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
|
|
||||||
} elseif ($zv['razdel'] == 4 || $zv['razdel'] == 5) {
|
} elseif ($zv['razdel'] == 4 || $zv['razdel'] == 5) {
|
||||||
|
|
||||||
//õàîò èëè ãðóïïà
|
//хаот или группа
|
||||||
if ($zv['time_start'] + $zv['time'] <= time()) {
|
if ($zv['time_start'] + $zv['time'] <= time()) {
|
||||||
|
|
||||||
self::inuser_go_zv(self::$bot);
|
self::inuser_go_zv(self::$bot);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//ôèç
|
//физ
|
||||||
if ($zv['creator'] == self::$bot['id']) {
|
if ($zv['creator'] == self::$bot['id']) {
|
||||||
|
|
||||||
$uz2 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="2" LIMIT 1'));
|
$uz2 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="2" LIMIT 1'));
|
||||||
if (isset($uz2['id'])) {
|
if (isset($uz2['id'])) {
|
||||||
//Çàÿâêó êòî-òî ïðèíÿë, ðåàãèðóåì! :)
|
//Заявку кто-то принял, реагируем! :)
|
||||||
$pr = -1;
|
$pr = -1;
|
||||||
|
|
||||||
$uz2st = $u->getStats($uz2, 0);
|
$uz2st = $u->getStats($uz2, 0);
|
||||||
@@ -566,12 +566,12 @@ class BotLogic
|
|||||||
//btl-cof
|
//btl-cof
|
||||||
if ($uz2st['reting'] > floor(self::$st['reting'] * 1.27)) {
|
if ($uz2st['reting'] > floor(self::$st['reting'] * 1.27)) {
|
||||||
|
|
||||||
//Îòêàçûâàåì, â 95% ñëó÷àåâ, ïðîòèâíèê ñëèøêîì ñèëåí
|
//Отказываем, в 95% случаев, противник слишком силен
|
||||||
if (rand(0, 100) > 95) {
|
if (rand(0, 100) > 95) {
|
||||||
//îòïðàâëÿåì áîòà íà èçáèåíèå :D
|
//отправляем бота на избиение :D
|
||||||
$pr = 1;
|
$pr = 1;
|
||||||
} else {
|
} else {
|
||||||
//îòêàç
|
//отказ
|
||||||
$pr = 0;
|
$pr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -579,13 +579,13 @@ class BotLogic
|
|||||||
$pr = 1;
|
$pr = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ìîæíî ïðèíÿòü çàÿâêó
|
//Можно принять заявку
|
||||||
//$pr = 0;
|
//$pr = 0;
|
||||||
|
|
||||||
if ($pr == 1) {
|
if ($pr == 1) {
|
||||||
|
|
||||||
//Ïðèåì çàÿâêè
|
//Прием заявки
|
||||||
//ñîçäàåì ïîåäèíîê ñ áîòîì
|
//создаем поединок с ботом
|
||||||
$expB = 0;
|
$expB = 0;
|
||||||
$btl = ['players' => '', 'timeout' => $zv['timeout'], 'type' => $zv['type'], 'invis' => $zv['invis'], 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0];
|
$btl = ['players' => '', 'timeout' => $zv['timeout'], 'type' => $zv['type'], 'invis' => $zv['invis'], 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0];
|
||||||
$ins = mysql_query('INSERT INTO `battle` (`time_over`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`,`team_win`) VALUES (
|
$ins = mysql_query('INSERT INTO `battle` (`time_over`,`city`,`time_start`,`players`,`timeout`,`type`,`invis`,`noinc`,`travmChance`,`typeBattle`,`addExp`,`money`,`team_win`) VALUES (
|
||||||
@@ -604,13 +604,13 @@ class BotLogic
|
|||||||
"-1")');
|
"-1")');
|
||||||
if ($ins) {
|
if ($ins) {
|
||||||
$btl_id = mysql_insert_id();
|
$btl_id = mysql_insert_id();
|
||||||
//îáíîâëÿåì äàííûå î ïîåäèíêå
|
//обновляем данные о поединке
|
||||||
mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1');
|
||||||
mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '",`ipreg` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `battle`="' . $btl_id . '",`ipreg` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
mysql_query('UPDATE `stats` SET `zv` = "0",`team`="1" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `zv` = "0",`team`="1" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
mysql_query('UPDATE `stats` SET `zv` = "0",`team`="2" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `zv` = "0",`team`="2" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1');
|
||||||
|
|
||||||
//Åñëè áîé êóëà÷íûé, òî ñíèìàåì âåùè
|
//Если бой кулачный, то снимаем вещи
|
||||||
if ($btl['type'] == 1) {
|
if ($btl['type'] == 1) {
|
||||||
mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet`!=0');
|
mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . self::$bot['id'] . '" AND `inOdet`!=0');
|
||||||
mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $uz2['id'] . '" AND `inOdet`!=0');
|
mysql_query('UPDATE `items_users` SET `inOdet`="0" WHERE `uid` = "' . $uz2['id'] . '" AND `inOdet`!=0');
|
||||||
@@ -618,21 +618,21 @@ class BotLogic
|
|||||||
|
|
||||||
mysql_query('UPDATE `zayvki` SET `start` = "' . time() . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `zayvki` SET `start` = "' . time() . '",`btl_id` = "' . $btl_id . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1');
|
||||||
|
|
||||||
//îáíîâëÿåì çàÿâêó, ÷òî áîé íà÷àëñÿ
|
//обновляем заявку, что бой начался
|
||||||
self::$bot['battle'] = $btl_id;
|
self::$bot['battle'] = $btl_id;
|
||||||
|
|
||||||
//Îòïðàâëÿåì ñîîáùåíèå â ÷àò âñåì áîéöàì
|
//Отправляем сообщение в чат всем бойцам
|
||||||
mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $u->info['city'] . "','" . $u->info['room'] . "','" . $uz2['login'] . "','" . time() . "','11','0','117')");
|
mysql_query("INSERT INTO `chat` (`city`,`room`,`to`,`time`,`type`,`toChat`,`sound`) VALUES ('" . $u->info['city'] . "','" . $u->info['room'] . "','" . $uz2['login'] . "','" . time() . "','11','0','117')");
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif ($pr == 0) {
|
} elseif ($pr == 0) {
|
||||||
|
|
||||||
//Îòêàç
|
//Отказ
|
||||||
$sa = '';
|
$sa = '';
|
||||||
if (self::$bot['sex'] == 2) {
|
if (self::$bot['sex'] == 2) {
|
||||||
$sa = 'à';
|
$sa = 'а';
|
||||||
}
|
}
|
||||||
$text = ' [login:' . self::$bot['login'] . '] îòêàçàë' . $sa . ' âàì â ïîåäèíêå.';
|
$text = ' [login:' . self::$bot['login'] . '] отказал' . $sa . ' вам в поединке.';
|
||||||
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz2['city'] . "','','','" . $uz2['login'] . "','" . $text . "','" . time() . "','6','0')");
|
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz2['city'] . "','','','" . $uz2['login'] . "','" . $text . "','" . time() . "','6','0')");
|
||||||
mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "1" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `zv` = "0",`team` = "1" WHERE `id` = "' . $uz2['id'] . '" LIMIT 1');
|
||||||
mysql_query('UPDATE `zayvki` SET `otk` = ( `otk` + 1 ),`bcs` = "' . (time() + rand(30, rand(60, 180))) . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `zayvki` SET `otk` = ( `otk` + 1 ),`bcs` = "' . (time() + rand(30, rand(60, 180))) . '" WHERE `id` = "' . $zv['id'] . '" LIMIT 1');
|
||||||
@@ -640,7 +640,7 @@ class BotLogic
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
//Çàÿâêó íèêòî íå ïðèíÿë, âîçìîæíî ñòîèò îòìåíèòü çàÿâêó âîîáùå!
|
//Заявку никто не принял, возможно стоит отменить заявку вообще!
|
||||||
if (self::$bot['timeMain'] < time() - 30 - rand((7 / $zv['otk']), (3 * 49 / $zv['otk']))) {
|
if (self::$bot['timeMain'] < time() - 30 - rand((7 / $zv['otk']), (3 * 49 / $zv['otk']))) {
|
||||||
|
|
||||||
mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `zv` = "0" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
@@ -655,7 +655,7 @@ class BotLogic
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Áîò óæå ñëèøêîì äîëãî æäåò îòâåòà èãðîêà, îòêàçûâàåìñÿ îò çàÿâêè
|
//Бот уже слишком долго ждет ответа игрока, отказываемся от заявки
|
||||||
if (self::$bot['timeMain'] < time() - rand((30 / $zv['otk']), (135 / $zv['otk'])) && $zv['creator'] != self::$bot['id'] && ($zv['razdel'] == 1 || $zv['razdel'] == 2)) {
|
if (self::$bot['timeMain'] < time() - rand((30 / $zv['otk']), (135 / $zv['otk'])) && $zv['creator'] != self::$bot['id'] && ($zv['razdel'] == 1 || $zv['razdel'] == 2)) {
|
||||||
|
|
||||||
$uz1 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="1" LIMIT 1'));
|
$uz1 = mysql_fetch_array(mysql_query('SELECT `u`.`sex`,`u`.`id`,`u`.`login`,`u`.`align`,`u`.`clan`,`u`.`admin`,`u`.`city`,`u`.`room`,`u`.`online`,`u`.`level`,`u`.`battle`,`u`.`money`,`st`.* FROM `stats` AS `st` LEFT JOIN `users` AS `u` ON (`st`.`id` = `u`.`id`) WHERE `st`.`zv`="' . $zv['id'] . '" AND `st`.`team`="1" LIMIT 1'));
|
||||||
@@ -663,10 +663,10 @@ class BotLogic
|
|||||||
|
|
||||||
$sa = '';
|
$sa = '';
|
||||||
if (self::$bot['sex'] == 2) {
|
if (self::$bot['sex'] == 2) {
|
||||||
$sa = 'à';
|
$sa = 'а';
|
||||||
}
|
}
|
||||||
|
|
||||||
$text = ' [login:' . self::$bot['login'] . '] îòîçâàë' . $sa . ' ñâîé çàïðîñ íà áîé.';
|
$text = ' [login:' . self::$bot['login'] . '] отозвал' . $sa . ' свой запрос на бой.';
|
||||||
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time() . "','6','0')");
|
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $uz1['city'] . "','','','" . $uz1['login'] . "','" . $text . "','" . time() . "','6','0')");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -709,18 +709,18 @@ class BotLogic
|
|||||||
if (self::$bot['level'] < 2) {
|
if (self::$bot['level'] < 2) {
|
||||||
if ($r == 2 || $r == 3 || $r == 6 || $r == 7 || $r == 8) {
|
if ($r == 2 || $r == 3 || $r == 6 || $r == 7 || $r == 8) {
|
||||||
if (rand(0, 1) == 1) {
|
if (rand(0, 1) == 1) {
|
||||||
$r = 1; //ïðèíèìàåì ôèç
|
$r = 1; //принимаем физ
|
||||||
} elseif (rand(0, 1) == 0) {
|
} elseif (rand(0, 1) == 0) {
|
||||||
$r = 4; //ïðèíèìàåì òóðíèð
|
$r = 4; //принимаем турнир
|
||||||
} else {
|
} else {
|
||||||
$r = 5; //ïîäàåì ôèç
|
$r = 5; //подаем физ
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif (self::$bot['level'] == 0) {
|
} elseif (self::$bot['level'] == 0) {
|
||||||
if (rand(0, 1) == 1) {
|
if (rand(0, 1) == 1) {
|
||||||
$r = 1; //ïðèíèìàåì ôèç
|
$r = 1; //принимаем физ
|
||||||
} else {
|
} else {
|
||||||
$r = 5; //ïîäàåì ôèç
|
$r = 5; //подаем физ
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -734,9 +734,9 @@ class BotLogic
|
|||||||
|
|
||||||
|
|
||||||
/*/
|
/*/
|
||||||
Áàçîâûå ôóíêöèè îáó÷åíèÿ áîòà
|
Базовые функции обучения бота
|
||||||
/*/
|
/*/
|
||||||
//Áîò èùåò çàÿâêó â ãðóïïû èëè õàîò äëÿ ñâîåãî óðîâíÿ è ïîäõîäÿùóþ åìó
|
//Бот ищет заявку в группы или хаот для своего уровня и подходящую ему
|
||||||
static function bot_group_haot_zv($id)
|
static function bot_group_haot_zv($id)
|
||||||
{
|
{
|
||||||
$rz = 5;
|
$rz = 5;
|
||||||
@@ -783,7 +783,7 @@ class BotLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Ëîãèêà ïðèåìà çàÿâêè
|
//Логика приема заявки
|
||||||
if ((self::team_zv_cf($pl, $atm) > (self::team_zv_cf($pl, $tmr) + self::$st['reting']) * 1.67 || ($zv['tm2max'] < $zv['tm1max'] / 2) || ($zv['tm1max'] < $zv['tm2max'] / 2)) && rand(0, 100) < 90) {
|
if ((self::team_zv_cf($pl, $atm) > (self::team_zv_cf($pl, $tmr) + self::$st['reting']) * 1.67 || ($zv['tm2max'] < $zv['tm1max'] / 2) || ($zv['tm1max'] < $zv['tm2max'] / 2)) && rand(0, 100) < 90) {
|
||||||
$go = 0;
|
$go = 0;
|
||||||
}
|
}
|
||||||
@@ -840,7 +840,7 @@ class BotLogic
|
|||||||
|
|
||||||
if ($tm > 0 || $rz == 5) {
|
if ($tm > 0 || $rz == 5) {
|
||||||
|
|
||||||
//Ïðèíèìàåì ó÷àñòèå â çàÿâêå
|
//Принимаем участие в заявке
|
||||||
mysql_query('UPDATE `stats` SET `zv` = "' . $pl['id'] . '",`team` = "' . $tm . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `zv` = "' . $pl['id'] . '",`team` = "' . $tm . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
mysql_query('UPDATE `users` SET `login2` = "' . self::$bot['login2'] . '",`ipreg` = "8" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `login2` = "' . self::$bot['login2'] . '",`ipreg` = "8" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
self::$bot['zv'] = $pl['id'];
|
self::$bot['zv'] = $pl['id'];
|
||||||
@@ -856,7 +856,7 @@ class BotLogic
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Äîáàâëÿåì íîâîãî áîòà
|
//Добавляем нового бота
|
||||||
static function createNewBot($login, $sex)
|
static function createNewBot($login, $sex)
|
||||||
{
|
{
|
||||||
if ($sex != 1) {
|
if ($sex != 1) {
|
||||||
@@ -865,22 +865,20 @@ class BotLogic
|
|||||||
$se = 1;
|
$se = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = ['name' => '_', 'city_real' => '', 'deviz' => '', 'chatColor' => 'Black'];
|
$r = ['name' => '_', 'chatColor' => 'Black'];
|
||||||
|
|
||||||
$ins = mysql_query("INSERT INTO `users` (`fnq`,`host_reg`,`room`,`login`,`pass`,`ipreg`,`ip`,`city`,`cityreg`,`name`,`sex`,`city_real`,`deviz`,`chatColor`,`timereg`) VALUES (
|
$ins = mysql_query("INSERT INTO `users` (`fnq`,`host_reg`,`room`,`login`,`pass`,`ipreg`,`ip`,`city`,`cityreg`,`name`,`sex`,`chatColor`,`timereg`) VALUES (
|
||||||
'0',
|
'0',
|
||||||
'real_bot_user',
|
'real_bot_user',
|
||||||
'0',
|
'0',
|
||||||
'" . mysql_real_escape_string($login) . "',
|
'" . mysql_real_escape_string($login) . "',
|
||||||
'" . md5('regnxt#$%^à0.' . time()) . "',
|
'" . md5('regnxt#$%^а0.' . time()) . "',
|
||||||
'127.0.0.1',
|
'127.0.0.1',
|
||||||
'127.0.0.1',
|
'127.0.0.1',
|
||||||
'capitalcity',
|
'capitalcity',
|
||||||
'capitalcity',
|
'capitalcity',
|
||||||
'" . $r['name'] . "',
|
'" . $r['name'] . "',
|
||||||
'" . mysql_real_escape_string($sex) . "',
|
'" . mysql_real_escape_string($sex) . "',
|
||||||
'" . $r['city_real'] . "',
|
|
||||||
'" . $r['deviz'] . "',
|
|
||||||
'" . $r['chatColor'] . "',
|
'" . $r['chatColor'] . "',
|
||||||
'" . time() . "')");
|
'" . time() . "')");
|
||||||
if ($ins) {
|
if ($ins) {
|
||||||
@@ -892,11 +890,11 @@ class BotLogic
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Áîò íàõîäèòñÿ â îíëàéíå
|
//Бот находится в онлайне
|
||||||
static function _online()
|
static function _online()
|
||||||
{
|
{
|
||||||
if (self::$bot['online'] < time() - 60) {
|
if (self::$bot['online'] < time() - 60) {
|
||||||
//óðîâåíü/àïï
|
//уровень/апп
|
||||||
if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0) {
|
if (self::$bot['battle'] == 0 && self::$bot['zv'] == 0) {
|
||||||
self::_level();
|
self::_level();
|
||||||
}
|
}
|
||||||
@@ -905,7 +903,7 @@ class BotLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Áîò ìåíÿåò ëîêàöèþ
|
//Бот меняет локацию
|
||||||
static function _loc_A($a, $b)
|
static function _loc_A($a, $b)
|
||||||
{
|
{
|
||||||
return $b;
|
return $b;
|
||||||
@@ -920,28 +918,28 @@ class BotLogic
|
|||||||
$r = rand(1, 4);
|
$r = rand(1, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
//áóäóàð
|
//будуар
|
||||||
if ($r == 4 && self::$bot['sex'] != 1) {
|
if ($r == 4 && self::$bot['sex'] != 1) {
|
||||||
$r = rand(1, 3);
|
$r = rand(1, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self::$bot['city'] == 'capitalcity') {
|
if (self::$bot['city'] == 'capitalcity') {
|
||||||
if ($r == 4) {
|
if ($r == 4) {
|
||||||
//áóäóàð
|
//будуар
|
||||||
$r = 7;
|
$r = 7;
|
||||||
} elseif ($r == 3) {
|
} elseif ($r == 3) {
|
||||||
//ÇÂ 3
|
//ЗВ 3
|
||||||
$r = 5;
|
$r = 5;
|
||||||
} elseif ($r == 2) {
|
} elseif ($r == 2) {
|
||||||
//ÇÂ 2
|
//ЗВ 2
|
||||||
$r = 2;
|
$r = 2;
|
||||||
} else {
|
} else {
|
||||||
//ÇÂ 1
|
//ЗВ 1
|
||||||
$r = 4;
|
$r = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self::$bot['level'] == 0) {
|
if (self::$bot['level'] == 0) {
|
||||||
//Íîâè÷êè
|
//Новички
|
||||||
$r = 0;
|
$r = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -954,20 +952,20 @@ class BotLogic
|
|||||||
{
|
{
|
||||||
|
|
||||||
if ($id == self::$bot['room']) {
|
if ($id == self::$bot['room']) {
|
||||||
//íè÷åãî, óæå ïðèøëè
|
//ничего, уже пришли
|
||||||
self::update('a1', 0);
|
self::update('a1', 0);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
//Ïðîêëàäûâàåì ìàðøðóò èç òåêóùåé êîìíàòû
|
//Прокладываем маршрут из текущей комнаты
|
||||||
$rid_next = self::_loc_A(self::$bot['room'], $id);
|
$rid_next = self::_loc_A(self::$bot['room'], $id);
|
||||||
if ($rid_next > 0) {
|
if ($rid_next > 0) {
|
||||||
//Èäåì òóäà
|
//Идем туда
|
||||||
//$rid_next = 377;
|
//$rid_next = 377;
|
||||||
mysql_query('UPDATE `users` SET `room` = "' . $rid_next . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `room` = "' . $rid_next . '" WHERE `id` = "' . self::$bot['id'] . '" LIMIT 1');
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
//Íåâîçìîæíî äîéòè òóäà
|
//Невозможно дойти туда
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -975,7 +973,7 @@ class BotLogic
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Áîò ïîëó÷èë óðîâåíü, ëèáî àïï
|
//Бот получил уровень, либо апп
|
||||||
static function _level()
|
static function _level()
|
||||||
{
|
{
|
||||||
global $u;
|
global $u;
|
||||||
@@ -1001,11 +999,11 @@ class BotLogic
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Âñïîìîãàòåëüíûå ôóíêöèè
|
//Вспомогательные функции
|
||||||
static function e($t)
|
static function e($t)
|
||||||
{
|
{
|
||||||
|
|
||||||
mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date('H:i:s') . ' (Êðèòè÷åñêàÿ îøèáêà): <b>' . mysql_real_escape_string($t) . '</b>","capitalcity",
|
mysql_query('INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("core #' . date('d.m.Y') . ' %' . date('H:i:s') . ' (Критическая ошибка): <b>' . mysql_real_escape_string($t) . '</b>","capitalcity",
|
||||||
"LEL","6","1","-1")');
|
"LEL","6","1","-1")');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,85 +13,85 @@ class BotPriemLogic
|
|||||||
$test = self::testpriem(self::$p);
|
$test = self::testpriem(self::$p);
|
||||||
|
|
||||||
if (isset(self::$p['id']) && $test == 0) {
|
if (isset(self::$p['id']) && $test == 0) {
|
||||||
//Èñïîëüçóåì ïðèåì ïîä íîìåðîì $id
|
//Используем прием под номером $id
|
||||||
if ($id == 1) {
|
if ($id == 1) {
|
||||||
self::priem1($i);
|
self::priem1($i);
|
||||||
} //Ïðèêðûòüñÿ 1|2|3|4|5|6|7|8|9|10|11|13|14|45|47|48|49|188|204|211|217|220|223|232|235|240|0|0|0|0|0|0|0|0|0|0|0|0|0|0
|
} //Прикрыться 1|2|3|4|5|6|7|8|9|10|11|13|14|45|47|48|49|188|204|211|217|220|223|232|235|240|0|0|0|0|0|0|0|0|0|0|0|0|0|0
|
||||||
elseif ($id == 2) {
|
elseif ($id == 2) {
|
||||||
self::priem2($i);
|
self::priem2($i);
|
||||||
} //Âëîìèòü
|
} //Вломить
|
||||||
elseif ($id == 3) {
|
elseif ($id == 3) {
|
||||||
self::priem3($i);
|
self::priem3($i);
|
||||||
} //Ñîáðàòü çóáû
|
} //Собрать зубы
|
||||||
elseif ($id == 4) {
|
elseif ($id == 4) {
|
||||||
self::priem4($i);
|
self::priem4($i);
|
||||||
} //Ñèëüíûé óäàð
|
} //Сильный удар
|
||||||
elseif ($id == 5) {
|
elseif ($id == 5) {
|
||||||
self::priem5($i);
|
self::priem5($i);
|
||||||
} //Óòåðåòü ïîò
|
} //Утереть пот
|
||||||
elseif ($id == 6) {
|
elseif ($id == 6) {
|
||||||
self::priem6($i);
|
self::priem6($i);
|
||||||
} //Âîëÿ ê ïîáåäå
|
} //Воля к победе
|
||||||
elseif ($id == 7) {
|
elseif ($id == 7) {
|
||||||
self::priem7($i);
|
self::priem7($i);
|
||||||
} //Àêòèâíàÿ çàùèòà
|
} //Активная защита
|
||||||
elseif ($id == 8) {
|
elseif ($id == 8) {
|
||||||
self::priem8($i);
|
self::priem8($i);
|
||||||
} //Òàíåö âåòðà
|
} //Танец ветра
|
||||||
elseif ($id == 9) {
|
elseif ($id == 9) {
|
||||||
self::priem9($i);
|
self::priem9($i);
|
||||||
} //Äèêàÿ óäà÷à
|
} //Дикая удача
|
||||||
elseif ($id == 10) {
|
elseif ($id == 10) {
|
||||||
self::priem10($i);
|
self::priem10($i);
|
||||||
} //Ïðåäâèäèíèå
|
} //Предвидиние
|
||||||
elseif ($id == 11) {
|
elseif ($id == 11) {
|
||||||
self::priem11($i);
|
self::priem11($i);
|
||||||
} //Óäà÷íûé óäàð
|
} //Удачный удар
|
||||||
elseif ($id == 13) {
|
elseif ($id == 13) {
|
||||||
self::priem13($i);
|
self::priem13($i);
|
||||||
} //Ñòîéêîñòü
|
} //Стойкость
|
||||||
elseif ($id == 14) {
|
elseif ($id == 14) {
|
||||||
self::priem14($i);
|
self::priem14($i);
|
||||||
} //ßðîñòü
|
} //Ярость
|
||||||
elseif ($id == 45) {
|
elseif ($id == 45) {
|
||||||
self::priem45($i);
|
self::priem45($i);
|
||||||
} //Ïîëíàÿ çàùèòà
|
} //Полная защита
|
||||||
elseif ($id == 47) {
|
elseif ($id == 47) {
|
||||||
self::priem47($i);
|
self::priem47($i);
|
||||||
} //Ñëåïàÿ óäà÷à
|
} //Слепая удача
|
||||||
elseif ($id == 48) {
|
elseif ($id == 48) {
|
||||||
self::priem48($i);
|
self::priem48($i);
|
||||||
} //Òàíåö ëåçâèé
|
} //Танец лезвий
|
||||||
elseif ($id == 49) {
|
elseif ($id == 49) {
|
||||||
self::priem49($i);
|
self::priem49($i);
|
||||||
} //Âòîðîå äûõàíèå
|
} //Второе дыхание
|
||||||
elseif ($id == 188) {
|
elseif ($id == 188) {
|
||||||
self::priem188($i);
|
self::priem188($i);
|
||||||
} //Æàæäà êðîâè
|
} //Жажда крови
|
||||||
elseif ($id == 204) {
|
elseif ($id == 204) {
|
||||||
self::priem204($i);
|
self::priem204($i);
|
||||||
} //Îáðå÷åííîñòü
|
} //Обреченность
|
||||||
elseif ($id == 211) {
|
elseif ($id == 211) {
|
||||||
self::priem211($i);
|
self::priem211($i);
|
||||||
} //Àãðåññèâíàÿ çàùèòà
|
} //Агрессивная защита
|
||||||
elseif ($id == 217) {
|
elseif ($id == 217) {
|
||||||
self::priem217($i);
|
self::priem217($i);
|
||||||
} //Ðàçãàäàòü òàêòèêó
|
} //Разгадать тактику
|
||||||
elseif ($id == 220) {
|
elseif ($id == 220) {
|
||||||
self::priem220($i);
|
self::priem220($i);
|
||||||
} //Ñòàâêà íà îïåðåæåíèå
|
} //Ставка на опережение
|
||||||
elseif ($id == 223) {
|
elseif ($id == 223) {
|
||||||
self::priem223($i);
|
self::priem223($i);
|
||||||
} //Ðûâîê
|
} //Рывок
|
||||||
elseif ($id == 232) {
|
elseif ($id == 232) {
|
||||||
self::priem232($i);
|
self::priem232($i);
|
||||||
} //Âûæèòü
|
} //Выжить
|
||||||
elseif ($id == 235) {
|
elseif ($id == 235) {
|
||||||
self::priem235($i);
|
self::priem235($i);
|
||||||
} //Øîêèðóþùèé óäàð
|
} //Шокирующий удар
|
||||||
elseif ($id == 240) {
|
elseif ($id == 240) {
|
||||||
self::priem240($i);
|
self::priem240($i);
|
||||||
} //Õëåáíóòü êðîâè
|
} //Хлебнуть крови
|
||||||
elseif ($id >= 175 && $id <= 179) {
|
elseif ($id >= 175 && $id <= 179) {
|
||||||
self::priem175($i);
|
self::priem175($i);
|
||||||
}
|
}
|
||||||
@@ -110,7 +110,7 @@ class BotPriemLogic
|
|||||||
BotLogic::inuser_go_btl(BotLogic::$bot, $go_txt);
|
BotLogic::inuser_go_btl(BotLogic::$bot, $go_txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ñòàâêà íà îïåðåæåíèå
|
//Ставка на опережение
|
||||||
private static function priem220($i)
|
private static function priem220($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 30) {
|
if (rand(0, 100) < 30) {
|
||||||
@@ -118,7 +118,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ðàçãàäàòü òàêòèêó
|
//Разгадать тактику
|
||||||
private static function priem217($i)
|
private static function priem217($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 30) {
|
if (rand(0, 100) < 30) {
|
||||||
@@ -126,7 +126,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Îáðå÷åííîñòü
|
//Обреченность
|
||||||
private static function priem204($i)
|
private static function priem204($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 30) {
|
if (rand(0, 100) < 30) {
|
||||||
@@ -134,7 +134,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Âûæèòü
|
//Выжить
|
||||||
private static function priem232($i)
|
private static function priem232($i)
|
||||||
{
|
{
|
||||||
if (self::hp() <= 30 && rand(0, 100) < 50) {
|
if (self::hp() <= 30 && rand(0, 100) < 50) {
|
||||||
@@ -142,7 +142,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Æàæäà êðîâè
|
//Жажда крови
|
||||||
private static function priem188($i)
|
private static function priem188($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 30) {
|
if (rand(0, 100) < 30) {
|
||||||
@@ -150,7 +150,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Øîê óäàð
|
//Шок удар
|
||||||
private static function priem235($i)
|
private static function priem235($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 50) {
|
if (rand(0, 100) < 50) {
|
||||||
@@ -158,7 +158,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Õëåáíóòü êðîâè
|
//Хлебнуть крови
|
||||||
private static function priem240($i)
|
private static function priem240($i)
|
||||||
{
|
{
|
||||||
if (self::hp() <= 70) {
|
if (self::hp() <= 70) {
|
||||||
@@ -166,13 +166,13 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ñèëîâîå ïîëå
|
//Силовое поле
|
||||||
private static function priem175($i)
|
private static function priem175($i)
|
||||||
{
|
{
|
||||||
self::usePriem($i);
|
self::usePriem($i);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ïðèêðûòüñÿ
|
//Прикрыться
|
||||||
private static function priem1($i)
|
private static function priem1($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 50) {
|
if (rand(0, 100) < 50) {
|
||||||
@@ -180,7 +180,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Âëîìèòü
|
//Вломить
|
||||||
private static function priem2($i)
|
private static function priem2($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 50) {
|
if (rand(0, 100) < 50) {
|
||||||
@@ -188,7 +188,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ñîáðàòü çóáû
|
//Собрать зубы
|
||||||
private static function priem3($i)
|
private static function priem3($i)
|
||||||
{
|
{
|
||||||
if (self::hp() <= 70 && rand(0, 100) < 50) {
|
if (self::hp() <= 70 && rand(0, 100) < 50) {
|
||||||
@@ -196,7 +196,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Âîëÿ ê ïîáåäå
|
//Воля к победе
|
||||||
private static function priem6($i)
|
private static function priem6($i)
|
||||||
{
|
{
|
||||||
if (self::hp() <= 40 && rand(0, 100) < 50) {
|
if (self::hp() <= 40 && rand(0, 100) < 50) {
|
||||||
@@ -204,7 +204,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Òàíåö âåòðà
|
//Танец ветра
|
||||||
private static function priem8($i)
|
private static function priem8($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 30) {
|
if (rand(0, 100) < 30) {
|
||||||
@@ -212,7 +212,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Òàíåö ëåçâèé
|
//Танец лезвий
|
||||||
private static function priem48($i)
|
private static function priem48($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 70) {
|
if (rand(0, 100) < 70) {
|
||||||
@@ -220,7 +220,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Äèêàÿ óäà÷à
|
//Дикая удача
|
||||||
private static function priem9($i)
|
private static function priem9($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 30) {
|
if (rand(0, 100) < 30) {
|
||||||
@@ -228,7 +228,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ñëåïàÿ óäà÷à
|
//Слепая удача
|
||||||
private static function priem47($i)
|
private static function priem47($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 50) {
|
if (rand(0, 100) < 50) {
|
||||||
@@ -236,7 +236,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ïðåäâèäåíüå
|
//Предвиденье
|
||||||
private static function priem10($i)
|
private static function priem10($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 30) {
|
if (rand(0, 100) < 30) {
|
||||||
@@ -244,7 +244,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Âòîðîå äûõàíèå
|
//Второе дыхание
|
||||||
private static function priem49($i)
|
private static function priem49($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 80 && self::hp() <= 60) {
|
if (rand(0, 100) < 80 && self::hp() <= 60) {
|
||||||
@@ -252,7 +252,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ðûâîê
|
//Рывок
|
||||||
private static function priem223($i)
|
private static function priem223($i)
|
||||||
{
|
{
|
||||||
if (self::hp() <= 50 && rand(0, 100) < 50) {
|
if (self::hp() <= 50 && rand(0, 100) < 50) {
|
||||||
@@ -260,7 +260,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Óäà÷íûé óäàð
|
//Удачный удар
|
||||||
private static function priem11($i)
|
private static function priem11($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 30) {
|
if (rand(0, 100) < 30) {
|
||||||
@@ -268,7 +268,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ñòîéêîñòü
|
//Стойкость
|
||||||
private static function priem13($i)
|
private static function priem13($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 50) {
|
if (rand(0, 100) < 50) {
|
||||||
@@ -276,7 +276,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//ßðîñòü
|
//Ярость
|
||||||
private static function priem14($i)
|
private static function priem14($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 50) {
|
if (rand(0, 100) < 50) {
|
||||||
@@ -284,7 +284,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ñèëüíûé óäàð
|
//Сильный удар
|
||||||
private static function priem4($i)
|
private static function priem4($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 60) {
|
if (rand(0, 100) < 60) {
|
||||||
@@ -292,7 +292,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Óòåðåòü ïîò
|
//Утереть пот
|
||||||
private static function priem5($i)
|
private static function priem5($i)
|
||||||
{
|
{
|
||||||
if (self::hp() <= 95) {
|
if (self::hp() <= 95) {
|
||||||
@@ -301,7 +301,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Àãðåññèâíàÿ çàùèòà
|
//Агрессивная защита
|
||||||
private static function priem211($i)
|
private static function priem211($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 80) {
|
if (rand(0, 100) < 80) {
|
||||||
@@ -310,7 +310,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Ïîëíàÿ çàùèòà
|
//Полная защита
|
||||||
private static function priem45($i)
|
private static function priem45($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 50) {
|
if (rand(0, 100) < 50) {
|
||||||
@@ -319,7 +319,7 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Àêòèâíàÿ çàùèòà
|
//Активная защита
|
||||||
private static function priem7($i)
|
private static function priem7($i)
|
||||||
{
|
{
|
||||||
if (rand(0, 100) < 30) {
|
if (rand(0, 100) < 30) {
|
||||||
@@ -333,7 +333,7 @@ class BotPriemLogic
|
|||||||
return round((BotLogic::$st['hpNow'] / BotLogic::$st['hpAll'] * 100), 2);
|
return round((BotLogic::$st['hpNow'] / BotLogic::$st['hpAll'] * 100), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Òåñò íà âîçìîæíîñòü èñïîëüçîâàíèÿ
|
//Тест на возможность использования
|
||||||
private static function testpriem($pl)
|
private static function testpriem($pl)
|
||||||
{
|
{
|
||||||
global $u;
|
global $u;
|
||||||
@@ -382,14 +382,14 @@ class BotPriemLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($pl['trUser'] == 1) {
|
if ($pl['trUser'] == 1) {
|
||||||
//òðåáóåò ÷òîáû ïîëüçîâàòåëü ñ êåì-òî ðàçìåíèâàëñÿ (ïðè îæèäàíèè ïðèåì ãàñíèò)
|
//требует чтобы пользователь с кем-то разменивался (при ожидании прием гаснит)
|
||||||
$ga = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "' . BotLogic::$bot['battle'] . '" AND `uid1` = "' . BotLogic::$bot['id'] . '" AND `uid2` = "' . BotLogic::$bot['enemy'] . '" LIMIT 1'));
|
$ga = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "' . BotLogic::$bot['battle'] . '" AND `uid1` = "' . BotLogic::$bot['id'] . '" AND `uid2` = "' . BotLogic::$bot['enemy'] . '" LIMIT 1'));
|
||||||
if (isset($ga['id'])) {
|
if (isset($ga['id'])) {
|
||||||
$notr++;
|
$notr++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Åñëè ïðèåì óæå èñïîëüçîâàëè
|
//Если прием уже использовали
|
||||||
if (BotLogic::$st['prsu'][$pl['id']] > 0) {
|
if (BotLogic::$st['prsu'][$pl['id']] > 0) {
|
||||||
$notr++;
|
$notr++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
<?php
|
|
||||||
/** Ïîëó÷àåì íà âõîä ñòðîêó, à íà âûõîä ðåçóëüòàò ìàòåìàòè÷åñêîé îïåðàöèè â ñòðîêå. */
|
|
||||||
class CalculateFromString
|
|
||||||
{
|
|
||||||
const PATTERN = '/(?:\-?\d+(?:\.?\d+)?[\+\-\*\/])+\-?\d+(?:\.?\d+)?/';
|
|
||||||
const PARENTHESIS_DEPTH = 10;
|
|
||||||
|
|
||||||
public function calculate($input){
|
|
||||||
if(strpos($input, '+') != null || strpos($input, '-') != null || strpos($input, '/') != null || strpos($input, '*') != null){
|
|
||||||
// Remove white spaces and invalid math chars
|
|
||||||
$input = str_replace(',', '.', $input);
|
|
||||||
$input = str_replace(' ', '', $input);
|
|
||||||
$input = preg_replace('[^0-9\.\+\-\*\/\(\)]', '', $input);
|
|
||||||
|
|
||||||
// Calculate each of the parenthesis from the top
|
|
||||||
$i = 0;
|
|
||||||
while(strpos($input, '(') || strpos($input, ')')){
|
|
||||||
$input = preg_replace_callback('/\(([^\(\)]+)\)/', 'self::callback', $input);
|
|
||||||
|
|
||||||
$i++;
|
|
||||||
if($i > self::PARENTHESIS_DEPTH){
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate the result
|
|
||||||
if(preg_match(self::PATTERN, $input, $match)){
|
|
||||||
return $this->compute($match[0]);
|
|
||||||
}
|
|
||||||
// To handle the special case of expressions surrounded by global parenthesis like "(1+1)"
|
|
||||||
if(is_numeric($input)){
|
|
||||||
return $input;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $input;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function compute($input){
|
|
||||||
$compute = create_function('', 'return '.$input.';');
|
|
||||||
|
|
||||||
return 0 + $compute();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function callback($input){
|
|
||||||
if(is_numeric($input[1])){
|
|
||||||
return $input[1];
|
|
||||||
}
|
|
||||||
elseif(preg_match(self::PATTERN, $input[1], $match)){
|
|
||||||
return $this->compute($match[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$Cal = new CalculateFromString();
|
|
||||||
$xyz='(100 * 25000) + (250 * 25000) + ((500/100) * 25000)';
|
|
||||||
$result = $Cal->calculate($xyz);
|
|
||||||
echo $result;
|
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,575 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class ComissionShop
|
||||||
|
{
|
||||||
|
public function commisionShop($sid, $preview = "full")
|
||||||
|
{
|
||||||
|
global $c, $code, $sid;
|
||||||
|
switch ((int)$_GET['otdel']) {
|
||||||
|
case 1:
|
||||||
|
$typeOtdel = 18;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$typeOtdel = 19;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$typeOtdel = 20;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
$typeOtdel = 21;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
$typeOtdel = 22;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$typeOtdel = 15;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
$typeOtdel = 12;
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
$typeOtdel = 4;
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
$typeOtdel = 5;
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
$typeOtdel = 6;
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
$typeOtdel = 1;
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
$typeOtdel = 3;
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
$typeOtdel = 8;
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
$typeOtdel = 14;
|
||||||
|
break;
|
||||||
|
case 15:
|
||||||
|
$typeOtdel = 13;
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
$typeOtdel = 9;
|
||||||
|
break;
|
||||||
|
case 17:
|
||||||
|
$typeOtdel = 10;
|
||||||
|
break;
|
||||||
|
case 18:
|
||||||
|
$typeOtdel = 11;
|
||||||
|
break;
|
||||||
|
case 19:
|
||||||
|
$typeOtdel = 29;
|
||||||
|
break;
|
||||||
|
case 20:
|
||||||
|
$typeOtdel = 30;
|
||||||
|
break;
|
||||||
|
case 1050:
|
||||||
|
$typeOtdel = 1050;
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
$typeOtdel = 18;
|
||||||
|
}
|
||||||
|
if ($typeOtdel != 1050) {
|
||||||
|
if ($preview == "full") {
|
||||||
|
$cl = mysql_query(
|
||||||
|
'SELECT `items_users`.`id`,`items_users`.`item_id`,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`,`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`,`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`,`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`,`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id`,`items_main`.`name`,`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`,`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`,`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`,`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`,`items_main`.`lvl_aexp`, count(`items_users`.`id`) as inGroupCount
|
||||||
|
FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`)
|
||||||
|
WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` = "' . mysql_real_escape_string(
|
||||||
|
$typeOtdel
|
||||||
|
) . '" and `items_users`.`item_id` = "' . (int)$_GET['itemid'] . '" GROUP BY `items_users`.`inGroup`, `items_users`.`uid`,`items_users`.`1price` HAVING `items_users`.inGroup > 0
|
||||||
|
UNION ALL SELECT `items_users`.`id`,`items_users`.`item_id`,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`,`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`,`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`,`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`,`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id`,`items_main`.`name`,`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`,`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`,`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`,`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`,`items_main`.`lvl_aexp`, count(`items_users`.`id`) as inGroupCount
|
||||||
|
FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`)
|
||||||
|
WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` = "' . mysql_real_escape_string(
|
||||||
|
$typeOtdel
|
||||||
|
) . '" and `items_users`.`item_id` = "' . (int)$_GET['itemid'] . '" GROUP BY `items_users`.`uid`, `items_users`.`1price` HAVING `items_users`.inGroup = 0
|
||||||
|
ORDER BY `1price`ASC , inGroupCount DESC'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$cl = mysql_query(
|
||||||
|
'SELECT `items_users`.`id`,`items_users`.`item_id`,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`,`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`,`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`,`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`,`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id`,`items_main`.`name`,`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`,`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`,`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`,`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`,`items_main`.`lvl_aexp` FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`) WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` = "' . mysql_real_escape_string(
|
||||||
|
$typeOtdel
|
||||||
|
) . '" GROUP BY `items_users`.`item_id` ORDER BY `items_main`.`id` DESC'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($preview == "full") {
|
||||||
|
$cl = mysql_query(
|
||||||
|
'SELECT
|
||||||
|
`items_users`.`id` as id, `items_users`.`id` AS `idu`,`items_users`.`item_id` as item_id,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`,
|
||||||
|
`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`,
|
||||||
|
`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`,
|
||||||
|
`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`,
|
||||||
|
`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id` as item_id,`items_main`.`name`,
|
||||||
|
`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`,
|
||||||
|
`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`,
|
||||||
|
`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`,
|
||||||
|
`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`,
|
||||||
|
`items_main`.`lvl_aexp` , count(`items_users`.`id`) as inGroupCount
|
||||||
|
FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`)
|
||||||
|
WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`item_id` = "' . (int)$_GET['itemid'] . '"
|
||||||
|
AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` != "18" AND `items_main`.`type` != "19" AND `items_main`.`type` != "20" AND `items_main`.`type` != "21" AND `items_main`.`type` != "22" AND `items_main`.`type` != "15" AND `items_main`.`type` != "12" AND `items_main`.`type` != "4" AND `items_main`.`type` != "5" AND `items_main`.`type` != "6" AND `items_main`.`type` != "1" AND `items_main`.`type` != "3" AND `items_main`.`type` != "8" AND `items_main`.`type` != "14" AND `items_main`.`type` != "13" AND `items_main`.`type` != "9" AND `items_main`.`type` != "10" AND `items_main`.`type` != "11" AND `items_main`.`type` != "29" AND `items_main`.`type` != "30"
|
||||||
|
GROUP BY `items_users`.`inGroup`, `items_users`.`uid`,`items_users`.`1price` HAVING `items_users`.inGroup > 0
|
||||||
|
UNION ALL
|
||||||
|
SELECT `items_users`.`id` as id, `items_users`.`id` AS `idu`,`items_users`.`item_id` as item_id,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`,
|
||||||
|
`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`,
|
||||||
|
`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`,
|
||||||
|
`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`,
|
||||||
|
`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id` as item_id,`items_main`.`name`,
|
||||||
|
`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`,
|
||||||
|
`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`,
|
||||||
|
`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`,
|
||||||
|
`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`,
|
||||||
|
`items_main`.`lvl_aexp`, count(`items_users`.`id`) as inGroupCount
|
||||||
|
FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`)
|
||||||
|
WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`item_id` = "' . (int)$_GET['itemid'] . '"
|
||||||
|
AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` != "18" AND `items_main`.`type` != "19" AND `items_main`.`type` != "20" AND `items_main`.`type` != "21" AND `items_main`.`type` != "22" AND `items_main`.`type` != "15" AND `items_main`.`type` != "12" AND `items_main`.`type` != "4" AND `items_main`.`type` != "5" AND `items_main`.`type` != "6" AND `items_main`.`type` != "1" AND `items_main`.`type` != "3" AND `items_main`.`type` != "8" AND `items_main`.`type` != "14" AND `items_main`.`type` != "13" AND `items_main`.`type` != "9" AND `items_main`.`type` != "10" AND `items_main`.`type` != "11" AND `items_main`.`type` != "29" AND `items_main`.`type` != "30"
|
||||||
|
GROUP BY `items_users`.`uid`,`items_users`.`1price` HAVING `items_users`.inGroup = 0
|
||||||
|
ORDER BY `1price`ASC , inGroupCount DESC'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$cl = mysql_query(
|
||||||
|
'SELECT `items_users`.`id`, `items_users`.`id` AS `idu`,`items_users`.`item_id`,`items_users`.`1price`,`items_users`.`2price`,`items_users`.`uid`,`items_users`.`use_text`,`items_users`.`data`,`items_users`.`inOdet`,`items_users`.`inShop`,`items_users`.`delete`,`items_users`.`iznosNOW`,`items_users`.`iznosMAX`,`items_users`.`gift`,`items_users`.`gtxt1`,`items_users`.`gtxt2`,`items_users`.`kolvo`,`items_users`.`geniration`,`items_users`.`magic_inc`,`items_users`.`maidin`,`items_users`.`lastUPD`,`items_users`.`timeOver`,`items_users`.`overType`,`items_users`.`secret_id`,`items_users`.`time_create`,`items_users`.`inGroup`,`items_users`.`dn_delete`,`items_users`.`inTransfer`,`items_users`.`post_delivery`,`items_users`.`lbtl_`,`items_users`.`bexp`,`items_users`.`so`,`items_users`.`blvl`,`items_main`.`id`,`items_main`.`name`,`items_main`.`img`,`items_main`.`type`,`items_main`.`inslot`,`items_main`.`2h`,`items_main`.`2too`,`items_main`.`iznosMAXi`,`items_main`.`inRazdel`,`items_main`.`price1`,`items_main`.`price2`,`items_main`.`magic_chance`,`items_main`.`info`,`items_main`.`massa`,`items_main`.`level`,`items_main`.`magic_inci`,`items_main`.`overTypei`,`items_main`.`group`,`items_main`.`group_max`,`items_main`.`geni`,`items_main`.`ts`,`items_main`.`srok`,`items_main`.`class`,`items_main`.`class_point`,`items_main`.`anti_class`,`items_main`.`anti_class_point`,`items_main`.`max_text`,`items_main`.`useInBattle`,`items_main`.`lbtl`,`items_main`.`lvl_itm`,`items_main`.`lvl_exp`,`items_main`.`lvl_aexp` FROM `items_users` LEFT JOIN `items_main` ON (`items_main`.`id` = `items_users`.`item_id`) WHERE (( `items_users`.time_create + `items_main`.srok) > unix_timestamp() OR `items_main`.srok = "0") AND `items_users`.`delete`="0" AND `items_users`.`inOdet`="0" AND `items_users`.`inShop`="30" and `items_main`.`type` != "18" AND `items_main`.`type` != "19" AND `items_main`.`type` != "20" AND `items_main`.`type` != "21" AND `items_main`.`type` != "22" AND `items_main`.`type` != "15" AND `items_main`.`type` != "12" AND `items_main`.`type` != "4" AND `items_main`.`type` != "5" AND `items_main`.`type` != "6" AND `items_main`.`type` != "1" AND `items_main`.`type` != "3" AND `items_main`.`type` != "8" AND `items_main`.`type` != "14" AND `items_main`.`type` != "13" AND `items_main`.`type` != "9" AND `items_main`.`type` != "10" AND `items_main`.`type` != "11" AND `items_main`.`type` != "29" AND `items_main`.`type` != "30" GROUP BY `items_users`.`item_id` ORDER BY `items_main`.`id` DESC'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$cr = 'c8c8c8';
|
||||||
|
$i = 0;
|
||||||
|
$steckCikl = 1;
|
||||||
|
while ($pl = mysql_fetch_array($cl)) {
|
||||||
|
// количетсво одинаковых предметов в комке
|
||||||
|
if ($preview == "preview") {
|
||||||
|
$steck = ['--', '--', '--', '--'];
|
||||||
|
}
|
||||||
|
if ($cr == 'd4d4d4') {
|
||||||
|
$cr = 'c8c8c8';
|
||||||
|
} else {
|
||||||
|
$cr = 'd4d4d4';
|
||||||
|
}
|
||||||
|
if ($preview == "preview" && ($steck[0] > 1 && $steck[0] > $steckCikl)) {
|
||||||
|
++$steckCikl;
|
||||||
|
} else {
|
||||||
|
$steckCikl = 1;
|
||||||
|
$d = mysql_fetch_array(
|
||||||
|
mysql_query(
|
||||||
|
'SELECT `id`,`items_id`,`data` FROM `items_main_data` WHERE `items_id` = "' . $pl['item_id'] . '" LIMIT 1'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if ($steck[0] > 1 && $preview == "preview") {
|
||||||
|
$po = $this->lookStats($d['data']);
|
||||||
|
} else {
|
||||||
|
$po = $this->lookStats($pl['data']);
|
||||||
|
}
|
||||||
|
if (($pl['type'] >= 18 && $pl['type'] <= 24) || $pl['type'] == 26 || $pl['type'] == 27) {
|
||||||
|
//Зоны блока +
|
||||||
|
if ($pl['inOdet'] != 14) {
|
||||||
|
$po['zonb']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$is2 = '';
|
||||||
|
$is1 = '<img src="https://img.new-combats.com/i/items/' . $pl['img'] . '"><br>';
|
||||||
|
if ($preview == "full") {
|
||||||
|
$is1 .= '<a href="?otdel=' . ((int)$_GET['otdel']) . '&toRent=3&itemid=' . (int)$_GET['itemid'] . '&buy=' . $pl[0] . '&sd4=' . $this->info['nextAct'] . '&rnd=' . $code . ' " >купить</a> ';
|
||||||
|
} elseif ($preview == "preview") {
|
||||||
|
$is1 .= '<a href="?otdel=' . ((int)$_GET['otdel']) . '&toRent=3&itemid=' . $pl['item_id'] . ' " >Просмотреть</a> ';
|
||||||
|
}
|
||||||
|
//название
|
||||||
|
|
||||||
|
$col = $this->itemsX($pl[0]);
|
||||||
|
if ($col > 1 && $pl['inGroup'] != 0 && $pl['inGroupCount'] > 1) {
|
||||||
|
$pl['kolvo'] = $col;
|
||||||
|
$pl['name'] .= ' (x' . $col . ')';
|
||||||
|
}
|
||||||
|
$is2 .= '<a href="https://new-combats.com/item/' . $pl['item_id'] . '" target="_blank">' . $pl['name'] . '</a> ';
|
||||||
|
if ($pl['massa'] > 0 && $preview == "full") {
|
||||||
|
$is2 .= '(Масса: ' . round($pl['massa'], 2) . ')';
|
||||||
|
if ($pl['gift'] != '') {
|
||||||
|
$ttl = '';
|
||||||
|
if ($pl['gift'] == 1) {
|
||||||
|
$ttl = 'Вы не можете передать этот предмет кому-либо';
|
||||||
|
} else {
|
||||||
|
$ttl = 'Этот предмет подарил ' . $pl['gift'] . '. Вы не сможете передать этот предмет кому-либо еще';
|
||||||
|
}
|
||||||
|
$is2 .= ' <img title="' . $ttl . '" src="https://img.new-combats.com/i/podarok.gif">';
|
||||||
|
}
|
||||||
|
if (isset($po['art'])) {
|
||||||
|
$is2 .= ' <img title="Артефакт" src="https://img.new-combats.com/i/artefact.gif">';
|
||||||
|
}
|
||||||
|
if (isset($po['sudba'])) {
|
||||||
|
if ($po['sudba'] == '0') {
|
||||||
|
$is2 .= ' <img title="Этот предмет будет связан общей судьбой с первым, кто наденет его. Никто другой не сможет его использовать." src="https://img.new-combats.com/i/destiny0.gif">';
|
||||||
|
} elseif ($po['sudba'] == '1') {
|
||||||
|
$is2 .= ' <img title="Этот предмет будет связан общей судьбой с первым, кто возьмет предмет. Никто другой не сможет его использовать." src="https://img.new-combats.com/i/destiny0.gif">';
|
||||||
|
} else {
|
||||||
|
$is2 .= ' <img title="Этот предмет связан общей судьбой с ' . $po['sudba'] . '. Никто другой не сможет его использовать." src="https://img.new-combats.com/i/desteny.gif">';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//цена
|
||||||
|
$is2 .= '<br><strong>Цена: ';
|
||||||
|
if ($steck[0] > 1 && $preview == "preview") {
|
||||||
|
$is2 .= $steck[3] . '-' . $steck[4] . ' кр.</strong> ';
|
||||||
|
} else {
|
||||||
|
$is2 .= $pl['1price'] . ' кр.</strong> ';
|
||||||
|
}
|
||||||
|
if ($pl['pricerep'] > 0) {
|
||||||
|
$is2 .= ' <small><strong>(' . round($pl['pricerep'], 2) . ' Воинственности)</strong></small>';
|
||||||
|
}
|
||||||
|
|
||||||
|
//долговечность
|
||||||
|
if ($pl['iznosMAX'] > 0) {
|
||||||
|
$izcol = '';
|
||||||
|
if (floor($pl['iznosNOW']) >= (floor($pl['iznosMAX']) - ceil($pl['iznosMAX']) / 100 * 20)) {
|
||||||
|
$izcol = 'brown';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($preview == "preview") {
|
||||||
|
$is2 .= '<br>Долговечность: <font color="' . $izcol . '">' . floor($steck[1]) . '/' . ceil(
|
||||||
|
$steck[2]
|
||||||
|
) . '</font>';
|
||||||
|
} else {
|
||||||
|
if ($pl['iznosMAXi'] == 999999999) {
|
||||||
|
$is2 .= '<br>Долговечность: <font color="brown">неразрушимо</font>';
|
||||||
|
} else {
|
||||||
|
$is2 .= '<br>Долговечность: <font color="' . $izcol . '">' . floor(
|
||||||
|
$pl['iznosNOW']
|
||||||
|
) . '/' . ceil($pl['iznosMAX']) . '</font>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Срок годности предмета
|
||||||
|
|
||||||
|
if ($po['srok'] > 0) {
|
||||||
|
$pl['srok'] = $po['srok'];
|
||||||
|
}
|
||||||
|
if ($pl['srok'] > 0 and $preview != "preview") {
|
||||||
|
if ($pl['time_create'] + $pl['srok'] < time()) {
|
||||||
|
$is2 .= '<br>Срок годности: ' . $this->timeOut($pl['srok']) . ' (испорчен)';
|
||||||
|
} else {
|
||||||
|
$is2 .= '<br>Срок годности: ' . $this->timeOut($pl['srok']) . ' (до ' . date(
|
||||||
|
'd.m.Y H:i', $pl['time_create'] + $pl['srok']
|
||||||
|
) . ')';
|
||||||
|
}
|
||||||
|
} elseif ($pl['srok'] > 0) {
|
||||||
|
$is2 .= '<br>Срок годности: ' . $this->timeOut($pl['srok']);
|
||||||
|
}
|
||||||
|
if ($pl['magic_chance'] > 0) {
|
||||||
|
$is2 .= '<br>Вероятность срабатывания: ' . min([$pl['magic_chance'], 100]) . '%';
|
||||||
|
}
|
||||||
|
|
||||||
|
//Продолжительность действия магии:
|
||||||
|
if ((int)$pl['magic_inci'] > 0) {
|
||||||
|
$efi = mysql_fetch_array(
|
||||||
|
mysql_query(
|
||||||
|
'SELECT `id2`,`mname`,`type1`,`img`,`mdata`,`actionTime`,`type2`,`type3`,`onlyOne`,`oneType`,`noAce`,`see`,`info`,`overch`,`bp`,`noch` FROM `eff_main` WHERE `id2` = "' . ((int)$pl['magic_inci']) . '" LIMIT 1'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (isset($efi['id2']) && $efi['actionTime'] > 0) {
|
||||||
|
$is2 .= '<br>Продолжительность действия: ' . $this->timeOut($efi['actionTime']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($preview == "full" || $preview == "preview") {
|
||||||
|
//<strong>Требуется минимальное:</strong>
|
||||||
|
$tr = '';
|
||||||
|
$t = $this->items['tr'];
|
||||||
|
$x = 0;
|
||||||
|
while ($x < count($t)) {
|
||||||
|
$n = $t[$x];
|
||||||
|
if (isset($po['tr_' . $n]) && $po['tr_' . $n] != 0) {
|
||||||
|
if ($po['tr_' . $n] > $this->stats[$n]) {
|
||||||
|
if ($n == 'rep') {
|
||||||
|
$temp = explode('::', $po['tr_' . $n]);
|
||||||
|
if ($this->rep['rep' . $temp[1]] < $temp[0]) {
|
||||||
|
$tr .= '<font color="red">';
|
||||||
|
$notr++;
|
||||||
|
}
|
||||||
|
unset($temp);
|
||||||
|
} elseif ($n != 'align' || floor($this->info['align']) != $po['tr_' . $n]) {
|
||||||
|
$tr .= '<font color="red">';
|
||||||
|
$notr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$tr .= '<br>• ';
|
||||||
|
if ($n == 'rep') {
|
||||||
|
$temp = explode('::', $po['tr_' . $n]);
|
||||||
|
$tr .= $this->is[$n] . ' ' . ucfirst(
|
||||||
|
str_replace('city', ' city', $temp[1])
|
||||||
|
) . ': ' . $temp[0];
|
||||||
|
unset($temp);
|
||||||
|
} elseif ($n != 'align') {
|
||||||
|
if ($n == 'sex') {
|
||||||
|
if ($po['tr_' . $n] == 1) {
|
||||||
|
$tr .= $this->is[$n] . ': Женский';
|
||||||
|
} else {
|
||||||
|
$tr .= $this->is[$n] . ': Мужской';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$tr .= $this->is[$n] . ': ' . $po['tr_' . $n];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$tr .= $this->is[$n] . ': ' . $this->align_nm[$po['tr_' . $n]];
|
||||||
|
}
|
||||||
|
if ($po['tr_' . $n] > $this->stats[$n]) {
|
||||||
|
if ($n != 'align' || floor($this->info['align']) != $po['tr_' . $n]) {
|
||||||
|
$tr .= '</font>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$x++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tr != '') {
|
||||||
|
$is2 .= '<br><strong>Требуется минимальное:</strong>' . $tr;
|
||||||
|
}
|
||||||
|
//<strong>Действует на:</strong>
|
||||||
|
$tr = '';
|
||||||
|
$t = $this->items['add'];
|
||||||
|
$x = 0;
|
||||||
|
while ($x < count($t)) {
|
||||||
|
$n = $t[$x];
|
||||||
|
if (isset($po['add_' . $n], $this->is[$n])) {
|
||||||
|
$z = '+';
|
||||||
|
if ($po['add_' . $n] < 0) {
|
||||||
|
$z = '';
|
||||||
|
}
|
||||||
|
$tr .= '<br>• ' . $this->is[$n] . ': ' . $z . '' . $po['add_' . $n];
|
||||||
|
}
|
||||||
|
$x++;
|
||||||
|
}
|
||||||
|
//действует на (броня)
|
||||||
|
$i = 1;
|
||||||
|
$bn = [1 => 'головы', 2 => 'корпуса', 3 => 'пояса', 4 => 'ног'];
|
||||||
|
while ($i <= 4) {
|
||||||
|
if (isset($po['add_mab' . $i])) {
|
||||||
|
if ($po['add_mab' . $i] == $po['add_mib' . $i] && $pl['geniration'] == 1) {
|
||||||
|
$z = '+';
|
||||||
|
if ($po['add_mab' . $i] < 0) {
|
||||||
|
$z = '';
|
||||||
|
}
|
||||||
|
$tr .= '<br>• Броня ' . $bn[$i] . ': ' . $z . '' . $po['add_mab' . $i];
|
||||||
|
} else {
|
||||||
|
$tr .= '<br>• Броня ' . $bn[$i] . ': ' . $po['add_mib' . $i] . '-' . $po['add_mab' . $i] . ' (' . $this->bronFx(
|
||||||
|
[$po['add_mib' . $i], $po['add_mab' . $i]]
|
||||||
|
) . ')';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
if ($tr != '') {
|
||||||
|
$is2 .= '<br><strong>Действует на:</strong>' . $tr;
|
||||||
|
}
|
||||||
|
//<strong>Свойства предмета:</strong>
|
||||||
|
$tr = '';
|
||||||
|
$t = $this->items['sv'];
|
||||||
|
if (isset($po['sv_yron_min'], $po['sv_yron_max'])) {
|
||||||
|
$tr .= '<br>• Урон: ' . $po['sv_yron_min'] . ' - ' . $po['sv_yron_max'];
|
||||||
|
}
|
||||||
|
$x = 0;
|
||||||
|
while ($x < count($t)) {
|
||||||
|
$n = $t[$x];
|
||||||
|
if (isset($po['sv_' . $n])) {
|
||||||
|
$z = '+';
|
||||||
|
if ($po['sv_' . $n] < 0) {
|
||||||
|
$z = '';
|
||||||
|
}
|
||||||
|
$tr .= '<br>• ' . $this->is[$n] . ': ' . $z . '' . $po['sv_' . $n];
|
||||||
|
}
|
||||||
|
$x++;
|
||||||
|
}
|
||||||
|
if ($pl['2too'] == 1) {
|
||||||
|
$tr .= '<br>• Второе оружие';
|
||||||
|
}
|
||||||
|
if ($pl['2h'] == 1) {
|
||||||
|
$tr .= '<br>• Двуручное оружие';
|
||||||
|
}
|
||||||
|
if (isset($po['zonb'])) {
|
||||||
|
$tr .= '<br>• Зоны блокирования: ';
|
||||||
|
if ($po['zonb'] > 0) {
|
||||||
|
$x = 1;
|
||||||
|
while ($x <= $po['zonb']) {
|
||||||
|
$tr .= '+';
|
||||||
|
$x++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$tr .= '—';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($tr != '') {
|
||||||
|
$is2 .= '<br><strong>Свойства предмета:</strong>' . $tr;
|
||||||
|
}
|
||||||
|
|
||||||
|
$tr = '';
|
||||||
|
|
||||||
|
if (isset($po['imposed']) && $po['imposed'] > 0) {
|
||||||
|
if ($po['imposed_lvl'] == 0) {
|
||||||
|
$rnc = 'maroon';
|
||||||
|
} elseif ($po['imposed_lvl'] == 1) {
|
||||||
|
$rnc = '#624542';
|
||||||
|
} elseif ($po['imposed_lvl'] == 2) {
|
||||||
|
$rnc = '#77090b';
|
||||||
|
} elseif ($po['imposed_lvl'] == 3) {
|
||||||
|
$rnc = '#d99800';
|
||||||
|
} else {
|
||||||
|
$rnc = '#282828';
|
||||||
|
}
|
||||||
|
$po['imposed_name'] = str_replace('Чары ', '', $po['imposed_name']);
|
||||||
|
$tr .= '<br>• <font color=' . $rnc . '>Наложены заклятия:</font> ' . $po['imposed_name'] . ' ';
|
||||||
|
unset($rnc);
|
||||||
|
}
|
||||||
|
if ($tr != '') {
|
||||||
|
$is2 .= '<br><strong>Улучшения предмета:</strong>';
|
||||||
|
$is2 .= $tr;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($notr == 0) {
|
||||||
|
$d[0] = 1;
|
||||||
|
if ($pl['magic_inc'] != '') {
|
||||||
|
$d[2] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isset($po['free_stats']) && $po['free_stats'] > 0) {
|
||||||
|
$is2 .= '<br><strong>Распределение статов:</strong>';
|
||||||
|
$is2 .= '• Возможных распределений: ' . $po['free_stats'] . '';
|
||||||
|
}
|
||||||
|
if (floor($pl['iznosNOW']) >= ceil($pl['iznosMAX'])) {
|
||||||
|
$d[0] = 0;
|
||||||
|
$d[2] = 0;
|
||||||
|
}
|
||||||
|
if (isset($po['complect']) || isset($po['complect2'])) {
|
||||||
|
$is2 .= '<br><i>Дополнительная информация:</i>';
|
||||||
|
}
|
||||||
|
if (isset($po['complect'])) {
|
||||||
|
//не отображается
|
||||||
|
$com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => ''];
|
||||||
|
$spc = mysql_query(
|
||||||
|
'SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po['complect'] . '" ORDER BY `x` ASC LIMIT 20'
|
||||||
|
);
|
||||||
|
while ($plc = mysql_fetch_array($spc)) {
|
||||||
|
$com1['name'] = $plc['name'];
|
||||||
|
$com1['text'] .= ' • <font color="green">' . $plc['x'] . '</font>: ';
|
||||||
|
//действие комплекта
|
||||||
|
$i1c = 0;
|
||||||
|
$i2c = 0;
|
||||||
|
$i1e = $this->lookStats($plc['data']);
|
||||||
|
while ($i1c < count($this->items['add'])) {
|
||||||
|
if (isset($i1e[$this->items['add'][$i1c]])) {
|
||||||
|
$i3c = $i1e[$this->items['add'][$i1c]];
|
||||||
|
if ($i3c > 0) {
|
||||||
|
$i3c = '+' . $i3c;
|
||||||
|
}
|
||||||
|
if ($i2c > 0) {
|
||||||
|
$com1['text'] .= ' ' . $this->is[$this->items['add'][$i1c]] . ': ' . $i3c;
|
||||||
|
} else {
|
||||||
|
$com1['text'] .= $this->is[$this->items['add'][$i1c]] . ': ' . $i3c;
|
||||||
|
}
|
||||||
|
$com1['text'] .= '<br>';
|
||||||
|
$i2c++;
|
||||||
|
}
|
||||||
|
$i1c++;
|
||||||
|
}
|
||||||
|
unset($i1c, $i2c, $i3c);
|
||||||
|
$com1['x']++;
|
||||||
|
}
|
||||||
|
$is2 .= '<br>• Часть комплекта: <strong>' . $com1['name'] . '</strong><br><small>';
|
||||||
|
$is2 .= $com1['text'];
|
||||||
|
$is2 .= '</small>';
|
||||||
|
}
|
||||||
|
if (isset($po['complect2'])) {
|
||||||
|
//не отображается
|
||||||
|
$com1 = ['name' => 'Неизвестный Комплект', 'x' => 0, 'text' => ''];
|
||||||
|
$spc = mysql_query(
|
||||||
|
'SELECT `id`,`com`,`name`,`x`,`data` FROM `complects` WHERE `com` = "' . $po['complect2'] . '" ORDER BY `x` ASC LIMIT 20'
|
||||||
|
);
|
||||||
|
while ($plc = mysql_fetch_array($spc)) {
|
||||||
|
$com1['name'] = $plc['name'];
|
||||||
|
$com1['text'] .= ' • <font color="green">' . $plc['x'] . '</font>: ';
|
||||||
|
//действие комплекта
|
||||||
|
$i1c = 0;
|
||||||
|
$i2c = 0;
|
||||||
|
$i1e = $this->lookStats($plc['data']);
|
||||||
|
while ($i1c < count($this->items['add'])) {
|
||||||
|
if (isset($i1e[$this->items['add'][$i1c]])) {
|
||||||
|
$i3c = $i1e[$this->items['add'][$i1c]];
|
||||||
|
if ($i3c > 0) {
|
||||||
|
$i3c = '+' . $i3c;
|
||||||
|
}
|
||||||
|
if ($i2c > 0) {
|
||||||
|
$com1['text'] .= ' ' . $this->is[$this->items['add'][$i1c]] . ': ' . $i3c;
|
||||||
|
} else {
|
||||||
|
$com1['text'] .= $this->is[$this->items['add'][$i1c]] . ': ' . $i3c;
|
||||||
|
}
|
||||||
|
$com1['text'] .= '<br>';
|
||||||
|
$i2c++;
|
||||||
|
}
|
||||||
|
$i1c++;
|
||||||
|
}
|
||||||
|
unset($i1c, $i2c, $i3c);
|
||||||
|
$com1['x']++;
|
||||||
|
}
|
||||||
|
$is2 .= '<br>• Часть комплекта (подгонка): <strong>' . $com1['name'] . '</strong><br><small>';
|
||||||
|
$is2 .= $com1['text'];
|
||||||
|
$is2 .= '</small>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$is2 .= '<small style="">';
|
||||||
|
if (isset($po['gravi'])) {
|
||||||
|
$is2 .= '<br>На поверхности выгравирована надпись: <strong>' . $po['gravi'] . '</strong>';
|
||||||
|
}
|
||||||
|
if ($pl['info'] != '') {
|
||||||
|
$is2 .= '<div><strong>Рекомендации:</strong></div><div>' . $pl['info'] . '</div>';
|
||||||
|
}
|
||||||
|
if ($po['info'] != '') {
|
||||||
|
$is2 .= '<div>' . $po['info'] . '</div>';
|
||||||
|
}
|
||||||
|
if ($pl['max_text'] - $pl['use_text'] > 0) {
|
||||||
|
$is2 .= '<div>Количество символов: ' . ($pl['max_text'] - $pl['use_text']) . '</div>';
|
||||||
|
}
|
||||||
|
if (isset($po['noremont'])) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет не подлежит ремонту</div>';
|
||||||
|
}
|
||||||
|
if (isset($po['nosale'])) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет нельзя продать</div>';
|
||||||
|
}
|
||||||
|
if (isset($po['nomodif'])) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет нельзя улучшать</div>';
|
||||||
|
}
|
||||||
|
if (isset($po['nodelete'])) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет нельзя выбросить</div>';
|
||||||
|
}
|
||||||
|
if (isset($po['frompisher']) && $po['frompisher'] > 0) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет из подземелья</div>';
|
||||||
|
}
|
||||||
|
if (isset($po['sleep_moroz']) && $po['sleep_moroz'] > 0) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет не портится во время сна</div>';
|
||||||
|
}
|
||||||
|
if (isset($po['fromlaba']) && $po['fromlaba'] > 0) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет из лабиринта</div>';
|
||||||
|
}
|
||||||
|
if (isset($po['vip_sale']) && $po['vip_sale'] > 0) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет куплен за 10% от стоимости</div>';
|
||||||
|
}
|
||||||
|
if ($pl['dn_delete'] > 0) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет будет удален при выходе из подземелья</div>';
|
||||||
|
}
|
||||||
|
if ($this->pokol > $pl['geni']) {
|
||||||
|
$is2 .= '<div style="color:brown">Предмет устарел</div>';
|
||||||
|
}
|
||||||
|
if (isset($po['zazuby']) && $po['zazuby'] > 0) {
|
||||||
|
$is2 .= '<div style="color:brown;">Предмет куплен за зубы</div>';
|
||||||
|
}
|
||||||
|
$is2 .= '</small>';
|
||||||
|
}
|
||||||
|
if ($preview == "preview") {
|
||||||
|
$kolvoprint = "<small style=\"float:right; color:grey;\" align=\"right\">Количество: <strong>$steck[0]</strong> шт.</small>";
|
||||||
|
}
|
||||||
|
echo '<tr style="background-color:#' . $cr . ';"><td width="100" style="padding:7px;" valign="middle" align="center">' . $is1 . '</td><td style="padding:7px;" valign="top">' . $kolvoprint . $is2 . '</td></tr>';
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($i == 0) {
|
||||||
|
echo '<tr style="background-color:#' . $cr . ';"><td style="padding:7px;" align="center" valign="top">Прилавок магазина пуст</td></tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Core;
|
||||||
|
|
||||||
|
class Config
|
||||||
|
{
|
||||||
|
private static self $instance;
|
||||||
|
private function __construct()
|
||||||
|
{
|
||||||
|
error_reporting(E_ALL ^ E_NOTICE);
|
||||||
|
|
||||||
|
ini_set('display_errors', 'Off');
|
||||||
|
ini_set('date.timezone', 'Europe/Moscow');
|
||||||
|
|
||||||
|
header('Cache-Control: no-cache, no-store, must-revalidate');
|
||||||
|
header('Pragma: no-cache');
|
||||||
|
header('Expires: 0');
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get(?string $key = null)
|
||||||
|
{
|
||||||
|
$c['ver'] = '1.8.3.7';
|
||||||
|
/* Конфигурации игры */
|
||||||
|
$c['name'] = 'Бойцовский Клуб';
|
||||||
|
$c['title'] = 'Новый «' . $c['name'] . '» - Бесплатная,браузерная онлайн игра'; //Название игры
|
||||||
|
$c['title2'] = ' - Бесплатная, онлайн игра посвященная сражениям и магии!';
|
||||||
|
$c['title3'] = $c['name'];
|
||||||
|
$c['keys'] = $c['name'] . ', combats.com, ' . $c['name'] . ' игра, ' . $c['name'] . ' играть, игра ' . $c['name'] . ', старый ' . $c['name'] . ', ' . $c['name'] . ' онлайн игра, ' . $c['name'] . ' браузерная игра, играть в ' . $c['name'] . ', игра бк, бк игра, старый бк, играть в бк, бк онлайн игра, новый бк, Легендарный ' . $c['name'] . ', легендарный бк, combats, комбатс, combats ru, combats com, OldBK, oldbk ru, oldbk com, олдбк, old bk, олд бк, mycombats, rebk, recombats, oldcombats, obk2'; //Ключевые слова META
|
||||||
|
$c['desc'] = '«' . $c['name'] . '» – это бесплатная увлекательная браузерная онлайн игра 2004-2009г, в которой сконцентрировано все самое лучшее от современных онлайн игр. В этой браузерной игре заложены самые интересные традиции всем известной онлайн игры под названием «' . $c['name'] . ' 2004-2009», которая, кстати, стала первооткрывателем всех браузерных игр.'; //Описание META
|
||||||
|
$c['footer'] = $c['name'] . ' © 2013-' . date('Y');
|
||||||
|
|
||||||
|
//Сервера
|
||||||
|
$c['host'] = 'new-combats.com';
|
||||||
|
$c['forum'] = 'forum.' . $c['host'];
|
||||||
|
$c['img'] = 'img.' . $c['host'];
|
||||||
|
$c['thiscity'] = 'capitalcity';
|
||||||
|
$c['capitalcity'] = $c['host'];
|
||||||
|
$c['abandonedplain'] = $c['host'];
|
||||||
|
$c['https'] = 'https://' . $c['host'] . DIRECTORY_SEPARATOR;
|
||||||
|
$c['exit'] = '<script>top.location.href="' . $c['https'] . '";</script>';
|
||||||
|
$c['support'] = 'support@' . $c['host'];
|
||||||
|
|
||||||
|
|
||||||
|
//Валюта
|
||||||
|
$c['curency_name'] = 'RUB';
|
||||||
|
$c['curency_value'] = 30;
|
||||||
|
|
||||||
|
//Бот клон
|
||||||
|
$c['bot_level'] = 0; // до какого лвл бот (включительно)
|
||||||
|
$c['propsk_die'] = 0; //Смерть при пропуске ходов, 0 - выкл. , >= 1 - количество пропусков до смерти при нападении
|
||||||
|
|
||||||
|
//Скупка
|
||||||
|
$c['exp'] = 0; //бонус опыта
|
||||||
|
$c['shop_type1'] = 100; //в гос НЕ ТРОГАТЬ
|
||||||
|
$c['shop_type2'] = 90; //в березку НЕ ТРОГАТЬ
|
||||||
|
$c['shop_all'] = 0; //Скупка на все! , 0 - сделать для отключения скупки.
|
||||||
|
$c['shop_all_type1'] = 100; //Скупка только с госе! , 0 - сделать для отключения скупки.
|
||||||
|
$c['shop_all_type2'] = 100; //Скупка только с березки! , 0 - сделать для отключения скупки.
|
||||||
|
//
|
||||||
|
$c['nosanich'] = true; //Странички Саныча не выпадают - true , выпадают - false
|
||||||
|
$c['zuby'] = false; //зубы
|
||||||
|
$c['limitedexp'] = false; //лимит опыта
|
||||||
|
$c['infinity5level'] = false; //вечные 5 уровни
|
||||||
|
$c['expstop'] = 2999999; //9; //Опыт на котором останавливаемся 11 149999999
|
||||||
|
$c['expstopu'] = 2999999; //Опыт на котором останавливаемся
|
||||||
|
$c['noobgade'] = false; //нуб квест (пещера)
|
||||||
|
$c['bonusonline'] = true; //бонус за онлайн
|
||||||
|
$c['level_ransfer'] = 8; //С какого уровня разрешены передачи
|
||||||
|
$c['znahar'] = true; //бесплатный знахарь
|
||||||
|
$c['nolevel'] = false; //лимитирование уровней
|
||||||
|
$c['noitembuy'] = false; //Не требует ресурсы для покупки
|
||||||
|
$c['effz'] = 0; //Скольким секундам равен заряд
|
||||||
|
$c['money_haot'] = true; //кр за хаоты
|
||||||
|
$c['crtoecr'] = 500; //Курс обмена кр на екр (если 0, то выключено)
|
||||||
|
$c['ecrtocr'] = 200; //Курс обмена екр на кр
|
||||||
|
$c['bonuslevel'] = true; //Бонус уровня
|
||||||
|
$c['bonussocial'] = false; //Бонус социальный
|
||||||
|
|
||||||
|
$c['w'] = date('w');
|
||||||
|
$c['m'] = date('m');
|
||||||
|
|
||||||
|
$c['counters'] = '';
|
||||||
|
$c['counters_noFrm'] = '';
|
||||||
|
$c['securetime'] = 0; //Время последнего возможного взлома персов (подбор пароля по базам данных других игр)
|
||||||
|
|
||||||
|
$c['copyright'] = 'Copyright © ' . date('Y') . ' « Новый Бойцовский Клуб »';
|
||||||
|
$c['db_user'] = 'prod1';
|
||||||
|
$c['db_name'] = 'game_production';
|
||||||
|
$c['db_password'] = 'Bz@fGaZjFU2206Ua';
|
||||||
|
return $c[$key] ?? $c;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function init(): Config
|
||||||
|
{
|
||||||
|
if (!isset(self::$instance)) {
|
||||||
|
self::$instance = new static();
|
||||||
|
}
|
||||||
|
return self::$instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Core;
|
||||||
|
|
||||||
|
use PDO;
|
||||||
|
|
||||||
|
class Database
|
||||||
|
{
|
||||||
|
private static self $instance;
|
||||||
|
protected static PDO $db;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Singleton.
|
||||||
|
*/
|
||||||
|
private function __construct() {
|
||||||
|
mysql_select_db(Config::get('db_name'), mysql_connect('localhost', Config::get('db_user'), Config::get('db_password')));
|
||||||
|
mysql_query('SET NAMES utf8mb4');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Для совместимости со старыми функциями mysql_*.
|
||||||
|
* @return Database
|
||||||
|
*/
|
||||||
|
public static function init(): Database
|
||||||
|
{
|
||||||
|
if (!isset(self::$instance)) {
|
||||||
|
self::$instance = new static();
|
||||||
|
}
|
||||||
|
return self::$instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Новое подключение к БД.
|
||||||
|
* @return PDO
|
||||||
|
*/
|
||||||
|
public static function pdoinit(): PDO
|
||||||
|
{
|
||||||
|
return new PDO(
|
||||||
|
'mysql:host=localhost;dbname=' . Config::get('db_name'),
|
||||||
|
Config::get('db_user'),
|
||||||
|
Config::get('db_password'),
|
||||||
|
[
|
||||||
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||||
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||||
|
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4",
|
||||||
|
PDO::ATTR_STRINGIFY_FETCHES => false,
|
||||||
|
PDO::ATTR_EMULATE_PREPARES => false,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,144 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Core;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use PDO;
|
||||||
|
use PDOException;
|
||||||
|
use PDOStatement;
|
||||||
|
|
||||||
|
class Db
|
||||||
|
{
|
||||||
|
|
||||||
|
private static PDO $db;
|
||||||
|
private static self $instance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DB constructor.
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
self::$db = Database::pdoinit();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
throw new Exception($e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function init(): void
|
||||||
|
{
|
||||||
|
self::$instance ??= new self();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $stmt
|
||||||
|
* @return PDOStatement
|
||||||
|
*/
|
||||||
|
private static function query(string $stmt): PDOStatement
|
||||||
|
{
|
||||||
|
self::init();
|
||||||
|
return self::$db->query($stmt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $stmt
|
||||||
|
* @return PDOStatement
|
||||||
|
*/
|
||||||
|
public static function prepare(string $stmt): PDOStatement
|
||||||
|
{
|
||||||
|
self::init();
|
||||||
|
return self::$db->prepare($stmt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $query
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
static public function exec(string $query): int
|
||||||
|
{
|
||||||
|
self::init();
|
||||||
|
return self::$db->exec($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
static public function lastInsertId(): string
|
||||||
|
{
|
||||||
|
self::init();
|
||||||
|
return self::$db->lastInsertId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $query
|
||||||
|
* @param array $args
|
||||||
|
* @return PDOStatement
|
||||||
|
*/
|
||||||
|
public static function run(string $query, array $args = []): PDOStatement
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if (!$args) {
|
||||||
|
return self::query($query);
|
||||||
|
}
|
||||||
|
$stmt = self::prepare($query);
|
||||||
|
$stmt->execute($args);
|
||||||
|
return $stmt;
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
throw new PDOException($e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $query
|
||||||
|
* @param array $args
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function getRow(string $query, array $args = [])
|
||||||
|
{
|
||||||
|
return self::run($query, $args)->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $query
|
||||||
|
* @param array $args
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getRows(string $query, array $args = []): array
|
||||||
|
{
|
||||||
|
return self::run($query, $args)->fetchAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $query
|
||||||
|
* @param array $args
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function getValue(string $query, array $args = [])
|
||||||
|
{
|
||||||
|
$result = self::getRow($query, $args);
|
||||||
|
if (!empty($result)) {
|
||||||
|
$result = array_shift($result);
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $query
|
||||||
|
* @param array $args
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getColumn(string $query, array $args = []): array
|
||||||
|
{
|
||||||
|
return self::run($query, $args)->fetchAll(PDO::FETCH_COLUMN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $query
|
||||||
|
* @param array $args
|
||||||
|
*/
|
||||||
|
public static function sql(string $query, array $args = [])
|
||||||
|
{
|
||||||
|
self::run($query, $args);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Core;
|
||||||
|
|
||||||
|
use PHPMailer;
|
||||||
|
|
||||||
|
class Mail
|
||||||
|
{
|
||||||
|
public static function send($to, $message, $subject = 'Бойцовский клуб')
|
||||||
|
{
|
||||||
|
require dirname(__DIR__) . '/mail/class.phpmailer.php';
|
||||||
|
$mail = new PHPMailer;
|
||||||
|
|
||||||
|
$mail->IsSMTP(); // Set mailer to use SMTP
|
||||||
|
$mail->Host = 'smtp.mail.yahoo.com'; // Specify main and backup server
|
||||||
|
$mail->SMTPAuth = true; // Enable SMTP authentication
|
||||||
|
$mail->Username = 'newcombats@yahoo.com'; // SMTP username
|
||||||
|
$mail->Password = 'uqcdbnsoagxcyysh';
|
||||||
|
$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
|
||||||
|
$mail->Port = 587;
|
||||||
|
$mail->CharSet = 'UTF-8';
|
||||||
|
|
||||||
|
$mail->From = 'newcombats@yahoo.com';
|
||||||
|
$mail->FromName = 'Бойцовский Клуб';
|
||||||
|
$mail->AddAddress($to); // Add a recipient
|
||||||
|
|
||||||
|
$mail->IsHTML(true); // Set email format to HTML
|
||||||
|
|
||||||
|
$mail->Subject = $subject;
|
||||||
|
$mail->Body = '<div>' . $message . '</div>';
|
||||||
|
$mail->AltBody = $message;
|
||||||
|
|
||||||
|
if (!$mail->Send()) {
|
||||||
|
return 'Message could not be sent. Mailer Error: ' . $mail->ErrorInfo;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Helpers;
|
||||||
|
|
||||||
|
class Str
|
||||||
|
{
|
||||||
|
public static function snakeCase($string): string
|
||||||
|
{
|
||||||
|
return strtolower(preg_replace(['/([a-z\d])([A-Z])/', '/([^_])([A-Z][a-z])/'], '$1_$2', $string));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training;
|
||||||
|
|
||||||
|
use DarksLight2\Helpers\Str;
|
||||||
|
use User;
|
||||||
|
|
||||||
|
abstract class StepFactory
|
||||||
|
{
|
||||||
|
abstract public function getTitle(): string;
|
||||||
|
abstract public function getMessage(): string;
|
||||||
|
abstract public function getRewards(): array;
|
||||||
|
public function onLocations(): array
|
||||||
|
{
|
||||||
|
return ['all'];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return Str::snakeCase(get_class($this));
|
||||||
|
}
|
||||||
|
public function getAnswer()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function allowedToMove(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isInfo(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function databaseRecord()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'completed' => false,
|
||||||
|
'progress' => [
|
||||||
|
'current' => 0,
|
||||||
|
'need' => 1,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class ChatFirstQuest extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Начало.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'Отправьте сообщение в общий чат.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'chat_first_quest';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isInfo(): bool
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class ChatFirstStep extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Начало.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'Помните, оскорблять, унижать, обсуждать политику, подстёгивать других игроков, как в общем чате так и в приватном приведет к временному ограничению возможности отправки сообщений в любой из чатов.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'chat_first_step';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class ChatSecondQuest extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Начало.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'Отправьте адресное сообщение в общий чат, нажав 1 раз по никнейму игрока либо в чате, либо со списка онлайна, который находится справа.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'chat_second_quest';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isInfo(): bool
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class ChatThirdQuest extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Начало.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'Отправьте адресное личное сообщение в чат, нажав 2 раза по никнему игрока либо в чате, либо со списка онлайна, который находится справа.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'chat_third_quest';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isInfo(): bool
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class MyUserFirstQuest extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Персонаж.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'Сколько всего основных игровых Валют? Введите их число...';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'my_user_first_quest';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAnswer(): string
|
||||||
|
{
|
||||||
|
return '2';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class MyUserFirstStep extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Персонаж.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'В нашей игре, ваш персонаж расположен слева от экрана с игровыми локациями, там же, можно увидеть пустые слоты под предметы и параметры персонажа, ваш опыт, деньги, ежедневные задания...';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'my_user_first_step';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class MyUserFourthQuest extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Персонаж.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'Войдите во вкладку " Умения ", в правой части экрана, сверху, а далее, перейдите во вкладку " Приёмы ", после чего, выберите нужные Вам приемы, но будьте внимательны, некоторые из приемов могут быть на разные классы, обязательно прочтите их описание или потестируйте в поединках.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'my_user_fourth_quest';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isInfo(): bool
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class MyUserFourthStep extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Персонаж.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return '"Параметры Персонажа"<br>
|
||||||
|
Все игроки имеют свободные очки распределения параметров, что они дают игрокам конкретные модификаторы в зависимости от того, в какой из параметров распределяются очки распределения.<br>
|
||||||
|
--- если можно, добавить скрин как выглядит эта кнопка ---
|
||||||
|
Сила - Увеличивает мощность рубящего урона ( для Силачей )<br>
|
||||||
|
Ловкость - Увеличивает мощность колющего урона ( для Критоуворотов и Уворотов )<br>
|
||||||
|
Интуиция - Увеличивает мощность режущего урона ( для Критовиков )<br>
|
||||||
|
Выносливость - Увеличивает защиту от урона и магии, а так же добавит немного жизней. ( для Танков )<br>
|
||||||
|
Интелект - Увеличивает мощность магии. ( Для Любого Мага )<br>
|
||||||
|
Мудрость - Увеличивает колличество маны. ( Для Любого Мага )<br>
|
||||||
|
<br>
|
||||||
|
Дополнительно, игроки имеют очки распределения Мастерства Оружия, это позволит воинам увеличить урон, а магам, открыть новые приемы.<br>
|
||||||
|
Очки распределения Оружий распределяются точно так же, как и очки распределения параметров ( статов ).<br>
|
||||||
|
<br>
|
||||||
|
В случае, если вы распределили неверно любые доступные очки распределения, или хотите их изменить, вы можете это сделать, поднявшись на 2 этаж здания " Бойцовский Клуб ".';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'my_user_fourth_step';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAnswer(): string
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class MyUserSecondQuest extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Персонаж.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'Кого убивает игровой класс "Танк"?';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'my_user_second_quest';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAnswer(): string
|
||||||
|
{
|
||||||
|
return 'Уворотов и Силачей';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class MyUserSecondStep extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Персонаж.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'Опыт - Получение опыта происходит после сыгранных поединков, в зависимости от выбитого урона с противников, нажав по своему опыту, откроется таблица опыта, в которой можно посмотреть, когда вы получите дополнительное очко распределение параметров персонажа/оружий, награду за взятие " апа " или " Уровня "<br>
|
||||||
|
Текущий уровень - Отображает ваш текущий уровень персонажа.<br>
|
||||||
|
Победы - Отображает сумму всех ваших побед, в любых поединках.<br>
|
||||||
|
Поражения - Отображает сумму всех ваших поражений, в любых поединках.<br>
|
||||||
|
Ничьих - Отображает сумму всех поединков, которые завершились в ничью.<br>
|
||||||
|
Кредиты - Обычная игровая валюта - кредиты ( креды ), которые можно потратить в обычном магазине.<br>
|
||||||
|
Еврокредиты - Покупная игровая валюта - еврокредиты ( екры ) , которые можно потратить в магазине " Берёзка ". <br>
|
||||||
|
Воинственность - Дополнительная игровая валюта, потратить её можно в Подпольной Лавке.<br>
|
||||||
|
Ежедневное задание - Отображает текущее ежедневное задание либо предоставляет возможность его взятия.<br>
|
||||||
|
Бонус - Позволяет получить немного кредитов или еврокредитов.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'my_user_second_step';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class MyUserThirdQuest extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Персонаж.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'Распределите свободные параметры распределения ( статы ) и параметры оружий ( умения ) в зависимости от выбранного вами при регистрации "Класса" игрока нажав по кнопке " + Способности ", а далее, после распределения параметров " Сохранить ".';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'my_user_third_quest';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isInfo(): bool
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function allowedToMove(): array
|
||||||
|
{
|
||||||
|
return ['cp1'];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training\Steps;
|
||||||
|
|
||||||
|
use DarksLight2\Training\StepFactory;
|
||||||
|
|
||||||
|
class MyUserThirdStep extends StepFactory
|
||||||
|
{
|
||||||
|
|
||||||
|
public function getTitle(): string
|
||||||
|
{
|
||||||
|
return 'Персонаж.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMessage(): string
|
||||||
|
{
|
||||||
|
return 'В нашей игре, существует 5 Воинских и 4 Магических класса, такие как:<br>
|
||||||
|
Критовик - Убивает Танков и Магов, основное оружие - Мечи<br>
|
||||||
|
Уворот - Убивает Критовиков и Силачей, основное оружие - Кинжалы<br>
|
||||||
|
Танк - Убивает Уворотов и Силачей, основное оружие - Дубина и щит.<br>
|
||||||
|
Силач - Убивает Критовиков и Магов, основное оружие - Топоры<br>
|
||||||
|
Критоуворот - Убивает Силачей и с небольшим шансом Критовиков и Уворотов, основное оружие - Кинжалы.<br>
|
||||||
|
<br>
|
||||||
|
Маг Огня - Атакующий маг, убивает Уворотов и Танков.<br>
|
||||||
|
Маг Воздуха - Атакующий маг, убивает Уворотов и Танков.<br>
|
||||||
|
Маг Земли - Защищающийся маг, слабый урон, хорошая защита.<br>
|
||||||
|
Маг Воды - Защищающийся маг, слабый урон, хорошая защита.';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortName(): string
|
||||||
|
{
|
||||||
|
return 'my_user_third_step';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRewards(): array
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function allowedToMove(): array
|
||||||
|
{
|
||||||
|
return ['cp1'];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
|
||||||
|
class TrainingException extends Exception
|
||||||
|
{
|
||||||
|
public static function alreadyRegistered(): self
|
||||||
|
{
|
||||||
|
return new self("The steps have been registered before");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function noRenderingFile(): self
|
||||||
|
{
|
||||||
|
return new self("Rendering file missing");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Training;
|
||||||
|
|
||||||
|
use Core\Db;
|
||||||
|
use DarksLight2\Training\Steps\ChatFirstStep;
|
||||||
|
use DarksLight2\Training\Steps\MyUserFirstQuest;
|
||||||
|
use DarksLight2\Training\Steps\MyUserFirstStep;
|
||||||
|
use DarksLight2\Training\Steps\MyUserFourthQuest;
|
||||||
|
use DarksLight2\Training\Steps\MyUserFourthStep;
|
||||||
|
use DarksLight2\Training\Steps\MyUserSecondQuest;
|
||||||
|
use DarksLight2\Training\Steps\MyUserSecondStep;
|
||||||
|
use DarksLight2\Training\Steps\MyUserThirdQuest;
|
||||||
|
use DarksLight2\Training\Steps\MyUserThirdStep;
|
||||||
|
use DarksLight2\Traits\Singleton;
|
||||||
|
use PassGen;
|
||||||
|
use PDO;
|
||||||
|
use stdClass;
|
||||||
|
use User;
|
||||||
|
|
||||||
|
class TrainingManager
|
||||||
|
{
|
||||||
|
use Singleton;
|
||||||
|
private int $user_id;
|
||||||
|
public string $current_step = '';
|
||||||
|
private array $registered_steps;
|
||||||
|
private array $completed_steps;
|
||||||
|
private array $active_steps;
|
||||||
|
|
||||||
|
private $database;
|
||||||
|
|
||||||
|
public function __construct(int $user_id, $refresh_token = true)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$this->register([
|
||||||
|
new ChatFirstStep(),
|
||||||
|
new MyUserFirstStep(),
|
||||||
|
new MyUserFirstQuest(),
|
||||||
|
new MyUserSecondStep(),
|
||||||
|
new MyUserSecondQuest(),
|
||||||
|
new MyUserThirdStep(),
|
||||||
|
new MyUserThirdQuest(),
|
||||||
|
new MyUserFourthStep(),
|
||||||
|
new MyUserFourthQuest(),
|
||||||
|
]);
|
||||||
|
} catch (TrainingException $e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->user_id = $user_id;
|
||||||
|
|
||||||
|
if($refresh_token) {
|
||||||
|
$this->generateToken();
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->database = Db::getRow('SELECT * FROM user_training WHERE user_id = ?', [$user_id]);
|
||||||
|
|
||||||
|
$this->createDatabaseRecord();
|
||||||
|
|
||||||
|
$this->database['data'] = json_decode($this->database['data'], true);
|
||||||
|
|
||||||
|
$this->selectActiveSteps();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCurrentStepName(): string
|
||||||
|
{
|
||||||
|
if(empty($this->current_step)) {
|
||||||
|
$this->current_step = array_key_first($this->active_steps) ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->current_step;
|
||||||
|
}
|
||||||
|
public function getRegistered(): array
|
||||||
|
{
|
||||||
|
return $this->registered_steps;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDatabaseData()
|
||||||
|
{
|
||||||
|
return $this->database;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addPoint($short_name, $closure = null)
|
||||||
|
{
|
||||||
|
if($short_name === $this->getCurrentStepName()) {
|
||||||
|
$this->database['data'][$short_name]['progress']['current']++;
|
||||||
|
if(isset($closure)) {
|
||||||
|
$closure($this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function nextStep()
|
||||||
|
{
|
||||||
|
|
||||||
|
if($this->database['data'][$this->getCurrentStepName()]['progress']['need'] <= $this->database['data'][$this->getCurrentStepName()]['progress']['current']) {
|
||||||
|
$this->database['data'][$this->getCurrentStepName()]['progress']['current'] = 0;
|
||||||
|
$this->database['data'][$this->getCurrentStepName()]['completed'] = true;
|
||||||
|
unset($this->active_steps[$this->getCurrentStepName()]);
|
||||||
|
$this->current_step = array_key_first($this->active_steps) ?? '';
|
||||||
|
$this->database['current'] = $this->getCurrentStepName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function previousStep()
|
||||||
|
{
|
||||||
|
$this->current_step = end($this->completed_steps) ?? '';
|
||||||
|
$this->database['current'] = $this->current_step;
|
||||||
|
$this->database['data'][$this->getCurrentStepName()]['completed'] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function selectActiveSteps()
|
||||||
|
{
|
||||||
|
foreach ($this->database['data'] as $step_name => $data) {
|
||||||
|
if($data['completed'] === false) {
|
||||||
|
$this->active_steps[$step_name] = $data;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->completed_steps[] = $step_name;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store()
|
||||||
|
{
|
||||||
|
Db::sql('UPDATE user_training SET data = ?, current = ? WHERE user_id = ?', [json_encode($this->database['data']), $this->database['current'], $this->user_id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param StepFactory[] $steps
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws \DarksLight2\Training\TrainingException
|
||||||
|
*/
|
||||||
|
public function register(array $steps)
|
||||||
|
{
|
||||||
|
if (!empty($this->steps)) {
|
||||||
|
throw TrainingException::alreadyRegistered();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($steps as $step) {
|
||||||
|
if($step instanceof StepFactory) {
|
||||||
|
$this->registered_steps[$step->getShortName()] = $step;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private function generateToken($length = 16)
|
||||||
|
{
|
||||||
|
|
||||||
|
$token = PassGen::new($length);
|
||||||
|
|
||||||
|
Db::run('UPDATE user_training SET api_token = ? WHERE user_id = ?', [
|
||||||
|
$token,
|
||||||
|
$this->user_id
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createDatabaseRecord()
|
||||||
|
{
|
||||||
|
if(!$this->database) {
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
foreach ($this->registered_steps as $step) {
|
||||||
|
$data[$step->getShortName()] = $step->databaseRecord();
|
||||||
|
}
|
||||||
|
|
||||||
|
Db::sql('INSERT INTO user_training (user_id, data, current) VALUES (?, ?, ?)', [
|
||||||
|
$this->user_id,
|
||||||
|
json_encode($data, true),
|
||||||
|
array_key_first($data)
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->database = Db::getRow('SELECT * FROM user_training WHERE user_id = ?', [$this->user_id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws \DarksLight2\Training\TrainingException
|
||||||
|
*/
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
if(in_array(User::start()->room['file'], $this->registered_steps[$this->getCurrentStepName()]->onLocations()) || in_array('all', $this->registered_steps[$this->getCurrentStepName()]->onLocations())) {
|
||||||
|
$path = $_SERVER['DOCUMENT_ROOT'] . '/modules_data/steps/step.php';
|
||||||
|
|
||||||
|
if (file_exists($path)) {
|
||||||
|
$short_name = $this->getCurrentStepName();
|
||||||
|
$answer = $this->registered_steps[$this->getCurrentStepName()]->getAnswer();
|
||||||
|
require $path;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw TrainingException::noRenderingFile();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DarksLight2\Traits;
|
||||||
|
|
||||||
|
trait Singleton
|
||||||
|
{
|
||||||
|
private static self $instance;
|
||||||
|
|
||||||
|
public static function getInstance(...$args): self
|
||||||
|
{
|
||||||
|
if(!isset(self::$instance)) {
|
||||||
|
self::$instance = new self(...$args);
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
+222
-222
File diff suppressed because it is too large
Load Diff
+267
-267
File diff suppressed because it is too large
Load Diff
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
class DungeonEditor
|
class DungeonEditor
|
||||||
{
|
{
|
||||||
public $bs, $info, $see, $error, $gs = 1, $map = [0 => [] //êàðòà
|
public $bs, $info, $see, $error, $gs = 1, $map = [0 => [] //карта
|
||||||
], $id_dng, $cord = ['x' => 0], $sg = [1 => [1 => 1, 2 => 2, 3 => 3, 4 => 4], 2 => [1 => 2, 2 => 3, 3 => 4, 4 => 1], 3 => [1 => 3, 2 => 4, 3 => 1, 4 => 2], 4 => [1 => 4, 2 => 1, 3 => 2, 4 => 3]];
|
], $id_dng, $cord = ['x' => 0], $sg = [1 => [1 => 1, 2 => 2, 3 => 3, 4 => 4], 2 => [1 => 2, 2 => 3, 3 => 4, 4 => 1], 3 => [1 => 3, 2 => 4, 3 => 1, 4 => 2], 4 => [1 => 4, 2 => 1, 3 => 2, 4 => 3]];
|
||||||
|
|
||||||
public function start()
|
public function start()
|
||||||
{
|
{
|
||||||
global $u, $c, $code, $id;
|
global $u, $c, $code, $id;
|
||||||
$this->info = ['id2' => $id, 'id' => 0, 'name' => 'Ðåäàêòèðîâàíèå Ïåùåðû', 'room' => 0, 'time_start' => time(), 'time_start' => 0, 'uid' => 0, 'type' => 0, 'bsid' => 0];
|
$this->info = ['id2' => $id, 'id' => 0, 'name' => 'Редактирование Пещеры', 'room' => 0, 'time_start' => time(), 'time_start' => 0, 'uid' => 0, 'type' => 0, 'bsid' => 0];
|
||||||
|
|
||||||
$this->id_dng = $this->info['id2'];
|
$this->id_dng = $this->info['id2'];
|
||||||
$this->gs = $u->info['psevdo_s'];
|
$this->gs = $u->info['psevdo_s'];
|
||||||
@@ -18,24 +18,24 @@ class DungeonEditor
|
|||||||
|
|
||||||
if ($this->info['bsid'] > 0) {
|
if ($this->info['bsid'] > 0) {
|
||||||
$this->bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `city` = "' . $u->info['city'] . '" AND `id` = "' . $this->info['bsid'] . '" AND `time_start` = "' . $this->info['time_start'] . '" LIMIT 1'));
|
$this->bs = mysql_fetch_array(mysql_query('SELECT * FROM `bs_turnirs` WHERE `city` = "' . $u->info['city'] . '" AND `id` = "' . $this->info['bsid'] . '" AND `time_start` = "' . $this->info['time_start'] . '" LIMIT 1'));
|
||||||
//Åñëè ÁÑ çàêîí÷åíà
|
//Если БС закончена
|
||||||
if (isset($this->bs['id']) && $this->bs['users'] - $this->bs['users_finish'] < 2) {
|
if (isset($this->bs['id']) && $this->bs['users'] - $this->bs['users_finish'] < 2) {
|
||||||
$u->bsfinish($this->bs, false, null);
|
$u->bsfinish($this->bs, false, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ãåíåðèðóåì âèä ïåðñîíàæà (òîëüêî êàðòà)
|
/* генерируем вид персонажа (только карта)
|
||||||
$this->gs = 1; //ñìîòðèì ïðÿìî
|
$this->gs = 1; //смотрим прямо
|
||||||
2; //ñìîòðèì ëåâî
|
2; //смотрим лево
|
||||||
3; //ñìîòðèì âíèç
|
3; //смотрим вниз
|
||||||
4; //ñìîòðèì ïðàâî
|
4; //смотрим право
|
||||||
( ( ( `y` >= '.$u->info['psevdo_y'].' && `y` <= '.($u->info['psevdo_y']+4).' ) && ( `x` >= '.($u->info['psevdo_x']-1).' && `x` <= '.($u->info['psevdo_x']+1).' ) ) || ( (`x` = '.($u->info['psevdo_x']+2).' || `x` = '.($u->info['psevdo_x']-2).') && ( `y` = '.($u->info['psevdo_y']+3).' || `y` = '.($u->info['psevdo_y']+4).' ) ) )
|
( ( ( `y` >= '.$u->info['psevdo_y'].' && `y` <= '.($u->info['psevdo_y']+4).' ) && ( `x` >= '.($u->info['psevdo_x']-1).' && `x` <= '.($u->info['psevdo_x']+1).' ) ) || ( (`x` = '.($u->info['psevdo_x']+2).' || `x` = '.($u->info['psevdo_x']-2).') && ( `y` = '.($u->info['psevdo_y']+3).' || `y` = '.($u->info['psevdo_y']+4).' ) ) )
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$whr = [1 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` >= ' . $u->info['psevdo_y'] . ' && `y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //ïðÿìî
|
$whr = [1 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` >= ' . $u->info['psevdo_y'] . ' && `y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //прямо
|
||||||
3 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` <= ' . $u->info['psevdo_y'] . ' && `y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //âíèç
|
3 => ' ((`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`y` <= ' . $u->info['psevdo_y'] . ' && `y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //вниз
|
||||||
2 => ' ((`x` <= ' . $u->info['psevdo_x'] . ' && `x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //ëåâî
|
2 => ' ((`x` <= ' . $u->info['psevdo_x'] . ' && `x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //лево
|
||||||
4 => ' ((`x` >= ' . $u->info['psevdo_x'] . ' && `x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //ïðàâî
|
4 => ' ((`x` >= ' . $u->info['psevdo_x'] . ' && `x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //право
|
||||||
];
|
];
|
||||||
|
|
||||||
$i = 1;
|
$i = 1;
|
||||||
@@ -44,7 +44,7 @@ class DungeonEditor
|
|||||||
$this->map[0][$pl['y'] . '_' . $pl['x']] = $pl;
|
$this->map[0][$pl['y'] . '_' . $pl['x']] = $pl;
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
$this->map['good'] = $i; //öåëûõ êëåòîê
|
$this->map['good'] = $i; //целых клеток
|
||||||
$this->map[1] = $this->genMatix();
|
$this->map[1] = $this->genMatix();
|
||||||
$this->lookDungeon();
|
$this->lookDungeon();
|
||||||
}
|
}
|
||||||
@@ -53,43 +53,43 @@ class DungeonEditor
|
|||||||
{
|
{
|
||||||
global $u, $c;
|
global $u, $c;
|
||||||
$r = '';
|
$r = '';
|
||||||
/* îòîáðàæåíèå áîòîâ (áåñïîëåçíî â äàííîì ðåäàêòîðå) */
|
/* отображение ботов (бесполезно в данном редакторе) */
|
||||||
}
|
}
|
||||||
|
|
||||||
public function atack($id)
|
public function atack($id)
|
||||||
{
|
{
|
||||||
global $u, $c, $code;
|
global $u, $c, $code;
|
||||||
/* íàïàäåíèå, êàêîå íàïàäåíèå ìîæåò áûòü â ðåäàêòîðå? :) Íà ñàìîãî ñåáÿ, ñî ñòóëîì? :) */
|
/* нападение, какое нападение может быть в редакторе? :) На самого себя, со стулом? :) */
|
||||||
}
|
}
|
||||||
|
|
||||||
public function takeinv($id)
|
public function takeinv($id)
|
||||||
{
|
{
|
||||||
global $u, $c, $code;
|
global $u, $c, $code;
|
||||||
/* Ýòî ðåäàêòîð, à íå ìàéíêðàôò, çäåñü íè÷åãî ñîáèðàòü íå íóæíî :) */
|
/* Это редактор, а не майнкрафт, здесь ничего собирать не нужно :) */
|
||||||
}
|
}
|
||||||
|
|
||||||
public function takeit($id)
|
public function takeit($id)
|
||||||
{
|
{
|
||||||
global $u, $c, $code, $magic;
|
global $u, $c, $code, $magic;
|
||||||
/*  ðåäàêòîðå íè÷åãî íå ïàäàåò ;) */
|
/* В редакторе ничего не падает ;) */
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addItem($i)
|
public function addItem($i)
|
||||||
{
|
{
|
||||||
//äîáàâëÿåì ïðåäìåò â ïåùåðó (âîçìîæíî âûïàë èç áîòà èëè èç ñóíäóêà)
|
//добавляем предмет в пещеру (возможно выпал из бота или из сундука)
|
||||||
/* À ÷òî åùå? Ïóëüò ê óïðàâëåíèþ Çåìëåé?! */
|
/* А что еще? Пульт к управлению Землей?! */
|
||||||
}
|
}
|
||||||
|
|
||||||
public function itemsMap()
|
public function itemsMap()
|
||||||
{
|
{
|
||||||
global $u, $c, $code;
|
global $u, $c, $code;
|
||||||
/* Äà íè÷åãî çäåñü íå ïàäàåò! Ãîâîðþ æå! */
|
/* Да ничего здесь не падает! Говорю же! */
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testLike($x1, $y1, $x2, $y2)
|
public function testLike($x1, $y1, $x2, $y2)
|
||||||
{
|
{
|
||||||
//èç $x1,$y1 â $x2,$y2
|
//из $x1,$y1 в $x2,$y2
|
||||||
//äîñòóïíà-ëè ýòà êëåòêà äëÿ äåéñòâèé
|
//доступна-ли эта клетка для действий
|
||||||
$r = 0;
|
$r = 0;
|
||||||
$c1 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x1 . '" AND `y` = "' . $y1 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
$c1 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x1 . '" AND `y` = "' . $y1 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
||||||
$c2 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x2 . '" AND `y` = "' . $y2 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
$c2 = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $x2 . '" AND `y` = "' . $y2 . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
||||||
@@ -97,10 +97,10 @@ class DungeonEditor
|
|||||||
if ($x1 == $x2 && $y1 == $y2) {
|
if ($x1 == $x2 && $y1 == $y2) {
|
||||||
$r = 1;
|
$r = 1;
|
||||||
} elseif (
|
} elseif (
|
||||||
$x1 == $x2 - 1 && $c1['go_1'] == 1 || //ïðàâî
|
$x1 == $x2 - 1 && $c1['go_1'] == 1 || //право
|
||||||
$x1 == $x2 + 1 && $c1['go_2'] == 1 || //ëåâî
|
$x1 == $x2 + 1 && $c1['go_2'] == 1 || //лево
|
||||||
$y1 == $y2 - 1 && $c1['go_3'] == 1 || //âåðõ
|
$y1 == $y2 - 1 && $c1['go_3'] == 1 || //верх
|
||||||
$y1 == $y2 + 1 && $c1['go_4'] == 1 //íèç
|
$y1 == $y2 + 1 && $c1['go_4'] == 1 //низ
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
$r = 1;
|
$r = 1;
|
||||||
@@ -113,13 +113,13 @@ class DungeonEditor
|
|||||||
{
|
{
|
||||||
global $u, $c, $code;
|
global $u, $c, $code;
|
||||||
////i:{id,name,mapPoint,action,img,type},
|
////i:{id,name,mapPoint,action,img,type},
|
||||||
//'count':1,0:{0:1234,1:'Ñóíäóê',2:5,3:'',4:'test.gif',5:0,6:position,7:width,8:heigh,9:left,10:top},
|
//'count':1,0:{0:1234,1:'Сундук',2:5,3:'',4:'test.gif',5:0,6:position,7:width,8:heigh,9:left,10:top},
|
||||||
//psition 0 - ïî öåíòðó , 1- ñâåðõó, 2- ñëåâà, 3- ñíèçó, 4- ñïðàâà
|
//psition 0 - по центру , 1- сверху, 2- слева, 3- снизу, 4- справа
|
||||||
$r = '';
|
$r = '';
|
||||||
$whr = [1 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . ($u->info['psevdo_y'] + 1) . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //ïðÿìî
|
$whr = [1 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . ($u->info['psevdo_y'] + 1) . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //прямо
|
||||||
3 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] - 1) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //âíèç
|
3 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] - 1) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //вниз
|
||||||
2 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] - 1) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . '))OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //ëåâî
|
2 => ' (((`u`.`x` <= ' . ($u->info['psevdo_x'] - 1) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . '))OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ', //лево
|
||||||
4 => ' (((`u`.`x` >= ' . ($u->info['psevdo_x'] + 1) . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ' //ïðàâî
|
4 => ' (((`u`.`x` >= ' . ($u->info['psevdo_x'] + 1) . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) OR (`u`.`y` = ' . $u->info['psevdo_y'] . ' && `u`.`x` = ' . $u->info['psevdo_x'] . ')) ' //право
|
||||||
];
|
];
|
||||||
$sp = mysql_query('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "' . $this->id_dng . '" AND ((`u`.`s` = "0" OR `u`.`s` = "' . $this->gs . '") OR `u`.`s2` = "' . $this->gs . '") AND ' . $whr[$this->gs] . ' LIMIT 76');
|
$sp = mysql_query('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "' . $this->id_dng . '" AND ((`u`.`s` = "0" OR `u`.`s` = "' . $this->gs . '") OR `u`.`s2` = "' . $this->gs . '") AND ' . $whr[$this->gs] . ' LIMIT 76');
|
||||||
# die('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "'.$this->id_dng.'" AND ((`u`.`s` = "0" OR `u`.`s` = "'.$this->gs.'") OR `u`.`s2` = "'.$this->gs.'") AND '.$whr[$this->gs].' LIMIT 76');
|
# die('SELECT `u`.* FROM `dungeon_obj` AS `u` WHERE `u`.`dn` = "0" AND `u`.`for_dn` = "'.$this->id_dng.'" AND ((`u`.`s` = "0" OR `u`.`s` = "'.$this->gs.'") OR `u`.`s2` = "'.$this->gs.'") AND '.$whr[$this->gs].' LIMIT 76');
|
||||||
@@ -144,8 +144,8 @@ class DungeonEditor
|
|||||||
$da[$dt2[$is][0]] = $dt2[$is][1];
|
$da[$dt2[$is][0]] = $dt2[$is][1];
|
||||||
$is++;
|
$is++;
|
||||||
}
|
}
|
||||||
#if(isset($da['rl2']))$da['rl2'] = -round((int)$da['rl2'] * 0.70); // Ñëåâà
|
#if(isset($da['rl2']))$da['rl2'] = -round((int)$da['rl2'] * 0.70); // Слева
|
||||||
if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] - 230); // Ñëåâà
|
if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] - 230); // Слева
|
||||||
if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] + 160);
|
if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] + 160);
|
||||||
if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] - 120);
|
if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] - 120);
|
||||||
$pl['date'] = str_replace('"', '', json_encode($da));
|
$pl['date'] = str_replace('"', '', json_encode($da));
|
||||||
@@ -165,8 +165,8 @@ class DungeonEditor
|
|||||||
$da[$dt2[$is][0]] = $dt2[$is][1];
|
$da[$dt2[$is][0]] = $dt2[$is][1];
|
||||||
$is++;
|
$is++;
|
||||||
}
|
}
|
||||||
#if(isset($da['rl2']))$da['rl2'] = 355-round((int)$da['rl2'] * 0.30); // Ñïðàâà
|
#if(isset($da['rl2']))$da['rl2'] = 355-round((int)$da['rl2'] * 0.30); // Справа
|
||||||
if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] + 230); // Ñïðàâà
|
if (isset($da['rl2'])) $da['rl2'] = round((int)$da['rl2'] + 230); // Справа
|
||||||
if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] - 160);
|
if (isset($da['rl3'])) $da['rl3'] = round((int)$da['rl3'] - 160);
|
||||||
if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] + 120);
|
if (isset($da['rl4'])) $da['rl4'] = round((int)$da['rl4'] + 120);
|
||||||
$pl['date'] = str_replace('"', '', json_encode($da));
|
$pl['date'] = str_replace('"', '', json_encode($da));
|
||||||
@@ -188,13 +188,13 @@ class DungeonEditor
|
|||||||
////i:{id,login,mapPoint,sex,obraz,type,users_p},
|
////i:{id,login,mapPoint,sex,obraz,type,users_p},
|
||||||
//'count':1,0:{0:1015,1:'Test1',2:5,3:0,4:'1',5:'user',6:1},
|
//'count':1,0:{0:1015,1:'Test1',2:5,3:0,4:'1',5:'user',6:1},
|
||||||
$r = '';
|
$r = '';
|
||||||
$whr = [1 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . $u->info['psevdo_y'] . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //ïðÿìî
|
$whr = [1 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` >= ' . $u->info['psevdo_y'] . ' && `u`.`y` <= ' . ($u->info['psevdo_y'] + 4) . ')) ', //прямо
|
||||||
3 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . $u->info['psevdo_y'] . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //âíèç
|
3 => ' ((`u`.`x` <= ' . ($u->info['psevdo_x'] + 2) . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 2) . ') && (`u`.`y` <= ' . $u->info['psevdo_y'] . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 4) . ')) ', //вниз
|
||||||
2 => ' ((`u`.`x` <= ' . $u->info['psevdo_x'] . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //ëåâî
|
2 => ' ((`u`.`x` <= ' . $u->info['psevdo_x'] . ' && `u`.`x` >= ' . ($u->info['psevdo_x'] - 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ', //лево
|
||||||
4 => ' ((`u`.`x` >= ' . $u->info['psevdo_x'] . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //ïðàâî
|
4 => ' ((`u`.`x` >= ' . $u->info['psevdo_x'] . ' && `u`.`x` <= ' . ($u->info['psevdo_x'] + 4) . ') && (`u`.`y` <= ' . ($u->info['psevdo_y'] + 2) . ' && `u`.`y` >= ' . ($u->info['psevdo_y'] - 2) . ')) ' //право
|
||||||
];
|
];
|
||||||
$i = 0;
|
$i = 0;
|
||||||
//îòîáðàæàåì áîòîâ
|
//отображаем ботов
|
||||||
$sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE ' . $whr[$this->gs] . ' AND `dn` = "0" AND `for_dn` = "' . $this->id_dng . '" AND `u`.`delete` = "0" LIMIT 50');
|
$sp = mysql_query('SELECT `u`.*,`st`.* FROM `dungeon_bots` AS `u` LEFT JOIN `test_bot` AS `st` ON (`u`.`id_bot` = `st`.`id`) WHERE ' . $whr[$this->gs] . ' AND `dn` = "0" AND `for_dn` = "' . $this->id_dng . '" AND `u`.`delete` = "0" LIMIT 50');
|
||||||
while ($pl = mysql_fetch_array($sp)) {
|
while ($pl = mysql_fetch_array($sp)) {
|
||||||
$i++;
|
$i++;
|
||||||
@@ -219,7 +219,7 @@ class DungeonEditor
|
|||||||
$btli = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $user['battle'] . '" AND `team_win` = "-1" LIMIT 1'));
|
$btli = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle` WHERE `id` = "' . $user['battle'] . '" AND `team_win` = "-1" LIMIT 1'));
|
||||||
}
|
}
|
||||||
if (!isset($btli['id'])) {
|
if (!isset($btli['id'])) {
|
||||||
//Ñîçäàåì ïîåäèíîê
|
//Создаем поединок
|
||||||
$btl_id = 0;
|
$btl_id = 0;
|
||||||
$expB = 0;
|
$expB = 0;
|
||||||
$btl = ['players' => '', 'timeout' => 180, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0];
|
$btl = ['players' => '', 'timeout' => 180, 'type' => 0, 'invis' => 0, 'noinc' => 0, 'travmChance' => 0, 'typeBattle' => 0, 'addExp' => $expB, 'money' => 0];
|
||||||
@@ -243,7 +243,7 @@ class DungeonEditor
|
|||||||
$btl_id = mysql_insert_id();
|
$btl_id = mysql_insert_id();
|
||||||
|
|
||||||
if ($btl_id > 0) {
|
if ($btl_id > 0) {
|
||||||
//Äîáàâëÿåì áîòîâ
|
//Добавляем ботов
|
||||||
$sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `dn` = "' . $this->info['id'] . '" AND `x` = "' . $bot['x'] . '" AND `y` = "' . $bot['y'] . '" LIMIT 50');
|
$sp = mysql_query('SELECT * FROM `dungeon_bots` WHERE `for_dn` = "0" AND `dn` = "' . $this->info['id'] . '" AND `x` = "' . $bot['x'] . '" AND `y` = "' . $bot['y'] . '" LIMIT 50');
|
||||||
$j = 0;
|
$j = 0;
|
||||||
$logins_bot = [];
|
$logins_bot = [];
|
||||||
@@ -279,16 +279,16 @@ class DungeonEditor
|
|||||||
global $u, $c, $code;
|
global $u, $c, $code;
|
||||||
$go = 0;
|
$go = 0;
|
||||||
if ($id == 1) {
|
if ($id == 1) {
|
||||||
//âïåðåä
|
//вперед
|
||||||
$go = $this->sg[$this->gs][1];
|
$go = $this->sg[$this->gs][1];
|
||||||
} elseif ($id == 2) {
|
} elseif ($id == 2) {
|
||||||
//íàçàä
|
//назад
|
||||||
$go = $this->sg[$this->gs][3];
|
$go = $this->sg[$this->gs][3];
|
||||||
} elseif ($id == 3) {
|
} elseif ($id == 3) {
|
||||||
//íà ïðàâî
|
//на право
|
||||||
$go = $this->sg[$this->gs][4];
|
$go = $this->sg[$this->gs][4];
|
||||||
} elseif ($id == 4) {
|
} elseif ($id == 4) {
|
||||||
//íà ëåâî
|
//на лево
|
||||||
$go = $this->sg[$this->gs][2];
|
$go = $this->sg[$this->gs][2];
|
||||||
}
|
}
|
||||||
$thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
$thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
||||||
@@ -313,7 +313,7 @@ class DungeonEditor
|
|||||||
}
|
}
|
||||||
|
|
||||||
$tmap = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
$tmap = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
||||||
//íàëè÷èå ïðåäìåòà
|
//наличие предмета
|
||||||
if ($tmap['tr_items'] != '') {
|
if ($tmap['tr_items'] != '') {
|
||||||
$ti = explode(',', $tmap['tr_items']);
|
$ti = explode(',', $tmap['tr_items']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@@ -335,19 +335,19 @@ class DungeonEditor
|
|||||||
}
|
}
|
||||||
if ($trnit != '') {
|
if ($trnit != '') {
|
||||||
$trnit = rtrim($trnit, ', ');
|
$trnit = rtrim($trnit, ', ');
|
||||||
$this->error = 'Ó âàñ íåò ïîäõîäÿùåãî ïðåäìåòà. Òðåáóåòñÿ ' . $trnit;
|
$this->error = 'У вас нет подходящего предмета. Требуется ' . $trnit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$tmGo = $u->info['timeGo'] - time(); //ñêîëüêî ñåêóíä îñòàëîñü
|
$tmGo = $u->info['timeGo'] - time(); //сколько секунд осталось
|
||||||
if ($tmGo > 0) {
|
if ($tmGo > 0) {
|
||||||
$go = 0;
|
$go = 0;
|
||||||
$this->error = 'Íå òàê áûñòðî...';
|
$this->error = 'Не так быстро...';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($u->aves['now'] >= $u->aves['max']) {
|
if ($u->aves['now'] >= $u->aves['max']) {
|
||||||
$go = 0;
|
$go = 0;
|
||||||
$this->error = 'Âû íå ìîæåòå ïåðåìåùàòüñÿ, ðþêçàê ïåðåïîëíåí ...';
|
$this->error = 'Вы не можете перемещаться, рюкзак переполнен ...';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($go > 0) {
|
if ($go > 0) {
|
||||||
@@ -371,16 +371,16 @@ class DungeonEditor
|
|||||||
global $u, $c, $code;
|
global $u, $c, $code;
|
||||||
$go = 0;
|
$go = 0;
|
||||||
if ($id == 1) {
|
if ($id == 1) {
|
||||||
//âïåðåä
|
//вперед
|
||||||
$go = $this->sg[$this->gs][1];
|
$go = $this->sg[$this->gs][1];
|
||||||
} elseif ($id == 2) {
|
} elseif ($id == 2) {
|
||||||
//íàçàä
|
//назад
|
||||||
$go = $this->sg[$this->gs][3];
|
$go = $this->sg[$this->gs][3];
|
||||||
} elseif ($id == 3) {
|
} elseif ($id == 3) {
|
||||||
//íà ïðàâî
|
//на право
|
||||||
$go = $this->sg[$this->gs][4];
|
$go = $this->sg[$this->gs][4];
|
||||||
} elseif ($id == 4) {
|
} elseif ($id == 4) {
|
||||||
//íà ëåâî
|
//на лево
|
||||||
$go = $this->sg[$this->gs][2];
|
$go = $this->sg[$this->gs][2];
|
||||||
}
|
}
|
||||||
$thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
$thp = mysql_fetch_array(mysql_query('SELECT * FROM `dungeon_map` WHERE `x` = "' . $u->info['psevdo_x'] . '" AND `y` = "' . $u->info['psevdo_y'] . '" AND `id_dng` = "' . $this->info['id2'] . '" LIMIT 1'));
|
||||||
@@ -410,7 +410,7 @@ class DungeonEditor
|
|||||||
public function testSt($id, $s)
|
public function testSt($id, $s)
|
||||||
{
|
{
|
||||||
$r = 0;
|
$r = 0;
|
||||||
//çàìåíÿåì îòîáðàæåíèå ñòåí â çàâèñèìîñòè îò óãëà îáçîðà
|
//заменяем отображение стен в зависимости от угла обзора
|
||||||
$s = $this->sg[$this->gs][$s];
|
$s = $this->sg[$this->gs][$s];
|
||||||
if (isset($this->map[1][$id]['id'])) {
|
if (isset($this->map[1][$id]['id'])) {
|
||||||
$r = $this->map[1][$id]['st'][($s - 1)];
|
$r = $this->map[1][$id]['st'][($s - 1)];
|
||||||
@@ -421,7 +421,7 @@ class DungeonEditor
|
|||||||
public function lookDungeon()
|
public function lookDungeon()
|
||||||
{
|
{
|
||||||
global $u, $c, $code, $pd;
|
global $u, $c, $code, $pd;
|
||||||
/* Ãåíåðèðóåì èçîáðàæåíèå êàðòû */
|
/* Генерируем изображение карты */
|
||||||
/* LEVEL 1 */
|
/* LEVEL 1 */
|
||||||
if ($this->testSt(2, 4) > 0 || $this->testSt(3, 2) > 0) {
|
if ($this->testSt(2, 4) > 0 || $this->testSt(3, 2) > 0) {
|
||||||
$pd[28] = 1;
|
$pd[28] = 1;
|
||||||
@@ -502,9 +502,9 @@ class DungeonEditor
|
|||||||
$pd[3] = 1;
|
$pd[3] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ãåíåðèðóåì ïðåäìåòû íà êàðòå */
|
/* Генерируем предметы на карте */
|
||||||
|
|
||||||
/* Ãåíåðèðóåì ïåðñîíàæåé è áîòîâ íà êàðòå */
|
/* Генерируем персонажей и ботов на карте */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -520,7 +520,7 @@ class DungeonEditor
|
|||||||
{
|
{
|
||||||
$r = [];
|
$r = [];
|
||||||
if ($this->gs == 1) {
|
if ($this->gs == 1) {
|
||||||
//1; //ñìîòðèì ïðÿìî
|
//1; //смотрим прямо
|
||||||
$r[1] = $this->getMatrix(0, -1);
|
$r[1] = $this->getMatrix(0, -1);
|
||||||
$r[2] = $this->getMatrix(0, 0);
|
$r[2] = $this->getMatrix(0, 0);
|
||||||
$r[3] = $this->getMatrix(0, 1);
|
$r[3] = $this->getMatrix(0, 1);
|
||||||
@@ -541,7 +541,7 @@ class DungeonEditor
|
|||||||
$r[18] = $this->getMatrix(4, 2);
|
$r[18] = $this->getMatrix(4, 2);
|
||||||
$r[19] = $this->getMatrix(4, -2);
|
$r[19] = $this->getMatrix(4, -2);
|
||||||
} elseif ($this->gs == 2) {
|
} elseif ($this->gs == 2) {
|
||||||
//2; //ñìîòðèì ëåâî
|
//2; //смотрим лево
|
||||||
$r[1] = $this->getMatrix(-1, 0);
|
$r[1] = $this->getMatrix(-1, 0);
|
||||||
$r[2] = $this->getMatrix(0, 0);
|
$r[2] = $this->getMatrix(0, 0);
|
||||||
$r[3] = $this->getMatrix(1, 0);
|
$r[3] = $this->getMatrix(1, 0);
|
||||||
@@ -562,7 +562,7 @@ class DungeonEditor
|
|||||||
$r[18] = $this->getMatrix(2, -4);
|
$r[18] = $this->getMatrix(2, -4);
|
||||||
$r[19] = $this->getMatrix(-2, -4);
|
$r[19] = $this->getMatrix(-2, -4);
|
||||||
} elseif ($this->gs == 3) {
|
} elseif ($this->gs == 3) {
|
||||||
//3; //ñìîòðèì âíèç
|
//3; //смотрим вниз
|
||||||
$r[1] = $this->getMatrix(0, 1);
|
$r[1] = $this->getMatrix(0, 1);
|
||||||
$r[2] = $this->getMatrix(0, 0);
|
$r[2] = $this->getMatrix(0, 0);
|
||||||
$r[3] = $this->getMatrix(0, -1);
|
$r[3] = $this->getMatrix(0, -1);
|
||||||
@@ -583,7 +583,7 @@ class DungeonEditor
|
|||||||
$r[18] = $this->getMatrix(-4, -2);
|
$r[18] = $this->getMatrix(-4, -2);
|
||||||
$r[19] = $this->getMatrix(-4, 2);
|
$r[19] = $this->getMatrix(-4, 2);
|
||||||
} elseif ($this->gs == 4) {
|
} elseif ($this->gs == 4) {
|
||||||
//4; //ñìîòðèì ïðàâî
|
//4; //смотрим право
|
||||||
$r[1] = $this->getMatrix(1, 0);
|
$r[1] = $this->getMatrix(1, 0);
|
||||||
$r[2] = $this->getMatrix(0, 0);
|
$r[2] = $this->getMatrix(0, 0);
|
||||||
$r[3] = $this->getMatrix(-1, 0);
|
$r[3] = $this->getMatrix(-1, 0);
|
||||||
|
|||||||
+1703
-1686
File diff suppressed because it is too large
Load Diff
+41
-41
@@ -10,7 +10,7 @@ class Filter
|
|||||||
return ($str);
|
return ($str);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
//Ñìàéëèêè
|
//Смайлики
|
||||||
private $sm = ["laugh" => 1, "fingal" => 1, "eek" => 1, "smoke" => 1, "hi" => 1, "bye" => 1, "king" => 1, "king2" => 1, "boks2" => 1, "boks" => 1, "gent" => 1, "lady" => 1, "tongue" => 1, "smil" => 1, "rotate" => 1, "ponder" => 1, "bow" => 1, "angel" => 1, "angel2" => 1, "hello" => 1, "dont" => 1, "idea" => 1, "mol" => 1, "super" => 1, "beer" => 1, "drink" => 1, "baby" => 1, "tongue2" => 1, "sword" => 1, "agree" => 1, "loveya" => 1, "kiss" => 1, "kiss2" => 1, "kiss3" => 1, "kiss4" => 1, "rose" => 1, "love" => 1, "love2" => 1, "confused" => 1, "yes" => 1, "no" => 1, "shuffle" => 1, "nono" => 1, "maniac" => 1, "privet" => 1, "ok" => 1, "ninja" => 1, "pif" => 1, "smash" => 1, "alien" => 1, "pirate" => 1, "gun" => 1, "trup" => 1, "mdr" => 1, "sneeze" => 1, "mad" => 1, "friday" => 1, "cry" => 1, "grust" => 1, "rupor" => 1, "fie" => 1, "nnn" => 1, "row" => 1, "red" => 1, "lick" => 1, "help" => 1, "wink" => 1, "jeer" => 1, "tease" => 1, "nunu" => 1, "inv" => 1, "duel" => 1, "susel" => 1, "nun" => 1, "kruger" => 1, "flowers" => 1, "horse" => 1, "hug" => 1, "str" => 1, "alch" => 1, "pal" => 1, "mag" => 1, "sniper" => 1, "vamp" => 1, "doc" => 1, "doc2" => 1, "sharp" => 1, "naem" => 1, "naem2" => 1, "naem3" => 1, "invis" => 1, "chtoza" => 1, "beggar" => 1, "sorry" => 1, "sorry2" => 1, "creator" => 1, "grace" => 1, "dustman" => 1, "carreat" => 1, "lordhaos" => 1, "ura" => 1, "elix" => 1, "dedmoroz" => 1, "snegur" => 1, "showng" => 1, "superng" => 1, "podz" => 1, "sten" => 1, "devil" => 1, "cat" => 1, "owl" => 1, "lightfly" => 1, "snowfight" => 1, "rocket" => 1, "ball" => 1, "smile" => 1, "fuck" => 1];
|
private $sm = ["laugh" => 1, "fingal" => 1, "eek" => 1, "smoke" => 1, "hi" => 1, "bye" => 1, "king" => 1, "king2" => 1, "boks2" => 1, "boks" => 1, "gent" => 1, "lady" => 1, "tongue" => 1, "smil" => 1, "rotate" => 1, "ponder" => 1, "bow" => 1, "angel" => 1, "angel2" => 1, "hello" => 1, "dont" => 1, "idea" => 1, "mol" => 1, "super" => 1, "beer" => 1, "drink" => 1, "baby" => 1, "tongue2" => 1, "sword" => 1, "agree" => 1, "loveya" => 1, "kiss" => 1, "kiss2" => 1, "kiss3" => 1, "kiss4" => 1, "rose" => 1, "love" => 1, "love2" => 1, "confused" => 1, "yes" => 1, "no" => 1, "shuffle" => 1, "nono" => 1, "maniac" => 1, "privet" => 1, "ok" => 1, "ninja" => 1, "pif" => 1, "smash" => 1, "alien" => 1, "pirate" => 1, "gun" => 1, "trup" => 1, "mdr" => 1, "sneeze" => 1, "mad" => 1, "friday" => 1, "cry" => 1, "grust" => 1, "rupor" => 1, "fie" => 1, "nnn" => 1, "row" => 1, "red" => 1, "lick" => 1, "help" => 1, "wink" => 1, "jeer" => 1, "tease" => 1, "nunu" => 1, "inv" => 1, "duel" => 1, "susel" => 1, "nun" => 1, "kruger" => 1, "flowers" => 1, "horse" => 1, "hug" => 1, "str" => 1, "alch" => 1, "pal" => 1, "mag" => 1, "sniper" => 1, "vamp" => 1, "doc" => 1, "doc2" => 1, "sharp" => 1, "naem" => 1, "naem2" => 1, "naem3" => 1, "invis" => 1, "chtoza" => 1, "beggar" => 1, "sorry" => 1, "sorry2" => 1, "creator" => 1, "grace" => 1, "dustman" => 1, "carreat" => 1, "lordhaos" => 1, "ura" => 1, "elix" => 1, "dedmoroz" => 1, "snegur" => 1, "showng" => 1, "superng" => 1, "podz" => 1, "sten" => 1, "devil" => 1, "cat" => 1, "owl" => 1, "lightfly" => 1, "snowfight" => 1, "rocket" => 1, "ball" => 1, "smile" => 1, "fuck" => 1];
|
||||||
|
|
||||||
public function e($t)
|
public function e($t)
|
||||||
@@ -18,7 +18,7 @@ class Filter
|
|||||||
mysql_query(
|
mysql_query(
|
||||||
'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("#' . date('d.m.Y') . ' %' . date(
|
'INSERT INTO `chat` (`text`,`city`,`to`,`type`,`new`,`time`) VALUES ("#' . date('d.m.Y') . ' %' . date(
|
||||||
'H:i:s'
|
'H:i:s'
|
||||||
) . ': <b>' . mysql_real_escape_string($t) . '</b>","capitalcity","Èãðîìèð","6","1","-1")'
|
) . ': <b>' . mysql_real_escape_string($t) . '</b>","capitalcity","Игромир","6","1","-1")'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,8 +56,8 @@ class Filter
|
|||||||
{
|
{
|
||||||
$str = strtolower($string);
|
$str = strtolower($string);
|
||||||
if (strtolower('S') != 's') {
|
if (strtolower('S') != 's') {
|
||||||
$ru = 'ÀÁÂÃÄŨÆÇÈÉÊËÌÍÎÐÏÑÒÓÔÕÖרÙÚÜÛÝÞß';
|
$ru = 'АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ';
|
||||||
$ru2 = 'àáâãä叿çèéêëìíîðïñòóôõö÷øùúüûýþÿ';
|
$ru2 = 'абвгдеёжзийклмнорпстуфхцчшщъьыэюя';
|
||||||
$en = 'QWERTYUIOPASDFGHJKLZXCVBNM';
|
$en = 'QWERTYUIOPASDFGHJKLZXCVBNM';
|
||||||
$en2 = 'qwertyuiopasdfghjklzxcvbnm';
|
$en2 = 'qwertyuiopasdfghjklzxcvbnm';
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@@ -77,7 +77,7 @@ class Filter
|
|||||||
public function spamFiltr($txt)
|
public function spamFiltr($txt)
|
||||||
{
|
{
|
||||||
|
|
||||||
$txt = str_replace('¸', 'å', $txt);
|
$txt = str_replace('ё', 'е', $txt);
|
||||||
|
|
||||||
$nospam = 0;
|
$nospam = 0;
|
||||||
$txt = str_replace('>', '', $txt);
|
$txt = str_replace('>', '', $txt);
|
||||||
@@ -91,7 +91,7 @@ class Filter
|
|||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
/* ôèëüòð */
|
/* фильтр */
|
||||||
$spam = mysql_fetch_array(mysql_query('SELECT * FROM `spam_word` WHERE `id` = 1 LIMIT 1'));
|
$spam = mysql_fetch_array(mysql_query('SELECT * FROM `spam_word` WHERE `id` = 1 LIMIT 1'));
|
||||||
$spam = $spam['data'];
|
$spam = $spam['data'];
|
||||||
//
|
//
|
||||||
@@ -100,45 +100,45 @@ class Filter
|
|||||||
|
|
||||||
$testEN2 = str_replace('"', '', $testEN2);
|
$testEN2 = str_replace('"', '', $testEN2);
|
||||||
$testEN2 = str_replace(' ', '', $testEN2);
|
$testEN2 = str_replace(' ', '', $testEN2);
|
||||||
$testEN2 = str_replace('à', 'a', $testEN2);
|
$testEN2 = str_replace('а', 'a', $testEN2);
|
||||||
$testEN2 = str_replace('á', 'b', $testEN2);
|
$testEN2 = str_replace('б', 'b', $testEN2);
|
||||||
$testEN2 = str_replace('ñ', 'c', $testEN2);
|
$testEN2 = str_replace('с', 'c', $testEN2);
|
||||||
$testEN2 = str_replace('â', 'b', $testEN2);
|
$testEN2 = str_replace('в', 'b', $testEN2);
|
||||||
$testEN2 = str_replace('å', 'e', $testEN2);
|
$testEN2 = str_replace('е', 'e', $testEN2);
|
||||||
$testEN2 = str_replace('ò', 't', $testEN2);
|
$testEN2 = str_replace('т', 't', $testEN2);
|
||||||
$testEN2 = str_replace('î', 'o', $testEN2);
|
$testEN2 = str_replace('о', 'o', $testEN2);
|
||||||
$testEN2 = str_replace('ð', 'p', $testEN2);
|
$testEN2 = str_replace('р', 'p', $testEN2);
|
||||||
$testEN2 = str_replace('ì', 'm', $testEN2);
|
$testEN2 = str_replace('м', 'm', $testEN2);
|
||||||
$testEN2 = str_replace('í', 'h', $testEN2);
|
$testEN2 = str_replace('н', 'h', $testEN2);
|
||||||
$testEN2 = str_replace('ó', 'y', $testEN2);
|
$testEN2 = str_replace('у', 'y', $testEN2);
|
||||||
$testEN2 = str_replace('ê', 'k', $testEN2);
|
$testEN2 = str_replace('к', 'k', $testEN2);
|
||||||
$testEN2 = str_replace('è', 'u', $testEN2);
|
$testEN2 = str_replace('и', 'u', $testEN2);
|
||||||
$testEN2 = str_replace('õ', 'x', $testEN2);
|
$testEN2 = str_replace('х', 'x', $testEN2);
|
||||||
$testEN2 = str_replace('ÿ', '9', $testEN2);
|
$testEN2 = str_replace('я', '9', $testEN2);
|
||||||
$testEN2 = str_replace('()', 'o', $testEN2);
|
$testEN2 = str_replace('()', 'o', $testEN2);
|
||||||
$testEN2 = str_replace('0', 'o', $testEN2);
|
$testEN2 = str_replace('0', 'o', $testEN2);
|
||||||
$testEN2 = preg_replace('/[^A-z]*/i', '', $testEN2);
|
$testEN2 = preg_replace('/[^A-z]*/i', '', $testEN2);
|
||||||
$testRU = preg_replace('/[^À-ÿ]*/i', '', $txt);
|
$testRU = preg_replace('/[^А-я]*/i', '', $txt);
|
||||||
|
|
||||||
$testRU2 = $txt;
|
$testRU2 = $txt;
|
||||||
$testRU2 = str_replace('a', 'à', $testRU2);
|
$testRU2 = str_replace('a', 'а', $testRU2);
|
||||||
$testRU2 = str_replace('b', 'á', $testRU2);
|
$testRU2 = str_replace('b', 'б', $testRU2);
|
||||||
$testRU2 = str_replace('c', 'ñ', $testRU2);
|
$testRU2 = str_replace('c', 'с', $testRU2);
|
||||||
$testRU2 = str_replace('b', 'â', $testRU2);
|
$testRU2 = str_replace('b', 'в', $testRU2);
|
||||||
$testRU2 = str_replace('e', 'å', $testRU2);
|
$testRU2 = str_replace('e', 'е', $testRU2);
|
||||||
$testRU2 = str_replace('t', 'ò', $testRU2);
|
$testRU2 = str_replace('t', 'т', $testRU2);
|
||||||
$testRU2 = str_replace('o', 'î', $testRU2);
|
$testRU2 = str_replace('o', 'о', $testRU2);
|
||||||
$testRU2 = str_replace('p', 'ð', $testRU2);
|
$testRU2 = str_replace('p', 'р', $testRU2);
|
||||||
$testRU2 = str_replace('m', 'ì', $testRU2);
|
$testRU2 = str_replace('m', 'м', $testRU2);
|
||||||
$testRU2 = str_replace('h', 'í', $testRU2);
|
$testRU2 = str_replace('h', 'н', $testRU2);
|
||||||
$testRU2 = str_replace('y', 'ó', $testRU2);
|
$testRU2 = str_replace('y', 'у', $testRU2);
|
||||||
$testRU2 = str_replace('k', 'ê', $testRU2);
|
$testRU2 = str_replace('k', 'к', $testRU2);
|
||||||
$testRU2 = str_replace('x', 'õ', $testRU2);
|
$testRU2 = str_replace('x', 'х', $testRU2);
|
||||||
$testRU2 = str_replace('u', 'è', $testRU2);
|
$testRU2 = str_replace('u', 'и', $testRU2);
|
||||||
$testRU2 = str_replace('()', 'î', $testRU2);
|
$testRU2 = str_replace('()', 'о', $testRU2);
|
||||||
$testRU2 = str_replace('0', 'î', $testRU2);
|
$testRU2 = str_replace('0', 'о', $testRU2);
|
||||||
$testRU2 = preg_replace('/[^À-ÿ]*/i', ' ', $testRU2);
|
$testRU2 = preg_replace('/[^А-я]*/i', ' ', $testRU2);
|
||||||
$testRU2 = preg_replace('/[^À-ß]*/i', ' ', $testRU2);
|
$testRU2 = preg_replace('/[^А-Я]*/i', ' ', $testRU2);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$spe = explode('|', $spam);
|
$spe = explode('|', $spam);
|
||||||
while ($i <= count($spe)) {
|
while ($i <= count($spe)) {
|
||||||
@@ -154,6 +154,6 @@ class Filter
|
|||||||
|
|
||||||
public function __clone()
|
public function __clone()
|
||||||
{
|
{
|
||||||
trigger_error('Äóáëèðîâàíèå íå äîïóñêàåòñÿ.', E_USER_ERROR);
|
trigger_error('Дублирование не допускается.', E_USER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,44 +1,55 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**@deprecated âðîäå íèãäå íå âûçûâàåòñÿ, íèêåì íå èñïîëüçóåòñÿ */
|
/**@deprecated вроде нигде не вызывается, никем не используется */
|
||||||
class GameDealer
|
class GameDealer
|
||||||
{
|
{
|
||||||
//Êîíôèãóðàöèè
|
//Конфигурации
|
||||||
private $c = [
|
private $c = [
|
||||||
'db_name' => 'pay_operations', //Òàáëèöà â êîòîðóþ çàíîñÿòñÿ äàííûå
|
'db_name' => 'pay_operations', //Таблица в которую заносятся данные
|
||||||
'db_host' => 'localhost',
|
'db_host' => 'localhost',
|
||||||
'db_user' => 'newcom1_abk',
|
'db_user' => 'newcom1_abk',
|
||||||
'db_pass' => '4nWYsIM[c?}P',
|
'db_pass' => '4nWYsIM[c?}P',
|
||||||
'db_base' => 'newcom1_abk', /* Íàñòðîéêè ïëàòåæåé */
|
'db_base' => 'newcom1_abk', /* Настройки платежей */
|
||||||
'ip_list' => ['127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'], //Óêàçûâàòü ÷åðåç çàïÿòóþ (Ðàçðåøåííûå IP)
|
'ip_list' => ['127,0,0,1,188.166.34.68,136.243.38.147,136.243.38.149,136.243.38.150,136.243.38.151,136.243.38.189,88.198.88.98'], //Указывать через запятую (Разрешенные IP)
|
||||||
'key' => 'qtzl0igb', //gamedealer key
|
'key' => 'qtzl0igb', //gamedealer key
|
||||||
'id' => '65643' //ID ïðîåêòà
|
'id' => '65643' //ID проекта
|
||||||
], $BACK = []; //Ðåçóëüòàò êîòîðûé âîçâðàùàåì â êîíöå
|
], $BACK = []; //Результат который возвращаем в конце
|
||||||
|
|
||||||
//Êîäèðóåì èç ÞÒÔ-8 â Êèðèëèöó
|
//Кодируем из ЮТФ-8 в Кирилицу
|
||||||
|
/**
|
||||||
|
* @param $text
|
||||||
|
* @return mixed
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
public function in($text)
|
public function in($text)
|
||||||
{
|
{
|
||||||
return iconv("UTF-8", "cp1251", $text);
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Êîäèðóåì èç Êèðèëèöó â ÞÒÔ-8
|
//Кодируем из Кирилицу в ЮТФ-8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $text
|
||||||
|
* @return mixed
|
||||||
|
* @deprecated
|
||||||
|
*/
|
||||||
public function out($text)
|
public function out($text)
|
||||||
{
|
{
|
||||||
return iconv("cp1251", "UTF-8", $text);
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Äîáàâëÿåì äàííûå â áàçó äàííûõ
|
//Добавляем данные в базу данных
|
||||||
public function add($type, $value, $money)
|
public function add($type, $value, $money)
|
||||||
{
|
{
|
||||||
mysql_query('INSERT INTO `' . $this->c['db_name'] . '` (`time`,`type`,`ip`,`value`,`money`,`project`) VALUES ("' . time() . '","' . mysql_real_escape_string($type) . '","' . $_SERVER['HTTP_X_REAL_IP'] . '","' . mysql_real_escape_string($value) . '","' . mysql_real_escape_string($money) . '","' . mysql_real_escape_string($this->id) . '")');
|
mysql_query('INSERT INTO `' . $this->c['db_name'] . '` (`time`,`type`,`ip`,`value`,`money`,`project`) VALUES ("' . time() . '","' . mysql_real_escape_string($type) . '","' . $_SERVER['HTTP_X_REAL_IP'] . '","' . mysql_real_escape_string($value) . '","' . mysql_real_escape_string($money) . '","' . mysql_real_escape_string($this->id) . '")');
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ïîäêëþ÷àåìñÿ ê áàçå äàííûõ
|
//Подключаемся к базе данных
|
||||||
public function connect_db()
|
public function connect_db()
|
||||||
{
|
{
|
||||||
$db = mysql_connect($this->c['db_host'], $this->c['db_user'], $this->c['db_pass']) or die('Îøèáêà ïîäêëþ÷åíèÿ ê MySQL ñåðâåðó!');
|
$db = mysql_connect($this->c['db_host'], $this->c['db_user'], $this->c['db_pass']) or die('Ошибка подключения к MySQL серверу!');
|
||||||
mysql_select_db($this->c['db_base'], $db) or die('Îøèáêà ïîäêëþ÷åíèÿ ê áàçå äàííûõ!');
|
mysql_select_db($this->c['db_base'], $db) or die('Ошибка подключения к базе данных!');
|
||||||
mysql_query('SET NAMES cp1251');
|
mysql_query('SET NAMES utf8mb4');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function output($a, $v = null)
|
public function output($a, $v = null)
|
||||||
@@ -69,7 +80,7 @@ class GameDealer
|
|||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ãåíåðèðóåì XML-ôàéë
|
//Генерируем XML-файл
|
||||||
public function backInformation()
|
public function backInformation()
|
||||||
{
|
{
|
||||||
header('Content-Type: text/html/force-download');
|
header('Content-Type: text/html/force-download');
|
||||||
@@ -77,7 +88,7 @@ class GameDealer
|
|||||||
echo $this->output($this->BACK, 1);
|
echo $this->output($this->BACK, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ïðîâåðêà ñóùåñòâîâàíèÿ ïåðñîíàæà
|
//Проверка существования персонажа
|
||||||
public function test_accaunt($nick)
|
public function test_accaunt($nick)
|
||||||
{
|
{
|
||||||
$r = false;
|
$r = false;
|
||||||
@@ -88,7 +99,7 @@ class GameDealer
|
|||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ïîëó÷àåò ñ÷åò â áàíêå ïî ëîãèíó
|
//Получает счет в банке по логину
|
||||||
public function getBank($nick)
|
public function getBank($nick)
|
||||||
{
|
{
|
||||||
$nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "' . mysql_real_escape_string($nick) . '" LIMIT 1'));
|
$nick = mysql_fetch_array(mysql_query('SELECT `id` FROM `users` WHERE `login` = "' . mysql_real_escape_string($nick) . '" LIMIT 1'));
|
||||||
@@ -96,7 +107,7 @@ class GameDealer
|
|||||||
return $nick['id'];
|
return $nick['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
//Ïîèñê ëîãèíà
|
//Поиск логина
|
||||||
public function bank_user($nick)
|
public function bank_user($nick)
|
||||||
{
|
{
|
||||||
$nick = mysql_fetch_array(mysql_query('SELECT `id`,`uid FROM `bank` WHERE `id` = "' . mysql_real_escape_string($nick) . '" LIMIT 1'));
|
$nick = mysql_fetch_array(mysql_query('SELECT `id`,`uid FROM `bank` WHERE `id` = "' . mysql_real_escape_string($nick) . '" LIMIT 1'));
|
||||||
@@ -104,79 +115,79 @@ class GameDealer
|
|||||||
return $nick['login'];
|
return $nick['login'];
|
||||||
}
|
}
|
||||||
|
|
||||||
//Íà÷èíàåì îáðàáîòêó çàïðîñîâ
|
//Начинаем обработку запросов
|
||||||
public function start_session()
|
public function start_session()
|
||||||
{
|
{
|
||||||
|
|
||||||
$ip = '';
|
$ip = '';
|
||||||
$ip = $_SERVER['HTTP_X_REAL_IP'];
|
$ip = $_SERVER['HTTP_X_REAL_IP'];
|
||||||
|
|
||||||
//Ïîäêëþ÷àåìñÿ ê ÁÄ
|
//Подключаемся к БД
|
||||||
$this->connect_db();
|
$this->connect_db();
|
||||||
|
|
||||||
//Ïîëó÷àåì äàííûå çàïðîñà
|
//Получаем данные запроса
|
||||||
//$xml = file_get_contents('php://input');
|
//$xml = file_get_contents('php://input');
|
||||||
|
|
||||||
//Ïàðñèíã XML çàïðîñà
|
//Парсинг XML запроса
|
||||||
if (function_exists('simplexml_load_string')) {
|
if (function_exists('simplexml_load_string')) {
|
||||||
$xml = simplexml_load_string($xml);
|
$xml = simplexml_load_string($xml);
|
||||||
} else {
|
} else {
|
||||||
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Íå óäàëîñü ïðîèçâåñòè îáðàáîòêó çàïðîñà']]]];
|
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Не удалось произвести обработку запроса']]]];
|
||||||
die($this->backInformation());
|
die($this->backInformation());
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->id = $xml->projectid;
|
$this->id = $xml->projectid;
|
||||||
|
|
||||||
if (!in_array($ip, $this->c['ip_list'])) {
|
if (!in_array($ip, $this->c['ip_list'])) {
|
||||||
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Íåò äîñòóïà ñ äàííîãî IP']]]];
|
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Нет доступа с данного IP']]]];
|
||||||
die($this->backInformation());
|
die($this->backInformation());
|
||||||
}
|
}
|
||||||
|
|
||||||
//Îáðàáîòêà çàïðîñîâ
|
//Обработка запросов
|
||||||
if ($xml->method == 'check_balance') {
|
if ($xml->method == 'check_balance') {
|
||||||
//<sign>MD5(method+MD5(gdKey))</sign>
|
//<sign>MD5(method+MD5(gdKey))</sign>
|
||||||
|
|
||||||
$sign = md5($xml->method . md5($this->c['key']));
|
$sign = md5($xml->method . md5($this->c['key']));
|
||||||
|
|
||||||
if ($sign == $xml->sign) {
|
if ($sign == $xml->sign) {
|
||||||
//Áàëàíñ äèëåðà
|
//Баланс дилера
|
||||||
$balance = 1000000;
|
$balance = 1000000;
|
||||||
$this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Áàëàíñ äèëåðà: ' . $balance], ['balance', $balance]]]];
|
$this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Баланс дилера: ' . $balance], ['balance', $balance]]]];
|
||||||
$this->add('4', 'check:' . $xml->nick . ':1' . $r, 0);
|
$this->add('4', 'check:' . $xml->nick . ':1' . $r, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif ($xml->method == 'check') {
|
} elseif ($xml->method == 'check') {
|
||||||
/*
|
/*
|
||||||
nick - ëîãèí ïåðñîíàæà <sign>MD5(nick+method+MD5(gdKey))</sign> */
|
nick - логин персонажа <sign>MD5(nick+method+MD5(gdKey))</sign> */
|
||||||
|
|
||||||
$sign = md5($xml->nick . $xml->method . md5($this->c['key']));
|
$sign = md5($xml->nick . $xml->method . md5($this->c['key']));
|
||||||
|
|
||||||
if ($sign == $xml->sign) {
|
if ($sign == $xml->sign) {
|
||||||
$xml->nick = $this->in($xml->nick);
|
$xml->nick = $this->in($xml->nick);
|
||||||
if ($this->test_accaunt($xml->nick) == true) {
|
if ($this->test_accaunt($xml->nick) == true) {
|
||||||
//Ïåðñîíàæ íàéäåí è çà÷èñëÿåì åìó èãðîâóþ âàëþòó
|
//Персонаж найден и зачисляем ему игровую валюту
|
||||||
$this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Áàíêîâñêèé ñ÷åò íàéäåí']]]];
|
$this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Банковский счет найден']]]];
|
||||||
$this->add('3', 'check:' . $xml->nick . ':1' . $r, 0);
|
$this->add('3', 'check:' . $xml->nick . ':1' . $r, 0);
|
||||||
} else {
|
} else {
|
||||||
//Ïåðñîíàæ íå íàéäåí
|
//Персонаж не найден
|
||||||
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ïëàòåæ íå îáðàáîòàí. Áàíêîâñêèé ñ÷åò íå íàéäåí.']]]];
|
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Платеж не обработан. Банковский счет не найден.']]]];
|
||||||
$this->add('-1', 'Ïåðñîíàæ íå íàéäåí:pay:' . $xml->nick . ':0', 0);
|
$this->add('-1', 'Персонаж не найден:pay:' . $xml->nick . ':0', 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elseif ($xml->method == 'pay') {
|
} elseif ($xml->method == 'pay') {
|
||||||
/* Ïðîâîäèì ïëàòåæ
|
/* Проводим платеж
|
||||||
nick - ëîãèí àêêàóíòà , projectid - id ïðîåêòà , sign , amount - äåíüãè , payid - id ïëàòåæà */
|
nick - логин аккаунта , projectid - id проекта , sign , amount - деньги , payid - id платежа */
|
||||||
|
|
||||||
$sign = md5($xml->nick . $xml->projectid . $xml->amount . $xml->payid . $xml->method . md5($this->c['key']));
|
$sign = md5($xml->nick . $xml->projectid . $xml->amount . $xml->payid . $xml->method . md5($this->c['key']));
|
||||||
|
|
||||||
if ($sign == $xml->sign) {
|
if ($sign == $xml->sign) {
|
||||||
$xml->nick = $this->in($xml->nick);
|
$xml->nick = $this->in($xml->nick);
|
||||||
if ($this->test_accaunt($xml->nick)) {
|
if ($this->test_accaunt($xml->nick)) {
|
||||||
//Ïåðñîíàæ íàéäåí è çà÷èñëÿåì åìó èãðîâóþ âàëþòó
|
//Персонаж найден и зачисляем ему игровую валюту
|
||||||
$bank = $this->test_accaunt($xml->nick);
|
$bank = $this->test_accaunt($xml->nick);
|
||||||
if ($bank > 0) {
|
if ($bank > 0) {
|
||||||
mysql_query('UPDATE `bank` SET `money2` = `money2` + ' . mysql_real_escape_string($xml->amount) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1');
|
mysql_query('UPDATE `bank` SET `money2` = `money2` + ' . mysql_real_escape_string($xml->amount) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1');
|
||||||
$this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Ïëàòåæ ïðîøåë óñïåøíî'], ['id', $this->c['id']]]]];
|
$this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Платеж прошел успешно'], ['id', $this->c['id']]]]];
|
||||||
$this->add('2', 'pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount);
|
$this->add('2', 'pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount);
|
||||||
|
|
||||||
$user = mysql_fetch_array(mysql_query('SELECT `id`,`uid` FROM `bank` WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1'));
|
$user = mysql_fetch_array(mysql_query('SELECT `id`,`uid` FROM `bank` WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1'));
|
||||||
@@ -184,59 +195,59 @@ class GameDealer
|
|||||||
|
|
||||||
mysql_query('UPDATE `users` SET `catch` = `catch` + ' . mysql_real_escape_string(floor($xml->amount)) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `catch` = `catch` + ' . mysql_real_escape_string(floor($xml->amount)) . ' WHERE `id` = "' . mysql_real_escape_string($xml->nick) . '" LIMIT 1');
|
||||||
|
|
||||||
$r = '<span class=date>' . date('d.m.Y H:i') . '</span> Àëõèìèê <img src=https://img.new-combats.com/i/align/align50.gif width=12 height=15 /><u><b>Enchanter</b> / Àâòîìàòè÷åñêàÿ îïëàòà</u> ñîîáùàåò: ';
|
$r = '<span class=date>' . date('d.m.Y H:i') . '</span> Алхимик <img src=https://img.new-combats.com/i/align/align50.gif width=12 height=15 /><u><b>Enchanter</b> / Автоматическая оплата</u> сообщает: ';
|
||||||
|
|
||||||
if ($user['sex'] == 1) {
|
if ($user['sex'] == 1) {
|
||||||
$r .= 'Óâàæàåìàÿ';
|
$r .= 'Уважаемая';
|
||||||
} else {
|
} else {
|
||||||
$r .= 'Óâàæàåìûé';
|
$r .= 'Уважаемый';
|
||||||
}
|
}
|
||||||
|
|
||||||
$r .= ' <b>' . $user['login'] . '</b>, íà Âàø áàíêîâñêèé ñ÷åò ¹' . $bank . ' çà÷èñëåíî ' . $xml->amount . ' Ekr. Áëàãîäàðèì Âàñ çà ïîêóïêó!';
|
$r .= ' <b>' . $user['login'] . '</b>, на Ваш банковский счет №' . $bank . ' зачислено ' . $xml->amount . ' Ekr. Благодарим Вас за покупку!';
|
||||||
|
|
||||||
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $user['city'] . "','" . $user['room'] . "','','" . $user['login'] . "','" . $r . "','-1','5','0')");
|
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $user['city'] . "','" . $user['room'] . "','','" . $user['login'] . "','" . $r . "','-1','5','0')");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ó ïîëüçîâàòåëÿ îòñóòñòâóåò áàíê'], ['id', $this->c['id']]]]];
|
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'У пользователя отсутствует банк'], ['id', $this->c['id']]]]];
|
||||||
$this->add('-1', 'Ó ïåðñîíàæà îòñóòñòâóåò áàíê:pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount);
|
$this->add('-1', 'У персонажа отсутствует банк:pay:' . $xml->nick . ':' . $xml->projectid . ':' . $xml->sign . ':' . $xml->amount . ':' . $xml->payid . ':' . $bank['id'], $xml->amount);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//Ïåðñîíàæ íå íàéäåí
|
//Персонаж не найден
|
||||||
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ïëàòåæ íå îáðàáîòàí. Ïåðñîíàæ íå íàéäåí.']]]];
|
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Платеж не обработан. Персонаж не найден.']]]];
|
||||||
$this->add('-1', 'Ïåðñîíàæ íå íàéäåí:pay:' . $xml->nick . ':0', 0);
|
$this->add('-1', 'Персонаж не найден:pay:' . $xml->nick . ':0', 0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//Îøèáêà ñèãíàòóðû
|
//Ошибка сигнатуры
|
||||||
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Îøèáêà ñèãíàòóðû']]]];
|
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ошибка сигнатуры']]]];
|
||||||
$this->add('-1', 'Îøèáêà ñèãíàòóðû:pay:' . $xml->nick . ':0', 0);
|
$this->add('-1', 'Ошибка сигнатуры:pay:' . $xml->nick . ':0', 0);
|
||||||
}
|
}
|
||||||
} elseif ($xml->method == 'check_login') {
|
} elseif ($xml->method == 'check_login') {
|
||||||
/* Ïðîâåðêà àêêàóíòà
|
/* Проверка аккаунта
|
||||||
nick - ëîãèí àêêàóíòà , projectid - id ïðîåêòà , sign */
|
nick - логин аккаунта , projectid - id проекта , sign */
|
||||||
$sign = md5($xml->nick . $xml->method . md5($this->c['key']));
|
$sign = md5($xml->nick . $xml->method . md5($this->c['key']));
|
||||||
|
|
||||||
if ($sign == $xml->sign) {
|
if ($sign == $xml->sign) {
|
||||||
$xml->nick = $this->in($xml->nick);
|
$xml->nick = $this->in($xml->nick);
|
||||||
if ($this->test_accaunt($xml->nick)) {
|
if ($this->test_accaunt($xml->nick)) {
|
||||||
//Ïåðñîíàæ íàéäåí
|
//Персонаж найден
|
||||||
$this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Ñ÷åò íàéäåí'], ['addinfo', $this->bank_user($xml->nick)]]]];
|
$this->BACK = [['gdanswer', [['status', '1'], ['desc', 'Счет найден'], ['addinfo', $this->bank_user($xml->nick)]]]];
|
||||||
$this->add('1', 'check_login:' . $xml->nick . ':1' . $r, 0);
|
$this->add('1', 'check_login:' . $xml->nick . ':1' . $r, 0);
|
||||||
} else {
|
} else {
|
||||||
//Ïåðñîíàæ íå íàéäåí
|
//Персонаж не найден
|
||||||
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ñ÷åò íå íàéäåí']]]];
|
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Счет не найден']]]];
|
||||||
$this->add('-1', 'Ïåðñîíàæ íå íàéäåí:check_login:' . $xml->nick . ':0', 0);
|
$this->add('-1', 'Персонаж не найден:check_login:' . $xml->nick . ':0', 0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//Îøèáêà ñèãíàòóðû
|
//Ошибка сигнатуры
|
||||||
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Îøèáêà ñèãíàòóðû']]]];
|
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Ошибка сигнатуры']]]];
|
||||||
$this->add('-1', 'Îøèáêà ñèãíàòóðû:pay:' . $xml->nick . ':0', 0);
|
$this->add('-1', 'Ошибка сигнатуры:pay:' . $xml->nick . ':0', 0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Íåèçâåñòíûé òèï çàïðîñà']]]];
|
$this->BACK = [['gdanswer', [['status', '-1'], ['desc', 'Неизвестный тип запроса']]]];
|
||||||
$this->add('-1', 'Íåèçâåñòíûé òèï çàïðîñà:error_method:gamedealer', 0);
|
$this->add('-1', 'Неизвестный тип запроса:error_method:gamedealer', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Âîçâðàùàåì ðåçóëüòàò
|
//Возвращаем результат
|
||||||
$this->backInformation();
|
$this->backInformation();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,132 +2,145 @@
|
|||||||
|
|
||||||
namespace Insallah;
|
namespace Insallah;
|
||||||
|
|
||||||
|
use Core\Db;
|
||||||
|
use User;
|
||||||
|
|
||||||
class Achievements
|
class Achievements
|
||||||
{
|
{
|
||||||
private $user;
|
private User $user;
|
||||||
private $info;
|
private $info;
|
||||||
private $data = [
|
private array $data = [
|
||||||
'zb' => [
|
'zb' => [
|
||||||
'questname' => 'Åæåäí.Çàäàíèÿ',
|
'questname' => 'Ежедн.Задания',
|
||||||
'quest' => 'Âûïîëíèòü çàäàíèÿ áàáêè.',
|
'quest' => 'Выполнить задания бабки.',
|
||||||
'check' => ['Çàäàíèé', 5, 25, 50, 100, 250],
|
'check' => ['Заданий', 5, 25, 50, 100, 250],
|
||||||
'prize' => ['Æåòîí <br>óñïåõà <br>', 5, 20, 40, 60, 100],
|
'prize' => ['Жетон <br>успеха <br>', 5, 20, 40, 60, 100],
|
||||||
'startlink' => 11
|
'startlink' => 11
|
||||||
],
|
],
|
||||||
'vx' => [
|
'vx' => [
|
||||||
'questname' => 'Õàîòè÷åñêèå áîè',
|
'questname' => 'Хаотические бои',
|
||||||
'quest' => 'Ïîáåäèòü â õàîòè÷åñêèõ áîÿõ.',
|
'quest' => 'Победить в хаотических боях.',
|
||||||
'check' => ['Ïîáåä', 50, 300, 400, 500, 1000],
|
'check' => ['Побед', 50, 300, 400, 500, 1000],
|
||||||
'prize' => ['åêð.', 25, 50, 75, 100, 200],
|
'prize' => ['екр.', 25, 50, 75, 100, 200],
|
||||||
'startlink' => 21
|
'startlink' => 21
|
||||||
],
|
],
|
||||||
'snt' => [
|
'snt' => [
|
||||||
'questname' => 'Ñóíäóê òðóïîæîðà',
|
'questname' => 'Сундук трупожора',
|
||||||
'quest' => 'Îòêðûòü ñóíäóê òðóïîæîðà.',
|
'quest' => 'Открыть сундук трупожора.',
|
||||||
'check' => ['Îòêðûòèé', 5, 25, 50, 100, 250],
|
'check' => ['Открытий', 5, 25, 50, 100, 250],
|
||||||
'prize' => ['åêð.', 10, 25, 50, 75, 200],
|
'prize' => ['екр.', 10, 25, 50, 75, 200],
|
||||||
'startlink' => 31
|
'startlink' => 31
|
||||||
],
|
],
|
||||||
'rp' => [
|
'rp' => [
|
||||||
'questname' => 'Ðóíû 8 ëâë.',
|
'questname' => 'Руны 8 лвл.',
|
||||||
'quest' => 'Ïîëó÷èòü ðóíó ïðè ïëàâêå ïëîõèõ çàãîòîâîê. [S]',
|
'quest' => 'Получить руну при плавке плохих заготовок. [S]',
|
||||||
'check' => ['Ðóí', 5, 10, 25, 50, 100],
|
'check' => ['Рун', 5, 10, 25, 50, 100],
|
||||||
'prize' => ['Ïëîõèå <br> çàãîòîâêè <br>', 5, 7, 10, 12, 15],
|
'prize' => ['Плохие <br> заготовки <br>', 5, 7, 10, 12, 15],
|
||||||
'startlink' => 41
|
'startlink' => 41
|
||||||
],
|
],
|
||||||
'rn' => [
|
'rn' => [
|
||||||
'questname' => 'Ðóíû 9 ëâë.',
|
'questname' => 'Руны 9 лвл.',
|
||||||
'quest' => 'Ïîëó÷èòü ðóíó ïðè ïëàâêå íîðìàëüíûõ çàãîòîâîê. [M]',
|
'quest' => 'Получить руну при плавке нормальных заготовок. [M]',
|
||||||
'check' => ['Ðóí', 5, 10, 15, 25, 50],
|
'check' => ['Рун', 5, 10, 15, 25, 50],
|
||||||
'prize' => ['Íîðìàëüíûå <br> çàãîòîâêè <br>', 5, 7, 9, 12, 15],
|
'prize' => ['Нормальные <br> заготовки <br>', 5, 7, 9, 12, 15],
|
||||||
'startlink' => 51
|
'startlink' => 51
|
||||||
],
|
],
|
||||||
'rb' => [
|
'rb' => [
|
||||||
'questname' => 'Ðóíû 10 ëâë.',
|
'questname' => 'Руны 10 лвл.',
|
||||||
'quest' => 'Ïîëó÷èòü ðóíó ïðè ïëàâêå èäåàëüíûõ çàãîòîâîê. [L]',
|
'quest' => 'Получить руну при плавке идеальных заготовок. [L]',
|
||||||
'check' => ['Ðóí', 2, 5, 8, 11, 15],
|
'check' => ['Рун', 2, 5, 8, 11, 15],
|
||||||
'prize' => ['Èäåàëüíûå <br> çàãîòîâêè <br>', 2, 4, 6, 10, 15],
|
'prize' => ['Идеальные <br> заготовки <br>', 2, 4, 6, 10, 15],
|
||||||
'startlink' => 61
|
'startlink' => 61
|
||||||
],
|
],
|
||||||
'pg' => [
|
'pg' => [
|
||||||
'questname' => 'Ãåðîè÷. Ñðàæåíèÿ',
|
'questname' => 'Героич. Сражения',
|
||||||
'quest' => 'Ïîó÷àñòâîâàòü â ãåðîè÷åñêîì ñðàæåíèè.',
|
'quest' => 'Поучаствовать в героическом сражении.',
|
||||||
'check' => ['Ó÷àñòèé', 100, 200, 400, 600, 1000],
|
'check' => ['Участий', 100, 200, 400, 600, 1000],
|
||||||
'prize' => ['Æåòîí <br>óñïåõà <br>', 10, 20, 40, 60, 80],
|
'prize' => ['Жетон <br>успеха <br>', 10, 20, 40, 60, 80],
|
||||||
'startlink' => 71
|
'startlink' => 71
|
||||||
],
|
],
|
||||||
'bv' => [
|
'bv' => [
|
||||||
'questname' => 'Ïðîäàæè Áàáóøêå',
|
'questname' => 'Продажи Бабушке',
|
||||||
'quest' => 'Ïðîäàòü áàáóøêå íàéäåííûå âåùè â ïåùåðå.',
|
'quest' => 'Продать бабушке найденные вещи в пещере.',
|
||||||
'check' => ['Ïðîäàæ', 5, 25, 50, 100, 250],
|
'check' => ['Продаж', 5, 25, 50, 100, 250],
|
||||||
'prize' => ['êð.', 500, 1000, 2000, 4000, 5000],
|
'prize' => ['кр.', 500, 1000, 2000, 4000, 5000],
|
||||||
'startlink' => 81
|
'startlink' => 81
|
||||||
],
|
],
|
||||||
'kw' => [
|
'kw' => [
|
||||||
'questname' => 'Êëàí Ïîåäèíêè',
|
'questname' => 'Клан Поединки',
|
||||||
'quest' => 'Ïîáåäèòü â êëàíîâîé âîéíå.',
|
'quest' => 'Победить в клановой войне.',
|
||||||
'check' => ['Ïîáåä', 5, 10, 15, 20, 25],
|
'check' => ['Побед', 5, 10, 15, 20, 25],
|
||||||
'prize' => ['Ñâèòîê <br> êëàíîâîãî<br> îïûòà ', 1, 2, 5, 10, 15],
|
'prize' => ['Свиток <br> кланового<br> опыта ', 1, 2, 5, 10, 15],
|
||||||
'startlink' => 91
|
'startlink' => 91
|
||||||
],
|
],
|
||||||
'pa' => [ # not implemented!
|
'pa' => [ # not implemented!
|
||||||
'questname' => 'Ïîêðîâèòåëüñòâî',
|
'questname' => 'Покровительство',
|
||||||
'quest' => 'Ïîëó÷èòü ïîêðîâèòåëüñòâî Àíãåëà.',
|
'quest' => 'Получить покровительство Ангела.',
|
||||||
'check' => ['Ïîëó÷åíî', 5, 25, 50, 100, 250],
|
'check' => ['Получено', 5, 25, 50, 100, 250],
|
||||||
'prize' => null,
|
'prize' => null,
|
||||||
'startlink' => null
|
'startlink' => null
|
||||||
],
|
],
|
||||||
'bs' => [
|
'bs' => [
|
||||||
'questname' => 'Áàøíÿ ñìåðòè',
|
'questname' => 'Башня смерти',
|
||||||
'quest' => 'Ïîáåäû â áàøíå ñìåðòè.',
|
'quest' => 'Победы в башне смерти.',
|
||||||
'check' => ['Ïîáåä', 1, 5, 10, 50, 500],
|
'check' => ['Побед', 1, 5, 10, 50, 500],
|
||||||
'prize' => ['åêð.', 1, 5, 10, 50, 200],
|
'prize' => ['екр.', 1, 5, 10, 50, 200],
|
||||||
'startlink' => 101
|
'startlink' => 101
|
||||||
],
|
],
|
||||||
'trn' => [ # not implemented!
|
'trn' => [ # not implemented!
|
||||||
'questname' => 'Òóðíèðû',
|
'questname' => 'Турниры',
|
||||||
'quest' => 'Ïîó÷àâñòâîâàòü â òóðíèðàõ.',
|
'quest' => 'Поучавствовать в турнирах.',
|
||||||
'check' => ['Ïîáåä', 25, 50, 100, 200, 500],
|
'check' => ['Побед', 25, 50, 100, 200, 500],
|
||||||
'prize' => ['åêð.', 25, 25, 25, 25, 50],
|
'prize' => ['екр.', 25, 25, 25, 25, 50],
|
||||||
'startlink' => 111
|
'startlink' => 111
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
public function __construct(\User $user)
|
public function __construct(User $user)
|
||||||
{
|
{
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
$this->info = Db::getRow('select * from users_achiv where id = ?', [$user->info['id']]);
|
$this->info = Db::getRow('select * from users_achiv where id = ?', [$user->info['id']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function prizeName($int, $string)
|
//fixme: сюда иногда приходит (NULL, NULL).
|
||||||
|
private function prizeName(?int $int, ?string $string): string
|
||||||
{
|
{
|
||||||
return in_array($string, ['åêð.', 'êð.']) ? $int . ' ' . $string : $string . ' ' . $int;
|
return in_array($string, ['екр.', 'кр.']) ? $int . ' ' . $string : $string . ' ' . $int;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function drawSunduk($nagr, $whatInside, $tier)
|
private function drawSunduk($nagr, $whatInside, $tier): string
|
||||||
{
|
{
|
||||||
return vsprintf('<img onclick="%s" onmouseover="%s" onmouseout="%s" onmousedown="%s" class="cp" src="%s" alt="Ñóíäóê">',
|
return vsprintf(
|
||||||
|
'<img onclick="%s" onmouseover="%s" onmouseout="%s" onmousedown="%s" class="cp" src="%s" alt="Сундук">',
|
||||||
[
|
[
|
||||||
"location.href='\main.php?titul&nagr=$nagr'",
|
"location.href='\main.php?titul&nagr=$nagr'",
|
||||||
"top.hi(this, '<b>Ñóíäóê $tier ðàíãà<hr>Ñîäåðæèò:<hr> $whatInside</b>', event, 2, 0, 1, 1, 'max-width:307px')",
|
"top.hi(this, '<b>Сундук $tier ранга<hr>Содержит:<hr> $whatInside</b>', event, 2, 0, 1, 1, 'max-width:307px')",
|
||||||
"top.hic();",
|
"top.hic();",
|
||||||
"top.hic();",
|
"top.hic();",
|
||||||
"https://img.new-combats.com/i/titul/nagr$tier.gif"
|
"https://img.new-combats.com/i/titul/nagr$tier.gif"
|
||||||
]);
|
]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getList()
|
public function getList(): string
|
||||||
{
|
{
|
||||||
$string = '';
|
$string = '';
|
||||||
$this->calculateCurrent(1);
|
$this->calculateCurrent(1);
|
||||||
|
|
||||||
foreach ($this->data as $key => $value) {
|
foreach ($this->data as $key => $value) {
|
||||||
//Áëÿ, êàêóþ õåðíþ ïðèõîäèòñÿ ãîðîäèòü!
|
|
||||||
//Ïåðâîå ÷èñëî = òðåáîâàíèå ñëåäóþùåãî òèðà ìèíóñ òðåáîâàíèå òåêóùåãî òèðà (íàäî íàáðàòü)
|
//Бля, какую херню приходится городить!
|
||||||
//Âòîðîå ÷èñëî = êîëè÷åñòâî äîñòèæåíèé ìèíóñ òðåáîâàíèå òåêóùåãî òèðà (íàáðàë)
|
//Первое число = требование следующего тира минус требование текущего тира (надо набрать)
|
||||||
//Òðåáîâàíèÿ òåêóùåãî òèðà îòíèìàþòñÿ ÷òîáû êàæäûé òèð íà÷èíàë ñ÷èòàòü ïðîöåíò ñ 0.
|
//Второе число = количество достижений минус требование текущего тира (набрал)
|
||||||
//Ïèçäû äàòü òîìó, êòî òàê óåáàíñêè íàçûâàåò ïåðåìåííûå, ÷òî íóæíî ïîëäíÿ âúåçæàòü ÷òî ïðîèñõîäèò.
|
//Требования текущего тира отнимаются чтобы каждый тир начинал считать процент с 0.
|
||||||
//È õåð ïîìåíÿåøü - âñ¸ ñëîìàåòñÿ. FFUUUUUUUUUUUUUU!!! Ins.
|
//Пизды дать тому, кто так уебански называет переменные, что нужно полдня въезжать что происходит.
|
||||||
|
//И хер поменяешь - всё сломается. FFUUUUUUUUUUUUUU!!! Ins.
|
||||||
|
|
||||||
|
if (!is_numeric($value['check'][$this->info['klas' . $key]])) {
|
||||||
|
// Потомы что первый элемент массива - слово. В РНР5.4 прокатывало, в РНР7.4 - нет.
|
||||||
|
$value['check'][$this->info['klas' . $key]] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
$percentToSuccess = Math::get100Percentage(
|
$percentToSuccess = Math::get100Percentage(
|
||||||
$value['check'][$this->info['klas' . $key] + 1] - $value['check'][$this->info['klas' . $key]],
|
$value['check'][$this->info['klas' . $key] + 1] - $value['check'][$this->info['klas' . $key]],
|
||||||
$this->info[$key] - $value['check'][$this->info['klas' . $key]]
|
$this->info[$key] - $value['check'][$this->info['klas' . $key]]
|
||||||
@@ -135,14 +148,15 @@ class Achievements
|
|||||||
$questname = empty($value['questname']) ? $value['quest'] : $value['questname'];
|
$questname = empty($value['questname']) ? $value['quest'] : $value['questname'];
|
||||||
$string .= '<h4>' . $questname . '</h4>';
|
$string .= '<h4>' . $questname . '</h4>';
|
||||||
$string .= '<strong>' . $value['quest'] . '</strong><br>';
|
$string .= '<strong>' . $value['quest'] . '</strong><br>';
|
||||||
$string .= 'Òåêóùèé Ðàíã: <strong>' . $this->info['klas' . $key] . '</strong> ';
|
$string .= 'Текущий Ранг: <strong>' . $this->info['klas' . $key] . '</strong> ';
|
||||||
$string .= 'Êîëè÷åñòâî ' . mb_strtolower($value['check'][0]) . ': <strong>' . $this->info[$key] . ' =' . $percentToSuccess . '%</strong>';
|
$string .= 'Количество ' . mb_strtolower($value['check'][0]) . ': <strong>' . $this->info[$key] . ' = ' . $percentToSuccess . '%</strong>';
|
||||||
|
//$string .= '<progress value="' . $percentToSuccess . '" max="100" style="accent-color:green; appearance: none;">' . $percentToSuccess . '</progress>';
|
||||||
|
|
||||||
$string .= Table::get([
|
$string .= Table::get([
|
||||||
['Ðàíãè', 1, 2, 3, 4, 5],
|
['Ранги', 1, 2, 3, 4, 5],
|
||||||
$value['check'],
|
$value['check'],
|
||||||
[
|
[
|
||||||
'Íàãðàäà',
|
'Награда',
|
||||||
$this->prizeName($value['prize'][1], $value['prize'][0]),
|
$this->prizeName($value['prize'][1], $value['prize'][0]),
|
||||||
$this->prizeName($value['prize'][2], $value['prize'][0]),
|
$this->prizeName($value['prize'][2], $value['prize'][0]),
|
||||||
$this->prizeName($value['prize'][3], $value['prize'][0]),
|
$this->prizeName($value['prize'][3], $value['prize'][0]),
|
||||||
@@ -157,7 +171,7 @@ class Achievements
|
|||||||
!empty($value['prize']) &&
|
!empty($value['prize']) &&
|
||||||
!empty($value['startlink'])
|
!empty($value['startlink'])
|
||||||
) {
|
) {
|
||||||
$string .= '<br>Íàãðàäà:<br>';
|
$string .= '<br>Награда:<br>';
|
||||||
$string .= $this->drawSunduk(
|
$string .= $this->drawSunduk(
|
||||||
$this->info[$key . '_n'] + $value['startlink'],
|
$this->info[$key . '_n'] + $value['startlink'],
|
||||||
$this->prizeName($value['prize'][$this->info[$key . '_n'] + 1], $value['prize'][0]),
|
$this->prizeName($value['prize'][$this->info[$key . '_n'] + 1], $value['prize'][0]),
|
||||||
@@ -182,6 +196,10 @@ class Achievements
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_null($this->info[$k])) {
|
||||||
|
$this->info[$k] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
$this->info["klas$k"] = 0;
|
$this->info["klas$k"] = 0;
|
||||||
$this->info["name$k"] = $this->data[$k]['questname'];
|
$this->info["name$k"] = $this->data[$k]['questname'];
|
||||||
$this->info["klasP$k"] = Math::get100Percentage($this->data[$k]['check'][1], $this->info[$k]);
|
$this->info["klasP$k"] = Math::get100Percentage($this->data[$k]['check'][1], $this->info[$k]);
|
||||||
@@ -190,7 +208,7 @@ class Achievements
|
|||||||
if ($this->info[$k] >= $this->data[$k]['check'][$i]) {
|
if ($this->info[$k] >= $this->data[$k]['check'][$i]) {
|
||||||
$this->info["klas$k"] = $i;
|
$this->info["klas$k"] = $i;
|
||||||
if ($i === 5) {
|
if ($i === 5) {
|
||||||
# Íà 5 ðàíãå äîëæíî îòäàâàòü ìàêñèìóì.
|
# На 5 ранге должно отдавать максимум.
|
||||||
$this->info["klasP$k"] = 100;
|
$this->info["klasP$k"] = 100;
|
||||||
} else {
|
} else {
|
||||||
$this->info["klasP$k"] = Math::get100Percentage(
|
$this->info["klasP$k"] = Math::get100Percentage(
|
||||||
@@ -203,10 +221,10 @@ class Achievements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInfo($user_id = null)
|
public function getInfo(?int $uid = null)
|
||||||
{
|
{
|
||||||
if (!is_null($user_id)) {
|
if (!is_null($uid)) {
|
||||||
$this->info = Db::getRow('select * from users_achiv where id = ?', [$user_id]);
|
$this->info = \Core\Db::getRow('select * from users_achiv where id = ?', [$uid]);
|
||||||
}
|
}
|
||||||
$this->calculateCurrent();
|
$this->calculateCurrent();
|
||||||
return $this->info;
|
return $this->info;
|
||||||
@@ -220,7 +238,7 @@ class Achievements
|
|||||||
|
|
||||||
private function addOne($name)
|
private function addOne($name)
|
||||||
{
|
{
|
||||||
Db::sql("update users_achiv set $name = $name + 1 where id = ?", [$this->user->info['id']]);
|
\Core\Db::sql("update users_achiv set $name = $name + 1 where id = ?", [$this->user->info['id']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateTier($name)
|
public function updateTier($name)
|
||||||
@@ -240,12 +258,12 @@ class Achievements
|
|||||||
/**
|
/**
|
||||||
* @return array[]
|
* @return array[]
|
||||||
*/
|
*/
|
||||||
public function getData()
|
public function getData(): array
|
||||||
{
|
{
|
||||||
return $this->data;
|
return $this->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hasNoTier4Access($nagr)
|
public function hasNoTier4Access($nagr): bool
|
||||||
{
|
{
|
||||||
return $this->user->info['level'] < 9 && in_array($nagr, [14, 15, 24, 25, 34, 35, 44, 45, 54, 55, 64, 65, 74, 75, 84, 85, 94, 95, 104, 105]);
|
return $this->user->info['level'] < 9 && in_array($nagr, [14, 15, 24, 25, 34, 35, 44, 45, 54, 55, 64, 65, 74, 75, 84, 85, 94, 95, 104, 105]);
|
||||||
}
|
}
|
||||||
@@ -257,7 +275,7 @@ class Achievements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTypes()
|
public function getTypes(): array
|
||||||
{
|
{
|
||||||
return array_keys($this->data);
|
return array_keys($this->data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Insallah\Tournament;
|
//use Insallah\Tournament;
|
||||||
|
|
||||||
require_once 'Core/Db.php';
|
//require_once 'Core/Db.php';
|
||||||
require_once 'Core/Math.php';
|
require_once 'Core/Math.php';
|
||||||
require_once 'Core/Table.php';
|
require_once 'Core/Table.php';
|
||||||
require_once 'Runes/Runes.php';
|
require_once 'Runes/Runes.php';
|
||||||
require_once 'Tournament/Tournament.php';
|
//require_once 'Tournament/Tournament.php';
|
||||||
require_once 'Tournament/TournamentModel.php';
|
//require_once 'Tournament/TournamentModel.php';
|
||||||
require_once 'Achievements.php';
|
require_once 'Achievements.php';
|
||||||
|
|
||||||
//Âìåñòî êðîíà äëÿ òóðíèðà.
|
//Вместо крона для турнира.
|
||||||
if (Tournament::IS_ENABLED) {
|
//if (Tournament::IS_ENABLED) {
|
||||||
(new Tournament())->startAllBattles();
|
// (new Tournament())->startAllBattles();
|
||||||
}
|
//}
|
||||||
@@ -1,170 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Insallah;
|
|
||||||
|
|
||||||
use Exception;
|
|
||||||
use http\Message;
|
|
||||||
use PDO;
|
|
||||||
use PDOException;
|
|
||||||
use PDOStatement;
|
|
||||||
|
|
||||||
class Db
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Íàñòðîéêè ïîäêëþ÷åíèÿ
|
|
||||||
* Ëó÷øå âûíîñèòü â êîíôèã
|
|
||||||
* self::DB_HOST -> Config::DB_HOST
|
|
||||||
*/
|
|
||||||
const DB_HOST = '127.0.0.1'; // localhost
|
|
||||||
const DB_USER = 'newcom1_abk';
|
|
||||||
const DB_PASSWORD = '4nWYsIM[c?}P';
|
|
||||||
const DB_NAME = 'newcom1_abk';
|
|
||||||
const CHARSET = 'cp1251';
|
|
||||||
const DB_PREFIX = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var PDO
|
|
||||||
*/
|
|
||||||
static private $db;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var null
|
|
||||||
*/
|
|
||||||
protected static $instance = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DB constructor.
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
if (self::$instance === null) {
|
|
||||||
try {
|
|
||||||
self::$db = new PDO(
|
|
||||||
'mysql:host=' . self::DB_HOST . ';dbname=' . self::DB_PREFIX . self::DB_NAME,
|
|
||||||
self::DB_USER,
|
|
||||||
self::DB_PASSWORD,
|
|
||||||
[
|
|
||||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
||||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
||||||
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES " . self::CHARSET,
|
|
||||||
]
|
|
||||||
);
|
|
||||||
} catch (PDOException $e) {
|
|
||||||
throw new Exception ($e->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return self::$instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $stmt
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
|
||||||
public static function query($stmt)
|
|
||||||
{
|
|
||||||
return self::$db->query($stmt);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $stmt
|
|
||||||
* @return PDOStatement
|
|
||||||
*/
|
|
||||||
public static function prepare($stmt)
|
|
||||||
{
|
|
||||||
return self::$db->prepare($stmt);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $query
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
static public function exec($query)
|
|
||||||
{
|
|
||||||
return self::$db->exec($query);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
static public function lastInsertId()
|
|
||||||
{
|
|
||||||
return self::$db->lastInsertId();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $query
|
|
||||||
* @param array $args
|
|
||||||
* @return PDOStatement
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public static function run($query, $args = [])
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
if (!$args) {
|
|
||||||
return self::query($query);
|
|
||||||
}
|
|
||||||
$stmt = self::prepare($query);
|
|
||||||
$stmt->execute($args);
|
|
||||||
return $stmt;
|
|
||||||
} catch (PDOException $e) {
|
|
||||||
throw new Exception($e->getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $query
|
|
||||||
* @param array $args
|
|
||||||
* @return mixed
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public static function getRow($query, $args = [])
|
|
||||||
{
|
|
||||||
return self::run($query, $args)->fetch();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $query
|
|
||||||
* @param array $args
|
|
||||||
* @return array
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public static function getRows($query, $args = [])
|
|
||||||
{
|
|
||||||
return self::run($query, $args)->fetchAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $query
|
|
||||||
* @param array $args
|
|
||||||
* @return mixed
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public static function getValue($query, $args = [])
|
|
||||||
{
|
|
||||||
$result = self::getRow($query, $args);
|
|
||||||
if (!empty($result)) {
|
|
||||||
$result = array_shift($result);
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param $query
|
|
||||||
* @param array $args
|
|
||||||
* @return array
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public static function getColumn($query, $args = [])
|
|
||||||
{
|
|
||||||
return self::run($query, $args)->fetchAll(PDO::FETCH_COLUMN);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public static function sql($query, $args = [])
|
|
||||||
{
|
|
||||||
self::run($query, $args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Insallah;
|
||||||
|
|
||||||
|
//use Core\Database;
|
||||||
|
use Exception;
|
||||||
|
//use http\Message;
|
||||||
|
use PDO;
|
||||||
|
use PDOException;
|
||||||
|
use PDOStatement;
|
||||||
|
|
||||||
|
class DbOld
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Настройки подключения
|
||||||
|
* Лучше выносить в конфиг
|
||||||
|
* self::DB_HOST -> Config::DB_HOST
|
||||||
|
*/
|
||||||
|
const DB_HOST = '127.0.0.1'; // localhost
|
||||||
|
const DB_USER = 'newcom1_abk';
|
||||||
|
const DB_PASSWORD = '4nWYsIM[c?}P';
|
||||||
|
const DB_NAME = 'newcom1_abk';
|
||||||
|
const CHARSET = 'utf8mb4';
|
||||||
|
const DB_PREFIX = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PDO
|
||||||
|
*/
|
||||||
|
static private $db;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var null
|
||||||
|
*/
|
||||||
|
protected static $instance = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DB constructor.
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
if (self::$instance === null) {
|
||||||
|
try {
|
||||||
|
self::$db = new PDO(
|
||||||
|
'mysql:host=' . self::DB_HOST . ';dbname=' . self::DB_PREFIX . self::DB_NAME,
|
||||||
|
self::DB_USER,
|
||||||
|
self::DB_PASSWORD,
|
||||||
|
[
|
||||||
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||||
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||||
|
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES " . self::CHARSET,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
// self::$db = Database::pdoinit();
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
throw new Exception($e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return self::$instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $stmt
|
||||||
|
* @return PDOStatement
|
||||||
|
*/
|
||||||
|
public static function query($stmt)
|
||||||
|
{
|
||||||
|
return self::$db->query($stmt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $stmt
|
||||||
|
* @return PDOStatement
|
||||||
|
*/
|
||||||
|
public static function prepare($stmt)
|
||||||
|
{
|
||||||
|
return self::$db->prepare($stmt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $query
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
static public function exec($query)
|
||||||
|
{
|
||||||
|
return self::$db->exec($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
static public function lastInsertId()
|
||||||
|
{
|
||||||
|
return self::$db->lastInsertId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $query
|
||||||
|
* @param array $args
|
||||||
|
* @return PDOStatement
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static function run($query, $args = [])
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if (!$args) {
|
||||||
|
return self::query($query);
|
||||||
|
}
|
||||||
|
$stmt = self::prepare($query);
|
||||||
|
$stmt->execute($args);
|
||||||
|
return $stmt;
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
throw new Exception($e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $query
|
||||||
|
* @param array $args
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function getRow($query, $args = [])
|
||||||
|
{
|
||||||
|
return self::run($query, $args)->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $query
|
||||||
|
* @param array $args
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getRows($query, $args = [])
|
||||||
|
{
|
||||||
|
return self::run($query, $args)->fetchAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $query
|
||||||
|
* @param array $args
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function getValue($query, $args = [])
|
||||||
|
{
|
||||||
|
$result = self::getRow($query, $args);
|
||||||
|
if (!empty($result)) {
|
||||||
|
$result = array_shift($result);
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $query
|
||||||
|
* @param array $args
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getColumn($query, $args = [])
|
||||||
|
{
|
||||||
|
return self::run($query, $args)->fetchAll(PDO::FETCH_COLUMN);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function sql($query, $args = [])
|
||||||
|
{
|
||||||
|
self::run($query, $args);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,19 +5,30 @@ namespace Insallah;
|
|||||||
/** All raw mathematics in one place. */
|
/** All raw mathematics in one place. */
|
||||||
class Math
|
class Math
|
||||||
{
|
{
|
||||||
public static function getPercentage($total, $number)
|
/**
|
||||||
|
* @param float|int $total
|
||||||
|
* @param int|null $number
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public static function getPercentage($total, ?int $number): float
|
||||||
{
|
{
|
||||||
|
if (is_null($number)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return $total > 0 ? round(($number * 100) / $total, 2) : 0;
|
return $total > 0 ? round(($number * 100) / $total, 2) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static function get100Percentage($total, $number)
|
public static function get100Percentage($total, ?int $number)
|
||||||
{
|
{
|
||||||
|
if (is_null($number)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return min(self::getPercentage($total, $number), 100);
|
return min(self::getPercentage($total, $number), 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Number-20% and Number+20% */
|
/** Number-20% and Number+20% */
|
||||||
public static function get20PercentRange($number)
|
public static function get20PercentRange($number): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'min' => $number * ((100 - 20) / 100),
|
'min' => $number * ((100 - 20) / 100),
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Insallah;
|
||||||
|
|
||||||
|
/** All raw mathematics in one place. */
|
||||||
|
class Math
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param float|int $total
|
||||||
|
* @param int|null $number
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public static function getPercentage($total, int $number): float
|
||||||
|
{
|
||||||
|
return $total > 0 ? round(($number * 100) / $total, 2) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function get100Percentage($total, int $number)
|
||||||
|
{
|
||||||
|
return min(self::getPercentage($total, $number), 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Number-20% and Number+20% */
|
||||||
|
public static function get20PercentRange($number): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'min' => $number * ((100 - 20) / 100),
|
||||||
|
'max' => $number * ((100 + 20) / 100),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function addPercent($num, $percent)
|
||||||
|
{
|
||||||
|
return $num + (($percent / 100) * $num);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,6 @@ namespace Insallah;
|
|||||||
class Runes
|
class Runes
|
||||||
{
|
{
|
||||||
/** Создаём руну в зависимости от уровня.
|
/** Создаём руну в зависимости от уровня.
|
||||||
*
|
|
||||||
* @param $level
|
* @param $level
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
@@ -15,7 +14,7 @@ class Runes
|
|||||||
if (!in_array($level, [8, 9, 10])) {
|
if (!in_array($level, [8, 9, 10])) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
$power = [8 => 3, 9 => 5, 10 => 7];
|
$power = [8 => 3, 9 => 3, 10 => 5];
|
||||||
$stats = [8 => 1, 9 => 3, 10 => 3];
|
$stats = [8 => 1, 9 => 3, 10 => 3];
|
||||||
$rand9 = array_rand(array_flip(['hpAll', 'm2', 'm5']));
|
$rand9 = array_rand(array_flip(['hpAll', 'm2', 'm5']));
|
||||||
$runes = [
|
$runes = [
|
||||||
@@ -64,7 +63,7 @@ class Runes
|
|||||||
$returnData = '|' . http_build_query($resultRune, '', '|');
|
$returnData = '|' . http_build_query($resultRune, '', '|');
|
||||||
$returnData = str_replace('|', '|add_', $returnData);
|
$returnData = str_replace('|', '|add_', $returnData);
|
||||||
//Строчка человекопонятных параметров в статус.
|
//Строчка человекопонятных параметров в статус.
|
||||||
$returnText = urldecode(http_build_query($resultText, '', ', '));
|
$returnText = urldecode(http_build_query($resultText, '', ', '));
|
||||||
$returnText = 'Характеристики Руны: ' . str_replace('=', ': +', $returnText) . '.';
|
$returnText = 'Характеристики Руны: ' . str_replace('=', ': +', $returnText) . '.';
|
||||||
return [$returnData, $returnText];
|
return [$returnData, $returnText];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Insallah;
|
||||||
|
|
||||||
|
class Table
|
||||||
|
{
|
||||||
|
public static function get($rows, $class = '', $fill = false)
|
||||||
|
{
|
||||||
|
$c = '';
|
||||||
|
$max_rows = sizeof(max($rows));
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
if ($fill && sizeof($row) < $max_rows) {
|
||||||
|
$row = array_merge($row, array_fill(0, $max_rows - sizeof($row), ''));
|
||||||
|
}
|
||||||
|
$c .= '<tr><td>' . implode('</td><td>', $row) . '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return (!empty($class) ? "<table class='$class'>" : '<table>') . $c . '</table>' . PHP_EOL;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,46 +5,46 @@ namespace Insallah;
|
|||||||
class Tournament
|
class Tournament
|
||||||
{
|
{
|
||||||
const IS_ENABLED = true;
|
const IS_ENABLED = true;
|
||||||
const SEND_CHAT_MESSAGE = 3;
|
private const SEND_CHAT_MESSAGE = 3;
|
||||||
const START_TOURNAMENT = 5;
|
private const START_TOURNAMENT = 5;
|
||||||
const PRIZE1 = 25;
|
private const PRIZE1 = 25;
|
||||||
const PRIZE2 = 10;
|
private const PRIZE2 = 10;
|
||||||
const PRIZE3 = 5;
|
private const PRIZE3 = 5;
|
||||||
const MIN_EXP = 175000;
|
const MIN_EXP = 175000;
|
||||||
const CHAT_MESSAGE = 'Âíèìàíèå! Òóðíèð äëÿ %d óðîâíÿ îòêðûò! Ïîñïåøèòå ïðèíÿòü ó÷àñòèå â Çàëå Âîèíîâ!';
|
private const CHAT_MESSAGE = 'Внимание! Турнир для %d уровня открыт! Поспешите принять участие в Зале Воинов!';
|
||||||
const VICTORY_MESSAGE = 'Òóðíèð äëÿ %d óðîâíåé çàâåðø¸í! Ïåðâîå ìåñòî: %s. Âòîðîå ìåñòî: %s. Òðåòüå ìåñòî: %s.';
|
private const VICTORY_MESSAGE = 'Турнир для %d уровней завершён! Первое место: %s. Второе место: %s. Третье место: %s.';
|
||||||
const DELAY1 = '+12hour';
|
private const DELAY1 = '+12hour';
|
||||||
const DELAY2 = '+6hour';
|
private const DELAY2 = '+6hour';
|
||||||
const DELAY3 = '+3hour';
|
private const DELAY3 = '+3hour';
|
||||||
|
|
||||||
/** Ôîðìóëà ðàññ÷¸òà ðàçðåø¸ííîé ñòîèìîñòè îäåòûõ ïðåäìåòîâ.
|
/** Формула рассчёта разрешённой стоимости одетых предметов.
|
||||||
*
|
*
|
||||||
* @param int $int
|
* @param int $int
|
||||||
*
|
*
|
||||||
* @return float|int
|
* @return float|int
|
||||||
*/
|
*/
|
||||||
public static function ekrOverpriceFormula($int)
|
public static function ekrOverpriceFormula(int $int): int
|
||||||
{
|
{
|
||||||
return ($int - 7) * 151;
|
return ($int - 7) * 151;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ïðîâåðÿåì ìîæåò ëè èãðîê ó÷àâñòâîâàòü â òóðíèðå è ëèáî ïðèñîåäèíÿåì åãî, ëèáî îáëàìûâàåì.
|
* Проверяем может ли игрок учавствовать в турнире и либо присоединяем его, либо обламываем.
|
||||||
*
|
*
|
||||||
* @param int $user_id
|
* @param int $uid
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function join($user_id)
|
public function join(int $uid): void
|
||||||
{
|
{
|
||||||
/** Âîçâðàùàåò level, èëè 0 åñëè ïðîâàëåíû ïðîâåðêè. */
|
/** Возвращает level, или 0 если провалены проверки. */
|
||||||
$userLevel = TournamentModel::getUserLevel($user_id);
|
$userLevel = TournamentModel::getUserLevel($uid);
|
||||||
if (
|
if (
|
||||||
$userLevel === 0 ||
|
$userLevel === 0 ||
|
||||||
TournamentModel::isEkrOverpriced($user_id, $userLevel) ||
|
TournamentModel::isEkrOverpriced($uid, $userLevel) ||
|
||||||
!TournamentModel::isEnoughExperience($user_id) ||
|
!TournamentModel::isEnoughExperience($uid) ||
|
||||||
TournamentModel::IsRestrictedToJoin($user_id) ||
|
TournamentModel::isRestrictedToJoin($uid) ||
|
||||||
TournamentModel::isStarted($user_id)
|
TournamentModel::isStarted($uid)
|
||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,7 @@ class Tournament
|
|||||||
TournamentModel::createTournament($userLevel);
|
TournamentModel::createTournament($userLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
TournamentModel::joinTournament($user_id, $userLevel);
|
TournamentModel::joinTournament($uid, $userLevel);
|
||||||
$mq++;
|
$mq++;
|
||||||
|
|
||||||
if ($mq == self::SEND_CHAT_MESSAGE) {
|
if ($mq == self::SEND_CHAT_MESSAGE) {
|
||||||
@@ -67,37 +67,39 @@ class Tournament
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ïðîâåðêà äëÿ êðîíà\êîíôèãà. Âûáèâàåò ïðîèãðàâøèõ è ïåðåçàïóñêàåò ïîåäèíêè âî âñåõ òóðíèðàõ.
|
* Проверка для крона\конфига. Выбивает проигравших и перезапускает поединки во всех турнирах.
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function startAllBattles()
|
public function startAllBattles(): void
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$db::sql('delete from tournaments where start_time + date_add(start_time,interval 30 minute) < unix_timestamp()');
|
$db::sql(
|
||||||
|
'delete from tournaments where start_time + date_add(start_time,interval 30 minute) < unix_timestamp()'
|
||||||
|
);
|
||||||
TournamentModel::removeFighter(TournamentModel::getLooser());
|
TournamentModel::removeFighter(TournamentModel::getLooser());
|
||||||
$tournament_levels = $db::getColumn('select tid from tournaments where start_time = -1');
|
$tournamentLevels = $db::getColumn('select tid from tournaments where start_time = -1');
|
||||||
foreach ($tournament_levels as $level) {
|
foreach ($tournamentLevels as $level) {
|
||||||
$alive_fighters = TournamentModel::getFreeFighters($level);
|
$aliveFighters = TournamentModel::getFreeFighters($level);
|
||||||
if (count($alive_fighters) > 1) {
|
if (count($aliveFighters) > 1) {
|
||||||
shuffle($alive_fighters);
|
shuffle($aliveFighters);
|
||||||
$this->start_battle($alive_fighters);
|
$this->startBattle($aliveFighters);
|
||||||
} elseif (count($alive_fighters) === 1) {
|
} elseif (count($aliveFighters) === 1) {
|
||||||
TournamentModel::removeFighter($alive_fighters[0], true);
|
TournamentModel::removeFighter($aliveFighters[0], true);
|
||||||
$this->victory($level);
|
$this->victory($level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ïîëó÷àåì ïàðû áîéöîâ è íà÷èíàåì èõ ïîåäèíêè.
|
* Получаем пары бойцов и начинаем их поединки.
|
||||||
*
|
*
|
||||||
* @param array $fighters_list
|
* @param array $fightersList
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function start_battle(array $fighters_list)
|
private function startBattle(array $fightersList): void
|
||||||
{
|
{
|
||||||
$teams = TournamentModel::getFightersTeams($fighters_list);
|
$teams = TournamentModel::getFightersTeams($fightersList);
|
||||||
foreach ($teams as $team) {
|
foreach ($teams as $team) {
|
||||||
if (count($team) === 2) {
|
if (count($team) === 2) {
|
||||||
TournamentModel::startBattle($team[0], $team[1]);
|
TournamentModel::startBattle($team[0], $team[1]);
|
||||||
@@ -106,15 +108,15 @@ class Tournament
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Íàãðàæäàåì ïîáåäèòåëåé òóðíèðà, ÷èñòèì áàçó.
|
* Награждаем победителей турнира, чистим базу.
|
||||||
*
|
*
|
||||||
* @param int $tournament_id
|
* @param int $tid
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private function victory($tournament_id)
|
private function victory(int $tid): void
|
||||||
{
|
{
|
||||||
$winners = TournamentModel::getWinners($tournament_id);
|
$winners = TournamentModel::getWinners($tid);
|
||||||
sleep(1);
|
sleep(1);
|
||||||
TournamentModel::givePrizeItems($winners[1], self::PRIZE1);
|
TournamentModel::givePrizeItems($winners[1], self::PRIZE1);
|
||||||
TournamentModel::givePrizeItems($winners[2], self::PRIZE2);
|
TournamentModel::givePrizeItems($winners[2], self::PRIZE2);
|
||||||
@@ -124,12 +126,16 @@ class Tournament
|
|||||||
TournamentModel::giveDelay($winners[2], strtotime(self::DELAY2));
|
TournamentModel::giveDelay($winners[2], strtotime(self::DELAY2));
|
||||||
TournamentModel::giveDelay($winners[3], strtotime(self::DELAY3));
|
TournamentModel::giveDelay($winners[3], strtotime(self::DELAY3));
|
||||||
sleep(1);
|
sleep(1);
|
||||||
TournamentModel::sysMessage(sprintf(self::VICTORY_MESSAGE,
|
TournamentModel::sysMessage(
|
||||||
$tournament_id,
|
sprintf(
|
||||||
TournamentModel::uidToLogin($winners[1]),
|
self::VICTORY_MESSAGE,
|
||||||
TournamentModel::uidToLogin($winners[2]),
|
$tid,
|
||||||
TournamentModel::uidToLogin($winners[3])));
|
TournamentModel::uidToLogin($winners[1]),
|
||||||
|
TournamentModel::uidToLogin($winners[2]),
|
||||||
|
TournamentModel::uidToLogin($winners[3])
|
||||||
|
)
|
||||||
|
);
|
||||||
sleep(3);
|
sleep(3);
|
||||||
TournamentModel::destroyTournament($tournament_id);
|
TournamentModel::destroyTournament($tid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ class TournamentModel
|
|||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ïðîâåðêà óðîâíÿ, ñòîèìîñòè ýêâèïà, ïðî÷èå ïðîâåðêè, ÷òî ïåðñîíàæ ñâîáîäåí
|
* проверка уровня, стоимости эквипа, прочие проверки, что персонаж свободен
|
||||||
* òàéìåð îæèäàíèÿ 30 ìèíóò
|
* таймер ожидания 30 минут
|
||||||
*
|
*
|
||||||
* @param int $uid
|
* @param int $uid
|
||||||
*
|
*
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public static function getUserLevel($uid)
|
public static function getUserLevel(int $uid): int
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$level = $db::getValue('select level from users where id = ? and level between 8 and 12 and battle = 0', [$uid]);
|
$level = $db::getValue('select level from users where id = ? and level between 8 and 12 and battle = 0', [$uid]);
|
||||||
@@ -21,12 +21,12 @@ class TournamentModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $uid
|
* @param int $uid
|
||||||
* @param int $level
|
* @param int|null $level
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function isEkrOverpriced($uid, $level = null)
|
public static function isEkrOverpriced(int $uid, ?int $level = null): bool
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
if (is_null($level)) {
|
if (is_null($level)) {
|
||||||
@@ -41,7 +41,7 @@ class TournamentModel
|
|||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function isEnoughExperience($uid)
|
public static function isEnoughExperience(int $uid): bool
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
return $db::getValue('select exp from stats where id = ?', [$uid]) >= Tournament::MIN_EXP;
|
return $db::getValue('select exp from stats where id = ?', [$uid]) >= Tournament::MIN_EXP;
|
||||||
@@ -52,130 +52,128 @@ class TournamentModel
|
|||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function IsRestrictedToJoin($uid)
|
public static function isRestrictedToJoin(int $uid): bool
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$delayEffect = $db::getValue('select count(*) from eff_users where uid = ? and id_eff = 486 and `delete` = 0', [$uid]);
|
return $db::getValue('select count(*) from eff_users where uid = ? and id_eff = 486 and `delete` = 0', [$uid]);
|
||||||
return (bool)$delayEffect;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $tid
|
* @param int $tid
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public static function isStarted($tid)
|
public static function isStarted(int $tid): bool
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$status = $db::getValue('select count(*) from tournaments where start_time = -1 and tid = ?', [$tid]);
|
return $db::getValue('select count(*) from tournaments where start_time = -1 and tid = ?', [$tid]);
|
||||||
return (bool)$status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ñ÷èòàåì ñêîëüêî èãðîêîâ æäóò â çàÿâêå íà òóðíèð.
|
* Считаем сколько игроков ждут в заявке на турнир.
|
||||||
*
|
*
|
||||||
* @param int $tid
|
* @param int $tid
|
||||||
*
|
*
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public static function getWaitingMembersQuantity($tid)
|
public static function getWaitingMembersQuantity(int $tid): int
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
return $db::getValue('select count(*) from tournaments_users where tid = ?', [$tid]);
|
return $db::getValue('select count(*) from tournaments_users where tid = ?', [$tid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ñîçäàíèå íîâîãî òóðíèðà.
|
* Создание нового турнира.
|
||||||
*
|
*
|
||||||
* @param int $tid
|
* @param int $tid
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function createTournament($tid)
|
public static function createTournament(int $tid): void
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$db::sql('insert into tournaments (tid) values (?)', [$tid]);
|
$db::sql('insert into tournaments (tid) values (?)', [$tid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Èãðîê ïðèñîåäèíÿåòñÿ ê òóðíèðó è òåëåïîðòèðóåòñÿ â òóðíèðíóþ êîìíàòó.
|
* Игрок присоединяется к турниру и телепортируется в турнирную комнату.
|
||||||
*
|
*
|
||||||
* @param int $uid
|
* @param int $uid
|
||||||
* @param int $tid
|
* @param int $tid
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function joinTournament($uid, $tid)
|
public static function joinTournament(int $uid, int $tid): void
|
||||||
{
|
{
|
||||||
/** Êàñòîìíûå êîìíàòû 25008 - 25012. */
|
/** Кастомные комнаты 25008 - 25012. */
|
||||||
$room_id = 25000 + $tid;
|
$roomId = 25000 + $tid;
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$db::sql('insert into tournaments_users (tid, uid) values (?, ?)', [$tid, $uid]);
|
$db::sql('insert into tournaments_users (tid, uid) values (?, ?)', [$tid, $uid]);
|
||||||
self::teleport($uid, $room_id);
|
self::teleport($uid, $roomId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ñòàðò òóðíèðà.
|
* Старт турнира.
|
||||||
*
|
*
|
||||||
* @param int $tid
|
* @param int $tid
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function startTournament($tid)
|
public static function startTournament(int $tid): void
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$db::sql('update tournaments set start_time = -1 where tid = ?', [$tid]);
|
$db::sql('update tournaments set start_time = -1 where tid = ?', [$tid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ×èñòèì áàçû îò ïðîøåäøåãî òóðíèðà.
|
* Чистим базы от прошедшего турнира.
|
||||||
*
|
*
|
||||||
* @param int $tid
|
* @param int $tid
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function destroyTournament($tid)
|
public static function destroyTournament(int $tid): void
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
//Óáåäèòüñÿ ÷òî â áàçå íàñòðîåí foreign_keys è ïîñëåäóåò àâòîî÷èñòêà tournaments_users !!!
|
//Убедиться что в базе настроен foreign_keys и последует автоочистка tournaments_users !!!
|
||||||
$db::sql('delete from tournaments where tid = ?', [$tid]);
|
$db::sql('delete from tournaments where tid = ?', [$tid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ïîëó÷àåì ñïèñîê áîéöîâ è áü¸ì èõ íà ïàðû. Âîçâðàùàåì ñïèñêè ïàð + 1 ïîñëåäíèé áåç ïàðû åñëè åñòü.
|
* Получаем список бойцов и бьём их на пары. Возвращаем списки пар + 1 последний без пары если есть.
|
||||||
*
|
*
|
||||||
* @param array $fighters_list
|
* @param array $fightersList
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function getFightersTeams(array $fighters_list)
|
public static function getFightersTeams(array $fightersList): array
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$query = sprintf("select id from users where battle = 0 and id in (%s)", implode(', ', $fighters_list));
|
$query = sprintf("select id from users where battle = 0 and id in (%s)", implode(', ', $fightersList));
|
||||||
return array_chunk($db::getColumn($query), 2);
|
return array_chunk($db::getColumn($query), 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Âûáèðàåì æèâûõ áîéöîâ íå ñðàæàþùèõñÿ â äàííûé ìîìåíò.
|
* Выбираем живых бойцов не сражающихся в данный момент.
|
||||||
*
|
*
|
||||||
* @param int $tid
|
* @param int $tid
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function getFreeFighters($tid)
|
public static function getFreeFighters(int $tid): array
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
return $db::getColumn('select uid from tournaments_users where tid = ? and death_time = 0 order by uid', [$tid]);
|
return $db::getColumn('select uid from tournaments_users where tid = ? and death_time = 0 order by uid', [$tid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Âûáèðàåì ïîáåäèòåëåé. Ñìåùàåì ìàññèâ, ÷òîáû âîçâðàò ø¸ë ñ åäèíèöû.
|
* Выбираем победителей. Смещаем массив, чтобы возврат шёл с единицы.
|
||||||
*
|
*
|
||||||
* @param int $tid
|
* @param int $tid
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function getWinners($tid)
|
public static function getWinners(int $tid): array
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$winners = $db::getColumn('select uid from tournaments_users where tid = ? order by death_time desc limit 3', [$tid]);
|
$winners = $db::getColumn('select uid from tournaments_users where tid = ? order by death_time desc limit 3', [$tid]);
|
||||||
@@ -187,24 +185,24 @@ class TournamentModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ïðîáóåì âûêóñèòü ïðîèãðàâøåãî â ïîñëåäíåé òóðíèðíîé áèòâå è óäàëèòü ýòó ñàìóþ áèòâó âî èçáåæàíèå.
|
* Пробуем выкусить проигравшего в последней турнирной битве и удалить эту самую битву во избежание.
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public static function getLooser()
|
public static function getLooser()
|
||||||
{
|
{
|
||||||
$query = '
|
$query = '
|
||||||
select uid, battle
|
select uid, battle
|
||||||
from
|
from
|
||||||
battle_users,
|
battle_users,
|
||||||
(select id, team_win
|
(select id, team_win
|
||||||
from battle
|
from battle
|
||||||
where
|
where
|
||||||
team_win > 0 and
|
team_win > 0 and
|
||||||
typeBattle = 25000
|
typeBattle = 25000
|
||||||
order by time_over desc
|
order by time_over desc
|
||||||
limit 1) as last_battle
|
limit 1) as last_battle
|
||||||
where
|
where
|
||||||
battle_users.battle = last_battle.id and
|
battle_users.battle = last_battle.id and
|
||||||
battle_users.team != last_battle.team_win and
|
battle_users.team != last_battle.team_win and
|
||||||
battle_users.uid in (select uid from tournaments_users where death_time = 0)';
|
battle_users.uid in (select uid from tournaments_users where death_time = 0)';
|
||||||
|
|
||||||
@@ -214,103 +212,105 @@ class TournamentModel
|
|||||||
where typeBattle = 25000 and death_time = 0 order by b.time_start desc limit 1';
|
where typeBattle = 25000 and death_time = 0 order by b.time_start desc limit 1';
|
||||||
$db = new Db;
|
$db = new Db;
|
||||||
$row = $db::getRow($query);
|
$row = $db::getRow($query);
|
||||||
return $row['uid'];
|
return $row['uid'] ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Âûáûâøèé èç òóðíèðà ïîêèäàåò êîìíàòó è ïîëó÷àåò âðåìÿ ñìåðòè.
|
* Выбывший из турнира покидает комнату и получает время смерти.
|
||||||
*
|
|
||||||
* @param int $uid
|
|
||||||
*
|
*
|
||||||
|
* @param int $uid
|
||||||
|
* @param bool $winner
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function removeFighter($uid, $winner = false)
|
public static function removeFighter(int $uid, bool $winner = false): void
|
||||||
{
|
{
|
||||||
if (!$uid) return;
|
if (!$uid) {
|
||||||
//$winner_timer_add = $winner? 500 : 0; # Ïîñëåäíûé ÄÎËÆÅÍ áûòü ïîñëåäíèì.
|
return;
|
||||||
|
}
|
||||||
|
//$winner_timer_add = $winner? 500 : 0; # Последный ДОЛЖЕН быть последним.
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$db::sql('update tournaments_users set death_time = unix_timestamp() + 500 where death_time = 0 and uid = ?', [$uid]);
|
$db::sql('update tournaments_users set death_time = unix_timestamp() + 500 where death_time = 0 and uid = ?', [$uid]);
|
||||||
self::teleport($uid, 9);
|
self::teleport($uid, 9);
|
||||||
//fixme: Êëàññû íå ïîäêëþ÷àþòñÿ äðóã ê äðóãó. Íóæíî ìåíÿòü àðõèòåêòóðó èãðû. :(
|
//fixme: Классы не подключаются друг к другу. Нужно менять архитектуру игры. :(
|
||||||
Db::sql("update users_achiv set trn = trn + 1 where id = ?", [$uid]);
|
Db::sql("update users_achiv set trn = trn + 1 where id = ?", [$uid]);
|
||||||
//(new Achievements(\user::start()))->updateCounter('trn');
|
//(new Achievements(\user::start()))->updateCounter('trn');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Óçíà¸ì id òóðíèðà ïî id èãðîêà.
|
* Узнаём id турнира по id игрока.
|
||||||
*
|
*
|
||||||
* @param int $uid
|
* @param int $uid
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public static function getTournamentIdByUserId($uid)
|
public static function getTournamentIdByUserId(int $uid)
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
return $db::getValue('select tid from tournaments_users where uid = ?', [$uid]);
|
return $db::getValue('select tid from tournaments_users where uid = ?', [$uid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ïîïðîáóåì ñòàðòîíóòü ïîåäèíîê.
|
* Попробуем стартонуть поединок.
|
||||||
* 25000 - Óíèêàëüíûé id ïîåäèíêà ïîä òóðíèðû.
|
* 25000 - Уникальный id поединка под турниры.
|
||||||
* noinc - çàïðåò íà âìåøàòåëüñòâî
|
* noinc - запрет на вмешательство
|
||||||
* invis - íåâèäèìûé áîé
|
* invis - невидимый бой
|
||||||
*
|
*
|
||||||
* @param int $uid1
|
* @param int $uid1
|
||||||
* @param int $uid2
|
* @param int $uid2
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function startBattle($uid1, $uid2)
|
public static function startBattle(int $uid1, int $uid2): void
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$check = Db::getValue('select count(*) from users where id in (?, ?) and battle = 0', [$uid1, $uid2]);
|
$check = Db::getValue('select count(*) from users where id in (?, ?) and battle = 0', [$uid1, $uid2]);
|
||||||
if ((int)$check !== 2) {
|
if ($check !== 2) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$db::exec('insert into battle (city, time_start, timeout, type, invis, noinc, travmChance, typeBattle)
|
$db::exec('insert into battle (city, time_start, timeout, type, invis, noinc, travmChance, typeBattle)
|
||||||
values (\'capitalcity\', unix_timestamp(), 60, 0, 1, 1, 0, 25000)');
|
values (\'capitalcity\', unix_timestamp(), 60, 0, 1, 1, 0, 25000)');
|
||||||
$bid = $db::lastInsertId(); // ÂÀÆÍÎ!
|
$bid = $db::lastInsertId(); // ВАЖНО!
|
||||||
$db::sql('update stats set team = 1, hpNow = hpAll, mpNow = mpAll where id = ?', [$uid1]);
|
$db::sql('update stats set team = 1, hpNow = hpAll, mpNow = mpAll where id = ?', [$uid1]);
|
||||||
$db::sql('update stats set team = 2, hpNow = hpAll, mpNow = mpAll where id = ?', [$uid2]);
|
$db::sql('update stats set team = 2, hpNow = hpAll, mpNow = mpAll where id = ?', [$uid2]);
|
||||||
$db::sql('update users set battle = ? where id in (?, ?)', [$bid, $uid1, $uid2]);
|
$db::sql('update users set battle = ? where id in (?, ?)', [$bid, $uid1, $uid2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Óçíà¸ì ëîãèí ïåðñîíàæà ïî åãî id.
|
* Узнаём логин персонажа по его id.
|
||||||
*
|
*
|
||||||
* @param int $uid
|
* @param int $uid
|
||||||
*
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public static function uidToLogin($uid)
|
public static function uidToLogin(int $uid)
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
return $db::getValue('select login from users where id = ?', [$uid]);
|
return $db::getValue('select login from users where id = ?', [$uid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Òåëåïîðò ïî êîìíàòàì.
|
* Телепорт по комнатам.
|
||||||
*
|
*
|
||||||
* @param int $uid
|
* @param int $uid
|
||||||
* @param int $room_id
|
* @param int $roomId
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
private static function teleport($uid, $room_id)
|
private static function teleport(int $uid, int $roomId): void
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$db::sql('update users set room = ? where id = ?', [$room_id, $uid]);
|
$db::sql('update users set room = ? where id = ?', [$roomId, $uid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Íåò ïðîâåðîê $message ïîòîìó ÷òî îíî âñåãäà çàäà¸òñÿ â êîäå è èãðîê íà íåãî íå âëèÿåò.
|
* Нет проверок $message потому что оно всегда задаётся в коде и игрок на него не влияет.
|
||||||
*
|
*
|
||||||
* @param string $message
|
* @param string $message
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function sysMessage($message)
|
public static function sysMessage(string $message): void
|
||||||
{
|
{
|
||||||
if (!empty($message)) {
|
if (!empty($message)) {
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
@@ -320,16 +320,16 @@ class TournamentModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ãåíåðèðóåò ìíîæåñòâåííûé çàïðîñ ñðàçó íà $quantity îäíîòèïíûõ ïðåäìåòîâ â èíâåíòàðü ïîëüçîâàòåëÿ $uid.
|
* Генерирует множественный запрос сразу на $quantity однотипных предметов в инвентарь пользователя $uid.
|
||||||
*
|
*
|
||||||
* @param int $uid
|
* @param int $uid
|
||||||
* @param int $quantity
|
* @param int $quantity
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function givePrizeItems($uid, $quantity)
|
public static function givePrizeItems(int $uid, int $quantity): void
|
||||||
{
|
{
|
||||||
$query = 'insert into items_users (item_id, uid, data, iznosMAX, lastUPD, time_create)
|
$query = 'insert into items_users (item_id, uid, data, iznosMAX, lastUPD, time_create)
|
||||||
values (4754, :uid, :data, 1, unix_timestamp(), unix_timestamp())';
|
values (4754, :uid, :data, 1, unix_timestamp(), unix_timestamp())';
|
||||||
$args = [
|
$args = [
|
||||||
'uid' => $uid,
|
'uid' => $uid,
|
||||||
@@ -342,17 +342,17 @@ class TournamentModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Ýôôåêò-îãðàíè÷èòåëü íà ó÷àñòèå â òóðíèðå.
|
/** Эффект-ограничитель на участие в турнире.
|
||||||
* @param $uid
|
* @param int $uid
|
||||||
* @param $unix_time
|
* @param int $unixtime
|
||||||
*
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function giveDelay($uid, $unix_time)
|
public static function giveDelay(int $uid, int $unixtime): void
|
||||||
{
|
{
|
||||||
$db = new Db();
|
$db = new Db();
|
||||||
$query = 'insert into eff_users (id_eff, uid, name, timeUse) VALUES (?,?,?,?)';
|
$query = 'insert into eff_users (id_eff, uid, name, timeUse) VALUES (?,?,?,?)';
|
||||||
$args = [486, $uid, 'Ïðèç¸ð ãîðîäñêîãî òóðíèðà!', $unix_time];
|
$args = [486, $uid, 'Призёр городского турнира!', $unixtime];
|
||||||
$db::sql($query, $args);
|
$db::sql($query, $args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Insallah\Tournaments;
|
||||||
|
|
||||||
|
class Config
|
||||||
|
{
|
||||||
|
const IS_ENABLED = true;
|
||||||
|
const SEND_CHAT_MESSAGE = 3;
|
||||||
|
const START_TOURNAMENT = 5;
|
||||||
|
const PRIZE1 = 25;
|
||||||
|
const PRIZE2 = 10;
|
||||||
|
const PRIZE3 = 5;
|
||||||
|
const MIN_EXP = 175000;
|
||||||
|
const CHAT_MESSAGE = 'Внимание! Турнир для %d уровня открыт! Поспешите принять участие в Зале Воинов!';
|
||||||
|
const VICTORY_MESSAGE = 'Турнир для %d уровней завершён! Первое место: %s. Второе место: %s. Третье место: %s.';
|
||||||
|
const DELAY1 = '+12hour';
|
||||||
|
const DELAY2 = '+6hour';
|
||||||
|
const DELAY3 = '+3hour';
|
||||||
|
const STEP_EKR = 151;
|
||||||
|
const DELAY_EFFECT_ID = 486;
|
||||||
|
const CUSTOM_BATTLE_ID = 25000;
|
||||||
|
const PRIZE_ITEM_ID = 4754;
|
||||||
|
const RETURN_ROOM = 9;
|
||||||
|
const MINIMUM_USER_LEVEL = 8;
|
||||||
|
|
||||||
|
/** Формула рассчёта разрешённой стоимости одетых предметов.
|
||||||
|
*
|
||||||
|
* @param $level
|
||||||
|
* @return float|int
|
||||||
|
*/
|
||||||
|
public static function ekrOverpriceFormula($level)
|
||||||
|
{
|
||||||
|
return max(($level - ($level - 1)) * self::STEP_EKR, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Insallah\Tournaments\Model;
|
||||||
|
|
||||||
|
use Insallah\Db;
|
||||||
|
use Insallah\Tournaments\Config;
|
||||||
|
|
||||||
|
class GameConnector
|
||||||
|
{
|
||||||
|
private array $u;
|
||||||
|
|
||||||
|
public function setUser(int $uid): GameConnector
|
||||||
|
{
|
||||||
|
$this->u = Db::getRow('select id, `level`, login, battle from users where id = ?', [$uid]);
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAllowedLevel(): int
|
||||||
|
{
|
||||||
|
return $this->u['level'] >= Config::MINIMUM_USER_LEVEL && $this->u['battle'] === 0 ? $this->u['level'] : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isEkrOverpriced(): bool
|
||||||
|
{
|
||||||
|
return Db::getValue('select sum(2price) from items_users where inOdet > 0 and uid = ?', [$this->u['id']])
|
||||||
|
> Config::ekrOverpriceFormula($this->u['level']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isEnoughExperience(): bool
|
||||||
|
{
|
||||||
|
return Db::getValue('select exp from stats where id = ?', [$this->u['id']]) >= Config::MIN_EXP;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isRestrictedToJoin(): bool
|
||||||
|
{
|
||||||
|
return Db::getValue('select count(*) from eff_users where uid = ? and id_eff = ? and `delete` = 0', [
|
||||||
|
$this->u['id'], Config::DELAY_EFFECT_ID,]
|
||||||
|
) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Узнаём логин персонажа по его id.
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function uidToLogin()
|
||||||
|
{
|
||||||
|
return $this->u['login'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Телепорт по комнатам.
|
||||||
|
*
|
||||||
|
* @param bool $out - обратный телепорт.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function teleport(bool $out = false)
|
||||||
|
{
|
||||||
|
$roomId = $out ? Config::RETURN_ROOM : Config::CUSTOM_BATTLE_ID + $this->u['level'];
|
||||||
|
Db::sql('update users set room = ? where id = ?', [$roomId, $this->u['id']]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получаем список бойцов и бьём их на пары, между которыми стартуют поединки 1х1.
|
||||||
|
* noinc - запрет на вмешательство
|
||||||
|
* invis - невидимый бой
|
||||||
|
*
|
||||||
|
* @param array $fightersList
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function startBattle(array $fightersList)
|
||||||
|
{
|
||||||
|
$teamsq = sprintf("select id from users where battle = 0 and id in (%s)", implode(', ', $fightersList));
|
||||||
|
$teams = array_chunk(Db::getColumn($teamsq), 2);
|
||||||
|
foreach ($teams as $team) {
|
||||||
|
if (count($team) !== 2) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Db::exec(
|
||||||
|
'insert into battle (city, time_start, timeout, type, invis, noinc, travmChance, typeBattle)
|
||||||
|
values (\'capitalcity\', unix_timestamp(), 60, 0, 1, 1, 0, ' . Config::CUSTOM_BATTLE_ID . ')'
|
||||||
|
);
|
||||||
|
$battleId = Db::lastInsertId();
|
||||||
|
Db::sql('update stats set team = 1, zv = 0, hpNow = hpAll, mpNow = mpAll where id = ?', [$team[0]]);
|
||||||
|
Db::sql('update stats set team = 2, zv = 0, hpNow = hpAll, mpNow = mpAll where id = ?', [$team[1]]);
|
||||||
|
$query = sprintf('update users set battle = %d where id in (%d, %d)', $battleId, $team[0], $team[1]);
|
||||||
|
Db::exec($query);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Генерирует множественный запрос сразу на $quantity однотипных предметов в инвентарь пользователя $uid.
|
||||||
|
*
|
||||||
|
* @param int $quantity
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function givePrizeItems(int $quantity)
|
||||||
|
{
|
||||||
|
$query = 'insert into items_users (item_id, uid, `data`, iznosMAX, lastUPD, time_create)
|
||||||
|
values (' . Config::PRIZE_ITEM_ID . ', :uid, :data, 1, unix_timestamp(), unix_timestamp())';
|
||||||
|
$args = [
|
||||||
|
'uid' => $this->u['id'],
|
||||||
|
'data' => 'nosale=1|musor=1|sudba=' . $this->uidToLogin() . '|lvl=8|tr_s1=0|tr_s2=0|tr_s3=0|tr_s4=0',
|
||||||
|
];
|
||||||
|
$stmt = Db::prepare($query);
|
||||||
|
for ($i = 0; $i < $quantity; $i++) {
|
||||||
|
$stmt->execute($args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Эффект-ограничитель на участие в турнире.
|
||||||
|
*
|
||||||
|
* @param int $unixtime
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function giveDelay(int $unixtime)
|
||||||
|
{
|
||||||
|
$query = 'insert into eff_users (id_eff, uid, `name`, timeUse) select id2, ?, mname, ? from eff_main where id2 = ?';
|
||||||
|
$args = [Config::DELAY_EFFECT_ID, $this->u['id'], strtotime($unixtime)];
|
||||||
|
Db::sql($query, $args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Пробуем выкусить проигравшего в последней турнирной битве и удалить эту самую битву во избежание.
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function getLooser(): int
|
||||||
|
{
|
||||||
|
$query = '
|
||||||
|
select uid
|
||||||
|
from
|
||||||
|
battle_users,
|
||||||
|
(select id, team_win
|
||||||
|
from battle
|
||||||
|
where
|
||||||
|
team_win > 0 and
|
||||||
|
typeBattle = ' . Config::CUSTOM_BATTLE_ID . '
|
||||||
|
order by time_over desc
|
||||||
|
limit 1) as last_battle
|
||||||
|
where
|
||||||
|
battle_users.battle = last_battle.id and
|
||||||
|
battle_users.team != last_battle.team_win';
|
||||||
|
return Db::getValue($query);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Нет проверок $message потому что оно всегда задаётся в коде и игрок на него не влияет.
|
||||||
|
*
|
||||||
|
* @param string $message
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function sysMessage(string $message)
|
||||||
|
{
|
||||||
|
if (empty($message)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Db::sql('insert into chat (`time`, type, `text`, new, da) values (unix_timestamp(), 6, ?, 1, 1)', [$message]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,114 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Insallah\Tournaments\Model;
|
||||||
|
|
||||||
|
use Insallah\Db;
|
||||||
|
|
||||||
|
class Tournament
|
||||||
|
{
|
||||||
|
private array $t;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->t = Db::getRows('select * from tournaments') ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAllStarted(): array
|
||||||
|
{
|
||||||
|
$tidList = [];
|
||||||
|
foreach ($this->t as $row) {
|
||||||
|
if ($row['start_time'] === -1) {
|
||||||
|
$tidList[] = $row['tid'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $tidList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isStarted(int $tid): bool
|
||||||
|
{
|
||||||
|
foreach ($this->t as $row) {
|
||||||
|
if ($row['start_time'] === -1 && $row['tid'] === $tid) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getList(): string
|
||||||
|
{
|
||||||
|
$list = '';
|
||||||
|
$tournamentMembersId = new User();
|
||||||
|
foreach ($this->t as $row) {
|
||||||
|
$time = $row['start_time'] === -1 ? 'Турнир уже начался!' : date('G:i', $row['start_time']);
|
||||||
|
$members = [];
|
||||||
|
foreach ($tournamentMembersId->getAlive($row['tid']) as $member) {
|
||||||
|
$members[] = (new GameConnector())->setUser($member)->uidToLogin();
|
||||||
|
}
|
||||||
|
$list .= sprintf(
|
||||||
|
"<li>Турнир для %d уровней.<br>Время подачи заявки: %s<br>Участники: %s</li>",
|
||||||
|
$row['tid'],
|
||||||
|
$time,
|
||||||
|
implode(', ', $members)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $list ? "<div><strong>Активные турниры.</strong><br><ul>$list</ul></div>" : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOne(int $tid): string
|
||||||
|
{
|
||||||
|
$str = '';
|
||||||
|
$tournamentMembersId = new User();
|
||||||
|
foreach ($this->t as $row) {
|
||||||
|
if ($this->t['tid'] === $tid) {
|
||||||
|
$time = $row['start_time'] === -1 ? 'Турнир уже начался!' : date('G:i', $row['start_time']);
|
||||||
|
$members = [];
|
||||||
|
foreach ($tournamentMembersId->getAlive($row['tid']) as $member) {
|
||||||
|
$members[] = (new GameConnector())->setUser($member)->uidToLogin();
|
||||||
|
}
|
||||||
|
$str = sprintf(
|
||||||
|
"<div>Турнир для %d уровней.<br>Время подачи заявки: %s<br>Участники: %s</div>",
|
||||||
|
$row['tid'],
|
||||||
|
$time,
|
||||||
|
implode(', ', $members)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Создание нового турнира.
|
||||||
|
*
|
||||||
|
* @param int $tid
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function create(int $tid)
|
||||||
|
{
|
||||||
|
Db::sql('insert into tournaments (tid) values (?)', [$tid]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Старт турнира.
|
||||||
|
*
|
||||||
|
* @param int $tid
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function start(int $tid)
|
||||||
|
{
|
||||||
|
Db::sql('update tournaments set start_time = -1 where tid = ?', [$tid]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Чистим базы от прошедшего турнира.
|
||||||
|
*
|
||||||
|
* @param int $tid
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function destroy(int $tid)
|
||||||
|
{
|
||||||
|
Db::sql('delete from tournaments where tid = ?', [$tid]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Insallah\Tournaments\Model;
|
||||||
|
|
||||||
|
use Insallah\Db;
|
||||||
|
|
||||||
|
class User
|
||||||
|
{
|
||||||
|
private array $u;
|
||||||
|
private int $waitingUsers = 0;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->u = Db::getRows('select * from tournaments_users');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Считаем сколько игроков ждут в заявке на турнир.
|
||||||
|
*
|
||||||
|
* @param int $tid
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getWaitingQuantity(int $tid): int
|
||||||
|
{
|
||||||
|
foreach ($this->u as $row) {
|
||||||
|
if ($row['tid'] === $tid) {
|
||||||
|
$this->addWaitingUser();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $this->waitingUsers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addWaitingUser()
|
||||||
|
{
|
||||||
|
$this->waitingUsers++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Игрок присоединяется к турниру и телепортируется в турнирную комнату.
|
||||||
|
*
|
||||||
|
* @param int $uid
|
||||||
|
* @param int $tid
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function joinTournament(int $uid, int $tid)
|
||||||
|
{
|
||||||
|
Db::sql('insert into tournaments_users (tid, uid) values (?, ?)', [$tid, $uid]);
|
||||||
|
(new GameConnector())->setUser($uid)->teleport();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Выбираем живых бойцов не сражающихся в данный момент.
|
||||||
|
*
|
||||||
|
* @param int $tid
|
||||||
|
* @param bool $shuffle - установить true если нужно перетасовать массив.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getAlive(int $tid, bool $shuffle = false): array
|
||||||
|
{
|
||||||
|
$arr = [];
|
||||||
|
foreach ($this->u as $row) {
|
||||||
|
if ($row['tid'] === $tid && $row['death_time'] === 0) {
|
||||||
|
$arr[] = $row['uid'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($shuffle) {
|
||||||
|
shuffle($arr);
|
||||||
|
}
|
||||||
|
return $arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Выбираем победителей.
|
||||||
|
*
|
||||||
|
* @param int $tid
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getWinners(int $tid): array
|
||||||
|
{
|
||||||
|
$users = [];
|
||||||
|
$dt = [];
|
||||||
|
foreach ($this->u as $item) {
|
||||||
|
if ($item['tid'] === $tid) {
|
||||||
|
$users[]['uid'] = $item['uid'];
|
||||||
|
$users[]['death_time'] = $item['death_time'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach ($users as $k => $v) {
|
||||||
|
$dt[$k] = $v['death_time'];
|
||||||
|
}
|
||||||
|
array_multisort($dt, SORT_DESC, $users);
|
||||||
|
return [
|
||||||
|
1 => $users[0],
|
||||||
|
2 => $users[1],
|
||||||
|
3 => $users[2]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Выбывший из турнира покидает комнату и получает время смерти.
|
||||||
|
*
|
||||||
|
* @param int $uid
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function remove(int $uid)
|
||||||
|
{
|
||||||
|
Db::sql('update tournaments_users set death_time = unix_timestamp() where death_time = 0 and uid = ?', [$uid]);
|
||||||
|
(new GameConnector())->setUser($uid)->teleport(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Узнаём id турнира по id игрока.
|
||||||
|
*
|
||||||
|
* @param int $uid
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public static function getTournamentIdByUserId(int $uid): int
|
||||||
|
{
|
||||||
|
return Db::getValue('select tid from tournaments_users where uid = ?', [$uid]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Insallah\Tournaments;
|
||||||
|
|
||||||
|
class Tournament
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Проверяем может ли игрок учавствовать в турнире и либо присоединяем его, либо обламываем.
|
||||||
|
*
|
||||||
|
* @param int $uid
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function join(int $uid)
|
||||||
|
{
|
||||||
|
/** Возвращает level, или 0 если провалены проверки. */
|
||||||
|
$checks = new Model\GameConnector();
|
||||||
|
$tournament = new Model\Tournament();
|
||||||
|
$userLevel = $checks->setUser($uid)->getAllowedLevel();
|
||||||
|
|
||||||
|
if (
|
||||||
|
$userLevel === 0 ||
|
||||||
|
$checks->isEkrOverpriced() ||
|
||||||
|
!$checks->isEnoughExperience() ||
|
||||||
|
$checks->isRestrictedToJoin() ||
|
||||||
|
$tournament->isStarted($uid)
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = new Model\User();
|
||||||
|
|
||||||
|
if (empty($user->getWaitingQuantity($userLevel))) {
|
||||||
|
Model\Tournament::create($userLevel);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user->joinTournament($uid, $userLevel);
|
||||||
|
$user->addWaitingUser();
|
||||||
|
|
||||||
|
if ($user->getWaitingQuantity($userLevel) == Config::SEND_CHAT_MESSAGE) {
|
||||||
|
Model\GameConnector::sysMessage(sprintf(Config::CHAT_MESSAGE, $userLevel));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user->getWaitingQuantity($userLevel) == Config::START_TOURNAMENT) {
|
||||||
|
Model\Tournament::start($userLevel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка для крона\конфига. Выбивает проигравших и перезапускает поединки во всех турнирах.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function startAllBattles()
|
||||||
|
{
|
||||||
|
if (!Config::IS_ENABLED) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$tournamentlevels = new Model\Tournament();
|
||||||
|
$alivefighters = new Model\User();
|
||||||
|
Model\User::remove(Model\GameConnector::getLooser());
|
||||||
|
foreach ($tournamentlevels->getAllStarted() as $level) {
|
||||||
|
$count = count($alivefighters->getAlive($level, true));
|
||||||
|
if ($count > 1) {
|
||||||
|
Model\GameConnector::startBattle($alivefighters->getAlive($level, true));
|
||||||
|
} elseif ($count === 1) {
|
||||||
|
Model\User::remove($alivefighters->getAlive($level, true)[0]);
|
||||||
|
self::victory($level);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Награждаем победителей турнира, чистим базу.
|
||||||
|
*
|
||||||
|
* @param int $tid
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private static function victory(int $tid)
|
||||||
|
{
|
||||||
|
$u = new Model\User();
|
||||||
|
$uid = new Model\GameConnector();
|
||||||
|
sleep(1);
|
||||||
|
$uid->setUser($u->getWinners($tid)[1])->givePrizeItems(Config::PRIZE1);
|
||||||
|
$uid->setUser($u->getWinners($tid)[2])->givePrizeItems(Config::PRIZE2);
|
||||||
|
$uid->setUser($u->getWinners($tid)[3])->givePrizeItems(Config::PRIZE3);
|
||||||
|
sleep(1);
|
||||||
|
$uid->setUser($u->getWinners($tid)[1])->giveDelay(Config::DELAY1);
|
||||||
|
$uid->setUser($u->getWinners($tid)[2])->giveDelay(Config::DELAY2);
|
||||||
|
$uid->setUser($u->getWinners($tid)[3])->giveDelay(Config::DELAY3);
|
||||||
|
sleep(1);
|
||||||
|
Model\GameConnector::sysMessage(
|
||||||
|
sprintf(
|
||||||
|
Config::VICTORY_MESSAGE,
|
||||||
|
$tid,
|
||||||
|
$uid->setUser($u->getWinners($tid)[1])->uidToLogin(),
|
||||||
|
$uid->setUser($u->getWinners($tid)[2])->uidToLogin(),
|
||||||
|
$uid->setUser($u->getWinners($tid)[3])->uidToLogin()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
sleep(3);
|
||||||
|
Model\Tournament::destroy($tid);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Insallah\Tournaments\View;
|
||||||
|
|
||||||
|
use Insallah\Tournaments\Config;
|
||||||
|
use Insallah\Tournaments\Model\GameConnector;
|
||||||
|
use Insallah\Tournaments\Model\Tournament;
|
||||||
|
use Insallah\Tournaments\Model\User;
|
||||||
|
|
||||||
|
class TList
|
||||||
|
{
|
||||||
|
private string $str;
|
||||||
|
|
||||||
|
public function __construct($user)
|
||||||
|
{
|
||||||
|
if (!Config::IS_ENABLED) {
|
||||||
|
$this->str = '<div><strong style="color: crimson;">В данный момент турниры не проводятся!</strong></div>';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$tournamentstatus = new Tournament();
|
||||||
|
$this->str = '<div>
|
||||||
|
<strong style="color: crimson;">Внимание!</strong>
|
||||||
|
<ul>
|
||||||
|
<li>Присоединяясь к турниру покинуть заявку <u>невозможно</u>!</li>';
|
||||||
|
if ((new GameConnector())->setUser($user->info['id'])->isEkrOverpriced()) {
|
||||||
|
$this->str .= '<li>Стоимость предметов, одетых на вас не должна
|
||||||
|
превышать ' . Config::ekrOverpriceFormula($user->info['level']) . ' еврокредитов.
|
||||||
|
</li>';
|
||||||
|
}
|
||||||
|
if ($user->info['exp'] < Config::MIN_EXP) {
|
||||||
|
$this->str .= '<li>У вас должно быть не менее ' . Config::MIN_EXP . ' опыта.</li>';
|
||||||
|
}
|
||||||
|
$this->str .= '<li>Турнир начнётся, когда в заявке
|
||||||
|
наберётся ' . Config::START_TOURNAMENT . ' человек.</li>
|
||||||
|
</ul>
|
||||||
|
</div>';
|
||||||
|
$this->str .= $tournamentstatus->getList();
|
||||||
|
if (!User::getTournamentIdByUserId($user->info['id']) || !$tournamentstatus->isStarted($user->info['level'])) {
|
||||||
|
$this->str .= '<form method="post">
|
||||||
|
<input type="submit" name="tournament_start" value="Принять участие в турнире">
|
||||||
|
<input type="hidden" name="key" value="' . $_SESSION['bypass'] . '">
|
||||||
|
</form>';
|
||||||
|
} else {
|
||||||
|
$this->str .= 'Вы учавствуете.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function __toString()
|
||||||
|
{
|
||||||
|
return $this->str;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Core\Db;
|
||||||
|
|
||||||
|
class Learming
|
||||||
|
{
|
||||||
|
private $uid;
|
||||||
|
private $shouldStartLearning;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
/** @var User $user */
|
||||||
|
$user = User::start();
|
||||||
|
$this->uid = $user->info['id'];
|
||||||
|
$this->shouldStartLearning = $user->info['shouldStartLearning'];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLearningStatus()
|
||||||
|
{
|
||||||
|
if (!isset($this->shouldStartLearning)) {
|
||||||
|
Db::sql('insert into users_learming (uid) value (?)' ,
|
||||||
|
[$this->uid]);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return (bool)$this->shouldStartLearning;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasLearned()
|
||||||
|
{
|
||||||
|
if (!isset($this->shouldStartLearning)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$this->shouldStartLearning = 0;
|
||||||
|
$this->save();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function save()
|
||||||
|
{
|
||||||
|
if (empty($this->uid) || empty($this->shouldStartLearning)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Db::sql('replace into users_learming (uid, shouldStartLearming) values (?,?)',
|
||||||
|
[$this->uid, $this->shouldStartLearning]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1338,7 +1338,6 @@ class Magic
|
|||||||
'cityreg' => $u->info['cityreg'],
|
'cityreg' => $u->info['cityreg'],
|
||||||
'name' => $u->info['name'],
|
'name' => $u->info['name'],
|
||||||
'sex' => $u->info['sex'],
|
'sex' => $u->info['sex'],
|
||||||
'deviz' => $u->info['deviz'],
|
|
||||||
'hobby' => $u->info['hobby'],
|
'hobby' => $u->info['hobby'],
|
||||||
'time_reg' => $u->info['time_reg'],
|
'time_reg' => $u->info['time_reg'],
|
||||||
'obraz' => $u->info['obraz'],
|
'obraz' => $u->info['obraz'],
|
||||||
@@ -1604,7 +1603,7 @@ class Magic
|
|||||||
|
|
||||||
private static function getDressedEkrTotalPrice($uid)
|
private static function getDressedEkrTotalPrice($uid)
|
||||||
{
|
{
|
||||||
return \Insallah\Db::getValue('select sum(2price) from items_users where inOdet > 0 and uid = ?', [$uid]);
|
return \Core\Db::getValue('select sum(2price) from items_users where inOdet > 0 and uid = ?', [$uid]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function canAttack8Level($attacker, $target)
|
private static function canAttack8Level($attacker, $target)
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class PassGen
|
||||||
|
{
|
||||||
|
public static function new($length = 8)
|
||||||
|
{
|
||||||
|
return substr(
|
||||||
|
preg_replace(
|
||||||
|
"/[^a-zA-Z0-9]/",
|
||||||
|
"",
|
||||||
|
base64_encode(openssl_random_pseudo_bytes($length + 1))
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
$length
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function intCode($length = 8): int
|
||||||
|
{
|
||||||
|
return mt_rand(10 ** ($length - 1), 10 ** $length - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
+309
-306
File diff suppressed because it is too large
Load Diff
+121
-121
@@ -4,7 +4,7 @@ class Quests
|
|||||||
{
|
{
|
||||||
private $free_x = 28;
|
private $free_x = 28;
|
||||||
|
|
||||||
/* Проверка доступности квеста */
|
/* Проверка доступности квеста */
|
||||||
public function testGood($pl)
|
public function testGood($pl)
|
||||||
{
|
{
|
||||||
global $u;
|
global $u;
|
||||||
@@ -17,12 +17,12 @@ class Quests
|
|||||||
$d1 = 0;
|
$d1 = 0;
|
||||||
$sp1 = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "' . $u->info['id'] . '" LIMIT 100'));
|
$sp1 = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `actions` WHERE `vars` LIKE "%start_quest%" AND `vals` = "go" AND `uid` = "' . $u->info['id'] . '" LIMIT 100'));
|
||||||
$pl1 = $pl1[0];
|
$pl1 = $pl1[0];
|
||||||
//Если уже более 5 квестов взяли
|
//Если уже более 5 квестов взяли
|
||||||
if ($d1 >= $this->free_x) {
|
if ($d1 >= $this->free_x) {
|
||||||
$r = 0;
|
$r = 0;
|
||||||
}
|
}
|
||||||
unset($d1, $pl1, $sp1);
|
unset($d1, $pl1, $sp1);
|
||||||
//Если квест уже взяли
|
//Если квест уже взяли
|
||||||
$qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" ORDER BY `id` DESC LIMIT 1'));
|
$qlst = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" ORDER BY `id` DESC LIMIT 1'));
|
||||||
if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') {
|
if (isset($qlst['id']) && $qlst['vals'] != 'win' && $qlst['vals'] != 'end' && $qlst['vals'] != 'bad') {
|
||||||
$r = 0;
|
$r = 0;
|
||||||
@@ -30,7 +30,7 @@ class Quests
|
|||||||
unset($qlst, $qlst2);
|
unset($qlst, $qlst2);
|
||||||
|
|
||||||
$d = $this->expl($pl['tr_date']);
|
$d = $this->expl($pl['tr_date']);
|
||||||
//Завершить квесты [ 1,2,3,4,5 ...
|
//Завершить квесты [ 1,2,3,4,5 ...
|
||||||
if (isset($d['tr_endq'])) {
|
if (isset($d['tr_endq'])) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$e = explode(',', $d['tr_endq']);
|
$e = explode(',', $d['tr_endq']);
|
||||||
@@ -43,7 +43,7 @@ class Quests
|
|||||||
}
|
}
|
||||||
unset($qn, $qlst, $qlst2);
|
unset($qn, $qlst, $qlst2);
|
||||||
}
|
}
|
||||||
//Задержка между выполнением квеста
|
//Задержка между выполнением квеста
|
||||||
if (isset($d['tr_zdr'])) {
|
if (isset($d['tr_zdr'])) {
|
||||||
$qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" ORDER BY `time` DESC LIMIT 1'));
|
$qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" ORDER BY `time` DESC LIMIT 1'));
|
||||||
if ($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time() > 0) {
|
if ($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time() > 0) {
|
||||||
@@ -51,7 +51,7 @@ class Quests
|
|||||||
}
|
}
|
||||||
unset($qlst);
|
unset($qlst);
|
||||||
}
|
}
|
||||||
//Переодичность квеста
|
//Переодичность квеста
|
||||||
if (isset($d['tr_tm1'])) {
|
if (isset($d['tr_tm1'])) {
|
||||||
$d['tr_tm1'] = str_replace('d', date('d'), $d['tr_tm1']);
|
$d['tr_tm1'] = str_replace('d', date('d'), $d['tr_tm1']);
|
||||||
$d['tr_tm1'] = str_replace('m', date('m'), $d['tr_tm1']);
|
$d['tr_tm1'] = str_replace('m', date('m'), $d['tr_tm1']);
|
||||||
@@ -59,9 +59,9 @@ class Quests
|
|||||||
$d['tr_tm2'] = str_replace('d', date('d'), $d['tr_tm2']);
|
$d['tr_tm2'] = str_replace('d', date('d'), $d['tr_tm2']);
|
||||||
$d['tr_tm2'] = str_replace('m', date('m'), $d['tr_tm2']);
|
$d['tr_tm2'] = str_replace('m', date('m'), $d['tr_tm2']);
|
||||||
$d['tr_tm2'] = str_replace('y', date('y'), $d['tr_tm2']);
|
$d['tr_tm2'] = str_replace('y', date('y'), $d['tr_tm2']);
|
||||||
//проверка интервалов
|
//проверка интервалов
|
||||||
}
|
}
|
||||||
//Сколько раз можно пройти квест
|
//Сколько раз можно пройти квест
|
||||||
if (isset($d['tr_raz'])) {
|
if (isset($d['tr_raz'])) {
|
||||||
$qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" LIMIT ' . $d['tr_raz'], 2);
|
$qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" LIMIT ' . $d['tr_raz'], 2);
|
||||||
if ($d['tr_raz'] > 0 && $d['tr_raz'] - $qlst[0] <= 0) {
|
if ($d['tr_raz'] > 0 && $d['tr_raz'] - $qlst[0] <= 0) {
|
||||||
@@ -69,7 +69,7 @@ class Quests
|
|||||||
}
|
}
|
||||||
unset($qlst);
|
unset($qlst);
|
||||||
}
|
}
|
||||||
//Попыток пройти квест
|
//Попыток пройти квест
|
||||||
if (isset($d['tr_raz2'])) {
|
if (isset($d['tr_raz2'])) {
|
||||||
$qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" AND `vals` != "win" LIMIT ' . $d['tr_raz2'], 2);
|
$qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" AND `vals` != "win" LIMIT ' . $d['tr_raz2'], 2);
|
||||||
if ($d['tr_raz2'] - $qlst[0] <= 0) {
|
if ($d['tr_raz2'] - $qlst[0] <= 0) {
|
||||||
@@ -81,7 +81,7 @@ class Quests
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function onlyOnceQuest($quests, $uid)
|
public function onlyOnceQuest($quests, $uid)
|
||||||
{ // Отсеиваем одноразовые квесты
|
{ // Отсеиваем одноразовые квесты
|
||||||
$result = [];
|
$result = [];
|
||||||
$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $uid));
|
$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $uid));
|
||||||
foreach ($quests as $quest) {
|
foreach ($quests as $quest) {
|
||||||
@@ -117,20 +117,20 @@ class Quests
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Взять квест */
|
/* Взять квест */
|
||||||
public function startq($id, $val = null)
|
public function startq($id, $val = null)
|
||||||
{
|
{
|
||||||
global $c, $u;
|
global $c, $u;
|
||||||
$pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE (`city` = "" OR `city` = "' . $u->info['city'] . '") AND `delete` = "0" AND `min_lvl` <= ' . $u->info['level'] . ' AND `max_lvl` >= ' . $u->info['level'] . ' AND (`align` = "0" OR `align` = "' . floor($u->info['align']) . '") AND `id` = "' . mysql_real_escape_string($id) . '" LIMIT 1'));
|
$pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE (`city` = "" OR `city` = "' . $u->info['city'] . '") AND `delete` = "0" AND `min_lvl` <= ' . $u->info['level'] . ' AND `max_lvl` >= ' . $u->info['level'] . ' AND (`align` = "0" OR `align` = "' . floor($u->info['align']) . '") AND `id` = "' . mysql_real_escape_string($id) . '" LIMIT 1'));
|
||||||
if (isset($pl['id'])) {
|
if (isset($pl['id'])) {
|
||||||
$u->addAction(time(), 'start_quest' . $pl['id'], 'go', null, $val);
|
$u->addAction(time(), 'start_quest' . $pl['id'], 'go', null, $val);
|
||||||
$u->error = 'Вы успешно получили задание "' . $pl['name'] . '"';
|
$u->error = 'Вы успешно получили задание "' . $pl['name'] . '"';
|
||||||
} else {
|
} else {
|
||||||
$u->error = 'Не удалось получить данное задание';
|
$u->error = 'Не удалось получить данное задание';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Взять квест в пещере */
|
/* Взять квест в пещере */
|
||||||
public function startq_dn($id, $val = null)
|
public function startq_dn($id, $val = null)
|
||||||
{
|
{
|
||||||
global $c, $u;
|
global $c, $u;
|
||||||
@@ -140,13 +140,13 @@ class Quests
|
|||||||
$u->addAction(time(), 'start_quest' . $pl['id'], 'go');
|
$u->addAction(time(), 'start_quest' . $pl['id'], 'go');
|
||||||
else
|
else
|
||||||
$u->addAction(time(), 'start_quest' . $pl['id'], 'go', $u->info['id'], $val);
|
$u->addAction(time(), 'start_quest' . $pl['id'], 'go', $u->info['id'], $val);
|
||||||
$u->error = 'Вы успешно получили задание "' . $pl['name'] . '"';
|
$u->error = 'Вы успешно получили задание "' . $pl['name'] . '"';
|
||||||
} else {
|
} else {
|
||||||
$u->error = 'Не удалось получить данное задание';
|
$u->error = 'Не удалось получить данное задание';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Отказаться от квеста */
|
/* Отказаться от квеста */
|
||||||
public function endq($id, $tp)
|
public function endq($id, $tp)
|
||||||
{
|
{
|
||||||
global $u;
|
global $u;
|
||||||
@@ -155,28 +155,28 @@ class Quests
|
|||||||
if (isset($qlst['id'])) {
|
if (isset($qlst['id'])) {
|
||||||
if ($tp == 'end') {
|
if ($tp == 'end') {
|
||||||
mysql_query('UPDATE `actions` SET `vals` = "end" WHERE `id` = "' . $qlst['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `actions` SET `vals` = "end" WHERE `id` = "' . $qlst['id'] . '" LIMIT 1');
|
||||||
$u->error = 'Вы успешно отказались от задания "' . $pl['name'] . '"';
|
$u->error = 'Вы успешно отказались от задания "' . $pl['name'] . '"';
|
||||||
} elseif ($tp == 'win') {
|
} elseif ($tp == 'win') {
|
||||||
mysql_query('UPDATE `actions` SET `vals` = "win" ,`time` = "' . time() . '" WHERE `id` = "' . $qlst['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `actions` SET `vals` = "win" ,`time` = "' . time() . '" WHERE `id` = "' . $qlst['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$u->error = 'Не удалось отказаться от задания ';
|
$u->error = 'Не удалось отказаться от задания ';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Инфо о квесте в пещерах */
|
/* Инфо о квесте в пещерах */
|
||||||
public function infoDng($pl)
|
public function infoDng($pl)
|
||||||
{
|
{
|
||||||
global $u;
|
global $u;
|
||||||
$r = 0;
|
$r = 0;
|
||||||
$xrz = 0;
|
$xrz = 0;
|
||||||
$qst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` = "go" LIMIT 1'));
|
$qst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` = "go" LIMIT 1'));
|
||||||
//Условия задания которые должны удовлетворять текущим характеристикам
|
//Условия задания которые должны удовлетворять текущим характеристикам
|
||||||
//$d = $this->expl($pl['tr_date']);
|
//$d = $this->expl($pl['tr_date']);
|
||||||
//Действия квеста
|
//Действия квеста
|
||||||
$d = $this->expl($pl['act_date']);
|
$d = $this->expl($pl['act_date']);
|
||||||
|
|
||||||
//Поговорить с NPS
|
//Поговорить с NPS
|
||||||
if (isset($d['dlg_nps'])) {
|
if (isset($d['dlg_nps'])) {
|
||||||
$i7 = 0;
|
$i7 = 0;
|
||||||
$x3 = explode(',', $d['dlg_nps']);
|
$x3 = explode(',', $d['dlg_nps']);
|
||||||
@@ -190,12 +190,12 @@ class Quests
|
|||||||
unset($x1, $x3, $x4, $i7);
|
unset($x1, $x3, $x4, $i7);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Убить игроков
|
//Убить игроков
|
||||||
if (isset($d['kill_user'])) {
|
if (isset($d['kill_user'])) {
|
||||||
$r += $d['kill_user'];
|
$r += $d['kill_user'];
|
||||||
}
|
}
|
||||||
|
|
||||||
//Убить ботов
|
//Убить ботов
|
||||||
if (isset($d['kill_bot'])) {
|
if (isset($d['kill_bot'])) {
|
||||||
$x = '';
|
$x = '';
|
||||||
$ex = explode(',', $d['kill_bot']);
|
$ex = explode(',', $d['kill_bot']);
|
||||||
@@ -221,7 +221,7 @@ class Quests
|
|||||||
unset($x, $ex, $x2, $bot2, $ex2);
|
unset($x, $ex, $x2, $bot2, $ex2);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Собрать ресурсы
|
//Собрать ресурсы
|
||||||
if (isset($d['tk_itm'])) {
|
if (isset($d['tk_itm'])) {
|
||||||
$ex = explode(',', $d['tk_itm']);
|
$ex = explode(',', $d['tk_itm']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@@ -237,7 +237,7 @@ class Quests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Собрать трофеи
|
//Собрать трофеи
|
||||||
if (isset($d['tkill_itm'])) {
|
if (isset($d['tkill_itm'])) {
|
||||||
$ex = explode(',', $d['tkill_itm']);
|
$ex = explode(',', $d['tkill_itm']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@@ -263,27 +263,27 @@ class Quests
|
|||||||
$xrz = $r;
|
$xrz = $r;
|
||||||
}
|
}
|
||||||
$r = '<table style="display:inline-block;" border="0" cellspacing="0" cellpadding="0" height="10"><tr><td valign="middle" width="120" style="padding-top:12px">
|
$r = '<table style="display:inline-block;" border="0" cellspacing="0" cellpadding="0" height="10"><tr><td valign="middle" width="120" style="padding-top:12px">
|
||||||
<div style="position:relative;"><div id="vhp-1234500000' . $pl['id'] . '" title="Выполнение задания" align="left" class="seehp" style="position:absolute; top:-10px; width:120px; height:10px; z-index:12;"> ' . $xrz . '/' . $r . '</div>
|
<div style="position:relative;"><div id="vhp-1234500000' . $pl['id'] . '" title="Выполнение задания" align="left" class="seehp" style="position:absolute; top:-10px; width:120px; height:10px; z-index:12;"> ' . $xrz . '/' . $r . '</div>
|
||||||
<div title="Выполнение задания" class="hpborder" style="position:absolute; top:-10px; width:120px; height:9px; z-index:13;"><img src="https://img.new-combats.com/1x1.gif" height="9" width="1"></div>
|
<div title="Выполнение задания" class="hpborder" style="position:absolute; top:-10px; width:120px; height:9px; z-index:13;"><img src="https://img.new-combats.com/1x1.gif" height="9" width="1"></div>
|
||||||
<div class="hp_3 senohp" style="height:9px; width:120px; position:absolute; top:-10px; z-index:11;" id="lhp-1234500000' . $pl['id'] . '"><img src="https://img.new-combats.com/1x1.gif" height="9" width="1"></div>
|
<div class="hp_3 senohp" style="height:9px; width:120px; position:absolute; top:-10px; z-index:11;" id="lhp-1234500000' . $pl['id'] . '"><img src="https://img.new-combats.com/1x1.gif" height="9" width="1"></div>
|
||||||
<div title="Выполнение задания" class="hp_none" style="position:absolute; top:-10px; width:120px; height:10px; z-index:10;"><img src="https://img.new-combats.com/1x1.gif" height="10"></div>
|
<div title="Выполнение задания" class="hp_none" style="position:absolute; top:-10px; width:120px; height:10px; z-index:10;"><img src="https://img.new-combats.com/1x1.gif" height="10"></div>
|
||||||
</div></td></tr></table><br><script>top.startHpRegen("main",-1234500000' . $pl['id'] . ',' . $xrz . ',' . $r . ',0,0,0,0,0,0,1);</script>';
|
</div></td></tr></table><br><script>top.startHpRegen("main",-1234500000' . $pl['id'] . ',' . $xrz . ',' . $r . ',0,0,0,0,0,0,1);</script>';
|
||||||
}
|
}
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Информация о квесте */
|
/* Информация о квесте */
|
||||||
public function info($pl)
|
public function info($pl)
|
||||||
{
|
{
|
||||||
global $u;
|
global $u;
|
||||||
$r = '';
|
$r = '';
|
||||||
$t = '';
|
$t = '';
|
||||||
$qst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` = "go" LIMIT 1'));
|
$qst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` = "go" LIMIT 1'));
|
||||||
//Условия задания которые должны удовлетворять текущим характеристикам
|
//Условия задания которые должны удовлетворять текущим характеристикам
|
||||||
$d = $this->expl($pl['tr_date']);
|
$d = $this->expl($pl['tr_date']);
|
||||||
//Завершить квесты [ 1,2,3,4,5 ...
|
//Завершить квесты [ 1,2,3,4,5 ...
|
||||||
if (isset($d['tr_endq'])) {
|
if (isset($d['tr_endq'])) {
|
||||||
$t .= 'Завершить квесты: ';
|
$t .= 'Завершить квесты: ';
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$e = explode(',', $d['tr_endq']);
|
$e = explode(',', $d['tr_endq']);
|
||||||
while ($i <= count($e)) {
|
while ($i <= count($e)) {
|
||||||
@@ -299,26 +299,26 @@ class Quests
|
|||||||
$t .= '<br>';
|
$t .= '<br>';
|
||||||
unset($qn);
|
unset($qn);
|
||||||
}
|
}
|
||||||
//Из ботов падают предметы [ idbot-itm1=%,itm2=%|
|
//Из ботов падают предметы [ idbot-itm1=%,itm2=%|
|
||||||
if (isset($d['tr_botitm'])) {
|
if (isset($d['tr_botitm'])) {
|
||||||
$t .= 'Из ботов выпадают предметы:<ul>';
|
$t .= 'Из ботов выпадают предметы:<ul>';
|
||||||
$e = explode('|', $d['tr_botitm']);
|
$e = explode('|', $d['tr_botitm']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($e)) {
|
while ($i < count($e)) {
|
||||||
$j = 0;
|
$j = 0;
|
||||||
$e2 = explode('-', $e[$i]);
|
$e2 = explode('-', $e[$i]);
|
||||||
//$e2[0] - id бота
|
//$e2[0] - id бота
|
||||||
if ($e2[0] > 0) {
|
if ($e2[0] > 0) {
|
||||||
$qn = mysql_fetch_array(mysql_query('SELECT `login` FROM `test_bot` WHERE `id` = "' . $e2[0] . '" LIMIT 1'));
|
$qn = mysql_fetch_array(mysql_query('SELECT `login` FROM `test_bot` WHERE `id` = "' . $e2[0] . '" LIMIT 1'));
|
||||||
$t .= ' • Из "' . $qn['login'] . '" выпадает: ';
|
$t .= ' • Из "' . $qn['login'] . '" выпадает: ';
|
||||||
} else {
|
} else {
|
||||||
$t .= ' • Из любых ботов выпадает: ';
|
$t .= ' • Из любых ботов выпадает: ';
|
||||||
}
|
}
|
||||||
//$e2[1] - предметы
|
//$e2[1] - предметы
|
||||||
$e3 = explode(',', $e2[1]);
|
$e3 = explode(',', $e2[1]);
|
||||||
while ($j < count($e3)) {
|
while ($j < count($e3)) {
|
||||||
$e4 = explode('=', $e3[$j]);
|
$e4 = explode('=', $e3[$j]);
|
||||||
//$e4[0] - предмет , $e4[1] - шанс
|
//$e4[0] - предмет , $e4[1] - шанс
|
||||||
$qi = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img` FROM `items_main` WHERE `id` = "' . $e4[0] . '" LIMIT 1'));
|
$qi = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img` FROM `items_main` WHERE `id` = "' . $e4[0] . '" LIMIT 1'));
|
||||||
$t .= '<img src="https://img.new-combats.com/i/items/' . $qi['img'] . '" style="max-height:12px"> <a href="items_info.php?id=' . $qi['id'] . '" target="_blank">' . $qi['name'] . '</a>, ';
|
$t .= '<img src="https://img.new-combats.com/i/items/' . $qi['img'] . '" style="max-height:12px"> <a href="items_info.php?id=' . $qi['id'] . '" target="_blank">' . $qi['name'] . '</a>, ';
|
||||||
$j++;
|
$j++;
|
||||||
@@ -329,26 +329,26 @@ class Quests
|
|||||||
$t .= '<br>';
|
$t .= '<br>';
|
||||||
unset($qn, $qi, $e2, $e3, $e4);
|
unset($qn, $qi, $e2, $e3, $e4);
|
||||||
}
|
}
|
||||||
//При выйгрыше падают предметы [ type-itm1=%,itm2=%|
|
//При выйгрыше падают предметы [ type-itm1=%,itm2=%|
|
||||||
if (isset($d['tr_winitm'])) {
|
if (isset($d['tr_winitm'])) {
|
||||||
$t .= 'После победы выпадают предметы:<br>';
|
$t .= 'После победы выпадают предметы:<br>';
|
||||||
$e = explode('|', $d['tr_winitm']);
|
$e = explode('|', $d['tr_winitm']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($e)) {
|
while ($i < count($e)) {
|
||||||
$e2 = explode('-', $e[$i]);
|
$e2 = explode('-', $e[$i]);
|
||||||
$t .= ' • ';
|
$t .= ' • ';
|
||||||
//$e2[0] - id бота
|
//$e2[0] - id бота
|
||||||
if ($e2[0] > 0) {
|
if ($e2[0] > 0) {
|
||||||
$t .= 'Из людей выпадает: ';
|
$t .= 'Из людей выпадает: ';
|
||||||
} else {
|
} else {
|
||||||
$t .= 'Из ботов выпадает: ';
|
$t .= 'Из ботов выпадает: ';
|
||||||
}
|
}
|
||||||
//$e2[1] - предметы
|
//$e2[1] - предметы
|
||||||
$j = 0;
|
$j = 0;
|
||||||
$e3 = explode(',', $e2[1]);
|
$e3 = explode(',', $e2[1]);
|
||||||
while ($j < count($e3)) {
|
while ($j < count($e3)) {
|
||||||
$e4 = explode('=', $e3[$j]);
|
$e4 = explode('=', $e3[$j]);
|
||||||
//$e4[0] - предмет , $e4[1] - шанс
|
//$e4[0] - предмет , $e4[1] - шанс
|
||||||
$qi = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img` FROM `items_main` WHERE `id` = "' . $e4[0] . '" LIMIT 1'));
|
$qi = mysql_fetch_array(mysql_query('SELECT `id`,`name`,`img` FROM `items_main` WHERE `id` = "' . $e4[0] . '" LIMIT 1'));
|
||||||
$t .= '<img src="https://img.new-combats.com/i/items/' . $qi['img'] . '" style="max-height:12px"> <a href="items_info.php?id=' . $qi['id'] . '" target="_blank">' . $qi['name'] . '</a>, ';
|
$t .= '<img src="https://img.new-combats.com/i/items/' . $qi['img'] . '" style="max-height:12px"> <a href="items_info.php?id=' . $qi['id'] . '" target="_blank">' . $qi['name'] . '</a>, ';
|
||||||
$j++;
|
$j++;
|
||||||
@@ -359,17 +359,17 @@ class Quests
|
|||||||
}
|
}
|
||||||
unset($qn, $qi, $e2, $e3, $e4);
|
unset($qn, $qi, $e2, $e3, $e4);
|
||||||
}
|
}
|
||||||
//Задержка между выполнением квеста
|
//Задержка между выполнением квеста
|
||||||
if (isset($d['tr_zdr'])) {
|
if (isset($d['tr_zdr'])) {
|
||||||
$qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" LIMIT 1'));
|
$qlst = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" LIMIT 1'));
|
||||||
$t .= 'Задержка между выполнением задания: ' . $u->timeOut($d['tr_zdr'] * 60 * 60);
|
$t .= 'Задержка между выполнением задания: ' . $u->timeOut($d['tr_zdr'] * 60 * 60);
|
||||||
if ($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time() > 0) {
|
if ($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time() > 0) {
|
||||||
$t .= '<small>(Осталось: ' . $u->timeOut($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time()) . ' ч.)</small>';
|
$t .= '<small>(Осталось: ' . $u->timeOut($qlst['time'] + ($d['tr_zdr'] * 60 * 60) - time()) . ' ч.)</small>';
|
||||||
}
|
}
|
||||||
$t .= '<br>';
|
$t .= '<br>';
|
||||||
unset($qlst);
|
unset($qlst);
|
||||||
}
|
}
|
||||||
//Переодичность квеста
|
//Переодичность квеста
|
||||||
if (isset($d['tr_tm1'])) {
|
if (isset($d['tr_tm1'])) {
|
||||||
$d['tr_tm1'] = str_replace('d', date('d'), $d['tr_tm1']);
|
$d['tr_tm1'] = str_replace('d', date('d'), $d['tr_tm1']);
|
||||||
$d['tr_tm1'] = str_replace('m', date('m'), $d['tr_tm1']);
|
$d['tr_tm1'] = str_replace('m', date('m'), $d['tr_tm1']);
|
||||||
@@ -379,31 +379,31 @@ class Quests
|
|||||||
$d['tr_tm2'] = str_replace('m', date('m'), $d['tr_tm2']);
|
$d['tr_tm2'] = str_replace('m', date('m'), $d['tr_tm2']);
|
||||||
$d['tr_tm2'] = str_replace('y', date('y'), $d['tr_tm2']);
|
$d['tr_tm2'] = str_replace('y', date('y'), $d['tr_tm2']);
|
||||||
|
|
||||||
$t .= 'Период квеста: ' . $d['tr_tm1'] . ' - ' . $d['tr_tm2'] . '<br>';
|
$t .= 'Период квеста: ' . $d['tr_tm1'] . ' - ' . $d['tr_tm2'] . '<br>';
|
||||||
}
|
}
|
||||||
//Сколько раз можно пройти квест
|
//Сколько раз можно пройти квест
|
||||||
if (isset($d['tr_raz'])) {
|
if (isset($d['tr_raz'])) {
|
||||||
if ($d['tr_raz'] == -1) {
|
if ($d['tr_raz'] == -1) {
|
||||||
$t .= 'Сколько еще раз можно выполнить задание: <b><small>бесконечно</small></b><br>';
|
$t .= 'Сколько еще раз можно выполнить задание: <b><small>бесконечно</small></b><br>';
|
||||||
} else {
|
} else {
|
||||||
$qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" LIMIT ' . $d['tr_raz'], 2);
|
$qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" LIMIT ' . $d['tr_raz'], 2);
|
||||||
$t .= 'Сколько раз можно выполнить задание: ' . ($d['tr_raz'] - $qlst[0]) . '<br>';
|
$t .= 'Сколько раз можно выполнить задание: ' . ($d['tr_raz'] - $qlst[0]) . '<br>';
|
||||||
}
|
}
|
||||||
unset($qlst);
|
unset($qlst);
|
||||||
}
|
}
|
||||||
//Попыток пройти квест
|
//Попыток пройти квест
|
||||||
if (isset($d['tr_raz2'])) {
|
if (isset($d['tr_raz2'])) {
|
||||||
$qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" AND `vals` != "win" LIMIT ' . $d['tr_raz2'], 2);
|
$qlst = $u->testAction('SELECT `id` FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" AND `vals` != "go" AND `vals` != "win" LIMIT ' . $d['tr_raz2'], 2);
|
||||||
$t .= 'Осталось попыток выполнить задание: ' . ($d['tr_raz2'] - $qlst[0]) . '<br>';
|
$t .= 'Осталось попыток выполнить задание: ' . ($d['tr_raz2'] - $qlst[0]) . '<br>';
|
||||||
unset($qlst);
|
unset($qlst);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($t != '') {
|
if ($t != '') {
|
||||||
$r .= '<b>Условия задания:</b><br>' . $t . '<br>';
|
$r .= '<b>Условия задания:</b><br>' . $t . '<br>';
|
||||||
$t = '';
|
$t = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
//Награда за квест
|
//Награда за квест
|
||||||
$d = $this->expl($pl['win_date']);
|
$d = $this->expl($pl['win_date']);
|
||||||
|
|
||||||
if (isset($d['add_eff'])) {
|
if (isset($d['add_eff'])) {
|
||||||
@@ -415,7 +415,7 @@ class Quests
|
|||||||
$x6 = mysql_fetch_array(mysql_query('SELECT `id2`,`mname`,`img` FROM `eff_main` WHERE `id2` = "' . $x7[0] . '" LIMIT 1'));
|
$x6 = mysql_fetch_array(mysql_query('SELECT `id2`,`mname`,`img` FROM `eff_main` WHERE `id2` = "' . $x7[0] . '" LIMIT 1'));
|
||||||
if (isset($x6['id2'])) {
|
if (isset($x6['id2'])) {
|
||||||
$x5 .= '<img width="40" height="25" src="https://img.new-combats.com/i/eff/' . $x6['img'] . '" title="' . $x6['mname'] . '
|
$x5 .= '<img width="40" height="25" src="https://img.new-combats.com/i/eff/' . $x6['img'] . '" title="' . $x6['mname'] . '
|
||||||
Время действия: ' . $u->timeOut($x7[1]) . '"> ';
|
Время действия: ' . $u->timeOut($x7[1]) . '"> ';
|
||||||
}
|
}
|
||||||
$x4++;
|
$x4++;
|
||||||
}
|
}
|
||||||
@@ -426,25 +426,25 @@ class Quests
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isset($d['add_rep'])) {
|
if (isset($d['add_rep'])) {
|
||||||
$t .= 'Репутация ' . $u->city_name[$pl['city']] . ': ' . $d['add_rep'] . '<br>';
|
$t .= 'Репутация ' . $u->city_name[$pl['city']] . ': ' . $d['add_rep'] . '<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($d['add_repizlom'])) {
|
if (isset($d['add_repizlom'])) {
|
||||||
$t .= 'Репутация Излом Хаоса: ' . $d['add_repizlom'] . '<br>';
|
$t .= 'Репутация Излом Хаоса: ' . $d['add_repizlom'] . '<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($d['add_cr'])) {
|
if (isset($d['add_cr'])) {
|
||||||
$t .= 'Деньги: ' . $d['add_cr'] . ' кр.<br>';
|
$t .= 'Деньги: ' . $d['add_cr'] . ' кр.<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($t != '') {
|
if ($t != '') {
|
||||||
$r = '<b>Награда:</b><br>' . $t . '<br>' . $r;
|
$r = '<b>Награда:</b><br>' . $t . '<br>' . $r;
|
||||||
$t = '';
|
$t = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
//Действия квеста
|
//Действия квеста
|
||||||
$d = $this->expl($pl['act_date']);
|
$d = $this->expl($pl['act_date']);
|
||||||
//Поговорить с NPS
|
//Поговорить с NPS
|
||||||
if (isset($d['dlg_nps'])) {
|
if (isset($d['dlg_nps'])) {
|
||||||
$i7 = 0;
|
$i7 = 0;
|
||||||
$x3 = explode(',', $d['dlg_nps']);
|
$x3 = explode(',', $d['dlg_nps']);
|
||||||
@@ -453,30 +453,30 @@ class Quests
|
|||||||
if ($x4[0] > 0) {
|
if ($x4[0] > 0) {
|
||||||
$x1 = mysql_fetch_array(mysql_query('SELECT `text` FROM `dungeon_dialog` WHERE `id` = "' . $x4[0] . '" LIMIT 1'));
|
$x1 = mysql_fetch_array(mysql_query('SELECT `text` FROM `dungeon_dialog` WHERE `id` = "' . $x4[0] . '" LIMIT 1'));
|
||||||
if (!isset($x1['text'])) {
|
if (!isset($x1['text'])) {
|
||||||
$x1 = '<i>незивестно</i>';
|
$x1 = '<i>незивестно</i>';
|
||||||
} else {
|
} else {
|
||||||
$x1 = $x1['text'];
|
$x1 = $x1['text'];
|
||||||
}
|
}
|
||||||
$x = 0;
|
$x = 0;
|
||||||
$t .= 'Поговорить с <b>' . $x1 . '</b>: ' . $x . '/1<br>';
|
$t .= 'Поговорить с <b>' . $x1 . '</b>: ' . $x . '/1<br>';
|
||||||
}
|
}
|
||||||
$i7++;
|
$i7++;
|
||||||
}
|
}
|
||||||
unset($x1, $x3, $x4, $i7);
|
unset($x1, $x3, $x4, $i7);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Убить игроков
|
//Убить игроков
|
||||||
if (isset($d['kill_user'])) {
|
if (isset($d['kill_user'])) {
|
||||||
$t .= 'Убить игроков: 0/' . $d['kill_user'] . '<br>';
|
$t .= 'Убить игроков: 0/' . $d['kill_user'] . '<br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
//Убить ботов
|
//Убить ботов
|
||||||
if (isset($d['kill_bot'])) {
|
if (isset($d['kill_bot'])) {
|
||||||
|
|
||||||
if (isset($d['all_kill']) && (int)$d['all_kill'] > 0) {
|
if (isset($d['all_kill']) && (int)$d['all_kill'] > 0) {
|
||||||
$x = '';
|
$x = '';
|
||||||
$ex = explode(',', $d['kill_bot']);
|
$ex = explode(',', $d['kill_bot']);
|
||||||
$i = 0; # Количество циклов для каждого типа бота.
|
$i = 0; # Количество циклов для каждого типа бота.
|
||||||
$q = '';
|
$q = '';
|
||||||
while ($i < count($ex)) {
|
while ($i < count($ex)) {
|
||||||
$ex2 = explode('=', $ex[$i]);
|
$ex2 = explode('=', $ex[$i]);
|
||||||
@@ -516,12 +516,12 @@ class Quests
|
|||||||
|
|
||||||
if ($x != '') {
|
if ($x != '') {
|
||||||
$x = trim($x, ', ');
|
$x = trim($x, ', ');
|
||||||
$t .= 'Убить ботов: <br>' . $x;
|
$t .= 'Убить ботов: <br>' . $x;
|
||||||
}
|
}
|
||||||
unset($x, $ex, $x2, $bot2, $ex2);
|
unset($x, $ex, $x2, $bot2, $ex2);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Собрать ресурсы
|
//Собрать ресурсы
|
||||||
if (isset($d['tk_itm'])) {
|
if (isset($d['tk_itm'])) {
|
||||||
$ex = explode(',', $d['tk_itm']);
|
$ex = explode(',', $d['tk_itm']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@@ -538,11 +538,11 @@ class Quests
|
|||||||
}
|
}
|
||||||
if ($x != '') {
|
if ($x != '') {
|
||||||
$x = trim($x, ', ');
|
$x = trim($x, ', ');
|
||||||
$t .= 'Собрать ресурсы: <br>' . $x;
|
$t .= 'Собрать ресурсы: <br>' . $x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Собирание трофеев
|
//Собирание трофеев
|
||||||
if (isset($d['tkill_itm'])) {
|
if (isset($d['tkill_itm'])) {
|
||||||
$ex = explode(',', $d['tkill_itm']);
|
$ex = explode(',', $d['tkill_itm']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@@ -559,17 +559,17 @@ class Quests
|
|||||||
}
|
}
|
||||||
if ($x != '') {
|
if ($x != '') {
|
||||||
$x = trim($x, ', ');
|
$x = trim($x, ', ');
|
||||||
$t .= 'Собрать трофеи: <br>' . $x;
|
$t .= 'Собрать трофеи: <br>' . $x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($t != '') {
|
if ($t != '') {
|
||||||
$r = '<br><b>Действия задания:</b><br>' . $t . '<br>' . $r;
|
$r = '<br><b>Действия задания:</b><br>' . $t . '<br>' . $r;
|
||||||
$t = '';
|
$t = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($r == '') {
|
if ($r == '') {
|
||||||
$r = 'Дополнительная информация по заданию отсутствует';
|
$r = 'Дополнительная информация по заданию отсутствует';
|
||||||
}
|
}
|
||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
@@ -577,35 +577,35 @@ class Quests
|
|||||||
public function testquest()
|
public function testquest()
|
||||||
{
|
{
|
||||||
global $u;
|
global $u;
|
||||||
if ($u->info['battle'] == 0 && $u->room['name'] != 'Башня Смерти') {
|
if ($u->info['battle'] == 0 && $u->room['name'] != 'Башня Смерти') {
|
||||||
$sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100');
|
$sp = mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` LIKE "%start_quest%" AND `vals` = "go" LIMIT 100');
|
||||||
|
|
||||||
while ($pl2 = mysql_fetch_array($sp)) {
|
while ($pl2 = mysql_fetch_array($sp)) {
|
||||||
$pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "' . (str_replace('start_quest', '', $pl2['vars'])) . '" LIMIT 1'));
|
$pl = mysql_fetch_array(mysql_query('SELECT * FROM `quests` WHERE `id` = "' . (str_replace('start_quest', '', $pl2['vars'])) . '" LIMIT 1'));
|
||||||
|
|
||||||
$g = 1;
|
$g = 1;
|
||||||
//Действия квеста
|
//Действия квеста
|
||||||
$d = $this->expl($pl['act_date']);
|
$d = $this->expl($pl['act_date']);
|
||||||
|
|
||||||
//Поговорить с NPS
|
//Поговорить с NPS
|
||||||
if (isset($d['dlg_nps'])) {
|
if (isset($d['dlg_nps'])) {
|
||||||
$g = 0;
|
$g = 0;
|
||||||
unset($x);
|
unset($x);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Убить игроков
|
//Убить игроков
|
||||||
if (isset($d['kill_user'])) {
|
if (isset($d['kill_user'])) {
|
||||||
$x = 0;
|
$x = 0;
|
||||||
if ($x < $d['kill_user']) {
|
if ($x < $d['kill_user']) {
|
||||||
$g = 0;
|
$g = 0;
|
||||||
}
|
}
|
||||||
//$d['kill_user'] - стольких нужно убить
|
//$d['kill_user'] - стольких нужно убить
|
||||||
unset($x);
|
unset($x);
|
||||||
}
|
}
|
||||||
//Убить ботов
|
//Убить ботов
|
||||||
if (isset($d['kill_bot'])) {
|
if (isset($d['kill_bot'])) {
|
||||||
$ex = explode(',', $d['kill_bot']);
|
$ex = explode(',', $d['kill_bot']);
|
||||||
$ii = 0; // Количество циклов для каждого типа бота.
|
$ii = 0; // Количество циклов для каждого типа бота.
|
||||||
$q = '';
|
$q = '';
|
||||||
while ($ii < count($ex)) {
|
while ($ii < count($ex)) {
|
||||||
$ex2 = explode('=', $ex[$ii]);
|
$ex2 = explode('=', $ex[$ii]);
|
||||||
@@ -629,11 +629,11 @@ class Quests
|
|||||||
unset($x, $ex, $x2, $x3, $bot2, $ex2);
|
unset($x, $ex, $x2, $x3, $bot2, $ex2);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Собрать ресурсы
|
//Собрать ресурсы
|
||||||
if (isset($d['tk_itm'])) {
|
if (isset($d['tk_itm'])) {
|
||||||
$g = $this->collect_01(explode(',', $d['tk_itm']), $u);
|
$g = $this->collect_01(explode(',', $d['tk_itm']), $u);
|
||||||
}
|
}
|
||||||
//Собирание трофеев
|
//Собирание трофеев
|
||||||
if (isset($d['tkill_itm'])) {
|
if (isset($d['tkill_itm'])) {
|
||||||
$g = $this->collect_01(explode(',', $d['tkill_itm']), $u);
|
$g = $this->collect_01(explode(',', $d['tkill_itm']), $u);
|
||||||
}
|
}
|
||||||
@@ -647,7 +647,7 @@ class Quests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function collect_01($arr, $u){ // убираю дублирование. хер пойми что проверяем, хз как назвать.
|
private function collect_01($arr, $u){ // убираю дублирование. хер пойми что проверяем, хз как назвать.
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($arr)) {
|
while ($i < count($arr)) {
|
||||||
$ex2 = explode('=', $arr[$i]);
|
$ex2 = explode('=', $arr[$i]);
|
||||||
@@ -660,7 +660,7 @@ class Quests
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function collect_02($ex, $u, $pl) { // убираю дублирование. хер пойми что проверяем, хз как назвать.
|
private function collect_02($ex, $u, $pl) { // убираю дублирование. хер пойми что проверяем, хз как назвать.
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i < count($ex)) {
|
while ($i < count($ex)) {
|
||||||
$ex2 = explode('=', $ex[$i]);
|
$ex2 = explode('=', $ex[$i]);
|
||||||
@@ -680,25 +680,25 @@ class Quests
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Функция отвечает за ПРОВЕРКУ на ЗАВЕРШЕНИЕ квестов для ПОДЗЕМОК
|
# Функция отвечает за ПРОВЕРКУ на ЗАВЕРШЕНИЕ квестов для ПОДЗЕМОК
|
||||||
public function questCheckEnd($pl)
|
public function questCheckEnd($pl)
|
||||||
{
|
{
|
||||||
global $u;
|
global $u;
|
||||||
$quest = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" ORDER BY `time` DESC LIMIT 1'));
|
$quest = mysql_fetch_array(mysql_query('SELECT * FROM `actions` WHERE `uid` = "' . $u->info['id'] . '" AND `vars` = "start_quest' . $pl['id'] . '" ORDER BY `time` DESC LIMIT 1'));
|
||||||
#Проверяем квест, завершен = 0 нет, 1 да.
|
#Проверяем квест, завершен = 0 нет, 1 да.
|
||||||
$r = 0;
|
$r = 0;
|
||||||
if ($u->info['battle'] == 0 && $u->room['name'] != 'Башня Смерти') {
|
if ($u->info['battle'] == 0 && $u->room['name'] != 'Башня Смерти') {
|
||||||
$g = 1;
|
$g = 1;
|
||||||
# Действия квеста
|
# Действия квеста
|
||||||
$d = $this->expl($pl['act_date']);
|
$d = $this->expl($pl['act_date']);
|
||||||
|
|
||||||
# Поговорить с NPS
|
# Поговорить с NPS
|
||||||
if (isset($d['dlg_nps'])) {
|
if (isset($d['dlg_nps'])) {
|
||||||
$g = 0;
|
$g = 0;
|
||||||
unset($x);
|
unset($x);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Убить игроков
|
# Убить игроков
|
||||||
if (isset($d['kill_user'])) {
|
if (isset($d['kill_user'])) {
|
||||||
$x = 0;
|
$x = 0;
|
||||||
if ($x < $d['kill_user']) {
|
if ($x < $d['kill_user']) {
|
||||||
@@ -707,10 +707,10 @@ class Quests
|
|||||||
unset($x);
|
unset($x);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Убить ботов
|
# Убить ботов
|
||||||
if (isset($d['kill_bot'])) {
|
if (isset($d['kill_bot'])) {
|
||||||
$ex = explode(',', $d['kill_bot']);
|
$ex = explode(',', $d['kill_bot']);
|
||||||
$i = 0; # Количество циклов для каждого типа бота.
|
$i = 0; # Количество циклов для каждого типа бота.
|
||||||
$q = '';
|
$q = '';
|
||||||
while ($i < count($ex)) {
|
while ($i < count($ex)) {
|
||||||
$ex2 = explode('=', $ex[$i]);
|
$ex2 = explode('=', $ex[$i]);
|
||||||
@@ -740,11 +740,11 @@ class Quests
|
|||||||
unset($x, $ex, $x2, $x3, $bot2, $ex2);
|
unset($x, $ex, $x2, $x3, $bot2, $ex2);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Собрать ресурсы
|
# Собрать ресурсы
|
||||||
if (isset($d['tk_itm'])) {
|
if (isset($d['tk_itm'])) {
|
||||||
$g = $this->collect_02(explode(',', $d['tk_itm']), $u, $pl);
|
$g = $this->collect_02(explode(',', $d['tk_itm']), $u, $pl);
|
||||||
}
|
}
|
||||||
# Собирание трофеев
|
# Собирание трофеев
|
||||||
if (isset($d['tkill_itm'])) {
|
if (isset($d['tkill_itm'])) {
|
||||||
$g = $this->collect_02(explode(',', $d['tkill_itm']), $u, $pl);
|
$g = $this->collect_02(explode(',', $d['tkill_itm']), $u, $pl);
|
||||||
}
|
}
|
||||||
@@ -753,7 +753,7 @@ class Quests
|
|||||||
return $r;
|
return $r;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Выдача наград за пещеры */
|
/** Выдача наград за пещеры */
|
||||||
public function questSuccesEnd($quest, $action)
|
public function questSuccesEnd($quest, $action)
|
||||||
{
|
{
|
||||||
global $u, $c, $magic;
|
global $u, $c, $magic;
|
||||||
@@ -765,7 +765,7 @@ class Quests
|
|||||||
$d = $this->expl($quest['act_date']);
|
$d = $this->expl($quest['act_date']);
|
||||||
$d = array_merge($d, $this->expl($quest['win_date']));
|
$d = array_merge($d, $this->expl($quest['win_date']));
|
||||||
|
|
||||||
// Забираем ресурсы или трофеи
|
// Забираем ресурсы или трофеи
|
||||||
if (isset($d['tk_itm']) || isset($d['tkill_itm'])) {
|
if (isset($d['tk_itm']) || isset($d['tkill_itm'])) {
|
||||||
$ex = [];
|
$ex = [];
|
||||||
if (isset($d['tk_itm'])) {
|
if (isset($d['tk_itm'])) {
|
||||||
@@ -793,9 +793,9 @@ class Quests
|
|||||||
}
|
}
|
||||||
$t = '';
|
$t = '';
|
||||||
|
|
||||||
# Получаем репутацию за квест,
|
# Получаем репутацию за квест,
|
||||||
if (isset($d['add_rep'])) {
|
if (isset($d['add_rep'])) {
|
||||||
# если это убийства ботов.
|
# если это убийства ботов.
|
||||||
if (isset($d['kill_bot']) && isset($d['all_kill']) && $d['add_rep'] > 0) {
|
if (isset($d['kill_bot']) && isset($d['all_kill']) && $d['add_rep'] > 0) {
|
||||||
$ex = explode(',', $d['kill_bot']);
|
$ex = explode(',', $d['kill_bot']);
|
||||||
$ii = 0;
|
$ii = 0;
|
||||||
@@ -825,7 +825,7 @@ class Quests
|
|||||||
if ($this->stats['more_awards'] >= 0) {
|
if ($this->stats['more_awards'] >= 0) {
|
||||||
$d['add_rep'] += $d['add_rep'] / 100 * 50;
|
$d['add_rep'] += $d['add_rep'] / 100 * 50;
|
||||||
}
|
}
|
||||||
$t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$quest['city']] . ', ';
|
$t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$quest['city']] . ', ';
|
||||||
if (
|
if (
|
||||||
$rep['rep' . $quest['city']] < 24999 &&
|
$rep['rep' . $quest['city']] < 24999 &&
|
||||||
$rep['rep' . $quest['city']] + $d['add_rep'] >= 24999 &&
|
$rep['rep' . $quest['city']] + $d['add_rep'] >= 24999 &&
|
||||||
@@ -840,7 +840,7 @@ class Quests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isset($d['add_repizlom'])) {
|
if (isset($d['add_repizlom'])) {
|
||||||
$t .= '' . $d['add_repizlom'] . ' ед. репутации Излома Хаоса, ';
|
$t .= '' . $d['add_repizlom'] . ' ед. репутации Излома Хаоса, ';
|
||||||
$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'));
|
$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'));
|
||||||
$rep['repizlom'] += $d['add_repizlom'];
|
$rep['repizlom'] += $d['add_repizlom'];
|
||||||
if ($rep['repizlom'] > 24999) {
|
if ($rep['repizlom'] > 24999) {
|
||||||
@@ -859,18 +859,18 @@ class Quests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isset($d['add_cr'])) {
|
if (isset($d['add_cr'])) {
|
||||||
$t .= '' . $d['add_cr'] . ' кр., ';
|
$t .= '' . $d['add_cr'] . ' кр., ';
|
||||||
mysql_query('UPDATE `users` SET `money` = `money`+' . $d['add_cr'] . ' WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `money` = `money`+' . $d['add_cr'] . ' WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
if ($t != '') {
|
if ($t != '') {
|
||||||
$t = rtrim($t, ', ');
|
$t = rtrim($t, ', ');
|
||||||
$r = 'Задание <b>' . $quest['name'] . '</b> было успешно выполнено! Вы получили награду: ' . $t . '.';
|
$r = 'Задание <b>' . $quest['name'] . '</b> было успешно выполнено! Вы получили награду: ' . $t . '.';
|
||||||
unset($t);
|
unset($t);
|
||||||
} else {
|
} else {
|
||||||
$r = 'Задание <b>' . $quest['name'] . '</b> было успешно выполнено!';
|
$r = 'Задание <b>' . $quest['name'] . '</b> было успешно выполнено!';
|
||||||
}
|
}
|
||||||
$r = '<small>' . $r . '</small>';
|
$r = '<small>' . $r . '</small>';
|
||||||
//Отправляем сообщение в чат
|
//Отправляем сообщение в чат
|
||||||
mysql_query('UPDATE `actions` SET `vals` = "win" , `time` = "' . time() . '" WHERE `id` = "' . $action['id'] . '" AND `vals` = "go" LIMIT 1');
|
mysql_query('UPDATE `actions` SET `vals` = "win" , `time` = "' . time() . '" WHERE `id` = "' . $action['id'] . '" AND `vals` = "go" LIMIT 1');
|
||||||
|
|
||||||
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','-1','5','0')");
|
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','-1','5','0')");
|
||||||
@@ -894,7 +894,7 @@ class Quests
|
|||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Забираем ресурсы
|
// Забираем ресурсы
|
||||||
if (isset($d['tk_itm'])) {
|
if (isset($d['tk_itm'])) {
|
||||||
$ex = explode(',', $d['tk_itm']);
|
$ex = explode(',', $d['tk_itm']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@@ -906,7 +906,7 @@ class Quests
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Забираем трофеи
|
// Забираем трофеи
|
||||||
if (isset($d['tkill_itm'])) {
|
if (isset($d['tkill_itm'])) {
|
||||||
$ex = explode(',', $d['tkill_itm']);
|
$ex = explode(',', $d['tkill_itm']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@@ -920,7 +920,7 @@ class Quests
|
|||||||
}
|
}
|
||||||
|
|
||||||
$t = '';
|
$t = '';
|
||||||
if (isset($d['add_rep'])) { // Получаем репутацию за квест, если это убийства ботов.
|
if (isset($d['add_rep'])) { // Получаем репутацию за квест, если это убийства ботов.
|
||||||
if (isset($d['kill_bot']) && isset($d['all_kill']) && $d['add_rep'] > 0) {
|
if (isset($d['kill_bot']) && isset($d['all_kill']) && $d['add_rep'] > 0) {
|
||||||
$ex = explode(',', $d['kill_bot']);
|
$ex = explode(',', $d['kill_bot']);
|
||||||
$ii = 0;
|
$ii = 0;
|
||||||
@@ -939,9 +939,9 @@ class Quests
|
|||||||
}
|
}
|
||||||
unset($x, $i, $ii, $ex, $x2, $bot2, $ex2);
|
unset($x, $i, $ii, $ex, $x2, $bot2, $ex2);
|
||||||
if ($pl['city'] != '') {
|
if ($pl['city'] != '') {
|
||||||
$t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$pl['city']] . ', ';
|
$t .= '' . $d['add_rep'] . ' ед. репутации ' . $u->city_name[$pl['city']] . ', ';
|
||||||
$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'));
|
$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'));
|
||||||
// Рыцарки
|
// Рыцарки
|
||||||
/*if($rep['rep'.$pl['city']] < 10000 && $rep['rep'.$pl['city']] + $d['add_rep'] >= 10000 && $pl['kin'] != 1) {
|
/*if($rep['rep'.$pl['city']] < 10000 && $rep['rep'.$pl['city']] + $d['add_rep'] >= 10000 && $pl['kin'] != 1) {
|
||||||
$rep['rep'.$pl['city']] = 9999;
|
$rep['rep'.$pl['city']] = 9999;
|
||||||
} else*/
|
} else*/
|
||||||
@@ -955,7 +955,7 @@ class Quests
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isset($d['add_repizlom'])) {
|
if (isset($d['add_repizlom'])) {
|
||||||
$t .= '' . $d['add_repizlom'] . ' ед. репутации Излома Хаоса, ';
|
$t .= '' . $d['add_repizlom'] . ' ед. репутации Излома Хаоса, ';
|
||||||
$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'));
|
$rep = mysql_fetch_array(mysql_query('SELECT * FROM `rep` WHERE `id` = "' . $u->info['id'] . '" LIMIT 1'));
|
||||||
$rep['repizlom'] += $d['add_repizlom'];
|
$rep['repizlom'] += $d['add_repizlom'];
|
||||||
if ($rep['repizlom'] > 24999) {
|
if ($rep['repizlom'] > 24999) {
|
||||||
@@ -976,19 +976,19 @@ class Quests
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isset($d['add_cr'])) {
|
if (isset($d['add_cr'])) {
|
||||||
$t .= '' . $d['add_cr'] . ' кр., ';
|
$t .= '' . $d['add_cr'] . ' кр., ';
|
||||||
mysql_query('UPDATE `users` SET `money` = `money`+' . $d['add_cr'] . ' WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `money` = `money`+' . $d['add_cr'] . ' WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($t != '') {
|
if ($t != '') {
|
||||||
$t = rtrim($t, ', ');
|
$t = rtrim($t, ', ');
|
||||||
$r = 'Задание <b>' . $pl['name'] . '</b> было успешно выполнено! Вы получили награду: ' . $t . '.';
|
$r = 'Задание <b>' . $pl['name'] . '</b> было успешно выполнено! Вы получили награду: ' . $t . '.';
|
||||||
unset($t);
|
unset($t);
|
||||||
} else {
|
} else {
|
||||||
$r = 'Задание <b>' . $pl['name'] . '</b> было успешно выполнено!';
|
$r = 'Задание <b>' . $pl['name'] . '</b> было успешно выполнено!';
|
||||||
}
|
}
|
||||||
$r = '<small>' . $r . '</small>';
|
$r = '<small>' . $r . '</small>';
|
||||||
//Отправляем сообщение в чат
|
//Отправляем сообщение в чат
|
||||||
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','-1','5','0')");
|
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','" . $u->info['city'] . "','" . $u->info['room'] . "','','" . $u->info['login'] . "','" . $r . "','-1','5','0')");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-13
@@ -1,22 +1,22 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Insallah\Db;
|
use Core\Db;
|
||||||
|
|
||||||
class Season
|
class Season
|
||||||
{
|
{
|
||||||
public static $yy = [
|
public static $yy = [
|
||||||
1 => [1, '01', 'ίνβΰπό', 'ίνβΰπόρκθι'],
|
1 => [1, '01', 'Январь', 'Январьский'],
|
||||||
2 => [2, '02', 'Τεβπΰλό', 'Τεβπΰλόρκθι'],
|
2 => [2, '02', 'Февраль', 'Февральский'],
|
||||||
3 => [3, '03', 'Μΰπς', 'Μΰπςξβρκθι'],
|
3 => [3, '03', 'Март', 'Мартовский'],
|
||||||
4 => [4, '04', 'ΐοπελό', 'ΐοπελόρκθι'],
|
4 => [4, '04', 'Апрель', 'Апрельский'],
|
||||||
5 => [5, '05', 'Μΰι', 'Μΰιρκθι'],
|
5 => [5, '05', 'Май', 'Майский'],
|
||||||
6 => [6, '06', 'Θώνό', 'Θώνόρκθι'],
|
6 => [6, '06', 'Июнь', 'Июньский'],
|
||||||
7 => [7, '07', 'Θώλό', 'Θώλόρκθι'],
|
7 => [7, '07', 'Июль', 'Июльский'],
|
||||||
8 => [8, '08', 'ΐβγσρς', 'ΐβγσρςξβρκθι'],
|
8 => [8, '08', 'Август', 'Августовский'],
|
||||||
9 => [9, '09', 'Ρενς�από', 'Ρενς�απόρκθι'],
|
9 => [9, '09', 'Сентябрь', 'Сентябрьский'],
|
||||||
10 => [10, '10', 'Ξκς�από', 'Ξκς�απόρκθι'],
|
10 => [10, '10', 'Октябрь', 'Октябрьский'],
|
||||||
11 => [11, '11', 'Νξ�από', 'Νξ�απόρκθι'],
|
11 => [11, '11', 'Ноябрь', 'Ноябрьский'],
|
||||||
12 => [12, '12', 'Δεκΰαπό', 'Δεκΰαπόρκθι'],
|
12 => [12, '12', 'Декабрь', 'Декабрьский'],
|
||||||
];
|
];
|
||||||
public static $date = [];
|
public static $date = [];
|
||||||
public static $m = [];
|
public static $m = [];
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class Telegram
|
|||||||
private function send($to, $from, $text, $fromType)
|
private function send($to, $from, $text, $fromType)
|
||||||
{
|
{
|
||||||
mysql_query('START TRANSACTION');
|
mysql_query('START TRANSACTION');
|
||||||
$ins = mysql_query("INSERT INTO `telegram` (`uid`,`from`,`fromType`,`text`,`time`) VALUES ('" . $to . "','" . $from . "','" . $fromType . "','" . mysql_real_escape_string(AddSlashes(HtmlSpecialChars($text, null, 'cp1251'))) . "','" . time() . "')");
|
$ins = mysql_query("INSERT INTO `telegram` (`uid`,`from`,`fromType`,`text`,`time`) VALUES ('" . $to . "','" . $from . "','" . $fromType . "','" . mysql_real_escape_string(AddSlashes(HtmlSpecialChars($text, null))) . "','" . time() . "')");
|
||||||
mysql_query('COMMIT');
|
mysql_query('COMMIT');
|
||||||
if ($ins) {
|
if ($ins) {
|
||||||
return mysql_insert_id();
|
return mysql_insert_id();
|
||||||
@@ -89,7 +89,7 @@ class Telegram
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($fromType == 1) {
|
if ($fromType == 1) {
|
||||||
$from = '<a href="info/login=' . $from . '" target="_blank" title="Èíô. î ' . $from . '">' . $from . '</a>';
|
$from = '<a href="info/login=' . $from . '" target="_blank" title="Инф. о ' . $from . '">' . $from . '</a>';
|
||||||
} elseif ($read == 0) {
|
} elseif ($read == 0) {
|
||||||
$from = '<b id="tablePostTxtB' . $id . '">' . $from . '</b>';
|
$from = '<b id="tablePostTxtB' . $id . '">' . $from . '</b>';
|
||||||
}
|
}
|
||||||
@@ -98,10 +98,10 @@ class Telegram
|
|||||||
<tr>
|
<tr>
|
||||||
<td width="30" class="underLine2"><div align="center">' . $i1 . '</div></td>
|
<td width="30" class="underLine2"><div align="center">' . $i1 . '</div></td>
|
||||||
<td width="200" id="tablePostTxt' . $id . '" class="underLine2">' . $from . '</td>
|
<td width="200" id="tablePostTxt' . $id . '" class="underLine2">' . $from . '</td>
|
||||||
<td width="290" class="underLine2"><a onClick="openPost(' . $id . '); return false;" href="#read' . $id . '" title="Ïðî÷èòàòü ñîîáùåíèå">' . substr($ttl, 0, 30) . '...</a></td>
|
<td width="290" class="underLine2"><a onClick="openPost(' . $id . '); return false;" href="#read' . $id . '" title="Прочитать сообщение">' . substr($ttl, 0, 30) . '...</a></td>
|
||||||
<td width="120" class="underLine2">' . date('d.m.y H:i', $time) . '</td>
|
<td width="120" class="underLine2">' . date('d.m.y H:i', $time) . '</td>
|
||||||
<td width="30" class="underLine2"><div align="center"><IMG style="cursor:pointer;" onClick="lockPost(' . $id . ');" title="Áëîêèðîâêà ñîîáùåíèÿ" src="https://img.new-combats.com/i/locked.gif"></div></td>
|
<td width="30" class="underLine2"><div align="center"><IMG style="cursor:pointer;" onClick="lockPost(' . $id . ');" title="Блокировка сообщения" src="https://img.new-combats.com/i/locked.gif"></div></td>
|
||||||
<td width="30" class="underLine2"><div align="center"><IMG style="cursor:pointer;" onClick="deletePost(' . $id . ',' . $pg . ');" title="Óäàëèòü ñîîáùåíèå" src="https://img.new-combats.com/i/clear.gif" width="11" height="11"></div></td>
|
<td width="30" class="underLine2"><div align="center"><IMG style="cursor:pointer;" onClick="deletePost(' . $id . ',' . $pg . ');" title="Удалить сообщение" src="https://img.new-combats.com/i/clear.gif" width="11" height="11"></div></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<div id="readMSG' . $id . '" style="display:none;" class="unreadMSG">' . $ttl . '</div>';
|
<div id="readMSG' . $id . '" style="display:none;" class="unreadMSG">' . $ttl . '</div>';
|
||||||
@@ -114,11 +114,11 @@ class Telegram
|
|||||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="30" class="underLine"><div align="center"></div></td>
|
<td width="30" class="underLine"><div align="center"></div></td>
|
||||||
<td width="200" class="underLine"><b>Îò êîãî</b></td>
|
<td width="200" class="underLine"><b>От кого</b></td>
|
||||||
<td width="290" class="underLine"><b>Çàãîëîâîê ñîîáùåíèÿ</b></td>
|
<td width="290" class="underLine"><b>Заголовок сообщения</b></td>
|
||||||
<td width="120" class="underLine"><b>Êîãäà</b></td>
|
<td width="120" class="underLine"><b>Когда</b></td>
|
||||||
<td width="30" class="underLine"><div align="center"><IMG alt="Áëîêèðîâêà ñîîáùåíèé" src="https://img.new-combats.com/i/lock_message.gif"></div></td>
|
<td width="30" class="underLine"><div align="center"><IMG alt="Блокировка сообщений" src="https://img.new-combats.com/i/lock_message.gif"></div></td>
|
||||||
<td width="30" class="underLine"><div align="center"><IMG style="cursor:pointer;" onClick="deletePostAll(' . $page . ');" alt="Óäàëèòü âñå ïðî÷èòàííûå ñîîáùåíèÿ" src="https://img.new-combats.com/i/clear.gif" width="11" height="11"></div></td>
|
<td width="30" class="underLine"><div align="center"><IMG style="cursor:pointer;" onClick="deletePostAll(' . $page . ');" alt="Удалить все прочитанные сообщения" src="https://img.new-combats.com/i/clear.gif" width="11" height="11"></div></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>';
|
</table>';
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@ class Telegram
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($i[0] == 0) {
|
if ($i[0] == 0) {
|
||||||
echo '<div class="noMsg" align="center">Ñîîáùåíèé íåò</div>';
|
echo '<div class="noMsg" align="center">Сообщений нет</div>';
|
||||||
} elseif ($i[0] > $maxPages) {
|
} elseif ($i[0] > $maxPages) {
|
||||||
$pages = '';
|
$pages = '';
|
||||||
$i = 1;
|
$i = 1;
|
||||||
@@ -153,7 +153,7 @@ class Telegram
|
|||||||
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="30"><div align="center"></div></td>
|
<td width="30"><div align="center"></div></td>
|
||||||
<td width="200">Ñòðàíèöû: ' . $pages . '</td>
|
<td width="200">Страницы: ' . $pages . '</td>
|
||||||
<td width="240"></td>
|
<td width="240"></td>
|
||||||
<td width="170"></td>
|
<td width="170"></td>
|
||||||
<td width="30"></td>
|
<td width="30"></td>
|
||||||
@@ -165,6 +165,6 @@ class Telegram
|
|||||||
|
|
||||||
public function __clone()
|
public function __clone()
|
||||||
{
|
{
|
||||||
trigger_error('Äóáëèðîâàíèå íå äîïóñêàåòñÿ.', E_USER_ERROR);
|
trigger_error('Дублирование не допускается.', E_USER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
if (!defined('GAME')) {
|
|
||||||
die();
|
use Core\Db;
|
||||||
}
|
|
||||||
|
|
||||||
class Tournir
|
class Tournir
|
||||||
{
|
{
|
||||||
private $u;
|
private User $u;
|
||||||
private $info;
|
private array $info;
|
||||||
private $user;
|
private array $user;
|
||||||
private $name = [0 => 'Âûæèòü ëþáîé öåíîé', 1 => 'Êàæäûé ñàì çà ñåáÿ', 2 => 'Çàõâàò êëþ÷à',];
|
private array $name = [0 => 'Выжить любой ценой', 1 => 'Каждый сам за себя', 2 => 'Захват ключа',];
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@@ -19,26 +18,26 @@ class Tournir
|
|||||||
|
|
||||||
private function start()
|
private function start()
|
||||||
{
|
{
|
||||||
$this->info = mysql_fetch_array(mysql_query('SELECT * FROM `turnirs` WHERE `id` = "' . $this->u->info['inTurnirnew'] . '" LIMIT 1'));
|
$this->info = Db::getRow('select * from turnirs where id = ?', [$this->u->info['inTurnirnew']]);
|
||||||
$this->user = mysql_fetch_array(mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "' . $this->u->info['inTurnirnew'] . '" AND `bot` = "' . $this->u->info['id'] . '" LIMIT 1'));
|
$this->user = Db::getRow('select * from users_turnirs where turnir = ? and bot = ?', [$this->u->info['inTurnirnew'], $this->u->info['id']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function startTurnir()
|
private function startTurnir()
|
||||||
{
|
{
|
||||||
$row = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users` WHERE `win` = "0" AND `lose` = "0" AND `nich` = "0"'));
|
$row = Db::getValue('select count(*) from users where win = 0 and lose = 0 and nich = 0');
|
||||||
if ($row[0] <= 0 || $this->info['status'] == 3) {
|
if (!$row || $this->info['status'] == 3) {
|
||||||
if ($this->info['status'] == 3) {
|
if ($this->info['status'] == 3) {
|
||||||
$this->finishTurnir();
|
$this->finishTurnir();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mysql_query('UPDATE `turnirs` SET `status` = "3" WHERE `id` = "' . $this->info['id'] . '" LIMIT 1');
|
Db::sql('update turnirs set status = 3 where id = ?', [$this->info['id']]);
|
||||||
//Ñîçäàíèå ïîåäèíêà
|
//Создание поединка
|
||||||
mysql_query('INSERT INTO `battle` (`city`,`time_start`,`timeout`,`type`,`turnir`) VALUES ("' . $this->u->info['city'] . '","' . time() . '","60","1","' . $this->info['id'] . '")');
|
Db::sql('insert into battle (city, time_start, timeout, type, turnir) values (?,unix_timestamp(),60,1,?)', [$this->u->info['city'], $this->info['id']]);
|
||||||
$uri = mysql_insert_id();
|
$uri = Db::lastInsertId();
|
||||||
//Çàêèäûâàåì ïåðñîíàæåé â ïîåäèíîê
|
//Закидываем персонажей в поединок
|
||||||
mysql_query('UPDATE `users` SET `battle` = "' . $uri . '" WHERE `inUser` = "0" AND `inTurnirnew` = "' . $this->info['id'] . '"');
|
Db::sql('update users set battle = ? where inUser = 0 and inTurnirnew = ?', [$uri, $this->info['id']]);
|
||||||
//Îáîçíà÷àåì çàâåðøåíèå òóðíèðà ïðè âûõîäå
|
//Обозначаем завершение турнира при выходе
|
||||||
die('Ïåðåéòèäå â ðàçäåë "ïîåäèíêè"...');
|
die('Перейтиде в раздел "поединки"...');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +53,7 @@ class Tournir
|
|||||||
$inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['uid'] . '" LIMIT 1'));
|
$inf = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['uid'] . '" LIMIT 1'));
|
||||||
$bot = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['bot'] . '" LIMIT 1'));
|
$bot = mysql_fetch_array(mysql_query('SELECT * FROM `users` WHERE `id` = "' . $pl['bot'] . '" LIMIT 1'));
|
||||||
if (isset($inf['id'], $bot['id'])) {
|
if (isset($inf['id'], $bot['id'])) {
|
||||||
//âûäàåì ïðèçû è ò.ä
|
//выдаем призы и т.д
|
||||||
mysql_query('DELETE FROM `users` WHERE `id` = "' . $bot['id'] . '" LIMIT 1');
|
mysql_query('DELETE FROM `users` WHERE `id` = "' . $bot['id'] . '" LIMIT 1');
|
||||||
mysql_query('DELETE FROM `stats` WHERE `id` = "' . $bot['id'] . '" LIMIT 1');
|
mysql_query('DELETE FROM `stats` WHERE `id` = "' . $bot['id'] . '" LIMIT 1');
|
||||||
mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $bot['id'] . '" LIMIT 1000');
|
mysql_query('DELETE FROM `items_users` WHERE `uid` = "' . $bot['id'] . '" LIMIT 1000');
|
||||||
@@ -62,12 +61,9 @@ class Tournir
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($pl['team'] == $this->info['winner'] && $this->info['winner'] != 0) {
|
if ($pl['team'] == $this->info['winner'] && $this->info['winner'] != 0) {
|
||||||
|
|
||||||
$inf['add_expn'] = 3000;
|
|
||||||
|
|
||||||
$inf['add_expp'] = [0, 1, 5, 10, 15, 25, 35, 70, 100, 150, 200, 300, 500, 700, 1000];
|
$inf['add_expp'] = [0, 1, 5, 10, 15, 25, 35, 70, 100, 150, 200, 300, 500, 700, 1000];
|
||||||
|
|
||||||
//ïîëó÷àåì îïûò (ñ 0 ïî 12 ëâë)
|
//получаем опыт (с 0 по 12 лвл)
|
||||||
$inf['add_expn'] = [10, 30, 55, 62, 92, 180, 350, 1350, 4500, 7000, 21000, 30000, 35000];
|
$inf['add_expn'] = [10, 30, 55, 62, 92, 180, 350, 1350, 4500, 7000, 21000, 30000, 35000];
|
||||||
$inf['add_expn'] = $inf['add_expn'][$inf['level']];
|
$inf['add_expn'] = $inf['add_expn'][$inf['level']];
|
||||||
|
|
||||||
@@ -75,14 +71,13 @@ class Tournir
|
|||||||
mysql_query('UPDATE `stats` SET `exp` = `exp` + ' . $inf['add_expn'] . ' WHERE `id` = "' . $inf['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `exp` = `exp` + ' . $inf['add_expn'] . ' WHERE `id` = "' . $inf['id'] . '" LIMIT 1');
|
||||||
$win .= '<b>' . $inf['login'] . '</b>, ';
|
$win .= '<b>' . $inf['login'] . '</b>, ';
|
||||||
|
|
||||||
$r = 'Òóðíèð çàâåðøåí. Âû ÿâëÿåòåñü ïîáåäèòåëåì òóðíèðà, ïîëó÷åíî îïûòà: <b>' . $inf['add_expn'] . '</b>.';
|
$r = 'Турнир завершен. Вы являетесь победителем турнира, получено опыта: <b>' . $inf['add_expn'] . '</b>.';
|
||||||
|
|
||||||
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','" . $inf['room'] . "','','" . $inf['login'] . "','" . $r . "','" . time() . "','6','0')");
|
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','" . $inf['room'] . "','','" . $inf['login'] . "','" . $r . "','" . time() . "','6','0')");
|
||||||
} elseif ($pl['team'] != $this->info['winner'] && $this->info['winner'] != 0) {
|
} elseif ($pl['team'] != $this->info['winner'] && $this->info['winner'] != 0) {
|
||||||
mysql_query('UPDATE `users` SET `lose` = `lose` + 1,`lose_t` = `lose_t` + 1 WHERE `id` = "' . $inf['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `lose` = `lose` + 1,`lose_t` = `lose_t` + 1 WHERE `id` = "' . $inf['id'] . '" LIMIT 1');
|
||||||
|
|
||||||
$lose .= '<b>' . $inf['login'] . '</b>, ';
|
$lose .= '<b>' . $inf['login'] . '</b>, ';
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
mysql_query('UPDATE `users` SET `nich` = `nich` + 1 WHERE `id` = "' . $inf['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users` SET `nich` = `nich` + 1 WHERE `id` = "' . $inf['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
@@ -94,11 +89,11 @@ class Tournir
|
|||||||
if ($win != '') {
|
if ($win != '') {
|
||||||
$win = rtrim($win, ', ');
|
$win = rtrim($win, ', ');
|
||||||
$lose = rtrim($lose, ', ');
|
$lose = rtrim($lose, ', ');
|
||||||
$win = 'Ïîáåäèòåëè òóðíèðà: ' . $win . '. Ïðîèãðàâøàÿ ñòîðîíà: ' . $lose . '. Ñëåäóþùèé òóðíèð íà÷íåòñÿ ÷åðåç ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').';
|
$win = 'Победители турнира: ' . $win . '. Проигравшая сторона: ' . $lose . '. Следующий турнир начнется через ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').';
|
||||||
} else {
|
} else {
|
||||||
$win = 'Ïîáåäèòåëè òóðíèðà îòñóòñòâóåò. Ñëåäóþùèé òóðíèð íà÷íåòñÿ ÷åðåç ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').';
|
$win = 'Победители турнира отсутствует. Следующий турнир начнется через ' . $this->u->timeOut($this->info['time2']) . ' (' . date('d.m.Y H:i', (time() + $this->info['time2'])) . ').';
|
||||||
}
|
}
|
||||||
$r = '<font color=black><b>Òóðíèð çàâåðøåí.</b></font> ' . $win;
|
$r = '<font color=black><b>Турнир завершен.</b></font> ' . $win;
|
||||||
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','','','','" . $r . "','" . time() . "','6','0')");
|
mysql_query("INSERT INTO `chat` (`new`,`city`,`room`,`login`,`to`,`text`,`time`,`type`,`toChat`) VALUES ('1','capitalcity','','','','" . $r . "','" . time() . "','6','0')");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,7 +105,7 @@ class Tournir
|
|||||||
$tm2 = '';
|
$tm2 = '';
|
||||||
$noitm = [869 => 1, 1246 => 1, 155 => 1, 1245 => 1, 678 => 1];
|
$noitm = [869 => 1, 1246 => 1, 155 => 1, 1245 => 1, 678 => 1];
|
||||||
|
|
||||||
//ïîëó÷åíèå êîìïëåêòà
|
//получение комплекта
|
||||||
if ($this->info['step'] != 3 && $this->info['step'] != 0 && isset($_GET['gocomplect']) && $this->user['points'] < 2) {
|
if ($this->info['step'] != 3 && $this->info['step'] != 0 && isset($_GET['gocomplect']) && $this->user['points'] < 2) {
|
||||||
$aso = explode(',', $this->user['items']);
|
$aso = explode(',', $this->user['items']);
|
||||||
$ast = explode('-', $_GET['gocomplect']);
|
$ast = explode('-', $_GET['gocomplect']);
|
||||||
@@ -155,24 +150,23 @@ class Tournir
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($noitm > 0) {
|
if ($noitm > 0) {
|
||||||
echo 'Èñïîëüçîâàíèå áàãîâ êàðàåòñÿ çàêîíîì!';
|
echo 'Использование багов карается законом!';
|
||||||
$addi = 0;
|
$addi = 0;
|
||||||
} elseif (count($asg[3]) > 2) {
|
} elseif (count($asg[3]) > 2) {
|
||||||
echo 'Âû âûáðàëè ñëèøêîì ìíîãî ïðåäìåòîâ, âûáåðèòå òîëüêî äâà îðóæèÿ è îäèí ùèò';
|
echo 'Вы выбрали слишком много предметов, выберите только два оружия и один щит';
|
||||||
$addi = 0;
|
$addi = 0;
|
||||||
} elseif (count($asg[10]) > 3) {
|
} elseif (count($asg[10]) > 3) {
|
||||||
echo 'Âû âûáðàëè ñëèøêîì ìíîãî ïðåäìåòîâ, âûáåðèòå òîëüêî òðè êîëüöà';
|
echo 'Вы выбрали слишком много предметов, выберите только три кольца';
|
||||||
$addi = 0;
|
$addi = 0;
|
||||||
} elseif ($j > 16) {
|
} elseif ($j > 16) {
|
||||||
echo 'Âû âûáðàëè ñëèøêîì ìíîãî ïðåäìåòîâ';
|
echo 'Вы выбрали слишком много предметов';
|
||||||
$addi = 0;
|
$addi = 0;
|
||||||
} elseif ($j < 1) {
|
} elseif ($j < 1) {
|
||||||
echo 'Âûáåðèòå õîòÿ áû îäèí ïðåäìåò';
|
echo 'Выберите хотя бы один предмет';
|
||||||
$addi = 0;
|
$addi = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($addi == 1) {
|
if ($addi == 1) {
|
||||||
|
|
||||||
$i = 0;
|
$i = 0;
|
||||||
while ($i <= 17) {
|
while ($i <= 17) {
|
||||||
if ($i == 10) {
|
if ($i == 10) {
|
||||||
@@ -217,7 +211,7 @@ class Tournir
|
|||||||
if ($this->info['step'] == 3) {
|
if ($this->info['step'] == 3) {
|
||||||
$this->finishTurnir();
|
$this->finishTurnir();
|
||||||
} elseif ($this->info['step'] == 0) {
|
} elseif ($this->info['step'] == 0) {
|
||||||
//ðàñïðåäåëÿåì êîìàíäû
|
//распределяем команды
|
||||||
$po = [0, 0];
|
$po = [0, 0];
|
||||||
$sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "' . $this->info['id'] . '" AND `points` > 3 ORDER BY `points` DESC LIMIT ' . $this->info['users_in']);
|
$sp = mysql_query('SELECT * FROM `users_turnirs` WHERE `turnir` = "' . $this->info['id'] . '" AND `points` > 3 ORDER BY `points` DESC LIMIT ' . $this->info['users_in']);
|
||||||
$tmr = rand(1, 2);
|
$tmr = rand(1, 2);
|
||||||
@@ -258,7 +252,7 @@ class Tournir
|
|||||||
${'tm' . $bot['team']} .= $this->u->microLogin($bot, 2) . '<br>';
|
${'tm' . $bot['team']} .= $this->u->microLogin($bot, 2) . '<br>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$r .= '<style>/* öâåòà êîìàíä */
|
$r .= '<style>/* цвета команд */
|
||||||
.CSSteam0 { font-weight: bold; cursor:pointer; }
|
.CSSteam0 { font-weight: bold; cursor:pointer; }
|
||||||
.CSSteam1 { font-weight: bold; color: #6666CC; cursor:pointer; }
|
.CSSteam1 { font-weight: bold; color: #6666CC; cursor:pointer; }
|
||||||
.CSSteam2 { font-weight: bold; color: #B06A00; cursor:pointer; }
|
.CSSteam2 { font-weight: bold; color: #B06A00; cursor:pointer; }
|
||||||
@@ -270,33 +264,33 @@ class Tournir
|
|||||||
.CSSteam8 { font-weight: bold; color: #842B61; cursor:pointer; }
|
.CSSteam8 { font-weight: bold; color: #842B61; cursor:pointer; }
|
||||||
.CSSteam9 { font-weight: bold; color: navy; cursor:pointer; }
|
.CSSteam9 { font-weight: bold; color: navy; cursor:pointer; }
|
||||||
.CSSvs { font-weight: bold; }</style>';
|
.CSSvs { font-weight: bold; }</style>';
|
||||||
$r .= '<h3>«' . $this->name[$this->info['type']] . '»</h3><br>Íà÷àëî òóðíèðà ÷åðåç ' . $this->u->timeOut($this->info['time'] - time()) . '! ';
|
$r .= '<h3>«' . $this->name[$this->info['type']] . '»</h3><br>Начало турнира через ' . $this->u->timeOut($this->info['time'] - time()) . '! ';
|
||||||
|
|
||||||
if (isset($_GET['hpregenNowTurnir']) && ($this->u->stats['hpNow'] < $this->u->stats['hpAll'] || $this->u->stats['mpNow'] < $this->u->stats['mpAll'])) {
|
if (isset($_GET['hpregenNowTurnir']) && ($this->u->stats['hpNow'] < $this->u->stats['hpAll'] || $this->u->stats['mpNow'] < $this->u->stats['mpAll'])) {
|
||||||
mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->u->stats['hpAll'] . '",`mpNow` = "' . $this->u->stats['mpAll'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `hpNow` = "' . $this->u->stats['hpAll'] . '",`mpNow` = "' . $this->u->stats['mpAll'] . '" WHERE `id` = "' . $this->u->info['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->user['points'] < 3) {
|
if ($this->user['points'] < 3) {
|
||||||
//Åùå íå ïîëó÷èëè îáìóíäèðîâàíèå
|
//Еще не получили обмундирование
|
||||||
if ($this->user['points'] < 2) {
|
if ($this->user['points'] < 2) {
|
||||||
$r .= '<INPUT class=\'btn_grey\' onClick="selectItmSave()" TYPE=button name=tmp value="Ïîëó÷èòü îáìóíäèðîâàíèå">';
|
$r .= '<INPUT class=\'btn_grey\' onClick="selectItmSave()" TYPE=button name=tmp value="Получить обмундирование">';
|
||||||
} else {
|
} else {
|
||||||
$r .= ' <INPUT class=\'btn_grey\' onClick="location=\'main.php\';" TYPE=button name=tmp value="ß ãîòîâ';
|
$r .= ' <INPUT class=\'btn_grey\' onClick="location=\'main.php\';" TYPE=button name=tmp value="Я готов';
|
||||||
if ($this->u->info['sex'] == 1) {
|
if ($this->u->info['sex'] == 1) {
|
||||||
$r .= 'à';
|
$r .= 'а';
|
||||||
}
|
}
|
||||||
$r .= '!">';
|
$r .= '!">';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$r .= '<small><b>Âû ó÷àñòâóåòå â òóðíèðå!</b></small>';
|
$r .= '<small><b>Вы участвуете в турнире!</b></small>';
|
||||||
$r .= ' <INPUT class=\'btn_grey\' onClick="location.href=\'main.php?hpregenNowTurnir=1\'" TYPE=button name=tmp value="Âîññòàíîâèòü HP è MP">';
|
$r .= ' <INPUT class=\'btn_grey\' onClick="location.href=\'main.php?hpregenNowTurnir=1\'" TYPE=button name=tmp value="Восстановить HP и MP">';
|
||||||
}
|
}
|
||||||
|
|
||||||
$r .= '<div style="float:right"><INPUT onClick="location=\'main.php\';" TYPE=button name=tmp value="Îáíîâèòü"></div>';
|
$r .= '<div style="float:right"><INPUT onClick="location=\'main.php\';" TYPE=button name=tmp value="Обновить"></div>';
|
||||||
if ($this->user['points'] < 3 && $this->user['items'] != '0') {
|
if ($this->user['points'] < 3 && $this->user['items'] != '0') {
|
||||||
$r .= '<div align="left" style="height:1px; width:100%; margin:10px 0 10px 0; border-top:1px solid #999999;"></div>';
|
$r .= '<div align="left" style="height:1px; width:100%; margin:10px 0 10px 0; border-top:1px solid #999999;"></div>';
|
||||||
if ($this->user['items'] == '') {
|
if ($this->user['items'] == '') {
|
||||||
//Âûäàåì ïðåäìåòû äëÿ âûáîðà
|
//Выдаем предметы для выбора
|
||||||
$ai = '';
|
$ai = '';
|
||||||
|
|
||||||
$sp = mysql_query('SELECT `a`.*,`b`.* FROM `items_shop` AS `a` LEFT JOIN `items_main` AS `b` ON (`a`.`item_id` = `b`.`id`) WHERE `a`.`sid` = 1 AND
|
$sp = mysql_query('SELECT `a`.*,`b`.* FROM `items_shop` AS `a` LEFT JOIN `items_main` AS `b` ON (`a`.`item_id` = `b`.`id`) WHERE `a`.`sid` = 1 AND
|
||||||
@@ -317,10 +311,10 @@ class Tournir
|
|||||||
//
|
//
|
||||||
$com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)];
|
$com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)];
|
||||||
} elseif ($i == 14) {
|
} elseif ($i == 14) {
|
||||||
//ïðàâàÿ ðóêà
|
//правая рука
|
||||||
$com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)];
|
$com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)];
|
||||||
} else {
|
} else {
|
||||||
//îáìóíäèðîâàíèå
|
//обмундирование
|
||||||
$com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)];
|
$com[$i] = $aso[$i][rand(0, count($aso[$i]) - 1)];
|
||||||
if ($i == 10) {
|
if ($i == 10) {
|
||||||
$ai .= $com[$i]['id'] . ',';
|
$ai .= $com[$i]['id'] . ',';
|
||||||
@@ -344,7 +338,7 @@ class Tournir
|
|||||||
mysql_query('UPDATE `users_turnirs` SET `items` = "' . $ai . '" WHERE `id` = "' . $this->user['id'] . '" LIMIT 1');
|
mysql_query('UPDATE `users_turnirs` SET `items` = "' . $ai . '" WHERE `id` = "' . $this->user['id'] . '" LIMIT 1');
|
||||||
}
|
}
|
||||||
|
|
||||||
//Âûâîäèì ïðåäìåòû ÷òîáû íàäåòü èõ
|
//Выводим предметы чтобы надеть их
|
||||||
$ai = explode(',', $this->user['items']);
|
$ai = explode(',', $this->user['items']);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
$ia = [];
|
$ia = [];
|
||||||
@@ -358,7 +352,7 @@ class Tournir
|
|||||||
}
|
}
|
||||||
unset($ai);
|
unset($ai);
|
||||||
|
|
||||||
$r .= '<b>Âûáåðèòå ïðåäìåòû äëÿ òóðíèðà:</b><br>';
|
$r .= '<b>Выберите предметы для турнира:</b><br>';
|
||||||
?>
|
?>
|
||||||
<style>
|
<style>
|
||||||
.its0 {
|
.its0 {
|
||||||
@@ -468,13 +462,12 @@ class Tournir
|
|||||||
}
|
}
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
$r .= '<div align="left" style="height:1px; width:100%; margin:10px 0 10px 0; border-top:1px solid #999999;"></div>';
|
$r .= '<div align="left" style="height:1px; width:100%; margin:10px 0 10px 0; border-top:1px solid #999999;"></div>';
|
||||||
$r .= '<table style="border:1px solid #99cccc" width="700" bgcolor="#bbdddd" border="0" align="center" cellpadding="5" cellspacing="0">
|
$r .= '<table style="border:1px solid #99cccc" width="700" bgcolor="#bbdddd" border="0" align="center" cellpadding="5" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="350" align="center" bgcolor="#99cccc"><b class="CSSteam1">Êîìàíäà 1</b></td>
|
<td width="350" align="center" bgcolor="#99cccc"><b class="CSSteam1">Команда 1</b></td>
|
||||||
<td align="center" bgcolor="#99cccc"><b class="CSSteam2">Êîìàíäà 2</b></td>
|
<td align="center" bgcolor="#99cccc"><b class="CSSteam2">Команда 2</b></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" style="border-right:1px solid #99cccc">' . rtrim($tm1, ', ') . '</td>
|
<td align="center" style="border-right:1px solid #99cccc">' . rtrim($tm1, ', ') . '</td>
|
||||||
@@ -483,7 +476,7 @@ class Tournir
|
|||||||
</table>';
|
</table>';
|
||||||
|
|
||||||
if (($this->info['time'] - time() < 0) && $this->info['step'] == 1) {
|
if (($this->info['time'] - time() < 0) && $this->info['step'] == 1) {
|
||||||
//íà÷èíàåì òóðíèð
|
//начинаем турнир
|
||||||
$this->startTurnir();
|
$this->startTurnir();
|
||||||
}
|
}
|
||||||
echo $r;
|
echo $r;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Åäèíàÿ ôóíêöèÿ äëÿ çàëèâêè ôàéëîâ íà ñåðâåð.
|
* Единая функция для заливки файлов на сервер.
|
||||||
*
|
*
|
||||||
* @version 1
|
|
||||||
* @author Ivor Barhansky <me@lopar.space>
|
* @author Ivor Barhansky <me@lopar.space>
|
||||||
|
* @version 1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Uploader
|
class Uploader
|
||||||
@@ -16,15 +16,15 @@ class Uploader
|
|||||||
private $extensions = 'jpg|png|jpeg|gif';
|
private $extensions = 'jpg|png|jpeg|gif';
|
||||||
private $extMatches = [];
|
private $extMatches = [];
|
||||||
private $FILE;
|
private $FILE;
|
||||||
private $cnm = null;
|
private $cnm;
|
||||||
public static $error;
|
public static $error;
|
||||||
|
|
||||||
public function __construct($name, $cnm = null)
|
public function __construct($name, $cnm = null)
|
||||||
{
|
{
|
||||||
$this->FILE = $_FILES;
|
if (!isset($_FILES[$name])) {
|
||||||
if (!$this->FILE[$name]) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
$this->FILE = $_FILES[$name];
|
||||||
$this->cnm = $cnm;
|
$this->cnm = $cnm;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,16 +56,16 @@ class Uploader
|
|||||||
*/
|
*/
|
||||||
public function setMaxFileSize($megabytes)
|
public function setMaxFileSize($megabytes)
|
||||||
{
|
{
|
||||||
$this->maxFileSizeMb = $megabytes * (1024 * 1024);
|
$this->maxFileSizeMb = $megabytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $path ïóòü îò êîðíÿ äî êîíå÷íîé ïàïêè áåç îòêðûâàþùåãî ñëåøà.
|
* @param string $path путь от корня до конечной папки без открывающего слеша.
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setSavePath($path)
|
public function setSavePath($path)
|
||||||
{
|
{
|
||||||
$this->savePath = __DIR__ . '/' . $path;
|
$this->savePath = $_SERVER['DOCUMENT_ROOT'] . '/' . $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,17 +99,20 @@ class Uploader
|
|||||||
private function hasNormalDimensions()
|
private function hasNormalDimensions()
|
||||||
{
|
{
|
||||||
list($width, $height) = getimagesize($this->FILE['tmp_name']);
|
list($width, $height) = getimagesize($this->FILE['tmp_name']);
|
||||||
|
if (!$width || !$height) {
|
||||||
|
self::$error = 'Не подтянулись размеры файла.';
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (
|
if (
|
||||||
$width < $this->width['min'] ||
|
($width < $this->width['min'] || $width > $this->width['max']) ||
|
||||||
$width > $this->width['max'] ||
|
($height < $this->height['min'] || $height > $this->height['max'])
|
||||||
$height < $this->height['min'] ||
|
|
||||||
$height > $this->height['max']
|
|
||||||
) {
|
) {
|
||||||
self::$error = "Òðåáîâàíèÿ ê ðàçìåðó [{$this->width['max']}x{$this->height['max']}] íå ñîáëþäåíû.";
|
self::$error = 'Требования к размеру: ';
|
||||||
if ($this->width['min'] !== $this->width['max'] || $this->height['min'] !== $this->height['max']) {
|
if ($this->width['min'] !== $this->width['max'] || $this->height['min'] !== $this->height['max']) {
|
||||||
self::$error .= " Ìèíèìóì [{$this->width['min']}x{$this->height['min']}].";
|
self::$error .= "от [{$this->width['min']} x {$this->height['min']}] до ";
|
||||||
}
|
}
|
||||||
self::$error .= " <span style='color:red;'>[{$width}x$height]</span>";
|
self::$error .= "[{$this->width['max']} x {$this->height['max']}].";
|
||||||
|
self::$error .= " Текущий размер [$width x $height]";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -120,8 +123,8 @@ class Uploader
|
|||||||
if (!$this->maxFileSizeMb) {
|
if (!$this->maxFileSizeMb) {
|
||||||
$this->setMaxFileSize(2);
|
$this->setMaxFileSize(2);
|
||||||
}
|
}
|
||||||
if ($this->FILE['size'] > $this->maxFileSizeMb || $this->FILE['size'] <=0) {
|
if ($this->FILE['size'] > $this->maxFileSizeMb * (1024 * 1024) || $this->FILE['size'] <= 0) {
|
||||||
self::$error = 'Íåâåðíûé ðàçìåð ôàéëà. Ìàêñèìàëüíûé ðàçìåð ôàéëà ' . $this->maxFileSizeMb . ' ÌÁ';
|
self::$error = 'Неверный размер файла. Максимальный размер файла ' . $this->maxFileSizeMb . ' МБ';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -133,7 +136,7 @@ class Uploader
|
|||||||
!preg_match('/\.(' . $this->extensions . ')$/i', $this->FILE['name'], $this->extMatches) ||
|
!preg_match('/\.(' . $this->extensions . ')$/i', $this->FILE['name'], $this->extMatches) ||
|
||||||
!preg_match('/image/i', $this->FILE['type'])
|
!preg_match('/image/i', $this->FILE['type'])
|
||||||
) {
|
) {
|
||||||
self::$error = 'Íåâåðíûé òèï ôàéëà. Äîïóñòèìûå òèïû : ' . $this->extensions;
|
self::$error = 'Неверный тип файла. Допустимые типы : ' . $this->extensions;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -142,7 +145,7 @@ class Uploader
|
|||||||
private function hasNormalFilePath()
|
private function hasNormalFilePath()
|
||||||
{
|
{
|
||||||
if (!$this->savePath || !is_dir($this->savePath)) {
|
if (!$this->savePath || !is_dir($this->savePath)) {
|
||||||
self::$error = 'Îøèáêà çàãðóçêè: íåò òàêîé ïàïêè.';
|
self::$error = 'Ошибка загрузки: нет такой папки.';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -158,7 +161,7 @@ class Uploader
|
|||||||
$fn2 = $this->cnm;
|
$fn2 = $this->cnm;
|
||||||
}
|
}
|
||||||
if (!move_uploaded_file($this->FILE['tmp_name'], $this->savePath . $fn)) {
|
if (!move_uploaded_file($this->FILE['tmp_name'], $this->savePath . $fn)) {
|
||||||
self::$error = 'Îøèáêà çàãðóçêè ôàéëà';
|
self::$error = 'Ошибка загрузки файла';
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return [$fn2, $fn, $this->savePath . $fn];
|
return [$fn2, $fn, $this->savePath . $fn];
|
||||||
|
|||||||
+4535
-3325
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,132 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace User;
|
||||||
|
|
||||||
|
use Core\Config;
|
||||||
|
use Core\Db;
|
||||||
|
use Core\Mail;
|
||||||
|
use PassGen;
|
||||||
|
use UserIp;
|
||||||
|
|
||||||
|
class Confirmation
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Для однотипных писем с подтверждением.
|
||||||
|
* @param array $userinfo Данные из (User)->info.
|
||||||
|
* @param mixed $value Новое значение
|
||||||
|
* @param ?int $code Проверочный код
|
||||||
|
* @param string $type Тип меняемого значения. С маленькой буквы, именительный падеж.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function byEmail(array $userinfo, string $type, $value, ?int $code = null)
|
||||||
|
{
|
||||||
|
if ($type === 'pass2' && is_null($code)) {
|
||||||
|
self::pass2ByEmailCustom($userinfo, $value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$ip = UserIp::get();
|
||||||
|
$date = date('d.m.y H:i');
|
||||||
|
$https = Config::get('https');
|
||||||
|
$support = Config::get('support');
|
||||||
|
$activationLink = 'https://' . $userinfo['city'] . Config::get('host') .
|
||||||
|
"/confirm.php?id={$userinfo['id']}&code=$code";
|
||||||
|
$fulllogin = $userinfo['login'] . "[{$userinfo['level']}]";
|
||||||
|
Mail::send(
|
||||||
|
$userinfo['mail'],
|
||||||
|
<<<HTML
|
||||||
|
<html lang="ru">
|
||||||
|
<head><title>Сменить $type</title></head>
|
||||||
|
<body>
|
||||||
|
$date<br>
|
||||||
|
Кто-то с IP: $ip пытается сменить $type к персонажу $fulllogin.<br>
|
||||||
|
Т.к. в анкете у этого персонажа указан email: {$userinfo['mail']}, то вы и получили это письмо.<br>
|
||||||
|
login: {$userinfo['login']}<br>
|
||||||
|
Новый $type: <span style="background-color: wheat; font-family: Consolas, monospace;">$value</span><br><br>
|
||||||
|
Для того чтобы сменить $type, перейдите по ссылке:<br>
|
||||||
|
$activationLink<br>
|
||||||
|
<br>--<br>
|
||||||
|
Бойцовский Клуб $https<br>
|
||||||
|
Администрация Бойцовского Клуба: $support<br>
|
||||||
|
P.S. Данное письмо сгенерировано автоматически, отвечать на него не нужно.
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
HTML,
|
||||||
|
"Смена $type у персонажа $fulllogin"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function pass2ByEmailCustom(array $userinfo, string $pass2)
|
||||||
|
{
|
||||||
|
|
||||||
|
$ip = UserIp::get();
|
||||||
|
$fulllogin = $userinfo['login'] . "[{$userinfo['level']}]";
|
||||||
|
Mail::send(
|
||||||
|
$userinfo['mail'],
|
||||||
|
<<<HTML
|
||||||
|
<html lang="ru">
|
||||||
|
<head><title>Второй пароль от персонажа $fulllogin.</title></head>
|
||||||
|
<body>
|
||||||
|
Вами, с IP адреса - $ip, был установлен второй пароль в игре Бойцовский Клуб.<br>
|
||||||
|
Если это были не Вы, свяжитесь с администрацией сайта.<br><br>
|
||||||
|
------------------------------------------------------------------<br>
|
||||||
|
Ваш логин | {$userinfo['login']}<br>
|
||||||
|
Второй пароль | ' . $pass2 . '<br>
|
||||||
|
------------------------------------------------------------------<br>
|
||||||
|
<br><br>Желаем Вам приятной игры.<br><br><i>Администрация</i>
|
||||||
|
</body>
|
||||||
|
HTML,
|
||||||
|
"Второй пароль от персонажа $fulllogin"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function userRegistrationCodeByEmail(string $email, string $login)
|
||||||
|
{
|
||||||
|
$code = PassGen::intCode(4);
|
||||||
|
Db::sql('insert into secure_code (email, code, time) values (?,?,unix_timestamp())', [$email, $code]);
|
||||||
|
Mail::send(
|
||||||
|
$email,
|
||||||
|
'Секретный Код: ' . $code,
|
||||||
|
'Код подтверждения регистрации персонажа ' . $login
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function byCode(int $uid, int $code): string
|
||||||
|
{
|
||||||
|
$status = '';
|
||||||
|
|
||||||
|
if ($uid <= 0 || $code <= 0) {
|
||||||
|
return $status;
|
||||||
|
}
|
||||||
|
|
||||||
|
$codes = Db::getRow(
|
||||||
|
'select * from emailconfirmation where id = ? and code = ? and (active = 1 or pass = 1 or email = 1)',
|
||||||
|
[$uid, $code]
|
||||||
|
);
|
||||||
|
if (!$codes['id']) {
|
||||||
|
$status = 'Ссылка устарела!';
|
||||||
|
} elseif ($codes['active'] === 1) {
|
||||||
|
Db::sql(
|
||||||
|
'update users set emailconfirmation = 1, securetime = unix_timestamp() + 259200 where id = ?',
|
||||||
|
[$codes['id']]
|
||||||
|
);
|
||||||
|
$status = "Подтверждение смены пароля/email через почту включено";
|
||||||
|
} elseif ($codes['pass'] === 1) {
|
||||||
|
Db::sql(
|
||||||
|
'update users as u inner join emailconfirmation as e on u.id = e.id set u.pass = e.pa_em, u.securetime = unix_timestamp() + 259200 where u.id = ?',
|
||||||
|
[$codes['id']]
|
||||||
|
);
|
||||||
|
$status = "Удачно сменили пароль<";
|
||||||
|
} elseif ($codes['email'] === 1) {
|
||||||
|
Db::sql(
|
||||||
|
'update users as u inner join emailconfirmation as e on u.id = e.id set u.mail = e.pa_em, u.securetime = unix_timestamp() + 259200 where u.id = ?',
|
||||||
|
[$codes['id']]
|
||||||
|
);
|
||||||
|
$status = "Удачно сменили email";
|
||||||
|
}
|
||||||
|
Db::sql('delete from emailconfirmation where id = ? and code = ?', [$_GET['id'], $_GET['code']]);
|
||||||
|
if ($status) {
|
||||||
|
$status = "<h3>$status</h3>";
|
||||||
|
}
|
||||||
|
return $status;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace User;
|
||||||
|
|
||||||
|
use Core\Db;
|
||||||
|
use PassGen;
|
||||||
|
use User;
|
||||||
|
|
||||||
|
class Email
|
||||||
|
{
|
||||||
|
private array $info = [];
|
||||||
|
|
||||||
|
public function __construct(array $userinfo)
|
||||||
|
{
|
||||||
|
$this->info = $userinfo ?? User::start()->info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function change(string $old, string $new): string
|
||||||
|
{
|
||||||
|
if ($old === $new) {
|
||||||
|
return $this->info['mail'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->info['emailconfirmation'] === 1) {
|
||||||
|
$query = 'insert into emailconfirmation (id, code, pa_em, pass) values (?,?,?,1)';
|
||||||
|
$args = [
|
||||||
|
$this->info['id'],
|
||||||
|
PassGen::intCode(10),
|
||||||
|
$new
|
||||||
|
];
|
||||||
|
Confirmation::byEmail($this->info, 'email', $new, $args[1]);
|
||||||
|
} else {
|
||||||
|
$query = 'update users set mail = ?, securetime = unix_timestamp() + 259200 where id = ?';
|
||||||
|
$args = [
|
||||||
|
$new,
|
||||||
|
$this->info['id']
|
||||||
|
];
|
||||||
|
}
|
||||||
|
Db::sql($query, $args);
|
||||||
|
return $new;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace User;
|
||||||
|
|
||||||
|
use Core\Db;
|
||||||
|
use PassGen;
|
||||||
|
use User;
|
||||||
|
|
||||||
|
class Password
|
||||||
|
{
|
||||||
|
private array $info = [];
|
||||||
|
|
||||||
|
public function __construct(array $userinfo)
|
||||||
|
{
|
||||||
|
$this->info = $userinfo ?? User::start()->info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function changeFirst(string $old, string $new): string
|
||||||
|
{
|
||||||
|
if ($old === $new && password_verify($old, $this->info['pass'])) {
|
||||||
|
if ($this->info['emailconfirmation'] === 1) {
|
||||||
|
$query = 'insert into emailconfirmation (id, code, pa_em, pass) values (?,?,?,1)';
|
||||||
|
$args = [
|
||||||
|
$this->info['id'],
|
||||||
|
PassGen::intCode(10),
|
||||||
|
password_hash($new, PASSWORD_DEFAULT)
|
||||||
|
];
|
||||||
|
Confirmation::byEmail($this->info, 'пароль', $new, $args[1]);
|
||||||
|
$hashedPass = $args[2];
|
||||||
|
} else {
|
||||||
|
$query = 'update users set pass = ?, repass = 0, securetime = unix_timestamp() + 259200 where id = ?';
|
||||||
|
$args = [
|
||||||
|
password_hash($new, PASSWORD_DEFAULT),
|
||||||
|
$this->info['id']
|
||||||
|
];
|
||||||
|
$hashedPass = $args[0];
|
||||||
|
}
|
||||||
|
Db::sql($query, $args);
|
||||||
|
return $hashedPass;
|
||||||
|
}
|
||||||
|
return $this->info['pass'];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function changeSecond(?int $passLength): array
|
||||||
|
{
|
||||||
|
if (in_array($passLength, [4,6,8])) {
|
||||||
|
$query = 'update users set pass2 = ? where id = ?';
|
||||||
|
$pass2 = PassGen::intCode($passLength);
|
||||||
|
$args = [
|
||||||
|
password_hash($pass2, PASSWORD_DEFAULT),
|
||||||
|
$this->info['id']
|
||||||
|
];
|
||||||
|
Confirmation::byEmail($this->info, 'pass2', $pass2);
|
||||||
|
$hash = $args[0];
|
||||||
|
} else {
|
||||||
|
$query = 'update users set pass2 = default where id = ?';
|
||||||
|
$args = [$this->info['id']];
|
||||||
|
}
|
||||||
|
|
||||||
|
Db::sql($query, $args);
|
||||||
|
return [
|
||||||
|
'pass2' => $pass2 ?? '',
|
||||||
|
'hash' => $hash ?? null,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class UserIp
|
||||||
|
{
|
||||||
|
public static function get()
|
||||||
|
{
|
||||||
|
return $_SERVER['HTTP_CLIENT_IP']
|
||||||
|
?? $_SERVER["HTTP_CF_CONNECTING_IP"] # when behind cloudflare
|
||||||
|
?? $_SERVER['HTTP_X_FORWARDED']
|
||||||
|
?? $_SERVER['HTTP_X_FORWARDED_FOR']
|
||||||
|
?? $_SERVER['HTTP_FORWARDED']
|
||||||
|
?? $_SERVER['HTTP_FORWARDED_FOR']
|
||||||
|
?? $_SERVER['REMOTE_ADDR']
|
||||||
|
?? '0.0.0.0';
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,28 +1,246 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Core\Config;
|
||||||
|
use Core\Db;
|
||||||
|
|
||||||
class UserRegister
|
class UserRegister
|
||||||
{
|
{
|
||||||
|
private string $error = '';
|
||||||
|
private int $class = 0;
|
||||||
|
private array $classBonuses = [
|
||||||
|
1 => [
|
||||||
|
's1=62|s2=3|s3=3|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=9|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
|
||||||
|
'items' => [6433],
|
||||||
|
'effects' => [1, 20, 25, 37, 38, 283, 296, 412, 472],
|
||||||
|
],
|
||||||
|
2 => [
|
||||||
|
's1=21|s2=31|s3=16|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=9|a2=0|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0',
|
||||||
|
'items' => [6431],
|
||||||
|
'effects' => [8, 20, 25, 37, 38, 283, 296, 412, 472],
|
||||||
|
],
|
||||||
|
3 => [
|
||||||
|
's1=42|s2=3|s3=3|s4=50|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=9|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
|
||||||
|
'items' => [6432],
|
||||||
|
'effects' => [1, 20, 25, 37, 38, 283, 296, 412, 472],
|
||||||
|
],
|
||||||
|
4 => [
|
||||||
|
's1=24|s2=15|s3=29|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=9|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
|
||||||
|
'items' => [6430],
|
||||||
|
'effects' => [7, 20, 25, 37, 38, 283, 296, 412, 472],
|
||||||
|
],
|
||||||
|
5 => [
|
||||||
|
's1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=6|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
|
||||||
|
'items' => [6435],
|
||||||
|
'effects' => [9, 32, 53, 439, 25, 37, 38, 283, 296, 412, 472],
|
||||||
|
],
|
||||||
|
6 => [
|
||||||
|
's1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=6|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
|
||||||
|
'items' => [6447],
|
||||||
|
'effects' => [9, 32, 51, 439, 25, 37, 38, 283, 296, 412, 472],
|
||||||
|
],
|
||||||
|
7 => [
|
||||||
|
's1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=0|mg3=0|mg4=6|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
|
||||||
|
'items' => [6436],
|
||||||
|
'effects' => [9, 32, 54, 439, 25, 37, 38, 283, 296, 412, 472],
|
||||||
|
],
|
||||||
|
8 => [
|
||||||
|
's1=14|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10|s7=0|a1=0|a2=0|a3=0|a4=0|a5=3|mg1=0|mg2=0|mg3=6|mg4=0|mg5=0|mg6=0|mg7=0|s5=13|s6=40|a6=0|s8=0|s9=0|s10=0|s11=0|s12=0|s13=0|s14=0|s15=0',
|
||||||
|
'items' => [6448],
|
||||||
|
'effects' => [9, 32, 52, 439, 25, 37, 38, 283, 296, 412, 472],
|
||||||
|
],
|
||||||
|
9 => [
|
||||||
|
's1=15|s2=23|s3=30|s4=30|rinv=40|m9=5|m6=10|s7=0|a1=9|a2=0|a3=0|a4=0|a5=0|mg1=0|mg2=0|mg3=0|mg4=0|mg5=0|mg6=0|mg7=0|s5=0|s6=0',
|
||||||
|
'items' => [6530],
|
||||||
|
'effects' => [8, 20, 25, 37, 38, 283, 296, 412, 472],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
private array $restrictedLogins = [
|
||||||
|
'ангел', 'angel', 'администрация', 'administration', 'Комментатор',
|
||||||
|
'Мироздатель', 'Мусорщик', 'Падальщик', 'Повелитель',
|
||||||
|
'Архивариус', 'Пересмешник', 'Волынщик', 'Лорд Разрушитель',
|
||||||
|
'Милосердие', 'Справедливость', 'Искушение', 'Вознесение',
|
||||||
|
];
|
||||||
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
|
||||||
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
|
||||||
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
|
||||||
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
|
||||||
} else {
|
|
||||||
$ip = $_SERVER['REMOTE_ADDR'];
|
|
||||||
}
|
|
||||||
define('IP', $ip);
|
|
||||||
if ($_SERVER['HTTP_REFERER'] == 'https://new-combats.com/' && $_COOKIE['acomb1'] != '2') {
|
|
||||||
setcookie('acomb1', '1', time() + 60 * 60 * 24 * 3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function en_ru($txt)
|
public function hasMixedLatCur(string $txt): bool
|
||||||
{
|
{
|
||||||
$en = preg_match("/^(([0-9A-z _-])+)$/i", $txt);
|
$en = preg_match("/^(([0-9A-z -])+)$/iu", $txt);
|
||||||
$ru = preg_match("/^(([0-9À-ÿ _-])+)$/i", $txt);
|
$ru = preg_match("/^([а-яёіїє\s\d]*)$/iu", $txt);
|
||||||
return ($ru && $en) || (!$ru && !$en);
|
return ($ru && $en) || (!$ru && !$en);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function hasGoodLogin(string $login): bool
|
||||||
|
{
|
||||||
|
$isRestricted = in_array($login, $this->restrictedLogins);
|
||||||
|
$isRegistered = Db::getValue('select count(*) from users where login = ?', [$login]);
|
||||||
|
//Бывшие в употреблении логины. Дичь, но ладно.
|
||||||
|
$wasRegistered = Db::getValue('select count(*) from lastnames where login = ?', [$login]);
|
||||||
|
$login = str_replace(' ', ' ', $login);
|
||||||
|
if (mb_strlen($login) > 20) {
|
||||||
|
$this->error = 'Логин должен содержать не более 20 символов.';
|
||||||
|
}
|
||||||
|
if (mb_strlen($login) < 4) {
|
||||||
|
$this->error = 'Логин должен содержать не менее 4 символов.';
|
||||||
|
}
|
||||||
|
if ($this->hasMixedLatCur($login)) {
|
||||||
|
$this->error = 'В логине разрешено использовать только буквы одного алфавита русского или английского. Нельзя смешивать.';
|
||||||
|
}
|
||||||
|
if (substr_count($login, ' ') + substr_count($login, '-') + substr_count($login, '_') > 2) {
|
||||||
|
$this->error = 'Не более двух разделителей одновременно (пробел, тире, нижнее подчеркивание).';
|
||||||
|
}
|
||||||
|
if (!empty($this->error)) {
|
||||||
|
$this->error .= '<br>Пример правильного никнейма: Петя Убиватор, Коля, xalop.<br>Пример неправильного никнейма: )))), kolя)=-/.';
|
||||||
|
}
|
||||||
|
if ($isRegistered || $wasRegistered || $isRestricted) {
|
||||||
|
$this->error = 'Логин ' . $login . ' уже занят, выберите другой.';
|
||||||
|
}
|
||||||
|
|
||||||
|
return !$this->error;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasGoodEmail(string $email): bool
|
||||||
|
{
|
||||||
|
$isRegistered = Db::getValue('select count(*) from users where mail = ?', [$email]);
|
||||||
|
$isBlocked = Db::getValue('select count(*) from ban_email where email = ?', [$email]);
|
||||||
|
$allowedDomains = Db::getColumn('select email from trust_email');
|
||||||
|
if (!filter_var($email, FILTER_VALIDATE_EMAIL) || $isRegistered) {
|
||||||
|
$this->error = 'Неправильный email.';
|
||||||
|
}
|
||||||
|
if ($isBlocked) {
|
||||||
|
$this->error = 'Адрес заблокирован.';
|
||||||
|
}
|
||||||
|
if (!in_array(explode('@', $email)[1], $allowedDomains)) {
|
||||||
|
$this->error = 'Данный почтовый сервис использовать нельзя.';
|
||||||
|
}
|
||||||
|
return !$this->error;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasGoodEmailCode(string $email, int $code): bool
|
||||||
|
{
|
||||||
|
$check = Db::getValue('select code from secure_code where email = ? order by time desc limit 1', [$email]);
|
||||||
|
if ($code !== $check) {
|
||||||
|
$this->error = 'Неверный проверочный код.';
|
||||||
|
} else {
|
||||||
|
Db::sql('delete from secure_code where email = ?', [$email]);
|
||||||
|
}
|
||||||
|
return !$this->error;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasGoodPassword(string $password1, string $password2): bool
|
||||||
|
{
|
||||||
|
if ($password1 !== $password2) {
|
||||||
|
$this->error = 'Пароли не совпадают';
|
||||||
|
}
|
||||||
|
if (strlen($password1) < 8) {
|
||||||
|
$this->error = 'Пароль должен быть больше 8 символов';
|
||||||
|
}
|
||||||
|
return !$this->error;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function new(string $login, string $password, string $email, $ref, $birthday, int $sex, int $class): string
|
||||||
|
{
|
||||||
|
if (!$this->hasGoodLogin($login)) { //fixme: грязный хак, но лучше не придумывается с этой пошаговостью.
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ($email === 'dnf123123@gmail.com') {
|
||||||
|
$login = 'Пачкуале Пестрини';
|
||||||
|
}
|
||||||
|
$this->class = $class;
|
||||||
|
$ip = UserIp::get();
|
||||||
|
$sex -= 10; //На входе 10\11, а передать надо 0\1.
|
||||||
|
Db::sql(
|
||||||
|
'insert into users
|
||||||
|
(`real`,login,host_reg,pass,ip,ipreg,room,timereg,mail,bithday,sex,fnq,molch2,level,clan_zv,money,online)
|
||||||
|
values (1,?,?,?,?,?,9,unix_timestamp(),?,?,?,0,unix_timestamp() + 86400,8,0,200,unix_timestamp())',
|
||||||
|
[
|
||||||
|
$login,
|
||||||
|
$ref ?? '',
|
||||||
|
password_hash($password, PASSWORD_DEFAULT),
|
||||||
|
$ip,
|
||||||
|
$ip,
|
||||||
|
$email,
|
||||||
|
date('d.m.Y', strtotime($birthday)),
|
||||||
|
$sex,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$uid = Db::lastInsertId();
|
||||||
|
trigger_error('Db::lastInsertId= ' .$uid);
|
||||||
|
$_SESSION['uid'] = $uid;
|
||||||
|
$this->setCookies($login);
|
||||||
|
$this->setStatsItemsEffects($uid);
|
||||||
|
User::setOnline($uid);
|
||||||
|
Db::sql('insert into online (uid, timeStart) values (?,unix_timestamp())', [$uid]);
|
||||||
|
return $uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function setCookies($login)
|
||||||
|
{
|
||||||
|
setcookie('login', 1, 1, '/', Config::get('host'), true);
|
||||||
|
setcookie('registrationModal', 1, 1, '/', Config::get('host'), true);
|
||||||
|
setcookie('login', $login, strtotime('+7 days'), '/', Config::get('host'), true);
|
||||||
|
setcookie('registrationModal', 'true', strtotime('+7 days'), '/', Config::get('host'), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function setStatsItemsEffects($uid)
|
||||||
|
{
|
||||||
|
$u = User::start();
|
||||||
|
if ($_SESSION['ref'] === 1) {
|
||||||
|
$this->classBonuses[$this->class]['items'][] = 4811;
|
||||||
|
}
|
||||||
|
|
||||||
|
Db::sql(
|
||||||
|
'insert into stats (id,stats,ability,skills,exp) values (?,?,-75,-9,100000)',
|
||||||
|
[
|
||||||
|
$uid,
|
||||||
|
$this->classBonuses[$this->class][0],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach ($this->classBonuses[$this->class]['items'] as $item) {
|
||||||
|
$itemId = $u->addItem($item, $uid);
|
||||||
|
Db::sql(
|
||||||
|
'update items_users
|
||||||
|
set `1price` = (select price_1 from items_shop where items_shop.item_id = ? and sid = 1)
|
||||||
|
where id = ?',
|
||||||
|
[$item, $itemId]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addEffects($uid, implode(',',$this->classBonuses[$this->class]['effects']));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function addEffects(int $uid, int ...$eids)
|
||||||
|
{
|
||||||
|
$in = implode(',', $eids);
|
||||||
|
$q =
|
||||||
|
"insert into eff_users (
|
||||||
|
overType,
|
||||||
|
id_eff,
|
||||||
|
uid,
|
||||||
|
name,
|
||||||
|
timeUse,
|
||||||
|
data
|
||||||
|
)
|
||||||
|
select
|
||||||
|
oneType,
|
||||||
|
id2,
|
||||||
|
$uid,
|
||||||
|
mname,
|
||||||
|
unix_timestamp(),
|
||||||
|
mdata
|
||||||
|
from
|
||||||
|
eff_main
|
||||||
|
where
|
||||||
|
id2 in ($in)";
|
||||||
|
Db::sql($q);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getError(): string
|
||||||
|
{
|
||||||
|
return $this->error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Insallah\Db;
|
use Core\Db;
|
||||||
|
|
||||||
class UserStats
|
class UserStats
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Ñîáèðàåò ñóììû âñåõ áîíóñîâ ñ îäåòûõ ïðåäìåòîâ è àêòèâíûõ ýôåêòîâ.
|
* Собирает суммы всех бонусов с одетых предметов и активных эфектов.
|
||||||
* @param $userId
|
* @param int $userId
|
||||||
* @param bool $showAll
|
* @param bool $showAll
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public static function getAllBonuses($userId, $showAll = false)
|
public static function getAllBonuses(int $userId, bool $showAll = false): array
|
||||||
{
|
{
|
||||||
require_once '_incl_data/class/Insallah/Core/Db.php';
|
|
||||||
$db = new Db();
|
|
||||||
$q = 'select data from items_users where uid = ? and inOdet > 0 and `delete` = 0
|
$q = 'select data from items_users where uid = ? and inOdet > 0 and `delete` = 0
|
||||||
union all select data from eff_users where uid = ? and `delete` = 0';
|
union all select data from eff_users where uid = ? and `delete` = 0';
|
||||||
$iData = $db::getColumn($q, [$userId, $userId]);
|
$iData = Db::getColumn($q, [$userId, $userId]);
|
||||||
$params = [];
|
$params = [];
|
||||||
$params2 = json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $iData . '}'), true);
|
|
||||||
foreach ($iData as $datum) {
|
foreach ($iData as $datum) {
|
||||||
foreach (explode('|', $datum) as $inner) {
|
foreach (explode('|', $datum) as $inner) {
|
||||||
list($a, $b) = explode('=', $inner);
|
[$a, $b] = explode('=', $inner);
|
||||||
if (strpos($a, 'add') !== false || strpos($a, 'sv') !== false || $showAll) {
|
if (strpos($a, 'add') !== false || strpos($a, 'sv') !== false || $showAll) {
|
||||||
if (isset($params[$a])) {
|
if (isset($params[$a])) {
|
||||||
$params[$a] += $b;
|
$params[$a] += $b;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,34 +5,14 @@ if (!defined('GAME')) {
|
|||||||
|
|
||||||
$db = [
|
$db = [
|
||||||
's' => 'localhost', // server
|
's' => 'localhost', // server
|
||||||
'd' => 'newcom1_abk', // database
|
'd' => 'game_production', // database
|
||||||
'u' => 'newcom1_abk', // user
|
'u' => 'prod1', // user
|
||||||
'p' => '4nWYsIM[c?}P' // password
|
'p' => 'Bz@fGaZjFU2206Ua' // password
|
||||||
];
|
];
|
||||||
$dsn = 'mysql:host=' . $db['s'] . ';dbname=' . $db['d'];
|
$dsn = 'mysql:host=' . $db['s'] . ';dbname=' . $db['d'];
|
||||||
|
|
||||||
if (function_exists('date_default_timezone_set')) {
|
include_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'mysql_override.php';
|
||||||
date_default_timezone_set('Europe/Moscow');
|
|
||||||
}
|
|
||||||
|
|
||||||
$dbgo = mysql_pconnect($db['s'], $db['u'], $db['p']);
|
$dbgo = mysql_connect($db['s'], $db['u'], $db['p']);
|
||||||
mysql_select_db($db['d'], $dbgo);
|
mysql_select_db($db['d'], $dbgo);
|
||||||
mysql_query('SET NAMES cp1251');
|
mysql_query('set names utf8mb4');
|
||||||
|
|
||||||
if (!function_exists('GetRealIp')) {
|
|
||||||
function GetRealIpTest()
|
|
||||||
{
|
|
||||||
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
|
||||||
return $_SERVER['HTTP_CLIENT_IP'];
|
|
||||||
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
|
||||||
return $_SERVER['HTTP_X_FORWARDED_FOR'];
|
|
||||||
}
|
|
||||||
return $_SERVER['REMOTE_ADDR'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$ipban = GetRealIpTest();
|
|
||||||
} else {
|
|
||||||
$ipban = GetRealIp();
|
|
||||||
}
|
|
||||||
|
|
||||||
$pdo = new PDO($dsn, $db['u'], $db['p'], [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES cp1251"]);
|
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '1/hramstok1' ) {
|
if( isset($s[1]) && $s[1] == '1/hramstok1' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Водосток для сбора проб
|
Сундук: Водосток для сбора проб
|
||||||
* Заменяет предмет Пустая склянка (4693) на (4694) Склянка с пробами
|
* Заменяет предмет Пустая склянка (4693) на (4694) Склянка с пробами
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$vad['itm'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `item_id` = 4693 AND `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 LIMIT 1'));
|
$vad['itm'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `item_id` = 4693 AND `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 LIMIT 1'));
|
||||||
if(!isset($vad['itm']['id'])) {
|
if(!isset($vad['itm']['id'])) {
|
||||||
$r = 'У вас нет подходящего предмета для хранения проб... Все руки в каком-то говне...';
|
$r = 'У вас нет подходящего предмета для хранения проб... Все руки в каком-то говне...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ if( isset($s[1]) && $s[1] == '1/hramstok1' ) {
|
|||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
||||||
)');
|
)');
|
||||||
mysql_query('UPDATE `items_users` SET `item_id` = 4694 WHERE `id` = "'.$vad['itm']['id'].'" LIMIT 1');
|
mysql_query('UPDATE `items_users` SET `item_id` = 4694 WHERE `id` = "'.$vad['itm']['id'].'" LIMIT 1');
|
||||||
$r = 'Вы успешно взяли пробы с водостока! Набранную склянку нужно отнести обратно, к Арквиерро в Храм Знаний.';
|
$r = 'Вы успешно взяли пробы с водостока! Набранную склянку нужно отнести обратно, к Арквиерро в Храм Знаний.';
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($vad);
|
unset($vad);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '1/podogrevatel' ) {
|
if( isset($s[1]) && $s[1] == '1/podogrevatel' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Обогреватель
|
Сундук: Обогреватель
|
||||||
* падает гайка
|
* падает гайка
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ if( isset($s[1]) && $s[1] == '1/podogrevatel' ) {
|
|||||||
$vad['itm'] = $vad['itm'][rand(0,count($vad['itm'])-1)];
|
$vad['itm'] = $vad['itm'][rand(0,count($vad['itm'])-1)];
|
||||||
$vad['itm'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$vad['itm'].'" LIMIT 1'));
|
$vad['itm'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$vad['itm'].'" LIMIT 1'));
|
||||||
$this->pickitem($obj,$vad['itm']['id'],0,'',false);
|
$this->pickitem($obj,$vad['itm']['id'],0,'',false);
|
||||||
$r = 'Вы обнаружили предмет "'.$vad['itm']['name'].'".';
|
$r = 'Вы обнаружили предмет "'.$vad['itm']['name'].'".';
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($vad);
|
unset($vad);
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '1/rjav' ) {
|
if( isset($s[1]) && $s[1] == '1/rjav' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Ржавые трубы
|
Сундук: Ржавые трубы
|
||||||
* Обмен ключчиииика на вентиль
|
* Обмен ключчиииика на вентиль
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$vad['itm'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `item_id` = 1004 AND `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 LIMIT 1'));
|
$vad['itm'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `item_id` = 1004 AND `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `inShop` = 0 AND `inTransfer` = 0 LIMIT 1'));
|
||||||
if(!isset($vad['itm']['id'])) {
|
if(!isset($vad['itm']['id'])) {
|
||||||
$r = 'У вас нет подходящего предмета чтобы открутить вентиль...';
|
$r = 'У вас нет подходящего предмета чтобы открутить вентиль...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ if( isset($s[1]) && $s[1] == '1/rjav' ) {
|
|||||||
)');
|
)');
|
||||||
mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$vad['itm']['id'].'" LIMIT 1');
|
mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$vad['itm']['id'].'" LIMIT 1');
|
||||||
$this->pickitem($obj,1005,$u->info['id'],'',false);
|
$this->pickitem($obj,1005,$u->info['id'],'',false);
|
||||||
$r = 'Вы успешно открутили вентиль! (Предмет "Ключииик" был изьят)';
|
$r = 'Вы успешно открутили вентиль! (Предмет "Ключииик" был изьят)';
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($vad);
|
unset($vad);
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '1/vods1' ) {
|
if( isset($s[1]) && $s[1] == '1/vods1' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Водосток
|
Сундук: Водосток
|
||||||
* падает гайка
|
* падает гайка
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ if( isset($s[1]) && $s[1] == '1/vods1' ) {
|
|||||||
)');
|
)');
|
||||||
//mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$vad['itm']['id'].'" LIMIT 1');
|
//mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$vad['itm']['id'].'" LIMIT 1');
|
||||||
$this->pickitem($obj,1002,0,'',false);
|
$this->pickitem($obj,1002,0,'',false);
|
||||||
$r = 'Вы обнаружили предмет "Гайка".';
|
$r = 'Вы обнаружили предмет "Гайка".';
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($vad);
|
unset($vad);
|
||||||
|
|||||||
@@ -1,34 +1,34 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/altar' ) {
|
if( isset($s[1]) && $s[1] == '101/altar' ) {
|
||||||
/*
|
/*
|
||||||
Алтарь
|
Алтарь
|
||||||
* Телепортирует на необходимую клетку х -3 , у 7
|
* Телепортирует на необходимую клетку х -3 , у 7
|
||||||
* Для прохода требуется 1 камень типа 881 или 878
|
* Для прохода требуется 1 камень типа 881 или 878
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => false
|
'go' => false
|
||||||
);
|
);
|
||||||
|
|
||||||
//Проверяем камни
|
//Проверяем камни
|
||||||
$vad['sp'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE (`item_id` = "881" OR `item_id` = "878") AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" AND `inTransfer` = "0" LIMIT 1'));
|
$vad['sp'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE (`item_id` = "881" OR `item_id` = "878") AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" AND `inTransfer` = "0" LIMIT 1'));
|
||||||
if( isset($vad['sp']['id']) ) {
|
if( isset($vad['sp']['id']) ) {
|
||||||
// Удалена проверка на группировку предметов 13.10.2015
|
// Удалена проверка на группировку предметов 13.10.2015
|
||||||
$vad['pl'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$vad['sp']['item_id'].'" LIMIT 1'));
|
$vad['pl'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$vad['sp']['item_id'].'" LIMIT 1'));
|
||||||
$vad['go'] = true;
|
$vad['go'] = true;
|
||||||
}
|
}
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
mysql_query('UPDATE `stats` SET `x` = "-3",`y` = "7",`s` = "1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `x` = "-3",`y` = "7",`s` = "1" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
// $u->deleteItem(,$u->info['id'],1); // Убрано 14.10.2015
|
// $u->deleteItem(,$u->info['id'],1); // Убрано 14.10.2015
|
||||||
$upd = mysql_query('UPDATE `items_users` SET `lastUPD`="'.time().'",`delete`="'.time().'" WHERE `id`="'.$vad['sp']['id'].'" LIMIT 1');
|
$upd = mysql_query('UPDATE `items_users` SET `lastUPD`="'.time().'",`delete`="'.time().'" WHERE `id`="'.$vad['sp']['id'].'" LIMIT 1');
|
||||||
if($upd){
|
if($upd){
|
||||||
$r = 'Вы растворили "'.$vad['pl']['name'].'" в алтаре и произошел взрыв. Алтарь переместил вас в тайную комнату';
|
$r = 'Вы растворили "'.$vad['pl']['name'].'" в алтаре и произошел взрыв. Алтарь переместил вас в тайную комнату';
|
||||||
echo '<script>location.href="main.php"</script>';
|
echo '<script>location.href="main.php"</script>';
|
||||||
} else {
|
} else {
|
||||||
$r = 'Что-то пошло не так, попробуйте позже.';
|
$r = 'Что-то пошло не так, попробуйте позже.';
|
||||||
}
|
}
|
||||||
}elseif( !isset($vad['sp']['id']) ) {
|
}elseif( !isset($vad['sp']['id']) ) {
|
||||||
$r = 'Для перемещения требуется один из драгоценных камней';
|
$r = 'Для перемещения требуется один из драгоценных камней';
|
||||||
}
|
}
|
||||||
unset($vad);
|
unset($vad);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/i9' ) {
|
if( isset($s[1]) && $s[1] == '101/i9' ) {
|
||||||
/*
|
/*
|
||||||
Ñóíäóê: ëîâóøêà
|
Сундук: ловушка
|
||||||
* Ñíèìàåò äî 1000 ÍÐ îäèí ðàç
|
* Снимает до 1000 НР один раз
|
||||||
*/
|
*/
|
||||||
//Âñå ïåðåìåííûå ñîõðàíÿòü â ìàññèâå $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => false
|
'go' => false
|
||||||
);
|
);
|
||||||
@@ -13,23 +13,23 @@ if( isset($s[1]) && $s[1] == '101/i9' ) {
|
|||||||
if( !isset($vad['test']['id']) ) {
|
if( !isset($vad['test']['id']) ) {
|
||||||
$vad['go'] = true;
|
$vad['go'] = true;
|
||||||
}else{
|
}else{
|
||||||
$r = ' ñóíäóêå áûëà ëîâóøêà, å¸ àêòèâèðîâàë ïåðñîíàæ '.$u->microLogin($vad['test']['uid'],1);
|
$r = 'В сундуке была ловушка, её активировал персонаж '.$u->microLogin($vad['test']['uid'],1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
||||||
)');
|
)');
|
||||||
$r = 'Â ñóíäóêå áûëà ëîâóøêà óñòàíîâëåííàÿ îäíèì èç îáèòàòåëåé ïîäçåìåëüÿ!';
|
$r = 'В сундуке была ловушка установленная одним из обитателей подземелья!';
|
||||||
$vad['min_hp'] = rand(100,1000);
|
$vad['min_hp'] = rand(100,1000);
|
||||||
$u->stats['hpNow'] -= $vad['min_hp'];
|
$u->stats['hpNow'] -= $vad['min_hp'];
|
||||||
if( $u->stats['hpNow'] < 0 ) {
|
if( $u->stats['hpNow'] < 0 ) {
|
||||||
$u->stats['hpNow'] = 0;
|
$u->stats['hpNow'] = 0;
|
||||||
}
|
}
|
||||||
if($u->info['sex'] == 0) {
|
if($u->info['sex'] == 0) {
|
||||||
$vad['text'] = '[img[items/trap.gif]] <b>'.$u->info['login'].'</b> óãîäèë â ëîâóøêó îñòàâëåííóþ â "'.$obj['name'].'". <b>-'.$vad['min_hp'].'</b> ['.floor($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']';
|
$vad['text'] = '[img[items/trap.gif]] <b>'.$u->info['login'].'</b> угодил в ловушку оставленную в "'.$obj['name'].'". <b>-'.$vad['min_hp'].'</b> ['.floor($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']';
|
||||||
}else{
|
}else{
|
||||||
$vad['text'] = '[img[items/trap.gif]] <b>'.$u->info['login'].'</b> óãîäèëà â ëîâóøêó îñòàâëåííóþ â "'.$obj['name'].'". <b>-'.$vad['min_hp'].'</b> ['.floor($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']';
|
$vad['text'] = '[img[items/trap.gif]] <b>'.$u->info['login'].'</b> угодила в ловушку оставленную в "'.$obj['name'].'". <b>-'.$vad['min_hp'].'</b> ['.floor($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']';
|
||||||
}
|
}
|
||||||
$this->sys_chat($vad['text']);
|
$this->sys_chat($vad['text']);
|
||||||
$u->info['hpNow'] = $u->stats['hpNow'];
|
$u->info['hpNow'] = $u->stats['hpNow'];
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/kotel' ) {
|
if( isset($s[1]) && $s[1] == '101/kotel' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Котел
|
Сундук: Котел
|
||||||
* Можно найти Сущность щита
|
* Можно найти Сущность щита
|
||||||
* Может отнять 100-1000 НР
|
* Может отнять 100-1000 НР
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то перевернул котел...';
|
$r = 'Кто-то перевернул котел...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,9 +19,9 @@ if( isset($s[1]) && $s[1] == '101/kotel' ) {
|
|||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
||||||
)');
|
)');
|
||||||
//Награда
|
//Награда
|
||||||
$this->pickitem($obj,5239,$u->info['id']);
|
$this->pickitem($obj,5239,$u->info['id']);
|
||||||
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили предмет "Амброзия подмастерья Владык"';
|
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили предмет "Амброзия подмастерья Владык"';
|
||||||
}
|
}
|
||||||
unset($vad);
|
unset($vad);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/krovat' ) {
|
if( isset($s[1]) && $s[1] == '101/krovat' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Кровать
|
Сундук: Кровать
|
||||||
* Можно получить один из двух ресурсов
|
* Можно получить один из двух ресурсов
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ if( isset($s[1]) && $s[1] == '101/krovat' ) {
|
|||||||
)');
|
)');
|
||||||
$vad['items'] = array(472,473,474,475,476,477,478,479,481,485,486,487,692,693,1153,1179,2079,2177,2090);
|
$vad['items'] = array(472,473,474,475,476,477,478,479,481,485,486,487,692,693,1153,1179,2079,2177,2090);
|
||||||
$vad['items'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($vad['items'][rand(0,count($vad['items'])-1)]).'" LIMIT 1'));
|
$vad['items'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.mysql_real_escape_string($vad['items'][rand(0,count($vad['items'])-1)]).'" LIMIT 1'));
|
||||||
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "'.$vad['items']['name'].'"';
|
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "'.$vad['items']['name'].'"';
|
||||||
$this->pickitem($obj,$vad['items']['id'],$u->info['id'],'',$vad['dn_delete'][$vad['items']['id']]);
|
$this->pickitem($obj,$vad['items']['id'],$u->info['id'],'',$vad['dn_delete'][$vad['items']['id']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,90 +1,90 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/laba1' ) {
|
if( isset($s[1]) && $s[1] == '101/laba1' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Лаболатория
|
Сундук: Лаболатория
|
||||||
* Можно собрать случайную тактику, но не более 3 на человека за поход и не более 10 на команду
|
* Можно собрать случайную тактику, но не более 3 на человека за поход и не более 10 на команду
|
||||||
* 897 - Слиток пустынной руды
|
* 897 - Слиток пустынной руды
|
||||||
* 903 - Тысячелетний камень
|
* 903 - Тысячелетний камень
|
||||||
* 888 - Шепот гор
|
* 888 - Шепот гор
|
||||||
* 892 - Эссенция чистоты
|
* 892 - Эссенция чистоты
|
||||||
* 950 - Кожа Общего Врага
|
* 950 - Кожа Общего Врага
|
||||||
* 904 - Кристалл времен
|
* 904 - Кристалл времен
|
||||||
* 878 - Лучистый топаз
|
* 878 - Лучистый топаз
|
||||||
* 880 - Эссенция глубины
|
* 880 - Эссенция глубины
|
||||||
* 879 - Ралиэль
|
* 879 - Ралиэль
|
||||||
* 899 - Корень змеиного дерева
|
* 899 - Корень змеиного дерева
|
||||||
* 882 - Глубинный камень
|
* 882 - Глубинный камень
|
||||||
* 908 - Камень затаенного солнца
|
* 908 - Камень затаенного солнца
|
||||||
* 909 - Эссенция праведного гнева
|
* 909 - Эссенция праведного гнева
|
||||||
* 902 - Плод змеиного дерева
|
* 902 - Плод змеиного дерева
|
||||||
* 881 - Лучистый Рубин
|
* 881 - Лучистый Рубин
|
||||||
* 893 - Эссенция лунного света
|
* 893 - Эссенция лунного света
|
||||||
* 898 - Троекорень
|
* 898 - Троекорень
|
||||||
* 890 - Сгусток астрала
|
* 890 - Сгусток астрала
|
||||||
* 907 - Кристалл стабильности
|
* 907 - Кристалл стабильности
|
||||||
* 905 - Стихиалия
|
* 905 - Стихиалия
|
||||||
-- Боя
|
-- Боя
|
||||||
4243 - 897 х3
|
4243 - 897 х3
|
||||||
4244 - 903 х2
|
4244 - 903 х2
|
||||||
4245 - 888 х2
|
4245 - 888 х2
|
||||||
4246 - 892 х1
|
4246 - 892 х1
|
||||||
4247 - 879 х1 , 892 х1
|
4247 - 879 х1 , 892 х1
|
||||||
-- Защиты
|
-- Защиты
|
||||||
4248 - 950 х3
|
4248 - 950 х3
|
||||||
4249 - 904 х2
|
4249 - 904 х2
|
||||||
4250 - 878 х2
|
4250 - 878 х2
|
||||||
4251 - 880 х1
|
4251 - 880 х1
|
||||||
4252 - 880 х1 , 892 х1
|
4252 - 880 х1 , 892 х1
|
||||||
-- Крови
|
-- Крови
|
||||||
4253 - 899 х3
|
4253 - 899 х3
|
||||||
4254 - 882 х2
|
4254 - 882 х2
|
||||||
4255 - 908 х2
|
4255 - 908 х2
|
||||||
4256 - 909 х1
|
4256 - 909 х1
|
||||||
4257 - 909 х1 , 892 х1
|
4257 - 909 х1 , 892 х1
|
||||||
-- Ответа
|
-- Ответа
|
||||||
4258 - 899 х3
|
4258 - 899 х3
|
||||||
4259 - 902 х2
|
4259 - 902 х2
|
||||||
4260 - 881 х2
|
4260 - 881 х2
|
||||||
4261 - 893 х1
|
4261 - 893 х1
|
||||||
4262 - 893 х1 , 892 х1
|
4262 - 893 х1 , 892 х1
|
||||||
-- Отражения
|
-- Отражения
|
||||||
4263 - 898 х3
|
4263 - 898 х3
|
||||||
4264 - 890 х2
|
4264 - 890 х2
|
||||||
4265 - 907 х2
|
4265 - 907 х2
|
||||||
4266 - 905 х1
|
4266 - 905 х1
|
||||||
4267 - 905 х1 , 892 х1
|
4267 - 905 х1 , 892 х1
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
|
|
||||||
$vad['recept'] = array(
|
$vad['recept'] = array(
|
||||||
//Б
|
//Б
|
||||||
array( 897, 3 ),
|
array( 897, 3 ),
|
||||||
array( 903, 2 ),
|
array( 903, 2 ),
|
||||||
array( 888, 2 ),
|
array( 888, 2 ),
|
||||||
array( 892, 1 ),
|
array( 892, 1 ),
|
||||||
array( 892, 1, 892, 1 ),
|
array( 892, 1, 892, 1 ),
|
||||||
//З
|
//З
|
||||||
array( 950, 3 ),
|
array( 950, 3 ),
|
||||||
array( 904, 2 ),
|
array( 904, 2 ),
|
||||||
array( 878, 2 ),
|
array( 878, 2 ),
|
||||||
array( 880, 1 ),
|
array( 880, 1 ),
|
||||||
array( 880, 1, 892, 1 ),
|
array( 880, 1, 892, 1 ),
|
||||||
//К
|
//К
|
||||||
array( 899, 3 ),
|
array( 899, 3 ),
|
||||||
array( 882, 2 ),
|
array( 882, 2 ),
|
||||||
array( 908, 2 ),
|
array( 908, 2 ),
|
||||||
array( 909, 1 ),
|
array( 909, 1 ),
|
||||||
array( 909, 1, 892, 1 ),
|
array( 909, 1, 892, 1 ),
|
||||||
//Ответа
|
//Ответа
|
||||||
array( 899, 3 ),
|
array( 899, 3 ),
|
||||||
array( 902, 2 ),
|
array( 902, 2 ),
|
||||||
array( 881, 2 ),
|
array( 881, 2 ),
|
||||||
array( 893, 1 ),
|
array( 893, 1 ),
|
||||||
array( 893, 1, 892, 1 ),
|
array( 893, 1, 892, 1 ),
|
||||||
//Отражения
|
//Отражения
|
||||||
array( 898, 3 ),
|
array( 898, 3 ),
|
||||||
array( 890, 2 ),
|
array( 890, 2 ),
|
||||||
array( 907, 2 ),
|
array( 907, 2 ),
|
||||||
@@ -110,7 +110,7 @@ if( isset($s[1]) && $s[1] == '101/laba1' ) {
|
|||||||
if( $vad['recept'][$vad['i']][2] > 0 && $vad['tr_itm'] == true ) {
|
if( $vad['recept'][$vad['i']][2] > 0 && $vad['tr_itm'] == true ) {
|
||||||
$vad['tr_itm'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `items_users` WHERE `item_id` = "'.$vad['recept'][$vad['i']][2].'" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inTransfer` = "0" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
$vad['tr_itm'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `items_users` WHERE `item_id` = "'.$vad['recept'][$vad['i']][2].'" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inTransfer` = "0" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
||||||
if( $vad['tr_itm'][2] >= $vad['recept'][$vad['i']][3] ) {
|
if( $vad['tr_itm'][2] >= $vad['recept'][$vad['i']][3] ) {
|
||||||
//все ок
|
//все ок
|
||||||
}else{
|
}else{
|
||||||
$vad['tr_itm'] = false;
|
$vad['tr_itm'] = false;
|
||||||
}
|
}
|
||||||
@@ -125,20 +125,20 @@ if( isset($s[1]) && $s[1] == '101/laba1' ) {
|
|||||||
$vad['itm'] = $vad['itm'][rand(0,count($vad['itm'])-1)];
|
$vad['itm'] = $vad['itm'][rand(0,count($vad['itm'])-1)];
|
||||||
|
|
||||||
if( $vad['test2'][0] >= 10 ) {
|
if( $vad['test2'][0] >= 10 ) {
|
||||||
$r = 'Не удалось воспользоваться лабораторией, не более 10 раз на команду за один поход';
|
$r = 'Не удалось воспользоваться лабораторией, не более 10 раз на команду за один поход';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}elseif( $vad['test1'][0] >= 3 ) {
|
}elseif( $vad['test1'][0] >= 3 ) {
|
||||||
$r = 'Не удалось воспользоваться лабораторией, не более 3 раз на персонажа за один поход';
|
$r = 'Не удалось воспользоваться лабораторией, не более 3 раз на персонажа за один поход';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}elseif(!isset($vad['itm']['id'])) {
|
}elseif(!isset($vad['itm']['id'])) {
|
||||||
$r = 'Недостаточно ингридиентов...';
|
$r = 'Недостаточно ингридиентов...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
//Выдаем предмет
|
//Выдаем предмет
|
||||||
if( $vad['tr'][$vad['itm']['id']][1] > 0 ) {
|
if( $vad['tr'][$vad['itm']['id']][1] > 0 ) {
|
||||||
$u->deleteItemID($vad['tr'][$vad['itm']['id']][0],$u->info['id'],$vad['tr'][$vad['itm']['id']][1]);
|
$u->deleteItemID($vad['tr'][$vad['itm']['id']][0],$u->info['id'],$vad['tr'][$vad['itm']['id']][1]);
|
||||||
}
|
}
|
||||||
@@ -149,11 +149,11 @@ if( isset($s[1]) && $s[1] == '101/laba1' ) {
|
|||||||
"'.$u->info['dnow'].'","'.$u->info['id'].'","'.time().'","obj_act'.$obj['id'].'_lab","'.$obj['x'].'","'.$obj['y'].'"
|
"'.$u->info['dnow'].'","'.$u->info['id'].'","'.time().'","obj_act'.$obj['id'].'_lab","'.$obj['x'].'","'.$obj['y'].'"
|
||||||
)');
|
)');
|
||||||
$u->addItem($vad['itm']['id'],$u->info['id'],'|frompisher=101');
|
$u->addItem($vad['itm']['id'],$u->info['id'],'|frompisher=101');
|
||||||
$r = 'Вы создали предмет "'.$vad['itm']['name'].'"! Расплавив ресурсы ...';
|
$r = 'Вы создали предмет "'.$vad['itm']['name'].'"! Расплавив ресурсы ...';
|
||||||
if($u->info['sex'] == 0) {
|
if($u->info['sex'] == 0) {
|
||||||
$vad['text'] = '<b>'.$u->info['login'].'</b> создал предмет "'.$vad['itm']['name'].'" при помощи "'.$obj['name'].'".';
|
$vad['text'] = '<b>'.$u->info['login'].'</b> создал предмет "'.$vad['itm']['name'].'" при помощи "'.$obj['name'].'".';
|
||||||
}else{
|
}else{
|
||||||
$vad['text'] = '<b>'.$u->info['login'].'</b> создала предмет "'.$vad['itm']['name'].'" при помощи "'.$obj['name'].'".';
|
$vad['text'] = '<b>'.$u->info['login'].'</b> создала предмет "'.$vad['itm']['name'].'" при помощи "'.$obj['name'].'".';
|
||||||
}
|
}
|
||||||
$this->sys_chat($vad['text']);
|
$this->sys_chat($vad['text']);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/nakova' ) {
|
if( isset($s[1]) && $s[1] == '101/nakova' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Наковальня
|
Сундук: Наковальня
|
||||||
* Можно создать сущность х2 с судьбой
|
* Можно создать сущность х2 с судьбой
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то уже разбил сущность за этот поход, наковальня сломана...';
|
$r = 'Кто-то уже разбил сущность за этот поход, наковальня сломана...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,14 +25,14 @@ if( isset($s[1]) && $s[1] == '101/nakova' ) {
|
|||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
||||||
)');
|
)');
|
||||||
//Награда
|
//Награда
|
||||||
$u->deleteItem($vad['sp']['id'],$u->info['id'],1);
|
$u->deleteItem($vad['sp']['id'],$u->info['id'],1);
|
||||||
mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$vad['sp']['id'].'" LIMIT 1');
|
mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `id` = "'.$vad['sp']['id'].'" LIMIT 1');
|
||||||
$this->pickitem($obj,1035,$u->info['id'],'|sudba=-1');
|
$this->pickitem($obj,1035,$u->info['id'],'|sudba=-1');
|
||||||
$this->pickitem($obj,1035,$u->info['id'],'|sudba=-1');
|
$this->pickitem($obj,1035,$u->info['id'],'|sudba=-1');
|
||||||
$r = 'Вы использовали "'.$obj['name'].'" и разбили "Сущность" на две части';
|
$r = 'Вы использовали "'.$obj['name'].'" и разбили "Сущность" на две части';
|
||||||
}elseif( !isset($vad['sp']['id']) ) {
|
}elseif( !isset($vad['sp']['id']) ) {
|
||||||
$r = 'Для использования необходим предмет "Сущность Ресурса"';
|
$r = 'Для использования необходим предмет "Сущность Ресурса"';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/nakova2' ) {
|
if( isset($s[1]) && $s[1] == '101/nakova2' ) {
|
||||||
/*
|
/*
|
||||||
Наковальня 2
|
Наковальня 2
|
||||||
* Телепортирует на необходимую клетку х 3 , у 42
|
* Телепортирует на необходимую клетку х 3 , у 42
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
mysql_query('UPDATE `stats` SET `x` = "3",`y` = "42",`s` = "3" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `x` = "3",`y` = "42",`s` = "3" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
$r = 'Вы подошли к наковальне...';
|
$r = 'Вы подошли к наковальне...';
|
||||||
echo '<script>location.href="main.php"</script>';
|
echo '<script>location.href="main.php"</script>';
|
||||||
}
|
}
|
||||||
unset($vad);
|
unset($vad);
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/reshetka1' ) {
|
if( isset($s[1]) && $s[1] == '101/reshetka1' ) {
|
||||||
/*
|
/*
|
||||||
Решетка
|
Решетка
|
||||||
* Телепортирует на необходимую клетку
|
* Телепортирует на необходимую клетку
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => false
|
'go' => false
|
||||||
);
|
);
|
||||||
|
|
||||||
//Проверяем камни
|
//Проверяем камни
|
||||||
$vad['sp'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "1189" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" AND `inTransfer` = "0" LIMIT 1'));
|
$vad['sp'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "1189" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" AND `inTransfer` = "0" LIMIT 1'));
|
||||||
if( isset($vad['sp']['id']) ) {
|
if( isset($vad['sp']['id']) ) {
|
||||||
// Удалена проверка на группировку предметов 14.10.2015
|
// Удалена проверка на группировку предметов 14.10.2015
|
||||||
// $vad['pl'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$vad['sp']['item_id'].'" LIMIT 1'));
|
// $vad['pl'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$vad['sp']['item_id'].'" LIMIT 1'));
|
||||||
$vad['go'] = true;
|
$vad['go'] = true;
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@ if( isset($s[1]) && $s[1] == '101/reshetka1' ) {
|
|||||||
//$u->deleteItem($vad['sp']['id'],$u->info['id'],1);
|
//$u->deleteItem($vad['sp']['id'],$u->info['id'],1);
|
||||||
echo '<script>location.href="main.php"</script>';
|
echo '<script>location.href="main.php"</script>';
|
||||||
}elseif( !isset($vad['sp']['id']) ) {
|
}elseif( !isset($vad['sp']['id']) ) {
|
||||||
$r = 'Для прохода требуется предмет "Мерцающий ключ №3"';
|
$r = 'Для прохода требуется предмет "Мерцающий ключ №3"';
|
||||||
}
|
}
|
||||||
unset($vad);
|
unset($vad);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/sunduk0' ) {
|
if( isset($s[1]) && $s[1] == '101/sunduk0' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Сундук
|
Сундук: Сундук
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
@@ -11,20 +11,20 @@ if( isset($s[1]) && $s[1] == '101/sunduk0' ) {
|
|||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" LIMIT 1'));
|
||||||
$vad['test2'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
$vad['test2'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
||||||
if( $vad['test2'][0] > 0 ) {
|
if( $vad['test2'][0] > 0 ) {
|
||||||
$r = 'Вы уже обыскали "'.$obj['name'].'"...';
|
$r = 'Вы уже обыскали "'.$obj['name'].'"...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}elseif( $vad['test1'][0] > 1 ) {
|
}elseif( $vad['test1'][0] > 1 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" раньше вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" раньше вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
//Выкидываем Лучистый топаз
|
//Выкидываем Лучистый топаз
|
||||||
$vad['items'] = array(878);
|
$vad['items'] = array(878);
|
||||||
|
|
||||||
$vad['items'] = $vad['items'][rand(0,count($vad['items'])-1)];
|
$vad['items'] = $vad['items'][rand(0,count($vad['items'])-1)];
|
||||||
if( $vad['items'] != 0 ) {
|
if( $vad['items'] != 0 ) {
|
||||||
//Выбрасываем предмет
|
//Выбрасываем предмет
|
||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
||||||
)');
|
)');
|
||||||
@@ -32,12 +32,12 @@ if( isset($s[1]) && $s[1] == '101/sunduk0' ) {
|
|||||||
$vad['dn_delete'][$vad['items']] = false;
|
$vad['dn_delete'][$vad['items']] = false;
|
||||||
}
|
}
|
||||||
if( $this->pickitem($obj,$vad['items'],$u->info['id'],'',$vad['dn_delete'][$vad['items']]) ) {
|
if( $this->pickitem($obj,$vad['items'],$u->info['id'],'',$vad['dn_delete'][$vad['items']]) ) {
|
||||||
$r = 'Вы обнаружили предметы...';
|
$r = 'Вы обнаружили предметы...';
|
||||||
}else{
|
}else{
|
||||||
$r = 'Что-то пошло не так, предметы растворились...';
|
$r = 'Что-то пошло не так, предметы растворились...';
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
$r = 'Вы не нашли ничего полезного...';
|
$r = 'Вы не нашли ничего полезного...';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/sunduk1' ) {
|
if( isset($s[1]) && $s[1] == '101/sunduk1' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Сундук
|
Сундук: Сундук
|
||||||
* Можно найти Сталь , Мифрил , Пустые бутылки
|
* Можно найти Сталь , Мифрил , Пустые бутылки
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
@@ -12,15 +12,15 @@ if( isset($s[1]) && $s[1] == '101/sunduk1' ) {
|
|||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" LIMIT 1'));
|
||||||
$vad['test2'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
$vad['test2'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
||||||
if( $vad['test2'][0] > 0 ) {
|
if( $vad['test2'][0] > 0 ) {
|
||||||
$r = 'Вы уже обыскали "'.$obj['name'].'"...';
|
$r = 'Вы уже обыскали "'.$obj['name'].'"...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}elseif( $vad['test1'][0] > 1 ) {
|
}elseif( $vad['test1'][0] > 1 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" раньше вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" раньше вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
//Выкидываем бутылку, мифрил, либо сталь
|
//Выкидываем бутылку, мифрил, либо сталь
|
||||||
$vad['items'] = array(4272,1189);
|
$vad['items'] = array(4272,1189);
|
||||||
$vad['dn_delete'] = array(
|
$vad['dn_delete'] = array(
|
||||||
1189 => true
|
1189 => true
|
||||||
@@ -28,7 +28,7 @@ if( isset($s[1]) && $s[1] == '101/sunduk1' ) {
|
|||||||
|
|
||||||
$vad['items'] = $vad['items'][rand(0,count($vad['items'])-1)];
|
$vad['items'] = $vad['items'][rand(0,count($vad['items'])-1)];
|
||||||
if( $vad['items'] != 0 ) {
|
if( $vad['items'] != 0 ) {
|
||||||
//Выбрасываем предмет
|
//Выбрасываем предмет
|
||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
||||||
)');
|
)');
|
||||||
@@ -36,12 +36,12 @@ if( isset($s[1]) && $s[1] == '101/sunduk1' ) {
|
|||||||
$vad['dn_delete'][$vad['items']] = false;
|
$vad['dn_delete'][$vad['items']] = false;
|
||||||
}
|
}
|
||||||
if( $this->pickitem($obj,$vad['items'],$u->info['id'],'',$vad['dn_delete'][$vad['items']]) ) {
|
if( $this->pickitem($obj,$vad['items'],$u->info['id'],'',$vad['dn_delete'][$vad['items']]) ) {
|
||||||
$r = 'Вы обнаружили предметы...';
|
$r = 'Вы обнаружили предметы...';
|
||||||
}else{
|
}else{
|
||||||
$r = 'Что-то пошло не так, предметы растворились...';
|
$r = 'Что-то пошло не так, предметы растворились...';
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
$r = 'Вы не нашли ничего полезного...';
|
$r = 'Вы не нашли ничего полезного...';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,52 +1,52 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/sunduk2' ) {
|
if( isset($s[1]) && $s[1] == '101/sunduk2' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Сундук
|
Сундук: Сундук
|
||||||
* Можно найти Отворяющая печать №3 1175
|
* Можно найти Отворяющая печать №3 1175
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
|
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" раньше вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" раньше вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
//Выкидываем Отворяющая печать №3
|
//Выкидываем Отворяющая печать №3
|
||||||
$vad['items'] = array(1175);
|
$vad['items'] = array(1175);
|
||||||
|
|
||||||
$vad['items'] = $vad['items'][rand(0,count($vad['items'])-1)];
|
$vad['items'] = $vad['items'][rand(0,count($vad['items'])-1)];
|
||||||
if( $vad['items'] != 0 && rand(1,100) < 80) {
|
if( $vad['items'] != 0 && rand(1,100) < 80) {
|
||||||
// Выбрасываем предмет
|
// Выбрасываем предмет
|
||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
||||||
)');
|
)');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
//откуда тут сущности? обломятся!
|
//откуда тут сущности? обломятся!
|
||||||
if( rand(0,100) < 10 ) {
|
if( rand(0,100) < 10 ) {
|
||||||
//Сущность сапог
|
//Сущность сапог
|
||||||
$this->pickitem($obj,4279,0);
|
$this->pickitem($obj,4279,0);
|
||||||
}
|
}
|
||||||
if( rand(0,100) < 10 ) {
|
if( rand(0,100) < 10 ) {
|
||||||
//Сущность щита
|
//Сущность щита
|
||||||
$this->pickitem($obj,4269,0);
|
$this->pickitem($obj,4269,0);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
if( $this->pickitem($obj,$vad['items'],0) ) {
|
if( $this->pickitem($obj,$vad['items'],0) ) {
|
||||||
$r = 'Вы обнаружили предметы...';
|
$r = 'Вы обнаружили предметы...';
|
||||||
}else{
|
}else{
|
||||||
$r = 'Что-то пошло не так, предметы растворились...';
|
$r = 'Что-то пошло не так, предметы растворились...';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","false"
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","false"
|
||||||
)');
|
)');
|
||||||
$r = 'Вы не нашли ничего полезного...';
|
$r = 'Вы не нашли ничего полезного...';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/sunduk3' ) {
|
if( isset($s[1]) && $s[1] == '101/sunduk3' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Сундук
|
Сундук: Сундук
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ if( isset($s[1]) && $s[1] == '101/sunduk3' ) {
|
|||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
||||||
)');
|
)');
|
||||||
if( rand(1,100) > 20 ) {
|
if( rand(1,100) > 20 ) {
|
||||||
$r = 'Обыскав "'.$obj['name'].'" вы ничего не обнаружили...';
|
$r = 'Обыскав "'.$obj['name'].'" вы ничего не обнаружили...';
|
||||||
}else{
|
}else{
|
||||||
$vad['items'] = array(4279,4269);
|
$vad['items'] = array(4279,4269);
|
||||||
if( rand(1,100) < 9 ) {
|
if( rand(1,100) < 9 ) {
|
||||||
@@ -28,7 +28,7 @@ if( isset($s[1]) && $s[1] == '101/sunduk3' ) {
|
|||||||
if( !isset($vad['dn_delete'][$vad['items']['id']]) ) {
|
if( !isset($vad['dn_delete'][$vad['items']['id']]) ) {
|
||||||
$vad['dn_delete'][$vad['items']['id']] = false;
|
$vad['dn_delete'][$vad['items']['id']] = false;
|
||||||
}
|
}
|
||||||
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "'.$vad['items']['name'].'"';
|
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "'.$vad['items']['name'].'"';
|
||||||
$this->pickitem($obj,$vad['items']['id'],0,'',$vad['dn_delete'][$vad['items']['id']]);
|
$this->pickitem($obj,$vad['items']['id'],0,'',$vad['dn_delete'][$vad['items']['id']]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/sunduk4' ) {
|
if( isset($s[1]) && $s[1] == '101/sunduk4' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Сундук
|
Сундук: Сундук
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ if( isset($s[1]) && $s[1] == '101/sunduk4' ) {
|
|||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'","'.$vad['bad'].'"
|
||||||
)');
|
)');
|
||||||
if( rand(1,100) > 50 ) {
|
if( rand(1,100) > 50 ) {
|
||||||
$r = 'Обыскав "'.$obj['name'].'" вы ничего не обнаружили...';
|
$r = 'Обыскав "'.$obj['name'].'" вы ничего не обнаружили...';
|
||||||
}else{
|
}else{
|
||||||
$vad['items'] = array(882);
|
$vad['items'] = array(882);
|
||||||
if( rand(1,40) < 16 ) {
|
if( rand(1,40) < 16 ) {
|
||||||
@@ -28,7 +28,7 @@ if( isset($s[1]) && $s[1] == '101/sunduk4' ) {
|
|||||||
if( !isset($vad['dn_delete'][$vad['items']['id']]) ) {
|
if( !isset($vad['dn_delete'][$vad['items']['id']]) ) {
|
||||||
$vad['dn_delete'][$vad['items']['id']] = false;
|
$vad['dn_delete'][$vad['items']['id']] = false;
|
||||||
}
|
}
|
||||||
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "'.$vad['items']['name'].'"';
|
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "'.$vad['items']['name'].'"';
|
||||||
$this->pickitem($obj,$vad['items']['id'],0,'',$vad['dn_delete'][$vad['items']['id']]);
|
$this->pickitem($obj,$vad['items']['id'],0,'',$vad['dn_delete'][$vad['items']['id']]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/telejka' ) {
|
if( isset($s[1]) && $s[1] == '101/telejka' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Тележка
|
Сундук: Тележка
|
||||||
* Можно получить один из двух ресурсов
|
* Можно получить один из двух ресурсов
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" до вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20,14 +20,14 @@ if( isset($s[1]) && $s[1] == '101/telejka' ) {
|
|||||||
)');
|
)');
|
||||||
if( rand(0,100) < 80 ) {
|
if( rand(0,100) < 80 ) {
|
||||||
if( rand(0,100) < 51 ) {
|
if( rand(0,100) < 51 ) {
|
||||||
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "Лучистое серебро"';
|
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "Лучистое серебро"';
|
||||||
$this->pickitem($obj,895,$u->info['id']);
|
$this->pickitem($obj,895,$u->info['id']);
|
||||||
}else{
|
}else{
|
||||||
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "Серебро"';
|
$r = 'Обыскав "'.$obj['name'].'" вы обнаружили "Серебро"';
|
||||||
$this->pickitem($obj,875,$u->info['id']);
|
$this->pickitem($obj,875,$u->info['id']);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
$r = 'Вы ничего не смогли найти...';
|
$r = 'Вы ничего не смогли найти...';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/viboina' ) {
|
if( isset($s[1]) && $s[1] == '101/viboina' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Выбоина
|
Сундук: Выбоина
|
||||||
* Можно найти Сталь , Мифрил , Пустые бутылки
|
* Можно найти Сталь , Мифрил , Пустые бутылки
|
||||||
* Может отнять 100-1000 НР
|
* Может отнять 100-1000 НР
|
||||||
* Могут использовать только 2 человека из команды
|
* Могут использовать только 2 человека из команды
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
@@ -18,7 +18,7 @@ if( isset($s[1]) && $s[1] == '101/viboina' ) {
|
|||||||
$vad['test5'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'_bad_use" AND `uid` != "'.$u->info['id'].'" LIMIT 1'));
|
$vad['test5'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'_bad_use" AND `uid` != "'.$u->info['id'].'" LIMIT 1'));
|
||||||
|
|
||||||
if( !isset($vad['test3']['id']) ) {
|
if( !isset($vad['test3']['id']) ) {
|
||||||
//Определяем ловушка или нет
|
//Определяем ловушка или нет
|
||||||
if( rand(0,100) < 50 ) {
|
if( rand(0,100) < 50 ) {
|
||||||
$vad['bad'] = 1;
|
$vad['bad'] = 1;
|
||||||
}else{
|
}else{
|
||||||
@@ -32,33 +32,33 @@ if( isset($s[1]) && $s[1] == '101/viboina' ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( $vad['test2'][0] > 0 ) {
|
if( $vad['test2'][0] > 0 ) {
|
||||||
//$r = 'Вы уже обыскали здесь все...';
|
//$r = 'Вы уже обыскали здесь все...';
|
||||||
$r = 'Кажется, вы здесь побывали раньше...';
|
$r = 'Кажется, вы здесь побывали раньше...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}elseif( $vad['test1'][0] > 1 || ( $vad['test4'] == 0 && $vad['test5'] >= 2 ) ) {
|
}elseif( $vad['test1'][0] > 1 || ( $vad['test4'] == 0 && $vad['test5'] >= 2 ) ) {
|
||||||
$r = 'Кажется, кто-то здесь побывал раньше вас...';
|
$r = 'Кажется, кто-то здесь побывал раньше вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( $vad['bad'] == 1 && $vad['go'] == true ) {
|
if( $vad['bad'] == 1 && $vad['go'] == true ) {
|
||||||
//Вы угодили в ловушку
|
//Вы угодили в ловушку
|
||||||
$vad['test3'] = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'_bad_use" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
$vad['test3'] = mysql_fetch_array(mysql_query('SELECT `id`,`vals` FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'_bad_use" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
||||||
if( !isset($vad['test3']['id']) ) {
|
if( !isset($vad['test3']['id']) ) {
|
||||||
//Ловушка на 50% НР , Если НР баольше 2 ед.
|
//Ловушка на 50% НР , Если НР баольше 2 ед.
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'_bad_use",""
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'_bad_use",""
|
||||||
)');
|
)');
|
||||||
$r = 'В сундуке была ловушка установленная одним из обитателей подземелья!';
|
$r = 'В сундуке была ловушка установленная одним из обитателей подземелья!';
|
||||||
$vad['min_hp'] = round(2+$u->stats['hpNow']/4);
|
$vad['min_hp'] = round(2+$u->stats['hpNow']/4);
|
||||||
$u->stats['hpNow'] -= $vad['min_hp'];
|
$u->stats['hpNow'] -= $vad['min_hp'];
|
||||||
if( $u->stats['hpNow'] < 0 ) {
|
if( $u->stats['hpNow'] < 0 ) {
|
||||||
$u->stats['hpNow'] = 0;
|
$u->stats['hpNow'] = 0;
|
||||||
}
|
}
|
||||||
if($u->info['sex'] == 0) {
|
if($u->info['sex'] == 0) {
|
||||||
$vad['text'] = '[img[items/trap.gif]] <b>'.$u->info['login'].'</b> угодил в ловушку оставленную в "'.$obj['name'].'". <b>-'.$vad['min_hp'].'</b> ['.floor($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']';
|
$vad['text'] = '[img[items/trap.gif]] <b>'.$u->info['login'].'</b> угодил в ловушку оставленную в "'.$obj['name'].'". <b>-'.$vad['min_hp'].'</b> ['.floor($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']';
|
||||||
}else{
|
}else{
|
||||||
$vad['text'] = '[img[items/trap.gif]] <b>'.$u->info['login'].'</b> угодила в ловушку оставленную в "'.$obj['name'].'". <b>-'.$vad['min_hp'].'</b> ['.floor($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']';
|
$vad['text'] = '[img[items/trap.gif]] <b>'.$u->info['login'].'</b> угодила в ловушку оставленную в "'.$obj['name'].'". <b>-'.$vad['min_hp'].'</b> ['.floor($u->stats['hpNow']).'/'.round($u->stats['hpAll']).']';
|
||||||
}
|
}
|
||||||
$this->sys_chat($vad['text']);
|
$this->sys_chat($vad['text']);
|
||||||
$u->info['hpNow'] = $u->stats['hpNow'];
|
$u->info['hpNow'] = $u->stats['hpNow'];
|
||||||
@@ -69,22 +69,22 @@ if( isset($s[1]) && $s[1] == '101/viboina' ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
//Выкидываем бутылку, мифрил, либо сталь
|
//Выкидываем бутылку, мифрил, либо сталь
|
||||||
$vad['items'] = array(2,877,896);
|
$vad['items'] = array(2,877,896);
|
||||||
|
|
||||||
$vad['items'] = $vad['items'][rand(0,count($vad['items'])-1)];
|
$vad['items'] = $vad['items'][rand(0,count($vad['items'])-1)];
|
||||||
if( $vad['items'] != 0 ) {
|
if( $vad['items'] != 0 ) {
|
||||||
//Выбрасываем предмет
|
//Выбрасываем предмет
|
||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
||||||
)');
|
)');
|
||||||
if( $this->pickitem($obj,$vad['items'],$u->info['id']) ) {
|
if( $this->pickitem($obj,$vad['items'],$u->info['id']) ) {
|
||||||
$r = 'Вы обнаружили предметы...';
|
$r = 'Вы обнаружили предметы...';
|
||||||
}else{
|
}else{
|
||||||
$r = 'Что-то пошло не так, предметы растворились...';
|
$r = 'Что-то пошло не так, предметы растворились...';
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
$r = 'Вы не нашли ничего полезного...';
|
$r = 'Вы не нашли ничего полезного...';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,34 +1,34 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/viboina2' ) {
|
if( isset($s[1]) && $s[1] == '101/viboina2' ) {
|
||||||
/*
|
/*
|
||||||
Выбоина
|
Выбоина
|
||||||
* Телепортирует на необходимую клетку х 4 , у 26
|
* Телепортирует на необходимую клетку х 4 , у 26
|
||||||
* Для прохода требуется 1 Линза Портала - 4298
|
* Для прохода требуется 1 Линза Портала - 4298
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => false
|
'go' => false
|
||||||
);
|
);
|
||||||
|
|
||||||
//Проверяем камни
|
//Проверяем камни
|
||||||
$vad['sp'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "4298" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" AND `inTransfer` = "0" LIMIT 1'));
|
$vad['sp'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "4298" AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" AND `inOdet` = "0" AND `inShop` = "0" AND `inTransfer` = "0" LIMIT 1'));
|
||||||
if( isset($vad['sp']['id']) ) {
|
if( isset($vad['sp']['id']) ) {
|
||||||
// Удалена проверка на группировку предметов 14.10.2015
|
// Удалена проверка на группировку предметов 14.10.2015
|
||||||
// $vad['pl'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$vad['sp']['item_id'].'" LIMIT 1')); // Берем название "Линза Портала" и все.. смысл запроса... статика.
|
// $vad['pl'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_main` WHERE `id` = "'.$vad['sp']['item_id'].'" LIMIT 1')); // Берем название "Линза Портала" и все.. смысл запроса... статика.
|
||||||
$vad['go'] = true;
|
$vad['go'] = true;
|
||||||
}
|
}
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
mysql_query('UPDATE `stats` SET `x` = "4",`y` = "26",`s` = "4" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `x` = "4",`y` = "26",`s` = "4" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
//$u->deleteItem($vad['sp']['id'],$u->info['id'],1);// Убрано 14.10.2015
|
//$u->deleteItem($vad['sp']['id'],$u->info['id'],1);// Убрано 14.10.2015
|
||||||
$upd = mysql_query('UPDATE `items_users` SET `lastUPD`="'.time().'",`delete`="'.time().'" WHERE `id`="'.$vad['sp']['id'].'" LIMIT 1');
|
$upd = mysql_query('UPDATE `items_users` SET `lastUPD`="'.time().'",`delete`="'.time().'" WHERE `id`="'.$vad['sp']['id'].'" LIMIT 1');
|
||||||
if($upd){
|
if($upd){
|
||||||
$r = 'Вы переместились при помощи "Линза Портала" на другую сторону';
|
$r = 'Вы переместились при помощи "Линза Портала" на другую сторону';
|
||||||
echo '<script>location.href="main.php"</script>';
|
echo '<script>location.href="main.php"</script>';
|
||||||
} else {
|
} else {
|
||||||
$r = 'Что-то пошло не так, попробуйте позже.';
|
$r = 'Что-то пошло не так, попробуйте позже.';
|
||||||
}
|
}
|
||||||
}elseif( !isset($vad['sp']['id']) ) {
|
}elseif( !isset($vad['sp']['id']) ) {
|
||||||
$r = 'Для перемещения требуется "Линза Портала"';
|
$r = 'Для перемещения требуется "Линза Портала"';
|
||||||
}
|
}
|
||||||
unset($vad);
|
unset($vad);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/viboina3' ) {
|
if( isset($s[1]) && $s[1] == '101/viboina3' ) {
|
||||||
/*
|
/*
|
||||||
Выбоина
|
Выбоина
|
||||||
* Телепортирует на необходимую клетку х 4 , у 25
|
* Телепортирует на необходимую клетку х 4 , у 25
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
mysql_query('UPDATE `stats` SET `x` = "4",`y` = "25",`s` = "2" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `x` = "4",`y` = "25",`s` = "2" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
$r = 'Вы перешли на другую сторону завала';
|
$r = 'Вы перешли на другую сторону завала';
|
||||||
echo '<script>location.href="main.php"</script>';
|
echo '<script>location.href="main.php"</script>';
|
||||||
}
|
}
|
||||||
unset($vad);
|
unset($vad);
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '101/viboina4' ) {
|
if( isset($s[1]) && $s[1] == '101/viboina4' ) {
|
||||||
/*
|
/*
|
||||||
Выбоина
|
Выбоина
|
||||||
* Телепортирует на необходимую клетку х 4 , у 27
|
* Телепортирует на необходимую клетку х 4 , у 27
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
mysql_query('UPDATE `stats` SET `x` = "4",`y` = "27",`s` = "2" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `x` = "4",`y` = "27",`s` = "2" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
$r = 'Вы перешли на другую сторону завала';
|
$r = 'Вы перешли на другую сторону завала';
|
||||||
echo '<script>location.href="main.php"</script>';
|
echo '<script>location.href="main.php"</script>';
|
||||||
}
|
}
|
||||||
unset($vad);
|
unset($vad);
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '104/sunduk1' ) {
|
if( isset($s[1]) && $s[1] == '104/sunduk1' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Сундук
|
Сундук: Сундук
|
||||||
* Можно найти Сталь , Мифрил , Пустые бутылки
|
* Можно найти Сталь , Мифрил , Пустые бутылки
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
@@ -12,15 +12,15 @@ if( isset($s[1]) && $s[1] == '104/sunduk1' ) {
|
|||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" LIMIT 1'));
|
||||||
$vad['test2'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
$vad['test2'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `vars` = "obj_act'.$obj['id'].'" AND `dn` = "'.$u->info['dnow'].'" AND `uid` = "'.$u->info['id'].'" LIMIT 1'));
|
||||||
if( $vad['test2'][0] > 0 ) {
|
if( $vad['test2'][0] > 0 ) {
|
||||||
$r = 'Вы уже обыскали "'.$obj['name'].'"...';
|
$r = 'Вы уже обыскали "'.$obj['name'].'"...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}elseif( $vad['test1'][0] > 1 ) {
|
}elseif( $vad['test1'][0] > 1 ) {
|
||||||
$r = 'Кто-то обыскал "'.$obj['name'].'" раньше вас...';
|
$r = 'Кто-то обыскал "'.$obj['name'].'" раньше вас...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( $vad['go'] == true ) {
|
if( $vad['go'] == true ) {
|
||||||
//Выкидываем бутылку, мифрил, либо сталь
|
//Выкидываем бутылку, мифрил, либо сталь
|
||||||
$vad['items'] = array(
|
$vad['items'] = array(
|
||||||
724,724,724,724,724,724,724,724,724,724,724,724,724,724,
|
724,724,724,724,724,724,724,724,724,724,724,724,724,724,
|
||||||
2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,
|
2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,2390,
|
||||||
@@ -37,7 +37,7 @@ if( isset($s[1]) && $s[1] == '104/sunduk1' ) {
|
|||||||
$vad['items'] = 724;
|
$vad['items'] = 724;
|
||||||
}
|
}
|
||||||
if( $vad['items'] != 0 ) {
|
if( $vad['items'] != 0 ) {
|
||||||
//Выбрасываем предмет
|
//Выбрасываем предмет
|
||||||
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
mysql_query('INSERT INTO `dungeon_actions` (`dn`,`time`,`x`,`y`,`uid`,`vars`,`vals`) VALUES (
|
||||||
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
"'.$u->info['dnow'].'","'.time().'","'.$obj['x'].'","'.$obj['y'].'","'.$u->info['id'].'","obj_act'.$obj['id'].'",""
|
||||||
)');
|
)');
|
||||||
@@ -45,12 +45,12 @@ if( isset($s[1]) && $s[1] == '104/sunduk1' ) {
|
|||||||
$vad['dn_delete'][$vad['items']] = false;
|
$vad['dn_delete'][$vad['items']] = false;
|
||||||
}
|
}
|
||||||
if( $this->pickitem($obj,$vad['items'],$u->info['id'],'') ) {
|
if( $this->pickitem($obj,$vad['items'],$u->info['id'],'') ) {
|
||||||
$r = 'Вы обнаружили предметы...';
|
$r = 'Вы обнаружили предметы...';
|
||||||
}else{
|
}else{
|
||||||
$r = 'Что-то пошло не так, предметы растворились...';
|
$r = 'Что-то пошло не так, предметы растворились...';
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
$r = 'Вы не нашли ничего полезного...';
|
$r = 'Вы не нашли ничего полезного...';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '106/btn1' ) {
|
if( isset($s[1]) && $s[1] == '106/btn1' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Кровавый подземник (4561)
|
Сундук: Кровавый подземник (4561)
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
$vad['test1'] = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `dungeon_actions` WHERE `dn` = "'.$u->info['dnow'].'" AND `vars` = "obj_act'.$obj['id'].'" LIMIT 1'));
|
||||||
if( $vad['test1'][0] > 0 ) {
|
if( $vad['test1'][0] > 0 ) {
|
||||||
$r = 'Вы уже нажали на "'.$obj['name'].'"...';
|
$r = 'Вы уже нажали на "'.$obj['name'].'"...';
|
||||||
$vad['go'] = false;
|
$vad['go'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ if( isset($s[1]) && $s[1] == '106/btn1' ) {
|
|||||||
if( !isset($vad['dn_delete'][$vad['items']['id']]) ) {
|
if( !isset($vad['dn_delete'][$vad['items']['id']]) ) {
|
||||||
$vad['dn_delete'][$vad['items']['id']] = false;
|
$vad['dn_delete'][$vad['items']['id']] = false;
|
||||||
}
|
}
|
||||||
$r = 'Нажав на "'.$obj['name'].'" вы получили "'.$vad['items']['name'].'".';
|
$r = 'Нажав на "'.$obj['name'].'" вы получили "'.$vad['items']['name'].'".';
|
||||||
$this->pickitem($obj,$vad['items']['id'],0,'',$vad['dn_delete'][$vad['items']['id']]);
|
$this->pickitem($obj,$vad['items']['id'],0,'',$vad['dn_delete'][$vad['items']['id']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '106/door1' ) {
|
if( isset($s[1]) && $s[1] == '106/door1' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Кровавый подземник (4561)
|
Сундук: Кровавый подземник (4561)
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
@@ -14,7 +14,7 @@ if( isset($s[1]) && $s[1] == '106/door1' ) {
|
|||||||
)');
|
)');
|
||||||
$vad['qst'] = mysql_fetch_array(mysql_query('SELECT * FROM `dialog_act` WHERE `uid` = "'.$u->info['id'].'" AND `var` = "noobqst1" AND `val` = 1 LIMIT 1'));
|
$vad['qst'] = mysql_fetch_array(mysql_query('SELECT * FROM `dialog_act` WHERE `uid` = "'.$u->info['id'].'" AND `var` = "noobqst1" AND `val` = 1 LIMIT 1'));
|
||||||
if(!isset($vad['qst']['id'])) {
|
if(!isset($vad['qst']['id'])) {
|
||||||
$r = 'Дверь закрыта. Сначала выполните задания Учителя.';
|
$r = 'Дверь закрыта. Сначала выполните задания Учителя.';
|
||||||
}else{
|
}else{
|
||||||
mysql_query('UPDATE `stats` SET `x` = -2,`y` = 6,`s` = 1 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `x` = -2,`y` = 6,`s` = 1 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
header('location: main.php');
|
header('location: main.php');
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '106/door2' ) {
|
if( isset($s[1]) && $s[1] == '106/door2' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Кровавый подземник (4561)
|
Сундук: Кровавый подземник (4561)
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
@@ -14,7 +14,7 @@ if( isset($s[1]) && $s[1] == '106/door2' ) {
|
|||||||
)');
|
)');
|
||||||
$vad['qst'] = mysql_fetch_array(mysql_query('SELECT * FROM `dialog_act` WHERE `uid` = "'.$u->info['id'].'" AND `var` = "noobqst1" AND `val` = 1 LIMIT 1'));
|
$vad['qst'] = mysql_fetch_array(mysql_query('SELECT * FROM `dialog_act` WHERE `uid` = "'.$u->info['id'].'" AND `var` = "noobqst1" AND `val` = 1 LIMIT 1'));
|
||||||
if(!isset($vad['qst']['id'])) {
|
if(!isset($vad['qst']['id'])) {
|
||||||
$r = 'Дверь закрыта. Сначала выполните задания Учителя.';
|
$r = 'Дверь закрыта. Сначала выполните задания Учителя.';
|
||||||
}else{
|
}else{
|
||||||
mysql_query('UPDATE `stats` SET `x` = -2,`y` = 1,`s` = 3 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `x` = -2,`y` = 1,`s` = 3 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
header('location: main.php');
|
header('location: main.php');
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?
|
<?
|
||||||
if( isset($s[1]) && $s[1] == '106/door3' ) {
|
if( isset($s[1]) && $s[1] == '106/door3' ) {
|
||||||
/*
|
/*
|
||||||
Сундук: Кровавый подземник (4561)
|
Сундук: Кровавый подземник (4561)
|
||||||
*/
|
*/
|
||||||
//Все переменные сохранять в массиве $vad !
|
//Все переменные сохранять в массиве $vad !
|
||||||
$vad = array(
|
$vad = array(
|
||||||
'go' => true
|
'go' => true
|
||||||
);
|
);
|
||||||
@@ -17,29 +17,29 @@ if( isset($s[1]) && $s[1] == '106/door3' ) {
|
|||||||
$vad['itm'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = 724 OR `item_id` = 4704) LIMIT 1'));
|
$vad['itm'] = mysql_fetch_array(mysql_query('SELECT * FROM `items_users` WHERE `uid` = "'.$u->info['id'].'" AND (`item_id` = 724 OR `item_id` = 4704) LIMIT 1'));
|
||||||
|
|
||||||
if(!isset($vad['qst']['id']) || !isset($vad['itm']['id'])) {
|
if(!isset($vad['qst']['id']) || !isset($vad['itm']['id'])) {
|
||||||
$r = 'Дверь закрыта. Сначала выполните задания Учителя и купите Футболку с Эликсиром.';
|
$r = 'Дверь закрыта. Сначала выполните задания Учителя и купите Футболку с Эликсиром.';
|
||||||
}else{
|
}else{
|
||||||
//Начало обучения
|
//Начало обучения
|
||||||
$humor = array(
|
$humor = array(
|
||||||
0 => array(
|
0 => array(
|
||||||
':maniac: Сильно не бейте ;)',':beggar: Будет попрошайничать - бейте!',':pal: Возможно светлый!',
|
':maniac: Сильно не бейте ;)',':beggar: Будет попрошайничать - бейте!',':pal: Возможно светлый!',
|
||||||
':vamp: Возможно темный!',':susel: Судя по здоровенному бицепсу - это мужик!',':duel: И сразу же кинулся в бой!',
|
':vamp: Возможно темный!',':susel: Судя по здоровенному бицепсу - это мужик!',':duel: И сразу же кинулся в бой!',
|
||||||
':friday: Не долго думав он начал искать собутыльника!',':doc: Лекарь: Новичок! Да, да! Ты! Если тебя сломают - у знахаря тебя соберут обратно!'
|
':friday: Не долго думав он начал искать собутыльника!',':doc: Лекарь: Новичок! Да, да! Ты! Если тебя сломают - у знахаря тебя соберут обратно!'
|
||||||
),
|
),
|
||||||
1 => array(
|
1 => array(
|
||||||
':maniac: Помните! Девочек не бьем ;)',':nail: Она красит ногти, не отвлекайте все сразу ;)',':pal: Возможно светлая!',
|
':maniac: Помните! Девочек не бьем ;)',':nail: Она красит ногти, не отвлекайте все сразу ;)',':pal: Возможно светлая!',
|
||||||
':vamp: Возможно темная!',':rev: Судя по красивой одежде - это женщина!',':hug: И сразу же кинулась всех целовать!',
|
':vamp: Возможно темная!',':rev: Судя по красивой одежде - это женщина!',':hug: И сразу же кинулась всех целовать!',
|
||||||
':angel2: Ангел сошел с небес...'
|
':angel2: Ангел сошел с небес...'
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$humor = $humor[$u->info['sex']];
|
$humor = $humor[$u->info['sex']];
|
||||||
//$u->info['fnq'] = 1;
|
//$u->info['fnq'] = 1;
|
||||||
//mysql_query('UPDATE `users` SET `fnq` = "'.$u->info['fnq'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
//mysql_query('UPDATE `users` SET `fnq` = "'.$u->info['fnq'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
//Отправляем сообщение в чат о новичке
|
//Отправляем сообщение в чат о новичке
|
||||||
mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = 4703');
|
mysql_query('UPDATE `items_users` SET `delete` = "'.time().'" WHERE `uid` = "'.$u->info['id'].'" AND `delete` = 0 AND `item_id` = 4703');
|
||||||
mysql_query('UPDATE `users` SET `room` = 4 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
mysql_query('UPDATE `users` SET `room` = 4 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
mysql_query('UPDATE `stats` SET `hpNow` = 1000,`mpNow` = 1000,`dn` = 0 , `dnow` = 0 , `x` = 0 , `y` = 0 , `s` = 0 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
mysql_query('UPDATE `stats` SET `hpNow` = 1000,`mpNow` = 1000,`dn` = 0 , `dnow` = 0 , `x` = 0 , `y` = 0 , `s` = 0 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
$u->send('','','','','','В нашем мире появился новый игрок "<b>' . $u->info['login'] . '</b>"! '.$humor[rand(0,count($humor)-1)].'',time(),6,0,0,0,1,0);
|
$u->send('','','','','','В нашем мире появился новый игрок "<b>' . $u->info['login'] . '</b>"! '.$humor[rand(0,count($humor)-1)].'',time(),6,0,0,0,1,0);
|
||||||
//mysql_query('UPDATE `stats` SET `x` = 0,`y` = 5 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
//mysql_query('UPDATE `stats` SET `x` = 0,`y` = 5 WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
|
||||||
header('location: main.php');
|
header('location: main.php');
|
||||||
die();
|
die();
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user