Переезд impstats и additem..

This commit is contained in:
2023-04-16 02:54:34 +03:00
parent 3dc4cf7284
commit 2bc67ce543
127 changed files with 584 additions and 612 deletions
+21 -54
View File
@@ -1,5 +1,6 @@
<?php
use Core\ConversionHelper;
use Core\Db;
use DarksLight2\Training\TrainingManager;
use Insallah\Math;
@@ -113,7 +114,7 @@ class Priems
}
$x++;
$data['add_mg2static_points'] = $x;
$data = $this->impStats($data);
$data = ConversionHelper::arrayToDataString($data);
Db::sql(
'update eff_users set x = ?, data = ? where uid = ? and `delete` = 0 and v2 = 260 and user_use = ?',
[$x, $data, $uid, $this->u->info['id']]
@@ -415,40 +416,6 @@ class Priems
return $r;
}
/** Превращает строку data ('a=1|b=2|c=3') из БД в массив [a=>1, b=>2, c=>3].
* @param $m
* @return array
*/
public function lookStatsArray($m)
{
$arr = json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $m . '}'), true);
return $arr ?: [];
}
/** Превращает массив [a=>1, b=>2, c=>3] в строку data ('a=1|b=2|c=3') для БД.
* @param array $m
* @return string
*/
private function impStats(array $m)
{
$str = json_encode($m);
return $str ? str_replace(['":', ',"', '{"', '}'], ['=', '|'], $str) : '';
}
/**
* @param $data
* @param array $values
* @return string
*/
private function changeStatsData($data, array $values)
{
$arr = $this->lookStatsArray($data);
foreach ($values as $key => $value) {
$arr[$key] = $value;
}
return $this->impStats($arr);
}
public function magicRegen($ue, $hpmin, $tmp, $pl, $eff, $rp = 0, $dp = 0, $krituet = true, $dopyrn = 0)
{
global $btl;
@@ -533,7 +500,7 @@ class Priems
mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl2['v2'] . '" LIMIT 1')
);
if (isset($pl2['priem']['id'])) {
$dt1 = $this->lookStatsArray($pl2['priem']['date2']);
$dt1 = ConversionHelper::dataStringToArray($pl2['priem']['date2']);
if (isset($dt1['yron_u2'])) {
$minu = $this->getdr(
@@ -1041,7 +1008,7 @@ class Priems
mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $pl2['v2'] . '" LIMIT 1')
);
if (isset($pl2['priem']['id'])) {
$dt1 = $this->lookStatsArray($pl2['priem']['date2']);
$dt1 = ConversionHelper::dataStringToArray($pl2['priem']['date2']);
if (isset($dt1['yron_u2'])) {
$minu = $this->getdr(
$dt1['yron_u2'], [0 => 'lvl1', 1 => 'yr1', 2 => 'ts5', 3 => 'ts6'],
@@ -1661,8 +1628,8 @@ class Priems
public function plusData($d1, $d2)
{
global $u;
$j1 = $this->lookStatsArray($d1);
$j2 = $this->lookStatsArray($this->redate($d2, $this->u->info['id']));
$j1 = ConversionHelper::dataStringToArray($d1);
$j2 = ConversionHelper::dataStringToArray($this->redate($d2, $this->u->info['id']));
$v = $this->u->lookKeys($this->redate($d2, $this->u->info['id']), 0); // ключи 2
//добавляем данные друг к другу
$i = 0;
@@ -1680,7 +1647,7 @@ class Priems
$i++;
}
$inf = rtrim($inf, ', ');
$j1 = $this->u->impStats($j1);
$j1 = ConversionHelper::arrayToDataString($j1);
return $j1;
}
@@ -1688,7 +1655,7 @@ class Priems
{
global $u, $btl;
$rcu = false;
$j = $this->lookStatsArray($pl['date2']);
$j = ConversionHelper::dataStringToArray($pl['date2']);
$mpr = false;
$addch = 0;
$uid = $this->u->info['id'];
@@ -1790,8 +1757,8 @@ class Priems
}
} elseif ($j['onlyOne'] > 1) {
if ($mpr['x'] < $j['onlyOne'] && isset($j['date3Plus'])) {
$j1 = $this->lookStatsArray($mpr['data']);
$j2 = $this->lookStatsArray($this->redate($pl['date3'], $this->u->info['id']));
$j1 = ConversionHelper::dataStringToArray($mpr['data']);
$j2 = ConversionHelper::dataStringToArray($this->redate($pl['date3'], $this->u->info['id']));
$v = $this->u->lookKeys($this->redate($pl['date3'], $this->u->info['id']), 0); // ключи 2
//добавляем данные друг к другу
$i = 0;
@@ -1809,7 +1776,7 @@ class Priems
$i++;
}
$inf = rtrim($inf, ', ');
$j1 = $this->u->impStats($j1);
$j1 = ConversionHelper::arrayToDataString($j1);
$pld[0] = ' x' . ($mpr['x'] + 1);
if ($j['refHod'] == 1) {
$mpr['hod'] = $pl['limit'];
@@ -1982,7 +1949,7 @@ class Priems
$this->u->info['priems_z'] = $pz;
$btl->users[$btl->uids[$this->u->info['id']]]['priems_z'] = $pz;
$btl->stats[$btl->uids[$this->u->info['id']]]['priems_z'] = $pz;
$tr = $this->lookStatsArray($pl['tr']);
$tr = ConversionHelper::dataStringToArray($pl['tr']);
if (isset($tr['tr_mpNow'])) {
$tr['tr_mpNow'] = round($tr['tr_mpNow'] / 100 * (100 - $this->u->stats['min_use_mp']));
$btl->users[$btl->uids[$this->u->info['id']]]['mpNow'] -= $tr['tr_mpNow'];
@@ -2167,8 +2134,8 @@ class Priems
public function testpriem($pl, $t = 1, $o = 0)
{
global $c, $u, $code, $btl;
$tr = $this->lookStatsArray($pl['tr']);
$d2 = $this->lookStatsArray($pl['date2']);
$tr = ConversionHelper::dataStringToArray($pl['tr']);
$d2 = ConversionHelper::dataStringToArray($pl['date2']);
$x = 1;
$notr = 0;
@@ -2342,7 +2309,7 @@ class Priems
{
global $u, $c, $code, $btl;
$pz = explode('|', $this->u->info['priems_z']);
$tr = $this->lookStatsArray($pl['tr']);
$tr = ConversionHelper::dataStringToArray($pl['tr']);
$trs = '';
$x = 0;
$notr = 0;
@@ -2586,7 +2553,7 @@ class Priems
);
$leveledDamage = $baseDamage[$level] + 40 / 100 * (5 * $magicTargetTier);
list($damage, $isCrit, $isMiss) = $this->magicAttack(
[$damage, $isCrit, $isMiss] = $this->magicAttack(
$btl, $this->u->info['id'], $this->ue['id'], $leveledDamage, self::FIRE, 1
);
//Используем проверку на урон приемов
@@ -2668,7 +2635,7 @@ class Priems
) : $pl['date3'];
// Костыль. Будет работать, пока приём изменяет ОДИН параметр.
$effect = "Защита от магии {$data[$element][1]}: " . current($this->lookStatsArray($dataStr));
$effect = "Защита от магии {$data[$element][1]}: " . current(ConversionHelper::dataStringToArray($dataStr));
$color = $this->logColor[$element];
$name = "Цель {$data[$element][1]}";
@@ -2715,7 +2682,7 @@ class Priems
}//Проверяем эффект
$prv['j_priem'] = $btl->stats[$btl->uids[$u1]]['u_priem'][$j_id][0];
$pvr['data'] = $this->lookStatsArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']);
$pvr['data'] = ConversionHelper::dataStringToArray($btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['data']);
$pName = $btl->stats[$btl->uids[$u1]]['effects'][$prv['j_priem']]['name'];
$pvr['hp'] = $pvr['data']['atgm'];
@@ -2763,7 +2730,7 @@ class Priems
private function devouringFlameInit($id, array $pl, Battle $btl)
{
$baseDamage = [6 => 53, 7 => 63, 8 => 77, 9 => 91, 10 => 110, 11 => 133,];
list($damage, , $isMiss) = $this->magicAttack(
[$damage, , $isMiss] = $this->magicAttack(
$btl, $this->u->info['id'], $this->ue['id'], $baseDamage[$pl['level']], self::FIRE
);
if ($isMiss || $damage <= 0) {
@@ -2777,7 +2744,7 @@ class Priems
$logText, $btl->hodID + 1
);
$data = $this->impStats(['atgm' => max(floor($damage / 5), 1)]);
$data = ConversionHelper::arrayToDataString(['atgm' => max(floor($damage / 5), 1)]);
$this->addPriem(
$this->ue['id'], $pl['id'], $data, 0, 77, 5, $this->u->info['id'], 1, 'пожирающеепламя', 0, 0, 1
@@ -2801,7 +2768,7 @@ class Priems
$datas = Db::getColumn($q, array_fill(0, 3, $this->ue['id']));
$stats = array_fill_keys(['s1', 's2', 's3', 's5', 's6'], 0);
foreach ($datas as $data) {
$data = $this->lookStatsArray($data);
$data = ConversionHelper::dataStringToArray($data);
print_r($data);
foreach (array_keys($stats) as $stat) {
if (isset($data[$stat])) {