null, 'uid' => null, 'name' => null, 'data' => '', 'overType' => 0, 'timeUse' => null, 'timeAce' => 0, 'user_use' => '', 'v1' => '0', 'v2' => 0, 'img2' => '', 'x' => 1, 'hod' => -1, 'bj' => '0', 'sleeptime' => 0, 'no_Ace' => 0, 'file_finish' => '', 'tr_life_user' => 0, 'deactiveTime' => 0, 'deactiveLast' => 0, 'mark' => 0, 'bs' => 0, ]; $args = array_replace($args, $values); if (!isset($args['id_eff'], $args['uid'], $args['name'], $args['timeUse'])) { return; } Db::sql($sql, $args); } /** Дать игроку эффект. * @param int $uid id игрока * @param int $id id эффекта * @param bool $ignoreLimits * @return bool */ public static function addById(int $uid, int $id, bool $ignoreLimits = false): bool { $eff = Effect::getAllbyId($id); if (!$eff['id2']) { return false; } if (!$ignoreLimits) { if ($eff['onlyOne'] > 0) { self::removeByEffectId($uid, $eff['id2']); } if ($eff['oneType'] > 0) { self::removeByOverType($uid, $eff['overType']); } } Db::sql( 'insert into eff_users (overType, id_eff, uid, name, timeUse, data, no_Ace) values (?,?,?,?,unix_timestamp(),?,?)', [$eff['oneType'], $eff['id2'], $uid, $eff['mname'], $eff['mdata'], $eff['noAce']] ); return true; } public static function addInjury($uid, $type, $lvl): void { $stat = rand(1, 3); // пока без духовности $img = "eff_travma$type.gif"; if ($type == 1) { $name = 'Легкая травма'; $timeEnd = rand(1, 3);// время травмы от 1.30 до 6 часов $data = 'add_s' . $stat . '=-' . $lvl; } elseif ($type == 2) { $name = 'Средняя травма'; $timeEnd = rand(3, 5);// время травмы от 6 до 12 часов $data = 'add_s' . $stat . '=-' . ($lvl * 2); } elseif ($type == 3) { $name = 'Тяжелая травма'; $timeEnd = rand(5, 7);// время травмы от 12 до 6 часов $data = 'add_s' . $stat . '=-' . ($lvl * 3); } else { $name = 'Неизлечимая травма'; $timeEnd = 24;// время травмы от 24 часа $data = 'add_s' . $stat . '=-' . ($lvl * 50); } $timeEnd *= 3600; Db::sql( "insert into eff_users (id_eff, uid, name, timeUse, data, img2, v1, timeace) values (4,?,?,unix_timestamp(),?,?,?,?)", [$uid, $name, $data, $img, $type, $timeEnd] ); self::addById($uid, 263); } public static function removeByEffectId(int $userId, int $effectId): void { Db::sql('delete from eff_users where id_eff = ? and uid = ?', [$effectId, $userId]); } public static function removeByOverType(int $userId, int $overType): void { Db::sql('delete from eff_users where overType = ? and uid = ?', [$overType, $userId]); } public static function hasInjury(int $uid): bool { return Db::getValue('select count(*) from eff_users where id_eff in (4,5,6) 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 $userId, int $id): void { Db::sql('delete from eff_users where id = ? and uid = ?', [$id, $userId]); } public static function removeByIds(int $userId, ...$ids): void { Db::sql('delete from eff_users where id in (?) and uid = ?', [implode(',', $ids), $userId]); } public static function removePriems(int $userid): void { Db::sql("delete from eff_users where v1 = 'priem' and uid = ?", [$userid]); } public static function hasAttackTimeLimit(int $attackerId): bool { return Db::getValue('select count(*) from eff_users where id_eff = 478 and `delete` = 0 and uid = ?', [$attackerId]) > 0; } public static function isImmuneToAttack(int $targetId): bool { return Db::getValue('select count(*) from eff_users where id_eff in (479, 480, 481) and `delete` = 0 and uid = ?', [$targetId]) > 0; } public static function giveAttackImmunity(int $userId): void { Db::sql("insert into eff_users (no_Ace, id_eff, overType, uid, name, data, timeUse) values (1,479,112,?,'Защита от нападения','zashitatk=1',unix_timestamp())", [$userId]); } /** * Духовность. Спасение. * Из свитка нападения. * @param $uid * @return void */ public static function addSpasenie($uid): void { self::removeByOverType($uid, 101); Db::sql("insert into eff_users (id_eff, uid, name, data, overType, timeUse, user_use, v1, v2, img2, bj, mark) values (22,?,'Спасение','add_spasenie=1',101,77,?,'priem',324,'preservation.gif','спасение',1)", [$uid, $uid]); } public static function getActive(int $userId): array { return Db::getRows('select * from eff_users where uid = ?', [$userId]); } public static function getAllInjuries(int $uid): array { return Db::getRows('select * from eff_users where uid = ? and id_eff in (4,5,6) order by id_eff', [$uid]); } }