Raised This Month: $51 Target: $400
 12% 

Help with bug models


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Arje
Senior Member
Join Date: Apr 2020
Location: Córdoba, Argentina
Old 05-28-2020 , 14:22   Help with bug models
Reply With Quote #1

Hi, I have a problem which is that when they use the "bind j "slot2; slot1" ", they can bug the weapons, and it is a big problem, I wanted to know if someone can block this function or if this has a solution, thanks in advance
I am using the following plugin:
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <fun>

#define PLUGIN "Paintball Gun General"
#define VERSION "3.4"
#define AUTHOR "WhooKid"

#define MAX_PAINTBALLS    200
#define TASK_PB_RESET    1000
#define TASK_RELOAD    2000

new g_paintballs[MAX_PAINTBALLS], g_pbstatus[MAX_PAINTBALLS], g_pbcountFloat:lastshot[33], Float:nextattack[33], freezetime;
new 
pbgunpbusppbglockcolorshotsvelocspeedblifesoundbglowdamgefriendlyfiretgunctgunbeamspr;

static const 
g_shot_anim[4] = {0395};
static const 
g_pbgun_models[11][] = {"models/v_pbgun.mdl""models/v_pbgun1.mdl""models/v_pbgun2.mdl""models/v_pbgun3.mdl""models/v_pbgun4.mdl""models/v_pbgun5.mdl""models/v_pbgun6.mdl""models/v_pbgun7.mdl""models/v_pbgun8.mdl""models/v_pbgun9.mdl""models/v_pbgun10.mdl"};

////////////////- Agregados Lucas-////////////////////////////////////
new const boxes []=
{
    
//el plugin abarca todos los siguienets mapas: de_airstrip; de_aztec; de_cbble; de_dust; de_dust2; de_storm; de_torn;
    //de_train; de_vertigo; de_cpl_strike; de_cpl_fire; de_hell 
    //de_inferno 
    
127,
    
//de_mirage
    
17,
    
18,
    
19,
    
20,
    
25,
    
29,
    
//de_cbble_go
    
260,
    
//de_overpass
    
17,
    
18,
    
19
}
//-------------------------------//////
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_cvar("paintballgun"VERSIONFCVAR_SERVER|FCVAR_UNLOGGED);
    
register_clcmd("say /ent""ent_info"ADMIN_SLAY);
    
pbgun register_cvar("amx_pbgun""1");
    
pbusp register_cvar("amx_pbusp""1");
    
pbglock register_cvar("amx_pbglock""1");
    
    if (
get_pcvar_num(pbgun) || get_pcvar_num(pbusp) || get_pcvar_num(pbglock))
    {
        
register_event("CurWeapon""ev_curweapon""be");
        
register_logevent("ev_roundstart"2"0=World triggered""1=Round_Start");
        if (
get_cvar_num("mp_freezetime") > 0)
            
register_event("HLTV""ev_freezetime""a""1=0""2=0");

        
register_forward(FM_Touch"fw_touch");
        
register_forward(FM_SetModel"fw_setmodel");
        
register_forward(FM_PlayerPreThink"fw_playerprethink"1);
        
register_forward(FM_UpdateClientData"fw_updateclientdata"1);

        
color register_cvar("pbgun_color""2");
        
shots register_cvar("pbgun_shots""60");
        
veloc register_cvar("pbgun_velocity""2000");
        
speed register_cvar("pbgun_speed""0.08");
        
blife register_cvar("pbgun_life""0.99");    //dejar en 0.99 porque son como 3 segundos de vida del sprite de pintura
        
sound register_cvar("pbgun_sound""1");
        
bglow register_cvar("pbgun_glow""0");
        
damge register_cvar("pbgun_damage""100");
        
friendlyfire get_cvar_pointer("mp_friendlyfire");

        new 
amax_ents_allow global_get(glb_maxEntities) - 5;
        for (
1<= get_pcvar_num(shots); a++)
            if (
MAX_PAINTBALLS)
                if (
engfunc(EngFunc_NumberOfEntities) < max_ents_allow)
                {
                    
g_paintballs[a] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"));
                    if (
pev_valid(g_paintballs[a]))
                    {
                        
set_pev(g_paintballs[a], pev_effectspev(g_paintballs[a], pev_effects) | EF_NODRAW);
                        
g_pbcount++;
                    }
                }
        if (
g_pbcount 1)
            
set_fail_state("[AMXX] Failed to load Paintball Gun (unable to create ents)");
            
        
//server_print("*** %s v%s by %s Enabled ***", PLUGIN, VERSION, AUTHOR);
    
}
}

