Equipment Sprites
#51
(20/05/2022, 05:24 PM)roccoxx escribió: Es un plugin pensado para mix que en teoría no ocurren dichos eventos, sin embargo no son malas las features. Últimamente ando muy ocupado como para sentarme a programar en Pawn, aún asi, voy a tratar de hacerme un tiempo estos días y editar el código para evitar eso que mencionas.

Muchas gracias!

Re-hice el código y arreglé esos problemas y funciona bien. Por si alguien le sirve lo dejo...

Código PHP:
// __________________
//
// Equipment Sprites
// __________________

#include <amxmodx>
#include <engine>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#pragma semicolon 1

// Info del Plugin (Autor original: Roccoxx)
new const PLUGIN[]  = "SPRITES EQUIP";
new const 
VERSION[] = "1.5";
new const 
AUTOR[]   = "DaniwA & Roccoxx";
new const 
EDITOR[]  = "Emanuelitop15";

// Sprites
new const SpritesDinero[][] = {"sprites/10000.spr""sprites/1000.spr""sprites/100.spr""sprites/10.spr""sprites/1.spr"};
new const 
SpritesArmas[][] =  {"sprites/weap.spr""sprites/weap2.spr"};
new const 
SpriteS[] =         {"sprites/cash.spr"};
new const 
SpriteFlecha[] =    {"sprites/arrow.spr"};

// Variables
new g_spr_de_dinero[MAX_PLAYERS+1][5], g_spr_de_armas[MAX_PLAYERS+1][7], g_spr_signo_de_dinero[MAX_PLAYERS+1], g_spr_flecha[MAX_PLAYERS+1];
new 
g_ent_sprites;

// Flotantes
new const FloatfPistolas[6] = { 1.010.011.016.017.026.0 };
new const 
FloatfRifles[18]  = { 3.05.07.08.02.013.014.015.018.019.020.021.022.023.024.027.028.030.0 };

// Defines
#define TASK_REMOVER_SPRITES 60969
#define TASK_SET_SPRITES 70999
#define TASK_SET_SPRITES_ID 72688

// Colores
new const COLOR_DINERO[3] = { 0255};
new const 
COLOR_ARMAS[3] =  { 200200200 };
new const 
COLOR_FLECHA[3] = { 200200200 };

// Cvars
new cvar_equip_on;

// Funciones Principales
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTOR);

    
register_event("HLTV""ev_inicio_de_ronda""a""1=0""2=0");

    
RegisterHam(Ham_Killed"player""ham_jugador_asesinado", .Post 0);

    
cvar_equip_on register_cvar("sprites_equipamiento""1");

    
server_print("========================================");
    
server_print("- Plugin: %s (ACTIVADO)"PLUGIN);
    
server_print("- Editado por: %s (AUTORES ORIGINALES: %s)"EDITORAUTOR);
    
server_print("========================================");
}

public 
plugin_precache()
{
    new 
i;

    for (
0sizeof (SpritesDinero); i++)
    
precache_model(SpritesDinero[i]);

    for (
0sizeof (SpritesArmas); i++)
    
precache_model(SpritesArmas[i]);

    
precache_model(SpriteS);
    
precache_model(SpriteFlecha);
}

public 
ev_inicio_de_ronda()
{    
    if (!
get_pcvar_num(cvar_equip_on))
        return;

    
//i_entidades_todos(false);    

    
remove_task(TASK_REMOVER_SPRITES);
    
set_task(0.2"remover_sprites"TASK_REMOVER_SPRITES); // fix bug
    
set_task(get_cvar_float("mp_freezetime"), "remover_sprites"TASK_REMOVER_SPRITES);

    
remove_task(TASK_SET_SPRITES);    
    
set_task(0.5"mostrar_sprites_pre"TASK_SET_SPRITES);    
}

// Ham
public ham_jugador_asesinado(victimaatacante)
{
    if (!
is_user_connected(atacante))
        return 
HAM_IGNORED;

    
spr_remover_entidades(victima1);
    return 
HAM_HANDLED;    
}

public 
client_putinserver(id)
{
    
spr_setear_entidades(id);
}

public 
client_disconnected(id)
{
    
spr_remover_entidades(id);
}

// Funciones Secundarias
spr_setear_entidades(id)
{
    new 
i;

    
// Dinero [sprites]
    
for (0sizeof (SpritesDinero); i++)
    {
        
g_spr_de_dinero[id][i] = create_entity("env_sprite");

        if (
is_valid_ent(g_spr_de_dinero[id][i]))
            
ent_set_atributos(g_spr_de_dinero[id][i], SpritesDinero[i]);
    }

    
// Armas [sprites]
    
for (07i++)
    {
        
g_spr_de_armas[id][i] = create_entity("env_sprite");

        if (
is_valid_ent(g_spr_de_armas[id][i]))
            
ent_set_atributos(g_spr_de_armas[id][i], (5) ? SpritesArmas[0] : SpritesArmas[1]);
    }

    
// Signo del Dinero [sprite]
    
g_spr_signo_de_dinero[id] = create_entity("env_sprite");
    if (
is_valid_ent(g_spr_signo_de_dinero[id]))
        
ent_set_atributos(g_spr_signo_de_dinero[id], SpriteS);

    
// Flechita [sprite]    
    
g_spr_flecha[id] = create_entity("env_sprite");
    if (
is_valid_ent(g_spr_flecha[id]))
        
ent_set_atributos(g_spr_flecha[id], SpriteFlecha);
}

