[AMX] Tổng hợp Code, Plug do Mem chế hoặc giới thiệu

Thảo luận trong 'Counter Strike' bắt đầu bởi Orpheus, 22/1/11.

  1. teobrvt1995

    teobrvt1995 T.E.T.Я.I.S

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    mới làm thử cái nỳ, chưa test, mọi người xem dùm mình vời :)
    PHP:
    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta>
    #include <hamsandwich>
    #include <zombieplague>
    #include <xs>

    #define fm_find_ent_in_sphere(%1,%2,%3) engfunc(EngFunc_FindEntityInSphere, %1, %2, %3)
    #define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
    #define fm_remove_entity(%1) engfunc(EngFunc_RemoveEntity, %1)
    #define fm_entity_set_model(%1,%2) engfunc(EngFunc_SetModel, %1, %2)
    #define fm_drop_to_floor(%1) engfunc(EngFunc_DropToFloor, %1)


    new g_iCanUseBomb[33]

    new 
    Bomb_model[64] = {" models/bomb.mdl"}

    new 
    trail_sprexp_spr

    new const Bomb_Sounds[][] = {
            
    "weapons/bomb_warming,wav",
            
    "weapons/bomb_start.wav"
            
    "weapons/bomb_explode.wav"
    }


    public 
    plugin_init()
    {
        
        
    register_plugin("Direct Bomb"," 1.0""Teobrvt1995")
        
        
    register_event("HLTV","Event_HLTV","a","1=0","2=0")
        
    register_event("DeathMsg","Event_DeathMsg","b")
        
        
    register_forward(FM_CmdStart,"fwFM_CmdStart")
        
    register_forward(FM_Touch,"fwFM_Touch")
        
    }

    public 
    plugin_precache()
    {
        
    precache_model(Bomb_model)
        
        for( new 
    0sizeof Bomb_Sounds;i++)
            
    precache_sound(Bomb_Sounds[i])
        
        
    trail_spr precache_model("sprites/eexplo.spr")
        
    exp_spr precache_model("sprites/smoke.spr")
        
    }

    public 
    client_connect(id)    g_iCanUseBomb[id] = 0
    public client_disconnect(id)    g_iCanUseBomb[id] = 0
    public zp_user_infected_post(id)    g_iCanUseBomb[id] = 0
    public zp_user_humanized_post(id,survivor)
    {
        if(!
    zp_get_user_survivor(id) && !survivor)
        {
            
    g_iCanUseBomb[id] = 0
            g_iCanUseBomb
    [survivor] = 0
        
    }
        else
        {
            
    g_iCanUseBomb[id] = 1
        
    }
    }

    public 
    Event_HLTV()
    {
        for( new 
    id =0idget_maxplayers(); id++)
            
    g_iCanUseBomb[id] = 1
    }

    public 
    Event_DeathMsg()
    {
        
    g_iCanUseBomb[read_data(2)] = 0
    }

    public 
    fwFM_CmdStart(id,handle,seed)
    {
        if(!
    is_user_alive(id))
            return 
    FMRES_IGNORED
            
        
    if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
            return 
    FMRES_IGNORED
            
        
    if(!g_iCanUseBomb[id])
            return 
    FMRES_IGNORED
            
        
    new iButton get_uc(handle,UC_Buttons)
        
        if(
    iButton&IN_USE)
        {
            
    set_uc(handle,UC_Buttons,iButton&~IN_USE)
            
    UseBomb(id)
            
    emit_sound(id,CHAN_AUTO,Bomb_Sounds[0], 1.0ATTN_NORM,0,PITCH_NORM)
            
            
    g_iCanUseBomb[id] = 0
        
    }
        return 
    FMRES_HANDLED
        
    }

    UseBomb(id)
    {
        
        if(!
    is_user_alive(id) || zp_get_user_zombie(id))
            return
            
        
    set_task(120.0,"task_ReuseBomb",id+1000)
        new 
    Float:fOrigin[3]
        
    fm_get_aim_origin(id,fOrigin)
        
        new 
    iVictim = -1
        
    while ( ( iVictim engfunc(EngFunc_FindEntityInSphereiVictimfOrigin100.0) ) != )
        {
            if(!
    is_user_alive(iVictim) || !zp_get_user_zombie(iVictim))
                continue
                
            if(
    is_wall_between_points(fOrigin,iVictim))
                continue
            new 
    param[2]
            
    param[0] = id
            param
    [1] = iVictim
            
            set_task
    (120.0,"task_CreateBomb",_,param,1)
            
        }
            
    }

    public 
    task_ReuseBomb(id)
    {
        
    id-= 1000
        
    if(!is_user_alive(id) || zp_get_user_zombie(id))
            return
            
        
    g_iCanUseBomb[id] = 1
    }

    public 
    task_CreateBomb(param[])
    {
        new 
    id param[0]
        new 
    iVictim param[1]
        
        new 
    Float:fVicOrigin[3],FloatfAngle[3], iEnt
        
        iEnt 
    fm_create_entity("info_target")
        
        if(!
    iEnt)    return
        
        
    pev(iVictimpev_origin,fVicOrigin)
        
        
    fVicOrigin[2]+= random_float(500.0,100.0)*random_float(1.0,1.5)
        
    fAngle[0] = 90.0
        fAngle
    [1] = 0.0
        fAngle
    [2] = 0.0
        
        set_pev
    (iEntpev_classname,"direct_bomb")
        
    set_pev(iEntpev_origin,fVicOrigin)
        
    set_pev(iEntpev_angles,fAngle)
        
        
    fm_entity_set_model(iEnt,Bomb_model)
        
        
    set_pev(iEntpev_mins,{ -1.0,-1.0,-1.0})
        
    set_pev(iEntpev_maxs, {1.01.01.0})
        
    set_pev(iEntpev_movetype,MOVETYPE_TOSS)
        
    set_pev(iEntpev_gravity1000)
        
        
    set_pev(iEntpev_owner,id)
        
        
    emit_sound(iEnt,CHAN_AUTO,Bomb_Sounds[1],1.0,ATTN_NORM,0,PITCH_NORM)
        
        
    fm_drop_to_floor(iEnt)
        
    create_trail(iEnt)
        
        
    }

    public 
    fwFM_Touch(iEnt)
    {
        if(!
    pev_valid(iEnt))    return FMRES_IGNORED
        
    new sClassname[32]
        
    pev(iEntpev_classnamesClassname,31)
        if(
    equal(sClassname,"direct_bomb"))
        {
            
    Bomb_Explode(iEnt)
            
    fm_remove_entity(iEnt)
        }
        return 
    FMRES_IGNORED
    }


    Bomb_Explode(ent)
    {
        
        if(!
    pev_valid (ent))
            return
            
        new 
    Float:fOrigin[3]
        
    pev (ent,pev_origin,fOrigin)
        
        
    engfunc (EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYfOrigin)
        
    write_byte (TE_EXPLOSION)
        
    engfunc (EngFunc_WriteCoordfOrigin[0]) 
        
    engfunc (EngFunc_WriteCoordfOrigin[1])
        
    engfunc (EngFunc_WriteCoordfOrigin[2])
        
    write_short(exp_spr
        
    write_byte(50)
        
    write_byte(15
        
    write_byte(0
        
    message_end()/*
        
        engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
        write_byte(TE_WORLDDECAL) 
        engfunc(EngFunc_WriteCoord, origin[0]) 
        engfunc(EngFunc_WriteCoord, origin[1]) 
        engfunc(EngFunc_WriteCoord, origin[2]) 
        write_byte(random_num(46, 48)) 
        message_end() 
        
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)  
        write_byte(5)
        write_coord(floatround(origin[0]))
        write_coord(floatround(origin[1]))
        write_coord(floatround(origin[2]))
        write_short(smoke)
        write_byte(35)
        write_byte(5)
        message_end()*/
        
        
    new owner pev(entpev_owner)    
        
        for ( new 
    1get_maxplayers(); i++ )
        {
            if(!
    is_user_alive(i) || !zp_get_user_zombie(i))
                continue
            new  
    Float:fOrigin2[3]
            
    pev(ipev_origin,fOrigin2)
            
            new 
    Float:distance_f get_distance_f(fOriginfOrigin2)
            new 
    Float:radius_f 300.0
            
            
    if ( distance_f <= radius_f)
            {
                new 
    normaldamage floatround(500.0 - (1000.0*distance_f)/radius_f)
                new 
    get_user_health(i)- normaldamage
                
    if( >= 1)
                {
                    
    set_pev(ipev_healthfloat(d))
                }
                else
                {
                    
    Death_Msg(i,"grenade",owner)
                }
            }
        }
    }

    stock Death_Msg(iVictim,const class[], iAttacker)
    {
        
    set_msg_block(get_user_msgid("DeathMsg"),BLOCK_SET)
        
    ExecuteHamB(Ham_Killed,iVictim,iAttacker,0)
        
    set_msg_block(get_user_msgid("DeathMsg"),BLOCK_NOT)
        
        
    make_deathmsg(iAttacker,iVictim,0,class)
        
    message_begin(MSG_BROADCASTget_user_msgid("ScoreInfo"))
        
    write_byte(iAttacker)
        
    write_short(pev(iAttackerpev_frags)) 
        
    write_short(cs_get_user_deaths(iAttacker)) 
        
    write_short(0)
        
    write_short(get_user_team(iAttacker)) 
        
    message_end()
            
        
    message_begin(MSG_BROADCASTget_user_msgid("ScoreInfo"))
        
    write_byte(iVictim)
        
    write_short(pev(iVictimpev_frags)) 
        
    write_short(cs_get_user_deaths(iVictim)) 
        
    write_short(0
        
    write_short(get_user_team(iVictim)) 
        
    message_end()
    }


        
    stock create_trail(iEnt)
    {
        
        
    message_beginMSG_BROADCASTSVC_TEMPENTITY)
        
    write_byte(TE_BEAMFOLLOW
        
    write_short(iEnt)
        
    write_short(trail_spr
        
    write_byte(10)
        
    write_byte(3
        
    write_byte(255
        
    write_byte(255
        
    write_byte(255
        
    write_byte(255
        
    message_end() 
    }
            
    stock fm_get_aim_origin(indexFloat:origin[3]) {
        new 
    Float:start[3], Float:view_ofs[3];
        
    pev(indexpev_originstart);
        
    pev(indexpev_view_ofsview_ofs);
        
    xs_vec_add(startview_ofsstart);

        new 
    Float:dest[3];
        
    pev(indexpev_v_angledest);
        
    engfunc(EngFunc_MakeVectorsdest);
        
    global_get(glb_v_forwarddest);
        
    xs_vec_mul_scalar(dest9999.0dest);
        
    xs_vec_add(startdestdest);

        
    engfunc(EngFunc_TraceLinestartdest0index0);
        
    get_tr2(0TR_vecEndPosorigin);

        return 
    1;
    }


    stock is_wall_between_points(const Float:fStart[3], EntiIgnoreEnt 0isIgnoreMonsters true)

        
        new 
    Float:fEnd[3]
        
    pev(Entpev_origin,fEnd)
        
        new 
    ptr create_tr2()
        
        
    engfunc(EngFunc_TraceLinefStartfEnd, (isIgnoreMonsters) ? IGNORE_MONSTERS DONT_IGNORE_MONSTERSiIgnoreEntptr)
        
        new 
    Float:fFraction 
        get_tr2
    (ptrTR_flFractionfFraction)
        
        
    free_tr2(ptr)
        
        return (
    fFraction != 1.0)
    }
     
  2. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
  3. okhayko

    okhayko The Warrior of Light

    Tham gia ngày:
    12/11/09
    Bài viết:
    2,290
    Nơi ở:
    Cẩm Phả City
    Sao không cho cả người nó đỏ lòm lên :-?
     
  4. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Làm rồi đấy, nhưng mỗi tội amxx glow của nó bị ngu ngu sao sao ấy :)), nó cứ xoay xoay, lúc đỏ lúc ko đỏ, kệ nó thôi,
     
  5. okhayko

    okhayko The Warrior of Light

    Tham gia ngày:
    12/11/09
    Bài viết:
    2,290
    Nơi ở:
    Cẩm Phả City
    Không thì làm giống cái heat sensor của MW2 ấy :-"
     
  6. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    ^
    - Thì ta làm giống MW2 còn quái gì nữa b-(
     
    Chỉnh sửa cuối: 4/7/12
  7. csredpro

    csredpro Youtube Master Race

    Tham gia ngày:
    1/7/12
    Bài viết:
    47
    sao bác không cho cảnh vật xung quanh rõ hơn tí
    PS: gần giống M4A1 Heat Sensor của bác Redplane
     
  8. okhayko

    okhayko The Warrior of Light

    Tham gia ngày:
    12/11/09
    Bài viết:
    2,290
    Nơi ở:
    Cẩm Phả City
    Heat sensor của Scope MW2 nó ntn cơ mà cháu [​IMG]

    [​IMG]
     
  9. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Mấy chú cứ làm như GoldScr là IW 4.0 ko = =))
     
  10. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Chú KungFuLon có định làm 2 class mới thì đưa ta sma luôn nhá, ta add vào mod của ta luôn :>. Yên tâm là khi ta dedicated server tên chú kungfulon sẽ có trong credits với sontung0
    [Zombie: The Hero] dành cho Server HLDS
    - Vì do là chạy trên cả server và client-side (không sài metahook, nên có vài cái bất lợi như là hud hơi mờ =)))

    - Máu sẽ đưa về dạng tỉ lệ phần trăm, trên cái hud máu cũ, nếu mình có 1000/2000 thì cái hud hiện 50, và 2000/2000 thì hud hiện 100. 500/2000 thì hiện 25%
    - Có thêm cây máu cho đẹp =)), nếu 100% máu thì toàn cây màu vàng, còn nếu bị mất máu thì cây sẽ có 1 khúc màu đỏ

    New NVG (Thay thế NVG cũ, giảm lag 200%, không hại mắt =)))
    [​IMG]

    Become Heroine
    [​IMG]

    Hero Andrey
    [​IMG]
    [​IMG]

    Kill A Zombie
    [​IMG]
    [​IMG]

    How about a zombie ?
    [​IMG]
    [​IMG]

    Win Hud for Zombie (ko sài metahook nên nó hơi mờ...)
    [​IMG]
    [​IMG]
     
    Chỉnh sửa cuối: 7/7/12
  11. teobrvt1995

    teobrvt1995 T.E.T.Я.I.S

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    kết mỗi cái nvg với hud lv :D

    huehuehue 30charrrr
     
  12. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    - new NVG, như tui đã add vào zp cho ông
    - cái hud to to đó là dhud đó :)). hay cho cả synchud và defaulthud, có 8 channel tha hồ show
     
  13. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Em xin ip server của bác với....
     
  14. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    ^
    - Đã dedicated server đâu mà xin sỏ...
     
  15. teobrvt1995

    teobrvt1995 T.E.T.Я.I.S

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    cái Dhud nhỏ hơn SyncHud thì phải :)

    mình làm cái level như tên dias mà có chút chý à :))

    à dias,làm sao hiện % lên được vậy?
     
  16. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Sao mà không hiện được bác :) 30 character
     
  17. teobrvt1995

    teobrvt1995 T.E.T.Я.I.S

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    show coi :(
    30charrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
     
  18. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Dhud mà nhỏ hơn Sync à. mắt ông có bị lag ko ?
     
  19. teobrvt1995

    teobrvt1995 T.E.T.Я.I.S

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    ==" thật mừ ==" tại cái mediafire nó bị điên nên ko show ông dc =="
     
  20. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Đây là plugin cso effect killer. có thể hiện trên cả client-side mà không cần metahook hay acg. tuy nhiên khi di chuyển hud nó bị lắc nhẹ 1 tý nhưng chả sao cả =)). Dự định là sẽ phục vụ cho Zombie: The Hero Server
    [video=youtube;OUGZmoHbxPM]http://www.youtube.com/watch?v=OUGZmoHbxPM[/URL][/video]
     

Chia sẻ trang này