Salt la continut

- Advertisement -
Fotografie

[CS16-Scripting] Forwarduri de baza


  • Please log in to reply
3 replies to this topic

#1
Andrei;

Andrei;

    Administrator

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

O sa va explic pe larg forwardurile de baza cu care lucram cel mai des.

 

1.plugin_precache

Este primul forward care se executa cand mapa se schimba, serverul porneste/primeste restart. Se foloseste pentru a pregati resursele ce urmeaza sa fie folosite: modele,sprite,sunete. Cu toate ca modulul fakemeta ne permite alternative la functiile de precache default din amxmodx, nu le recomand.

 

Nativele cu care lucram:

precache_model      //modele si spriteuri
precache_generic    //sunetele mp3/altele
precache_sound      //suntele wav

La precache este mult de vorbit, el are anumite restrictii, multe chestii care ii incurca pe incepatori.

 

1.a) precache_model

 

1.1 Modele pentru arme. Majoritatea armelor au 3 modele v,p,w. v este modelul pe care il vedeti cand tineti arma in mana. p este modelul pe care il vad ceilalti cand se uita la voi. w este modelul armei care este pe jos.

new const ModelV [ ] = "models/v_arma.mdl;
new const ModelP [ ] = "models/p_arma.mdl;
new const ModelW [ ] = "models/w_arma.mdl;

public plugin_precache( )
{
  precache_model(ModelV);
  precache_model(ModelP);
  precache_model(ModelW);
}

Nota: folosirea ; la final de linie nu este obligatorie. Este necesara doar in cazul in care #pragma semicolon este folosit. Nu este necesar ca toate armele sa aiba toate cele 3 modele.

 

  • Se poate si fara creearea unor constante noi,putem pune direct locatia in precache_model,dar este o practica buna sa faceti asa.
  • Mult mai usor de editat.
  • Intre [ ] se pune lungimea stringului dintre "",insa nu este necesar. Compilerul isi da si singur seama.
  • new const declara o constanta noua. Puteati face simplu new ModelV [ ], dar folosind constantele este mai optimizat.

1.2 Modelul unui player. Este doar un singur fisier, care trebuie sa se afle in models/player/nume_model/nume_model.mdl

Modul I ) precache_model("models/player/test/test.mdl")
//Ambele moduri sunt echivalente. Recomand modul II
new const MOLDE_PLAYER [ ] = "models/player/test/test.mdl"
Modul II ) precache_model(MODEL_PLAYER)

1.b ) precache_sound & precache generic

 

1.1) precache_sound

Csul foloseste sunete in format wav,deci precache_sound suporta doar suntele in acest format. Ele trebuie sa fie scrise in precache fara /sound in path.

new const SOUND [ ] = "sunet.wav" //locatia este sound/sunet.wav
precache_sound( SOUND ) 

1.2)precache_generic

Se foloseste cel mai des pentru sunetele de tipul mp3. Ele trebuie folosite cu tot cu /sound in path.

new const SOUND [ ] = "sound/sunet.mp3"
precache_generic( SOUND )

1.c) precache_model pentru spriteuri

new const SPRITE[ ] = "sprites/test.spr"
precache_model(  SPRITE )

2.plugin_init

Este al doilea forward care se executa,dupa plugin_precache. Tot ce se poate inregistra in init se poate si in precache. Se foloseste pentru comenzi, cvaruri, eventuri, forwarduri. Nu insisit prea mult,am mai vorbit despre el.

 

3. plugin_cfg

Se foloseste pentru a altera cvaruri, este forwardul de configurare al pluginului, de obicei in el se creeaza fisiere etc. Este chemat dupa init.

 

4. plugin_end

Este ultimul forward care se executa, in momentul cand mapa se schimba/se da restart si plugin isi "termina activitatea".

 

Exista si plugin_natives,dar despre native trebuie sa fac un tutorial separat.


Aceasta postare a fost editata de Artick ;: 29 July 2014 - 09:59 AM


#2
Castyex

Castyex

    New Member

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

Salut , sunt un incepator in scripting si doresc sa te intreb ceva , ti-am urmat tutorialele  si am o intrebare , in  tutorialul trecut ai discutat despre public client_putinserver , ce imi poti spune despre acest forward   incat sa il inteleg  deoarece nu inteleg de ai pus console_print sau set_Task in putinserver si nu le-ai pus in plugin_init .


Aceasta postare a fost editata de Castyex: 10 March 2015 - 09:20 PM


#3
appLy^NxT

appLy^NxT

    Fost Resource Team

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

publicul client_putinserver se executa cand jucatorul a intrat pe server ( nu cand se conecteaza ) , cand ii apare acel motd de inceput .

 

Spoiler

 

in plugin_init, acolo se trec event'urile , ham'urile ,cvar'urile, etc.

 

Spoiler
 
 
 
Acel set_task , se va executa doar la un interval , sau doar o data , depinde de flag/(uri).

Aceasta postare a fost editata de appLy^NxT: 10 March 2015 - 09:36 PM

  • Andrei; and Castyex like this

#4
Andrei;

Andrei;

    Administrator

  • Topic Starter

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

Nu e obligatoriu sa inregistrezi forwardurile in init, le poti inregistra cand ai nevoie. Practica comuna e sa o faci atunci, insa poti sa le inregistrezi oricand, nu exista o restrictie in acest sens, Nu mai tin minte daca am explicat vreodata notiunea de pre si post:

 

Pre: cand un forward este pre, se executa inainte actiunii respective

Post: se executa dupa actiunea respectiva.

 

Ca sa intelegeti:

//acum se executa HamSpawn Pre
//acum jucatorul s-a spawnat
//acum se executa HamSpawn post

Acel 1 din RegisterHam inseamna ca e post, 0 inseamna pre. Daca vrei sa setezi ceva userului la spawn, trebuie sa inregistrezi ca post, cand e chemat pre jucatorul nu e inca in viata. In HamSpawn post trebuie sa verifici daca e in viata, deoarece HamSpawn e chemat si atunci cand jucatorul intra pe server(evident ca atunci nu e in viata).






1 useri citesc topicul

0 membri, 1 vizitatori, 0 utilizatori anonimi