spr_remover_entidades(idocultar 0)
{
    new 
i;
    for (
0sizeof (SpritesDinero); i++)
    {
        if (!
is_valid_ent(g_spr_de_dinero[id][i]))
            continue;

        if (
ocultar)
            
set_ent_rendering(g_spr_de_dinero[id][i], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_de_dinero[id][i]);
            
g_spr_de_dinero[id][i] = 0;
        }
    }

    for (
07i++)
    {
        if (!
is_valid_ent(g_spr_de_armas[id][i]))
            continue;

        if (
ocultar)
            
set_ent_rendering(g_spr_de_armas[id][i], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_de_armas[id][i]);
            
g_spr_de_armas[id][i] = 0;
        }
    }

    if (
is_valid_ent(g_spr_signo_de_dinero[id]))
    {
        if (
ocultar)
            
set_ent_rendering(g_spr_signo_de_dinero[id], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_signo_de_dinero[id]);
            
g_spr_signo_de_dinero[id] = 0;
        }
    }

    if (
is_valid_ent(g_spr_flecha[id]))
    {
        if (
ocultarset_ent_rendering(g_spr_flecha[id], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_flecha[id]);
            
g_spr_flecha[id] = 0;
        }
    }
}

public 
mostrar_sprites_pre()
{
    
g_ent_sprites create_entity("info_target");

    if (!
is_valid_ent(g_ent_sprites))
        return;    

    new 
id;
    for (
id 1id <= MAX_PLAYERSid++)
    {
        if (!
is_user_alive(id)) continue;
        
remove_task(id+TASK_SET_SPRITES_ID);
        
set_task(0.2"mostrar_sprites"id+TASK_SET_SPRITES_ID_,_"b");
    }
}

