[AMX][Codes] Hỏi đáp về các code của AMX ...

Thảo luận trong 'Counter Strike' bắt đầu bởi sontung0, 6/8/09.

Trạng thái chủ đề:
Không mở trả lời sau này.
  1. -Wesker-

    -Wesker- Dragon Quest

    Tham gia ngày:
    16/7/10
    Bài viết:
    1,354
    Nơi ở:
    S.V.E.N TEAM
    Tất nhiên phải thêm thắt rồi, có thể nó dùng module liên quan đến round.
     
  2. seedhell

    seedhell Mr & Ms Pac-Man

    Tham gia ngày:
    7/6/10
    Bài viết:
    294
    Nơi ở:
    ▐▐▐▐▐
    Hình như cái đó của CSS thì phải cho vô ko có tác dụng
    Mà tui nhớ rui' : Bác sontung0 đã lock cái Khiên đi còn ji'
     
  3. -Wesker-

    -Wesker- Dragon Quest

    Tham gia ngày:
    16/7/10
    Bài viết:
    1,354
    Nơi ở:
    S.V.E.N TEAM
  4. G.Dragon

    G.Dragon Mr & Ms Pac-Man

    Tham gia ngày:
    17/2/10
    Bài viết:
    122
    Đã được rùi thanks bác :).........................
     
  5. 5c0r-|3i0

    5c0r-|3i0 Donkey Kong

    Tham gia ngày:
    6/8/09
    Bài viết:
    387
    @ Wesker : Chưa đến Tết đã đi nghỉ rồi ông =)) , sao thế =))
    @ G.Dragon: .....Ukm ^^!
     
  6. -Wesker-

    -Wesker- Dragon Quest

    Tham gia ngày:
    16/7/10
    Bài viết:
    1,354
    Nơi ở:
    S.V.E.N TEAM
    War với 1 thành phần nguy hiểm nên đi nghỉ.. Mà ông đã từng thử viết tiếng việt trong file sma chưa? Lên thread ZP kia xem 1 ví dụ kìa.
     
  7. dias

    dias Mega Man

    Tham gia ngày:
    17/1/10
    Bài viết:
    3,226
    Nơi ở:
    SEOUL
    Ai pro cái TakeDamage hướng dẫn nào.
    ---------------------------------------------
    PHP:
    #include <amxmodx>
    #include <hamsandwich>

    public plugin_ini()
    {
       
    register_plugin("Test","1.0","Dias")
       
    RegisterHam(Ham_TakeDamage"player""fw_takedmg")
    }

    public 
    fw_takedmg(attackervictiminflictorFloat:damage)
    {
       
    client_print(attackerprint_chat"Take Damage")
    }
    Tại sao trong game, khi bắn trúng ai đó nó ko hiện chữ TakeDamage nhỉ :-w....
     
  8. Ryokin

    Ryokin Mr & Ms Pac-Man

    Tham gia ngày:
    4/9/10
    Bài viết:
    106
    - ông mới chỉ print msg cho victim
    - viết sai vị trí trog func
    PHP:
    fw_takedmg(victiminflictorattackerFloat:damagedamagetype)
     
  9. sontung0

    sontung0 Dragon Quest

    Tham gia ngày:
    27/5/09
    Bài viết:
    1,333
    đây mới chỉ reg ham takedamage cho player thôi
    còn reg cho CZBOT thì phải như này
    PHP:
    #include <amxmodx>
    #include <hamsandwich

    new g_hamczbotscvar_botquota

    public plugin_init()
    {
        
    register_plugin("Test TakeDamage","1.0","NST ^^")

        
    RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
        
    //RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)

        
    cvar_botquota get_cvar_pointer("bot_quota")
    }

    // reg Ham_TakeDamage cho czbot
    public client_putinserver(id)
    {
        if (
    is_user_bot(id) && !g_hamczbots && cvar_botquota)
        {
            
    set_task(0.1"register_ham_czbots"id)
        }
    }
    public 
    register_ham_czbots(id)
    {
        
    // Make sure it's a CZ bot and it's still connected
        
    if (g_hamczbots || !is_user_connected(id) || !get_pcvar_num(cvar_botquota))
            return;
            
        
    RegisterHamFromEntity(Ham_TakeDamageid"fw_TakeDamage")
        
    //RegisterHamFromEntity(Ham_Spawn, id, "fw_PlayerSpawn_Post", 1)
        
        // Ham forwards for CZ bots succesfully registered
        
    g_hamczbots true
    }

    // fw_TakeDamage
    public fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type)
    {
        
    client_print(0print_chat"[%i] Take Damage [%i]"attackervictim)
    }
    Tương tự với các event khác của HAM cho player như: Ham_Spawn, Ham_TraceAttack ...
     
    Chỉnh sửa cuối: 3/1/11
  10. -Wesker-

    -Wesker- Dragon Quest

    Tham gia ngày:
    16/7/10
    Bài viết:
    1,354
    Nơi ở:
    S.V.E.N TEAM
    Czbot không suppot cho CS nên khi dùng nó với CZ tác dụng sẽ tốt hơn.
     
  11. ĐônKi

    ĐônKi Mr & Ms Pac-Man

    Tham gia ngày:
    14/3/10
    Bài viết:
    294
    ai có plug hiện thời gian nổ bom không nhỉ
     
  12. -Wesker-

    -Wesker- Dragon Quest

    Tham gia ngày:
    16/7/10
    Bài viết:
    1,354
    Nơi ở:
    S.V.E.N TEAM
    Hình như có nhưng ta không nhớ rõ tên gì.. Để rảnh tìm, không chú hỏi 5c0r xem, ông ta biết nhiều phết.
     
  13. 5c0r-|3i0

    5c0r-|3i0 Donkey Kong

    Tham gia ngày:
    6/8/09
    Bài viết:
    387
  14. teobrvt1995

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

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    ai xem hộ tớ plugin svdex với nha, tìm thấy lỗi nào fix dùm tớ nha...version gần cuối đấy...
    PHP:
    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta>
    #include <fun>
    #include <fakemeta_util>
    #include <zombieplague>
    #include <engine>
    #include <hamsandwich>

    new Float:cl_pushangle[33][3]
    new 
    g_svd[33]
    new 
    g_m203_loaded[33]
    new 
    g_ammo[33]
    new 
    g_itemid
    new g_hegren
    /// new MaxPlayers
    new g_MaxPlayers
    //cvar of weapon
    new cvar_trail ,cvar_radius ,cvar_damage cvar_bonus ,cvar_reload ,cvar_remove cvar_zoom cvar_recoil cvar_dmg_multicvar_speedcvar_knockback
    //message :D
    new g_msgDeathMsg
    new g_msgScoreInfo
    new gMsgID
    new g_hasZoom[33]
    // Explode spr
    new m_iTrail;
    // TRail of Grenade
    new xplode;
    new 
    Float:zoom_delay[33]

    //weapon model
    new V_MODEL[64] = "models/v_svdex.mdl"
    new P_MODEL[64] = "models/p_svdex.mdl"
    new W_MODEL[64] = "models/w_svdex.mdl"
    new W_NADE[64] = "models/grenade.mdl"

    //sound for weapon :D thanks Duy Linh
    new const fire_sound[][] = {"weapons/svd-1.wav"}
    new const 
    sound_exp[][] = {"weapons/svdex-exp.wav"}

    #define ICON_HIDE 0
    #define ICON_SHOW 1
    //weapon cost
    const weapon_cost 40
    const m203_cost 2

    const m_fInReload 54

    public plugin_init() {
      
    register_plugin("[ZP] Extra Item : SVDEX","0.1","Teobrvt1995")
      
      
    register_event("DeathMsg","player_die","abd")  
      
    register_event("CurWeapon","checkWeapon","be","1=1")
      
    RegisterHam(Ham_Killed"player""player_die")
      
    RegisterHam(Ham_Spawn"player""player_spawn")
      
    RegisterHam(Ham_TakeDamage"player""fw_TakeDamage")
      
      
    //register m203 nade touch:D
      
    register_touch("m203_nade""*""m203_touch")
      
      
    //register forawrd
      
    register_forward(FM_CmdStart"forward_CmdStart")
      
    register_forward(FM_SetModel"forward_setmodel"
      

    //nax player
      
    g_MaxPlayers get_maxplayers()
      
    //register the cvar
      
    cvar_knockback register_cvar("zp_svd_knock""2")
      
    cvar_speed register_cvar("zp_svd_speed""3.0")
      
    cvar_recoil register_cvar("zp_svd_recoil""0.2")
      
    cvar_dmg_multi register_cvar("zp_svd_dmg_multi""8"
      
    cvar_trail register_cvar("zp_svd_trail","1"
      
    cvar_radius register_cvar("zp_svd_rad","300")  
      
    cvar_damage register_cvar("zp_svd_dmg","2000"
      
    cvar_bonus register_cvar("zp_svd_bonus","2"
      
    cvar_reload register_cvar("zp_svd_reloadtime","3.0"
      
    cvar_remove register_cvar("zp_svd_remove","0"
      
    cvar_zoom register_cvar("zp_svd_zoom""1")
      
      
    // register extra item
      
    g_itemid zp_register_extra_item("SVDEX",weapon_cost,ZP_TEAM_HUMAN)
      
    g_hegren zp_register_extra_item("M203 for SVDEX",m203_costZP_TEAM_HUMAN
      
    //message for weapon
      
    g_msgDeathMsg get_user_msgid("DeathMsg")
      
    g_msgScoreInfo get_user_msgid "ScoreInfo" )
      
    gMsgID get_user_msgid("StatusIcon")

      
    // for recoil and sound weapon :D
      
    RegisterHam(Ham_Weapon_PrimaryAttack"weapon_ak47""fw_primary_attack")
      
    RegisterHam(Ham_Weapon_PrimaryAttack"weapon_ak47""fw_primary_attack_post",1
      
    //when player are reloading...
      
    RegisterHam(Ham_Weapon_Reload"weapon_ak47""fw_weapon_reload")
      
    //enable pick up the weapon
      
    RegisterHam(Ham_Item_AddToPlayer"weapon_ak47""fw_weapon_pickup")
       
    }
    //precache sound and model...
    public plugin_precache()          
    {
      
      
    m_iTrail precache_model("sprites/smoke.spr")
      
    xplode precache_model("sprites/zerogxplode.spr")
      
    precache_sound("weapons/svdex-shoot2.wav")
      for(new 
    0sizeof sound_expi++)
      
    precache_sound(sound_exp[i])
      for(new 
    0sizeof fire_soundi++)
      
    precache_sound(fire_sound[i])
      
    precache_model(V_MODEL)
      
    precache_model(P_MODEL)
      
    precache_model(W_MODEL)
      
    precache_model(W_NADE)
      
    }

    public 
    zp_user_infected_post(id)   /// Forward when user is infected
    {    
       if(
    g_svd[id])
       
    ammo_hud(id,0)
       
    g_svd[id] = false
       g_ammo
    [id] = 0
    }


    public 
    client_connect(id)      
    {
      
    g_svd[id] = 0
      g_m203_loaded
    [id] = 1
      g_ammo
    [id] = 0     
    }

    //death/...
    public player_die(id)        
    {
      if(
    g_svd[id])
      
    ammo_hud(id,0)
      
    g_ammo[id] = 0
      g_svd
    [id] = 0
      
    return PLUGIN_CONTINUE
    }

    //for recoil and sound...
    public fw_primary_attack(ent)
    {
        new 
    id pev(ent,pev_owner)
        
    pev(id,pev_punchangle,cl_pushangle[id])
        return 
    HAM_IGNORED
    }
    public 
    fw_primary_attack_post(ent)
    {
        new 
    id pev(ent,pev_owner)
        new 
    clipammo
        
    new weap get_user_weaponidclipammo )
        if( 
    weap == CSW_AK47 && g_svd[id])
        {
            new 
    Float:push[3]
            
    pev(id,pev_punchangle,push)
            
    xs_vec_sub(push,cl_pushangle[id],push)
            
    xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil),push)
            
    xs_vec_add(push,cl_pushangle[id],push)
            
    set_pev(id,pev_punchangle,push)
            if( 
    clip 0)
            {
            
    ExecuteHamB(Ham_Weapon_PlayEmptySoundent)
            for(new 
    0sizeof fire_soundi++)
            
    emit_sound(idCHAN_AUTOfire_sound[i], 1.0ATTN_NORM0PITCH_NORM)
            }
        }    
                  
        return 
    HAM_IGNORED
    }

    //when player reload ...
    public fw_weapon_reload(ent)
    {
        new 
    id pev(entpev_owner)
        new 
    button pev(idpev_button)
        
        if(
    g_svd[id] && g_hasZoom[id] && button&IN_RELOAD)
        {
            
    g_ammo[id] = 0
            g_hasZoom
    [id] = false
            cs_set_user_zoom
    (idCS_RESET_ZOOM0)
            
        }
        return 
    HAM_IGNORED
    }
    //player pick up the weapon...
    public fw_weapon_pickup(svdid)
    {
        if( 
    is_valid_ent(svd) && is_user_connected(id) && entity_get_int(svdEV_INT_impulse) == 1995)
        {
            
    // Update
            
    g_svd[id] = true
            
            
    // BP ammo
            
    cs_set_user_bpammo(idCSW_AK47pev(svdpev_iuser2))
            
            
    // Reset weapon options
            
    entity_set_int(svdEV_INT_impulse0)
            
            return 
    HAM_HANDLED
        
    }
        
        return 
    HAM_IGNORED
    }    
        
    public 
    player_spawn(id)    // When player is respawn (But it the same when roudn start...So I :P )
    {
                 if ( 
    get_pcvar_num(cvar_remove) == &&  g_svd[id] )
                {
                  
    ammo_hud(id,0)
                  
    g_svd[id] = false
                  g_ammo
    [id] = 0               
                
    }               
    }
    //set P and W model
    public checkModel(id)
    {
        if ( 
    zp_get_user_zombie(id) )
            return 
    PLUGIN_HANDLED
        
        
    new szWeapID read_data(2)
        
        if ( 
    szWeapID == CSW_AK47 && g_svd[id])
        {
            
    set_pev(idpev_viewmodel2V_MODEL)
            
    set_pev(idpev_weaponmodel2P_MODEL)
        }
        return 
    PLUGIN_HANDLED
    }
    public 
    checkWeapon(id)
    {
        new 
    plrClipplrAmmoplrWeapId
        plrWeapId 
    get_user_weapon(idplrClip plrAmmo)
        
        
        if (
    plrWeapId == CSW_AK47 && g_svd[id])
        {
            
    checkModel(id)

            
            new 
    Ent get_weapon_ent(id,plrWeapId)
            new 
    Float:N_Speed
            
    if(Ent
            {
                
    N_Speed get_pcvar_float(cvar_speed)
                new 
    Float:Delay get_pdata_floatEnt464) * N_Speed    
                
    if (Delay 0.0) {
                    
    set_pdata_floatEnt46Delay4)
                }
            }
        }
        else 
        {
            return 
    PLUGIN_CONTINUE
        
    }
        

        
        return 
    PLUGIN_HANDLED
    }

    // Create W class for weapon :D
    public forward_setmodel(Entity, const Model [])
    {
        
    // Entity is not valid
        
    if (!is_valid_ent(Entity))
            return 
    FMRES_IGNORED
            
        
    // Not ak47
        
    if(!equal(Model"models/w_ak47.mdl")) 
            return 
    FMRES_IGNORED;
            
        
    // Get classname
        
    static szClassName[33]
        
    entity_get_string(EntityEV_SZ_classnameszClassNamecharsmax(szClassName))
            
        
    // Not a Weapon box
        
    if ( !equal szClassName"weaponbox" ) )
            return 
    FMRES_IGNORED
        
        
    // Some vars
        
    static iOwneriStoredAkID
        
        
    // Get owner
        
    iOwner entity_get_edict(EntityEV_ENT_owner)
        
        
    // Get drop weapon index
        
    iStoredAkID find_ent_by_owner(-1"weapon_ak47"Entity)
        
        
    // Entity classname is weaponbox, and ak47 was founded
        
    if(g_svd[iOwner] && is_valid_ent(iStoredAkID))
        {
            
    // Setting weapon options
            
    entity_set_int(iStoredAkIDEV_INT_impulse1995)
            
            
            
            
    // Reset user vars
            
    g_svd iOwner ] = false
            
            
            entity_set_model
    (EntityW_MODEL)
            
            return 
    FMRES_SUPERCEDE
        
    }
        
        return 
    FMRES_IGNORED
    }

    //someone has bought our extra item...

    public zp_extra_item_selected(playeritemid
    {
        if (
    itemid == g_hegren)
        {
            if(!
    g_svd[player])
            {
                
    client_print(playerprint_chat"[TEO] you need have a SVDEX first")
                
    zp_set_user_ammo_packs(playerzp_get_user_ammo_packs(player)+ m203_cost 
                
                return;
            }
            
            
    ammo_hud(player,0);
            
    g_ammo[player] += 5
            client_print
    (player,print_chat"You bought 5 nade for SVDEX");
            
    ammo_hud(player,1);
        }
        
        if(
    itemid == g_itemid)
        {    
            if(
    g_svd[player] && user_has_weapon(playerCSW_AK47))
            {
                
    client_print(playerprint_chat"[TEO]You already have a SVDEX")
                
    zp_set_user_ammo_packs(playerzp_get_user_ammo_packs(player)+ weapon_cost )
         
                
                return;
            }
            
    fm_give_item(player,"weapon_ak47")
            
    fm_give_item(player,"ammo_9mm")      
            
    client_print(player,print_chat,"[TEO] You Bought a SVDEX, Time to hunt Zombie ")
            
    client_print(playerprint_chat"[TEO] Press key E to zoom and ATTACK2 to launch the nade")
            
    g_svd[player] = true
            g_ammo
    [player] = 5
            ammo_hud
    (player,1)
        
    cs_set_user_bpammo(playerCSW_AK4790)            
        }    
    }  

    //when player press key Attack2 or E
    public forward_CmdStart(iduc_handleseed)
    {
        new 
    button get_uc(uc_handleUC_Buttons)
        new 
    ent find_ent_by_owner(-1"weapon_ak47"id)
        new 
    fInReload get_pdata_int(entm_fInReload4)
        if(
    is_user_alive(id) && !zp_get_user_zombie(id) && get_user_weapon(id) == CSW_AK47 && g_svd[id])
        {
             if(
    entity_get_int(idEV_INT_button) & IN_ATTACK2)
             {
                 
    launch_nade(id)
                return 
    FMRES_IGNORED
             
    }
             if (
    button IN_USE)
             {
                
    set_pev(idpev_buttonbutton &~ IN_USE)
                if (
    get_gametime() - zoom_delay[id] >= 0.5  && !fInReload && get_pcvar_num(cvar_zoom))
                {
                    if (
    g_hasZoom[id])
                    {
                        
    g_hasZoom[id] = false
                        cs_set_user_zoom
    (idCS_RESET_ZOOM0)
                    }
                    else
                    {
                        
    g_hasZoom[id] = true
                        cs_set_user_zoom
    (idCS_SET_AUGSG552_ZOOM0)
                    }
                    
    zoom_delay[id] = get_gametime()
                }
            }
        }
        return 
    FMRES_IGNORED
    }
                  
    //dmg multipler
    public fw_TakeDamage(victiminflictorattackerFloat:damage)
    {
        if ( 
    is_user_aliveattacker ) && get_user_weapon(attacker) == CSW_AK47 && g_svd[attacker] )
        {
            
    SetHamParamFloat(4damage get_pcvar_floatcvar_dmg_multi ) )
        }
    }
       
      
    //m203 fire...
    public launch_nade(id)
    {
      if(
    g_svd[id] == || g_m203_loaded[id] == || !(is_user_alive(id)))
        return 
    PLUGIN_CONTINUE

      
    if(g_ammo[id] == 0)
      {
        
    client_print(idprint_center"[TEO] You dont have more nade")
        return 
    PLUGIN_CONTINUE
      
    }

      
    entity_set_int(idEV_INT_weaponanim3)

      new 
    FloatOrigin[3], FloatVelocity[3], FloatvAngle[3], Ent

      entity_get_vector
    (idEV_VEC_origin Origin)
      
    entity_get_vector(idEV_VEC_v_anglevAngle)

      
    Origin[2] = Origin[2] + 10

      Ent 
    create_entity("info_target")

      if (!
    Ent) return PLUGIN_HANDLED

      entity_set_string
    (EntEV_SZ_classname"m203_nade")
      
    entity_set_model(EntW_NADE)

      
    //set size
      
    new Float:MinBox[3] = {-1.0, -1.0, -1.0}
      new 
    Float:MaxBox[3] = {1.01.01.0}
      
    entity_set_vector(EntEV_VEC_minsMinBox)
      
    entity_set_vector(EntEV_VEC_maxsMaxBox)

      
    entity_set_origin(EntOrigin)
      
    entity_set_vector(EntEV_VEC_anglesvAngle)

      
    entity_set_int(EntEV_INT_effects2)
      
    entity_set_int(EntEV_INT_solid1)
      
    entity_set_int(EntEV_INT_movetype10)
      
    entity_set_edict(EntEV_ENT_ownerid)

      
    VelocityByAim(id2500 Velocity)
      
    entity_set_vector(EntEV_VEC_velocity ,Velocity)
      
    //sound when lauch...
      
    emit_sound(id,CHAN_VOICE,"weapons/svdex-shoot2.wav"1.0ATTN_NORM0PITCH_NORM

      
    g_m203_loaded[id] = 0

      ammo_hud
    (id,0)
      
    g_ammo[id]--
      
    ammo_hud(id,1)

      new 
    parm[1]
      
    parm[0] = Ent

      
    if(get_pcvar_num(cvar_trail))
        
    set_task(0.2"grentrail",id,parm,1)
      
      
    parm[0] = id
     
      set_task
    (get_pcvar_float(cvar_reload), "m203_reload",id+9910,parm,1)
      
    client_print(idprint_center"[TEO]reloading")

      return 
    PLUGIN_CONTINUE
    }

    public 
    m203_reload(parm[])
    {  
      
    g_m203_loaded[parm[0]] = 1
    }
    //when m203 nade touch something...
    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 )
            {
                
    // Fake damage
                
    fakedamage(i"grenade"0.0DMG_BLAST)
                
                
    // 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))))
                
                
    // 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)
    }

    // Death message
    public death_message(KillerVictim, const Weapon[], ScoreBoard)
    {
        
    // Block death msg
        
    set_msg_block(g_msgDeathMsgBLOCK_SET)
        
    ExecuteHamB(Ham_KilledVictimKiller2)
        
    set_msg_block(g_msgDeathMsgBLOCK_NOT)
        
        
    // Death
        
    make_deathmsg(KillerVictim0Weapon)
        
        
    // Ammo packs
        
    zp_set_user_ammo_packs(Killerzp_get_user_ammo_packs(Killer) + get_pcvar_num(cvar_bonus))
        
        
    // Update score board
        
    if ( ScoreBoard )
        {
            
    message_begin(MSG_BROADCASTg_msgScoreInfo)
            
    write_byteKiller // id
            
    write_short(pev(Killerpev_frags)) // frags
            
    write_short(cs_get_user_deaths(Killer)) // deaths
            
    write_short(0// class?
            
    write_short(get_user_team(Killer)) // team
            
    message_end()
            
            
    message_begin(MSG_BROADCASTg_msgScoreInfo)
            
    write_byte(Victim// id
            
    write_short(pev(Victimpev_frags)) // frags
            
    write_short(cs_get_user_deaths(Victim)) // deaths
            
    write_short(0// class?
            
    write_short(get_user_team(Victim)) // team
            
    message_end()
        }
    }

     
    ammo_hud(idsw)
    {
      new 
    s_sprite[33]
      
    format(s_sprite,32,"number_%d",g_ammo[id])
      
      if(
    sw)
      {
        
    message_beginMSG_ONEgMsgID, {0,0,0}, id )
        
    write_byteICON_SHOW // status
        
    write_strings_sprite // sprite name
        
    write_byte// red
        
    write_byte150 // green
        
    write_byte// blue
        
    message_end()
      }
      else
      {
        
    message_beginMSG_ONEgMsgID, {0,0,0}, id )
        
    write_byteICON_HIDE // status
        
    write_strings_sprite // sprite name
        
    write_byte// red
        
    write_byte160 // green
        
    write_byte// blue
        
    message_end()
      }
    }



    public 
    grentrail(parm[])
    {
      new 
    gid parm[0]

      if (
    gid
      {
        
    message_beginMSG_BROADCASTSVC_TEMPENTITY )
        
    write_byteTE_BEAMFOLLOW )
        
    write_short(gid// entity
        
    write_short(m_iTrail)  // model
        
    write_byte10 )       // life
        
    write_byte)        // width
        
    write_byte255 )      // r, g, b
        
    write_byte255 )    // r, g, b
        
    write_byte255 )      // r, g, b
        
    write_byte100 // brightness
            
        
    message_end() // move PHS/PVS data sending into here (SEND_ALL, SEND_PVS, SEND_PHS)
      
    }
    }
    //knock back...
    public make_knockback VictimFloat:origin ], Float:maxspeed )
    {
        
    // Get and set velocity
        
    new Float:fVelocity[3];
        
    kickback VictimoriginmaxspeedfVelocity)
        
    entity_set_vectorVictimEV_VEC_velocityfVelocity);

        return (
    1);
    }

    //stock...

    stock get_weapon_ent(id,wpnid=0,wpnName[]="")
    {
        
    // who knows what wpnName will be
        
    static newName[24];

        
    // need to find the name
        
    if(wpnidget_weaponname(wpnid,newName,23);

        
    // go with what we were told
        
    else formatex(newName,23,"%s",wpnName);

        
    // prefix it if we need to
        
    if(!equal(newName,"weapon_",7))
            
    format(newName,23,"weapon_%s",newName);

        return 
    fm_find_ent_by_owner(get_maxplayers(),newName,id);


    stock kickbackentFloat:fOrigin[3], Float:fSpeedFloat:fVelocity[3])
    {
        
    // Find origin
        
    new Float:fEntOrigin[3];
        
    entity_get_vectorentEV_VEC_originfEntOrigin );

        
    // Do some calculations
        
    new Float:fDistance[3];
        
    fDistance[0] = fEntOrigin[0] - fOrigin[0];
        
    fDistance[1] = fEntOrigin[1] - fOrigin[1];
        
    fDistance[2] = fEntOrigin[2] - fOrigin[2];
        new 
    Float:fTime = (vector_distancefEntOrigin,fOrigin ) / fSpeed);
        
    fVelocity[0] = fDistance[0] / fTime;
        
    fVelocity[1] = fDistance[1] / fTime;
        
    fVelocity[2] = fDistance[2] / fTime;

        return (
    fVelocity[0] && fVelocity[1] && fVelocity[2]);
    }

     
  15. ĐônKi

    ĐônKi Mr & Ms Pac-Man

    Tham gia ngày:
    14/3/10
    Bài viết:
    294
    @50: thank ... nhưng không được gọi tên thế nhé :-w
    mà nói thẳng ra thôi :D ( tớ cần cái giống SA :D )
     
    Chỉnh sửa cuối: 3/1/11
  16. 5c0r-|3i0

    5c0r-|3i0 Donkey Kong

    Tham gia ngày:
    6/8/09
    Bài viết:
    387
    @Đôn Ki: Đùa đó , hihi , bên Biệt Đội nó ntn ??? ...giải thích tui sem..
    @Tèo : Code nhìn quen quen...Đã nói là thay vì set health lại thì dùng ExecuteHam( Ham_TakeDamage )rồi ==" . Tui chưa test thử nhưng mà 1)Nếu ở forward reload , thì thêm check nút reload làm j ?
    2) forward CMD_start , ông nên check nếu là zombie hoặc ko có SVD hoặc ko có sống hoặc không có đang cầm vũ khí đc thay thế SVD thì FMRES_IGNORED ..Như vậy thì nó sẽ không phải chạy những function thừa...
    3)
    PHP:
      for(new 0sizeof sound_expi++) 
            
    emit_sound(id,CHAN_VOICE,sound_exp[i], 1.0ATTN_NORM0PITCH_NORM)  
    Có bao nhiêu sound nó play hết bấy nhiêu hả ông :| .
    4)
    PHP:
                // Fake damage 
                
    fakedamage(i"grenade"0.0DMG_BLAST
                 
                
    // 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)))) 
                 
                
    // 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 
                

    Dùng Hamsandwich để tạo DMG như đã nói ở trên ...Mấy dòng này có thể bỏ đc r` :P .
    5) Public DeathMSG bỏ luôn ! . Hook deathmsg , check xem có cầm SVD , thỏa đkiện hay không, rồi thưởng j thì thưởng ^^!.
    6) Dùng cả 2 cái kickback và knockback luôn làm jề ^^!
    Nhiêu đó ý kiến thôi :D . Có lỗi j thì nói luôn đi :-s .
     
  17. teobrvt1995

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

    Tham gia ngày:
    19/9/10
    Bài viết:
    691
    ko bít tạo = ham :D
    cho tui xin code đ...
     
  18. -Wesker-

    -Wesker- Dragon Quest

    Tham gia ngày:
    16/7/10
    Bài viết:
    1,354
    Nơi ở:
    S.V.E.N TEAM
    Có khả năng nào làm 1 cái plugin mà extra 1 cái đèn pin soi hẳn hoi như flashlight rồi block chức năng block flashlight thông thường không nhỉ.
     
  19. ĐônKi

    ĐônKi Mr & Ms Pac-Man

    Tham gia ngày:
    14/3/10
    Bài viết:
    294
    @50: nó đại khái như thế này 00:00:00 nhưng số to :) càng to càng thích :D cái số 00 cuối cùng chạy rất nhanh
     
  20. -Wesker-

    -Wesker- Dragon Quest

    Tham gia ngày:
    16/7/10
    Bài viết:
    1,354
    Nơi ở:
    S.V.E.N TEAM
    Đấy là tích tắc :-? Hình như cả 2 cái plug trên không có đâu.
     
    Chỉnh sửa cuối: 3/1/11
Trạng thái chủ đề:
Không mở trả lời sau này.

Chia sẻ trang này