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

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    Thông cảm, mình k chơi loại này :))
     
  2. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    @legiondark = -> == , bao h có thời gian tui fix lại cho
     
  3. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    @Ryokin: thanks nhá...complie không có Warnings nào ^^
    À, bác có thể chỉ em mấy cái event được ko?? Tìm chẳng ở đâu có :(

    @LDK: Đang làm plugins đánh bomb liều chết hả? =))

    P/S: các bác cho em hỏi cái:
    1. Có các nào để add 1 SPR vào 1 vị trí nhất định không?
    (Ví dụ: như SPR number mặc định của CS...Chứ SPR mình add mỗi độ phân giải nó lại ở 1 chỗ..=> chỉ chơi được ở 1 độ phân giải)
    2. Có cách nào để show_hudmessage luôn luôn hiện không? (em dùng thì khoảng 10s nó tự biến mất)...
    3. Dùng hàm nào để set màu, set font cho "show_hudmessage" ạ?


    ---------- Post added at 14:36 ---------- Previous post was at 14:34 ----------

    Với cả SET size cho nó nữa
    Các bác giúp em với...Nếu ko dùng show_hudmessage thì dùng hàm nào được ạ?


    (Em muốn làm 1 dòng chữ màu trắng hiện trên màn hình --> hiển thị số máu thay cho hud number)
     
  4. ngocvinh2009

    ngocvinh2009 C O N T R A

    Tham gia ngày:
    27/1/10
    Bài viết:
    1,665
    Nơi ở:
    TP.HCM
    Cái số 1 thì dùng metahook mới mong làm đc, sử dụng v32 để sử dụng metahook
     
  5. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Mấy bác cho em hỏi:
    Nếu dùng: native file_exists(const file[]);
    Thì đường dẫn được xác định ntn ạ?
    Ví dụ : cstrike\ducduy.txt
    Hay là D\:cs\cstrike\ducduy.txt
    ...đại loại là thế ^^
     
  6. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    thực ra cái số 1 dùng ent + fw addtofullpack vẫn làm đc

    code bomb suicide đây, đã sửa lài toàn bộ

    PHP:
    #include <amxmodx>
    #include <engine>
    #include <hamsandwich>

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

    new cvar_onoffcvar_fradiuscvar_fdamageexplodespr

    public plugin_precache()
    {
        
    explodespr precache_model("sprites/zerogxplode.spr")
    }

    public 
    plugin_init()
    {
        
    register_plugin(PLUGIN,AUTHOR,VERSION);
        
    register_concmd("LD_sb""sui_bomb");
        
    cvar_onoff register_cvar("LD_sb_onoff","1");
        
    cvar_fradius register_cvar("LD_sb_radius""100");
        
    cvar_fdamage register_cvar("LD_sb_dmg","100");
    }

    public 
    sui_bomb(id)
    {
        if(!
    get_pcvar_num(cvar_onoff))
        {
            
    client_print(idprint_center"Plugin nay chua duoc bat");
            return;
        }
            
        new 
    iiPlayers[32], iNumiPlayerFloat:fDmgAmtFloat:fDmgDisFloat:fDistance;
        
    get_players(iPlayersiNum"ae""CT");
        
    fDmgAmt get_pcvar_float(cvar_fdamage);
        
    fDmgDis get_pcvar_float(cvar_fradius);
        
        if(
    iNum)
        {
            for(
    0iNumi++)
            {
                
    iPlayer iPlayers[i];
                
                
    fDistance entity_range(idiPlayer);
                
                if(
    fDistance fDmgDis)
                    continue;
                
                new 
    Float:fDamage fDmgAmt - (fDmgAmt fDmgDis fDistance);
                        
                
    ExecuteHam(Ham_TakeDamageiPlayer0idfDamageDMG_BLAST);
            }
        }
        
        new 
    iOrigin[3];
        
    get_user_origin(idiOrigin);
        
        
    message_begin(MSG_BROADCASTSVC_TEMPENTITYiOrigin);
        
    write_byte(TE_EXPLOSION);
        
    write_coord(iOrigin[0]);
        
    write_coord(iOrigin[1]);
        
    write_coord(iOrigin[2]);
        
    write_short(explodespr);
        
    write_byte(30);
        
    write_byte(15);
        
    write_byte(0);
        
    message_end();
        
        if(
    is_user_alive(id))
            
    user_kill(id);
    }
     
    Chỉnh sửa cuối: 27/7/11
  7. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @buiduchuy:
    1. Dùng set_task(0.2, "show_hud", id, _, _, "b") // b để lặp lại. Khi cần thì remove_task
    2. Set màu của set_hudmessage thì có gì khó đâu, đã bảo là sài amx studio bốc màu cho dễ.
    3. Ví dụ:
    PHP:
    file_exists("addons/amxmodx/configs/botadder/botlists/index.cfg")
    - Hiểu rồi đấy.

    @Ryokin:
    - Cái forward AddToFullPack nó dc call khi nào vậy :-?. Tui tưởng khi player nhặt item là nó dc call chứ
     
  8. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    call nhiều hơn player's think @@
     
  9. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Cũng giống forward think nhưng call nhiều hơn àh :-?
     
  10. legiondark

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    @Ryokin: Thank, bác viết lại thế e lại vọc thêm đc nhiều thứ, càng thêm nhiều thứ khó hiểu --> càng tốt =))
    PHP:
    #include <amxmodx> 
    #include <engine> 
    #include <hamsandwich> 

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

    new cvar_onoffcvar_fradiuscvar_fdamageexplodespr 

    public plugin_precache() 

        
    explodespr precache_model("sprites/zerogxplode.spr"


    public 
    plugin_init() 

        
    register_plugin(PLUGIN,AUTHOR,VERSION); 
        
    register_concmd("LD_sb""sui_bomb"); 
        
    cvar_onoff register_cvar("LD_sb_onoff","1"); 
        
    cvar_fradius register_cvar("LD_sb_radius""100"); 
        
    cvar_fdamage register_cvar("LD_sb_dmg","100"); 


    public 
    sui_bomb(id

        if(!
    get_pcvar_num(cvar_onoff)) 
        { 
            
    client_print(idprint_center"Plugin nay chua duoc bat"); 
            return; 
        } 
             
        new 
    iiPlayers[32], iNumiPlayerFloat:fDmgAmtFloat:fDmgDisFloat:fDistance
        
    get_players(iPlayersiNum"ae""CT"); //--> iNum trong này có nghĩa là j` ?
        
    fDmgAmt get_pcvar_float(cvar_fdamage); 
        
    fDmgDis get_pcvar_float(cvar_fradius); 
         
        if(
    iNum//Như trên
        

            for(
    0iNumi++) 
            { 
                
    iPlayer iPlayers[i]; 
                 
                
    fDistance entity_range(idiPlayer); //Lấy k cách giữa 2 vật thì id và iPlayer là 2 vật à ??
                 
                
    if(fDistance fDmgDis
                    continue; 
                 
                new 
    Float:fDamage fDmgAmt - (fDmgAmt fDmgDis fDistance); //Khoảng cách càng xa thì càng yếu, k nghĩ ra cái này
                         
                
    ExecuteHam(Ham_TakeDamageiPlayer0idfDamageDMG_BLAST); //Chưa hiểu lắm cái đoạn này
            

        } 
         
        new 
    iOrigin[3]; 
        
    get_user_origin(idiOrigin); 
         
        
    message_begin(MSG_BROADCASTSVC_TEMPENTITYiOrigin); 
        
    write_byte(TE_EXPLOSION); 
        
    write_coord(iOrigin[0]); 
        
    write_coord(iOrigin[1]); 
        
    write_coord(iOrigin[2]); 
        
    write_short(explodespr); 
        
    write_byte(30); 
        
    write_byte(15); 
        
    write_byte(0); 
        
    message_end(); 
         
        if(
    is_user_alive(id)) 
            
    user_kill(id); 
    }
    P/s:Tuy nhiên vẫn thiếu phần check team, ý của e là chỉ sử dụng plugin cho Ter thôi(chứ ai đời cảnh sát lại đánh bom bao h =)))
    Ask: Muốn check team thì phải dùng native nào và dùng thế nào bác ??
     
    Chỉnh sửa cuối: 27/7/11
  11. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Bác Ryokin cũng giỏi toán nhỉ, công trừ nhân chia lung tung :)). Tui cũng chịu
     
  12. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Lâu rồi mình ko vào đây support nhỉ[​IMG]
     
  13. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Cứ ngồi đó mà cưa mìn đi con :))
     
  14. teobrvt1995

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

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    ko hỉu sao mấy bác này giỏi tính damage thế nhỉ???
    mình là chịu rùi...
     
  15. kungfulon

    kungfulon Fire in the hole! Lão Làng GVN Sorcerer

    Tham gia ngày:
    1/5/11
    Bài viết:
    2,535
    Mi muốn mìn thì có mìn ngay[​IMG]
     
  16. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Bác cho em vài ví dụ cho dễ hiểu đi bác
     
  17. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Ví dụ về cái nào ?........
     
  18. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    tui cứ tưởng là chỉ ct bị dính dmg, thế thì nên dùng check player trong radius = find ent in sphere, muốn check chỉ team ter đc dùng thì dùng native
    PHP:
    //cstrike
    if(cs_get_user_team(id) == CS_TEAM_T)
    hoặc
    PHP:
    //engine
    if(get_user_team(id) == 1)
    nên dùng cstrike's native

    cái iNum để lấy số player trong team ct(alive)
     
  19. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    @LDK: Mình giải thích được chút ý nè
    PHP:
    #include <amxmodx> 
    #include <engine> 
    #include <hamsandwich> 

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

    new cvar_onoffcvar_fradiuscvar_fdamageexplodespr  //Khai báo

    public plugin_precache() 

        
    explodespr precache_model("sprites/zerogxplode.spr"//Load models


    public 
    plugin_init() 

        
    register_plugin(PLUGIN,AUTHOR,VERSION);    //Đăng kí plugins, lệnh, cvar..
        
    register_concmd("LD_sb""sui_bomb"); 
        
    cvar_onoff register_cvar("LD_sb_onoff","1"); 
        
    cvar_fradius register_cvar("LD_sb_radius""100"); 
        
    cvar_fdamage register_cvar("LD_sb_dmg","100"); 


    public 
    sui_bomb(id

        if(!
    get_pcvar_num(cvar_onoff)) //Nếu khác get_pcvar_num(cvar_onoff) (chưa bật)
        

            
    client_print(idprint_center"Plugin nay chua duoc bat"); 
            return; 
        } 
             
        new 
    iiPlayers[32], iNumiPlayerFloat:fDmgAmtFloat:fDmgDisFloat:fDistance;  // Khai báo biến
        
    get_players(iPlayersiNum"ae""CT"); //--> iNum trong này có nghĩa là j` ?
        
    fDmgAmt get_pcvar_float(cvar_fdamage);  // Lấy số trong cvar "cvar_fdamage" ở trên
        
    fDmgDis get_pcvar_float(cvar_fradius); // Lấy số trong cvar "cvar_fdamage" ở trên
         
        
    if(iNum// If cho iNum
        

            for(
    0iNumi++)  // Cho i=0, điều kiện : i<iNum , i+1...Lặp lại như thế..
            
    {  
                
    iPlayer iPlayers[i]; // gán biến iPlayer = Khe i của biến iPlayers[32]
                 
                
    fDistance entity_range(idiPlayer); //Hàm này ko bít
                 
                
    if(fDistance fDmgDis)  // Nếu fDistance > fDmgDis
                    
    continue; //tiếp tục
                 
                
    new Float:fDamage fDmgAmt - (fDmgAmt fDmgDis fDistance); // Khai báo biên fDamage = "số của  cvar_fdamage" - ("số của  cvar_fdamage" chia  "số cvar cvar_fdamage" nhân "giá trị của [entity_range(id, iPlayer)]

    //Notes: Số cvar xác định bởi lệnh "LD_sb_radius <giá trị>"
                 
    Số cvar xác định bởi lệnh "LD_sb_dmg <giá trị>"
                         
                
    ExecuteHam(Ham_TakeDamageiPlayer0idfDamageDMG_BLAST); //Chưa hiểu lắm cái đoạn này
            

        } 
         
        new 
    iOrigin[3]; 
        
    get_user_origin(idiOrigin); 
         
        
    message_begin(MSG_BROADCASTSVC_TEMPENTITYiOrigin); //ADD SPR...
        
    write_byte(TE_EXPLOSION); 
        
    write_coord(iOrigin[0]); 
        
    write_coord(iOrigin[1]); 
        
    write_coord(iOrigin[2]); 
        
    write_short(explodespr); 
        
    write_byte(30); 
        
    write_byte(15); 
        
    write_byte(0); 
        
    message_end(); 
         
        if(
    is_user_alive(id)) 
            
    user_kill(id); 
    }


    ---------- Post added at 20:30 ---------- Previous post was at 20:28 ----------

    1.Set_hudmessage (đặt tọa độ, đặt kiểu Font, đặt size, đặt màu)
    2. Cố định SPR cho mọi độ phân giải


    Thanks bác trước
     
  20. dias

    dias Mega Man

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

    set_hudmessage
    (025500.400.5006.012.0)
    show_hudmessage(id"Hello Wold")

    0, 255, 0 là màu
    0.40, 0.50 là tọa độ
    0 là effect

    Mã:
    set_hudmessage - Sets the format for a HUD message 
    Syntax:
    
         set_hudmessage ( red=200, green=100, blue=0, Float:x=-1.0, Float:y=0.35, effects=0, Float:fxtime=6.0, Float:holdtime=12.0, Float:fadeintime=0.1, Float:fadeouttime=0.2, channel=4 )
    Type:
    
        Native
    Notes:
    
    There are 4 hud channels pr player. This means you can send a 2 diffrent messages to player a & b via channel 1. 
    
    Use index 0 if you want to send a message to everyone. 
    Use show_hudmessage to show the message. 
    
    effects types: 
    0 = fade in/fade out 
    1 = flickery credits 
    2 = write out (training room) 
    
    Plugins that can be helpfull. 
    This plugin allows you to easly change the pos/color of a hud message: 
    http://forums.alliedmods.net/showthread.php?p=19439 
    
    Note - as of AMX Mod X 1.61, setting the channel to -1 will automatically choose the next available HUD channel for a player. 
    
    dịch đi
     

Chia sẻ trang này