Raised This Month: $ Target: $400
 0% 

Help me with Fix Bugs weapons in paintballmod


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Arje
Senior Member
Join Date: Apr 2020
Location: Córdoba, Argentina
Old 05-20-2020 , 14:13   Help me with Fix Bugs weapons in paintballmod
Reply With Quote #1

Hello!! Well, I would like to fix a problem in this plugin, which is when someone bind a key, for example: "bind j "slot1; slot2" the paintball gun is bug, and becomes the normal mp5navy, I would like to know what should change in the plugin so that this does not happen.

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Paintball Gun"
#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"};

new const 
boxes []=
{
   
//el plugin abarca todos los siguienets mapas: de_airstrip; de_aztec; de_cbble; de_dust; de_dust2; de_storm; de_survivor; de_torn; de_train; de_vertigo; 
   //de_inferno
    
179,
   
//de_mirage
     
69,
     
70,
     
71,
     
72,
     
77,
     
81,
   
//de_cbble_go
     
312,
   
//de_overpass
     
69,
     
70,
     
71
}

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""100");
        
veloc register_cvar("pbgun_velocity""2000");
        
speed register_cvar("pbgun_speed""0.08");
        
blife register_cvar("pbgun_life""15");
        
sound register_cvar("pbgun_sound""1");
        
bglow register_cvar("pbgun_glow""a");
        
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");
}

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);
        }

        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 17:14.


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