game/modules_data/_newanimal.php

457 lines
20 KiB
PHP
Raw Permalink Normal View History

2022-06-06 21:30:34 +00:00
<?php
2023-12-01 21:05:11 +00:00
echo "<script>const elem = document.getElementById('se-pre-con');elem.parentNode.removeChild(elem);</script>";
if (!defined('GAME')) {
die();
2022-06-06 21:30:34 +00:00
}
2023-12-01 21:05:11 +00:00
$slot = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal_slot` WHERE `uid` = "' . $u->info['id'] . '" LIMIT 1'));
if (!isset($slot['id'])) {
if (mysql_query('INSERT INTO `users_animal_slot` ( `uid`,`slots`,`ekr` ) VALUES ( "' . $u->info['id'] . '","2","0" )')) {
$slot = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal_slot` WHERE `uid` = "' . $u->info['id'] . '" LIMIT 1'));
} else {
$u->error = 'Ошибка в работе базы данных...';
}
2022-06-06 21:30:34 +00:00
}
$slot['price_next'] = 5;
2023-12-01 21:05:11 +00:00
$petox = mysql_fetch_array(mysql_query('SELECT * FROM `obraz_pet` WHERE `uid` = "' . $u->info['id'] . '" LIMIT 1'));
2022-06-06 21:30:34 +00:00
$petox = $petox[0];
2023-12-01 21:05:11 +00:00
$an_eda = [
0.05,
0.07,
0.10,
0.15,
0.20,
0.30,
0.40,
0.50,
0.60,
0.70,
0.80,
1.00,
1.50,
2.00,
2.50,
3.00,
3.50,
4.00,
4.50,
5.00,
5.50,
7.00,
];
2022-06-06 21:30:34 +00:00
2023-12-01 21:05:11 +00:00
function en_ru($txt)
{
$g = false;
$en = preg_match("/^(([0-9a-zA-Z _-])+)$/i", $txt);
$ru = preg_match("/^(([0-9а-яА-Я _-])+)$/i", $txt);
if (($ru && $en) || (!$ru && !$en)) {
$g = true;
}
return $g;
2022-06-06 21:30:34 +00:00
}
2023-12-01 21:05:11 +00:00
2022-06-06 21:30:34 +00:00
//
2023-12-01 21:05:11 +00:00
function testBad($txt)
{
$white = '-_ 0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю';
$r = false;
$i = 0;
while ($i != -1) {
if (isset($txt[$i])) {
$g = false;
$j = 0;
while ($j != -1) {
if (isset($white[$j])) {
if ($white[$j] == $txt[$i]) {
$g = true;
}
} else {
$j = -2;
}
$j++;
}
if (!$g) {
$r = true;
}
} else {
$i = -2;
}
$i++;
}
return $r;
2022-06-06 21:30:34 +00:00
}
2023-12-01 21:05:11 +00:00
function is_login_an($login)
{
$r = true;
//
$login = htmlspecialchars($login, null);
//
$bad = [
'Мусорщик' => 1,
'Мироздатель' => 1,
];
//
if (isset($login_db['id']) || isset($login_an_db['id']) || isset($bad[$login])) {
$r = false;
} else {
$true = true;
//
/*
Логин может содержать от 2 до 16 символов, и состоять только из букв русского ИЛИ английского алфавита, цифр, символов '_', '-' и пробела.
Логин не может начинаться или заканчиваться символами '_', '-' или пробелом.
*/
//
$login = str_replace(' ', ' ', $login);
$login = str_replace('%', ' ', $login);
$login = str_replace('&nbsp;', ' ', $login);
//
if (strlen($login) > 16) {
$true = false;
} elseif (strlen($login) < 2) {
$true = false;
} elseif (strripos($login, ' ') == true) {
$true = false;
} elseif (substr($login, 1) == ' ' || substr($login, -1) == ' ') {
$true = false;
} elseif (substr($login, 1) == '-' || substr($login, -1) == '-') {
$true = false;
} elseif (substr($login, 1) == '_' || substr($login, -1) == '_') {
$true = false;
} elseif (testBad($login) == true) {
$true = false;
} elseif (en_ru(str_replace('ё', 'е', str_replace('Ё', 'Е', $login))) == true) {
$true = false;
}
//
if (!$true) {
$r = false;
}
}
return $r;
2022-06-06 21:30:34 +00:00
}
2023-12-01 21:05:11 +00:00
if (isset($_GET['buy_slot'])) {
if ($u->info['money2'] < $slot['price_nex']) {
$u->error = 'Недостаточно денег';
} elseif ($u->info['money2'] < 5) {
$u->error = 'Недостаточно екр!';
} elseif (isset($slot['id']) && $slot['slots'] < 7) {
$slot['slots']++;
$u->info['money2'] -= 5;
mysql_query('UPDATE `users_animal_slot` SET `slots` = "' . $slot['slots'] . '" WHERE `id` = "' . $slot['id'] . '" LIMIT 1');
mysql_query('UPDATE `users` SET `money2` = "' . $u->info['money2'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
$u->error = 'Куплен слот для зверя.';
} else {
$u->error = 'Нельзя купить больше слотов';
}
} elseif (isset($_GET['pet'])) {
$_GET['pet'] = round((int)$_GET['pet']);
$_GET['petname'] = htmlspecialchars($_GET['petname'], null);
$ax = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `users_animal` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 LIMIT 1'));
$ax = $ax[0];
if ($_GET['pet'] < 1 || $_GET['pet'] > 7) {
$u->error = 'Нельзя привзвать такого зверя';
} elseif ($ax >= $slot['slots']) {
$u->error = 'Нет свободных слотов для зверя';
} elseif ($u->info['money'] < 50) {
$u->error = 'Недостаточно денег';
} elseif (!is_login_an($_GET['petname'])) {
$u->error = 'Неверная кличка зверя, выберите другую';
} else {
$u->error = 'Зверь пришел к Вам!';
$u->info['money'] -= 50;
mysql_query('UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
//
$anm['type'] = $_GET['pet'];
//
if ($anm['type'] == 1) {
$anm['name'] = 'Кот';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '20864.gif', 2 => '21301.gif', 3 => '21139.gif', 4 => '20427.gif'];
$anm['stats'] = 's1=2|s2=5|s3=2|s4=5|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 2) {
$anm['name'] = 'Сова';
$anm['sex'] = 1;
$anm['obraz'] = [1 => '21415.gif', 2 => '21722.gif', 3 => '21550.gif'];
$anm['stats'] = 's1=2|s2=2|s3=5|s4=5|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 3) {
$anm['name'] = 'Светляк';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '22277.gif', 2 => '22265.gif', 3 => '22333.gif', 4 => '22298.gif'];
$anm['stats'] = 's1=3|s2=10|s3=3|s4=4|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 4) {
$anm['name'] = 'Чертяка';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '22177.gif', 2 => '21976.gif', 3 => '21877.gif'];
$anm['stats'] = 's1=25|s2=3|s3=3|s4=25|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 5) {
$anm['name'] = 'Пес';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '22352.gif', 2 => '23024.gif', 3 => '22900.gif', 4 => '22501.gif', 5 => '22700.gif'];
$anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 6) {
$anm['name'] = 'Свин';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '24000.gif', 2 => '25000.gif', 3 => '27000.gif', 4 => '28000.gif'];
$anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10';
} elseif ($anm['type'] == 7) {
$anm['name'] = 'Дракон';
$anm['sex'] = 0;
$anm['obraz'] = [1 => '21338_pgtpdbx.gif'];
$anm['stats'] = 's1=5|s2=3|s3=3|s4=5|rinv=40|m9=5|m6=10';
}
//
$anm['name'] = htmlspecialchars($_GET['petname'], null);
$anm['name'] = preg_replace("/&#?[a-z0-9]+;/i", "", $anm['name']);
//
$anm['obraz'] = $anm['obraz'][rand(1, count($anm['obraz']))];
$anm['obraz'] = str_replace('.gif', '', $anm['obraz']);
$anm['obraz'] = str_replace('.jpg', '', $anm['obraz']);
$anm['obraz'] = str_replace('.png', '', $anm['obraz']);
$ins = mysql_query(
'INSERT INTO `users_animal` (`type`,`name`,`uid`,`obraz`,`stats`,`sex`,`eda`) VALUES ("' . $anm['type'] . '","' . $anm['name'] . '","' . $u->info['id'] . '","' . $anm['obraz'] . '","' . $anm['stats'] . '","' . $anm['sex'] . '","0")'
);
if ($ins) {
Delo::add(
1,
'System.inventory',
$u->info['id'],
'&quot;<span style="color: maroon; ">System.inventory</span>&quot;: Персонаж призвал зверя &quot;' . $_GET['petname'] . '&quot; (' . $_GET['pet'] . ') - 50 кр.',
);
} else {
$u->error = 'Не удалось призвать зверя, что-то здесь не так ...';
}
//
}
//
} elseif (isset($_GET['eda'])) {
$anm = mysql_fetch_array(mysql_query('SELECT * FROM `users_animal` WHERE `id` = "' . mysql_real_escape_string($_GET['eda']) . '" AND `uid` = "' . $u->info['id'] . '" AND `delete` = 0 LIMIT 1'));
$x = round((int)$_GET['vvv']);
if ($x > 100 - $anm['eda']) {
$x = 100 - $anm['eda'];
}
if ($x < 1) {
$x = 1;
}
if ($x > 100) {
$x = 100;
}
if (!isset($anm['id'])) {
$u->error = 'Зверь не найден.';
} elseif ($anm['eda'] >= 100) {
$u->error = 'Зверь сыт и не нуждается в еде.';
} elseif ($an_eda[$anm['level']] * $_GET['vvv'] > $u->info['money']) {
$u->error = 'Недостаточно денег.';
} else {
$u->error = 'Покормили зверя &quot;' . $anm['name'] . '&quot; на ' . $x . ' ед. за ' . ($x * $an_eda[$anm['level']]) . ' кр.';
$u->info['money'] -= ($x * $an_eda[$anm['level']]);
$anm['eda'] += $x;
mysql_query('UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
mysql_query('UPDATE `users_animal` SET `eda` = "' . $anm['eda'] . '" WHERE `id` = "' . $anm['id'] . '" LIMIT 1');
}
} elseif (isset($_GET['pet_del'])) {
if (mysql_query(
'UPDATE `users_animal` SET `delete` = "' . time() . '" WHERE `id` = "' . mysql_real_escape_string($_GET['pet_del']) . '" AND `delete` = 0 AND `uid` = "' . $u->info['id'] . '" LIMIT 1'
)) {
$u->error = 'Зверь был выгнан.';
} else {
$u->error = 'Зверь не найден.';
}
} elseif (isset($_GET['rename'])) {
$anm = mysql_fetch_array(
mysql_query('SELECT * FROM `users_animal` WHERE `id` = "' . mysql_real_escape_string($_GET['rename']) . '" AND `uid` = "' . $u->info['id'] . '" AND `delete` = 0 LIMIT 1')
);
$_GET['vvv'] = htmlspecialchars($_GET['vvv'], null);
if (!isset($anm['id'])) {
$u->error = 'Зверь не найден.';
} elseif (30 > $u->info['money']) {
$u->error = 'Недостаточно денег.';
} else {
$u->info['money'] -= 30;
$anm['name'] = preg_replace('/\W/', '', $_GET['vvv']); //$_GET['vvv'];
$u->error = 'Кличка зверя изменена на &quot;' . $anm['name'] . '&quot; за 30 кр.';
mysql_query('UPDATE `users` SET `money` = "' . $u->info['money'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
mysql_query('UPDATE `users_animal` SET `name` = "' . mysql_real_escape_string($anm['name']) . '" WHERE `id` = "' . mysql_real_escape_string($anm['id']) . '" LIMIT 1');
}
} elseif (isset($_GET['shadow']) && $petox > 0) {
if (isset($_GET['rechange'])) {
$u->error = 'Образ питомца снят.';
mysql_query('UPDATE `obraz_pet` SET `use` = 0 WHERE `uid` = "' . $u->info['id'] . '"');
} elseif (isset($_GET['change'])) {
$u->error = 'Образ питомца установлен.';
mysql_query('UPDATE `obraz_pet` SET `use` = 0 WHERE `uid` = "' . $u->info['id'] . '"');
mysql_query('UPDATE `obraz_pet` SET `use` = 1 WHERE `uid` = "' . $u->info['id'] . '" AND `id` = "' . mysql_real_escape_string($_GET['change']) . '" LIMIT 1');
}
2022-06-06 21:30:34 +00:00
}
?>
<style>
2023-12-01 21:05:11 +00:00
.an_border {
border: 1px solid #aaaaaa;
padding: 2px;
width: 120px;
height: 220px;
}
.an_btn {
cursor: pointer;
}
.an_btn:hover {
cursor: pointer;
background-color: #cccccc;
}
.an_img64x64 {
padding-top: 75px;
height: 145px;
}
.an_line {
text-align: center;
padding: 5px;
}
.an_line2 {
text-align: left;
padding: 5px;
width: 124px;
}
.an_w120 {
width: 120px;
}
.cp {
cursor: pointer;
}
.obrsl1 {
border: 1px solid #888;
padding: 1px;
margin-bottom: 5px;
}
.obrsl1d {
display: inline-block;
widows: 120px;
}
2022-06-06 21:30:34 +00:00
</style>
2023-12-01 21:05:11 +00:00
<center><b>Ваши деньги:<font color=darkgreen> <?= $u->info['money'] ?> кр.</center></b></font>
2022-06-06 21:30:34 +00:00
<div align="right">
2023-12-01 21:05:11 +00:00
<?php
if (!isset($_GET['shadow']) || $petox == 0) {
if ($petox > 0) {
echo '<button onClick="location.href=\'/main.php?newanimal&shadow\';" class="btn btn-success">Образ</button>&nbsp;';
} else {
echo '<button disabled="disabled" onClick="alert(\'Установка образов возможно после покупки хотя бы одного образа для питомца.\');" class="btn btn-success">Образ</button>&nbsp;';
}
?>
<button onClick="location.href='/main.php?newanimal';" class="btn">Обновить</button>&nbsp;
<button onClick="location.href='/main.php?inv';" class="btn">Вернуться</button>
<?php } else { ?>
<button onClick="location.href='/main.php?newanimal&shadow';" class="btn">Обновить</button>&nbsp;
<button onClick="location.href='/main.php?newanimal';" class="btn">Вернуться</button>
<?php } ?>
2022-06-06 21:30:34 +00:00
</div>
2023-03-31 18:42:06 +00:00
<?php
2023-12-01 21:05:11 +00:00
if ($u->error != '') {
echo '<div><b><font color="red">' . $u->error . '</font></b></div>';
2022-06-06 21:30:34 +00:00
}
?>
<hr>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
2023-12-01 21:05:11 +00:00
<tr>
<?php
if (isset($_GET['shadow']) && $petox > 0) {
//
echo '<td align="left">';
$sp = mysql_query('SELECT * FROM `obraz_pet` WHERE `uid` = "' . $u->info['id'] . '"');
while ($pl = mysql_fetch_array($sp)) {
echo '<div class="obrsl1d">';
//
echo '<img class="obrsl1" src="//img.new-combats.tech/pet/' . $pl['img'] . '" width="120" height="40"><br><div align="center">';
if ($pl['use'] == 0) {
echo '<input onclick="location.href=\'/main.php?newanimal&shadow&change=' . $pl['id'] . '\';" style="width:120px;" type="button" value="Выбрать" class="btn">';
} else {
echo '<input onclick="location.href=\'/main.php?newanimal&shadow&rechange\';" style="width:120px;" type="button" value="Используется" class="btn btn-success">';
}
echo '</div>';
//
echo '</div>';
}
echo '</td>';
} else {
$sp = mysql_query('SELECT * FROM `users_animal` WHERE `uid` = "' . $u->info['id'] . '" AND `delete` = 0 LIMIT 6');
$i = 1;
while ($pl = mysql_fetch_array($sp)) {
//
if (isset($_GET['selected']) && $pl['id'] == $_GET['selected']) {
if ($u->info['animal'] != $pl['id']) {
$u->info['animal'] = $pl['id'];
} else {
$u->info['animal'] = 0;
}
mysql_query('UPDATE `users` SET `animal` = "' . $u->info['animal'] . '" WHERE `id` = "' . $u->info['id'] . '" LIMIT 1');
}
//
//$kp = 0.05; //цена корма
$kp = $an_eda[$pl['level']];
//
echo '<td width="16%" align="center" valign="top">';
//
echo '<div class="an_line"><b><img onclick="top.anrename(' . $pl['id'] . ',\'' . $pl['name'] . '\');" class="cp" src="//img.new-combats.tech/pencil.png" width="16" height="16" title="Изменить кличку"> <small>' . $pl['name'] . '</small> <img onclick="if(confirm(\'Вы действительно хотите ВЫГНАТЬ зверя &quot;' . $pl['name'] . '&quot;?\')) location.href=\'main.php?newanimal&pet_del=' . $pl['id'] . '\';" class="cp" src="//img.new-combats.tech/i/clear.gif" title="Выгнать" width="13" height="13"></b></div>';
//
echo '<div title="' . $pl['name'] . '" class="an_border"><img src="//img.new-combats.tech/i/obraz/' . $pl['sex'] . '/' . $pl['obraz'] . '.gif" width="120" height="220"></div>';
//
echo '<div class="an_line2"><small>';
echo 'Уровень: ' . $pl['level'] . '<br>Опыт: <b>' . $pl['exp'] . '</b><br>Сытность: ' . $pl['eda'] . '/100<br>';
//
echo '<input ';
if ($pl['eda'] >= 100) {
echo ' disabled="disabled" ';
} else {
echo ' onclick="top.eda(' . $pl['id'] . ',\'' . $pl['name'] . '\',' . (0 + $kp) . ',' . (0 + 100 - $pl['eda']) . ');" ';
}
echo 'type="button" value="Покормить" class="btn an_w120';
if ($pl['eda'] < 1) {
echo ' btn-danger';
}
echo '">';
//
if ($pl['id'] != $u->info['animal'] || (isset($_GET['selected']) && $pl['id'] != $_GET['selected'])) {
echo '<input onClick="location.href=\'main.php?newanimal&selected=' . $pl['id'] . '\';" type="button" value="Выбрать" class="btn an_w120">';
} else {
echo '<input onClick="location.href=\'main.php?newanimal&selected=' . $pl['id'] . '\';" type="button" value="Используется" class="btn btn-success an_w120">';
}
//
echo '</small></div>';
//
echo '</td>';
$i++;
}
if ($i <= 6) {
$j = 0;
while ($i <= 6) {
if ($i <= $slot['slots']) {
echo '<td width="16%" align="center" valign="top"><div class="an_line">&nbsp;</div><div onclick="top.petbuy();" onMouseOver="top.hi(this,\'Завести питомца (50 КР)\',event,0,1,1,1,\'\');" onMouseOut="top.hic(event);" onMouseDown="top.hic(event);" class="an_border an_btn an_img64x64"><img src="//img.new-combats.tech/pet_free_slot.png" width="64" height="64"></div></td>';
} else {
if ($j == 0) {
echo '<td width="16%" align="center" valign="top"><div class="an_line">&nbsp;</div><div onclick="if(confirm(\'Вы действительно хотите купить слот за ' . $slot['price_next'] . ' ЕКР?\')) location.href=\'main.php?newanimal&buy_slot\';" onMouseOver="top.hi(this,\'Купить слот (' . $slot['price_next'] . ' ЕКР)\',event,0,1,1,1,\'\');" onMouseOut="top.hic(event);" onMouseDown="top.hic(event);" class="an_border an_btn an_img64x64"><img src="//img.new-combats.tech/pet_add.png" width="64" height="64"></div></td>';
$j++;
} else {
echo '<td width="16%" align="center" valign="top"><div class="an_line">&nbsp;</div><div title="Недоступно" class="an_border an_img64x64"><img src="//img.new-combats.tech/pet_lock.png" width="64" height="64"></div></td>';
}
}
$i++;
}
}
}
?>
</tr>
2022-06-06 21:30:34 +00:00
</table>