[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. Counter-Striker

    Counter-Striker T.E.T.Я.I.S

    Tham gia ngày:
    15/3/10
    Bài viết:
    517
    Nơi ở:
    GameVN | Counter
    LUA là 1 dạng Ngôn Ngữ Lập Trình, mi ko hiểu là đúng rồi:-"

    ---------------------[S.V.E.N] kungfulon a.k.a Counter-Striker---------------------
     
  2. legiondark

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    H muốn tạo 1 cái plugin đánh bom tự sát thì phải làm thế nào nhỉ ( hơi chuối =))) , ai hướng dẫn cho ta với.
     
  3. bienchuot

    bienchuot Mr & Ms Pac-Man

    Tham gia ngày:
    9/6/09
    Bài viết:
    159
    Nơi ở:
    IllusionaryWorld
    Very Easy:>
     
  4. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    More easy than easy...........
     
  5. legiondark

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    Thì phải bắt đầu từ Very Easy --> Easy --> Normal --> Medium --> Hard --> Very Hard --> Expert chứ (Nghe hơi nản =)))
    Thế mấy bác júp em phần dàn ý thôi (bằng lời ý) rồi để em tự làm :D
     
  6. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    đăng kí 1 lệnh (clcmd)
    rồi trong public của lệnh đó. Write message Explode, sau đó sài user_kill(id) để tự kill mình.

    phần write message explode thì kiếm các plugin tham khảo hoặc: http://wiki.alliedmods.net/Temp_Entity_Events_(Half-Life_1)
    PHP:

    #define TE_EXPLOSION 3

    message_begin(MSG_BOARDCAST ,SVC_TEMPENTITY)
    write_byte(TE_EXPLOSION)
    write_coord()    // origin1
    write_coord()      // origin 2
    write_coord()      // origin 3
    write_short()    // sprite index
    write_byte()    // scale in 0.1's
    write_byte()    // framerate
    write_byte()    // flags
    message_end()
    nếu origin thì dùng pev_origin
    cái phần message begin nếu dùng engfunc thì càng tốt nhưng thôi vọc mấy cái này trước đi
     
  7. bienchuot

    bienchuot Mr & Ms Pac-Man

    Tham gia ngày:
    9/6/09
    Bài viết:
    159
    Nơi ở:
    IllusionaryWorld
    Cái chính là còn phải gây damage ra xung quanh. Dùng func radius_damage (chết mẹ, ở inc nào éo nhớ:|) là đc.
     
  8. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @Kungfulon:
    - Có func đó nữa hả :>. tiện thật thế mà trước kai mình cư phải khổ vì nó :>.
    - Đây nè mẹ, nó là của module engine
    Ex:
    PHP:
    public radiusdamage(id)
    {
         new 
    origin[3]
         new 
    damage 50 //50 hp damage
         
    new radius 100 //radius is within 100 units

         
    get_user_origin(id,origin)
         
    radius_damage(origin,damage,radius)
    }
    @darklegion:
    - dùng find_ent_in_sphere để check ent trong 1 radius. sau đó nếu ent nào trong radius thì execute ham_takedamage là dc. bên kfl có cái radius_damage tiện thật :"> thì sài nó cũng dc
     
    Chỉnh sửa cuối: 16/7/11
  9. legiondark

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    Chắc phải precache thêm cái spr nổ nữa
     
  10. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Uh thì precache. quên mất...................
     
  11. legiondark

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    return "Bỏ qua" thì dùng cái j` nhỉ , PLUGIN_INGORE à

    ---------- Post added at 22:35 ---------- Previous post was at 22:18 ----------

    Mới thế này thôi đã, mấy cái kia tính sau
    PHP:
    #include <amxmodx>
    #include <amxmisc>
    #include <hamsandwich>

    #define PLUGIN    "Suicide Bombings"
    #define AUTHOR    "LegionDark"
    #define VERSION    "1.0"

    new life
    public plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
    register_clcmd("LD_sui_bomb""sui_bomb")
        
    life is_user_alive(id//--> Tại sao k dùng id đc, nó báo là: undefined symbol (k xd đc ký tự) là sao
    }

    public 
    sui_bomb()
        {
            if(
    life == )
            {
                return 
    HAM_IGNORED
            
    }else 
            {
                
    user_kill(id//--> Vẫn câu hỏi như trên
            
    }
            return 
    PLUGIN_CONTINUE
        
    }
     
    Chỉnh sửa cuối: 16/7/11
  12. NguLongHaKhac

    NguLongHaKhac T.E.T.Я.I.S

    Tham gia ngày:
    5/2/11
    Bài viết:
    653
    Nơi ở:
    MC
    Ai giúp mình với,Mình cài plugins nst_wpn,tạo ra 1 weapons mới nhưng mà vào game mình đang chơi VD:đang cầm khẩu Ak47-camo chẳng hạn thì bắn đc 1 or 2 round thì nó biến thành ak bình thường và lại phải ấn amx_on 1 cứ tầm 1 or 2 ván lại bị Ai fix cho mình với :(
     
  13. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @legiondark:
    - Nhìn đống parameter của plugin_int(). có cái nào là id ko ?
     
  14. redplane

    redplane Legend of Zelda

    Tham gia ngày:
    7/11/09
    Bài viết:
    1,195
    @ dias : xem trong file .inc ấy, plugin_int() thì tức là không có giá trị nào khác => không có id
    @ legion : return không phải là bỏ qua, mà là TRẢ VỀ GIÁ TRỊ, ví dụ:
    stock check_zombie(id)
    {
    if (g_zombie[id])
    return 1
    return 0
    }

    có nghĩa là nếu người chơi là zombie, thì stock này trả về giá trị 1, còn không thì trả về 0
    LƯU Ý: Khi trả về giá trị, thì các dòng code sau return đều không được tính đến
    Trong ví dụ trên, khi return 1 thì dòng return 0 sẽ bị bỏ qua và kết thúc stock

    ---------- Post added at 10:22 ---------- Previous post was at 10:19 ----------

    @ legion : nếu anh giảng không hiểu thì đừng chưởi anh nhá :)).
     
  15. bienchuot

    bienchuot Mr & Ms Pac-Man

    Tham gia ngày:
    9/6/09
    Bài viết:
    159
    Nơi ở:
    IllusionaryWorld
    Code AMX ko có khó:))cái chính là đầu tiên phải hiểu đc cấu trúc hàm & các kiểu dữ liệu đã:))
     
  16. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    tớ mới học tý code, mong có thể giúp đc cậu chút ít

    PHP:

    #include <amxmodx>

    #define PLUGIN    "Suicide Bombings"
    #define AUTHOR    "LegionDark pro"
    #define VERSION    "1.0"

    public plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
    register_clcmd("LD_sui_bomb""sui_bomb")
    }

    public 
    sui_bomb(id)
        {
            if(
    is_user_alive(id))
                    
    user_kill(id)
        }  

     
    Chỉnh sửa cuối: 17/7/11
  17. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @ryokin:
    - Pro thế kia mà cứ... :))
    - Thêm phần hiện spr khi nổ đi, nó bảo là nổ tự sát mà ==" (write message là dc)

    @legiondark:
    - trong forward của AMX thì sài return HAM_IGNORED làm gì ?.
    - còn cái khúc life thì ghi mẹ vào trong luôn đi, làm gì cho dài dòng...

    @ALL:
    - có ai rút ngắn gọn và tối ưu hóa dc code này ko :-?. thấy nó dài dòng quá :)). ông kfl nói lại tui cái cách spawn tốt nhất đi
    PHP:
    #include <amxmodx>
    #include <cstrike>
    #include <hamsandwich>

    #define PLUGIN "[JailBreak] Buy Respawn"
    #define VERSION "1.0"
    #define AUTHOR "Dias"

    new cvar_cost_te
    new cvar_cost_ct

    public plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
        
    register_clcmd("say /buy_rp""buy_respawn")
        
        
    cvar_cost_te register_cvar("jail_rp_cost_te""5000")
        
    cvar_cost_ct register_cvar("jail_rp_cost_ct""8000")
    }

    public 
    buy_respawn(id)
    {
        if(
    cs_get_user_team(id) == CS_TEAM_SPECTATOR || cs_get_user_team(id) == CS_TEAM_UNASSIGNED)
            return 
    PLUGIN_HANDLED
            
        
    if(!is_user_alive(id))
        {
            new 
    current_money cs_get_user_money(id)
            
            if(
    cs_get_user_team(id) == CS_TEAM_T)
            {
                if(
    current_money >= get_pcvar_num(cvar_cost_te))
                {
                    
    ExecuteHam(Ham_CS_RoundRespawnid)
                    
    cs_set_user_money(idcs_get_user_money(id) - get_pcvar_num(cvar_cost_te))
                    
    client_print(idprint_chat"[JailBreak] Da thanh toan... Hoi Sinh")
                } else {
                    
    client_print(idprint_chat"[JailBreak] Thieu tien kia may. Yeu cau: %i$ (Cho TE)"get_pcvar_num(cvar_cost_te))
                }
            } else if(
    cs_get_user_team(id) == CS_TEAM_CT) {
                if(
    current_money >= get_pcvar_num(cvar_cost_ct))
                {
                    
    ExecuteHam(Ham_CS_RoundRespawnid)
                    
    cs_set_user_money(idcs_get_user_money(id) - get_pcvar_num(cvar_cost_ct))
                    
    client_print(idprint_chat"[JailBreak] Da thanh toan... Hoi Sinh")
                } else {
                    
    client_print(idprint_chat"[JailBreak] Thieu tien kia may. Yeu cau: %i$ (Cho CT)"get_pcvar_num(cvar_cost_ct))
                }            
            }
        } else {
            
    client_print(idprint_chat"[JailBreak] Con song thi mua Hoi Sinh lam gi ?")
        }
        
        return 
    PLUGIN_CONTINUE
    }
     
    Chỉnh sửa cuối: 17/7/11
  18. 5c0r-|3i0

    5c0r-|3i0 Donkey Kong

    Tham gia ngày:
    6/8/09
    Bài viết:
    387
    1)
    Mình thì GÀ code lắm , khuyến mãi bạn thêm 1 public .
    PHP:
    public suicide_bomba(id) {
    // Vì trước đó đã check alive , tớ ko check nữa nha
    static Floatorigin[3]
    entity_get_vectorid EV_VEC_origin origin )

    // Vẽ spr cho đẹp
        
    message_begin(MSG_BROADCASTSVC_TEMPENTITY);
        
    write_byte(3);        // TE_EXPLOSION
        
    write_coord(floatround(origin[0])); // Floatround return => NUM , vì engine trả Float
        
    write_coord(floatround(origin[1]));
        
    write_coord(floatround(origin[2]));
        
    write_short(explodespr);// sprite
        
    write_byte(40);        // scale
        
    write_byte(12);        // fps
        
    write_byte(0);        // flags
        
    message_end();
    // Gây damage !
    radius_damageOrigin get_pcvar_float(cvar_Fdamage) , get_pcvar_float(cvar_Fradius) ) 

    }
    2) Tạo 1 public plugin_precache()
    PHP:
    public plugin_precache() 
    explodespr precache_model("sprites/zerogxplode.spr");
    Public này dùng để precache model , chạy trước cả plugin_init
    3) Bạn tự tạo 2 cvar_Fdamage và cvar_Fradius nhé ( damage là sát thương , radius là bán kính , bạn để cỡ 300 thử xem :D .

    4) Ở phần include thêm >>> #include <engine>

    P/S : Chưa test thử nha :D . Có lỗi j thì báo :D .
     
  19. kakaan96

    kakaan96 Dragon Quest

    Tham gia ngày:
    29/1/10
    Bài viết:
    1,422
    ông sương xọ release mod bio rồi cơ ak
    tưởng đang làm coder cho vnforce
    @Dias:Làm JaiBreak ak
    chưa chơi bao h ^^
     
  20. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Mấy PRO có thể FIX giúp mình cái này không? Sửa cả tối qua vẫn ko complie được [\B]
    PHP:
    #include <amxmodx>
    #include <amxmisc>
    #include <cstrike>

    #define PLUGIN "Misson"
    #define VERSION "1.0"
    #define AUTHOR "Duc Duy"


    new  my_team 
    new players_t[32],players_ct[32], ict,ite

        
    public plugin_init() 
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
    register_event("DeathMsg""win_lose""a"
        
    register_event("HLTV""event_round_start""a""1=0""2=0")
    }

    public 
    win_lose()
    {
        
    get_players(players_t,ite,"ae","TERRORIST")
        
    get_players(players_ct,ict,"ae","CT")
        
    my_team cs_get_user_team(id)
        
        if (
    my_team ==CS_TEAM_T){

        if (
    ite == && ict!0){
            
    message_begin(MSG_ONEget_user_msgid("StatusIcon"), {0,0,0}, id)
            
    write_byte(1// status: 0: off; 1: on; 2:flash
            
    write_string(lose)
            
    write_byte(255// red
            
    write_byte(255// green
            
    write_byte(255// blue
            
    message_end()
            
    hide_spr()
            } else {
            
    message_begin(MSG_ONEget_user_msgid("StatusIcon"), {0,0,0}, id)
            
    write_byte(1// status: 0: off; 1: on; 2:flash
            
    write_string(win)
            
    write_byte(255// red
            
    write_byte(255// green
            
    write_byte(255// blue
            
    message_end()
            
    hide_spr()
            }
        }
        if (
    my_team ==CS_TEAM_CT){

        
        if (
    ite == && ict!0){
            
    message_begin(MSG_ONEget_user_msgid("StatusIcon"), {0,0,0}, id)
            
    write_byte(1// status: 0: off; 1: on; 2:flash
            
    write_string(win)
            
    write_byte(255// red
            
    write_byte(255// green
            
    write_byte(255// blue
            
    message_end()
            
    hide_spr()
            } else {
            
    message_begin(MSG_ONEget_user_msgid("StatusIcon"), {0,0,0}, id)
            
    write_byte(1// status: 0: off; 1: on; 2:flash
            
    write_string(lose)
            
    write_byte(255// red
            
    write_byte(255// green
            
    write_byte(255// blue
            
    message_end()
            
    hide_spr()
            }
        }
    }
        
    public 
    event_round_start()
    {
        new 
    iconstatus get_user_msgid("StatusIcon")
        
    message_begin(MSG_ONEget_user_msgid("StatusIcon"), {0,0,0}, id)
        
    write_byte(0)
        
    write_string(lose
        
    write_string(win
        
    message_end()
    }
    À, em được biết có 2 cách add spr
    + Dùng nguyên file SPR , tọa độ được hiểu trong hud.txt
    + Lấy 1 phần của SPR (hud_kill chẳng hạn) tọa độ được quy định ở>??
    Mấy anh chỉ em với..!
     

Chia sẻ trang này