public 
mostrar_sprites(taskid)
{
    new 
id;
    
id = (taskid TASK_SET_SPRITES_ID);

    if (!
is_user_alive(id))
    {
        
remove_task(taskid);
        return;
    }

    if (!
is_valid_ent(g_ent_sprites))
    {
        
g_ent_sprites 0;
        
remove_task(taskid);
        return;
    }

    new 
isz_dinero[6], sz_valor[2];
    new 
i_armasboolpistolasboolriflesi_armadura;

    
// Dinero
    
arrayset(sz_dinero0sizeof (sz_dinero));
    
num_to_str(cs_get_user_money(id), sz_dinerocharsmax(sz_dinero));

    for (
0sizeof (SpritesDinero); i++)
    {
        
sz_valor[0] = sz_dinero[i];
        
sz_valor[1] = 0;

        if (!
sz_dinero[i]) activar_sprite(g_spr_de_dinero[id][i], id1.034.00COLOR_DINERO[0], COLOR_DINERO[1], COLOR_DINERO[2]);
        else 
activar_sprite(g_spr_de_dinero[id][i], idfloatstr(sz_valor), 34.0255COLOR_DINERO[0], COLOR_DINERO[1], COLOR_DINERO[2]);
    }

    
activar_sprite(g_spr_signo_de_dinero[id], id1.034.0255COLOR_DINERO[0], COLOR_DINERO[1], COLOR_DINERO[2]);
    
activar_sprite(g_spr_flecha[id], id1.034.0255COLOR_FLECHA[0], COLOR_FLECHA[1], COLOR_FLECHA[2]);

    
// Armas
    
i_armas pev(idpev_weapons);
    
pistolas false;
    
rifles false;
        
    for (
0sizeof (fPistolas); i++)
    {
        if (
i_armas 1<<floatround(fPistolas[i]))
        {
            
activar_sprite(g_spr_de_armas[id][0], idfPistolas[i], 50.0255COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);
            
pistolas true;
        }
    }
        
    if (!
pistolasactivar_sprite(g_spr_de_armas[id][0], idfPistolas[0], 50.00COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);

    for (
0sizeof (fRifles); i++)
    {
        if (
i_armas 1<<floatround(fRifles[i]))
        {
            
activar_sprite(g_spr_de_armas[id][1], idfRifles[i], 50.0255COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);
            
rifles true;
        }
    }

    if (!
riflesactivar_sprite(g_spr_de_armas[id][1], idfRifles[0], 50.00COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);
        
    if (
i_armas 1<<CSW_HEGRENADEactivar_sprite(g_spr_de_armas[id][2], id4.050.02552551010);
    else 
activar_sprite(g_spr_de_armas[id][2], id4.050.002551010);
        
    if (
i_armas 1<<CSW_FLASHBANGactivar_sprite(g_spr_de_armas[id][3], id25.050.0255909090);
    else 
activar_sprite(g_spr_de_armas[id][3], id25.050.00909090);
        
    if (
i_armas 1<<CSW_SMOKEGRENADEactivar_sprite(g_spr_de_armas[id][4], id9.050.02555015050);
    else 
activar_sprite(g_spr_de_armas[id][4], id9.050.001020010);

    
// Armadura
    
cs_get_user_armor(idCsArmorType:i_armadura);

    switch (
i_armadura)
    {
        case 
1activar_sprite(g_spr_de_armas[id][5], id1.050.02550100255);
        case 
2activar_sprite(g_spr_de_armas[id][5], id2.050.02550100255);
        default: 
activar_sprite(g_spr_de_armas[id][5], id1.050.000100255);
    }

    if (
i_armas 1<<CSW_C4activar_sprite(g_spr_de_armas[id][6], id3.050.0255030255);
    else if (
cs_get_user_defuse(id)) activar_sprite(g_spr_de_armas[id][6], id4.050.0255030255);
    else 
activar_sprite(g_spr_de_armas[id][6], id3.050.00030255);
}

activar_sprite(entjugadorFloat:fFrameFloat:fOffsetrenderrojoverdeazul)
{
    if (!
is_valid_ent(ent))
        return;

    if (!
get_pcvar_num(cvar_equip_on))
        return;

    
entity_set_float(entEV_FL_framefFrame);
    
set_ent_rendering(entkRenderFxNonerojoverdeazulkRenderTransAddrender);

    static 
Floatorigen_del_jugador[3];
    
entity_get_vector(jugadorEV_VEC_originorigen_del_jugador);
    
origen_del_jugador[2] += (fOffset 10.0); 

    
entity_set_origin(entorigen_del_jugador);
}

ent_set_atributos(ent, const sz_modelo[])
{
    
entity_set_model(entsz_modelo);
    
entity_set_int(entEV_INT_movetypeMOVETYPE_NOCLIP);
    
entity_set_float(entEV_FL_framerate1.0);
    
entity_set_float(entEV_FL_scale0.3);

    
set_ent_rendering(entkRenderFxNone___kRenderTransAdd0);
}

public 
remover_sprites()
{
    if (
is_valid_ent(g_ent_sprites))
    {
        
remove_entity(g_ent_sprites);
        
g_ent_sprites 0;
    }

    
i_entidades_todos(true);
}

i_entidades_todos(sacar)
{
    new 
id;

    for (
id 1id <= MAX_PLAYERSid++)
    {
        if (!
is_user_connected(id))
            continue;

        if (
sacarspr_remover_entidades(id1);
        else 
spr_setear_entidades(id);
    }
}

public 
plugin_cfg()
{
    if (
is_plugin_loaded("Pause Plugins") != -1)
    
server_cmd("amx_pausecfg add ^"%s^""PLUGIN);

___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Responder
#52
(21/05/2022, 07:47 AM)[E]manuelitop15 escribió: Re-hice el código y arreglé esos problemas y funciona bien. Por si alguien le sirve lo dejo...

Código PHP:
// __________________
//
// Equipment Sprites
// __________________

#include <amxmodx>
#include <engine>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#pragma semicolon 1

// Info del Plugin (Autor original: Roccox)
new const PLUGIN[]  "SPRITES EQUIP";
new const 
VERSION[] = "1.2";
new const 
AUTOR[]   "DaniwA & Roccoxx";
new const 
EDITOR[]  "Emanuelitop15";

// Sprites
new const SpritesDinero[][] = {"sprites/10000.spr""sprites/1000.spr""sprites/100.spr""sprites/10.spr""sprites/1.spr"};
new const 
SpritesArmas[][] =  {"sprites/weap.spr""sprites/weap2.spr"};
new const 
SpriteS[] =         {"sprites/cash.spr"};
new const 
SpriteFlecha[] =    {"sprites/arrow.spr"};

// Variables
new g_spr_de_dinero[MAX_PLAYERS+1][5], g_spr_de_armas[MAX_PLAYERS+1][7], g_spr_signo_de_dinero[MAX_PLAYERS+1], g_spr_flecha[MAX_PLAYERS+1];
new 
g_ent_sprites;

// Flotantes
new const FloatfPistolas[6] = { 1.010.011.016.017.026.0 };
new const 
FloatfRifles[18]  = { 3.05.07.08.02.013.014.015.018.019.020.021.022.023.024.027.028.030.0 };

// Defines
#define TASK_REMOVER_SPRITES 60969
#define TASK_SET_SPRITES 70999
#define TASK_SET_SPRITES_ID 72688

// Colores
new const COLOR_DINERO[3] = { 0255};
new const 
COLOR_ARMAS[3] =  200200200 };
new const 
COLOR_FLECHA[3] = { 200200200 };

// Cvars
new cvar_equip_on;

// Funciones Principales
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTOR);

    
register_event("HLTV""ev_inicio_de_ronda""a""1=0""2=0");

    
RegisterHam(Ham_Killed"player""ham_jugador_asesinado", .Post 0);

    
cvar_equip_on register_cvar("sprites_equipamiento""1");

    
server_print("========================================");
    
server_print("- Plugin: %s (ACTIVADO)"PLUGIN);
    
server_print("- Editado por: %s (AUTORES ORIGINALES: %s)"EDITORAUTOR);
    
server_print("========================================");
}

public 
plugin_precache()
{
    new 
i;

    for (
0sizeof (SpritesDinero); i++)
    
precache_model(SpritesDinero[i]);

    for (
0sizeof (SpritesArmas); i++)
    
precache_model(SpritesArmas[i]);

    
precache_model(SpriteS);
    
precache_model(SpriteFlecha);
}

public 
ev_inicio_de_ronda()
{
    
//i_entidades_todos(false);    

    
if (!get_pcvar_num(cvar_equip_on))
        return;

    
remove_task(TASK_REMOVER_SPRITES);
    
remover_sprites(); // fix bug
    
set_task(get_cvar_float("mp_freezetime"), "remover_sprites"TASK_REMOVER_SPRITES);

    
g_ent_sprites create_entity("info_target");

    if (!
is_valid_ent(g_ent_sprites))
        return;    

    
remove_task(TASK_SET_SPRITES);    
    
set_task(0.5"mostrar_sprites_pre"TASK_SET_SPRITES);    
}


// Ham
public ham_jugador_asesinado(victimaatacante)
{
    if (!
is_user_connected(atacante))
        return 
HAM_IGNORED;

    
spr_remover_entidades(victima, .ocultar true);
    return 
HAM_HANDLED;    
}

public 
client_putinserver(id)
{
    
spr_setear_entidades(id);
}

public 
client_disconnected(id)
{
    
spr_remover_entidades(id);
}

// Funciones Secundarias
spr_setear_entidades(id)
{
    new 
i;

    
// Dinero [sprites]
    
for (0sizeof (SpritesDinero); i++)
    {
        
g_spr_de_dinero[id][i] = create_entity("env_sprite");

        if (
is_valid_ent(g_spr_de_dinero[id][i]))
            
ent_set_atributos(g_spr_de_dinero[id][i], SpritesDinero[i]);
    }

    
// Armas [sprites]
    
for (07i++)
    {
        
g_spr_de_armas[id][i] = create_entity("env_sprite");

        if (
is_valid_ent(g_spr_de_armas[id][i]))
            
ent_set_atributos(g_spr_de_armas[id][i], (5) ? SpritesArmas[0] : SpritesArmas[1]);
    }

    
// Signo del Dinero [sprite]
    
g_spr_signo_de_dinero[id] = create_entity("env_sprite");
    if (
is_valid_ent(g_spr_signo_de_dinero[id]))
        
ent_set_atributos(g_spr_signo_de_dinero[id], SpriteS);

    
// Flechita [sprite]    
    
g_spr_flecha[id] = create_entity("env_sprite");
    if (
is_valid_ent(g_spr_flecha[id]))
        
ent_set_atributos(g_spr_flecha[id], SpriteFlecha);
}

spr_remover_entidades(idocultar 0)
{
    new 
i;
    for (
0sizeof (SpritesDinero); i++)
    {
        if (!
is_valid_ent(g_spr_de_dinero[id][i]))
            continue;

        if (
ocultar)
            
set_ent_rendering(g_spr_de_dinero[id][i], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_de_dinero[id][i]);
            
g_spr_de_dinero[id][i] = 0;
        }
    }

    for (
07i++)
    {
        if (!
is_valid_ent(g_spr_de_armas[id][i]))
            continue;

        if (
ocultar)
            
set_ent_rendering(g_spr_de_armas[id][i], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_de_armas[id][i]);
            
g_spr_de_armas[id][i] = 0;
        }
    }

    if (
is_valid_ent(g_spr_signo_de_dinero[id]))
    {
        if (
ocultar)
            
set_ent_rendering(g_spr_signo_de_dinero[id], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_signo_de_dinero[id]);
            
g_spr_signo_de_dinero[id] = 0;
        }
    }

    if (
is_valid_ent(g_spr_flecha[id]))
    {
        if (
ocultarset_ent_rendering(g_spr_flecha[id], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_flecha[id]);
            
g_spr_flecha[id] = 0;
        }
    }
}

public 
mostrar_sprites_pre()
{
    new 
id;
    for (
id 1id <= MAX_PLAYERSid++)
    {
        
remove_task(id+TASK_SET_SPRITES_ID);
        
set_task(0.2"mostrar_sprites"id+TASK_SET_SPRITES_ID_,_"b");
    }
}

public 
mostrar_sprites(taskid)
{
    new 
id;
    
id = (taskid TASK_SET_SPRITES_ID);

    if (!
is_user_alive(id))
    {
        
remove_task(taskid);
        return;
    }

    if (!
is_valid_ent(g_ent_sprites))
    {
        
remove_task(taskid);
        return;
    }

    new 
isz_dinero[6], sz_valor[2];
    new 
i_armasboolpistolasboolriflesi_armadura;

    
// Dinero
    
arrayset(sz_dinero0sizeof (sz_dinero));
    
num_to_str(cs_get_user_money(id), sz_dinerocharsmax(sz_dinero));

    for (
0sizeof (SpritesDinero); i++)
    {
        
sz_valor[0] = sz_dinero[i];
        
sz_valor[1] = 0;

        if (!
sz_dinero[i]) activar_sprite(g_spr_de_dinero[id][i], id1.034.00COLOR_DINERO[0], COLOR_DINERO[1], COLOR_DINERO[2]);
        else 
activar_sprite(g_spr_de_dinero[id][i], idfloatstr(sz_valor), 34.0255COLOR_DINERO[0], COLOR_DINERO[1], COLOR_DINERO[2]);
    }

    
activar_sprite(g_spr_signo_de_dinero[id], id1.034.0255COLOR_DINERO[0], COLOR_DINERO[1], COLOR_DINERO[2]);
    
activar_sprite(g_spr_flecha[id], id1.034.0255COLOR_FLECHA[0], COLOR_FLECHA[1], COLOR_FLECHA[2]);

    
// Armas
    
i_armas pev(idpev_weapons);
    
pistolas false;
    
rifles false;
        
    for (
0sizeof (fPistolas); i++)
    {
        if (
i_armas 1<<floatround(fPistolas[i]))
        {
            
activar_sprite(g_spr_de_armas[id][0], idfPistolas[i], 50.0255COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);
            
pistolas true;
        }
    }
        
    if (!
pistolasactivar_sprite(g_spr_de_armas[id][0], idfPistolas[0], 50.00COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);

    for (
0sizeof (fRifles); i++)
    {
        if (
i_armas 1<<floatround(fRifles[i]))
        {
            
activar_sprite(g_spr_de_armas[id][1], idfRifles[i], 50.0255COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);
            
rifles true;
        }
    }

    if (!
riflesactivar_sprite(g_spr_de_armas[id][1], idfRifles[0], 50.00COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);
        
    if (
i_armas 1<<CSW_HEGRENADEactivar_sprite(g_spr_de_armas[id][2], id4.050.02552551010);
    else 
activar_sprite(g_spr_de_armas[id][2], id4.050.002551010);
        
    if (
i_armas 1<<CSW_FLASHBANGactivar_sprite(g_spr_de_armas[id][3], id25.050.0255909090);
    else 
activar_sprite(g_spr_de_armas[id][3], id25.050.00909090);
        
    if (
i_armas 1<<CSW_SMOKEGRENADEactivar_sprite(g_spr_de_armas[id][4], id9.050.02555015050);
    else 
activar_sprite(g_spr_de_armas[id][4], id9.050.001020010);

    
// Armadura
    
cs_get_user_armor(idCsArmorType:i_armadura);

    switch (
i_armadura)
    {
        case 
1activar_sprite(g_spr_de_armas[id][5], id1.050.02550100255);
        case 
2activar_sprite(g_spr_de_armas[id][5], id2.050.02550100255);
        default: 
activar_sprite(g_spr_de_armas[id][5], id1.050.000100255);
    }

    if (
i_armas 1<<CSW_C4activar_sprite(g_spr_de_armas[id][6], id3.050.0255030255);
    else if (
cs_get_user_defuse(id)) activar_sprite(g_spr_de_armas[id][6], id4.050.0255030255);
    else 
activar_sprite(g_spr_de_armas[id][6], id3.050.00030255);
}

activar_sprite(entjugadorFloat:fFrameFloat:fOffsetrenderrojoverdeazul)
{
    if (!
is_valid_ent(ent))
        return;

    if (!
get_pcvar_num(cvar_equip_on))
        return;

    
entity_set_float(entEV_FL_framefFrame);
    
set_ent_rendering(entkRenderFxNonerojoverdeazulkRenderTransAddrender);

    static 
Floatorigen_del_jugador[3];
    
entity_get_vector(jugadorEV_VEC_originorigen_del_jugador);
    
origen_del_jugador[2] += (fOffset 10.0); 

    
entity_set_origin(entorigen_del_jugador);
}

ent_set_atributos(ent, const sz_modelo[])
{
    
entity_set_model(entsz_modelo);
    
entity_set_int(entEV_INT_movetypeMOVETYPE_NOCLIP);
    
entity_set_float(entEV_FL_framerate1.0);
    
entity_set_float(entEV_FL_scale0.3);

    
set_ent_rendering(entkRenderFxNone___kRenderTransAdd0);
}

public 
remover_sprites()
{
    
i_entidades_todos(true);

    if (
is_valid_ent(g_ent_sprites))
    
remove_entity(g_ent_sprites);
}

i_entidades_todos(sacar)
{
    new 
id;

    for (
id 1id <= MAX_PLAYERSid++)
    {
        if (!
is_user_connected(id))
            continue;

        if (
sacarspr_remover_entidades(id, .ocultar 1);
        else 
spr_setear_entidades(id);
    }
}

public 
plugin_cfg()
{
    if (
is_plugin_loaded("Pause Plugins") != -1)
    
server_cmd("amx_pausecfg add ^"%s^""PLUGIN);


Puedes ponerle que al apuntar a un jugador de tu equipo salga el sprite tambien solo a los de tu equipo asi como el de cs go?

(21/05/2022, 07:47 AM)[E]manuelitop15 escribió: Re-hice el código y arreglé esos problemas y funciona bien. Por si alguien le sirve lo dejo...

Código PHP:
// __________________
//
// Equipment Sprites
// __________________

#include <amxmodx>
#include <engine>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#pragma semicolon 1

// Info del Plugin (Autor original: Roccox)
new const PLUGIN[]  "SPRITES EQUIP";
new const 
VERSION[] = "1.2";
new const 
AUTOR[]   "DaniwA & Roccoxx";
new const 
EDITOR[]  "Emanuelitop15";

// Sprites
new const SpritesDinero[][] = {"sprites/10000.spr""sprites/1000.spr""sprites/100.spr""sprites/10.spr""sprites/1.spr"};
new const 
SpritesArmas[][] =  {"sprites/weap.spr""sprites/weap2.spr"};
new const 
SpriteS[] =         {"sprites/cash.spr"};
new const 
SpriteFlecha[] =    {"sprites/arrow.spr"};

// Variables
new g_spr_de_dinero[MAX_PLAYERS+1][5], g_spr_de_armas[MAX_PLAYERS+1][7], g_spr_signo_de_dinero[MAX_PLAYERS+1], g_spr_flecha[MAX_PLAYERS+1];
new 
g_ent_sprites;

// Flotantes
new const FloatfPistolas[6] = { 1.010.011.016.017.026.0 };
new const 
FloatfRifles[18]  = { 3.05.07.08.02.013.014.015.018.019.020.021.022.023.024.027.028.030.0 };

// Defines
#define TASK_REMOVER_SPRITES 60969
#define TASK_SET_SPRITES 70999
#define TASK_SET_SPRITES_ID 72688

// Colores
new const COLOR_DINERO[3] = { 0255};
new const 
COLOR_ARMAS[3] =  200200200 };
new const 
COLOR_FLECHA[3] = { 200200200 };

// Cvars
new cvar_equip_on;

// Funciones Principales
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTOR);

    
register_event("HLTV""ev_inicio_de_ronda""a""1=0""2=0");

    
RegisterHam(Ham_Killed"player""ham_jugador_asesinado", .Post 0);

    
cvar_equip_on register_cvar("sprites_equipamiento""1");

    
server_print("========================================");
    
server_print("- Plugin: %s (ACTIVADO)"PLUGIN);
    
server_print("- Editado por: %s (AUTORES ORIGINALES: %s)"EDITORAUTOR);
    
server_print("========================================");
}

public 
plugin_precache()
{
    new 
i;

    for (
0sizeof (SpritesDinero); i++)
    
precache_model(SpritesDinero[i]);

    for (
0sizeof (SpritesArmas); i++)
    
precache_model(SpritesArmas[i]);

    
precache_model(SpriteS);
    
precache_model(SpriteFlecha);
}

public 
ev_inicio_de_ronda()
{
    
//i_entidades_todos(false);    

    
if (!get_pcvar_num(cvar_equip_on))
        return;

    
remove_task(TASK_REMOVER_SPRITES);
    
remover_sprites(); // fix bug
    
set_task(get_cvar_float("mp_freezetime"), "remover_sprites"TASK_REMOVER_SPRITES);

    
g_ent_sprites create_entity("info_target");

    if (!
is_valid_ent(g_ent_sprites))
        return;    

    
remove_task(TASK_SET_SPRITES);    
    
set_task(0.5"mostrar_sprites_pre"TASK_SET_SPRITES);    
}


// Ham
public ham_jugador_asesinado(victimaatacante)
{
    if (!
is_user_connected(atacante))
        return 
HAM_IGNORED;

    
spr_remover_entidades(victima, .ocultar true);
    return 
HAM_HANDLED;    
}

public 
client_putinserver(id)
{
    
spr_setear_entidades(id);
}

public 
client_disconnected(id)
{
    
spr_remover_entidades(id);
}

// Funciones Secundarias
spr_setear_entidades(id)
{
    new 
i;

    
// Dinero [sprites]
    
for (0sizeof (SpritesDinero); i++)
    {
        
g_spr_de_dinero[id][i] = create_entity("env_sprite");

        if (
is_valid_ent(g_spr_de_dinero[id][i]))
            
ent_set_atributos(g_spr_de_dinero[id][i], SpritesDinero[i]);
    }

    
// Armas [sprites]
    
for (07i++)
    {
        
g_spr_de_armas[id][i] = create_entity("env_sprite");

        if (
is_valid_ent(g_spr_de_armas[id][i]))
            
ent_set_atributos(g_spr_de_armas[id][i], (5) ? SpritesArmas[0] : SpritesArmas[1]);
    }

    
// Signo del Dinero [sprite]
    
g_spr_signo_de_dinero[id] = create_entity("env_sprite");
    if (
is_valid_ent(g_spr_signo_de_dinero[id]))
        
ent_set_atributos(g_spr_signo_de_dinero[id], SpriteS);

    
// Flechita [sprite]    
    
g_spr_flecha[id] = create_entity("env_sprite");
    if (
is_valid_ent(g_spr_flecha[id]))
        
ent_set_atributos(g_spr_flecha[id], SpriteFlecha);
}

spr_remover_entidades(idocultar 0)
{
    new 
i;
    for (
0sizeof (SpritesDinero); i++)
    {
        if (!
is_valid_ent(g_spr_de_dinero[id][i]))
            continue;

        if (
ocultar)
            
set_ent_rendering(g_spr_de_dinero[id][i], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_de_dinero[id][i]);
            
g_spr_de_dinero[id][i] = 0;
        }
    }

    for (
07i++)
    {
        if (!
is_valid_ent(g_spr_de_armas[id][i]))
            continue;

        if (
ocultar)
            
set_ent_rendering(g_spr_de_armas[id][i], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_de_armas[id][i]);
            
g_spr_de_armas[id][i] = 0;
        }
    }

    if (
is_valid_ent(g_spr_signo_de_dinero[id]))
    {
        if (
ocultar)
            
set_ent_rendering(g_spr_signo_de_dinero[id], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_signo_de_dinero[id]);
            
g_spr_signo_de_dinero[id] = 0;
        }
    }

    if (
is_valid_ent(g_spr_flecha[id]))
    {
        if (
ocultarset_ent_rendering(g_spr_flecha[id], kRenderFxNone___kRenderTransAdd0);
        else
        {
            
remove_entity(g_spr_flecha[id]);
            
g_spr_flecha[id] = 0;
        }
    }
}

public 
mostrar_sprites_pre()
{
    new 
id;
    for (
id 1id <= MAX_PLAYERSid++)
    {
        
remove_task(id+TASK_SET_SPRITES_ID);
        
set_task(0.2"mostrar_sprites"id+TASK_SET_SPRITES_ID_,_"b");
    }
}

public 
mostrar_sprites(taskid)
{
    new 
id;
    
id = (taskid TASK_SET_SPRITES_ID);

    if (!
is_user_alive(id))
    {
        
remove_task(taskid);
        return;
    }

    if (!
is_valid_ent(g_ent_sprites))
    {
        
remove_task(taskid);
        return;
    }

    new 
isz_dinero[6], sz_valor[2];
    new 
i_armasboolpistolasboolriflesi_armadura;

    
// Dinero
    
arrayset(sz_dinero0sizeof (sz_dinero));
    
num_to_str(cs_get_user_money(id), sz_dinerocharsmax(sz_dinero));

    for (
0sizeof (SpritesDinero); i++)
    {
        
sz_valor[0] = sz_dinero[i];
        
sz_valor[1] = 0;

        if (!
sz_dinero[i]) activar_sprite(g_spr_de_dinero[id][i], id1.034.00COLOR_DINERO[0], COLOR_DINERO[1], COLOR_DINERO[2]);
        else 
activar_sprite(g_spr_de_dinero[id][i], idfloatstr(sz_valor), 34.0255COLOR_DINERO[0], COLOR_DINERO[1], COLOR_DINERO[2]);
    }

    
activar_sprite(g_spr_signo_de_dinero[id], id1.034.0255COLOR_DINERO[0], COLOR_DINERO[1], COLOR_DINERO[2]);
    
activar_sprite(g_spr_flecha[id], id1.034.0255COLOR_FLECHA[0], COLOR_FLECHA[1], COLOR_FLECHA[2]);

    
// Armas
    
i_armas pev(idpev_weapons);
    
pistolas false;
    
rifles false;
        
    for (
0sizeof (fPistolas); i++)
    {
        if (
i_armas 1<<floatround(fPistolas[i]))
        {
            
activar_sprite(g_spr_de_armas[id][0], idfPistolas[i], 50.0255COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);
            
pistolas true;
        }
    }
        
    if (!
pistolasactivar_sprite(g_spr_de_armas[id][0], idfPistolas[0], 50.00COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);

    for (
0sizeof (fRifles); i++)
    {
        if (
i_armas 1<<floatround(fRifles[i]))
        {
            
activar_sprite(g_spr_de_armas[id][1], idfRifles[i], 50.0255COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);
            
rifles true;
        }
    }

    if (!
riflesactivar_sprite(g_spr_de_armas[id][1], idfRifles[0], 50.00COLOR_ARMAS[0], COLOR_ARMAS[1], COLOR_ARMAS[2]);
        
    if (
i_armas 1<<CSW_HEGRENADEactivar_sprite(g_spr_de_armas[id][2], id4.050.02552551010);
    else 
activar_sprite(g_spr_de_armas[id][2], id4.050.002551010);
        
    if (
i_armas 1<<CSW_FLASHBANGactivar_sprite(g_spr_de_armas[id][3], id25.050.0255909090);
    else 
activar_sprite(g_spr_de_armas[id][3], id25.050.00909090);
        
    if (
i_armas 1<<CSW_SMOKEGRENADEactivar_sprite(g_spr_de_armas[id][4], id9.050.02555015050);
    else 
activar_sprite(g_spr_de_armas[id][4], id9.050.001020010);

    
// Armadura
    
cs_get_user_armor(idCsArmorType:i_armadura);

    switch (
i_armadura)
    {
        case 
1activar_sprite(g_spr_de_armas[id][5], id1.050.02550100255);
        case 
2activar_sprite(g_spr_de_armas[id][5], id2.050.02550100255);
        default: 
activar_sprite(g_spr_de_armas[id][5], id1.050.000100255);
    }

    if (
i_armas 1<<CSW_C4activar_sprite(g_spr_de_armas[id][6], id3.050.0255030255);
    else if (
cs_get_user_defuse(id)) activar_sprite(g_spr_de_armas[id][6], id4.050.0255030255);
    else 
activar_sprite(g_spr_de_armas[id][6], id3.050.00030255);
}

activar_sprite(entjugadorFloat:fFrameFloat:fOffsetrenderrojoverdeazul)
{
    if (!
is_valid_ent(ent))
        return;

    if (!
get_pcvar_num(cvar_equip_on))
        return;

    
entity_set_float(entEV_FL_framefFrame);
    
set_ent_rendering(entkRenderFxNonerojoverdeazulkRenderTransAddrender);

    static 
Floatorigen_del_jugador[3];
    
entity_get_vector(jugadorEV_VEC_originorigen_del_jugador);
    
origen_del_jugador[2] += (fOffset 10.0); 

    
entity_set_origin(entorigen_del_jugador);
}

ent_set_atributos(ent, const sz_modelo[])
{
    
entity_set_model(entsz_modelo);
    
entity_set_int(entEV_INT_movetypeMOVETYPE_NOCLIP);
    
entity_set_float(entEV_FL_framerate1.0);
    
entity_set_float(entEV_FL_scale0.3);

    
set_ent_rendering(entkRenderFxNone___kRenderTransAdd0);
}

public 
remover_sprites()
{
    
i_entidades_todos(true);

    if (
is_valid_ent(g_ent_sprites))
    
remove_entity(g_ent_sprites);
}

i_entidades_todos(sacar)
{
    new 
id;

    for (
id 1id <= MAX_PLAYERSid++)
    {
        if (!
is_user_connected(id))
            continue;

        if (
sacarspr_remover_entidades(id, .ocultar 1);
        else 
spr_setear_entidades(id);
    }
}

public 
plugin_cfg()
{
    if (
is_plugin_loaded("Pause Plugins") != -1)
    
server_cmd("amx_pausecfg add ^"%s^""PLUGIN);


Hay 2 bugs 1 es el del dinero y el segundo pasa aveces y es que cuando compras otra arma primaria hay veces que esta no se dropea y se muestra en el sprite tipo dropeada pero no sale para recogerla

Pawn Básico no critiquen xD  Approved

Responder
#53
(21/05/2022, 11:34 AM)Meliodas escribió: Hay 2 bugs 1 es el del dinero y el segundo pasa aveces y es que cuando compras otra arma primaria hay veces que esta no se dropea y se muestra en el sprite tipo dropeada pero no sale para recogerla

Fijate en tus sprites, yo no tuve problema con eso del dinero que mencionas. Y lo de aparecer individualmente es casi lo mismo que hice pero para mi es mejor en general.
___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Responder
#54
(21/05/2022, 03:38 PM)[E]manuelitop15 escribió: Fijate en tus sprites, yo no tuve problema con eso del dinero que mencionas. Y lo de aparecer individualmente es casi lo mismo que hice pero para mi es mejor en general.

estoy usando los mismo de esta publicacion, y lo que digo es que como en el cs go que cuando apuntas a un jugador tambien salga el sprite esto ya cuando el freezetime haya terminado
Pawn Básico no critiquen xD  Approved

Responder
#55
(21/05/2022, 03:56 PM)Meliodas escribió: estoy usando los mismo de esta publicacion, y lo que digo es que como en el cs go que cuando apuntas a un jugador tambien salga el sprite esto ya cuando el freezetime haya terminado

Ah bien, no sé que te fallara entonces que te aparecen mal los números, capaz sea otra cosa de tu amxx o no sé, con respecto al apuntar a un jugador no sabría decirte ya que son sprites con entidades que se mueven dependiendo donde se encuentra ese jugador. Y crear, remover eso cada vez que apuntas no sé si funcionaria muy bien. Pero que se puede hacer como decís se puede.
___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Responder
#56
(21/05/2022, 03:56 PM)Meliodas escribió: estoy usando los mismo de esta publicacion, y lo que digo es que como en el cs go que cuando apuntas a un jugador tambien salga el sprite esto ya cuando el freezetime haya terminado

Usa el plugin de roccoxx y dinos si te da la misma falla.. No he visto el codigo de emanuelitop pero ahi sacas tu conclusion donde esta la falla
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#57
(21/05/2022, 06:06 PM)OsweRRR escribió: Usa el plugin de roccoxx y dinos si te da la misma falla.. No he visto el codigo de emanuelitop pero ahi sacas tu conclusion donde esta la falla

en el de roccoxx no esta ninguno de las 2 fallas que se ven en el video
Pawn Básico no critiquen xD  Approved

Responder
#58
(22/05/2022, 01:57 AM)Meliodas escribió: en el de roccoxx no esta ninguno de las 2 fallas que se ven en el video

Entonces ya sabes cuál tenés que utilizar.
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)