public 
plugin_precache()
{
    
register_cvar("amx_pbgun""1");
    
register_cvar("amx_pbusp""1");
    
register_cvar("amx_pbglock""1");
    
register_cvar("pbgun_tgun""3");
    
register_cvar("pbgun_ctgun""7");
    
tgun get_cvar_num("pbgun_tgun");
    
ctgun get_cvar_num("pbgun_ctgun");
    if (
get_cvar_num("amx_pbgun")) {
        
precache_model(g_pbgun_models[tgun]);
        
precache_model(g_pbgun_models[ctgun]);
        
precache_model((ctgun) ? "models/p_pbgun1.mdl" "models/p_pbgun.mdl");
        
precache_model("models/w_pbgun.mdl");
    }
    if (
get_cvar_num("amx_pbusp")) {
        
precache_model("models/v_pbusp.mdl");
        
precache_model("models/p_pbusp.mdl");
    }
    if (
get_cvar_num("amx_pbglock")) {
        
precache_model("models/v_pbglock.mdl");
        
precache_model("models/p_pbglock.mdl");
    }
    if (
get_cvar_num("amx_pbgun") || get_cvar_num("amx_pbusp") || get_cvar_num("amx_pbglock")) {
        
precache_sound("misc/pb1.wav");
        
precache_sound("misc/pb2.wav");
        
precache_sound("misc/pb3.wav");
        
precache_sound("misc/pb4.wav");
        
precache_sound("misc/pbg.wav");
        
precache_model("models/w_paintball.mdl");
        
precache_model("sprites/paintball.spr");
    }
    
beamspr precache_model("sprites/laserbeam.spr");
}
////////////////- Agregados Lucas-////////////////////////////////////
public plugin_cfg()
{
    if(
is_plugin_loaded("Pause Plugins") > -1)
        
server_cmd("amx_pausecfg add ^"Paintball Gun General^"");


////////////////- Agregados Lucas-////////////////////////////////////

public ent_info(id)
    
client_print(idprint_chat"[AMXX] [Ent Info (Current/Max)] Paintballs: (%d/%d)   Entities: (%d/%d)"g_pbcountget_pcvar_num(shots), engfunc(EngFunc_NumberOfEntities), global_get(glb_maxEntities));

public 
ev_curweapon(id)
{
    new 
model[25];
    
pev(idpev_viewmodel2model24);
    
    if (
equali(model"models/v_mp5.mdl") && get_pcvar_num(pbgun))
    {
        
set_pev(idpev_viewmodel2, (get_user_team(id) == 1) ? g_pbgun_models[tgun] : g_pbgun_models[ctgun]);
        
set_pev(idpev_weaponmodel2, (ctgun) ? "models/p_pbgun1.mdl" "models/p_pbgun.mdl");
    }
    else if (
equali(model"models/v_usp.mdl") && get_pcvar_num(pbusp))
    {
        
set_pev(idpev_viewmodel2"models/v_pbusp.mdl");
        
set_pev(idpev_weaponmodel2"models/p_pbusp.mdl");
    }
    else if (
equali(model"models/v_glock18.mdl") && get_pcvar_num(pbglock))
    {
        
set_pev(idpev_viewmodel2"models/v_pbglock.mdl");
        
set_pev(idpev_weaponmodel2"models/p_pbglock.mdl");
    }    
}

public 
fw_setmodel(entmodel[]) 
{
     if (
equali(model"models/w_mp5.mdl")) 
        if (
get_pcvar_num(pbgun))
        {
            
engfunc(EngFunc_SetModelent"models/w_pbgun.mdl");
            return 
FMRES_SUPERCEDE;
        }
    return 
FMRES_IGNORED;
}

public 
fw_updateclientdata(idswcd_handle)
{
    if (
user_has_pbgun(id) && cd_handle)
    {
        
set_cd(cd_handleCD_ID1);
        
get_cd(cd_handleCD_flNextAttacknextattack[id]);
        
//set_cd(cd_handle, CD_flNextAttack, 10.0);
        
return FMRES_HANDLED;
    }
    return 
FMRES_IGNORED;
}

public 
fw_playerprethink(id)
{
    new 
my_pbgun user_has_pbgun(id);
    if (
my_pbgun)
    {
        new 
buttons pev(idpev_button);
        if (
buttons IN_ATTACK)
        {
            new 
ammonull get_user_weapon(idammonull);
            if (
ammo)
            {
                
set_pev(idpev_buttonbuttons & ~IN_ATTACK);
                new 
Float:gametime get_gametime(), Float:g_speed;
                if (
my_pbgun == 1)
                    
g_speed get_pcvar_float(speed);
                else
                    
g_speed = (my_pbgun == 2) ? get_pcvar_float(speed) * 2.0 get_pcvar_float(speed) * 3.0;
                if (
gametime-lastshot[id] > g_speed  && nextattack[id] < 0.0 && !freezetime)
                {
                    if (
paint_fire(id))
                    {
                        
lastshot[id] = gametime;
                        
set_user_clip(idammo 1);
                        
set_pev(idpev_punchangleFloat:{-0.50.00.0});
                        
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM_id);
                        
write_byte(g_shot_anim[my_pbgun]);
                        
write_byte(0);
                        
message_end();
                        if (
get_pcvar_num(sound))
                            
emit_sound(idCHAN_AUTO"misc/pbg.wav"1.0ATTN_NORM0PITCH_NORM);
                    }
                }
            }
        }
    }
    return 
FMRES_IGNORED;
}

