Member
|
07-10-2020
, 17:32
P, V, model file does not work
|
#1
|
p v file of the skin of the weapon does not work stays the weapon with the standard skin
PHP Code:
#include <amxmodx>
#include <fun>
#include <engine>
#include <hamsandwich>
#include <zombieplague>
#define PLUGIN "[ZP] Flame M4A1"
#define VERSION "1.0"
#define AUTHOR "Itzal"
// Models
new const mdl_v[] = "models/v_flame_m4a1.mdl"
new const mdl_p[] = "models/p_flame_m4a1.mdl"
// Macros
new g_MaxPlayers
#define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers)
// Weapon cost
#define WEAPON_COST 15
// Old ZP version?
// #define OLD_VERSION
// ZP default Burn sounds
new const burn_sounds[ ][ ] =
{
"zombie_plague/zombie_burn3.wav",
"zombie_plague/zombie_burn4.wav",
"zombie_plague/zombie_burn5.wav",
"zombie_plague/zombie_burn6.wav",
"zombie_plague/zombie_burn7.wav"
}
// Item ID, Flame Sprite, Smoke sprite
new g_ItemID, sprFlame, sprSmoke
// Some bools
new bool:g_bFlameM4a1[ 33 ]
new bool:g_AlreadyBurn[ 33 ]
// Cvars
new cvar_MaxBurnDMG, cvar_MinBurnDMG, cvar_BurnTime, cvar_Delay, cvar_OneRound
// Cached Cvars
new cvar_cMaxBurnDMG, cvar_cMinBurnDMG, cvar_cBurnTime, Float:cvar_cDelay
new Time[ 33 ]
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, AUTHOR )
// Get maxplayers
g_MaxPlayers = get_maxplayers( )
// CVARs
cvar_MaxBurnDMG = register_cvar( "zp_flamem4_maxdmg", "50" )
cvar_MinBurnDMG = register_cvar( "zp_flamem4_mindmg", "20" )
cvar_BurnTime = register_cvar( "zp_flamem4_time", "12" ) // Real Time = Time/2
cvar_Delay = register_cvar( "zp_flamem4_delay", "4.0" )
cvar_OneRound = register_cvar( "zp_flamem4_oneround", "1" )
// Cache cvars
register_event( "HLTV", "event_round_start", "a", "1=0", "2=0" )
// Hook drop
register_clcmd( "drop", "HookDrop" )
// Register the extraitem
g_ItemID = zp_register_extra_item( "Flame M4A1", WEAPON_COST, ZP_TEAM_HUMAN )
// Ham forwards
RegisterHam( Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1 )
RegisterHam( Ham_Killed, "player", "fw_PlayerKilled_Post", 1 )
RegisterHam( Ham_TakeDamage, "player", "fw_TakeDamage" )
// Gamemonitor info
static szCvar[ 30 ]
formatex( szCvar, charsmax(szCvar), "v%s by Javivi", VERSION )
register_cvar( "zp_flamem4_version", szCvar, FCVAR_SERVER|FCVAR_SPONLY )
}
public plugin_precache( )
{
// Precache flame/smoke sprite
sprFlame = precache_model( "sprites/flame.spr" )
sprSmoke = precache_model( "sprites/black_smoke3.spr" )
// Precache Burn sounds
for( new i = 0; i < sizeof burn_sounds; i++ )
precache_sound( burn_sounds[ i ] )
}
// Cache CVARs
public event_round_start( )
{
cvar_cMaxBurnDMG = get_pcvar_num( cvar_MaxBurnDMG )
cvar_cMinBurnDMG = get_pcvar_num( cvar_MinBurnDMG )
cvar_cBurnTime = get_pcvar_num( cvar_BurnTime )
cvar_cDelay = get_pcvar_float( cvar_Delay )
}
public client_disconnect( id )
{
if( g_bFlameM4a1[ id ] )
g_bFlameM4a1[ id ] = false
// Reset Time Counter
Time[ id ] = 0
}
public HookDrop( id )
{
// If some human drop the FlameM4a1
if(is_user_alive( id ) && get_user_weapon( id ) == CSW_M4A1 && g_bFlameM4a1 [ id ] )
{
g_bFlameM4a1[ id ] = false
}
}
/*========================
* Zombie Plague Forwards *
=========================*/
// When someone buy the extraitem
public zp_extra_item_selected( id, itemid )
{
if( itemid == g_ItemID )
{
if( !zp_has_round_started( ) || g_bFlameM4a1[ id ] )
{
client_print(id, print_chat, "Você não pode comprar M4a1 de fogo neste momento!")
#if defined OLD_VERSION
zp_set_user_ammo_packs( id, zp_get_user_ammo_packs(id) + WEAPON_COST )
#else
return ZP_PLUGIN_HANDLED
#endif
}
else
{
// Give auto-shotgun
give_item( id, "weapon_m4a1" )
// Give ammo
give_item( id, "ammo_buckshot" )
give_item( id, "ammo_buckshot" )
give_item( id, "ammo_buckshot" )
give_item( id, "ammo_buckshot" )
// Set FlameM4a1
g_bFlameM4a1[ id ] = true
}
}
return PLUGIN_HANDLED;
}
// When someone is infected
public zp_user_infected_post( id )
{
if( g_bFlameM4a1[ id ] ) // If have a FlameM4a1
g_bFlameM4a1[ id ] = false
}
/*==============
* Ham Forwards *
==============*/
public fw_PlayerSpawn_Post( id )
{
if( get_pcvar_num( cvar_OneRound ) == 1 && g_bFlameM4a1[ id ] )
{
client_print(id, print_chat, "[ZP] FlameM4a1 bullets are over!")
g_bFlameM4a1[ id ] = false
}
}
public fw_PlayerKilled_Post( victim, attacker, shouldgib )
{
if(g_bFlameM4a1[ victim ] ) // If have a FlameM4a1
g_bFlameM4a1[ victim ] = false
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(IsValidUser( attacker ) && victim != attacker && zp_get_user_zombie( victim ) // If attacker is valid and victim is zombie
&& g_bFlameM4a1[ attacker ] && get_user_weapon( attacker ) == CSW_M4A1 && !g_AlreadyBurn[ victim ] ) // If attacker have the FlameM4a1 and victim is not burned
{
// Burn / ON
g_AlreadyBurn[ victim ] = true
// Set burn time
Time[ victim ] = cvar_cBurnTime
// Burn victim
Burn( victim )
// Emit burn sound
emit_sound( victim, CHAN_VOICE, burn_sounds[random_num(0, sizeof burn_sounds - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM )
}
}
/*======================================================*/
public Burn( victim )
{
// Get user origin
static Origin[ 3 ] ; get_user_origin( victim, Origin )
// If burn time is over or victim are in water
if( Time[ victim ] <= 0 || get_entity_flags( victim ) & FL_INWATER )
{
// Show Smoke sprite
message_begin( MSG_PVS, SVC_TEMPENTITY, Origin )
write_byte( TE_SMOKE ) // TE id
write_coord( Origin[0] ) // x
write_coord( Origin[1] ) // y
write_coord( Origin[2]-50 ) // z
write_short( sprSmoke ) // sprite
write_byte( random_num(15, 20) ) // scale
write_byte( random_num(10, 20) ) // framerate
message_end( )
// Delay to allow burn again
set_task( cvar_cDelay, "Stop", victim )
// Exit
return
}
else
{
if( cvar_cBurnTime / 2 == Time[ victim ]) // At half-burntime
{
// Play another sound
emit_sound( victim, CHAN_VOICE, burn_sounds[random_num(0, sizeof burn_sounds - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM )
}
// Flame sprite
message_begin( MSG_PVS, SVC_TEMPENTITY, Origin )
write_byte( TE_SPRITE ) // TE id
write_coord( Origin[0]+random_num(-5, 5) ) // x
write_coord( Origin[1]+random_num(-5, 5) ) // y
write_coord( Origin[2]+random_num(-10, 10) ) // z
write_short( sprFlame ) // sprite
write_byte( random_num(5, 10) ) // scale
write_byte( 255 ) // brightness
message_end( )
// Decrease Time
Time[ victim ]--
// Decrease life (random)
set_user_health( victim, get_user_health( victim ) - random_num( cvar_cMinBurnDMG, cvar_cMaxBurnDMG ) )
// Repeat
set_task( 0.5, "Burn", victim )
}
}
public Stop( victim )
g_AlreadyBurn[ victim ] = false // Allow victim to be burn again
|
|