hello there.
i modify a plugin that disable crosshair showing up, and add a few lines that can show a spr file (which has the crosshair) onto the screen,
but it can be only seen in one direction, there are afterimages when the player moves.
i want it to stay in the same location to replace the original crosshair,
what should i do? please help.
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#define PLUGIN "1"
#define VERSION "2"
#define AUTHOR "3"
#define HUD_HIDE_CROSS (1<<6)
new g_msgHideWeapon
new bool:g_bHideCross
new g_cvarHideCross
new g_ch_SprId
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_msgHideWeapon = get_user_msgid("HideWeapon")
register_event("ResetHUD", "onResetHUD", "b")
register_message(g_msgHideWeapon, "msgHideWeapon")
register_forward(FM_CmdStart, "fw_CmdStart")
g_cvarHideCross = register_cvar("ch_swai", "1")
HudApplyCVars()
}
public plugin_precache()
{
g_ch_SprId = engfunc(EngFunc_PrecacheModel, "sprites/crosshairs_swai_1.spr")
}
public fw_CmdStart(id, uc_handle, seed)
{
if(is_user_alive(id)) {
static Float:Origin[3], TE_FLAG
get_position(id, 80.0, 0.0, -10.0, Origin)
TE_FLAG |= TE_EXPLFLAG_NODLIGHTS
TE_FLAG |= TE_EXPLFLAG_NOSOUND
TE_FLAG |= TE_EXPLFLAG_NOPARTICLES
engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, Origin, id)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2])
write_short(g_ch_SprId)
write_byte(3) // if you can see here, i want to ask what
write_byte(20) // are these two lines suppose to be? transparency?
write_byte(TE_FLAG)
message_end()
}
}
public onResetHUD(id)
{
HudApplyCVars()
new iHideFlags = GetHudHideFlags()
if(iHideFlags)
{
message_begin(MSG_ONE, g_msgHideWeapon, _, id)
write_byte(iHideFlags)
message_end()
}
}
public msgHideWeapon()
{
new iHideFlags = GetHudHideFlags()
if(iHideFlags)
set_msg_arg_int(1, ARG_BYTE, get_msg_arg_int(1) | iHideFlags)
}
GetHudHideFlags()
{
new iFlags
if( g_bHideCross )
iFlags |= HUD_HIDE_CROSS
return iFlags
}
HudApplyCVars()
{
g_bHideCross = bool:get_pcvar_num(g_cvarHideCross)
}
stock get_position(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) //for player
xs_vec_add(vOrigin, vUp, vOrigin)
pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles
angle_vector(vAngle,ANGLEVECTOR_FORWARD, vForward) //or use EngFunc_AngleVectors
angle_vector(vAngle,ANGLEVECTOR_RIGHT, vRight)
angle_vector(vAngle,ANGLEVECTOR_UP, 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
}