public 
paint_fire(id)
{
    new 
aent;
    while (
a++ < g_pbcount && !ent)
        if (
g_pbstatus[a] == 0)
            
ent g_pbstatus[a] = g_paintballs[a];
    if (!
ent)
        while (
a-- > && !ent)
            if (
g_pbstatus[a] == 2)
                
ent g_pbstatus[a] = g_paintballs[a];

    if (
pev_valid(ent) && is_user_alive(id))
    {
        new 
Float:vangles[3], Float:nvelocity[3], Float:voriginf[3], vorigin[3], clr;
        
set_pev(entpev_classname"pbBullet");
        
set_pev(entpev_ownerid);
        
engfunc(EngFunc_SetModelent"models/w_paintball.mdl");
        
engfunc(EngFunc_SetSizeentFloat:{-1.0, -1.0, -1.0}, Float:{1.01.01.0});

        switch (
get_pcvar_num(color))
        {
            case 
2clr = (get_user_team(id) == 1) ? 1;
            case 
3clr = (get_user_team(id) == 1) ? 3;
            case 
4clr = (get_user_team(id) == 1) ? 5;
            default: 
clr random_num(06);
        }
        
set_pev(entpev_skinclr);
        
        
get_user_origin(idvorigin1);
        
IVecFVec(voriginvoriginf);
        
engfunc(EngFunc_SetOriginentvoriginf);

        
vangles[0] = random_float(-180.0180.0);
        
vangles[1] = random_float(-180.0180.0);
        
set_pev(entpev_anglesvangles);

        
pev(idpev_v_anglevangles);
        
set_pev(entpev_v_anglevangles);
        
pev(idpev_view_ofsvangles);
        
set_pev(entpev_view_ofsvangles);

        
set_pev(entpev_solid2);
        
set_pev(entpev_movetype5);

        
velocity_by_aim(idget_pcvar_num(veloc), nvelocity);
        
set_pev(entpev_velocitynvelocity);
        
set_pev(entpev_effectspev(entpev_effects) & ~EF_NODRAW);

        
set_task(0.1"paint_glow"ent);
        
set_task(15.0 "paint_reset"ent+TASK_PB_RESET);
    }

    return 
ent;
}

