1. New Round
Este eventul care se executa atunci cand o noua runda incepe, mai exact cand incepe freezetime.
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
- HLTV este eventul
- Event_NewRound este publicul chemat de event. Il puteti numi cum vreti.
- a inseamna ca este un event global
- 1=0 inseamna ca primul parametru al eventului trebuie sa fie 0
- 2=0 inseamna ca al doilea parametru al eventului trebuie sa fie 0
Acest event are o restrictie, nu este chemat in prima runda, chiar dupa schimbarea mapei. Este un event global, nu are paramul id in header, trebuie sa parcurgeti playerii.
2. Round Start
Este eventul care se executa atunci cand freezetime se termina. Este un event global, deci trebuie sa parcurgeti playerii.
register_logevent("LogEvent_NewRound", 2, "1=Round_Start")
- LogEvent_NewRound este publicul cheman
- 1=Round_Start inseamna ca primul parametru trebuie sa fie Round_Start
3. Player Spawn
Eventul este chemat in momentul in care un player se spawneaza. Nu este event global, este chemat pentru fiecare player in parte.
RegisterHam(Ham_Spawn, "player", "CBasePlayer_Spawn", 1)
- Ham_Spawn este hamul chemat
- player este entitatea pentru care este chemat, adica un player
- CBasePlayer_Spawn este publicul chemat.
- 1 inseamna ca eventul este inregistrat ca post. Se poate utiliza si true in loc de 1.
4. Round End
Eventul este chemat cand runda se termina. Este event global, trebuie sa parcurgeti playerii.
register_logevent("LogEvent_RoundEnd", 2, "1=Round_End")
- LogEvent_RoundEnd este publicul chemat
- 1=Round_End inseamna ca primul parametrul al eventului trebuie sa fie Round_End
Pentru ce se pot utiliza aceste eventuri( cateva exemple)
- Ham_Spawn pentru a seta hp/ap/speed/gravity etc
- New round pentru a executa ceva in timpul freezetime
- Round Start pentru a executa ceva dupa freezetime
- Round End pentru a executa ceva cand runda s-a terminat(acel interval dintre finalul si inceperea unei runde noi).
Mai sunt cateva lucruri pe care nu le-am explicat:
Pre/Post:
Cand un event este inregistrat ca pre(0, false) inseamna ca se executa inainte de actiunea respectiva. Cand este inregistrat ca post(1, true) inseamna ca se executa dupa actiunea respectiva.
De exemplu, daca vrem sa blocam damageul dat asupra unei entitati inregistram Ham_TraceAttack si Ham_TakeDamage ca pre, cu clasa entitatii respective si dam return HAM_SUPERCEDE. Daca l-am inregistra ca post nu ar functiona, deoarece dmgul a fost facut deja.
Parcurgerea playerilor:
new iPlayers[ 32 ], iPlayersNum, id; get_players(iPlayers, iPlayersNum); if (!iPlayersNum) { return 0; } for(new i; i < iPlayersNum; i++) { id = iPlayers[ i ]; //cod }
- iPlayers este arrayul in care vom stoca maximul de playeri( 32 ), in celule de la 0 la 32-1.
- Primul player o sa fie in celula 0, ultimul player in celula 31.
- iPlayersNum este numarul playerilor de pe server
- id este o variabila cu care vom egala arrayul iPlayers
- get_players ne permite sa luam toti playerii de pe server, cu anumite conditii. O sa fac un tutorial separat.
- Daca iPlayersNum este 0 inseamna ca pe server nu este niciun player, oprim functia.
- creem un loop, pentru a parcurge toti playerii.
- egalam arrayul iPlayers[ i ] cu variabila id. Acum, putem sa lucram direct cu id.
Edited by Artick ;, 02 August 2014 - 04:54 PM.