[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. 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
    1. Mở cái NST_WPN ra, coi phần Register Ham Zbot.
    2. Ko có tác dụng với bot vì đã register cho bot đâu? Muốn register thì xem phần 1.
     
  2. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @buiducduy:
    1. nếu ko tác dụng với bot thì sài register_forward FM_Spawn
    2. Nếu như trên nói là cái spawn ko có tác dụng với bot thì cái Fw Take Damage này cũng vậy
    3. Cứ register_native rồi ghi cái native vào 1 file inc nào đó là dc... Kiểu như là khi đã register xong thì nó nằm sẵn trong server, thích sài inc nào thì ghi native vào inc đó

    ---------- Post added at 20:56 ---------- Previous post was at 20:54 ----------

    @buiducduy:
    1. nếu ko tác dụng với bot thì sài register_forward FM_Spawn
    2. Nếu như trên nói là cái spawn ko có tác dụng với bot thì cái Fw Take Damage này cũng vậy
    3. Cứ register_native rồi ghi cái native vào 1 file inc nào đó là dc... Kiểu như là khi đã register xong thì nó nằm sẵn trong server, thích sài inc nào thì ghi native vào inc đó
     
  3. 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
    Phết pam... mi chưa register ham bot bao h à:|
     
  4. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Thanks very much...! Định làm AI mode nhưng lại ko có maps với cả cũng ko chắc chắn viết xong nó có chạy ko
    Thôi thì làm Zombie & Zombie v3 vậy... (Ko được thì xem của bác tùng :) )

    Nhưng mà em vẫn có 1 chút mắc cần giải quyết mà nghĩ chưa ra, các bác giúp em với!
    Ý tưởng:

    1. Sau 20 s thì cho set team cho tất cả nhân vật sang bên CT, 2 thằng có id bất kì sang TER rồi ẩn hết vũ khí, give_item("weapon_knife), set_pev thành hand con zombie (được)
    2. Chọn 1 thằng có id bất kì khác của con zombie làm hero (được)

    3. Zombie chém hunman thì thằng đó bị nhiễm độc --> Change Team --> give knife set_pev ( cái này em chưa làm được các bác giúp em với , Lúc đầu em định dùng event health kiểm tra số máu nếu khác 100 thì thành zombie, nhưng chẳng may nó nhảy từ cao xuống mât máu cũng thành zombie lun :))

    4. Nếu ko cần thằng CT nào thì end_round :)

    5. Hòm tiếp tế làm sao để ở các vị trí bất kì trên maps và hiện Icon của nó nữa :( ???
     
  5. 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
    3. Sử dụng Ham_TakeDamage rồi check team.
    4. Remove toàn bộ bomb site, hostage, VIP escape zone (nói chung là toàn bộ những thứ liên quan đến round) rồi tạo 1 cái entity tên là hostage_entity, di chuyển nó về origin {8192.0, 8192.0, 8192.0}. Lúc check ở trong Ham_TakeDamage, nếu là thằng cuối thì giết nó chứ ko infect nó (nếu infect nó thì round ko end).
    5. Sử dụng code random spawn là được. Còn cái icon thì có thể tham khảo trong SMA ZB3.
     
  6. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @buiducduy:
    - CHú định làm Zombie Mod à :)).... Easy man
     
  7. teobrvt1995

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

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    Dùng HAM_SUPECEDE để block damage khi infect. Chắc là dùng dc.
     
  8. JVLr.J3jn

    JVLr.J3jn Mr & Ms Pac-Man

    Tham gia ngày:
    21/11/11
    Bài viết:
    101
    anh nào cho e hỏi ik.. e down cái plugins call of duty về òi , add zô luôn òi mà ko biet chọn class . vô game nó ghi class none
     
  9. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Các bác cho em xin code block C4,bomb site, con tin... được ko ạ?
    Chế độ zombie có cứu con tin với đặt C4 thì :))
     
    Chỉnh sửa cuối: 4/12/11
  10. Giazzrian

    Giazzrian C O N T R A

    Tham gia ngày:
    6/1/11
    Bài viết:
    1,880
    Nơi ở:
    BMT/HCM
    nst_zombie có rồi mờ @@....................................
     
  11. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Ai biết lỗi này sửa dùm em với:
    ED_Alloc: no free edict
     
  12. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @buiducduy:
    1. Code Block Entity Bombsite, hosatge,...
    PHP:
    new const g_remove_entities[][] = 

        
    "func_bomb_target",    
        
    "info_bomb_target"
        
    "hostage_entity",      
        
    "monster_scientist"
        
    "func_hostage_rescue"
        
    "info_hostage_rescue",
        
    "info_vip_start",      
        
    "func_vip_safetyzone"
        
    "func_escapezone",     
        
    "func_buyzone"
    }

    public 
    plugin_precache()
    {
        
    register_forward(FM_Spawn"fwd_spawn")
    }

    public 
    fwd_spawn(ent)
    {
        if(!
    pev_valid(ent)) 
            return 
    FMRES_IGNORED
        
        
    static classname[32]
        
    pev(entpev_classnameclassname31)

        static 
    i
        
    for(0sizeof g_remove_entities; ++i)
        {
            if(
    equal(classnameg_remove_entities[i]))
            {
                
    engfunc(EngFunc_RemoveEntityent)
                return 
    FMRES_SUPERCEDE
            
    }
        }
        return 
    FMRES_IGNORED
    }
    2. ED_Alloc: no free edict
    - Chú chạy cái gì đó mà nó output quá nhiều nên vậy đó. Chả hạng như trong player think mà sài set_model là nó set liên tiếp => Lỗi no free edict
     
    Chỉnh sửa cuối: 4/12/11
  13. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Vậy bác xem dùm em code này... chạy rất ngon nhưng khi cho đấu sniper nó bị vậy.
    Với cả code bác đưa cũng hem chạy..
    PHP:
    #include <amxmodx>
    #include <amxmisc>
    #include <hamsandwich>
    #include <fakemeta>
    #include <engine>
    #include <csx>
    #include <cstrike>
    #include <fun>

    #define PLUGIN    "BDD_GameBag_Main"
    #define AUTHOR    "Bui Duc Duy"
    #define VERSION    "1.0"

    new bool:in_protect[33
    new 
    bool:G_check_wpn_ok[33
    new 
    bdd_cvar_maxkillmaxkill GR_scoreBL_score G_mode bdd_cvar_mode

    new const g_remove_entities[][] = 

        
    "func_bomb_target",    
        
    "info_bomb_target"
        
    "hostage_entity",      
        
    "monster_scientist"
        
    "func_hostage_rescue"
        
    "info_hostage_rescue",
        
    "info_vip_start",      
        
    "func_vip_safetyzone"
        
    "func_escapezone",     
        
    "func_buyzone"
    }

    enum(+=100)
    {
        
    TASK_RESPAWM 2000,
        
    TASK_REMOVE_PROTECT,
        
    TASK_REGISTER_BOT,
    }
    #define ID_RESPAWM (taskid - TASK_RESPAWM)
    #define ID_REMOVE_PROTECT (taskid - TASK_REMOVE_PROTECT)
    #define ID_REGISTER_BOT (taskid - TASK_REGISTER_BOT)

    // register natives

    public plugin_natives()
    {
        
    register_native("bdd_maxkill""_bdd_maxkill"1)
        
    register_native("bdd_gr_score""_gr_score"1)
        
    register_native("bdd_bl_score""_bl_score"1)
    }

    public 
    _bdd_maxkill()
        return 
    maxkill
    public _gr_score()
        return 
    GR_score
    public _bl_score()
        return 
    BL_score

    public plugin_init() 
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
    RegisterHam(Ham_Spawn"player""fm_respawm"1)
        
    RegisterHam(Ham_TakeDamage"player""fw_takedamage")
        
    RegisterHam(Ham_TraceAttack"player""fw_trace")
        
    register_forward(FM_Spawn"fwd_spawn")
        
        
    register_event("DeathMsg""event_DeathMsg""a")
        
    register_event("CurWeapon","event_CurWeapon","be","1=1")
        
        
    register_message(get_user_msgid("SendAudio"), "message_sendaudio")
        
    register_message(get_user_msgid("TextMsg"), "message_textmsg")
        
    register_message(get_user_msgid("Scenario"), "message_scenario")
        
        
    register_concmd("bdd_respawm_admin","respawm_admin")
    }

    public 
    plugin_precache()
    {
        
    bdd_cvar_maxkill register_cvar("bdd_cfzero_maxkill""100")
        
    bdd_cvar_mode register_cvar("bdd_TDM_cvar_wpn""0")
        
        
    G_mode get_pcvar_num(bdd_cvar_mode)
        
    maxkill get_pcvar_num(bdd_cvar_maxkill)
        
        
    server_cmd("sv_noroundend 1")
        
    set_cvar_num("sv_noroundend"1)
    }

    // Event check weapon of uses
    public event_CurWeapon(id)
    {
        
    check_my_weapon(id)
        if (!
    G_check_wpn_ok[id]) 
        {
            
    strip_user_weapons(id)
            
    give_item(id,"weapon_knife")
        }
    }

    // Block all cs defaut
    public fwd_spawn(ent)
    {
        if(!
    pev_valid(ent)) 
            return 
    FMRES_IGNORED
        
        
    static classname[32]
        
    pev(entpev_classnameclassname31)

        static 
    i
        
    for(0sizeof g_remove_entities; ++i)
        {
            if(
    equal(classnameg_remove_entities[i]))
            {
                
    engfunc(EngFunc_RemoveEntityent)
                return 
    FMRES_SUPERCEDE
            
    }
        }
        return 
    FMRES_IGNORED
    }  
    // Block roundend.

    public message_textmsg()
    {
        static 
    textmsg[22]
        
    get_msg_arg_string(2textmsgsizeof textmsg 1);

        if (
    equal(textmsg"#Hostages_Not_Rescued") || equal(textmsg"#Round_Draw") || equal(textmsg"#Terrorists_Win") || equal(textmsg"#CTs_Win") || equal(textmsg"#Target_"8))
            
    set_msg_arg_string(2"")
        return 
    PLUGIN_CONTINUE
    }

    public 
    message_sendaudio()
    {
        static 
    audio[17]
        
    get_msg_arg_string(2audiosizeof audio 1)
        if(
    equal(audio[7], "terwin") || equal(audio[7], "ctwin") || equal(audio[7], "rounddraw"))
            
    set_msg_arg_string(2"")
        return 
    PLUGIN_CONTINUE;
    }
    public 
    message_scenario()
    {
        if (
    get_msg_args() > 1)
        {
            static 
    sprite[8]
            
    get_msg_arg_string(2spritesizeof sprite 1)
            if (
    equal(sprite"hostage"))
                return 
    PLUGIN_HANDLED;
        }
        return 
    PLUGIN_CONTINUE;
    }
    //end

    public client_putinserver(id)
    {
        
    set_task(0.1"register_bot_function"id+TASK_REGISTER_BOT)
    }

    // register for bot
    public register_bot_function(taskid)
    {
        new 
    id ID_REGISTER_BOT
        
    if (is_user_bot(id) && get_cvar_num("bot_quota"))
        {
            
    RegisterHamFromEntity(Ham_Spawnid"fm_respawm"1)
            
    RegisterHamFromEntity(Ham_TakeDamageid"fw_takedamage")
            
    RegisterHamFromEntity(Ham_TraceAttackid"fw_trace")
            
            if (
    is_user_alive(id))
                
    fm_respawm(id)
        }
    }
    // event respawm
    public fm_respawm(id)
    {
        
    in_protect[id] = true
        
    if (!is_user_bot(id)) cs_set_user_money(id,0)
        
    fm_set_rendering(idkRenderFxGlowShell25500kRenderNormal16)
        if (
    task_exists(id+TASK_RESPAWM)) remove_task(id+TASK_RESPAWM)
        
    set_task(3.0,"Remove_protect",id+TASK_REMOVE_PROTECT)
    }
    public 
    Remove_protect(taskid)
    {
        new 
    id ID_REMOVE_PROTECT
        in_protect
    [id] = false
        fm_set_rendering
    (idkRenderFxGlowShell000kRenderNormal16)
        if (
    task_exists(id+TASK_REMOVE_PROTECT)) remove_task(id+TASK_REMOVE_PROTECT)
    }
    // check damge
    public fw_takedamage(victiminflictorattackerFloat:damage)
    {
        if (
    in_protect[victim]) return HAM_SUPERCEDE
        
    return HAM_IGNORED
    }
    public 
    fw_trace(victimidattackerFloat:damageFloat:direction[3], traceresultdamagebits)
    {
        if (
    in_protect[victim]) return HAM_SUPERCEDE
        
    return HAM_IGNORED
    }
    // check player
    public event_DeathMsg()
    {
        for (new 
    id id <33 id++)
        {
            if (!
    is_user_alive(id) && is_user_bot(id)) set_task(7.0,"respawm_player",id+TASK_RESPAWM)
            if (!
    is_user_alive(id) && !is_user_bot(id)) client_cmd(id,"bdd_respawm_admin")    
        }
        new 
    attacker read_data(1)
        if (
    cs_get_user_team(attacker) == CS_TEAM_TBL_score++ 
        else 
    GR_score++
    }

    //respawm
    public respawm_player(taskid)
    {
        new 
    id ID_RESPAWM
        ExecuteHamB
    (Ham_CS_RoundRespawnid)
    }

    // Stock

        
    stock fm_set_rendering(indexfx=kRenderFxNoner=255g=255b=255render=kRenderNormalamount=16)
    {
        
    set_pev(indexpev_renderfxfx)
        new 
    Float:RenderColor[3]
        
    RenderColor[0] = float(r)
        
    RenderColor[1] = float(g)
        
    RenderColor[2] = float(b)
        
    set_pev(indexpev_rendercolorRenderColor)
        
    set_pev(indexpev_rendermoderender)
        
    set_pev(indexpev_renderamtfloat(amount))

        return 
    1
    }
    stock show_bartime(idtotal_time)
    {
        
    emessage_begin(MSG_ONE,108,{0,0,0},id)
        
    ewrite_short(total_time)
        
    emessage_end()
        return
    }

    //Func 
    public respawm_admin(id)
    {
        
    set_task(7.0,"respawm_player",id+TASK_RESPAWM)
        
    show_bartime(id7)
    }

    check_my_weapon(id)
    {
        new 
    wpnclipammo
        wpn 
    get_user_weapon(id,clip,ammo)
        
        if (
    G_mode == 0)
        {
            
    G_check_wpn_ok[id] = true
        
    }
        if (
    G_mode == 1)
        {
            if (
    wpn != CSW_AWP && wpn != CSW_SCOUT && wpn != CSW_SG550 && wpn != CSW_G3SG1 && wpn != CSW_KNIFEG_check_wpn_ok[id] = false
            
    else G_check_wpn_ok[id] = true
        
    }
        if (
    G_mode == 2)
        {
            if (
    wpn != CSW_P228 && wpn != CSW_DEAGLE && wpn != CSW_ELITE && wpn != CSW_USP && wpn != CSW_KNIFE && wpn != CSW_GLOCK18 && wpn != CSW_FIVESEVENG_check_wpn_ok[id] = false
            
    else G_check_wpn_ok[id] = true
        
    }
        if (
    G_mode == 3)
        {
            if (
    wpn != CSW_KNIFE)  G_check_wpn_ok[id] = false
            
    else G_check_wpn_ok[id] = true
        
    }    
    }
     
    Chỉnh sửa cuối: 4/12/11
  14. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    PHP:
    public plugin_precache()
    {
        
    bdd_cvar_maxkill register_cvar("bdd_cfzero_maxkill""100")
        
    bdd_cvar_mode register_cvar("bdd_TDM_cvar_wpn""0")
        
        
    G_mode get_pcvar_num(bdd_cvar_mode)
        
    maxkill get_pcvar_num(bdd_cvar_maxkill)
        
        
    server_cmd("sv_noroundend 1")
        
    set_cvar_num("sv_noroundend"1)
    }
    - cái command register_forward của tôi đâu ?, tôi để ở đâu thì để yên đó đi... Cứ thích edit rồi lại bảo ko chạy
     
  15. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Quên ... Em quên ko register :)
    Mà cái lỗi no free.... bác xem dùm em sao nó bị vậy với!
     
  16. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Đơn giản thôi là chú tìm hiểu xem plugin nào làm lỗi rồi fix. cái lỗi đó là do output quá nhiều nên crash...
     
  17. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Cái lỗi đó là do plugins đấu đội bên trên ế :)
     
  18. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Bác cho em xin cái code ko cho nhặt súng với. Hum nay test thử zombie lúc nó nhặt được súng nó bắn chiến binh tóe cả máu :))

    Với cả bác xem dùm em code này với. Vô game toàn bị lỗi ED_Alloc: no free edict

    PHP:
    public event_CurWeapon(id)
    {
        
    wpn get_user_weapon(id,clip,ammo)
        if (
    G_mode == 1
        {
            if (
    wpn != CSW_AWP && wpn != CSW_SCOUT && wpn != CSW_SG550 && wpn != CSW_G3SG1 && wpn != CSW_KNIFE)
            {
                
    strip_user_weapons(id)
                
    give_item(id,"weapon_knife")
            }
        }
        if (
    G_mode == 2
        {
            if (
    wpn != CSW_P228 && wpn != CSW_DEAGLE && wpn != CSW_ELITE && wpn != CSW_USP && wpn != CSW_KNIFE && wpn != CSW_GLOCK18 && wpn != CSW_FIVESEVEN)
            {
                
    strip_user_weapons(id)
                
    give_item(id,"weapon_knife")
            }
        }
        if (
    G_mode == 3
        {
            if (
    wpn != CSW_KNIFE)
            {
                
    strip_user_weapons(id)
                
    give_item(id,"weapon_knife")
            }
        }
    }

    public 
    TDM_all(id)
    {
        
    G_mode 0
    }
    public 
    TDM_sniper(id)
    {
        
    G_mode 1
    }
    public 
    TDM_pistols(id)
    {
        
    G_mode 2
    }
    public 
    TDM_knife(id)
    {
        
    G_mode 3
    }
     
  19. 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
    ^ Register FM_Touch.
     
  20. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Thank you :x !!!!
    À cho hỏi hàm equal có tác dụng gì vậy?
    pev(iEnt, pev_classname, s_szClassName, 31); nữa :)
     

Chia sẻ trang này