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

    MrKaii The Warrior of Light

    Tham gia ngày:
    14/6/11
    Bài viết:
    2,208
    Nơi ở:
    Hà Nội
    Ơ thế tui nói sai à :( xấu hổ quá dốt cứ phát biểu bừa X_X biết thế khỏi giải thích cho đỡ ê mặt
    Thui lần sau chắc tui chả dám reply ai nữa ngại quá :(
     
  2. legiondark

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    @Ryokin : K phải, ý mình là đưa spr giống như hud máu, ap, nst_effect_killer ý
     
  3. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @legiondark:
    - Cái đó thì liên quan đến hud.txt rồi
     
  4. Atick hem

    Atick hem The Warrior of Light

    Tham gia ngày:
    8/12/08
    Bài viết:
    2,015
    Nơi ở:
    Buôn Ma Thuật
    Thôi nói tui cái đoạn X>1 and x or "" đi
     
  5. MrKaii

    MrKaii The Warrior of Light

    Tham gia ngày:
    14/6/11
    Bài viết:
    2,208
    Nơi ở:
    Hà Nội
    Tui ko dám đoán bừa nhưng đây có vẻ như là boolean thì phải => nói đến đây chắc ông bít rùi chứ gì, ko thì ông show code lên đi (đầy đủ) chỗ nào biết tui chỉ cho
     
  6. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Ai Có khả năng sửa hộ mình cái plugin này... Nản lắm rồi... Ban đầu ngon lắm, sửa vài cái thế là hỏng luôn giờ ko biết sửa chỗ nào :))
    -> Khi Assassin xuất hiện thì team ko được transfer -> Fix: sửa cho khi Assassin xuất hiện tất cả qua CT còn lại Ass là TE (đã làm rồi nhưng ko chạy)
    -> Thay cách set team, set sao cho model không bị thay đổi, ví dụ: player A đang là team TE và mang model TE, nhưng khi assassin xuất hiện thì player change qua team CT nhưng vẫn giữ model TE, vì nếu sv mà cứ toàn CT thì chán lắm.
    -> Sửa lại cái remove bombsite, hostage vì cái này không hoạt động

    - Đây là code:
    PHP:
    /* =========================================
    Name: Assasin Mod
    Type: GamePlay
    Version: 1.0
    Author: Dias
    -------------------------
    Credits:
    - Dias: Main Coder
    - mercylezz: get random player code, set model, some stuff,...
    - Redplane: some stuff
    -------------------------
    ========================================= */
    #include <amxmodx>
    #include <fakemeta>
    #include <engine>
    #include <hamsandwich>
    #include <cstrike>
    #include <fun>
    #include <xs>

    #define PLUGIN "Assassin Mod"
    #define VERSION "1.0"
    #define AUTHOR "Dias"

    // Defines
    #define MODELSET_TASK 11111
    #define MODELCHANGE_DELAY 0.5
    #define TASK_COUNTDOWN 22222
    #define TASK_ASSASSIN_APP 33333
    #define TASK_TEAM 44444
    #define TASK_AURA 55555

    #define TASK_SHOWHUD 66666

    // Vars
    new const assassin_coming[][] = {
        
    "assassin/assassin_coming_1.wav"
        
    "assassin/assassin_coming_2.wav"
        
    "assassin/assassin_coming_3.wav"
    }
    new const 
    assassin_win_sound[][] = {
        
    "assassin/assassin_win1.wav",
        
    "assassin/assassin_win2.wav",
        
    "assassin/assassin_win3.wav"
    }
    new const 
    human_win_sound[][] = {
        
    "assassin/human_win1.wav",
        
    "assassin/human_win2.wav",
        
    "assassin/human_win3.wav"
    }
    new const 
    countdown_sound[10][] =
    {
        
    "assassin/one.wav"
        
    "assassin/two.wav"
        
    "assassin/three.wav"
        
    "assassin/four.wav",
        
    "assassin/five.wav"
        
    "assassin/six.wav"
        
    "assassin/seven.wav"
        
    "assassin/eight.wav"
        
    "assassin/nine.wav"
        
    "assassin/ten.wav" 
    }
    new const 
    entity_remove[][] = 
    {
        
    "func_bomb_target",
        
    "info_bomb_target",
        
    "info_vip_start",
        
    "func_vip_safetyzone",
        
    "func_escapezone",
        
    "hostage_entity",
        
    "monster_scientist",
        
    "func_hostage_rescue",
        
    "info_hostage_rescue",
        
    "env_fog",
        
    "env_rain",
        
    "env_snow",
        
    "item_longjump",
        
    "func_vehicle"
    }

    new 
    countdown
    new time_s

    const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
    const 
    SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
    new const 
    WEAPONENTNAMES[][] = { """weapon_p228""""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4""weapon_mac10",
        
    "weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550",
        
    "weapon_galil""weapon_famas""weapon_usp""weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249",
        
    "weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle""weapon_sg552",
    "weapon_ak47""weapon_knife""weapon_p90" }

    new 
    bool:no_take_damage[33]
    new 
    bool:g_assassin[33]
    new 
    bool:is_assassin_model[33]
    new 
    bool:lock_model[33]
    new const 
    old_model[64]

    new Array:
    g_class_name
    new Array:g_class_info
    new Array:g_class_model
    new Array:g_class_clawmodel
    new Array:g_class_health
    new Array:g_class_speed
    new Array:g_class_gravity

    new g_class[33]
    new 
    g_classnext[33]
    new 
    g_class_i

    new g_sync_hud

    #define OFFSET_AMMO_338MAGNUM 377
    #define OFFSET_AMMO_762NATO 378
    #define OFFSET_AMMO_556NATOBOX 379
    #define OFFSET_AMMO_556NATO 380
    #define OFFSET_AMMO_BUCKSHOT 381
    #define OFFSET_AMMO_45ACP 382
    #define OFFSET_AMMO_57MM 383
    #define OFFSET_AMMO_50AE 384
    #define OFFSET_AMMO_357SIG 385
    #define OFFSET_AMMO_9MM 386

    public plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
        
        
    // No zombie classes?
        
    if (!g_class_iset_fail_state("[Assassin Mod] No Class Loaded !!!")
        
        
    register_event("HLTV""event_round_start""a""1=0""2=0" )
        
    register_event("CurWeapon""fw_check_model""be""1=1")
        
    register_event("SendAudio""assassin_win""a""2&%!MRAD_terwin")
        
    register_event("SendAudio""human_win""a""2&%!MRAD_ctwin")  
        
    register_event("SendAudio""no_one_won""a""2&%!MRAD_rounddraw")  
        
        
    register_logevent("event_round_end"2"1=Round_End")
        
    register_event("TextMsg","event_round_end","a","2=#Game_Commencing","2=#Game_will_restart_in")
        
    register_event("DeathMsg""event_death""a")
        
        
    register_message(get_user_msgid("Health"), "hook_health")
        
    register_message(get_user_msgid("TextMsg"), "hook_textmsg")
        
        
    RegisterHam(Ham_Touch"weaponbox""fw_TouchWeapon")
        
    RegisterHam(Ham_Touch"armoury_entity""fw_TouchWeapon")
        
    RegisterHam(Ham_Touch"weapon_shield""fw_TouchWeapon")
        
    RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")

        
    register_forward(FM_SetClientKeyValue"set_client_key_value")
        
        for (new 
    1sizeof WEAPONENTNAMESi++)
            if (
    WEAPONENTNAMES[i][0])
        {
            
    RegisterHam(Ham_Item_DeployWEAPONENTNAMES[i], "fw_Item_Deploy_Post"1)
        }

        
    setting_config()
        
        
    g_sync_hud CreateHudSyncObj()
    }

    public 
    plugin_precache()
    {
        
    register_forward(FM_Spawn"fw_spawn")
        
        
    g_class_name ArrayCreate(321)
        
    g_class_info ArrayCreate(321)
        
    g_class_model ArrayCreate(321)
        
    g_class_clawmodel ArrayCreate(321)
        
    g_class_health ArrayCreate(11)
        
    g_class_speed ArrayCreate(11)
        
    g_class_gravity ArrayCreate(11)
        
        new 
    ibuffer[100]
        
        for (
    0ArraySize(g_class_model); i++)
        {
            
    ArrayGetString(g_class_modelibuffercharsmax(buffer))
            
    format(buffercharsmax(buffer), "models/player/%s/%s.mdl"bufferbuffer)
            
    engfunc(EngFunc_PrecacheModelbuffer)
        }
        for (
    0ArraySize(g_class_clawmodel); i++)
        {
            
    ArrayGetString(g_class_clawmodelibuffercharsmax(buffer))
            
    engfunc(EngFunc_PrecacheModelbuffer)
        }    
        for(
    0sizeof(assassin_coming); i++)
        {
            
    precache_sound(assassin_coming[i])
        }
        for(
    0sizeof(assassin_win_sound); i++)
        {
            
    precache_sound(assassin_win_sound[i])
        }
        for(
    0sizeof(human_win_sound); i++)
        {
            
    precache_sound(human_win_sound[i])
        }    
        for(
    0sizeof(countdown_sound); i++)
        {
            
    precache_sound(countdown_sound[i])
        }
    }

    public 
    plugin_natives()
    {
        
    register_native("asm_get_user_assassin""_get_assassin"1)
        
    register_native("asm_register_assassin_class""_class_register"1)
    }

    /* ====================================
    ------------- MAIN FORWARD ------------
    ======================================*/
    public fw_spawn(ent)
    {
        new 
    classname[32]
        
    pev(entpev_classnameclassnamesizeof(classname))
        
        for(new 
    0sizeof(entity_remove); i++)
        {
            if(
    equal(classnameentity_remove[i]))
            return 
    PLUGIN_HANDLED
        
    }
        
        return 
    PLUGIN_CONTINUE
    }

    public 
    set_client_key_value(id)
    {
        if(
    lock_model[id])
            return 
    FMRES_SUPERCEDE
            
        
    return FMRES_HANDLED
    }

    public 
    event_round_start(id)
    {
        
    balance_teams()
        
        for(new 
    1<= get_maxplayers(); i++)
        {
            
    no_take_damage[i] = true
            
    if(is_assassin_model[i])
            {
                
    fm_reset_user_model(i)
                
    is_assassin_model[i] = false
            
    }
        }
        
        
    time_s 10
        countdown 
    9
        set_task
    (5.0"assassin_countdown"id+TASK_COUNTDOWN)
    }

    public 
    event_round_end(id)
    {
        if(
    task_exists(TASK_COUNTDOWN)) remove_task(TASK_COUNTDOWN)
        if(
    task_exists(TASK_ASSASSIN_APP)) remove_task(TASK_ASSASSIN_APP)
        if(
    task_exists(TASK_SHOWHUD)) remove_task(id+TASK_SHOWHUD)
        
        
    set_lights("#OFF")
        
        for(new 
    1<= get_maxplayers(); i++)
        {
            
    g_assassin[i] = false
            remove_task
    (id+TASK_AURA)
        }
    }

    public 
    event_death(id)
    {
        if(
    g_assassin[id])
        {
            if(
    task_exists(TASK_SHOWHUD)) remove_task(id+TASK_SHOWHUD)
        }
    }

    public 
    assassin_win()
    {
        
    client_cmd(0,"stopsound")

        
    emit_sound(0CHAN_VOICEassassin_win_sound[random_num(0sizeof(assassin_win_sound))], 1.0ATTN_NORM0PITCH_NORM)
        
        return 
    PLUGIN_CONTINUE
    }

    public 
    human_win()
    {
        
    client_cmd(0,"stopsound")
        
        
    emit_sound(0CHAN_VOICEhuman_win_sound[random_num(0sizeof(human_win_sound))], 1.0ATTN_NORM0PITCH_NORM)
        
        return 
    PLUGIN_CONTINUE
    }

    public 
    no_one_won()
    {
        static 
    rand
        rand 
    random_num(0,2)
        
        
    client_cmd(0,"stopsound")
        
        switch(
    rand)
        {
            case 
    0client_cmd(0,"spk assassin/human_win1")
            case 
    1client_cmd(0,"spk assassin/human_win2")
            case 
    2client_cmd(0,"spk assassin/human_win3")
        }
        
        return 
    PLUGIN_CONTINUE
    }

    public 
    hook_textmsg()
    {
        new 
    szMsg[22]
        
        
    get_msg_arg_string(2szMsgsizeof szMsg)
        
        if(
    equal(szMsg"#Terrorists_Win"))
            
    set_msg_arg_string(2"Assassin Win")
        else if(
    equal(szMsg"#CTs_Win"))
            
    set_msg_arg_string("Human Win")
        else if(
    equal(szMsg"#Round_Draw"))
            
    set_msg_arg_string("Human Win")
    }  

    public 
    fw_Item_Deploy_Post(weapon_ent)
    {
        static 
    id
        id 
    pev(weapon_entpev_owner)
        
        if(
    is_user_alive(id) && g_assassin[id])
        {
            new 
    class_clawmodel[32]
            
    ArrayGetString(g_class_clawmodelg_class[id], class_clawmodelsizeof(class_clawmodel))
            
            
    engclient_cmd(id"weapon_knife")
            
    set_pev(idpev_viewmodel2class_clawmodel)
        }
    }

    public 
    fw_TouchWeapon(weaponid)
    {
        if (
    is_user_alive(id) && g_assassin[id])
            return 
    HAM_SUPERCEDE;
        
        return 
    HAM_IGNORED;
    }

    public 
    fw_check_model(id)
    {
        if(!
    is_user_alive(id))
            return 
    PLUGIN_CONTINUE
            
        
    if(g_assassin[id])
        {
            static 
    class_clawmodel[32]
            
    ArrayGetString(g_class_clawmodelg_class[id], class_clawmodelsizeof(class_clawmodel))        
            
            if(
    get_user_weapon(id) == CSW_KNIFE)
            
    set_pev(idpev_viewmodel2class_clawmodel)
        }
        
        static 
    weapon
        
    static ammo
        
        weapon 
    read_data(2)
        
    ammo fm_get_user_bpammo(idweapon)
                
        if(
    ammo 1
        
    fm_set_user_bpammo(idweapon254)
        
        return 
    PLUGIN_CONTINUE
    }

    public 
    fw_TakeDamage(victiminflictorattackerFloat:damagedamagebits)
    {
        if(
    g_assassin[attacker] && get_user_weapon(attacker) == CSW_KNIFE)
        {
            
    SetHamParamFloat(4damage 1000.0)
        }
        
        if(
    no_take_damage[victim])
        {
            return 
    HAM_SUPERCEDE
        
    }
        
        return 
    HAM_IGNORED
    }

    /* ====================================
    ------------- MAIN PUBLIC -------------
    ======================================*/

    public setting_config()
    {
        
    server_cmd("mp_flashlight 1")
        
    server_cmd("mp_autoteambalance 0")
        
    server_cmd("mp_limitteams 0")
    }

    public 
    assassin_countdown()

        
    emit_sound(0CHAN_VOICEcountdown_sound[countdown], 1.0ATTN_NORM0PITCH_NORM)
        
    client_print(0print_center"Sat Thu se xuat hien sau: %i"time_s)
        
        
    countdown--
        --
    time_s
        
        
    if(time_s >= 1)
        {
            
    set_task(1.0"assassin_countdown"TASK_COUNTDOWN)
        } else {
            
    set_task(3.0"assassin_appear"TASK_ASSASSIN_APP)
        }
    }

    public 
    assassin_appear()
    {
        for(new 
    1<= get_maxplayers(); i++)
        {
            
    no_take_damage[i] = false
        
    }

        
    set_hudmessage(02550, -1.00.2215.010.0)
        
    show_hudmessage(0"Sat Thu Da Xuat Hien !!!")
        
        
    emit_sound(0CHAN_VOICEassassin_coming[random_num(02)], 1.0ATTN_NORM0PITCH_NORM)

        
    set_lights("c")
        
        static 
    player_num
        player_num 
    fnGetAlive()

        new 
    id fnGetRandomAlive(random_num(1player_num))
        
    set_assassin(id)

        for(new 
    0get_maxplayers(); i++)
        {
            if(!
    g_assassin[i])
                
    cs_set_user_team(iCS_TEAM_CT)
        }
    }

    public 
    set_assassin(id)
    {
        
    g_assassin[id] = true
        is_assassin_model
    [id] = true
        
        drop_all_weapon
    (id)
        
    infection_effects(id)
        
        
    g_class[id] = g_classnext[id]
        if(
    g_class[id] == -1g_class[id] = 0
        
        
    static class_name[32]
        static 
    class_info[32]
        static 
    class_model[32]
        static 
    class_clawmodel[32]
        static 
    class_health
        
    static Float:class_speed
        
    static Float:class_gravity
        
        ArrayGetString
    (g_class_nameg_class[id], class_namesizeof(class_name))
        
    ArrayGetString(g_class_infog_class[id], class_infosizeof(class_info))
        
    ArrayGetString(g_class_modelg_class[id], class_modelsizeof(class_model))
        
    ArrayGetString(g_class_clawmodelg_class[id], class_clawmodelsizeof(class_clawmodel))
        
    class_health ArrayGetCell(g_class_healthg_class[id])
        
    class_speed ArrayGetCell(g_class_speedg_class[id])
        
    class_gravity ArrayGetCell(g_class_gravityg_class[id])

        
    cs_set_user_team(idCS_TEAM_T)
        
        
    fm_set_user_model(idclass_model)
        
    set_pev(idpev_viewmodel2class_clawmodel)
        
    set_user_health(idclass_health)
        
    set_pev(idpev_maxspeedclass_speed)
        
    set_pev(idpev_gravityclass_gravity)
        
        
    select_class(id)
        
        
    set_task(0.2"set_aura"id+TASK_AURA__"b")
        
    set_task(1.0"ShowHUD"id+TASK_SHOWHUD__"b")
    }

    public 
    set_aura(taskid)
    {
        new 
    id taskid TASK_AURA
        
        
    if(is_user_alive(id) && g_assassin[id])
        {
            static 
    Float:originF[3]
            
    pev(idpev_originoriginF)
            
            
    engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYoriginF0)
            
    write_byte(TE_DLIGHT)
            
    engfunc(EngFunc_WriteCoordoriginF[0]) // x
            
    engfunc(EngFunc_WriteCoordoriginF[1]) // y
            
    engfunc(EngFunc_WriteCoordoriginF[2]) // z
            
    write_byte(20// radius
            
    write_byte(255// red
            
    write_byte(10// green
            
    write_byte(10// blue
            
    write_byte(2// life
            
    write_byte(0// decay rate
            
    message_end()
        } else {
            
    remove_task(id+TASK_AURA)
        }
    }

    public 
    hook_health(msgiddestid)
    {
        if(
    is_user_alive(id) && g_assassin[id])
        {
            new 
    health pev(idpev_health)
            new 
    Float:class_health 30000.0
            
    new new_health floatround((health class_health) * 100.0)
            new 
    real_health clamp(new_health1100)

            
    set_msg_arg_int(1ARG_BYTEreal_health)
        }
    }

    infection_effects(id)
    {
        
    message_begin(MSG_ONE_UNRELIABLEget_user_msgid("Damage"), _id)
        
    write_byte(0// damage save
        
    write_byte(0// damage take
        
    write_long(DMG_NERVEGAS// damage type - DMG_RADIATION
        
    write_coord(0// x
        
    write_coord(0// y
        
    write_coord(0// z
        
    message_end()
        
        
    // Get player's origin
        
    static origin[3]
        
    get_user_origin(idorigin)
        
        
    // Tracers?
        
    message_begin(MSG_PVSSVC_TEMPENTITYorigin)
        
    write_byte(TE_IMPLOSION// TE id
        
    write_coord(origin[0]) // x
        
    write_coord(origin[1]) // y
        
    write_coord(origin[2]) // z
        
    write_byte(128// radius
        
    write_byte(20// count
        
    write_byte(3// duration
        
    message_end()
        
        
    // Particle burst?
        
        
    message_begin(MSG_PVSSVC_TEMPENTITYorigin)
        
    write_byte(TE_PARTICLEBURST// TE id
        
    write_coord(origin[0]) // x
        
    write_coord(origin[1]) // y
        
    write_coord(origin[2]) // z
        
    write_short(50// radius
        
    write_byte(70// color
        
    write_byte(3// duration (will be randomized a bit)
        
    message_end()

        
    // Light sparkle?
        
    message_begin(MSG_PVSSVC_TEMPENTITYorigin)
        
    write_byte(TE_DLIGHT// TE id
        
    write_coord(origin[0]) // x
        
    write_coord(origin[1]) // y
        
    write_coord(origin[2]) // z
        
    write_byte(20// radius
        
    write_byte(100// r
        
    write_byte(100// g
        
    write_byte(100// b
        
    write_byte(2// life
        
    write_byte(0// decay rate
        
    message_end()
    }

    public 
    select_class(id)
    {
        new 
    menu menu_create("Select Assassin Class:""select_handle")
        
        for(new 
    0g_class_ii++)
        {
            new 
    cname[32], str[32]
            
            
    ArrayGetString(g_class_nameicnamesizeof(cname))
            
    num_to_str(istrcharsmax(str))
            
    menu_additem(menucnamestr)
        }
        
        
    menu_display(idmenu0)
    }

    public 
    select_handle(idmenuitem)
    {
        if( 
    item == MENU_EXIT )
        {
            
    menu_destroy(menu)
            
            return 
    PLUGIN_HANDLED
        
    }
        
        new 
    data[2], szName[64]
        new 
    accesscallback
        
        menu_item_getinfo
    (menuitemaccessdata,charsmax(data), szName,charsmax(szName), callback)
        
        
    g_classnext[id] = str_to_num(data)
        
    g_class[id] = g_classnext[id]

        static 
    class_model[32]
        static 
    class_clawmodel[32]
        static 
    Float:class_speed
        
    static Float:class_gravity
        
        ArrayGetString
    (g_class_modelg_class[id], class_modelsizeof(class_model))
        
    ArrayGetString(g_class_clawmodelg_class[id], class_clawmodelsizeof(class_clawmodel))
        
    class_speed ArrayGetCell(g_class_speedg_class[id])
        
    class_gravity ArrayGetCell(g_class_gravityg_class[id])

        
    fm_set_user_model(idclass_model)
        
    set_pev(idpev_viewmodel2class_clawmodel)
        
    set_pev(idpev_maxspeedclass_speed)
        
    set_pev(idpev_gravityclass_gravity)
        
        
    infection_effects(id)
        
        
    menu_destroy(menu)
        return 
    PLUGIN_HANDLED
    }

    public 
    ShowHUD(taskid)
    {
        new 
    id taskid TASK_SHOWHUD
        
        
    if(g_assassin[id])
        {
            static 
    class_name[32]
            static 
    class_health
        
            ArrayGetString
    (g_class_nameg_class[id], class_namesizeof(class_name))
            
    class_health ArrayGetCell(g_class_healthg_class[id])

            
    set_hudmessage(025500.020.906.01.10.00.0, -1)
            
    ShowSyncHudMsg(idg_sync_hud"Health: %i/%i - Assassin Class: %s"get_user_health(id), class_healthclass_name)
        } else {
            
    remove_task(id+TASK_SHOWHUD)
        }
    }

    /* ====================================
    ------------- MAIN STOCK -------------
    ======================================*/

    public drop_all_weapon(id)
    {
        
    drop_weapons(id1)
        
    drop_weapons(id2)
        
        
    strip_user_weapons(id)
        
    give_item(id"weapon_knife")
        
        if(
    g_assassin[id])
        {
            static 
    class_clawmodel[32]
            
    ArrayGetString(g_class_clawmodelg_class[id], class_clawmodelsizeof(class_clawmodel))
            
            
    set_pev(idpev_viewmodel2class_clawmodel)
        }
    }

    stock drop_weapons(iddropwhat)
    {
        
    // Get user weapons
        
    static weapons[32], numiweaponid
        
        num 
    // reset passed weapons count (bugfix)
        
    get_user_weapons(idweaponsnum)

        
    // Loop through them and drop primaries or secondaries
        
    for (0numi++)
        {
            
    // Prevent re-indexing the array
            
    weaponid weapons[i]
        
            if ((
    dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
            {
                static 
    wname[32], weapon_ent
                get_weaponname
    (weaponidwnamecharsmax(wname))
                
    weapon_ent find_ent_by_owner(-1wnameid)
                
                
    set_pev(weapon_entpev_iuser1cs_get_user_bpammo(idweaponid))
                
                
    engclient_cmd(id"drop"wname)
                
    cs_set_user_bpammo(idweaponid0)
            }    
        }
    }

    // Transfer Player Team
    balance_teams()
    {
        static 
    iPlayersnum
        iPlayersnum 
    get_playersnum()

        if (
    iPlayersnum 1) return;

        static 
    iTerrorsiMaxTerrorsid
        iMaxTerrors 
    iPlayersnum/2
        iTerrors 
    0

        
    for (id 1id <= get_maxplayers(); id++)
        {
            if (!
    is_user_connected(id))
                continue;
            
            if (
    cs_get_user_team(id) == CS_TEAM_SPECTATOR || cs_get_user_team(id) == CS_TEAM_UNASSIGNED)
                continue;
            
            
    remove_task(id+TASK_TEAM)
            
    cs_set_user_team(idCS_TEAM_CT)
        }
        
        while (
    iTerrors iMaxTerrors)
        {
            if (++
    id get_maxplayers()) id 1
            
            
    if (!is_user_connected(id))
                continue;
            
            if (
    cs_get_user_team(id) != CS_TEAM_CT)
                continue;
            
            if (
    random_num(01))
            {
                
    cs_set_user_team(idCS_TEAM_T)
                
    iTerrors++
            }
        }
    }

    fnGetAlive()
    {
        static 
    iAliveid
        iAlive 
    0
        
        
    for (id 1id <= get_maxplayers(); id++)
        {
            if (
    is_user_alive(id))
                
    iAlive++
        }
        
        return 
    iAlive;
    }

    fnGetRandomAlive(n)
    {
        static 
    iAliveid
        iAlive 
    0
        
        
    for (id 1id <= get_maxplayers(); id++)
        {
            if (
    is_user_alive(id))
                
    iAlive++
            
            if (
    iAlive == n)
                return 
    id;
        }
        
        return -
    1;
    }
    stock fm_get_user_bpammo(indexweapon)
    {
        static 
    offset
        
    switch(weapon)
        {
            case 
    CSW_AWPoffset OFFSET_AMMO_338MAGNUM
            
    case CSW_SCOUTCSW_AK47CSW_G3SG1offset OFFSET_AMMO_762NATO
            
    case CSW_M249offset OFFSET_AMMO_556NATOBOX
            
    case CSW_FAMASCSW_M4A1CSW_AUG
            
    CSW_SG550CSW_GALICSW_SG552offset OFFSET_AMMO_556NATO
            
    case CSW_M3CSW_XM1014offset OFFSET_AMMO_BUCKSHOT
            
    case CSW_USPCSW_UMP45CSW_MAC10offset OFFSET_AMMO_45ACP
            
    case CSW_FIVESEVENCSW_P90offset OFFSET_AMMO_57MM
            
    case CSW_DEAGLEoffset OFFSET_AMMO_50AE
            
    case CSW_P228offset OFFSET_AMMO_357SIG
            
    case CSW_GLOCK18CSW_TMPCSW_ELITE
            
    CSW_MP5NAVYoffset OFFSET_AMMO_9MM
            
    default: offset 0
        
    }
        return 
    offset get_pdata_int(indexoffset) : 0
    }

    stock fm_set_user_bpammo(indexweaponamount)
    {
        static 
    offset
        
    switch(weapon)
        {
            case 
    CSW_AWPoffset OFFSET_AMMO_338MAGNUM
            
    case CSW_SCOUTCSW_AK47CSW_G3SG1offset OFFSET_AMMO_762NATO
            
    case CSW_M249offset OFFSET_AMMO_556NATOBOX
            
    case CSW_FAMASCSW_M4A1CSW_AUG
            
    CSW_SG550CSW_GALICSW_SG552offset OFFSET_AMMO_556NATO
            
    case CSW_M3CSW_XM1014offset OFFSET_AMMO_BUCKSHOT
            
    case CSW_USPCSW_UMP45CSW_MAC10offset OFFSET_AMMO_45ACP
            
    case CSW_FIVESEVENCSW_P90offset OFFSET_AMMO_57MM
            
    case CSW_DEAGLEoffset OFFSET_AMMO_50AE
            
    case CSW_P228offset OFFSET_AMMO_357SIG
            
    case CSW_GLOCK18CSW_TMPCSW_ELITE
            
    CSW_MP5NAVYoffset OFFSET_AMMO_9MM
            
    default: offset 0
        
    }
        
        if(
    offset
            
    set_pdata_int(indexoffsetamount)
        
        return 
    1
    }

    stock fm_set_user_model(id, const model[])
    {
        
    lock_model[id] = false
        engfunc
    (EngFunc_GetInfoKeyBuffer"model"old_model)
        
    engfunc(EngFunc_SetClientKeyValueidengfunc(EngFunc_GetInfoKeyBufferid), "model"model);
        
    lock_model[id] = true
    }

    stock fm_get_user_modelplayermodel[], len )
    {
        
    engfunc(EngFunc_InfoKeyValueengfunc(EngFunc_GetInfoKeyBufferplayer ), "model"modellen)
    }


    stock fm_reset_user_model(id)
    {
        
    lock_model[id] = false
        dllfunc
    (DLLFunc_ClientUserInfoChangedidengfunc(EngFunc_GetInfoKeyBufferid))
        
    lock_model[id] = true
    }

    /* ====================================
    ------------- MAIN NATIVE -------------
    ======================================*/
    public _get_assassin(id)
    {
        return 
    g_assassin[id]
    }

    public 
    _class_register(const classname[], const classinfo[], const classmodel[], const classclawmodel[], healthFloat:speedFloat:gravity)
    {
        
    param_convert(1)
        
    param_convert(2)
        
    param_convert(3)
        
    param_convert(4)
        
        
    ArrayPushString(g_class_nameclassname)
        
    ArrayPushString(g_class_infoclassinfo)
        
    ArrayPushString(g_class_modelclassmodel)
        
    ArrayPushString(g_class_clawmodelclassclawmodel)    
        
        
    ArrayPushCell(g_class_healthhealth)
        
    ArrayPushCell(g_class_speedspeed)
        
    ArrayPushCell(g_class_gravitygravity)
        
        
    g_class_i++
    }
    - Đây là class:
    PHP:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <assassin_mod>

    #define PLUGIN "[ASM] Class: Normal"
    #define VERSION "1.0"
    #define AUTHOR "Dias"

    new const class_name[] = "Normal Assassin"
    new const class_info[] = "Just a normal class"
    new const class_model[] = "assassin1"
    new const class_clawmodel[] = "models/v_knife_assassin.mdl"
    new const class_health 30000
    new const Float:class_speed 300.0
    new const Float:class_gravity 0.75

    public plugin_init()
    {
        
    register_plugin(PLUGINVERSIONAUTHOR)
    }

    public 
    plugin_precache()
    {
        
    precache_model(class_clawmodel)
        
    asm_register_assassin_class(class_nameclass_infoclass_modelclass_clawmodelclass_healthclass_speedclass_gravity)
    }
    - Ai thích lấy thì lấy, nhưng phải sửa dc trước đã :))
    - Cái này mình làm lâu rồi, nhưng mà hỏng quá @@ nên bỏ, giờ có tâm huyết mới chịu làm tiếp @@
     
    Chỉnh sửa cuối: 31/7/11
  7. legiondark

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    Biết là liên quan r`, nhưng phải làm thế nào để nó hiện đc
    Còn cái assassin complie ngon mà .
     
  8. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Compiel ngon nhưng vào game nó lỗi
     
  9. Atick hem

    Atick hem The Warrior of Light

    Tham gia ngày:
    8/12/08
    Bài viết:
    2,015
    Nơi ở:
    Buôn Ma Thuật
    @Kai: này thì đầy đủ :|
    PHP:
    local Path=_TempFolder;
    if 
    not File.DoesExist(Path.."\\btn_BTN.btn"then
        
    for x=1do
            
    Crypto.Base64DecodeFromString(BTN.Buttons[x], Path.."\\btn_BTN"..((x>1) and or "")..".btn");
        
    end
    end
     
  10. legiondark

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    @Dias : Hướng dẫn cụ thể đi .[​IMG]
    P/s : Dạo này có vẻ anh Tùng trở lại forum rồi, thấy ngày nào cũng lên
     
  11. MrKaii

    MrKaii The Warrior of Light

    Tham gia ngày:
    14/6/11
    Bài viết:
    2,208
    Nơi ở:
    Hà Nội
    CÁi ams này có vẻ hơi khó giải thích
    ((x>1) and x or "")..".btn") nếu làm trong pascal hay c thì đây là đoạn code dùng để kiểm tra true or false
    Tôi hiểu theo cách của tôi nghĩa là:
    VẾ code đấy có nghĩa là kiểm tra đường xuất dẫn file đấy. ĐỂ ý kĩ đoạn dưới ".btn" => export ra vs dạng mở rộng .btn
    Còn ((x>1) and x or "") là phép toán dùng để kiểm tra nếu đúng thì sẽ trả về true sai thì ngược lại
    Lấy 1 vd cho ông hiểu
    (5+2>4) and not (true or(5-3=8)) = false
    => AND vs Or là từ khóa trong lập trình dùng để so sánh thường đi kèm vs các dạng như: vòng lặp, kiểm tra điều kiện, kiểm tra tính đúng sai...
     
  12. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    Anh dias cho em xin yahoo với.... Hỏi trên forum chẳng ai trả lời dùm... :(
     
  13. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    hỏi thì thêm chữ @dias vào để người ta biết ==" tôi cũng chả biết bác hỏi lúc nào nữa
     
  14. legiondark

    legiondark Donkey Kong

    Tham gia ngày:
    2/5/11
    Bài viết:
    357
    Nơi ở:
    Skynet !
    @Dias: Thế cách đưa spr lên màn hình ntn đây ??
     
  15. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Việc đưa spr lên màn hình thì add tên spr vào hud.txt rồi vào amx viết 1 message là StatusIcon
    cái phần string thì điền tên cái spr lúc nãy mình thêm vào hud.txt. Các thêm thì hỏi theanh11a5
     
  16. teobrvt1995

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

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    nhớ tạo 1 var về spr rồi precache nó trước khi đưa var vô cái write_string/write_short nha :D
    như thế này nè
    PHP:
    new my_sprites

    public plugin_precache()
    {
    my_sprites precache_model("models/my_spr.spr")
    }
    public 
    my_func()
    {
    ...
    write_string(my_sprites)
    ...
    }
     
    Chỉnh sửa cuối: 31/7/11
  17. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    @teobrvt1995:
    - Spr hiện lên màn hình thì khỏi precache cũng dc
     
  18. 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
    my_sprtes là kiểu int sao lại dùng write_string thế kia hả giời*facepalm*
     
  19. buiducduy111

    buiducduy111 Dragon Quest

    Tham gia ngày:
    3/5/11
    Bài viết:
    1,257
    phải dùng write_short(my_spirte) đúng ko nhỉ... Ai dạy mình tạo 1 sự kiên new round, mỗi new round thực hiên 1 lênh với...
    Example:
    PHP:
    register_event("new_round","new_round","ab")
    public 
    new_round(id)
    {
    client_cmd(id"nst_wpn")
    return 
    plugin_continue
    }


    ---------- Post added at 18:33 ---------- Previous post was at 18:28 ----------

    Nhưng sự kiên "ván mới" mình ko biết nên ko đc.
    À, ai dạy mình cach đọc\ghi ini đươc ko?
     
  20. huucuong_2107198

    huucuong_2107198 Dragon Quest

    Tham gia ngày:
    29/12/09
    Bài viết:
    1,449
    Xem ra chỉ còn cái topic này là thoát spammer ! Bức xúc quá !
    Có lẽ mình mượn tạm cái thread này show hàng CSCFE nhé ! Các bạn đồng ý ko? Ko muốn lập cái mới và cũng thề ko post bài bên thread kia nữa.
    @buiducduy: thấy có vẻ cũng thành tâm học code đấy. Nhưng anh khuyên 1 câu nè (thật tình): Luyện thì phải đúng cách, nếu ko thành thói quen sai ko sửa được (giống tẩu hỏa nhập ma trong võ thuật lắm đó.) Cứ bắt đầu với + - * : trong c, c+=, Passcal là tốt nhất đó em!
     

Chia sẻ trang này