www.PlayCs.ro - Playcs Romania
https://playcs.ro/

CS Bomb Scripting!
https://playcs.ro/bomb-scripting-t2882.html
Pagina 1 din 1

Autor:  MaNu67 [ Sâm Mar 05, 2016 11:36 pm ]
Subiectul mesajului:  CS Bomb Scripting!

Inceput:
Am vazut multe intrebari/mistere fata de c4 bomb script. Asa ca m-am decis sa fac un tutorial/faq pentru a va lamuri.

Cerinte:
Ar trebui majoritatea dintre voi sa fiti familiarizati cu bazele scriptare ale AMXMODX-ului.Pentru a obtine inceputul jucatorilor (numai în interiorul "logevent_function_p"), va trebui să utilizaţi:

PHP Code:

Cod:
stock get_loguser_index() {
    new loguser[80], name[32]
    read_logargv(0, loguser, 79)
    parse_loguser(loguser, name, 31)
 
    return get_user_index(name)
}


Example:
PHP Code:

Cod:
public logevent_function_p() {
    new id = get_loguser_index()
    // ...
}


1. Player/Bomb
PHP Code:

Cod:
// Este bomba cazuta/transportata?
    if (fm_find_ent_by_class(-1, "weapon_c4"))
 
// Este bomba cazuta?
    new bomb = fm_find_ent_by_class(-1, "weapon_c4")
    if (bomb && pev(bomb, pev_owner) > get_maxplayers())
 
// Este bomba transportata/cine o transporteaza?
    new carrier = 0, ownerent, bomb = fm_find_ent_by_class(-1, "weapon_c4")
    if (bomb && (ownerent = pev(bomb, pev_owner)) <= get_maxplayers())
        carrier = ownerent
    if (carrier) // noi o avem de transportat
    else // noi nu o avem de transportat
 
// Este data bomba la player?
    if (user_has_weapon(id, CSW_C4)) // metoda #1
    if (pev(id, pev_weapons) & (1<<CSW_C4)) // metoda #2
    if (fm_find_ent_by_owner(-1, "weapon_c4", id)) // metoda #3

// Cum transferi bomba de la un player la altul?
    fm_transfer_user_gun(carrier, recipient, CSW_C4) // returnare cu succes
 
// Cum obligi un player sa renunte la bomba?
    engclient_cmd(id, "drop", "weapon_c4")
 
// Cum sa elimini imaginea bombei?
    new weapbox, bomb = fm_find_ent_by_class(-1, "weapon_c4")
    if (bomb && (weapbox = pev(bomb, pev_owner)) > get_maxplayers()) {
        dllfunc(DLLFunc_Think, weapbox) // vor fi eliminate weaponbox + weapon_c4
        // elimina punctul rosu care indica bomba de pe radar
        message_begin(MSG_ALL, get_user_msgid("BombPickup"))
    }
 
// Cum dai bomba la un jucator?
    fm_give_item(id, "weapon_c4")
    // use cs_set_user_plant(id) to allow planting
 
//  Cum stergi icoana bombei ?
    engclient_cmd(id, "weapon_c4")
    cs_set_user_bpammo(id, CSW_C4, 0)
    engclient_cmd(id, "lastinv")
    // elimina icoana bombei
    message_begin(MSG_ONE, get_user_msgid("StatusIcon"), _, id)
    write_byte(0)
    write_string("c4")
    message_end()
 
// Este bomba plantata/cum elimini bomba plantata?
    new bomb
    if ((bomb = fm_find_ent_by_model(-1, "grenade", "models/w_c4.mdl"))) {
        // bomba e plantata
        fm_remove_entity(bomb) // elimina bomba plantata
    }


4. Explosion
PHP Code:

Cod:
// Explodarea bombei inainte de sfarsitul rundei
    register_logevent("logevent_function", 6, "3=Target_Bombed")
 
// Planteaza bomba ,explodand inainte/dupa sfarsitul rundei
    register_event("23", "event_function", "a", "1=17", "6=-105", "7=17")
 
// Jucatorii omorati de catre explodarea bombei
    public client_death(killer, victim, wpnindex, hitplace, TK) {
        if (wpnindex == CSW_C4)
    }


5. Targets
PHP Code:

Cod:
// Exist un player la explodarea bombei(func_bomb_target)?
    // Note: nu exista o modalitate buna de a detecta daca jucatorul este la bomba
    new target = -1, class[] = "func_bomb_target", bool:is_inside = false
    while ((target = fm_find_ent_by_class(target, class))) {
        if (!fm_boxents_distance(index, target)) {
            is_inside = true
            break
        }
    }
    if (is_inside)
 
// Harta contine obiectivele bombei?
    if (fm_find_ent_by_class(-1, "func_bomb_target") || fm_find_ent_by_class(-1, "info_bomb_target"))
 
// Cum elimini explodarea bombei?
    new target = -1, classname[] = "func_bomb_target"
    while ((target = fm_find_ent_by_class(target, classname)))
        fm_remove_entity(target)
    classname = "info_bomb_target"
    while ((target = fm_find_ent_by_class(target, classname)))
        fm_remove_entity(target)



[eXtreamCS]Tutorial apartine unui membru de pe un site in engleza (nu il mai tin minte) , oricum eu l-am tradus de la 0.
eXtreamCS]Astept pareri bune/rele.
[eXtreamCS]M-am muncit putin la el si sper ca a iesit bine ..

Pagina 1 din 1 Ora este UTC + 2
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/