Salt la continut

- Advertisement -
Fotografie

[CS16-Scripting] Eventuri


  • Please log in to reply
2 replies to this topic

#1
Andrei;

Andrei;

    Administrator

  • Administrator
  • 3201 Postari:
  • 398 topics
  • Joined 16-December 12
  • Country: Country Flag

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.

Aceasta postare a fost editata de Artick ;: 02 August 2014 - 04:54 PM


#2
Castyex

Castyex

    New Member

  • Membru
  • 3 Postari:
  • 0 topics
  • Joined 10-March 15
  • Country: Country Flag

La parcurgerea  playerilor am inteles prima partea dar prin :

 

for(new i; i < iPlayersNum; i++)
{
    id = iPlayers[ i ];    
//cod
}

 

 

!!!!Cum se citeste  ??



#3
appLy^NxT

appLy^NxT

    Fost Resource Team

  • Retired
  • 1313 Postari:
  • 195 topics
  • Joined 20-November 12
  • Country: Country Flag

La parcurgerea  playerilor am inteles prima partea dar prin :

 

for(new i; i < iPlayersNum; i++)
{
    id = iPlayers[ i ];    
//cod
}

 

 

!!!!Cum se citeste  ??

 

 

Te rog nu mai folosi scris colorat , se vede mai ...

 

Nu am inteles "ce nu ai inteles".

 

Acela este un loop , pentru a parcurge toti playerii, de exemplu la un plugin de amx_who , ca sa functioneaze , trebuie folosit acest loop.

Daca nu , va functiona doar cand este 1 jucator pe server , altfel nu va mai arata nimic.

Acea parte va ramane modificata , nu e nevoie de modificari.

Sincer , nici eu nu stiu cum o citesc bine , doar la ce foloseste.

Ca simboluri ar fi asa:

iPlayersNum ; numarul de playeri de pe server

i++ ; va creste (i -- ; scade)

Restu cred ca le stii.     


Aceasta postare a fost editata de appLy^NxT: 11 March 2015 - 08:32 PM





1 useri citesc topicul

0 membri, 1 vizitatori, 0 utilizatori anonimi