Member
Join Date: Jan 2022
Location: Palestine
|
01-19-2022
, 03:24
Help to fix scripting problem
|
#1
|
Hello everyone !
i watched vedio about how to make VIP Extra Item , and i tried that on some guns :
#include <zmvip>
g_blockar = zv_register_extra_item(PLUGIN, 70, ZV_TEAM_HUMAN)
g_blockar = zv_items_register(PLUGIN, 70)
but it did not work , .. it show this error : argument type mismatch (argument 2)
so .. i hope you guys help me to fix this problem and guid me how to make vip extra item on right way .
here the code of the sma weapon >
PHP Code:
// Dont Touch
//#define _ZP50
// Define for Nromal, Undefine for ZP 4.3 + 5.0
//#define _DEBUG
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <zmvip>
#if defined _DEBUG
#define _CMD "blockar"
#else
#if !defined _ZP50
#include <zombieplague>
#else
#tryinclude <zp50_items>
#endif
#endif
#define PLUGIN "Brick Peace V2"
#define VERSION "1.0"
#define AUTHOR "Asdian"
#define V_MODEL_1 "models/v_blockar1.mdl"
#define V_MODEL_2 "models/v_blockar2.mdl"
#define V_MODEL_3 "models/v_blockchange.mdl"
#define P_MODEL_1 "models/p_blockar1.mdl"
#define P_MODEL_2 "models/p_blockar2.mdl"
#define W_MODEL_1 "models/w_blockar1.mdl"
#define W_MODEL_2 "models/w_blockar2.mdl"
#define S_MODEL_1 "models/block_shell.mdl"
#define S_MODEL_2 "models/block_missile.mdl"
#define CSW_BLOCKAR CSW_M4A1
#define weapon_blockar "weapon_m4a1"
#define OLD_W_MODEL "models/w_m4a1.mdl"
#define WEAPON_EVENT "events/m4a1.sc"
#define WEAPON_SECRETCODE 1992+999
#define RELOAD_TIME 3.0
#define LAUNCHER_RELOAD_TIME 2.0
#define TASK_CHANGE 1987
#define TASK_RELOAD 1987+9090
#define CLASSNAME "blockar"
#define CLASSNAME2 "blockar_smoke"
new const ShootSound[][] =
{
"weapons/blockar1-1.wav",
"weapons/blockar2-1.wav"
}
new const WeaponResources[][] =
{
"sprites/weapon_blockar.txt",
"sprites/640hud8.spr",
"sprites/640hud115.spr",
"sprites/640hud115_2.spr"
}
enum _:ANIM_A // Carbine Mode
{
ANIM_C_IDLE = 0,
ANIM_C_SHOOT1,
ANIM_C_SHOOT2,
ANIM_C_SHOOT3,
ANIM_C_CHANGE1,
ANIM_C_CHANGE2,
ANIM_C_RELOAD,
ANIM_C_DRAW
}
enum _:ANIM_B // Launcher Mode
{
ANIM_L_IDLE = 0,
ANIM_L_IDLE_EMPTY,
ANIM_L_SHOOT_START,
ANIM_L_SHOOT_END,
ANIM_L_CHANGE1,
ANIM_L_CHANGE1_EMPTY,
ANIM_L_CHANGE2,
ANIM_L_CHANGE2_EMPTY,
ANIM_L_RELOAD,
ANIM_L_DRAW,
ANIM_L_DRAW_EMPTY
}
enum _:Mode
{
MODE_CARBINE = 0,
MODE_GRENADE
}
enum _:Stat
{
STAT_NONE = 0,
STAT_EMPTY
}
enum _:Vars
{
VAR_DRAW = 0,
VAR_RELOAD,
VAR_CHANGE
}
new g_Had_BlockAR[33], g_WeaponMode[33], g_WeaponVars[33][3], g_GrenadeAmmo[33], g_Stat[33], g_old_weapon[33], Float:g_WeaponTimer[33]
new g_smokepuff_id, g_ham_bot, shells_model, g_blockar_event, spr_trail, g_expspr_id, g_expspr_id2, g_SmokeSprId
new cvar_damage, cvar_rocket, cvar_l_damage, cvar_l_radius, cvar_bpammo
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
register_message(get_user_msgid("DeathMsg"), "message_DeathMsg")
register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
register_forward(FM_PlaybackEvent, "fw_PlaybackEvent")
register_forward(FM_SetModel, "fw_SetModel")
register_forward(FM_CmdStart, "fw_CmdStart")
RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack")
RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")
RegisterHam(Ham_Weapon_Reload, weapon_blockar, "fw_Weapon_Reload")
RegisterHam(Ham_Weapon_Reload, weapon_blockar, "fw_Weapon_Reload_Post", 1)
RegisterHam(Ham_Weapon_WeaponIdle, weapon_blockar, "fw_Weapon_WeaponIdle_Post", 1)
RegisterHam(Ham_Item_AddToPlayer, weapon_blockar, "fw_Item_AddToPlayer_Post", 1)
RegisterHam(Ham_Item_Deploy, weapon_blockar, "fw_Item_Deploy_Post", 1)
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
register_think(CLASSNAME2, "fw_Think_Smoke")
register_touch(CLASSNAME, "*", "fw_Touch")
cvar_bpammo = register_cvar("blockar_bpammo", "90")
cvar_damage = register_cvar("blockar_damage", "40.0")
cvar_l_damage = register_cvar("blockar_l_damage", "100.0")
cvar_l_radius = register_cvar("blockar_l_radius", "150.0")
cvar_rocket = register_cvar("blockar_rocket", "3")
register_clcmd("weapon_blockar", "hook_weapon")
register_item()
}
#if defined _DEBUG
register_item() register_concmd(_CMD, "Get_BlockAR")
#else
new g_blockar
#if !defined _ZP50
register_item()
{
g_blockar = zv_register_extra_item(PLUGIN, 70, ZP_TEAM_HUMAN)
}
public zv_extra_item_selected(id, itemid) if(itemid == g_blockar) Get_BlockAR(id)
public zp_user_infected_post(id) Remove_blockar(id)
public zp_user_humanized_post(id, surv) Remove_blockar(id)
#else
register_item()
{
g_blockar = zv_items_register(PLUGIN, 70)
}
public zv_fw_items_select_pre(id, itemid, ignorecost)
{
if(itemid != g_blockar)
return ZP_ITEM_AVAILABLE
if(zp_core_is_zombie(id))
return ZP_ITEM_DONT_SHOW
return ZP_ITEM_AVAILABLE
}
public zv_fw_items_select_post(id, itemid) if(itemid == g_blockar) Get_BlockAR(id)
#endif
#endif
public plugin_precache()
{
engfunc(EngFunc_PrecacheModel, V_MODEL_1)
engfunc(EngFunc_PrecacheModel, V_MODEL_2)
engfunc(EngFunc_PrecacheModel, V_MODEL_3)
engfunc(EngFunc_PrecacheModel, P_MODEL_1)
engfunc(EngFunc_PrecacheModel, P_MODEL_2)
engfunc(EngFunc_PrecacheModel, W_MODEL_1)
engfunc(EngFunc_PrecacheModel, W_MODEL_2)
shells_model = engfunc(EngFunc_PrecacheModel, S_MODEL_1)
engfunc(EngFunc_PrecacheModel, S_MODEL_2)
new i
for(i = 0; i < sizeof(WeaponResources); i++)
{
if(i == 0) engfunc(EngFunc_PrecacheGeneric, WeaponResources[i])
else engfunc(EngFunc_PrecacheModel, WeaponResources[i])
}
for(i = 0; i < sizeof(ShootSound); i++)
engfunc(EngFunc_PrecacheSound, ShootSound[i])
// I use this way because the sound is soo many
precache_sounds_from_model(V_MODEL_1)
precache_sounds_from_model(V_MODEL_2)
precache_sounds_from_model(V_MODEL_3)
g_smokepuff_id = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr")
spr_trail = engfunc(EngFunc_PrecacheModel, "sprites/laserbeam.spr")
g_expspr_id = engfunc(EngFunc_PrecacheModel, "sprites/fexplo.spr")
g_expspr_id2 = engfunc(EngFunc_PrecacheModel, "sprites/eexplo.spr")
g_SmokeSprId = engfunc(EngFunc_PrecacheModel, "sprites/steam1.spr")
register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1)
}
public fw_PrecacheEvent_Post(type, const name[])
{
if(equal(WEAPON_EVENT, name))
g_blockar_event = get_orig_retval()
}
public message_DeathMsg()
{
static szTruncatedWeapon[33], iAttacker, iVictim
get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon))
iAttacker = get_msg_arg_int(1)
iVictim = get_msg_arg_int(2)
if(!is_user_connected(iAttacker) || iAttacker == iVictim) return PLUGIN_CONTINUE
if(equal(szTruncatedWeapon, "m4a1") && get_user_weapon(iAttacker) == CSW_BLOCKAR)
if(g_Had_BlockAR[iAttacker]) set_msg_arg_string(4, "blockar")
return PLUGIN_CONTINUE
}
public Get_BlockAR(id)
{
if(!is_user_alive(id))
return
if(get_user_weapon(id) == CSW_M4A1 && !g_Had_BlockAR[id])
fm_strip_user_gun(id, CSW_M4A1) // Remove M4A1
g_Had_BlockAR[id] = 1
g_WeaponMode[id] = MODE_CARBINE
g_GrenadeAmmo[id] = get_pcvar_num(cvar_rocket)
Reset_Value(id)
drop_weapons(id, 1)
fm_give_item(id, weapon_blockar)
set_weapon_anim(id, ANIM_C_DRAW)
Set_Model(id, Get_Mode(id))
cs_set_user_bpammo(id, CSW_BLOCKAR, get_pcvar_num(cvar_bpammo))
Update_Ammo(id)
client_printc(id, "!nPress !gSpray !nbutton to buy nade. !g(Default: T)")
}
public fw_PlayerKilled(id) Remove_blockar(id)
public Remove_blockar(id)
{
if(!is_user_connected(id))
return
g_Had_BlockAR[id] = 0
Reset_Value(id)
}
Reset_Value(id)
{
g_WeaponVars[id][VAR_CHANGE] = 0
g_WeaponVars[id][VAR_RELOAD] = 0
g_Stat[id] = (g_GrenadeAmmo[id] > 0 ? STAT_NONE : STAT_EMPTY)
}
public hook_weapon(id)
{
engclient_cmd(id, weapon_blockar)
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
if(!g_ham_bot && is_user_bot(id))
{
g_ham_bot = 1
set_task(0.1, "Do_Register_HamBot", id)
}
}
public Do_Register_HamBot(id)
{
RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack")
}
public Event_CurWeapon(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
return
static ent
ent = fm_get_user_weapon_entity(id, CSW_BLOCKAR)
if(!pev_valid(ent))
return
if(g_Had_BlockAR[id] && (get_user_weapon(id) == CSW_BLOCKAR && g_old_weapon[id] != CSW_BLOCKAR))
{
Set_Model(id, Get_Mode(id))
Draw_Weapon(id)
} else Reset_Value(id)
g_old_weapon[id] = get_user_weapon(id)
set_pdata_float(ent, 46, get_pdata_float(ent, 46, 4), 4)
}
public fw_Item_Deploy_Post(ent)
{
static id
id = fm_cs_get_weapon_ent_owner(ent)
if(!pev_valid(id))
return
if(!g_Had_BlockAR[id])
return
Set_Model(id, Get_Mode(id))
Draw_Weapon(id)
}
Draw_Weapon(id)
{
if(g_WeaponVars[id][VAR_CHANGE]) g_WeaponVars[id][VAR_CHANGE] = 0
g_WeaponVars[id][VAR_DRAW] = 1
set_task(1.6, "Remove", id)
Update_WeaponList(id)
Update_Ammo(id)
switch(Get_Mode(id))
{
case MODE_CARBINE:
{
set_weapon_anim(id, ANIM_C_DRAW)
set_weapons_timeidle(id, 1.5, 1.6)
}
case MODE_GRENADE:
{
set_weapons_timeidle(id, 1.8, 2.0)
if(Get_Stat(id) == STAT_EMPTY)
{
set_weapon_anim(id, ANIM_L_DRAW_EMPTY)
if(g_GrenadeAmmo[id] > 0)
{
if(task_exists(id+TASK_RELOAD))
{
remove_task(id+TASK_RELOAD)
set_task(1.5, "Reload", id+TASK_RELOAD)
} else set_task(1.5, "Reload", id+TASK_RELOAD)
}
} else set_weapon_anim(id, ANIM_L_DRAW)
}
}
}
public Remove(id) g_WeaponVars[id][VAR_DRAW] = 0
public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
if(!is_user_alive(id) || !is_user_connected(id))
return FMRES_IGNORED
if(get_user_weapon(id) == CSW_BLOCKAR && g_Had_BlockAR[id])
set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001)
return FMRES_HANDLED
}
public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2)
{
if(!is_user_connected(invoker))
return FMRES_IGNORED
if(get_user_weapon(invoker) != CSW_BLOCKAR || !g_Had_BlockAR[invoker])
return FMRES_IGNORED
if(eventid == g_blockar_event)
{
engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2)
set_weapon_anim(invoker, random_num(ANIM_C_SHOOT1, ANIM_C_SHOOT3))
emit_sound(invoker, CHAN_WEAPON, ShootSound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
make_shell(invoker)
return FMRES_SUPERCEDE
}
return FMRES_HANDLED
}
public fw_SetModel(entity, model[])
{
if(!pev_valid(entity))
return FMRES_IGNORED
static Classname[32]
pev(entity, pev_classname, Classname, sizeof(Classname))
if(!equal(Classname, "weaponbox"))
return FMRES_IGNORED
static iOwner
iOwner = pev(entity, pev_owner)
if(equal(model, OLD_W_MODEL))
{
static weapon
weapon = fm_find_ent_by_owner(-1, weapon_blockar, entity)
if(!pev_valid(weapon))
return FMRES_IGNORED
if(g_Had_BlockAR[iOwner])
{
Remove_blockar(iOwner)
set_pev(weapon, pev_impulse, WEAPON_SECRETCODE)
engfunc(EngFunc_SetModel, entity, Get_Mode(iOwner) == MODE_CARBINE ? W_MODEL_1 : W_MODEL_2)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public fw_CmdStart(id, uc_handle, seed)
{
if(!is_user_alive(id))
return FMRES_IGNORED
if(get_user_weapon(id) != CSW_BLOCKAR || !g_Had_BlockAR[id])
return FMRES_IGNORED
static NewButton
NewButton = get_uc(uc_handle, UC_Buttons)
if(get_uc(uc_handle, UC_Impulse) == 201)
{
set_uc(uc_handle, UC_Impulse, 0)
if(g_WeaponVars[id][VAR_CHANGE])
return FMRES_IGNORED
if(!g_GrenadeAmmo[id])
{
set_task(0.0, "Reload", id+TASK_RELOAD)
set_weapons_timeidle(id, 4.0, 3.2)
}
g_GrenadeAmmo[id] = get_pcvar_num(cvar_rocket)
}
if((NewButton & IN_ATTACK) && g_WeaponMode[id] == MODE_GRENADE)
{
if(!g_GrenadeAmmo[id])
{
client_print(id, print_center, "Out Of Ammo")
set_weapons_timeidle(id, 99999.0, 20.0)
} else if(!g_WeaponVars[id][VAR_CHANGE] && !g_WeaponVars[id][VAR_RELOAD] && g_GrenadeAmmo[id] > 0 && g_WeaponTimer[id] < get_gametime()) {
g_WeaponTimer[id] = get_gametime() + 4.0
set_weapons_timeidle(id, 4.0, 4.0)
set_weapon_anim(id, ANIM_L_SHOOT_START)
set_task(0.8, "Create_Grenade", id)
NewButton &= ~IN_ATTACK
set_uc(uc_handle, UC_Buttons, NewButton)
}
}
if(NewButton & IN_ATTACK2)
{
if((pev(id, pev_oldbuttons) & IN_ATTACK2) || g_WeaponVars[id][VAR_CHANGE])
return FMRES_IGNORED
if(g_WeaponVars[id][VAR_RELOAD]) g_WeaponVars[id][VAR_RELOAD] = 0
NewButton &= ~IN_ATTACK2
NewButton &= ~IN_ATTACK
set_uc(uc_handle, UC_Buttons, NewButton)
g_WeaponVars[id][VAR_CHANGE] = 1
set_weapons_timeidle(id, 5.0, 5.2)
set_weapon_anim(id, Get_Mode(id) == MODE_CARBINE ? ANIM_C_CHANGE1 : (Get_Stat(id) == STAT_NONE ? ANIM_L_CHANGE1 : ANIM_L_CHANGE1_EMPTY))
set_task(1.5, "Change_Idle", id+TASK_CHANGE)
}
return FMRES_IGNORED
}
public Change_Idle(id)
{
id -= TASK_CHANGE
if(!is_user_alive(id) || get_user_weapon(id) != CSW_BLOCKAR || !g_Had_BlockAR[id])
return
g_WeaponVars[id][VAR_CHANGE] = 1
set_pev(id, pev_viewmodel2, V_MODEL_3)
set_weapon_anim(id, 0)
set_task(2.5, "Change_Complete", id+TASK_CHANGE)
set_weapons_timeidle(id, 4.0, 2.5)
}
public Change_Complete(id)
{
id -= TASK_CHANGE
if(!is_user_alive(id) || get_user_weapon(id) != CSW_BLOCKAR || !g_Had_BlockAR[id])
return
g_WeaponMode[id] = 1 - g_WeaponMode[id]
g_WeaponVars[id][VAR_CHANGE] = 1
set_weapon_anim(id, Get_Mode(id) == MODE_CARBINE ? ANIM_C_CHANGE2 : (Get_Stat(id) == STAT_EMPTY ? ANIM_L_CHANGE2_EMPTY : ANIM_L_CHANGE2))
Set_Model(id, Get_Mode(id))
set_weapons_timeidle(id, 2.5, 1.7)
set_task(1.5, "End2", id+TASK_CHANGE)
}
public End2(id)
{
id -= TASK_CHANGE
remove_task(id+TASK_CHANGE)
g_WeaponVars[id][VAR_CHANGE] = 0
Update_WeaponList(id)
Update_Ammo(id)
set_weapon_anim(id, Get_Mode(id) == MODE_CARBINE ? ANIM_C_IDLE : (g_GrenadeAmmo[id] > 0 ? ANIM_L_IDLE : ANIM_L_IDLE_EMPTY))
set_weapons_timeidle(id, 0.0, 20.0)
}
public fw_TraceAttack(ent, attacker, Float:Damage, Float:fDir[3], ptr, iDamageType)
{
if(!is_user_alive(attacker) || !is_user_connected(attacker))
return HAM_IGNORED
if(get_user_weapon(attacker) != CSW_BLOCKAR || !g_Had_BlockAR[attacker] || Get_Mode(attacker) == MODE_GRENADE)
return HAM_IGNORED
static Float:flEnd[3], Float:vecPlane[3]
get_tr2(ptr, TR_vecEndPos, flEnd)
get_tr2(ptr, TR_vecPlaneNormal, vecPlane)
if(!is_user_alive(ent))
{
make_bullet(attacker, flEnd)
fake_smoke(attacker, ptr)
}
SetHamParamFloat(3, get_pcvar_float(cvar_damage))
return HAM_HANDLED
}
public fw_Weapon_Reload(ent)
{
static id; id = pev(ent, pev_owner)
if(!is_user_alive(id))
return HAM_IGNORED
if(!g_Had_BlockAR[id])
return HAM_IGNORED
if(Get_Mode(id) == MODE_GRENADE)
return HAM_SUPERCEDE
return HAM_HANDLED
}
public fw_Weapon_Reload_Post(ent)
{
static id; id = pev(ent, pev_owner)
if(!is_user_alive(id))
return HAM_IGNORED
if(!g_Had_BlockAR[id])
return HAM_IGNORED
if(Get_Mode(id) == MODE_GRENADE)
return HAM_IGNORED
if((get_pdata_int(ent, 54, 4) == 1) && Get_Mode(id) == MODE_CARBINE)
{
set_weapon_anim(id, ANIM_C_RELOAD)
set_pdata_float(id, 83, RELOAD_TIME, 5)
}
return HAM_HANDLED
}
public fw_Weapon_WeaponIdle_Post(ent)
{
static id; id = pev(ent, pev_owner)
if(!is_user_alive(id))
return HAM_IGNORED
if(!g_Had_BlockAR[id])
return HAM_IGNORED
if(get_pdata_float(ent, 48, 4) <= 0.1)
{
set_weapon_anim(id, Get_Mode(id) == MODE_CARBINE ? ANIM_C_IDLE : (g_GrenadeAmmo[id] > 0 ? ANIM_L_IDLE : ANIM_L_IDLE_EMPTY))
set_pdata_float(ent, 48, 20.0, 4)
}
return HAM_IGNORED
}
public fw_Item_AddToPlayer_Post(ent, id)
{
if(!pev_valid(ent))
return HAM_IGNORED
if(pev(ent, pev_impulse) == WEAPON_SECRETCODE)
{
g_Had_BlockAR[id] = 1
set_pev(ent, pev_impulse, 0)
}
Update_WeaponList(id)
return HAM_HANDLED
}
Update_WeaponList(id)
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), .player = id)
write_string(g_Had_BlockAR[id] == 1 ? "weapon_blockar" : "weapon_m4a1")
write_byte(4) // PrimaryAmmoID
write_byte(90) // PrimaryAmmoMaxAmount
write_byte(-1) // SecondaryAmmoID
write_byte(-1) // SecondaryAmmoMaxAmount
write_byte(0) // SlotID (0...N)
write_byte(6) // NumberInSlot (1...N)
write_byte(g_Had_BlockAR[id] == 1 ? CSW_BLOCKAR : CSW_M4A1) // WeaponID
write_byte(0) // Flags
message_end()
}
public Reload(id)
{
id -= TASK_RELOAD
if(!g_Had_BlockAR[id] || get_user_weapon(id) != CSW_BLOCKAR)
return
g_WeaponVars[id][VAR_RELOAD] = 1
set_weapon_anim(id, ANIM_L_RELOAD)
set_task(LAUNCHER_RELOAD_TIME, "Reload_End", id+TASK_RELOAD)
set_weapons_timeidle(id, 4.0, LAUNCHER_RELOAD_TIME + 0.2)
}
public Reload_End(id)
{
id -= TASK_RELOAD
g_WeaponVars[id][VAR_RELOAD] = 0
g_Stat[id] = STAT_NONE
set_weapons_timeidle(id, 1.0, 1.1)
remove_task(id+TASK_RELOAD)
}
public Create_Grenade(id)
{
set_weapon_anim(id, ANIM_L_SHOOT_END)
g_Stat[id] = STAT_EMPTY
if(g_GrenadeAmmo[id] > 1) set_task(1.0, "Reload", id+TASK_RELOAD)
else if(g_GrenadeAmmo[id] == 1) set_weapons_timeidle(id, 0.0, 20.0)
emit_sound(id, CHAN_WEAPON, ShootSound[1], 1.0, ATTN_NORM, 0, PITCH_NORM)
g_GrenadeAmmo[id]--
static Float:PunchAngles[3]
PunchAngles[0] = random_float(-2.0, -4.0)
PunchAngles[2] = random_float(5.0, -5.0)
set_pev(id, pev_punchangle, PunchAngles)
static Float:vOrigin[3], Float:vAngle[3], Float:vVelocity[3], Float:vMins[3], Float:vMaxs[3]
vMins[0] = vMins[1] = vMins[2] = -2.0
vMaxs[0] = vMaxs[1] = vMaxs[2] = 2.0
pev(id, pev_v_angle, vAngle)
Stock_Get_Postion(id, 15.0, 1.5, -3.5, vOrigin)
Stock_Velocity_By_Aim(vAngle, 0.0, 1335.0, vVelocity)
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
set_pev(ent, pev_classname, CLASSNAME)
set_pev(ent, pev_movetype, MOVETYPE_FLYMISSILE)
engfunc(EngFunc_SetModel, ent, S_MODEL_2)
engfunc(EngFunc_SetSize, ent, vMins, vMaxs)
set_pev(ent, pev_origin, vOrigin)
set_pev(ent, pev_velocity, vVelocity)
Stock_Get_Velocity_Angle(ent, vAngle)
set_pev(ent ,pev_angles,vAngle)
set_pev(ent, pev_solid, SOLID_BBOX)
set_pev(ent, pev_owner, id)
// Make a Beam
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW)
write_short(ent) // entity
write_short(spr_trail) // sprite
write_byte(20) // life
write_byte(2) // width
write_byte(200) // r
write_byte(200) // g
write_byte(200) // b
write_byte(200) // brightness
message_end()
}
public fw_Think_Smoke(iEnt)
{
if(!pev_valid(iEnt))
return
new Float:vOrigin[3]
pev(iEnt, pev_origin, vOrigin)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0)
write_byte(TE_SMOKE)
engfunc(EngFunc_WriteCoord,vOrigin[0])
engfunc(EngFunc_WriteCoord,vOrigin[1])
engfunc(EngFunc_WriteCoord,vOrigin[2] + 55.0)
write_short(g_SmokeSprId)
write_byte(40)
write_byte(12)
message_end()
set_pev(iEnt, pev_flags, pev(iEnt, pev_flags) | FL_KILLME)
engfunc(EngFunc_RemoveEntity, iEnt)
return
}
public fw_Touch(ent, id)
{
if(!pev_valid(ent))
return
static Float:Origin[3]
pev(ent, pev_origin, Origin)
Origin[2] += 1.0
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_WORLDDECAL)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2])
switch(random_num(1, 3))
{
case 1: write_byte(engfunc(EngFunc_DecalIndex, "{scorch1"))
case 2: write_byte(engfunc(EngFunc_DecalIndex, "{scorch2"))
case 3: write_byte(engfunc(EngFunc_DecalIndex, "{scorch3"))
}
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2] + 20.0)
write_short(g_expspr_id)
write_byte(25)
write_byte(30)
write_byte(TE_EXPLFLAG_NODLIGHTS | TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)
message_end()
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, Origin[0] + random_float(-64.0, 64.0))
engfunc(EngFunc_WriteCoord, Origin[1] + random_float(-64.0, 64.0))
engfunc(EngFunc_WriteCoord, Origin[2] + random_float(30.0, 35.0))
write_short(g_expspr_id2)
write_byte(30)
write_byte(30)
write_byte(0)
message_end()
new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
set_pev(iEnt, pev_classname, CLASSNAME2)
set_pev(iEnt, pev_origin, Origin)
engfunc(EngFunc_SetModel, iEnt, "models/w_usp.mdl")
set_pev(iEnt, pev_nextthink, get_gametime() + 0.55)
fm_set_rendering(iEnt, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
static Float:Origin2[3]
for(new i = 0; i < get_maxplayers(); i++)
{
if(!is_user_alive(i))
continue
pev(i, pev_origin, Origin2)
if(get_distance_f(Origin, Origin2) > get_pcvar_float(cvar_l_radius))
continue
ExecuteHamB(Ham_TakeDamage, i, ent, pev(ent, pev_owner), get_pcvar_float(cvar_l_damage), DMG_BULLET)
if(is_user_alive(i)) Stock_Fake_KnockBack(pev(ent, pev_owner), i, 0.5)
}
static classname[32]
pev(id, pev_classname, classname, charsmax(classname))
if(equali(classname, "func_breakable"))
force_use(ent, id)
set_pev(ent, pev_flags, pev(ent, pev_flags) | FL_KILLME)
engfunc(EngFunc_RemoveEntity, ent)
}
public Update_Ammo(id)
{
if(!is_user_alive(id))
return
static ent
ent = fm_get_user_weapon_entity(id, CSW_BLOCKAR)
if(pev_valid(ent))
{
engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), {0, 0, 0}, id)
write_byte(1)
write_byte(CSW_BLOCKAR)
write_byte(cs_get_weapon_ammo(ent))
message_end()
}
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id)
write_byte(1)
write_byte(cs_get_user_bpammo(id, CSW_BLOCKAR))
message_end()
}
stock Get_Mode(id) return g_WeaponMode[id]
stock Get_Stat(id) return g_Stat[id]
stock Set_Model(id, mode)
{
set_pev(id, pev_viewmodel2, mode ? V_MODEL_2 : V_MODEL_1)
set_pev(id, pev_weaponmodel2, mode ? P_MODEL_2 : P_MODEL_1)
}
public client_PreThink(id)
{
if(!is_user_alive(id) || !g_Had_BlockAR[id] || get_user_weapon(id) != CSW_BLOCKAR)
return
set_dhudmessage(42, 212, 255, -0.055, -0.1, 0, 0.1, 0.1, 0.0, 0.0)
show_dhudmessage(id, "%d", g_GrenadeAmmo[id])
}
stock make_bullet(id, Float:Origin[3])
{
// Find target
new decal = random_num(41, 45)
const loop_time = 2
static Body, Target
get_user_aiming(id, Target, Body, 999999)
if(is_user_connected(Target))
return
for(new i = 0; i < loop_time; i++)
{
// Put decal on "world" (a wall)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_WORLDDECAL)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2])
write_byte(decal)
message_end()
// Show sparcles
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_GUNSHOTDECAL)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2])
write_short(id)
write_byte(decal)
message_end()
}
}
public fake_smoke(id, trace_result)
{
static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG
get_weapon_attachment(id, vecSrc)
global_get(glb_v_forward, vecEnd)
xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd)
xs_vec_add(vecSrc, vecEnd, vecEnd)
get_tr2(trace_result, TR_vecEndPos, vecSrc)
get_tr2(trace_result, TR_vecPlaneNormal, vecEnd)
xs_vec_mul_scalar(vecEnd, 2.5, vecEnd)
xs_vec_add(vecSrc, vecEnd, vecEnd)
TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
TE_FLAG |= TE_EXPLFLAG_NOSOUND
TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, vecEnd[0])
engfunc(EngFunc_WriteCoord, vecEnd[1])
engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0)
write_short(g_smokepuff_id)
write_byte(2)
write_byte(50)
write_byte(TE_FLAG)
message_end()
}
stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0)
{
new Float:vfEnd[3], viEnd[3]
get_user_origin(id, viEnd, 3)
IVecFVec(viEnd, vfEnd)
new Float:fOrigin[3], Float:fAngle[3]
pev(id, pev_origin, fOrigin)
pev(id, pev_view_ofs, fAngle)
xs_vec_add(fOrigin, fAngle, fOrigin)
new Float:fAttack[3]
xs_vec_sub(vfEnd, fOrigin, fAttack)
xs_vec_sub(vfEnd, fOrigin, fAttack)
new Float:fRate
fRate = fDis / vector_length(fAttack)
xs_vec_mul_scalar(fAttack, fRate, fAttack)
xs_vec_add(fOrigin, fAttack, output)
}
stock set_weapon_anim(id, anim)
{
if(!is_user_alive(id))
return
set_pev(id, pev_weaponanim, anim)
message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0, 0, 0}, id)
write_byte(anim)
write_byte(pev(id, pev_body))
message_end()
}
stock fm_cs_get_weapon_ent_owner(ent)
{
if(pev_valid(ent) != 2)
return -1
return get_pdata_cbase(ent, 41, 4)
}
public make_shell(id)
{
static Float:player_origin[3], Float:origin[3], Float:origin2[3], Float:gunorigin[3], Float:oldangles[3], Float:v_forward[3], Float:v_forward2[3], Float:v_up[3], Float:v_up2[3], Float:v_right[3], Float:v_right2[3], Float:viewoffsets[3]
pev(id, pev_v_angle, oldangles); pev(id, pev_origin, player_origin); pev(id, pev_view_ofs, viewoffsets); engfunc(EngFunc_MakeVectors, oldangles)
global_get(glb_v_forward, v_forward); global_get(glb_v_up, v_up)
global_get(glb_v_right, v_right); global_get(glb_v_forward, v_forward2)
global_get(glb_v_up, v_up2); global_get(glb_v_right, v_right2)
xs_vec_add(player_origin, viewoffsets, gunorigin)
xs_vec_mul_scalar(v_forward, 10.3, v_forward); xs_vec_mul_scalar(v_right, 2.9, v_right)
xs_vec_mul_scalar(v_up, -3.7, v_up); xs_vec_mul_scalar(v_forward2, 10.0, v_forward2)
xs_vec_mul_scalar(v_right2, 3.0, v_right2); xs_vec_mul_scalar(v_up2, -4.0, v_up2)
xs_vec_add(gunorigin, v_forward, origin); xs_vec_add(gunorigin, v_forward2, origin2)
xs_vec_add(origin, v_right, origin); xs_vec_add(origin2, v_right2, origin2)
xs_vec_add(origin, v_up, origin); xs_vec_add(origin2, v_up2, origin2)
static Float:velocity[3]
get_speed_vector(origin2, origin, random_float(140.0, 160.0), velocity)
static angle
angle = random_num(0, 360)
message_begin(MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, _, id)
write_byte(TE_MODEL)
engfunc(EngFunc_WriteCoord, origin[0])
engfunc(EngFunc_WriteCoord, origin[1])
engfunc(EngFunc_WriteCoord, origin[2])
engfunc(EngFunc_WriteCoord, velocity[0])
engfunc(EngFunc_WriteCoord, velocity[1])
engfunc(EngFunc_WriteCoord, velocity[2])
write_angle(angle)
write_short(shells_model)
write_byte(1)
write_byte(20)
message_end()
}
stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
new_velocity[0] = origin2[0] - origin1[0]
new_velocity[1] = origin2[1] - origin1[1]
new_velocity[2] = origin2[2] - origin1[2]
new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
new_velocity[0] *= num
new_velocity[1] *= num
new_velocity[2] *= num
return 1;
}
stock set_weapons_timeidle(id, Float:NextAttack, Float:TimeIdle)
{
if(!is_user_alive(id))
return
new entwpn = fm_get_user_weapon_entity(id, CSW_BLOCKAR)
if(!pev_valid(entwpn))
return
set_pdata_float(entwpn, 46, NextAttack, 4)
set_pdata_float(entwpn, 47, NextAttack, 4)
set_pdata_float(entwpn, 48, TimeIdle, 4)
set_pdata_float(id, 83, NextAttack, 5)
}
stock precache_sounds_from_model(const wpnmodel[])
{
new file, i, k
if((file = fopen(wpnmodel, "rt")))
{
new szsoundpath[64]
new numseq, seqid
new event, numevents, eventid
fseek(file, 164, SEEK_SET)
fread(file, numseq, BLOCK_INT)
fread(file, seqid, BLOCK_INT)
for(i = 0; i < numseq; i++)
{
fseek(file, seqid + 48 + 176 * i, SEEK_SET)
fread(file, numevents, BLOCK_INT)
fread(file, eventid, BLOCK_INT)
fseek(file, eventid + 176 * i, SEEK_SET)
for(k = 0; k < numevents; k++)
{
fseek(file, eventid + 4 + 76 * k, SEEK_SET)
fread(file, event, BLOCK_INT)
fseek(file, 4, SEEK_CUR)
if(event != 5004)continue
fread_blocks(file, szsoundpath, 64, BLOCK_CHAR)
if(strlen(szsoundpath))
{
strtolower(szsoundpath)
engfunc(EngFunc_PrecacheSound, szsoundpath)
}
}
}
}
fclose(file)
}
stock Stock_Get_Postion(id,Float:forw,Float:right,Float:up,Float:vStart[])
{
static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]
pev(id, pev_origin, vOrigin)
pev(id, pev_view_ofs,vUp)
xs_vec_add(vOrigin,vUp,vOrigin)
pev(id, pev_v_angle, vAngle)
engfunc(EngFunc_AngleVectors, vAngle, vForward, vRight, vUp)
vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
}
stock Stock_Velocity_By_Aim(Float:vAngle[3],Float:fAngleOffset,Float:fMulti,Float:vVelocity[3])
{
static Float:vForward[3],Float:vAngleTemp[3]
xs_vec_copy(vAngle, vAngleTemp)
vAngleTemp[0] += fAngleOffset
angle_vector(vAngleTemp, ANGLEVECTOR_FORWARD, vForward)
xs_vec_mul_scalar(vForward, fMulti, vVelocity)
}
stock Stock_Get_Velocity_Angle(entity, Float:output[3])
{
static Float:velocity[3]
pev(entity, pev_velocity, velocity)
vector_to_angle(velocity, output)
if(output[0] > 90.0) output[0] = - (360.0 - output[0])
}
stock drop_weapons(id, dropwhat)
{
static weapons[32], num, i, weaponid
num = 0
get_user_weapons(id, weapons, num)
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_MAC10)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_MAC10)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
for (i = 0; i < num; i++)
{
weaponid = weapons[i]
if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
{
static wname[32]
get_weaponname(weaponid, wname, charsmax(wname))
engclient_cmd(id, "drop", wname)
}
}
}
stock client_printc(index, const text[], any:...)
{
new szMsg[128]
vformat(szMsg, charsmax(szMsg), text, 3)
replace_all(szMsg, charsmax(szMsg), "!g", "^x04")
replace_all(szMsg, charsmax(szMsg), "!n", "^x01")
replace_all(szMsg, charsmax(szMsg), "!t", "^x03")
if(index == 0)
{
for(new i = 0; i < get_maxplayers(); i++)
{
if(is_user_connected(i))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, i)
write_byte(i)
write_string(szMsg)
message_end()
}
}
} else {
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, index)
write_byte(index)
write_string(szMsg)
message_end()
}
}
public Stock_Fake_KnockBack(id, iVic, Float:iKb)
{
if(iVic > 32)
return
new Float:vAttacker[3], Float:vVictim[3], Float:vVelocity[3], flags
pev(id, pev_origin, vAttacker)
pev(iVic, pev_origin, vVictim)
vAttacker[2] = vVictim[2] = 0.0
flags = pev(id, pev_flags)
xs_vec_sub(vVictim, vAttacker, vVictim)
new Float:fDistance
fDistance = xs_vec_len(vVictim)
xs_vec_mul_scalar(vVictim, 1 / fDistance, vVictim)
pev(iVic, pev_velocity, vVelocity)
xs_vec_mul_scalar(vVictim, iKb, vVictim)
xs_vec_mul_scalar(vVictim, 400.0, vVictim)
vVictim[2] = xs_vec_len(vVictim) * 0.15
if(flags &~ FL_ONGROUND)
{
xs_vec_mul_scalar(vVictim, 1.5, vVictim)
vVictim[2] *= 0.4
}
if(xs_vec_len(vVictim) > xs_vec_len(vVelocity)) set_pev(iVic, pev_velocity, vVictim)
}
stock __dhud_color, __dhud_x, __dhud_y, __dhud_effect, __dhud_fxtime, __dhud_holdtime, __dhud_fadeintime, __dhud_fadeouttime, __dhud_reliable;
stock set_dhudmessage(red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 1.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.3, bool:reliable = false)
{
#define clamp_byte(%1) (clamp(%1, 0, 255 ))
#define pack_color(%1,%2,%3) (%3 + (%2 << 8) + (%1 << 16))
__dhud_color = pack_color(clamp_byte(red), clamp_byte(green), clamp_byte(blue))
__dhud_x = _:x
__dhud_y = _:y
__dhud_effect = effects
__dhud_fxtime = _:fxtime
__dhud_holdtime = _:holdtime
__dhud_fadeintime = _:fadeintime
__dhud_fadeouttime = _:fadeouttime
__dhud_reliable = _:reliable
return 1
}
stock show_dhudmessage(index, const message[], any:...)
{
new buffer[128]
new numArguments = numargs()
if(numArguments == 2) send_dhudMessage(index, message)
else if(index || numArguments == 3)
{
vformat(buffer, charsmax(buffer), message, 3)
send_dhudMessage(index, buffer)
} else {
new playersList[32], numPlayers
get_players(playersList, numPlayers, "ch")
if(!numPlayers) return 0
new Array:handleArrayML = ArrayCreate()
for(new i = 2, j; i < numArguments; i++)
{
if(getarg(i) == LANG_PLAYER)
{
while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
j = 0
if(GetLangTransKey(buffer) != TransKey_Bad) ArrayPushCell(handleArrayML, i++)
}
}
new size = ArraySize(handleArrayML)
if(!size)
{
vformat(buffer, charsmax(buffer), message, 3)
send_dhudMessage(index, buffer)
} else {
for(new i = 0, j; i < numPlayers; i++)
{
index = playersList[i]
for(j = 0; j < size; j++) setarg(ArrayGetCell(handleArrayML, j), 0, index)
vformat(buffer, charsmax(buffer), message, 3 )
send_dhudMessage(index, buffer)
}
ArrayDestroy(handleArrayML)
}
}
return 1
}
stock send_dhudMessage(const index, const message[])
{
message_begin(__dhud_reliable ? (index ? MSG_ONE : MSG_ALL) : (index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST), SVC_DIRECTOR, _, index)
write_byte(strlen(message) + 31)
write_byte(DRC_CMD_MESSAGE)
write_byte(__dhud_effect)
write_long(__dhud_color)
write_long(__dhud_x)
write_long(__dhud_y)
write_long(__dhud_fadeintime)
write_long(__dhud_fadeouttime)
write_long(__dhud_holdtime)
write_long(__dhud_fxtime)
write_string(message)
message_end();
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
|
|