Пользователи, просматривающие тему (Пользователей: 0, Гостей: 0)

  1. M16

    Регистрация:
    13.06.16
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Ребят помогите пожалуйста вопшим мучаюсь 3 день
    с плагином лечебная граната, проблема такая я это плагин переделал только для админов, все работает но в другом проблема когда кидает обычный игрок дымовую гранату нет дыма. помогите пож как сделать чтобы дым был! вот исходник
    PHP:
    #include <amxmodx>
    #include <fakemeta>
    #include < cstrike >
    #include < fun >
    #include < engine >

    #include <amxmisc>

    #define PLUGIN_NAME "Nade Health"
    #define PLUGIN_VERSION "0.1"
    #define PLUGIN_AUTHOR "u"

    #define V_MODEL "models/v_he_mk_nade.mdl"
    #define P_MODEL "models/p_he_mk_nade.mdl"
    #define W_MODEL "models/w_he_mk_nade.mdl"

    #define GIVE_HP 30

    #define SMOKE_SCALE 30
    #define SMOKE_FRAMERATE 12

    new ExplSprExplSpr2ExplSpr3ExplYOg_iSpriteCircle

    // do not edit
    new const g_sound_explosion[]="weapons/sg_explode.wav"
    new const g_classname_grenade[]="grenade"
    new g_eventid_createsmoke

    public plugin_init(){
    register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_AUTHOR)

    register_forward(FM_EmitSound,"forward_emitsound")
    register_forward(FM_PlaybackEvent,"forward_playbackevent")
    register_event("CurWeapon","CurWeapon","be","1=1")
    register_forwardFM_SetModel,"forward_model")

    // we do not precaching, but retrieving the indexes
    g_eventid_createsmoke engfunc(EngFunc_PrecacheEvent1,"events/createsmoke.sc")
    }

    public 
    plugin_precache()
    {
    ExplSpr precache_model("sprites/gp_1.spr");
    ExplSpr2 precache_model("sprites/gp_2.spr");
    ExplSpr3 precache_model("sprites/gp_3.spr");
    precache_sound("woomen_expr.wav")
    ExplYO precache_model("sprites/woomensx.spr");

    g_iSpriteCircle precache_model("sprites/shockwave.spr");

    precache_model(V_MODEL)
    precache_model(W_MODEL)
    precache_model(P_MODEL)
    }

    public 
    CurWeapon(id)
    {
    if(
    is_user_alive(id)&& is_user_admin(id))
    {
    if(
    get_user_weapon(id)== CSW_SMOKEGRENADE)
    {
    set_pev(idpev_viewmodel2V_MODEL)
    set_pev(idpev_weaponmodel2P_MODEL)
    }
    }
    }

    public 
    forward_modelentity, const model[])
    {
    if(!
    pev_validentity )) return FMRES_IGNORED;

    if(
    equalmodel,"models/w_smokegrenade.mdl"))
    {
    engfunc EngFunc_SetModelentityW_MODEL );
    }
    return 
    FMRES_IGNORED;
    }

    public 
    forward_emitsound(entchannel, const sound[])
    {
    if (!
    equal(soundg_sound_explosion)||!is_grenade(ent))
    return 
    FMRES_IGNORED

    static Float:eek:rigin[3]
    static 
    id
    id 
    pev(entpev_owner)
    pev(entpev_originorigin)

    if(!
    is_user_admin(id)){
    return 
    FMRES_IGNORED
    }

    engfunc(EngFunc_EmitSoundentCHAN_WEAPON,"woomen_expr.wav"VOL_NORMATTN_NORM0PITCH_NORM)
    //engfunc(EngFunc_RemoveEntity, ent)
    //create_smoke(origin)

    message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
    write_byte(TE_SPRITETRAIL)//Спрайт захвата
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2])+20)
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2])+80)
    write_short(ExplSpr)
    write_byte(20)
    write_byte(20)
    write_byte(4)
    write_byte(20)
    write_byte(10)
    message_end()

    message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
    write_byte(TE_SPRITETRAIL)//Спрайт захвата
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2])+20)
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2])+80)
    write_short(ExplSpr2)
    write_byte(20)
    write_byte(20)
    write_byte(4)
    write_byte(20)
    write_byte(10)
    message_end()

    message_begin(MSG_ALL,SVC_TEMPENTITY,{0,0,0})
    write_byte(TE_SPRITETRAIL)//Спрайт захвата
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2])+20)
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2])+80)
    write_short(ExplSpr3)
    write_byte(20)
    write_byte(20)
    write_byte(4)
    write_byte(20)
    write_byte(10)
    message_end()

    message_begin(MSG_ALLSVC_TEMPENTITY);
    write_byte(TE_SPRITE);
    write_coord(floatround(origin[0]));
    write_coord(floatround(origin[1]));
    write_coord(floatround(origin[2])+ 70);
    write_short(ExplYO);
    write_byte(5);
    write_byte(100);
    message_end();//MESSAGE ENDING

    create_blast_circle(ent1025540)

    new 
    tre
    while((tre find_ent_in_sphere(tre,origin,250.0))!= 0)
    {
    if(
    is_user_alive(tre)&& get_user_team(tre)== get_user_team(id))
    {
    message_begin(MSG_ONEget_user_msgid("ScreenFade"),{0,0,0}, tre)
    write_short(1<<10)
    write_short(1<<10)
    write_short(0x0000)
    write_byte(170)
    write_byte(255)
    write_byte(0)
    write_byte(75)
    message_end()

    set_user_rendering(tre,kRenderFxGlowShell,0,255,50,kRenderNormal,20)
    set_task(1.5,"UnEffect"tre)

    set_user_health(tre,100)
    }
    }

    return 
    FMRES_SUPERCEDE
    }

    public 
    UnEffect(tre)
    {
    if(
    is_user_alive(tre))
    {
    set_user_rendering(tre)
    }
    }

    public 
    forward_playbackevent(flagsinvokereventindex){
    // we do not need a large amount of smoke
    if (eventindex == g_eventid_createsmoke)
    return 
    FMRES_SUPERCEDE

    return FMRES_IGNORED
    }

    bool:is_grenade(ent){
    if (!
    pev_valid(ent))
    return 
    false

    static classname[sizeof g_classname_grenade 1]
    pev(entpev_classnameclassnamesizeof g_classname_grenade)
    if (
    equal(classnameg_classname_grenade))
    return 
    true

    return false
    }

    stock bool:is_hull_vacant(const Float:eek:rigin[3], hull){
    new 
    tr 0
    engfunc
    (EngFunc_TraceHulloriginorigin0hull0tr)
    if (!
    get_tr2(trTR_StartSolid)&&!get_tr2(trTR_AllSolid)&& get_tr2(trTR_InOpen))
    return 
    true

    return false
    }

    stock create_blast_circle(entRGB)
    {
    static 
    FloatfOrigin[3], iOrigin[3];

    pev(entpev_originfOrigin);

    FVecIVecfOriginiOrigin );

    message_beginMSG_BROADCASTSVC_TEMPENTITYiOrigin );
    write_byteTE_BEAMCYLINDER );
    write_coordiOrigin]);
    write_coordiOrigin]);
    write_coordiOrigin]);
    write_coordiOrigin]);
    write_coordiOrigin]);
    write_coordiOrigin]+ 250);// radius
    write_shortg_iSpriteCircle );
    write_byte);// start framerate
    write_byte);// framerate
    write_byte);// life
    write_byte30 );// width
    write_byte);// amplitude

    write_byte(R);
    write_byte(G);
    write_byte(B);

    write_byte255 );// brightness
    write_byte);// speed
    message_end();
    }
     
  2. boss_ex

    Регистрация:
    09.06.16
    Сообщения:
    101
    Симпатии:
    18
    Пол:
    Мужской
    А в спойлер хотя бы запихать код не судьба? Не говоря уже про код [ code ] [/ code ]
     
  3. kratos_01

    Регистрация:
    17.01.16
    Сообщения:
    21
    Симпатии:
    2
    Пол:
    Мужской
    В forward_playbackevent сделай проверку на флаг админа.
     
  4. jokin Команда форума

    Регистрация:
    28.02.15
    Сообщения:
    892
    Симпатии:
    254
    @boss_ex, на это есть кнопка пожаловаться, не нужно начинать оффтоп.
     
  5. M16

    Регистрация:
    13.06.16
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    чет не пойму как сделать проверку? вы бы по подробней рассказали.