Can someone help me out with this..?
L 02/21/2017 - 21:59:55: [AMXX] Displaying debug trace (plugin "hudspr.amxx")
L 02/21/2017 - 21:59:55: [AMXX] Run time error 5: memory access
L 02/21/2017 - 21:59:55: [AMXX] [0] hudspr.sma::native_display_hud_sprite (line 144)
PHP Code:
/***************************************************************************\
====================================
* || Sprites On HUD v1.1 || *
====================================
*by @bdul!*
-------------------
*||DESCRIPTION||*
-------------------
This plugins allows you to display a sprite on a user's HUD display
It also features an easy-to-use API natives include file
Animated sprites are also supported
---------------
*||CREDITS||*
---------------
- MeRcyLeZZ -----------> For his awesome Zombie Plague Mod
- Quim' / Conner ------> For helping me in vector calculations and
helping me with FM_AddToFullPack forward
- Arkshine ------------> For helping me with animating sprites
- kketan77 ------------> For helping me to create normal mod sprite
------------------
*||CHANGE LOG||*
------------------
v1.0 ====> Initial Release
v1.1 ====> Added support for animated sprites
\***************************************************************************/
#include <amxmodx>
#include <fakemeta>
#include <xs>
// Distance at which the sprite is placed from the users screen
// DO NOT EDIT UNNECESSARILY!
#define DISTANCE 12
new g_player_ent[33], g_bit_connected_user, g_stop_frame[33]
// Connected players macros
#define player_is_connected(%1) (g_bit_connected_user |= (1 << (%1 & 31)))
#define player_disconnected(%1) (g_bit_connected_user &= ~(1 << (%1 & 31)))
#define is_player_connected(%1) ((1 <= %1 <= 32) && (g_bit_connected_user & (1 << (%1 & 31))))
public plugin_init()
{
// Register the plugin and the main forward
register_plugin("Addon: Sprites On HUD", "1.0", "@bdul!");
register_forward(FM_AddToFullPack, "fm_add_to_fullpack", 1)
}
public plugin_natives()
{
// Lets register some natives
register_native("display_hud_sprite", "native_display_hud_sprite", 1)
register_native("remove_hud_sprite", "native_remove_hud_sprite", 1)
}
public fm_add_to_fullpack(es, e, ent, host, host_flags, player, p_set)
{
// Valid player ?
if (!is_player_connected(host))
return FMRES_IGNORED;
// Player haves a valid sprite entity
if (ent == g_player_ent[host])
{
static Float:origin[3], Float:forvec[3], Float:voffsets[3]
// Retrieve player's origin
pev(host, pev_origin, origin)
pev(host, pev_view_ofs, voffsets)
xs_vec_add(origin, voffsets, origin)
// Get a forward vector in the direction of player's aim
velocity_by_aim(host, DISTANCE, forvec)
// Set the sprite on the new origin
xs_vec_add(origin, forvec, origin)
engfunc(EngFunc_SetOrigin, ent, origin)
set_es(es, ES_Origin, origin)
// Make the sprite visible
set_es(es, ES_RenderMode, kRenderNormal)
set_es(es, ES_RenderAmt, 200)
// Sprite animation already stopped ?
if (!g_stop_frame[host])
return FMRES_IGNORED
// Stop the animation at the desired frame
if (pev(ent, pev_frame) == g_stop_frame[host])
{
set_pev(ent, pev_framerate, 0.0)
g_stop_frame[host] = 0
}
}
// Stupid compiler !!
return FMRES_IGNORED
}
public client_putinserver(id)
{
// Player connected
player_is_connected(id)
// Marks bots as disconnected players (so sprites are'nt displayed to them)
if (is_user_bot(id)) player_disconnected(id)
// Remove sprite entity if present
if (pev_valid(g_player_ent[id]))
remove_sprite_entity(id)
}
public client_disconnect(id)
{
// Player disconnected
player_disconnected(id)
// Remove sprite entity if present
if (pev_valid(g_player_ent[id]))
remove_sprite_entity(id)
}
public native_display_hud_sprite(id, const sprite_name[], Float:sprite_size, sprite_stopframe, Float:sprite_framerate)
{
// Invalid player ?
if (!is_player_connected(id))
return -1;
// Already haves a sprite on his hud
if (g_player_ent[id])
return -1;
// Strings passed byref
param_convert(2)
// Invalid sprite ?
if (!sprite_name[1])
return -1;
// Create an entity for the player
g_player_ent[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
// Invalid entity ?
if (!pev_valid(g_player_ent[id]))
return -1;
// Set some basic properties
set_pev(g_player_ent[id], pev_takedamage, 0.0)
set_pev(g_player_ent[id], pev_solid, SOLID_NOT)
set_pev(g_player_ent[id], pev_movetype, MOVETYPE_NONE)
// Set the sprite model
engfunc(EngFunc_SetModel, g_player_ent[id], sprite_name)
// Set the rendering on the entity
set_pev(g_player_ent[id], pev_rendermode, kRenderTransAlpha)
set_pev(g_player_ent[id], pev_renderamt, 0.0)
// Set the sprite size
set_pev(g_player_ent[id], pev_scale, sprite_size)
// Update sprite's stopping frame
g_stop_frame[id] = sprite_stopframe
// Allow animation of sprite ?
if (g_stop_frame[id] && sprite_framerate > 0.0)
{
// Set the sprites animation time, framerate and stop frame
set_pev(g_player_ent[id], pev_animtime, get_gametime())
set_pev(g_player_ent[id], pev_framerate, sprite_framerate)
// Spawn the sprite entity (necessary to play the sprite animations)
set_pev(g_player_ent[id], pev_spawnflags, SF_SPRITE_STARTON)
dllfunc(DLLFunc_Spawn, g_player_ent[id])
}
return g_player_ent[id];
}
public native_remove_hud_sprite(id)
{
// Invalid player ?
if (!is_player_connected(id))
return -1;
// Doesnt haves any sprite on his screen ?
if (!pev_valid(g_player_ent[id]))
return -1;
// Remove sprite entity
remove_sprite_entity(id)
return 1;
}
// Removes a sprite entity from world
remove_sprite_entity(id)
{
engfunc(EngFunc_RemoveEntity, g_player_ent[id])
g_player_ent[id] = 0
g_stop_frame[id] = 0
}
And with this..
L 02/21/2017 - 21:59:55: [AMXX] Displaying debug trace (plugin "winmsg.amxx")
L 02/21/2017 - 21:59:55: [AMXX] Run time error 10: native error (native "display_hud_sprite")
L 02/21/2017 - 21:59:55: [AMXX] [0] winmsg.sma::Event_TerroristWin (line 87)
(I presume the same error on line 77 also, check out!)
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>
#if defined _dsohud_included
#endinput
#endif
#define _dsohud_included
/**
* Allows you to display a sprite on a user's HUD display
*
* Note: The sprite which is to be displayed must be precached
* in your sub-plugin
*
* @param id Player index.
* @param sprite_name The sprite's name which is to be displayed
* @param sprite_scale The sprite's scale/size, must be a float
* @param sprite_stopframe The frame at which to halt the sprite's animation
* @param sprite_framerate The framerate of the sprite's animation
* @return Index of the sprite's entity or -1 on failure
*
**/
native display_hud_sprite(id, const sprite_name[], Float:sprite_scale = 0.03, sprite_stopframe = 0, Float:sprite_framerate = 0.0)
/**
* Allows you to remove the sprite from a player's screen
*
* @param id Player index.
* @return 1 on success otherwise -1 on failure
*
**/
native remove_hud_sprite(id)
// Win sprites dirs'
new const g_ct_win[] = "sprites/noz_ct.spr"
new const g_t_win[] = "sprites/noz_t.spr"
new g_maxplayers
public plugin_init()
{
register_plugin("Advanced Win Msgs.", "1.0", "@bdul!");
// Round start event
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
// Hook win team
register_logevent("Event_CTWin", 6, "3=CTs_Win", "3=All_Hostages_Rescued")
register_logevent("Event_TerroristWin" , 6, "3=Terrorists_Win", "3=Target_Bombed")
// Retrieve max players
g_maxplayers = get_maxplayers()
}
// Prechache the sprites
public plugin_precache()
{
precache_model(g_t_win)
precache_model(g_ct_win)
}
// Remove win sprites on new round
public event_round_start()
{
static id
for (id = 1; id <= g_maxplayers; id++)
remove_hud_sprite(id)
}
// Set "ctwin" sprites on players HUD
public Event_CTWin(id)
{
static id
for (id = 1; id <= g_maxplayers; id++)
{
display_hud_sprite(id, g_ct_win, 0.05)
}
}
// Set "twin" sprites on players HUD
public Event_TerroristWin(id)
{
static id
for (id = 1; id <= g_maxplayers; id++)
{
display_hud_sprite(id, g_t_win, 0.05)
}
}
// no sprites on players HUD
public Event_Draw(id)
{
return
}
Very thanks
to our scripting guru's
!