2023-04-15 19:17:40 +00:00
< ? php
2023-04-15 19:52:33 +00:00
namespace User ;
2023-04-15 19:17:40 +00:00
use Core\Db ;
2023-08-14 13:37:37 +00:00
use Model\Effect ;
2023-04-15 19:17:40 +00:00
2023-04-15 19:52:33 +00:00
class Effects
2023-04-15 19:17:40 +00:00
{
2023-11-02 13:57:39 +00:00
public static function addCustom ( array $values ) : void
2023-08-14 13:03:45 +00:00
{
$sql = '
insert into eff_users
(
id_eff ,
uid ,
name ,
data ,
overType ,
timeUse ,
timeAce ,
user_use ,
v1 ,
v2 ,
img2 ,
x ,
hod ,
bj ,
sleeptime ,
no_Ace ,
file_finish ,
tr_life_user ,
deactiveTime ,
deactiveLast ,
mark ,
bs
) values (
: id_eff ,
: uid ,
: name ,
: data ,
: overType ,
: timeUse ,
: timeAce ,
: user_use ,
: v1 ,
: v2 ,
: img2 ,
: x ,
: hod ,
: bj ,
: sleeptime ,
: no_Ace ,
: file_finish ,
: tr_life_user ,
: deactiveTime ,
: deactiveLast ,
: mark ,
: bs
) ' ;
$args = [
'id_eff' => 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 );
}
2023-04-15 19:17:40 +00:00
2023-04-15 22:54:07 +00:00
/** Дать игроку эффект .
* @ param int $uid id игрока
2023-08-14 13:03:45 +00:00
* @ param int $id id эффекта
2023-11-02 13:57:39 +00:00
* @ param bool $ignoreLimits
2023-08-14 13:37:37 +00:00
* @ return bool
2023-04-15 19:17:40 +00:00
*/
2023-08-14 13:37:37 +00:00
public static function addById ( int $uid , int $id , bool $ignoreLimits = false ) : bool
2023-04-15 19:17:40 +00:00
{
2023-08-14 13:37:37 +00:00
$eff = Effect :: getAllbyId ( $id );
2023-04-15 19:17:40 +00:00
if ( ! $eff [ 'id2' ]) {
2023-08-14 13:37:37 +00:00
return false ;
}
if ( ! $ignoreLimits ) {
if ( $eff [ 'onlyOne' ] > 0 ) {
self :: removeByEffectId ( $uid , $eff [ 'id2' ]);
}
if ( $eff [ 'oneType' ] > 0 ) {
self :: removeByOverType ( $uid , $eff [ 'overType' ]);
}
2023-04-15 19:17:40 +00:00
}
2023-08-14 13:37:37 +00:00
2023-04-15 19:17:40 +00:00
Db :: sql (
2023-08-14 13:37:37 +00:00
'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' ]]
2023-04-15 19:17:40 +00:00
);
2023-08-14 13:37:37 +00:00
return true ;
}
2023-11-05 02:46:07 +00:00
public static function removeByEffectId ( int $userId , int $effectId ) : void
2023-08-14 13:37:37 +00:00
{
2023-11-05 02:46:07 +00:00
Db :: sql ( 'delete from eff_users where id_eff = ? and uid = ?' , [ $effectId , $userId ]);
2023-08-14 13:37:37 +00:00
}
public static function removeByOverType ( int $userId , int $overType ) : void
{
Db :: sql ( 'delete from eff_users where overType = ? and uid = ?' , [ $overType , $userId ]);
2023-06-19 14:40:15 +00:00
}
public static function hasInjury ( int $uid ) : bool
{
2023-11-02 13:57:39 +00:00
return Db :: getValue ( 'select count(*) from eff_users where id_eff in (4,5,6) and `delete` = 0 and uid = ?' , [ $uid ]) > 0 ;
2023-06-19 14:40:15 +00:00
}
2023-04-15 19:17:40 +00:00
2023-06-19 14:40:15 +00:00
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 ;
}
2023-08-14 13:03:45 +00:00
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 hasAttackTimeLimit ( int $attackerId ) : bool
2023-06-19 14:40:15 +00:00
{
2023-08-14 13:03:45 +00:00
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 ;
}
2023-11-02 13:57:39 +00:00
public static function giveAttackImmunity ( int $userId ) : void
2023-08-14 13:03:45 +00:00
{
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 $id
* @ return void
*/
public static function addSpasenie ( $id ) : void
{
Db :: sql ( 'delete from eff_users where uid = ? and overType = 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 ) " , [ $id , $id ]);
2023-04-15 19:17:40 +00:00
}
2023-11-02 13:57:39 +00:00
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 ]);
}
2023-06-19 14:40:15 +00:00
}