Vezi mesaje fără răspuns | Vezi subiecte active Acum este Dum Mai 05, 2024 10:57 am



Răspunde la subiect  [ 1 mesaj ] 
CS Bomb Scripting! 
Autor Mesaj
Membru
Avatar utilizator

Membru din: Dum Mai 31, 2015 11:41 pm
Mesaje: 1767
Localitate: Spania , Madrid
Server Preferat: Cs.Playcs.ro
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 ..

_________________
Y!M:Playcs.manu
Cs.playcs.ro
Zm.playcs.ro
Respawn.playcs.ro
GunGame.playcs.ro
Imagine
Imagine


Sâm Mar 05, 2016 11:36 pm
Profil Trimiteţi mesaj privat E-mail YIM WWW
Afişează mesajele din ultimele:  Sortează după  
Răspunde la subiect   [ 1 mesaj ] 

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator


Nu puteţi scrie subiecte noi în acest forum
Nu puteţi răspunde subiectelor din acest forum
Nu puteţi modifica mesajele dumneavoastră în acest forum
Nu puteţi şterge mesajele dumneavoastră în acest forum
Nu puteţi publica fişiere ataşate în acest forum

Căutare după:
Mergi la:  
Furnizat de phpBB® Forum Software © phpBB Group
Designed by ST Software.
Translation/Traducere: phpBB România
phpBB SEO