[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. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    *Theo Yêu cầu của Chief* đem class zombie sang đây post :))
    --------------------------------------------
    [ZP] Zombie Class: Lockerz Zombie
    [spoil]
    Tên: Lockerz Zombie
    Loại: Zombie Class
    Dành cho: Zombie Plague Mod
    Tác giả: Dias

    Chức năng chính của class:
    - Có thể khóa súng của human, Nếu súng đã bị khóa, thì thằng human đó sẽ không thể bắn được, và đồng thời cả dao cũng bị khóa. Nói chung thằng human đó không thể làm bất cứ việc gì, ngoài việc chạy. Chạy hoặc Chết

    - Sau 10 giây (Tùy chỉnh) sau khi bị zombie khóa súng, khẩu súng tự động sẽ mở lại.
    - Sau 30 giây (Tủy chỉnh) sau khi khóa súng của human, có thể tiếp tục sử dụng tiếp chức năng khóa súng.

    Cvar:
    - ls_distance | Khoảng cách để có thể khóa được cây súng | Mặc định: 750
    - lz_cooldown | Thời gian để tiếp tục sài chức năng khóa súng | Mặc định: 30
    - lz_cooldown_target | Thời giản để bỏ khóa súng sau khi bị khóa | Mặc định: 10

    Cách dùng:
    - Vào game chọn class rồi nhắm và ấn (G). Nếu chúng thì cái thằng human đó sẽ bị khóa súng. và màn hình của bạn sẽ hiện lên chữ: "Target Locked [Hit]" để báo hiệu bắn trúng.

    Tải xuống:
    - Xem file đính kèm.
    [/spoil]
     

    Các file đính kèm:

    Chỉnh sửa cuối: 27/1/11
  2. teobrvt1995

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

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    ai help tèo cái remove entity đi :((
    PHP:
    public m203_touch(NadeOther)
    {
        if(!
    pev_valid(Nade))
            return
            
        
    // Get it's origin
        
    static Float:origin[3]
        
    pev(Nadepev_originorigin)
        
        
    // Explosion
        
    engfunc EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYorigin0)
        
    write_byte (TE_EXPLOSION)
        
    engfunc(EngFunc_WriteCoordorigin[0]) // Position X
        
    engfunc(EngFunc_WriteCoordorigin[1]) // Position Y
        
    engfunc(EngFunc_WriteCoordorigin[2]) // Position Z
        
    write_short (xplode// Sprite index
        
    write_byte (40// Scale
        
    write_byte (30// Frame rate
        
    write_byte (0// Flags
        
    message_end ()
        new 
    id pev(Nadepev_owner)
        
        for(new 
    0sizeof sound_expi++)
            
    emit_sound(id,CHAN_VOICE,sound_exp[i], 1.0ATTN_NORM0PITCH_NORM
        
        
        
    // Owner
        
    static owner  owner pev(Nadepev_owner)    
        
        
    // Make a loop
        
    for(new 1g_MaxPlayers;i++)
        {
            
    //not alive
            
    if (!is_user_alive(i))
                  continue
                                    
            
    // Godmode
            
    if (get_user_godmode(i) == 1)
                continue
                
            
    // Human/Survivor
            
    if (!zp_get_user_zombie(i) || zp_get_user_survivor(i))
                continue
                
            
    // Get victims origin
            
    static Float:origin2 [3]
            
    pev(ipev_originorigin2)
            
            
    // Get distance between those origins
            
    static Float:distance_f distance_f get_distance_f(originorigin2)
            
            
    // Convert distnace to non-float
            
    static distance distance floatround(distance_f)
            
            
    // Radius
            
    static radius radius get_pcvar_num(cvar_radius)
            
            
    // We are in damage radius
            
    if ( distance <= radius )
            {
                
                
    // Max damage
                
    static maxdmg maxdmg get_pcvar_num(cvar_damage)
                
                
    // Normal dmg
                
    new Damage
                Damage 
    maxdmg floatround(floatmul(float(maxdmg), floatdiv(float(distance), float(radius))))
                
                
    set_pev(Nadepev_classname"grenade")
                for(new 
    1g_MaxPlayers;i++)
                
    ExecuteHamB(Ham_TakeDamagei"grenade"ownerFloat:DamageDMG_BLAST)
                
    //remove m203 nade...
                
    engfunc(EngFunc_RemoveEntityNade)

                
                
    // Calculate health
                
    new health get_user_health(i)
                
                
    // We have at least 1 hp
                
    if(health Damage >= 1)
                {
                    
    // New health
                    
    set_user_health(ihealth Damage
                    
    make_knockback(ioriginget_pcvar_float(cvar_knockback) * Damage)
                }
                else
                {
                    
    // We must die
                    
    death_message(owner,i,"grenade",1)
                    
                    
    // I hope they'll not find the bodies....
                    
    origin2 ] -= 45.0
                
    }
            }
        }
        
        
    // Breakable
        
    static ClassName[32]
        
    pev(Otherpev_classnameClassNamecharsmax(ClassName))
        if(
    equal(ClassName,"func_breakable"))
        {
            
    // Entity health
            
    static Float:health
            health 
    entity_get_float(OtherEV_FL_health)
            
            if (
    health <= get_pcvar_num(cvar_damage))
            {
                
    // Break it
                
    force_use(ownerOther)
            }
        }
        
        
    // Remove grenade
        
    engfunc(EngFunc_RemoveEntityNade)
    }
    thêm dòng remove entity rùi, nhưng ko dc :((
    PHP:
    engfunc(EngFunc_RemoveEntityNade)
     
  3. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    ko đc là sao ? nade vẫn đứng yên ở chỗ touch ?
     
  4. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Thử cái này xem:
    PHP:
    new grenade_class

    find_ent_by_class
    (grenade_class "grenade"); // grenade ở đây là class name
    remove_entity(grenade_class)
    @Ryokin:
    - Giúp tui cái này với. tụi tạo 1 entity và set model, set int set hết cho nó sau đó tui register_touch.
    Mà có register kiểu gì
    khi chạm vào entity thì cái touch func vẫn ko chạy.
    ông cho tui 1 đoạn code mẫu tạo entity và register touch đi

    P/s đây là post thứ 500 :))
     
    Chỉnh sửa cuối: 27/1/11
  5. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    - cái grenade ko cần làm thế , ent ở trong func đó rồi thì find ent làm gì
    - cái func ông tự viết ra đi, tui chỉ giúp chỉnh sửa chứ ko làm hộ đâu , có nh` plugin dùng touch rồi ma`..
     
  6. 545965

    545965 Youtube Master Race

    Tham gia ngày:
    24/1/10
    Bài viết:
    41


    làm sao để add một plugin vào zậy bác ,chỉ với !!thấy toàn plugin hay nhug ko pít add vào
     
  7. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @ryokin
    PHP:
    #include <amxmodx>
    #include <fakemeta>
    #include <engine>

    #define PLUGIN "123"
    #define VERSION "1.0"
    #define AUTHOR "Dias"

    new gBombSprite
    new Float:g_origin[3]
    new 
    Float:Mins[3]
    new 
    Float:Maxs[3]

    public 
    plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
             
    register_clcmd("set""set_bomb")
        
    register_clcmd("set_explode""explode")
        
    register_touch("bomb""player""explode")
    }

    public 
    plugin_precache()
    {
        
    precache_model("models/player/Yuna/Yuna.mdl")
        
    gBombSprite precache_model"sprites/he_new1.spr" )
    }

    public 
    set_bomb(id)
    {
        new 
    yuna create_entity("info_target")
             
        
    entity_get_vector(idEV_VEC_origing_origin)
        
    entity_set_int(yunaEV_INT_solid2)
        
    entity_set_model(yuna"models/player/Yuna/Yuna.mdl")
        
    entity_set_origin(yunag_origin)
        
    entity_set_float(yunaEV_FL_takedamage1.0)
        
    entity_set_float(yunaEV_FL_health100.0)
        
    entity_set_size(yunaMinsMaxs)
        
    entity_set_string(yunaEV_SZ_classname"func_yuna")
        
    entity_set_edict(yunaEV_ENT_owner1)
        
        
    }

    public 
    explode(id)
    {    
        new 
    origin[3]
        
    get_user_origin(idorigin3)
        
        
    message_begin(MSG_BROADCASTSVC_TEMPENTITY)
        
    write_byte(TE_EXPLOSION)
        
    write_coord(origin[0])
        
    write_coord(origin[1])
        
    write_coord(origin[2])
             
    write_short(gBombSprite)
        
    write_byte(100)
        
    write_byte(0)
        
    write_byte(0)
        
    message_end
        
        
    new entity1
        entity1 
    find_ent_by_class(entity1"func_yuna")
        
    remove_entity(entity1)
        
        
    }
    Sao nó ko work nhỉ mặc dù đã tạo dc entity nhưng đụng vào thì chả ra làm sao cả
     
  8. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    -
    PHP:
     register_touch("func_yuna""player""explode_touch_yuna"
    - cái cmd và func touch phải để riêng
    PHP:
    public explode_touch_yuna(yunaid)

        if(
    is_valid_ent(yuna) && is_user_alive(id))
        ....
     
  9. dark_one

    dark_one Liu Kang, Champion of Earthrealm

    Tham gia ngày:
    4/11/08
    Bài viết:
    5,329
    Nơi ở:
    1337 Kr3w
    bác nào rảnh viết nốt hướng dẫn add plugin cho mấy newbie chỉ thích dùng không thích làm đi :)
    cho cả .sma và .amxx nữa
    rồi nhờ mod up page 1 \m/
     
  10. My Own Way

    My Own Way S.V.E.N Commander

    Tham gia ngày:
    30/7/09
    Bài viết:
    12,221
    Nơi ở:
    Hải Phòng
    Để ngày thứ 7 ta viết được không :-?
    Đã update plugin của Dias lên list.
     
  11. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @ryokin
    - để thử cái client_print khi có dấu hiệu touch, thì cứ vào chạm hoài ko thấy j hết :|

    ông chỉ tui cái code entity có thể nhận dạng và tiêu diệt player dc ko ?.
     
  12. teobrvt1995

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

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    nó touch, vẫn explode, nhưng entity ko bị mất mà cứ bay lòng zòng à :-S
     
  13. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    đưa cái register func touch ở plugin init ra xem nào
     
  14. teobrvt1995

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

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    ùa
    PHP:
    register_touch("m203_nade""*""m203_touch")
    trong đó: m203_nade là class name gọi trong func launch nade.
     
  15. duchuy3108

    duchuy3108 Mr & Ms Pac-Man

    Tham gia ngày:
    5/8/09
    Bài viết:
    246
    Nơi ở:
    Hồ Chí Minh
    có ai có cái plugin hòm tiếp tế chơi trong zombie không cho em xin :D:D:D
     
  16. teobrvt1995

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

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    fix dc rùi... hihihihi
    :D:D:D:D:D:D:D
     
  17. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Ai Giúp tui cái này với. Tui làm class này khi bấm nút thì nó sẽ get những player ở gần nhất, và thực hiện func trên player đó.
    Nhưng mà chả biết cách get. nếu cái này sài ở event_death thì nó có id victim rồi nên dễ còn cái này tui muốn get khoảng cách từ player victim đến mình,
    và nếu trong phạm vi đạt yêu cầu thì func sẽ chạy.
    Hd tui get với :|

    PHP:
    public do_skill(id)
    {
        if(
    is_user_alive(id) && zp_get_user_zombie(id))
        {
            if(
    zp_get_user_zombie_class(id) == g_quark && can_do_skill[id] == true)
            {
                static 
    Float:origin[3]
                
    entity_get_vector(idEV_VEC_originorigin)

                for(new 
    1MAX_PLAYERSi++)
                {
                    if(
    is_user_alive(i))
                        continue
                    
                    if(!
    zp_get_user_zombie(i))
                        continue
                    
                    static 
    Float:attacker_origin[3]
                    new 
    Float:victim_origin[3]
                    new 
    Float:current_distance
                    
                    pev 
    (idpev_originattacker_origin)
                    
    pev (ipev_originvictim_origin)
                    
    current_distance get_distance_f(attacker_originvictim_origin)
                    
                    if(
    current_distance <= distance)
                    {
                        
    set_user_maxspeed(i, -1.0)
                    }
                }
                
                
    can_do_skill[id] = false
                set_task
    (get_pcvar_float(cooldown_time), "ability_reload"id)
                } else {
                
    client_print(idprint_chat"[Quark Zombie] You can't do your ability now. Please wait for %i"get_pcvar_num(cooldown_time))
            }
        } else {
        }
    }
     
    Chỉnh sửa cuối: 28/1/11
  18. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    -
    PHP:
     for(new 0MAX_PLAYERSi++) 
    - check ent trong 1 phạm vi origin tui đã từng nói rồi mà, đừng dùng get_distance...
    - cooldown thì hook float mà check, đừng dùng set task
     
  19. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Thực tình thì 2 cái ông vừa nói tui chả biết gì hết :)).
    có thể giải thích lại từng cái ko

    mà tui search toàn bộ post của ông thì ko thấy có cái nào là check ent trong 1 phạm vi origin cả.
    => http://forum.gamevn.com/search.php?searchid=252988&pp=

    Search đi search lại thì thấy Ryokin giúp hơi nhiều, đa số toàn reply cho mình :))
     
    Chỉnh sửa cuối: 28/1/11
  20. trungtin911

    trungtin911 C O N T R A

    Tham gia ngày:
    15/6/10
    Bài viết:
    1,695
    Nơi ở:
    Trên trễn =))
    Ai có plugin hiện 1 spr duy nhất cho xin đi
    chứ nó hiện đè cái headshot đè lên cái ngôi sao 6 cánh ghét quá.
     

Chia sẻ trang này