luzta serveris

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
laimiukas3
Moderatorius
Posts: 4569
Joined: 2012 Aug 03 01:12
Skype: laimiukas3
Location: Vilnius
Contact:

luzta serveris

Post by laimiukas3 »

pridedu nauja gingla ant p90 skinas (v_pbapbp90.mdl) ir ji nusipirkus 1 kart isovus luzsta serveris
L 05/30/2016 - 19:35:46: [AMXX] Displaying debug trace (plugin "paintballgun_.amxx")
L 05/30/2016 - 19:35:46: [AMXX] Run time error 4: index out of bounds
L 05/30/2016 - 19:35:46: [AMXX] [0] paintballgun.sma::fw_playerprethink
(line 187)
ir New message started when msg '32' has not been set yet

Code: Select all

#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_pbcount, Float:lastshot[33], Float:nextattack[33], freezetime;new pbgun, pbusp, pbglock, pbapbp90, color, shots, veloc, speed, blife, sound, bglow, damge, friendlyfire, tgun, ctgun, beamspr; static const g_shot_anim[4] = {0, 3, 9, 5};static const g_pbgun_models[11][] = {"models/v_pbgun.mdl", "models/v_pbgun14.mdl", "models/v_pbgun2.mdl", "models/v_pbgun14.mdl", "models/v_pbgun14.mdl", "models/v_pbgun14.mdl", "models/v_pbgun18.mdl", "models/v_pbgun18.mdl", "models/v_pbgun18.mdl", "models/v_pbgun18.mdl", "models/v_pbgun18.mdl"}; public plugin_init(){    register_plugin(PLUGIN, VERSION, AUTHOR);    register_cvar("paintballgun", VERSION, FCVAR_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");    pbapbp90 = register_cvar("amx_pbapbp90", "1");     if (get_pcvar_num(pbgun) || get_pcvar_num(pbusp) || get_pcvar_num(pbglock) || get_pcvar_num(pbapbp90))    {        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 a, max_ents_allow = global_get(glb_maxEntities) - 5;        for (a = 1; a <= get_pcvar_num(shots); a++)            if (a < MAX_PAINTBALLS)                if (engfunc(EngFunc_NumberOfEntities) < max_ents_allow)                {                    g_paintballs[a] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));                    if (pev_valid(g_paintballs[a]))                    {                        set_pev(g_paintballs[a], pev_effects, pev(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("amx_pbapbp90", "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_pbapbp90")) {        precache_model("models/v_pbapbp90.mdl");        precache_model("models/p_pbapbp90.mdl");    }    if (get_cvar_num("amx_pbgun") || get_cvar_num("amx_pbusp") || get_cvar_num("amx_pbapbp90") || 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(id, print_chat, "[AMXX] [Ent Info (Current/Max)] Paintballs: (%d/%d)   Entities: (%d/%d)", g_pbcount, get_pcvar_num(shots), engfunc(EngFunc_NumberOfEntities), global_get(glb_maxEntities)); public ev_curweapon(id){    new model[25];    pev(id, pev_viewmodel2, model, 24);    if (equali(model, "models/v_mp5.mdl") && get_pcvar_num(pbgun))    {        set_pev(id, pev_viewmodel2, (get_user_team(id) == 1) ? g_pbgun_models[tgun] : g_pbgun_models[ctgun]);        set_pev(id, pev_weaponmodel2, (ctgun) ? "models/p_pbgun1.mdl" : "models/p_pbgun.mdl");    }    else if (equali(model, "models/v_usp.mdl") && get_pcvar_num(pbusp))    {        set_pev(id, pev_viewmodel2, "models/v_pbusp.mdl");        set_pev(id, pev_weaponmodel2, "models/p_pbusp.mdl");    }    else if (equali(model, "models/v_glock18.mdl") && get_pcvar_num(pbglock))    {        set_pev(id, pev_viewmodel2, "models/v_pbglock.mdl");        set_pev(id, pev_weaponmodel2, "models/p_pbglock.mdl");    }    else if (equali(model, "models/v_p90.mdl") && get_pcvar_num(pbapbp90))    {        set_pev(id, pev_viewmodel2, "models/v_pbapbp90.mdl");        set_pev(id, pev_weaponmodel2, "models/p_pbapbp90.mdl");    }} public fw_setmodel(ent, model[]) {    if (equali(model, "models/w_mp5.mdl"))         if (get_pcvar_num(pbgun))        {            engfunc(EngFunc_SetModel, ent, "models/w_pbgun.mdl");            return FMRES_SUPERCEDE;        }    return FMRES_IGNORED;} public fw_updateclientdata(id, sw, cd_handle){    if (user_has_pbgun(id) && cd_handle)    {        set_cd(cd_handle, CD_ID, 1);        get_cd(cd_handle, CD_flNextAttack, nextattack[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(id, pev_button);        if (buttons & IN_ATTACK)        {            new ammo, null = get_user_weapon(id, ammo, null);            if (ammo)            {                set_pev(id, pev_button, buttons & ~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(id, ammo - 1);                        set_pev(id, pev_punchangle, Float:{-0.5, 0.0, 0.0});                        message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id);                        write_byte(g_shot_anim[my_pbgun]);                        write_byte(0);                        message_end();                        if (get_pcvar_num(sound))                            emit_sound(id, CHAN_AUTO, "misc/pbg.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);                    }                }            }        }    }    return FMRES_IGNORED;} public paint_fire(id){    new a, ent;    while (a++ < g_pbcount - 1 && !ent)        if (g_pbstatus[a] == 0)            ent = g_pbstatus[a] = g_paintballs[a];    if (!ent)        while (a-- > 1 && !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(ent, pev_classname, "pbBullet");        set_pev(ent, pev_owner, id);        engfunc(EngFunc_SetModel, ent, "models/w_paintball.mdl");        engfunc(EngFunc_SetSize, ent, Float:{-1.0, -1.0, -1.0}, Float:{1.0, 1.0, 1.0});         switch (get_pcvar_num(color))        {            case 2: clr = (get_user_team(id) == 1) ? 0 : 1;            case 3: clr = (get_user_team(id) == 1) ? 4 : 3;            case 4: clr = (get_user_team(id) == 1) ? 2 : 5;            default: clr = random_num(0, 6);        }        set_pev(ent, pev_skin, clr);                get_user_origin(id, vorigin, 1);        IVecFVec(vorigin, voriginf);        engfunc(EngFunc_SetOrigin, ent, voriginf);         vangles[0] = random_float(-180.0, 180.0);        vangles[1] = random_float(-180.0, 180.0);        set_pev(ent, pev_angles, vangles);         pev(id, pev_v_angle, vangles);        set_pev(ent, pev_v_angle, vangles);        pev(id, pev_view_ofs, vangles);        set_pev(ent, pev_view_ofs, vangles);         set_pev(ent, pev_solid, 2);        set_pev(ent, pev_movetype, 5);         velocity_by_aim(id, get_pcvar_num(veloc), nvelocity);        set_pev(ent, pev_velocity, nvelocity);        set_pev(ent, pev_effects, pev(ent, pev_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(bullet, ent){    new class[20];    pev(bullet, pev_classname, class, 19);    if (!equali(class, "pbBullet"))        return FMRES_IGNORED;     new Float:origin[3], class2[20], owner = pev(bullet, pev_owner), is_ent_alive = is_user_alive(ent);    pev(ent, pev_classname, class2, 19);    pev(bullet, pev_origin, origin);     if (is_ent_alive)    {        if (owner == ent || pev(ent, pev_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_TakeDamage, ent, owner, owner, float(get_pcvar_num(damge)), 4098);    }     if (!equali(class, class2))    {           set_pev(bullet, pev_velocity, Float:{0.0, 0.0, 0.0});        set_pev(bullet, pev_classname, "pbPaint");        set_pev(bullet, pev_solid, 0);        set_pev(bullet, pev_movetype, 0);        engfunc(EngFunc_SetModel, bullet, "sprites/paintball.spr");         new a, findpb = 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(wav, 20, is_ent_alive ? "player/pl_pain%d.wav" : "misc/pb%d.wav", is_ent_alive ? random_num(4,7) : random_num(1,4));            emit_sound(bullet, CHAN_AUTO, wav, 1.0, ATTN_NORM, 0, PITCH_NORM);        }         new bool:valid_surface = (is_ent_alive || containi(class2, "door") != -1) ? false : true;        if (pev(ent, pev_health) && !is_ent_alive)        {            ExecuteHam(Ham_TakeDamage, ent, owner, owner, float(pev(ent, pev_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(ent, pev_origin, origin);    pev(ent, pev_view_ofs, viewofs);    pev(ent, pev_v_angle, angles);     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_TraceLine, norigin, aiming, 0, ent, 0);    get_tr2(0, TR_vecPlaneNormal, normal);     vector_to_angle(normal, angles);    angles[1] += 180.0;    if (angles[1] >= 360.0) angles[1] -= 360.0;    set_pev(ent, pev_angles, angles);    set_pev(ent, pev_v_angle, angles);     origin[0] += (normal[0] * random_float(0.3, 2.7));    origin[1] += (normal[1] * random_float(0.3, 2.7));    origin[2] += (normal[2] * random_float(0.3, 2.7));    engfunc(EngFunc_SetOrigin, ent, origin);    set_pev(ent, pev_frame, float(random_num( (pev(ent, pev_skin) * 18), (pev(ent, pev_skin) * 18) + 17 ) ));    if (pev(ent, pev_renderfx) != kRenderFxNone)        set_rendering(ent);} public paint_glow(ent){    if (pev_valid(ent))    {        static pbglow[5], clr[3];        get_pcvar_string(bglow, pbglow, 4);        switch (get_pcvar_num(color))        {            case 2: clr = (get_user_team(pev(ent, pev_owner))==1) ? {255, 0, 0} : {0, 0, 255};            default: clr = {255, 255, 255};        }        if (read_flags(pbglow) & (1 << 0))            set_rendering(ent, kRenderFxGlowShell, clr[0], clr[1], clr[2], kRenderNormal, 255);        if (read_flags(pbglow) & (1 << 1))        {            message_begin(MSG_BROADCAST, SVC_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 a, findpb = 1;    while (a++ <= g_pbcount && findpb)        if (g_paintballs[a] == ent)            findpb = g_pbstatus[a] = 0;     set_pev(ent, pev_effects, pev(ent, pev_effects) | EF_NODRAW);    engfunc(EngFunc_SetSize, ent, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0});    set_pev(ent, pev_velocity, Float:{0.0, 0.0, 0.0});    engfunc(EngFunc_SetOrigin, ent, Float:{-2000.0, -2000.0, -2000.0});    if (pev(ent, pev_renderfx) != kRenderFxNone)        set_rendering(ent);} public ev_roundstart(){    for (new a = 1; a <= g_pbcount; a++)        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(id, pev_viewmodel2, model, 24);        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;        else if (equali(model, "models/v_pbapbp90.mdl"))            return 4;    }    return 0;} stock set_user_clip(id, ammo){    new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _);    get_weaponname(weapon, weaponname, 31);    while ((weaponid = engfunc(EngFunc_FindEntityByString, weaponid, "classname", weaponname)) != 0)        if (pev(weaponid, pev_owner) == id) {            set_pdata_int(weaponid, 51, ammo, 4);            return weaponid;        }    return 0;} // teame06's functionstock set_rendering(index, fx=kRenderFxNone, r=0, g=0, b=0, render=kRenderNormal, amount=16){    set_pev(index, pev_renderfx, fx);    new Float:RenderColor[3];    RenderColor[0] = float(r);    RenderColor[1] = float(g);    RenderColor[2] = float(b);    set_pev(index, pev_rendercolor, RenderColor);    set_pev(index, pev_rendermode, render);    set_pev(index, pev_renderamt, float(amount));}
pakeiciau static const g_shot_anim[4] = {0, 3, 9, 5}; i > static const g_shot_anim[5] = {0, 3, 9, 5};
dabar kaip ir nebemeta klaidos bet saudo letai kaip padaryti sparta saudymo normalia kaip ir turetu sitas gun saudyti greitai
Image
Image
Image

Post Reply

Who is online

Users browsing this forum: Google [Bot] and 12 guests