diff --git a/_incl_data/class/Core/Config.php b/_incl_data/class/Core/Config.php
index 6596d06f..8c75cd9e 100644
--- a/_incl_data/class/Core/Config.php
+++ b/_incl_data/class/Core/Config.php
@@ -76,7 +76,7 @@ class Config
$c['expstopu'] = 2999999; //Опыт на котором останавливаемся
$c['noobgade'] = false; //нуб квест (пещера)
$c['level_ransfer'] = 8; //С какого уровня разрешены передачи
- $c['znahar'] = true; //бесплатный знахарь
+
$c['nolevel'] = false; //лимитирование уровней
$c['noitembuy'] = false; //Не требует ресурсы для покупки
$c['effz'] = 0; //Скольким секундам равен заряд
diff --git a/_incl_data/class/User/Effects.php b/_incl_data/class/User/Effects.php
index cf5f51ba..90a272e3 100644
--- a/_incl_data/class/User/Effects.php
+++ b/_incl_data/class/User/Effects.php
@@ -22,6 +22,20 @@ class Effects
'insert into eff_users (overType, id_eff, uid, name, timeUse, data) values (?,?,?,?,unix_timestamp(),?)',
[$eff['oneType'], $eff['id2'], $uid, $eff['mname'], $eff['mdata']]
);
-
}
-}
\ No newline at end of file
+
+ public static function hasInjury(int $uid): bool
+ {
+ return Db::getValue('select count(*) from eff_users where id_eff in (4,5) and `delete` = 0 and uid = ?', [$uid]) > 0;
+ }
+
+ public static function hasAddiction(int $addictionId, int $uid): bool // пристрастие
+ {
+ return Db::getValue('select count(*) from eff_users where (id_eff between 301 and 304 or id_eff between 321 and 332) and id = ? and uid = ?', [$addictionId, $uid]) > 0;
+ }
+
+ public static function removeById(int $id): void
+ {
+ Db::sql('update eff_users set delete = unix_timestamp() where id = ?', [$id]);
+ }
+}
diff --git a/modules_data/location/an/znahar.php b/modules_data/location/an/znahar.php
index 00d99bae..97b418b6 100644
--- a/modules_data/location/an/znahar.php
+++ b/modules_data/location/an/znahar.php
@@ -251,7 +251,7 @@ if(isset($tst_trvm['id'])) {
$st['s1'] = 3;
$st['s2'] = 3;
$st['s3'] = 3;
- $st['s4'] = test_s5();
+ $st['s4'] = testStat5();
$st['s5'] = 0;
$st['s6'] = 0;
$st['s7'] = 0;
@@ -264,7 +264,7 @@ if(isset($tst_trvm['id'])) {
$st['s14'] = 0;
$st['s15'] = 0;
$st = \Core\ConversionHelper::arrayToDataString($st);
- $n1 = test_ability();
+ $n1 = testAbilities();
$n2 = $u->info['skills'];
$n3 = $u->info['sskills'];
$n4 = $u->info['nskills'];
@@ -298,7 +298,7 @@ if(isset($tst_trvm['id'])) {
$st['mg7'] = 0;
$st = \Core\ConversionHelper::arrayToDataString($st);
$n1 = $u->info['ability'];
- $n2 = test_skills();
+ $n2 = testSkills();
$n3 = $u->info['sskills'];
$n4 = $u->info['nskills'];
mysql_query('UPDATE `stats` SET `wipe`="0",`stats`="'.$st.'",`ability`="'.$n1.'",`skills`="'.$n2.'",`sskills`="'.$n3.'",`nskills`="'.$n4.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
@@ -362,11 +362,11 @@ if(isset($tst_trvm['id'])) {
//echo "Статы:
".$st['s1']."=3
".$st['s2']."=3
".$st['s3']."=3
".$st['s4']."=3
".$st['s5']."=0
".$st['s6']."=0
".$st['s7']."=0
".$st['s8']."=0
".$st['s9']."=0
".$st['s10']."=0
";
if($no==0){
- $z_na = zact(5,(int)$st_l);
+ $z_na = zact(5);
if($z_na[0] == 1) {
if( ($st['s5'] > 0 && $u->info['level'] < 4) || ($st['s6'] > 0 && $u->info['level'] < 7) || ($st['s7'] > 0 && $u->info['level'] < 9) || ($st['s8'] > 0 && $u->info['level'] < 11) || ($st['s9'] > 0 && $u->info['level'] < 12) || ($st['s10'] > 0 && $u->info['level'] < 13) ) {
- }elseif($st['s1']>=3 && $st['s2']>=3 && $st['s3']>=3 && $st['s4']>=test_s5() && $st['s5']>=0 && $st['s6']>=0 && $st['s7']>=0 && $st['s8']>=0 && $st['s9']>=0 && $st['s10']>=0){
+ }elseif($st['s1']>=3 && $st['s2']>=3 && $st['s3']>=3 && $st['s4']>=testStat5() && $st['s5']>=0 && $st['s6']>=0 && $st['s7']>=0 && $st['s8']>=0 && $st['s9']>=0 && $st['s10']>=0){
//Желательно проверку на статы по уровню (можно ли этот стат поднимать на текущем уровне перса)
$u->info['stats'] = \Core\ConversionHelper::arrayToDataString($st);
if(mysql_query('UPDATE `stats` SET `stats` = "'.mysql_real_escape_string($u->info['stats']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'))
@@ -544,11 +544,11 @@ echo $prs;
?>
-Навыки владения оружием и магией (=test_skills()?>)
+Навыки владения оружием и магией (=testSkills()?>)
-Особенности персонажа (=test_skills2()?>)
+Особенности персонажа (=testSkills2()?>)
-Характеристики (=test_ability()?>/=(9+test_s5())?>)
+Характеристики (=testAbilities()?>/=(9+testStat5())?>)
Каждые 7 дней после последнего использования комнаты знахаря вы получаете 1 бесплатное перераспределение, но не более 15
diff --git a/modules_data/location/znahar.php b/modules_data/location/znahar.php
index 8a156fea..4c957c35 100644
--- a/modules_data/location/znahar.php
+++ b/modules_data/location/znahar.php
@@ -1,583 +1,455 @@
room['file'] != 'znahar') {
+ return;
+}
+
+$err = '';
+
+function getLevelsData()
{
- die();
-}
-if($u->room['file']=='znahar'){
-if($c['znahar']==true){$raspst=99999;$kr=0;$price = 1;}else{$raspst=0;$kr=0;$price = 0;}
-
-//Платно или бесплатно
-
-
-if(date('w') == 6 || date('w') == 0) {
- $price = 1;
+ global $u;
+ return Db::getRow('select
+ sum(skills) as sum_skills,
+ sum(nskills) as sum_nskills,
+ sum(ability) as sum_abilities,
+ sum(vinos) as sum_vinos,
+ sum(duh) as sum_duh
+from levels where upLevel < ?', [$u->info['upLevel']]);
}
-function add_narkoz($tm,$name) {
- /*
- global $u;
- if($name != '') {
- $name = ': '.$name;
- }
- //mysql_query('INSERT INTO `eff_users` (`uid`,`id_eff`,`name`,`data`,`overType`,`timeUse`) VALUES (
- // "'.$u->info['id'].'","50","Наркоз'.mysql_real_escape_string($name).'",""
- //)');
-
- $name = 'Наркоз'.$name;
- $stat=rand(1, 3); // пока без духовности
- if($tm == 3) {
- $timeEnd=rand(2,5);// время травмы от 12 до 6 часов
- $timeEnd = $timeEnd * 3600;
- }elseif($tm == 1 || $tm == 2) {
- $timeEnd=rand(1,2);// время травмы от 5 до 10 мин
- $timeEnd = $timeEnd * (60*5);
- }else{
- $tm = round($tm*60);
- }
-
- $timeEnd = rand(1,3);// время травмы от 5 до 15 мин
- $timeEnd = $timeEnd * (60*5);
- //$timeEnd = 0;
-
-
- $data='add_s'.$stat.'=-'.($u->info['level']*rand(3,5));
- $v1=3;
- $img = 'eff_travma3.gif';
- mysql_query('INSERT INTO `eff_users` (`overType`,`timeUse`,`hod`,`name`,`data`,`uid`, `id_eff`, `img2`, `timeAce`, `v1`) VALUES ("0","'.time().'","-1","'.$name.'","'.$data.'","'.$u->info['id'].'", "4", "'.$img.'","'.$timeEnd.'", "'.$v1.'")');
- */
+function testSkills(): int
+{
+ global $u;
+ return getLevelsData()['sum_skills'] + $u->rep['add_skills'];
}
-function test_skills() {
- global $u;
- $r = 0;
- $sp = mysql_query('SELECT * FROM `levels` WHERE `upLevel` < "'.$u->info['upLevel'].'" ORDER BY `upLevel` ASC');
- while( $pl = mysql_fetch_array($sp) ) {
- $r += $pl['skills'];
- }
- $r += $u->rep['add_skills'];
- return $r;
+function testSkills2(): int
+{
+ global $u;
+ return getLevelsData()['sum_nskills'] + $u->rep['add_skills2'];
}
-function test_skills2() {
- global $u;
- $r = 0;
- $sp = mysql_query('SELECT * FROM `levels` WHERE `upLevel` < "'.$u->info['upLevel'].'" ORDER BY `upLevel` ASC');
- while( $pl = mysql_fetch_array($sp) ) {
- $r += $pl['nskills'];
- }
- $r += $u->rep['add_skills2'];
- return $r;
+function testAbilities(): int
+{
+ global $u;
+ return getLevelsData()['sum_abilities'] + $u->rep['add_stats'];
}
-function test_ability() {
- global $u;
- $r = 0;
- $sp = mysql_query('SELECT * FROM `levels` WHERE `upLevel` < "'.$u->info['upLevel'].'" ORDER BY `upLevel` ASC');
- while( $pl = mysql_fetch_array($sp) ) {
- $r += $pl['ability'];
- }
- //$r += 3*3;
- $r += $u->rep['add_stats'];
- return $r;
+function testStat5()
+{
+ return 3 + getLevelsData()['sum_vinos'];
}
-function test_s5() {
- global $u;
- $r = 0;
- $i = 0;
- /*$bns = array(
- 3,1,1,1,1,1,1,1,1,2,3,5,30
- );
- while( $i <= $u->info['level'] ) {
- $r += $bns[$i];
- $i++;
- }*/
- $r = mysql_fetch_array(mysql_query('SELECT SUM(`vinos`) FROM `levels` WHERE `upLevel` <= "'.$u->info['upLevel'].'" LIMIT 1'));
- $r = 3+$r[0];
- return $r;
+function testStat7()
+{
+ return getLevelsData()['sum_duh'];
}
-function test_s7() {
- global $u;
- $r = 0;
- /*
- 1. сделать запрос в levels и получить количество`duh` на текущем аппе
- SELECT SUM(`duh`) FROM `levels` ...
- 2. вывод суммы в переменную $r
- */
- $r = mysql_fetch_array(mysql_query('SELECT SUM(`duh`) FROM `levels` WHERE `upLevel` <= "'.$u->info['upLevel'].'" LIMIT 1'));
- $r = $r[0];
- return $r;
-}
-
-$c['znahar1'] = 1; //сброс навыков
-$c['znahar2'] = 1; //сброс особенностей
-$c['znahar3'] = 1; //сброс статов
-$c['znahar4'] = 1; //сброс пристрастия
-$c['znahar5'] = 1; //перераспределение статов
-
-if($price == 0) {
-
- $last_zn = mysql_fetch_array(mysql_query('SELECT `time` FROM `aaa_znahar` WHERE `uid` = "'.$u->info['id'].'" ORDER BY `time` DESC LIMIT 1'));
- $last_zn = $last_zn['time'];
-
- $u->info['znahar'] = mysql_fetch_array(mysql_query('SELECT SUM(`point`) FROM `aaa_znahar` WHERE `uid` = "'.$u->info['id'].'" LIMIT 1'));
- $u->info['znahar'] = $u->info['znahar'][0];
- $u->info['znahar'] = 15 - $u->info['znahar'];
-
- $last_zn = (time()-$last_zn);
- $last_zn = floor($last_zn/( 60*60*24*7 ));
-
- $u->info['znahar'] += $last_zn;
-
- if($u->info['znahar'] > 15) {
- $u->info['znahar'] = 15;
- }
-
- $raspst = $u->info['znahar'];
-
- //
- $i = 1;
- $pr = array(0,
- 25,
- 15,
- 75,
- 25,
- 5
- );
- $pr_free = array(0,
- 5,
- 3,
- 5,
- 5,
- 1
- );
- while($i <= 5) {
- if( $pr_free[$i] > $u->info['znahar'] ) {
- $c['znahar'.$i] = 0;
- }
- $i++;
- }
-}
-
-function zact($i,$x = 1) {
- global $price, $c, $u, $pr, $pr_free;
- $point = 0;
- $price1 = 0;
- $r = 0;
- $bad = 0;
-
- if( $price == 1 ) {
- //бесплатно
- $point = 0;
- $price1 = 0;
- }else{
- //платно
- $point = $pr_free[$i]*$x;
- if($point > $u->info['znahar']) {
- $price1 = $pr[$i]*$x;
- $point = 0;
- if($price1 > $u->info['money']) {
- $bad = 1;
- }
- }
- }
-
- if($bad == 0) {
- mysql_query('INSERT INTO `aaa_znahar` (`act`,`price`,`point`,`uid`,`time`,`city`) VALUES ("'.$i.'","'.$price1.'","'.$point.'","'.$u->info['id'].'","'.time().'","'.$u->info['city'].'")');
- if($price1 > 0) {
- if($price1 < 0) {
- $price1 = 0;
- }
- $u->info['money'] -= $price1;
- mysql_query('UPDATE `users` SET `money` = "'.$u->info['money'].'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
- }
- $u->info['znahar'] -= $point;
- $r = array(1,$price1,$point);
- while($i <= 5) {
- if( $pr_free[$i] > $u->info['znahar'] ) {
- $c['znahar'.$i] = 0;
- }
- $i++;
- }
- }else{
- $r = array(0,'У вас недостаточно денег для этого действия.');
- }
- return $r;
+function zact($i): void
+{
+ global $u;
+ Db::sql('insert into aaa_znahar (act, point, uid, time,city) values (?,0,?,unix_timestamp(),?)', [$i, $u->info['id'], $u->info['city']]);
}
#------------------Запросы и прочее
-$st = \Core\ConversionHelper::dataStringToArray($u->info['stats']);
-$vinos = array(
- /* level,summvinos*/
- "0" => 3,
- "1" => 4,
- "2" => 5,
- "3" => 6,
- "4" => 7,
- "5" => 8,
- "6" => 9,
- "7" => 10,
- "8" => 11,
- "9" => 13,
- "10" => 16,
- "11" => 21,
- "12" => 41,
- "21" => 41
-);
+$st = ConversionHelper::dataStringToArray($u->info['stats']);
+$vinos = [
+ /* level,summvinos*/
+ "0" => 3,
+ "1" => 4,
+ "2" => 5,
+ "3" => 6,
+ "4" => 7,
+ "5" => 8,
+ "6" => 9,
+ "7" => 10,
+ "8" => 11,
+ "9" => 13,
+ "10" => 16,
+ "11" => 21,
+ "12" => 41,
+ "21" => 41
+];
//минимальный уровень для статов
-$minlvl = array(
- 1=>0,
- 2=>0,
- 3=>0,
- 4=>0,
- 5=>4,
- 6=>7,
- 7=>10,
- 8=>12,
- 9=>15,
- 10=>20,
- 11=>0
-);
+$minlvl = [
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 4,
+ 6 => 7,
+ 7 => 10,
+ 8 => 12,
+ 9 => 15,
+ 10 => 20,
+ 11 => 0
+];
-$tst_trvm = mysql_fetch_array(mysql_query('SELECT * FROM `eff_users` WHERE (`id_eff` = 4 OR `id_eff` = 5) AND `uid` = "'.$u->info['id'].'" AND `delete` = "0" LIMIT 1'));
-if(isset($tst_trvm['id'])) {
- $err = 'У вас травма "'.$tst_trvm['name'].'". Вы не можете пользоваться услугами знахаря!';
-}elseif(isset($_GET['unprist'])) {
- $epr = mysql_fetch_array(mysql_query('SELECT `a`.`id`,`b`.`mname` FROM `eff_users` AS `a` LEFT JOIN `eff_main` AS `b` ON `b`.`id2` = `a`.`id_eff` WHERE ((`a`.`id_eff` >= 301 AND `a`.`id_eff` <= 304) OR (`a`.`id_eff` >= 321 AND `a`.`id_eff` <= 332)) AND `a`.`uid` = "'.$u->info['id'].'" AND `a`.`id` = "'.mysql_real_escape_string((int)$_GET['unprist']).'" LIMIT 1'));
- if(isset($epr['id'])) {
- $z_na = zact(4);
- if($z_na[0] == 1) {
- //сброс пристрастия
- mysql_query('UPDATE `eff_users` SET `delete` = "'.time().'" WHERE `id` = "'.mysql_real_escape_string($epr['id']).'" LIMIT 1');
- $st = \Core\ConversionHelper::dataStringToArray($u->info['stats']);
- add_narkoz(2,'Сброс пристрастий');
- $err = 'Вы заплатили '.$kr.' кр. Все прошло успешно, но вам необходим отдых...';
- }else{
- $err = ''.$z_na[1].'';
- }
- }else{
- $err = 'Пристрастие не найдено...';
- }
-}elseif(isset($_POST['dropstats']))
-{
- $z_na = zact(3);
- if($z_na[0] == 1) {
- //сброс статов
- $st = \Core\ConversionHelper::dataStringToArray($u->info['stats']);
- $st['s1'] = 3;
- $st['s2'] = 3;
- $st['s3'] = 3;
- $st['s4'] = test_s5();
- $st['s5'] = 0;
- $st['s6'] = 0;
- $st['s7'] = test_s7();
- $st['s8'] = 0;
- $st['s9'] = 0;
- $st['s10'] = 0;
- $st['s11'] = 0;
- $st['s12'] = 0;
- $st['s13'] = 0;
- $st['s14'] = 0;
- $st['s15'] = 0;
- $st = \Core\ConversionHelper::arrayToDataString($st);
- $n1 = test_ability();
- $n2 = $u->info['skills'];
- $n3 = $u->info['sskills'];
- $n4 = $u->info['nskills'];
- mysql_query('UPDATE `stats` SET `wipe`="0",`stats`="'.$st.'",`ability`="'.$n1.'",`skills`="'.$n2.'",`sskills`="'.$n3.'",`nskills`="'.$n4.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
- //$u->info['wipe'] = 2;
- //$u->wipe();
- $st = \Core\ConversionHelper::dataStringToArray($u->info['stats']);
- add_narkoz(1,'Сброс характеристик');
- $err = 'Вы заплатили '.$kr.' кр. Все прошло успешно, но вам необходим отдых...';
- }else{
- $err = ''.$z_na[1].'';
- }
-}elseif(isset($_POST['dropmastery']))
-{
- $z_na = zact(1);
- if($z_na[0] == 1) {
- //сброс статов
- $st = \Core\ConversionHelper::dataStringToArray($u->info['stats']);
- $st['a1'] = 0;
- $st['a2'] = 0;
- $st['a3'] = 0;
- $st['a4'] = 0;
- $st['a5'] = 0;
- $st['a6'] = 0;
- $st['mg1'] = 0;
- $st['mg2'] = 0;
- $st['mg3'] = 0;
- $st['mg4'] = 0;
- $st['mg5'] = 0;
- $st['mg6'] = 0;
- $st['mg7'] = 0;
- $st = \Core\ConversionHelper::arrayToDataString($st);
- $n1 = $u->info['ability'];
- $n2 = test_skills();
- $n3 = $u->info['sskills'];
- $n4 = $u->info['nskills'];
- mysql_query('UPDATE `stats` SET `wipe`="0",`stats`="'.$st.'",`ability`="'.$n1.'",`skills`="'.$n2.'",`sskills`="'.$n3.'",`nskills`="'.$n4.'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1');
- //$u->info['wipe'] = 2;
- //$u->wipe();
- $st = \Core\ConversionHelper::dataStringToArray($u->info['stats']);
- add_narkoz(1,'Сброс умений');
- $err = 'Вы заплатили '.$kr.' кр. Все прошло успешно, но вам необходим отдых...';
- }else{
- $err = ''.$z_na[1].'';
- }
-}elseif(isset($_POST['dropmastery']))
-{
- //Старая версия
- $z_na = zact(1);
- if($z_na[0] == 1) {
- //сброс характеристик
- $u->info['wipe'] = 3;
- $u->wipe();
- $st = \Core\ConversionHelper::dataStringToArray($u->info['stats']);
- $err = 'Умения покину вас... вам плохо...';
- }else{
- $err = ''.$z_na[1].'';
- }
-}elseif(isset($_POST['dropperks']))
-{
- $z_na = zact(1);
- if($z_na[0] == 1) {
- //сброс особенностей
- $u->info['wipe'] = 3.5;
- $u->wipe();
- $st = \Core\ConversionHelper::dataStringToArray($u->info['stats']);
- add_narkoz(1,'Сброс навыков');
- $err = 'Особенности покинули вас... вам плохо...';
- }else{
- $err = ''.$z_na[1].'';
- }
-}elseif(isset($_GET['movestat'])){
- //общее кол-во статов
- $allStats = $st['s1']+$st['s2']+$st['s3']+$st['s4']+$st['s5']+$st['s6']+$st['s7']+$st['s8']+$st['s9']+$st['s10'];
- $allStatsTesto = $st['s1']+$st['s2']+$st['s3']+$st['s4']+$st['s5']+$st['s6']+$st['s7']+$st['s8']+$st['s9']+$st['s10'];
- $no = 0; $st_l = 0;
- for($i=1;$i<=10;$i++){
- if(isset($_GET['s'.$i]) && ($st['s'.$i]+(int)$_GET['s'.$i]) >= 0 && $i <= 10){
- if($minlvl[$i] > $u->info['level'] && $st['s'.$i] < (int)$_GET['s'.$i])
- {
- $no++;
- }else{
- if((int)$_GET['s'.$i] > 0) {
- $st_l += (int)$_GET['s'.$i];
- }
- $st['s'.$i] += (int)$_GET['s'.$i];
- $allStatsNew+=(int)$_GET['s'.$i];
- $allStatsTesto += (int)$_GET['s'.$i];
- }
- }
- }
-
- if( $allStatsTesto != $allStats ) {
- $no++;
- }
- //echo "Статы: ".$st['s1']."=3 ".$st['s2']."=3 ".$st['s3']."=3 ".$st['s4']."=3 ".$st['s5']."=0 ".$st['s6']."=0 ".$st['s7']."=0 ".$st['s8']."=0 ".$st['s9']."=0 ".$st['s10']."=0 ";
- if($no==0){
-
- $z_na = zact(5,(int)$st_l);
- if($z_na[0] == 1) {
- if( ($st['s5'] > 0 && $u->info['level'] < 4) || ($st['s6'] > 0 && $u->info['level'] < 7) || ($st['s7'] > 0 && $u->info['level'] < 9) || ($st['s8'] > 0 && $u->info['level'] < 11) || ($st['s9'] > 0 && $u->info['level'] < 12) || ($st['s10'] > 0 && $u->info['level'] < 13) ) {
-
- }elseif($st['s1']>=3 && $st['s2']>=3 && $st['s3']>=3 && $st['s4']>=test_s5() && $st['s5']>=0 && $st['s6']>=0 && $st['s7']>=test_s7() && $st['s8']>=0 && $st['s9']>=0 && $st['s10']>=0){
- //Желательно проверку на статы по уровню (можно ли этот стат поднимать на текущем уровне перса)
- $u->info['stats'] = \Core\ConversionHelper::arrayToDataString($st);
- if(mysql_query('UPDATE `stats` SET `stats` = "'.mysql_real_escape_string($u->info['stats']).'" WHERE `id` = "'.$u->info['id'].'" LIMIT 1'))
- {
- add_narkoz(2,'Переброс характеристик');
- //Надо добавить UPDATE в базе свободных статов
- $u->stats = $u->getStats($u->info['id'],0,1);
- $u->testItems($u->info['id'],$u->stats,0);
- $st = \Core\ConversionHelper::dataStringToArray($u->info['stats']);
- }
- }
- }else{
- $err = ''.$z_na[1].'';
- }
- }
+if (Effects::hasInjury($u->info['id'])) {
+ $err = 'У вас травма. Вы не можете пользоваться услугами знахаря!';
+} elseif (isset($_GET['unprist'])) {
+ $addictionId = (int)$_GET['unprist'];
+ if (Effects::hasAddiction($addictionId, $u->info['id'])) {
+ zact(4);
+ //сброс пристрастия
+ Effects::removeById($addictionId);
+ $st = ConversionHelper::dataStringToArray($u->info['stats']);
+ $err = 'Все прошло успешно.';
+ } else {
+ $err = 'Пристрастие не найдено.';
+ }
+} elseif (isset($_POST['dropstats'])) {
+ zact(3);
+
+ //сброс статов
+ $st = ConversionHelper::dataStringToArray($u->info['stats']);
+ $st['s1'] = 3;
+ $st['s2'] = 3;
+ $st['s3'] = 3;
+ $st['s4'] = testStat5();
+ $st['s5'] = 0;
+ $st['s6'] = 0;
+ $st['s7'] = testStat7();
+ $st['s8'] = 0;
+ $st['s9'] = 0;
+ $st['s10'] = 0;
+ $st['s11'] = 0;
+ $st['s12'] = 0;
+ $st['s13'] = 0;
+ $st['s14'] = 0;
+ $st['s15'] = 0;
+ $st = ConversionHelper::arrayToDataString($st);
+ $n1 = testAbilities();
+ $n2 = $u->info['skills'];
+ $n3 = $u->info['sskills'];
+ $n4 = $u->info['nskills'];
+ Db::sql('update stats set wipe = 0, stats = ?, ability = ?, skills = ?, sskills = ?, nskills = ? where id = ?', [$st, $n1, $n2, $n3, $n4, $u->info['id']]);
+ $st = ConversionHelper::dataStringToArray($u->info['stats']);
+ $err = 'Все прошло успешно.';
+} elseif (isset($_POST['dropmastery'])) {
+ zact(1);
+ //сброс статов
+ $st = ConversionHelper::dataStringToArray($u->info['stats']);
+ $st['a1'] = 0;
+ $st['a2'] = 0;
+ $st['a3'] = 0;
+ $st['a4'] = 0;
+ $st['a5'] = 0;
+ $st['a6'] = 0;
+ $st['mg1'] = 0;
+ $st['mg2'] = 0;
+ $st['mg3'] = 0;
+ $st['mg4'] = 0;
+ $st['mg5'] = 0;
+ $st['mg6'] = 0;
+ $st['mg7'] = 0;
+ $st = ConversionHelper::arrayToDataString($st);
+ $n1 = $u->info['ability'];
+ $n2 = testSkills();
+ $n3 = $u->info['sskills'];
+ $n4 = $u->info['nskills'];
+ Db::sql('update stats set wipe = 0, stats = ?, ability = ?, skills = ?, sskills = ?, nskills = ? where id = ?', [$st, $n1, $n2, $n3, $n4, $u->info['id']]);
+ $st = ConversionHelper::dataStringToArray($u->info['stats']);
+ $err = 'Все прошло успешно.';
+} elseif (isset($_POST['dropmastery'])) {
+ //Старая версия
+ zact(1);
+ //сброс характеристик
+ $u->info['wipe'] = 3;
+ $u->wipe();
+ $st = ConversionHelper::dataStringToArray($u->info['stats']);
+ $err = 'Умения покинули вас.';
+} elseif (isset($_POST['dropperks'])) {
+ zact(1);
+
+ //сброс особенностей
+ $u->info['wipe'] = 3.5;
+ $u->wipe();
+ $st = ConversionHelper::dataStringToArray($u->info['stats']);
+ $err = 'Особенности покинули вас.';
+
+} elseif (isset($_GET['movestat'])) {
+ //общее кол-во статов
+ $allStats = $st['s1'] + $st['s2'] + $st['s3'] + $st['s4'] + $st['s5'] + $st['s6'] + $st['s7'] + $st['s8'] + $st['s9'] + $st['s10'];
+ $allStatsTesto = $allStats;
+ $no = 0;
+ $st_l = 0;
+ for ($i = 1; $i <= 10; $i++) {
+ if (isset($_GET['s' . $i]) && ($st['s' . $i] + (int)$_GET['s' . $i]) >= 0 && $i <= 10) {
+ if ($minlvl[$i] > $u->info['level'] && $st['s' . $i] < (int)$_GET['s' . $i]) {
+ $no++;
+ } else {
+ if ((int)$_GET['s' . $i] > 0) {
+ $st_l += (int)$_GET['s' . $i];
+ }
+ $st['s' . $i] += (int)$_GET['s' . $i];
+ $allStatsNew += (int)$_GET['s' . $i];
+ $allStatsTesto += (int)$_GET['s' . $i];
+ }
+ }
+ }
+
+ if ($allStatsTesto != $allStats) {
+ $no++;
+ }
+
+ if ($no == 0) {
+
+ zact(5);
+
+ if (
+ $st['s1'] >= 3 &&
+ $st['s2'] >= 3 &&
+ $st['s3'] >= 3 &&
+ $st['s4'] >= testStat5() &&
+ $st['s5'] >= 0 &&
+ $st['s6'] >= 0 &&
+ $st['s7'] >= testStat7() &&
+ $st['s8'] >= 0 &&
+ $st['s9'] >= 0 &&
+ $st['s10'] >= 0
+ ) {
+ //Желательно проверку на статы по уровню (можно ли этот стат поднимать на текущем уровне перса)
+ $u->info['stats'] = ConversionHelper::arrayToDataString($st);
+ Db::sql('update stats set stats = ? where id = ?', [$u->info['stats'], $u->info['id']]);
+
+ //Надо добавить UPDATE в базе свободных статов
+ $u->stats = $u->getStats($u->info['id'], 0, 1);
+ $u->testItems($u->info['id'], $u->stats, 0);
+ $st = ConversionHelper::dataStringToArray($u->info['stats']);
+ }
+ }
}
+
+$err = "$err";
#------------------Запросы и прочее
?>
-
-
-
-
-Комната Знахаря
-=$err;?>error != '') {
- echo ' '.$u->error.'';
-}
- if($re!=''){ echo ' '.$re.''; }
-?>
-Запахи трав наполняют помещение, непонятные и пугающие предметы скрываются в пляшущих тенях...
-Говорят, здесь можно изменить свою судьбу.
-Стать кем-то иным... кем раньше был лишь в мечтах...
-Деньги: =$u->info['money'];?> кр.
-Бесплатных перераспределений: Сегодня - неограничено!info['znahar']); } ?>
- |
-
-
-
-
-
-= $goLis; ?>
-
-
-
-
-
-
- |
- |
-
-
- |
-
-
-
- |
-
-
-
-
- |
-
+
+
+
+
+
+
+
+
+ Комната Знахаря
+ = $err; ?>error != '') {
+ echo ' ' . $u->error . '';
+ }
+ if ($re != '') {
+ echo ' ' . $re . '';
+ }
+ ?>
+
+ Запахи трав наполняют помещение, непонятные и пугающие предметы скрываются в пляшущих тенях...
+ Говорят, здесь можно изменить свою судьбу. Стать кем-то иным... кем раньше был лишь в мечтах...
+
+ |
+
+
+
+
+
+ = $goLis; ?>
+
+
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+ |
+
-Прежде чем перераспределять свои параметры, Вам необходимо полностью их сбросить
-
-
-
-
-
-//рейтинг?>
-
-
- |