/ *
Shidla [SGC] | 2013
ICQ: 312-298-513
2.8.2 [Végső Verzió] | 2013/05/21 | Forrás: Zombie-Mod.Ru
2.8.3 - Raj modban Tiltott a Lezer lerakasa! | Modositotta: Chasper.
* /
# Include <amxmodx>
# Include <fakemeta>
# Include <hamsandwich>
# Include <xs>
# Include <zombieplague>
# If AMXX_VERSION_NUM <180
# Állítják AMX Mod X v1.8.0 vagy újabb library szükséges!
# Endif
# Define dugó "[ZP] LaserMine"
# Define VERSION "2.8.3"
# Define szerző "SandStriker / Shidla / QuZ / DJ_WEST"
# Define RemoveEntity (% 1) engfunc (EngFunc_RemoveEntity% 1)
# Define TASK_PLANT 15100
# Define TASK_RESET 15500
# Define TASK_RELEASE 15900
# Define LASERMINE_TEAM pev_iuser1 / / EV_INT_iuser1
# Define LASERMINE_OWNER pev_iuser2 / / EV_INT_iuser3
# Define LASERMINE_STEP pev_iuser3
# Define LASERMINE_HITING pev_iuser4
# Define LASERMINE_COUNT pev_fuser1
# Define LASERMINE_POWERUP pev_fuser2
# Define LASERMINE_BEAMTHINK pev_fuser3
# Define LASERMINE_BEAMENDPOINT pev_vuser1
# Define MAX_MINES 10
# Define MODE_LASERMINE 0
# Define OFFSET_TEAM 114
# Define OFFSET_MONEY 115
# Define OFFSET_DEATH 444
# Define cs_get_user_team (% 1) CsTeams: get_offset_value (% 1, OFFSET_TEAM)
# Define cs_get_user_deaths (% 1) get_offset_value (% 1, OFFSET_DEATH)
# Define is_valid_player (% 1) (1 <=% 1 <= 32)
/ * # # # # # # # # # # # Цвета Мин и лазерных лучей # # # # # # # # # # # * /
/ / ITT adhato meg AZ Embernek a Lezer Színe!
új const
Red_Hum = 0 ,
Green_Hum = 0 ,
Blue_Hum = 255 ;
/ / ITT adhato meg a zombi Altal lerakott Lezer Színe!
új const
Red_Zomb = 0 ,
Green_Zomb = 255 ,
Blue_Zomb = 0 ;
/ * # # # # # # # Цвета Мин и лазерных лучей (конец) # # # # # # # * /
enum CsTeams {
CS_TEAM_UNASSIGNED = 0 ,
CS_TEAM_T = 1 ,
CS_TEAM_CT = 2 ,
CS_TEAM_SPECTATOR = 3
} ;
enum tripmine_e {
TRIPMINE_IDLE1 = 0 ,
TRIPMINE_IDLE2,
TRIPMINE_ARM1,
TRIPMINE_ARM2,
TRIPMINE_FIDGET,
TRIPMINE_HOLSTER,
TRIPMINE_DRAW,
TRIPMINE_WORLD,
TRIPMINE_GROUND,
} ;
enum
{
POWERUP_THINK,
BEAMBREAK_THINK,
EXPLOSE_THINK
} ;
enum
{
POWERUP_SOUND,
ACTIVATE_SOUND,
STOP_SOUND
} ;
új const
ENT_MODELS [ ] = "modellek / zombie_plague / LaserMines / v_laser_mine.mdl" ,
ENT_SOUND1 [ ] = "fegyverek / mine_deploy.wav" ,
ENT_SOUND2 [ ] = "fegyverek / mine_charge.wav" ,
ENT_SOUND3 [ ] = "fegyverek / mine_activate.wav" ,
ENT_SOUND4 [ ] = "items/suitchargeok1.wav" ,
ENT_SOUND5 [ ] = "items/gunpickup2.wav" ,
ENT_SOUND6 [ ] = "debris/bustglass1.wav" ,
ENT_SOUND7 [ ] = "debris/bustglass2.wav" ,
ENT_SPRITE1 [ ] = "sprite / laserbeam.spr" ,
ENT_SPRITE2 [ ] = "sprite / lm_explode.spr" ;
új const
ENT_CLASS_NAME [ ] = "lasermine" ,
ENT_CLASS_NAME3 [ ] = "func_breakable" ,
gSnarkClassName [ ] = "wpn_snark" , / / Для совместимости с плагином "Snark"
barnacle_class [ ] = "Barnacle" , / / Для совместимости с плагином "Barnacle"
weapon_box [ ] = "weaponbox" ;
új g_EntMine, gerenda, bumm
új g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND, g_NEMROUND, g_SURVROUND, g_SWARMROUND
új g_LRDMG, g_LFF, g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE
új g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME;
új g_msgDeathMsg, g_msgScoreInfo, g_msgDamage, g_msgStatusText;
új g_dcount [ 33 ] , g_nowtime, g_MaxPL
új bool : g_settinglaser [ 33 ]
Új Float : plspeed [ 33 ] , plsetting [ 33 ] , g_havemine [ 33 ] , g_deployed [ 33 ] ;
/ / New CVAR_LMCost
nyilvános plugin_init ( )
{
register_plugin ( dugó, VERSION, szerző ) ;
/ / Вызываем функцию Laser_TakeDamage при получении урона объектом ENT_CLASS_NAME3 (func_breakable)
RegisterHam ( Ham_TakeDamage , ENT_CLASS_NAME3, "Laser_TakeDamage" )
/ / Add a kódot itt ...
register_clcmd ( "+ setlaser" , "CreateLaserMine_Progress_b" ) ;
register_clcmd ( "setlaser-" , "StopCreateLaserMine" ) ;
register_clcmd ( "+ dellaser" , "ReturnLaserMine_Progress" ) ;
register_clcmd ( "dellaser-" , "StopReturnLaserMine" ) ;
register_clcmd ( "say" , "say_lasermine" ) ;
register_clcmd ( "buy_lasermine" , "BuyLasermineChat" ) ;
g_LENABLE = register_cvar ( "zp_ltm" , "1" )
g_LACCESS = register_cvar ( "zp_ltm_acs" , "0" ) / / 0 egész, 1 admin
g_LMODE = register_cvar ( "zp_ltm_mode" , "0" ) / / 0 lasermine, 1 tripmine
g_LAMMO = register_cvar ( "zp_ltm_ammo" , "3" )
g_LDMG = register_cvar ( "zp_ltm_dmg" , "60" ) / / lézer hit dmg
g_LCOST = register_cvar ( "zp_ltm_cost" , "2" )
g_LFMONEY = register_cvar ( "zp_ltm_fragmoney" , "1" )
g_LHEALTH = register_cvar ( "zp_ltm_health" , "500" )
g_LTMAX = register_cvar ( "zp_ltm_teammax" , "100" )
g_LRADIUS = register_cvar ( "zp_ltm_radius" , "320,0" )
g_LRDMG = register_cvar ( "zp_ltm_rdmg" , "100" ) / / sugár kárt
g_LFF = register_cvar ( "zp_ltm_ff" , "0" )
g_LCBT = register_cvar ( "zp_ltm_cbt" , "ALL" )
g_LDELAY = register_cvar ( "zp_ltm_delay" , "0,1" )
g_LVISIBLE = register_cvar ( "zp_ltm_line" , "1" )
g_LGLOW = register_cvar ( "zp_ltm_glow" , "0" )
g_LCBRIGHT = register_cvar ( "zp_ltm_bright" , "255" ) / / lézer vonal fényerő.
g_LCLMODE = register_cvar ( "zp_ltm_color" , "0" ) / / 0 csapat színe, az 1-zöld
g_LDMGMODE = register_cvar ( "zp_ltm_ldmgmode" , "0" ) / / 0 - frame dmg, 1 - egyszer DMG, 2 - 1 másodperc dmg
g_LDSEC = register_cvar ( "zp_ltm_ldmgseconds" , "1" ) / / 2. mód csak sebzés / másodperc. default 1 (sec)
g_LSTAMMO = register_cvar ( "zp_ltm_startammo" , "2" )
g_LBUYMODE = register_cvar ( "zp_ltm_buymode" , "1" ) ;
g_LCMDMODE = register_cvar ( "zp_ltm_cmdmode" , "0" ) ; / / 0 + a gombbal, 1 bind, 2 minden.
g_LBEO = register_cvar ( "zp_ltm_brokeenemy" , "1" ) ;
g_NOROUND = register_cvar ( "zp_ltm_noround" , "1" ) ;
g_NEMROUND = register_cvar ( "zp_ltm_nemround" , "1" ) ;
g_SURVROUND = register_cvar ( "zp_ltm_survround" , "1" ) ;
g_SWARMROUND = register_cvar ( "zp_ltm_swarmround" , "1" ) ;
register_event ( "DeathMsg" , "DeathEvent" , "a" ) ;
register_event ( "CurWeapon" , "állandó" , "a" , "1 = 1" ) ;
register_event ( "ResetHUD" , "delaycount" , "a" ) ;
register_event ( "ResetHUD" , "newround" , "B" ) ;
register_logevent ( "endround" , 2 , "0 = Világ váltott" , "1 = Round_End" ) ; / / Регистрируем конец раунда
register_event ( "Damage" , "CutDeploy_onDamage" , "B" ) ;
g_msgDeathMsg = get_user_msgid ( "DeathMsg" ) ;
g_msgScoreInfo = get_user_msgid ( "ScoreInfo" ) ;
g_msgDamage = get_user_msgid ( "Kár" ) ;
g_msgStatusText = get_user_msgid ( "statusText" ) ;
/ / Előre.
register_forward ( FM_Think , "ltm_Think" ) ;
register_forward ( FM_PlayerPostThink , "ltm_PostThink" ) ;
register_forward ( FM_PlayerPreThink , "ltm_PreThink" ) ;
/ / Регистируем файл языков
register_dictionary ( "LaserMines.txt" )
register_cvar ( "Shidla" , "[ZP] LaserMines v.2.8.2 Final" , FCVAR_SERVER | FCVAR_SPONLY )
/ / Регистрируем ExtraItem
g_LME = zp_register_extra_item ( "Laser Mine" , get_pcvar_num ( g_LCOST ) , ZP_TEAM_ANY )
}
nyilvános plugin_precache ( )
{
precache_sound ( ENT_SOUND1 ) ;
precache_sound ( ENT_SOUND2 ) ;
precache_sound ( ENT_SOUND3 ) ;
precache_sound ( ENT_SOUND4 ) ;
precache_sound ( ENT_SOUND5 ) ;
precache_sound ( ENT_SOUND6 ) ;
precache_sound ( ENT_SOUND7 ) ;
precache_model ( ENT_MODELS ) ;
gerenda = precache_model ( ENT_SPRITE1 ) ;
boom = precache_model ( ENT_SPRITE2 ) ;
vissza PLUGIN_CONTINUE ;
}
nyilvános plugin_modules ( )
{
require_module ( "fakemeta" ) ;
require_module ( "cstrike" ) ;
}
nyilvános plugin_cfg ( )
{
g_EntMine = engfunc ( EngFunc_AllocString , ENT_CLASS_NAME3 ) ;
arrayset ( g_havemine, 0 , sizeof ( g_havemine ) ) ;
arrayset ( g_deployed, 0 , sizeof ( g_deployed ) ) ;
g_MaxPL = get_maxplayers ( ) ;
új fájl [ 64 ] , get_localinfo ( "amxx_configsdir" , file, 63 ) ;
formátumú ( fájl, 63 , "% s / zp_ltm_cvars_ap.cfg" , file ) ;
ha a ( file_exists ( fájl ) ) server_cmd ( "exec% s" , file ) , server_exec ( ) ;
}
nyilvános Laser_TakeDamage ( áldozat inflictor, támadó, Float : f_Damage, bit_Damage )
{
ha a ( get_pcvar_num ( g_LBEO ) )
{
új i_Owner
/ / Получаем ID игрока, который поставил мину
i_Owner = PEV ( áldozat LASERMINE_OWNER )
/ / Если урон нанасит владелец, а так же проверка игрока.
ha ( i_Owner == támadó | | ! is_valid_player ( i_Owner ) | | ! is_valid_player ( támadó ) )
vissza PLUGIN_CONTINUE
/ / Если мина установлена человеком, то урон ей наносят только зомби
ha a ( ( CsTeams : PEV ( áldozat, LASERMINE_TEAM ) == CS_TEAM_CT ) && ( cs_get_user_team ( támadó ) ! = CS_TEAM_CT ) )
vissza PLUGIN_CONTINUE
/ / Если мина установлена зомби, а владелец мины и атакующий в разных командах - урон мине могун наносить все
ha a ( ( CsTeams : PEV ( áldozat, LASERMINE_TEAM ) == CS_TEAM_T ) && ( ( cs_get_user_team ( i_Owner ) ! = CS_TEAM_T ) | | ( CsTeams : PEV ( áldozat, LASERMINE_TEAM ) ! = cs_get_user_team ( támadó ) ) ) )
vissza PLUGIN_CONTINUE
vissza HAM_SUPERCEDE
}
vissza PLUGIN_CONTINUE
}
nyilvános delaycount ( id )
{
g_dcount [ id ] = floatround ( get_gametime ( ) ) ;
}
bool : CheckTime ( id )
{
g_nowtime = floatround ( get_gametime ( ) ) - g_dcount [ id ] ;
ha ( g_nowtime > = get_pcvar_num ( g_LDELAY ) )
vissza true ;
vissza false ;
}
nyilvános CreateLaserMine_Progress_b ( id )
{
ha a ( get_pcvar_num ( g_LCMDMODE ) ! = 0 )
CreateLaserMine_Progress ( id ) ;
vissza PLUGIN_HANDLED ;
}
nyilvános CreateLaserMine_Progress ( id )
{
ha ( ! CreateCheck ( id ) )
vissza PLUGIN_HANDLED ;
g_settinglaser [ id ] = true ;
message_begin ( MSG_ONE , 108 , { 0 , 0 , 0 } , id ) ;
write_byte ( 1 ) ;
write_byte ( 0 ) ;
message_end ( ) ;
set_task ( 1.2 , "Spawn" , ( TASK_PLANT + id ) ) ;
vissza PLUGIN_HANDLED ;
}
nyilvános ReturnLaserMine_Progress ( id )
{
ha ( ! ReturnCheck ( id ) )
vissza PLUGIN_HANDLED ;
g_settinglaser [ id ] = true ;
message_begin ( MSG_ONE , 108 , { 0 , 0 , 0 } , id ) ;
write_byte ( 1 ) ;
write_byte ( 0 ) ;
message_end ( ) ;
set_task ( 1.2 , "ReturnMine" , ( TASK_RELEASE + id ) ) ;
vissza PLUGIN_HANDLED ;
}
nyilvános StopCreateLaserMine ( id )
{
DeleteTask ( id ) ;
message_begin ( MSG_ONE , 108 , { 0 , 0 , 0 } , id ) ;
write_byte ( 0 ) ;
write_byte ( 0 ) ;
message_end ( ) ;
vissza PLUGIN_HANDLED ;
}
nyilvános StopReturnLaserMine ( id )
{
DeleteTask ( id ) ;
message_begin ( MSG_ONE , 108 , { 0 , 0 , 0 } , id ) ;
write_byte ( 0 ) ;
write_byte ( 0 ) ;
message_end ( ) ;
vissza PLUGIN_HANDLED ;
}
nyilvános ReturnMine ( id )
{
id - = TASK_RELEASE;
új TGT, test, Float : vo [ 3 ] , Float : a [ 3 ] ;
get_user_aiming ( id, TGT, test ) ;
ha ( ! pev_valid ( TGT ) ) visszatérés ;
PEV ( id, pev_origin , vo ) ;
PEV ( TGT, pev_origin , a ) ;
ha a ( get_distance_f ( vo, a ) > 70,0 ) vissza ;
új EntityName [ 32 ] ;
PEV ( TGT, pev_classname , EntityName, 31 ) ;
ha ( ! azonos ( EntityName, ENT_CLASS_NAME ) ) visszatérés ;
ha a ( PEV ( TGT, LASERMINE_OWNER ) ! = id ) tér vissza ;
RemoveEntity ( TGT ) ;
g_havemine [ id ] + + ;
g_deployed [ id ] - ;
emit_sound ( id, CHAN_ITEM , ENT_SOUND5, VOL_NORM , ATTN_NORM , 0 , PITCH_NORM )
ShowAmmo ( id )
vissza ;
}
nyilvános Spawn ( id )
{
id - = TASK_PLANT
/ / Motor
új i_Ent = engfunc ( EngFunc_CreateNamedEntity , g_EntMine ) ;
ha ( ! i_Ent )
{
client_print ( id, print_chat , "[Laesrmine Debug] nem tudja létrehozni testület" ) ;
vissza PLUGIN_HANDLED_MAIN ;
}
set_pev ( i_Ent, pev_classname , ENT_CLASS_NAME ) ;
engfunc ( EngFunc_SetModel , i_Ent, ENT_MODELS ) ;
set_pev ( i_Ent, pev_solid , SOLID_NOT ) ;
set_pev ( i_Ent, pev_movetype , MOVETYPE_FLY ) ;
set_pev ( i_Ent, pev_frame , 0 ) ;
set_pev ( i_Ent, pev_body , 3 ) ;
set_pev ( i_Ent, pev_sequence , TRIPMINE_WORLD ) ;
set_pev ( i_Ent, pev_framerate , 0 ) ;
set_pev ( i_Ent, pev_takedamage , DAMAGE_YES ) ;
set_pev ( i_Ent, pev_dmg , 100,0 ) ;
set_user_health ( i_Ent, get_pcvar_num ( g_LHEALTH ) ) ;
Új Float : vOrigin [ 3 ] ;
Új Float : vNewOrigin [ 3 ] , Float : vNormal [ 3 ] , Float : vTraceDirection [ 3 ] ,
Float : vTraceEnd [ 3 ] , Float : vEntAngles [ 3 ] ;
PEV ( id, pev_origin , vOrigin ) ;
velocity_by_aim ( id, 128 , vTraceDirection ) ;
xs_vec_add ( vTraceDirection, vOrigin, vTraceEnd ) ;
engfunc ( EngFunc_TraceLine , vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS , id, 0 ) ;
Új Float : fFraction;
get_tr2 ( 0 , TR_flFraction , fFraction ) ;
/ / - We hit valamit!
ha ( fFraction < 1.0 )
{
/ / - Save eredmények későbbi használatra.
get_tr2 ( 0 , TR_vecEndPos , vTraceEnd ) ;
get_tr2 ( 0 , TR_vecPlaneNormal , vNormal ) ;
}
xs_vec_mul_scalar ( vNormal, 8.0 , vNormal ) ;
xs_vec_add ( vTraceEnd, vNormal, vNewOrigin ) ;
engfunc ( EngFunc_SetSize , i_Ent, Float : { - 4.0 , - 4.0 , - 4.0 } , Float : { 4.0 , 4.0 , 4.0 } ) ;
engfunc ( EngFunc_SetOrigin , i_Ent, vNewOrigin ) ;
/ / - Forgatás tripmine.
vector_to_angle ( vNormal, vEntAngles ) ;
set_pev ( i_Ent, pev_angles , vEntAngles ) ;
/ / - Számítsa lézer vége eredetű.
Új Float : vBeamEnd [ 3 ] , Float : vTracedBeamEnd [ 3 ] ;
xs_vec_mul_scalar ( vNormal, 8192,0 , vNormal ) ;
xs_vec_add ( vNewOrigin, vNormal, vBeamEnd ) ;
engfunc ( EngFunc_TraceLine , vNewOrigin, vBeamEnd, IGNORE_MONSTERS , - 1. , 0 ) ;
get_tr2 ( 0 , TR_vecPlaneNormal , vNormal ) ;
get_tr2 ( 0 , TR_vecEndPos , vTracedBeamEnd ) ;
/ / - Save eredmények későbbi használatra.
set_pev ( i_Ent, LASERMINE_OWNER, id ) ;
set_pev ( i_Ent, LASERMINE_BEAMENDPOINT, vTracedBeamEnd ) ;
set_pev ( i_Ent, LASERMINE_TEAM, int : cs_get_user_team ( id ) ) ;
Új Float : fCurrTime = get_gametime ( ) ;
set_pev ( i_Ent, LASERMINE_POWERUP, fCurrTime + 2,5 ) ;
set_pev ( i_Ent, LASERMINE_STEP, POWERUP_THINK ) ;
set_pev ( i_Ent, pev_nextthink , fCurrTime + 0,2 ) ;
PlaySound ( i_Ent, POWERUP_SOUND ) ;
g_deployed [ id ] + + ;
g_havemine [ id ] - ;
DeleteTask ( id ) ;
ShowAmmo ( id ) ;
vissza 1 ;
}
állomány TeamDeployedCount ( id )
{
statikus i;
statikus CsTeams : t, t = cs_get_user_team ( id ) ;
statikus CNT; CNT = 0 ;
A ( i = 1 , i <= g_MaxPL; i + + )
{
ha a ( is_user_connected ( i ) )
ha ( t == cs_get_user_team ( i ) )
CNT + = g_deployed [ i ] ;
}
vissza CNT;
}
bool : CheckCanTeam ( id )
{
új arg [ 5 ] , CsTeam : db;
get_pcvar_string ( g_LCBT, Arg, 3 ) ;
ha a ( kiegyenlítési ( arg, "Z" ) )
{
num = CsTeam : CS_TEAM_T ;
}
még ha ( kiegyenlítési ( arg, "H" ) )
{
num = CsTeam : CS_TEAM_CT ;
}
még ha ( kiegyenlítési ( arg, "ALL" ) | | kiegyenlítési ( arg, "Hz" ) | | kiegyenlítési ( arg, "ZH" ) )
{
num = CsTeam : CS_TEAM_UNASSIGNED ;
}
más
{
num = CsTeam : CS_TEAM_UNASSIGNED ;
}
ha ( num ! = CsTeam : CS_TEAM_UNASSIGNED && num ! = CsTeam : cs_get_user_team ( id ) )
vissza false ;
vissza true ;
}
bool : CanCheck ( id, mód ) / / Проверки: когда можно ставить мины
{
ha ( ! get_pcvar_num ( g_LENABLE ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_NOTACTIVE" )
vissza false ;
}
ha a ( get_pcvar_num ( g_LACCESS ) ! = 0 )
ha ( ! ( get_user_flags ( id ) és ADMIN_IMMUNITY ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_NOACCESS" )
vissza false ;
}
ha ( ! pev_user_alive ( id ) ) vissza false ;
ha ( ! CheckCanTeam ( id ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_CBT" )
vissza false ;
}
ha ( üzemmód == 0 )
{
ha a ( g_havemine [ id ] <= 0 )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_DONTHAVEMINE" )
vissza false ;
}
}
ha ( üzemmód == 1 )
{
ha a ( get_pcvar_num ( g_LBUYMODE ) == 0 )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_CANTBUY" )
vissza false ;
}
ha a ( g_havemine [ id ] > = get_pcvar_num ( g_LAMMO ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_HAVEMAX" )
vissza false ;
}
ha a ( zp_get_user_ammo_packs ( id ) < get_pcvar_num ( g_LCOST ) )
{
client_print ( id, print_chat , "% L% L% d% L" , id, "CHATTAG" , id, "STR_NOMONEY" , get_pcvar_num ( g_LCOST ) , id, "STR_NEEDED" )
vissza false ;
}
}
ha ( ! CheckTime ( id ) )
{
client_print ( id, print_chat , "% L% L% d% L" , id, "CHATTAG" , id, "STR_DELAY" , get_pcvar_num ( g_LDELAY ) - g_nowtime, id, "STR_SECONDS" )
vissza false ;
}
vissza true ;
}
bool : ReturnCheck ( id )
{
ha ( ! CanCheck ( id, - 1. ) ) vissza false ;
ha a ( g_havemine [ id ] + 1 > get_pcvar_num ( g_LAMMO ) ) visszatérés hamis ;
új TGT, test, Float : vo [ 3 ] , Float : a [ 3 ] ;
get_user_aiming ( id, TGT, test ) ;
ha ( ! pev_valid ( TGT ) ) vissza false ;
PEV ( id, pev_origin , vo ) ;
PEV ( TGT, pev_origin , a ) ;
ha a ( get_distance_f ( vo, a ) > 70,0 ) vissza false ;
új EntityName [ 32 ] ;
PEV ( TGT, pev_classname , EntityName, 31 ) ;
ha ( ! azonos ( EntityName, ENT_CLASS_NAME ) ) vissza false ;
ha a ( PEV ( TGT, LASERMINE_OWNER ) ! = id ) tér vissza false ;
vissza true ;
}
bool : CreateCheck ( id )
{
ha ( ! CanCheck ( id, 0 ) ) vissza false ;
/ / Проверка на разрешение
ha ( ! zp_has_round_started ( ) && get_pcvar_num ( g_NOROUND ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_NOROUND" )
vissza false ;
}
ha a ( zp_is_nemesis_round ( ) && get_pcvar_num ( g_NEMROUND ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_NEMROUND" )
vissza false ;
}
ha a ( zp_is_survivor_round ( ) && get_pcvar_num ( g_SURVROUND ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_SURVROUND" )
vissza false ;
}
ha a ( zp_is_swarm_round ( ) && get_pcvar_num ( g_SWARMROUND ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_SWARMROUND" )
vissza false ;
}
ha a ( g_deployed [ id ] > = get_pcvar_num ( g_LAMMO ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_MAXDEPLOY" )
vissza false ;
}
ha a ( TeamDeployedCount ( id ) > = get_pcvar_num ( g_LTMAX ) )
{
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_MANYPPL" )
vissza false ;
}
Új Float : vTraceDirection [ 3 ] , Float : vTraceEnd [ 3 ] , Float : vOrigin [ 3 ] ;
PEV ( id, pev_origin , vOrigin ) ;
velocity_by_aim ( id, 128 , vTraceDirection ) ;
xs_vec_add ( vTraceDirection, vOrigin, vTraceEnd ) ;
engfunc ( EngFunc_TraceLine , vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS , id, 0 ) ;
Új Float : fFraction, Float : vTraceNormal [ 3 ] ;
get_tr2 ( 0 , TR_flFraction , fFraction ) ;
/ / - We hit valamit!
ha ( fFraction < 1.0 )
{
/ / - Save eredmények későbbi használatra.
get_tr2 ( 0 , TR_vecEndPos , vTraceEnd ) ;
get_tr2 ( 0 , TR_vecPlaneNormal , vTraceNormal ) ;
vissza true ;
}
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_PLANTWALL" )
DeleteTask ( id ) ;
/ / - Nem ért valamit. (Nem tömör)
vissza false ;
}
nyilvános ltm_Think ( i_Ent )
{
ha ( ! pev_valid ( i_Ent ) )
vissza FMRES_IGNORED ;
új EntityName [ 32 ] ;
PEV ( i_Ent, pev_classname , EntityName, 31 ) ;
ha ( ! get_pcvar_num ( g_LENABLE ) ) visszatérés FMRES_IGNORED ;
/ / - Entity nem tripmine, figyelmen kívül hagyva a következő ...
ha ( ! azonos ( EntityName, ENT_CLASS_NAME ) )
vissza FMRES_IGNORED ;
statikus Float : fCurrTime;
fCurrTime = get_gametime ( ) ;
kapcsolót ( PEV ( i_Ent, LASERMINE_STEP ) )
{
eset POWERUP_THINK :
{
Új Float : fPowerupTime;
PEV ( i_Ent, LASERMINE_POWERUP, fPowerupTime ) ;
ha ( fCurrTime > fPowerupTime )
{
set_pev ( i_Ent, pev_solid , SOLID_BBOX ) ;
set_pev ( i_Ent, LASERMINE_STEP, BEAMBREAK_THINK ) ;
PlaySound ( i_Ent, ACTIVATE_SOUND ) ;
}
ha a ( get_pcvar_num ( g_LGLOW ) ! = 0 )
{
ha a ( get_pcvar_num ( g_LCLMODE ) == 0 )
{
kapcsolót ( PEV ( i_Ent, LASERMINE_TEAM ) )
{
/ / Цвет лазера Зомби
esetben CS_TEAM_T : set_rendering ( i_Ent, kRenderFxGlowShell , Red_Zomb, Green_Zomb, Blue_Zomb, kRenderNormal , 5 ) ;
/ / Цвет лазера Человека
esetben CS_TEAM_CT : set_rendering ( i_Ent, kRenderFxGlowShell , Red_Hum, Green_Hum, Blue_Hum, kRenderNormal , 5 ) ;
}
} más
{
/ / Цвет лазера, если стоит "одинаковый для всех" цвет
set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5);
}
}
set_pev ( i_Ent, pev_nextthink , fCurrTime + 0,1 ) ;
}
eset BEAMBREAK_THINK :
{
statikus Float : Vend [ 3 ] , Float : vOrigin [ 3 ] ;
PEV ( i_Ent, pev_origin , vOrigin ) ;
PEV ( i_Ent, LASERMINE_BEAMENDPOINT, Vend ) ;
statikus iHit, Float : fFraction;
engfunc ( EngFunc_TraceLine , vOrigin, Vend, DONT_IGNORE_MONSTERS , i_Ent, 0 ) ;
get_tr2 ( 0 , TR_flFraction , fFraction ) ;
iHit = get_tr2 ( 0 , TR_pHit ) ;
/ / - Valami letette a lézer.
ha ( fFraction < 1.0 )
{
/ / - Figyelmen kívül hagyva mások tripmines entitás.
ha a ( pev_valid ( iHit ) )
{
PEV ( iHit, pev_classname , EntityName, 31 ) ;
/ / Игнорим всякую хрень
ha ( ! azonos ( EntityName, ENT_CLASS_NAME ) && ! azonos ( EntityName, gSnarkClassName ) && ! azonos ( EntityName, barnacle_class ) && ! azonos ( EntityName, weapon_box ) )
{
set_pev ( i_Ent, pev_enemy , iHit ) ;
ha a ( get_pcvar_num ( g_LMODE ) == MODE_LASERMINE )
CreateLaserDamage ( i_Ent, iHit ) ;
más
ha a ( get_pcvar_num ( g_LFF ) | | CsTeams : PEV ( i_Ent, LASERMINE_TEAM ) ! = cs_get_user_team ( iHit ) )
set_pev ( i_Ent, LASERMINE_STEP, EXPLOSE_THINK ) ;
ha ( ! pev_valid ( i_Ent ) ) / / если не верный объект - ничего не делаем. Спасибо DJ_WEST
vissza FMRES_IGNORED ;
set_pev ( i_Ent, pev_nextthink , fCurrTime + random_float ( 0,1 , 0,3 ) ) ;
}
}
}
ha a ( get_pcvar_num ( g_LDMGMODE ) ! = 0 )
ha a ( PEV ( i_Ent, LASERMINE_HITING ) ! = iHit )
set_pev ( i_Ent, LASERMINE_HITING, iHit ) ;
/ / - Tripmine még mindig ott van.
ha a ( pev_valid ( i_Ent ) )
{
statikus Float : fHealth;
PEV ( i_Ent, pev_health , fHealth ) ;
ha ( fHealth <= 0,0 | | ( PEV ( i_Ent, pev_flags ) és FL_KILLME ) )
{
set_pev ( i_Ent, LASERMINE_STEP, EXPLOSE_THINK ) ;
set_pev ( i_Ent, pev_nextthink , fCurrTime + random_float ( 0,1 , 0,3 ) ) ;
}
statikus Float : fBeamthink;
PEV ( i_Ent, LASERMINE_BEAMTHINK, fBeamthink ) ;
ha ( fBeamthink < fCurrTime && get_pcvar_num ( g_LVISIBLE ) )
{
DrawLaser ( i_Ent, vOrigin, Vend ) ;
set_pev ( i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0,1 ) ;
}
set_pev ( i_Ent, pev_nextthink , fCurrTime + 0,01 ) ;
}
}
eset EXPLOSE_THINK :
{
/ / - Megállás entitás gondolkodni
set_pev ( i_Ent, pev_nextthink , 0.0 ) ;
PlaySound ( i_Ent, STOP_SOUND ) ;
g_deployed [ PEV ( i_Ent, LASERMINE_OWNER ) ] - ;
CreateExplosion ( i_Ent ) ;
CreateDamage ( i_Ent, get_pcvar_float ( g_LRDMG ) , get_pcvar_float ( g_LRADIUS ) )
RemoveEntity ( i_Ent ) ;
}
}
vissza FMRES_IGNORED ;
}
PlaySound ( i_Ent, i_SoundType )
{
switch ( i_SoundType )
{
eset POWERUP_SOUND :
{
emit_sound ( i_Ent, CHAN_VOICE , ENT_SOUND1, VOL_NORM , ATTN_NORM , 0 , PITCH_NORM ) ;
emit_sound ( i_Ent, CHAN_BODY , ENT_SOUND2, 0.2 , ATTN_NORM , 0 , PITCH_NORM ) ;
}
eset ACTIVATE_SOUND :
{
emit_sound ( i_Ent, CHAN_VOICE , ENT_SOUND3, 0.5 , ATTN_NORM , 1. , 75. ) ;
}
eset STOP_SOUND :
{
emit_sound ( i_Ent, CHAN_BODY , ENT_SOUND2, 0.2 , ATTN_NORM , SND_STOP , PITCH_NORM ) ;
emit_sound ( i_Ent, CHAN_VOICE , ENT_SOUND3, 0.5 , ATTN_NORM , SND_STOP , 75 ) ;
}
}
}
DrawLaser ( i_Ent, const Float : v_Origin [ 3 ] , const Float : v_EndOrigin [ 3 ] )
{
új tcolor [ 3 ] ;
új CsapatID = PEV ( i_Ent, LASERMINE_TEAM ) ;
ha a ( get_pcvar_num ( g_LCLMODE ) == 0 )
{
switch ( CsapatID ) {
eset 1 : {
/ / Цвет луча для Зомби
tcolor [ 0 ] = Red_Zomb;
tcolor [ 1 ] = Green_Zomb;
tcolor [ 2 ] = Blue_Zomb;
}
eset 2. : {
/ / Цвет луча для Человека
tcolor [ 0 ] = Red_Hum;
tcolor [ 1 ] = Green_Hum;
tcolor [ 2 ] = Blue_Hum;
}
}
} más
{
/ / Цвет луча для всез при режиме 1-н луч для всех
tcolor [ 0 ] = random_num ( 50 , 200 ) ;
tcolor [ 1 ] = random_num ( 50 , 200 ) ;
tcolor [ 2 ] = random_num ( 50 , 200 ) ;
}
message_begin ( MSG_BROADCAST , SVC_TEMPENTITY ) ;
write_byte ( TE_BEAMPOINTS ) ;
engfunc ( EngFunc_WriteCoord , v_Origin [ 0 ] ) ;
engfunc ( EngFunc_WriteCoord , v_Origin [ 1 ] ) ;
engfunc ( EngFunc_WriteCoord , v_Origin [ 2 ] ) ;
engfunc ( EngFunc_WriteCoord , v_EndOrigin [ 0 ] ) ; / / Random
engfunc ( EngFunc_WriteCoord , v_EndOrigin [ 1 ] ) ; / / Random
engfunc ( EngFunc_WriteCoord , v_EndOrigin [ 2 ] ) , / / Random
write_short ( gerenda ) ;
write_byte ( 0 ) ;
write_byte ( 0 ) ;
write_byte ( 1 ) , / / Az élet
write_byte ( 5 ) , / / szélesség
write_byte ( 0 ) , / / wave
write_byte ( tcolor [ 0 ] ) ; / / r
write_byte ( tcolor [ 1 ] ) ; / / g
write_byte ( tcolor [ 2 ] ) , / / b
write_byte ( get_pcvar_num ( g_LCBRIGHT ) ) ;
write_byte ( 255 ) ;
message_end ( ) ;
}
CreateDamage ( iCurrent, Float : DmgMAX, Float : Radius )
{
/ / Get megadott paraméterek
Új Float : vecSrc [ 3 ] ;
PEV ( iCurrent, pev_origin , vecSrc ) ;
új AtkID = PEV ( iCurrent, LASERMINE_OWNER ) ;
új CsapatID = PEV ( iCurrent, LASERMINE_TEAM ) ;
új ent = - 1 ;
Új Float : tmpdmg = DmgMAX;
Új Float : visszarúgás = 0,0 ;
/ / Szükséges csinál néhány szép számítások: P
Új Float : Tabsmin [ 3 ] , Float : Tabsmax [ 3 ] ;
Új Float : vecSpot [ 3 ] ;
Új Float : Aabsmin [ 3 ] , Float : Aabsmax [ 3 ] ;
Új Float : vecSee [ 3 ] ;
új trRes;
Új Float : flFraction;
Új Float : vecEndPos [ 3 ] ;
Új Float : távolság;
Új Float : eredet [ 3 ] , Float : vecPush [ 3 ] ;
Új Float : invlen;
Új Float : sebesség [ 3 ] ;
új iHitHP, iHitTeam;
/ / Számítása falloff
Új Float : falloff;
ha ( Radius > 0.0 )
{
falloff = DmgMAX / Sugár;
} más {
falloff = 1.0 ;
}
/ / Find szörnyek, és a játékosok belül a leírásra sugár
míg a ( ( ent = engfunc ( EngFunc_FindEntityInSphere , enter, vecSrc, Radius ) ) ! = 0 )
{
ha ( ! pev_valid ( enter ) ) is ;
ha ( ! ( PEV ( ent, pev_flags ) és ( FL_CLIENT | FL_FAKECLIENT | FL_MONSTER ) ) )
{
/ / Entity nem egy játékos vagy szörny, figyelmen kívül hagyja
folytatódik ;
}
ha ( ! pev_user_alive ( enter ) ) is ;
/ / Reset adatok
visszarúgás = 1.0 ;
tmpdmg = DmgMAX;
/ / A következő számításokat nyújtott Orangutanz, köszönöm!
/ / Használjuk absmin és AbsMax a legpontosabb információkat
PEV ( ent, pev_absmin , Tabsmin ) ;
PEV ( ent, pev_absmax , Tabsmax ) ;
xs_vec_add ( Tabsmin, Tabsmax, Tabsmin ) ;
xs_vec_mul_scalar ( Tabsmin, 0.5 , vecSpot ) ;
PEV ( iCurrent, pev_absmin , Aabsmin ) ;
PEV ( iCurrent, pev_absmax , Aabsmax ) ;
xs_vec_add ( Aabsmin, Aabsmax, Aabsmin ) ;
xs_vec_mul_scalar ( Aabsmin, 0.5 , vecSee ) ;
engfunc ( EngFunc_TraceLine , vecSee, vecSpot, 0 , iCurrent, trRes ) ;
get_tr2 ( trRes, TR_flFraction , flFraction ) ;
/ / Robbanás "látni" a szervezet, így árt nekik! (Vagy a hatás a tárgyak engedélyezve xD)
ha ( flFraction > = 0,9 | | get_tr2 ( trRes, TR_pHit ) == ent )
{
/ / Dolgozzanak ki a távolságot a hatás és szervezet
get_tr2 ( trRes, TR_vecEndPos , vecEndPos ) ;
távolság = get_distance_f ( vecSrc, vecEndPos ) * falloff;
tmpdmg - = távolság;
ha ( tmpdmg < 0.0 )
tmpdmg = 0.0 ;
/ / Visszarúgás Effect
ha ( visszarúgás ! = 0,0 )
{
xs_vec_sub ( vecSpot, vecSee, származás ) ;
invlen = 1.0 / get_distance_f ( vecSpot, vecSee ) ;
xs_vec_mul_scalar ( származás, invlen, vecPush ) ;
PEV ( ent, pev_velocity , sebesség )
xs_vec_mul_scalar ( vecPush, tmpdmg, vecPush ) ;
xs_vec_mul_scalar ( vecPush, visszarúgás, vecPush ) ;
xs_vec_add ( sebesség, vecPush, sebesség ) ;
ha ( tmpdmg < 60,0 )
{
xs_vec_mul_scalar ( sebesség, 12.0 , sebesség ) ;
} más {
xs_vec_mul_scalar ( sebesség, 4.0 , sebesség ) ;
}
ha a ( sebesség [ 0 ] ! = 0,0 | | sebesség [ 1 ] ! = 0,0 | | sebesség [ 2 ] ! = 0,0 )
{
/ / Van valami mozgás todo <!-- s:) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":)\" title=\"mosoly\" /><!-- s:) -->
set_pev ( ent, pev_velocity , sebesség )
}
}
iHitHP = pev_user_health ( ent ) - floatround ( tmpdmg )
iHitTeam = int : cs_get_user_team ( ent )
ha ( iHitHP <= 0 )
{
ha ( iHitTeam ! = CsapatID )
{
zp_set_user_ammo_packs ( AtkID, zp_get_user_ammo_packs ( AtkID ) + get_pcvar_num ( g_LFMONEY ) )
set_score ( AtkID, enter, 1. , iHitHP )
} más
{
ha a ( get_pcvar_num ( g_LFF ) )
{
zp_set_user_ammo_packs ( AtkID, zp_get_user_ammo_packs ( AtkID ) - get_pcvar_num ( g_LFMONEY ) )
set_score ( AtkID, ent, - 1. , iHitHP )
}
}
} más
{
ha ( iHitTeam ! = CsapatID | | get_pcvar_num ( g_LFF ) )
{
/ / Set_pev (Player, pev_health, iHitHP)
set_user_health ( ent, iHitHP )
engfunc ( EngFunc_MessageBegin , MSG_ONE_UNRELIABLE , g_msgDamage, { 0.0 , 0.0 , 0.0 } , ent ) ;
write_byte ( floatround ( tmpdmg ) )
write_byte ( floatround ( tmpdmg ) )
write_long ( DMG_BULLET )
engfunc ( EngFunc_WriteCoord , vecSrc [ 0 ] )
engfunc ( EngFunc_WriteCoord , vecSrc [ 1 ] )
engfunc ( EngFunc_WriteCoord , vecSrc [ 2 ] )
message_end ( )
}
}
}
}
visszatérés
}
bool : pev_user_alive ( ent )
{
új deadflag = PEV ( ent, pev_deadflag ) ;
ha ( deadflag ! = DEAD_NO )
vissza false ;
vissza true ;
}
CreateExplosion ( iCurrent )
{
Új Float : vOrigin [ 3 ] ;
PEV ( iCurrent, pev_origin , vOrigin ) ;
message_begin ( MSG_BROADCAST , SVC_TEMPENTITY ) ;
write_byte ( 99 ) , / / 99 = KillBeam
write_short ( iCurrent ) ;
message_end ( ) ;
engfunc ( EngFunc_MessageBegin , MSG_PVS , SVC_TEMPENTITY , vOrigin, 0 ) ;
write_byte ( TE_EXPLOSION ) ;
engfunc ( EngFunc_WriteCoord , vOrigin [ 0 ] ) ;
engfunc ( EngFunc_WriteCoord , vOrigin [ 1 ] ) ;
engfunc ( EngFunc_WriteCoord , vOrigin [ 2 ] ) ;
write_short ( boom ) ;
write_byte ( 30 ) ;
write_byte ( 15 ) ;
write_byte ( 0 ) ;
message_end ( ) ;
}
CreateLaserDamage ( iCurrent, isHit )
{
ha ( isHit < 0 ) visszatérés PLUGIN_CONTINUE
kapcsolót ( get_pcvar_num ( g_LDMGMODE ) )
{
eset 1 :
{
ha a ( PEV ( iCurrent, LASERMINE_HITING ) == isHit )
vissza PLUGIN_CONTINUE
}
eset 2. :
{
ha a ( PEV ( iCurrent, LASERMINE_HITING ) == isHit )
{
statikus Float : CNT
statikus most htime, most = floatround ( get_gametime ( ) )
PEV ( iCurrent, LASERMINE_COUNT, CNT )
htime = floatround ( CNT )
ha ( jelenleg - htime < get_pcvar_num ( g_LDSEC ) )
{
vissza PLUGIN_CONTINUE ;
} más {
set_pev ( iCurrent, LASERMINE_COUNT, get_gametime ( ) )
}
} más
{
set_pev ( iCurrent, LASERMINE_COUNT, get_gametime ( ) )
}
}
}
Új Float : vOrigin [ 3 ] , Float : Vend [ 3 ]
PEV ( iCurrent, pev_origin , vOrigin )
PEV ( iCurrent, pev_vuser1 , Vend )
új CsapatID = PEV ( iCurrent, LASERMINE_TEAM )
új szClassName [ 32 ]
új Alive, Isten
új iHitTeam, iHitHP, id
új hitscore
szClassName [ 0 ] = '^ 0'
PEV ( isHit, pev_classname , szClassName, 32 )
ha a ( ( PEV ( isHit, pev_flags ) és ( FL_CLIENT | FL_FAKECLIENT | FL_MONSTER ) ) )
{
Alive = pev_user_alive ( isHit )
Isten = get_user_godmode ( isHit )
ha ( ! Alive | | God ) visszatérés PLUGIN_CONTINUE
iHitTeam = int : cs_get_user_team ( isHit )
iHitHP = pev_user_health ( isHit ) - get_pcvar_num ( g_LDMG )
id = PEV ( iCurrent, LASERMINE_OWNER ) / /, szNetName [32]
ha ( iHitHP <= 0 )
{
ha ( iHitTeam ! = CsapatID )
{
emit_sound ( isHit, CHAN_WEAPON , ENT_SOUND4, 1.0 , ATTN_NORM , 0 , PITCH_NORM )
hitscore = 1
zp_set_user_ammo_packs ( id, zp_get_user_ammo_packs ( id ) + get_pcvar_num ( g_LFMONEY ) )
set_score ( id, isHit, hitscore, iHitHP )
} más
{
ha a ( get_pcvar_num ( g_LFF ) )
{
emit_sound ( isHit, CHAN_WEAPON , ENT_SOUND4, 1.0 , ATTN_NORM , 0 , PITCH_NORM )
hitscore = - 1
zp_set_user_ammo_packs ( id, zp_get_user_ammo_packs ( id ) - get_pcvar_num ( g_LFMONEY ) )
set_score ( id, isHit, hitscore, iHitHP )
}
}
} még ha ( iHitTeam ! = CsapatID | | get_pcvar_num ( g_LFF ) )
{
emit_sound ( isHit, CHAN_WEAPON , ENT_SOUND4, 1.0 , ATTN_NORM , 0 , PITCH_NORM )
set_user_health ( isHit, iHitHP )
set_pev ( iCurrent, LASERMINE_HITING, isHit ) ;
engfunc ( EngFunc_MessageBegin , MSG_ONE_UNRELIABLE , g_msgDamage, { 0.0 , 0.0 , 0.0 } , isHit ) ;
write_byte ( get_pcvar_num ( g_LDMG ) )
write_byte ( get_pcvar_num ( g_LDMG ) )
write_long ( DMG_BULLET )
engfunc ( EngFunc_WriteCoord , vOrigin [ 0 ] )
engfunc ( EngFunc_WriteCoord , vOrigin [ 1 ] )
engfunc ( EngFunc_WriteCoord , vOrigin [ 2 ] )
message_end ( )
}
} különben ha ( az egyenlő ( szClassName, ENT_CLASS_NAME3 ) )
{
új hl;
hl = pev_user_health ( isHit ) ;
set_user_health ( isHit, hl - get_pcvar_num ( g_LDMG ) ) ;
}
vissza PLUGIN_CONTINUE
}
állomány pev_user_health ( id )
{
Új Float : egészség
PEV ( id, pev_health , egészségügy )
vissza floatround ( egészségügyi )
}
állomány set_user_health ( id, egészségügy )
{
egészség > 0 ? set_pev ( id, pev_health , float ( egészségügy ) ) : dllfunc ( DLLFunc_ClientKill , id ) ;
}
állomány get_user_godmode ( index ) {
Új Float : val
PEV ( index, pev_takedamage , val )
vissza ( val == DAMAGE_NO )
}
állomány set_user_frags ( index, felszerelést )
{
set_pev ( index, pev_frags , float ( felszerelést ) )
vissza 1
}
állomány pev_user_frags ( index )
{
Új Float : felszerelést;
PEV ( index, pev_frags , felszerelést ) ;
vissza floatround ( felszerelést ) ;
}
set_score ( id, cél, hitscore, HP ) {
új idfrags = pev_user_frags ( id ) + hitscore / / get_user_frags (id) + hitscore
set_user_frags ( id, idfrags )
új tarfrags = pev_user_frags ( target ) + 1 / / get_user_frags (target) + 1
set_user_frags ( cél, tarfrags )
új idteam = int : cs_get_user_team ( id )
új iddeaths = cs_get_user_deaths ( id )
message_begin ( MSG_ALL , g_msgDeathMsg, { 0 , 0 , 0 } , 0 )
write_byte ( id )
write_byte ( target )
write_byte ( 0 )
write_string ( ENT_CLASS_NAME )
message_end ( )
message_begin ( MSG_ALL , g_msgScoreInfo )
write_byte ( id )
write_short ( idfrags )
write_short ( iddeaths )
write_short ( 0 )
write_short ( idteam )
message_end ( )
set_msg_block ( g_msgDeathMsg, BLOCK_ONCE )
set_user_health ( cél, HP )
}
nyilvános BuyLasermine ( id )
{
ha ( ! CanCheck ( id, 1. ) ) vissza PLUGIN_CONTINUE
g_havemine [ id ] + + ;
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_BOUGHT" )
emit_sound ( id, CHAN_ITEM , ENT_SOUND5, VOL_NORM , ATTN_NORM , 0 , PITCH_NORM )
ShowAmmo ( id )
vissza PLUGIN_HANDLED
}
nyilvános BuyLasermineChat ( id )
{
ha ( ! CanCheck ( id, 1. ) ) vissza PLUGIN_CONTINUE
zp_set_user_ammo_packs ( id, zp_get_user_ammo_packs ( id ) - get_pcvar_num ( g_LCOST ) )
g_havemine [ id ] + + ;
client_print ( id, print_chat , "% L% L" , id, "CHATTAG" , id, "STR_BOUGHT" )
emit_sound ( id, CHAN_ITEM , ENT_SOUND5, VOL_NORM , ATTN_NORM , 0 , PITCH_NORM )
ShowAmmo ( id )
vissza PLUGIN_HANDLED
}
nyilvános zp_extra_item_selected ( id, Itemid )
{
ha ( Itemid == g_LME )
BuyLasermine ( id )
ha a ( g_havemine [ id ] > = get_pcvar_num ( g_LAMMO ) )
vissza ZP_PLUGIN_HANDLED
vissza PLUGIN_CONTINUE
}
ShowAmmo ( id )
{
új lőszer [ 51 ]
új PlugStat [ 555 char ] ;
formatex ( PlugStat, charsmax ( PlugStat ) , "% L" , LANG_PLAYER , "STR_STATE" )
formatex ( lőszer, 50 , "% s% i /% i" , PlugStat, g_havemine [ id ] , get_pcvar_num ( g_LAMMO ) )
message_begin ( MSG_ONE , g_msgStatusText, { 0 , 0 , 0 } , id )
write_byte ( 0 )
write_string ( lőszer )
message_end ( )
}
nyilvános showInfo ( id )
{
client_print ( id, print_chat , "% L" , id, "STR_REF" )
}
nyilvános say_lasermine ( id ) {
Új mondta [ 32 ]
read_argv ( 1 , azt mondta, 31 ) ;
ha ( ! get_pcvar_num ( g_LENABLE ) )
{
vissza PLUGIN_CONTINUE
}
ha a ( kiegyenlítési ( azt mondta, "/ buy lasermine" ) | | kiegyenlítési ( azt mondta, "/ m" ) | | kiegyenlítési ( azt mondta, "buy_lasermine" ) ) {
BuyLasermineChat ( id )
} még ha ( kiegyenlítési ( azt mondta, "lasermine" ) | | kiegyenlítési ( azt mondta, "/ lasermine" ) ) {
const SIZE = 1024
új msg [ SIZE + 1 ] , len = 0 ;
len + = formatex ( msg [ len ] , SIZE - len, "<html> <body>" )
len + = formatex ( msg [ len ] , SIZE - len, "<p> Lezer </ b> </ p> <blockquote>" )
len + = formatex ( msg [ len ] , SIZE - len, "<p> Fel tudsz Tenni a falra lezert. </ p> <br/>" )
len + = formatex ( msg [ len ] , SIZE - len, "<p> Lezer megoli AZ ellenfeleket, ha belemennek! </ p> <blockquote>" )
len + = formatex ( msg [ len ] , SIZE - len, "<p> Lezer parancsok: </ b> </ p> <blockquote>" )
len + = formatex ( msg [ len ] , SIZE - len, "<p> Ird: / buy lasermine </ b> vagy <b> / lm </ b> hogy lezert vehess! <br/>" )
len + = formatex ( msg [ len ] , SIZE - len, "<b> buy_lasermine </ b> / / Hogy F2-vel lezert vehess, ird a consolba: bind ^" F2 ^ "buy_lasermine <br/>" )
len + = formatex ( msg [ len ] , SIZE - len, "<b> + setlaser </ b> / / bind mouse3 + setlaser: a mouse3 set lasermine falra <br/>" )
len + = formatex ( msg [ len ] , SIZE - len, "</ body> </ html>" )
show_motd ( id, msg, "Lasermine Entity help" )
vissza PLUGIN_CONTINUE
}
még ha ( containi ( azt mondta, "lézer" ) ! = - 1 ) {
showInfo ( id )
vissza PLUGIN_CONTINUE
}
vissza PLUGIN_CONTINUE
}
nyilvános álló ( id )
{
ha ( ! g_settinglaser [ id ] )
vissza PLUGIN_CONTINUE
set_pev ( id, pev_maxspeed , 1.0 )
vissza PLUGIN_CONTINUE
}
nyilvános ltm_PostThink ( id )
{
ha ( ! g_settinglaser [ id ] && plsetting [ id ] ) {
resetspeed ( id )
}
még ha a ( g_settinglaser [ id ] && ! plsetting [ id ] ) {
PEV ( id, pev_maxspeed , plspeed [ id ] )
set_pev ( id, pev_maxspeed , 1.0 )
}
plsetting [ id ] = g_settinglaser [ id ]
vissza FMRES_IGNORED
}
nyilvános ltm_PreThink ( id )
{
ha ( ! pev_user_alive ( id ) | | g_settinglaser [ id ] == true | | is_user_bot ( id ) | | get_pcvar_num ( g_LCMDMODE ) == 1 )
vissza FMRES_IGNORED ;
ha a ( PEV ( id, pev_button ) és IN_USE && ! ( PEV ( id, pev_oldbuttons ) és IN_USE ) )
CreateLaserMine_Progress ( id )
vissza FMRES_IGNORED ;
}
resetspeed ( id )
{
set_pev ( id, pev_maxspeed , plspeed [ id ] )
}
nyilvános client_putinserver ( id ) {
g_deployed [ id ] = 0 ;
g_havemine [ id ] = 0 ;
DeleteTask ( id ) ;
vissza PLUGIN_CONTINUE
}
nyilvános client_disconnect ( id ) {
ha ( ! get_pcvar_num ( g_LENABLE ) )
vissza PLUGIN_CONTINUE
DeleteTask ( id ) ;
RemoveAllTripmines ( id ) ;
vissza PLUGIN_CONTINUE
}
nyilvános newround ( id ) {
ha ( ! get_pcvar_num ( g_LENABLE ) )
vissza PLUGIN_CONTINUE
PEV ( id, pev_maxspeed , plspeed [ id ] )
DeleteTask ( id ) ;
RemoveAllTripmines ( id ) ;
/ / Client_print (id, print_chat, "[ZP] [LM] [DEBUG] Minden Mines removied!");
delaycount ( id ) ;
SetStartAmmo ( id ) ;
vissza PLUGIN_CONTINUE
}
nyilvános endround ( id )
{
ha ( ! get_pcvar_num ( g_LENABLE ) )
vissza PLUGIN_CONTINUE
/ / Удаление мин после конца раунда
DeleteTask ( id ) ;
RemoveAllTripmines ( id ) ;
vissza PLUGIN_CONTINUE
}
nyilvános DeathEvent ( ) {
ha ( ! get_pcvar_num ( g_LENABLE ) )
vissza PLUGIN_CONTINUE
új id = read_data ( 2 )
ha a ( is_user_connected ( id ) ) DeleteTask ( id ) ;
vissza PLUGIN_CONTINUE
}
nyilvános RemoveAllTripmines ( i_Owner )
{
új jének = g_MaxPL + 1 ;
új clsname [ 32 ] ;
míg a ( ( jének = engfunc ( EngFunc_FindEntityByString , jének, "Besorolása" , ENT_CLASS_NAME ) ) )
{
ha ( i_Owner )
{
ha a ( PEV ( jének, LASERMINE_OWNER ) ! = i_Owner )
folytatódik ;
clsname [ 0 ] = '^ 0'
PEV ( jének, pev_classname , clsname, sizeof ( clsname ) - 1 ) ;
ha a ( kiegyenlítési ( clsname, ENT_CLASS_NAME ) )
{
PlaySound ( jének, STOP_SOUND ) ;
RemoveEntity ( jének ) ;
}
}
más
set_pev ( jének, pev_flags , FL_KILLME ) ;
}
g_deployed [ i_Owner ] = 0 ;
}
SetStartAmmo ( id )
{
új stammo = get_pcvar_num ( g_LSTAMMO ) ;
ha ( stammo <= 0 ) visszatérés PLUGIN_CONTINUE ;
g_havemine [ id ] = ( g_havemine [ id ] <= stammo ) ? stammo : g_havemine [ id ] ;
vissza PLUGIN_CONTINUE ;
}
nyilvános CutDeploy_onDamage ( id )
{
ha a ( get_user_health ( id ) < 1 )
DeleteTask ( id ) ;
}
DeleteTask ( id )
{
ha a ( task_exists ( ( TASK_PLANT + id ) ) )
{
remove_task ( ( TASK_PLANT + id ) )
}
ha a ( task_exists ( ( TASK_RELEASE + id ) ) )
{
remove_task ( ( TASK_RELEASE + id ) )
}
g_settinglaser [ id ] = false
vissza PLUGIN_CONTINUE ;
}
állomány set_rendering ( entitás, fx = kRenderFxNone , r = 255 , G = 255 , b = 255 , render = kRenderNormal , mennyiség = 16 )
{
statikus Float : RenderColor [ 3 ] ;
RenderColor [ 0 ] = float ( r ) ;
RenderColor [ 1 ] = float ( g ) ;
RenderColor [ 2 ] = float ( b ) ;
set_pev ( szervezet, pev_renderfx , fx ) ;
set_pev ( szervezet, pev_rendercolor , RenderColor ) ;
set_pev ( szervezet, pev_rendermode , render ) ;
set_pev ( szervezet, pev_renderamt , float ( mennyiség ) ) ;
vissza 1
}
/ / Gets korrekciós adatokat
get_offset_value ( id, típus )
{
új kulcs = - 1 ;
switch ( típus )
{
eset OFFSET_TEAM : kulcs = OFFSET_TEAM;
eset OFFSET_MONEY :
kulcs = OFFSET_MONEY;
eset OFFSET_DEATH : kulcs = OFFSET_DEATH;
}
ha ( kulcs ! = - 1 )
{
ha a ( is_amd64_server ( ) ) billentyű + = 25 ;
vissza get_pdata_int ( id, kulcs ) ;
}
vissza - 1 ;
}
állomány print_color ( const id, const input [ ] minden : ... )
{
új count = 1 , a játékosok [ 32 ]
statikus msg [ 191 ]
vformat ( msg, 190 , bemenet, 3 )
replace_all ( MSG, 190 , "! g" , "^ 4" )
replace_all ( msg, 190 , "! y" , "^ 1" )
replace_all ( msg, 190 , "! t" , "^ 3" )
replace_all ( MSG, 190 , "" , "a" )
replace_all ( msg, 190 , "" , "e" )
replace_all ( msg, 190 , "" , "i" )
replace_all ( msg, 190 , "" , "ó" )
replace_all ( msg, 190 , "" , "ö" )
replace_all ( msg, 190 , "" , "O" )
replace_all ( msg, 190 , "" , "U" )
replace_all ( msg, 190 , "" , "ü" )
replace_all(msg, 190, "�", "ű")
replace_all ( MSG, 190 , "" , "a" )
replace_all ( MSG, 190 , "" , "e" )
replace_all ( msg, 190 , "" , "i" )
replace_all ( msg, 190 , "" , "Ó" )
replace_all ( msg, 190 , "" , "O" )
replace_all ( msg, 190 , "" , "Ő" )
replace_all ( msg, 190 , "" , "U" )
replace_all ( msg, 190 , "" , "Ü" )
replace_all ( msg, 190 , "" , "U" )
ha ( id ) játékosok [ 0 ] = id, különben get_players ( játékosok száma, "ch" )
{
az ( új i = 0 , i < count, i + + )
{
ha a ( is_user_connected ( játékosok [ i ] ) )
{
message_begin ( MSG_ONE_UNRELIABLE , get_user_msgid ( "SayText" ) , _, a játékosok [ i ] )
write_byte ( játékosok [ i ] )
write_string ( msg )
message_end ( )
}
}
}
vissza PLUGIN_HANDLED
}