public 
fw_touch(bulletent)
{
    new class[
20];
    
pev(bulletpev_classname, class, 19);
    if (!
equali(class, "pbBullet"))
        return 
FMRES_IGNORED;

    new 
Float:origin[3], class2[20], owner pev(bulletpev_owner), is_ent_alive is_user_alive(ent);
    
pev(entpev_classnameclass219);
    
pev(bulletpev_originorigin);

    if (
is_ent_alive)
    {
        if (
owner == ent || pev(entpev_takedamage) == DAMAGE_NO)
            return 
FMRES_IGNORED;
        if (
get_user_team(owner) == get_user_team(ent))
            if (!
get_pcvar_num(friendlyfire))
                return 
FMRES_IGNORED;

        
ExecuteHam(Ham_TakeDamageentownerownerfloat(get_pcvar_num(damge)), 4098);
    }

    if (!
equali(class, class2))
    {    
        
set_pev(bulletpev_velocityFloat:{0.00.00.0});
        
set_pev(bulletpev_classname"pbPaint");
        
set_pev(bulletpev_solid0);
        
set_pev(bulletpev_movetype0);
        
engfunc(EngFunc_SetModelbullet"sprites/paintball.spr");

        new 
afindpb 0;
        while (
a++ < g_pbcount && !findpb)
            if (
g_paintballs[a] == bullet)
                
findpb g_pbstatus[a] = 2;

        
remove_task(bullet);
        
remove_task(bullet+TASK_PB_RESET);

        if (
get_pcvar_num(sound))
        {
            static 
wav[20];
            
formatex(wav20is_ent_alive "player/pl_pain%d.wav" "misc/pb%d.wav"is_ent_alive random_num(4,7) : random_num(1,4));
            
emit_sound(bulletCHAN_AUTOwav1.0ATTN_NORM0PITCH_NORM);
        }
        
//-----aagregado Lucas------------------//
        
        
new bool:valid_surface = (is_ent_alive || containi(class2"door") != -1) ? false true;
        if (
pev(entpev_health) && !is_ent_alive// && pev(ent, pev_takedamage) != DAMAGE_NO)
            
{
            new 
bool:isbox true
            
for(new 0sizeof(boxes); i++)
            if(
ent == boxes[i])
                {
                
isbox false
                
break
                }
                
            if(!
isbox)
            
ExecuteHam(Ham_TakeDamageentownerownerfloat(pev(entpev_health)), 0);
            
valid_surface false;
            }
        
        
//-------------------------------///    
        
if (valid_surface)
        {
            
paint_splat(bullet);
            
set_task(float(get_pcvar_num(blife)), "paint_reset"bullet+TASK_PB_RESET);
        }
        else
            
paint_reset(bullet+TASK_PB_RESET);

        return 
FMRES_HANDLED
    }

    return 
FMRES_IGNORED;
}

public 
paint_splat(ent)
{
    new 
Float:origin[3], Float:norigin[3], Float:viewofs[3], Float:angles[3], Float:normal[3], Float:aiming[3];
    
pev(entpev_originorigin);
    
pev(entpev_view_ofsviewofs);
    
pev(entpev_v_angleangles);

    
norigin[0] = origin[0] + viewofs[0];
    
norigin[1] = origin[1] + viewofs[1];
    
norigin[2] = origin[2] + viewofs[2];
    
aiming[0] = norigin[0] + floatcos(angles[1], degrees) * 1000.0;
    
aiming[1] = norigin[1] + floatsin(angles[1], degrees) * 1000.0;
    
aiming[2] = norigin[2] + floatsin(-angles[0], degrees) * 1000.0;

    
engfunc(EngFunc_TraceLinenoriginaiming0ent0);
    
get_tr2(0TR_vecPlaneNormalnormal);

    
vector_to_angle(normalangles);
    
angles[1] += 180.0;
    if (
angles[1] >= 360.0angles[1] -= 360.0;
    
set_pev(entpev_anglesangles);
    
set_pev(entpev_v_angleangles);

    
origin[0] += (normal[0] * random_float(0.32.7));
    
origin[1] += (normal[1] * random_float(0.32.7));
    
origin[2] += (normal[2] * random_float(0.32.7));
    
engfunc(EngFunc_SetOriginentorigin);
    
set_pev(entpev_framefloat(random_num( (pev(entpev_skin) * 18), (pev(entpev_skin) * 18) + 17 ) ));
    if (
pev(entpev_renderfx) != kRenderFxNone)
        
set_rendering(ent);
}

public 
paint_glow(ent)
{
    if (
pev_valid(ent))
    {
        static 
pbglow[5], clr[3];
        
get_pcvar_string(bglowpbglow4);
        switch (
get_pcvar_num(color))
        {
            case 
2clr = (get_user_team(pev(entpev_owner))==1) ? {25500} : {00255};
            default: 
clr = {255255255};
        }
        if (
read_flags(pbglow) & (<< 0))
            
set_rendering(entkRenderFxGlowShellclr[0], clr[1], clr[2], kRenderNormal255);
        if (
read_flags(pbglow) & (<< 1))
        {
            
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
            
write_byte(TE_BEAMFOLLOW);
            
write_short(ent);
            
write_short(beamspr);
            
write_byte(4);
            
write_byte(2);
            
write_byte(clr[0]);
            
write_byte(clr[1]);
            
write_byte(clr[2]);
            
write_byte(255);
            
message_end();
        }
    }
}

public 
paint_reset(ent)
{
    
remove_task(ent);
    
ent -= TASK_PB_RESET;
    new 
afindpb 1;
    while (
a++ <= g_pbcount && findpb)
        if (
g_paintballs[a] == ent)
            
findpb g_pbstatus[a] = 0;

    
set_pev(entpev_effectspev(entpev_effects) | EF_NODRAW);
    
engfunc(EngFunc_SetSizeentFloat:{0.00.00.0}, Float:{0.00.00.0});
    
set_pev(entpev_velocityFloat:{0.00.00.0});
    
engfunc(EngFunc_SetOriginentFloat:{-2000.0, -2000.0, -2000.0});
    if (
pev(entpev_renderfx) != kRenderFxNone)
        
set_rendering(ent);
}

public 
ev_roundstart()
{
    for (new 
1<= g_pbcounta++)
        if (
g_pbstatus[a] != 0)
            
paint_reset(g_paintballs[a]+TASK_PB_RESET);
    if (
freezetime)
        
freezetime 0;
}

public 
ev_freezetime()
    
freezetime 1;

stock user_has_pbgun(id)
{
    if (
is_user_alive(id))
    {
        new 
model[25];
        
pev(idpev_viewmodel2model24);
        if (
containi(model"models/v_pbgun") != -1)
            return 
1;
        else if (
equali(model"models/v_pbusp.mdl"))
            return 
2;
        else if (
equali(model"models/v_pbglock.mdl"))
            return 
3;
    }
    return 
0;
}

stock set_user_clip(idammo)
{
    new 
weaponname[32], weaponid = -1weapon get_user_weapon(id__);
    
get_weaponname(weaponweaponname31);
    while ((
weaponid engfunc(EngFunc_FindEntityByStringweaponid"classname"weaponname)) != 0)
        if (
pev(weaponidpev_owner) == id) {
            
set_pdata_int(weaponid51ammo4);
            return 
weaponid;
        }
    return 
0;
}

// teame06's function
stock set_rendering(indexfx=kRenderFxNoner=0g=0b=0render=kRenderNormalamount=16)
{
    
set_pev(indexpev_renderfxfx);
    new 
Float:RenderColor[3];
    
RenderColor[0] = float(r);
    
RenderColor[1] = float(g);
    
RenderColor[2] = float(b);
    
set_pev(indexpev_rendercolorRenderColor);
    
set_pev(indexpev_rendermoderender);
    
set_pev(indexpev_renderamtfloat(amount));

Arje is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 22:53.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode