O sa folosesc un exemplu clasic, printarea mesajului "Hellow World", in consola playerului si in chat.
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #define PLUGIN "Hello world" #define VERSION "1.0" #define AUTHOR "Artick" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) } public client_putinserver ( id ) { console_print(id, "Hello World"); set_task(3.0, "ShowMessage", id); } public ShowMessage( id ) { client_print(id, print_chat, "Hello World"); remove_task(id) }
Primul lucru nou intalnit este client_putinserver. Este un forward default amxx,noi nu trebuie sa il definim. Se executa cand un jucator vede motdul de pe server(cand este practic pe server).
Mai sunt cateva forwarduri utile:
client_connect( id ) //jucatorul se conecteaza client_authorized( id ) //se executa intre connect si putinserver,momentul in care i se verifica steamidul,daca e valid. Se face schimbul de informatii cu serverul. client_disconnect ( id ) //se executa cand jucatorul e deja deconectat.
Va spuneam un tutorialul trecut de headerul functiei si de paramuri. Aceste forwarduri au in header ( intre "( )" ) paramul id. idul este o valoare numerica, este un index dupa care jocul recunoaste playerii. Cand un player se deconecteaza si altcineva( sau tot playerul ) se conecteaza, e posibil sa primeasca acelasi userid(id).
console_print(id, "Hello World");
- printeaza un mesaj in consola
- id = playerul pentru care se executa
- intre "" este mesajul
- se mai poate utiliza client_print(id, print_console, "mesaj")
set_task(3.0, "ShowMessage", id)
Ca sa imi fie mai usor sa explic, voi lua un exemplu din viata reala. Mergi la magazin sa cumperi mere,dar s-au vandut toate si iti spune sa te intorci peste x timp. Practic,ti-a indicat ca peste x timp trebuie sa faci o actiunea. Asta face si set_task, efectueaza o actiune peste timpul specificat( in cazul nostru 3 secunde).
Nu puteam pune mesajul din chat direct in putinserver, atunci playerul inca are motdul/team menu deschis si nu vede mesajul. Peste 3 secunde este sigur pe server si il va vedea.
- 3.0 reprezinta timpul. set_task functioneaza pe baza de floaturi(numere cu virgula). Daca scriem 3 ne va da un warning la compilare,tag mismatch.
- Intre "" este publicul pe care trebuie sa il execute dupa 3 secunde.
- Am folosit paramul id pentru a cunoaste carui player trebuie sa ii afisam mesajul.
Set_task este o functie complexa,voi face un tutorial separat despre ea.
client_print(id, print_chat, "Hello World");
- printaza un mesaj unui player
- print_chat inseamna ca va printa in chat
- intre "" e mesajul.
Inafara de print_chat se mai foloseste:
print_chat - mesaj in chat print_console - mesaj in consola print_notify - mesaj tot in consola,insa trebuie ca modul developper sa fie on print_center - mesaj in centru. Ca cele de la plantarea bombei etc.
remove_task(id)
- sterge taskul.
Astept intrebari.
Aceasta postare a fost editata de Artick ;: 28 July 2014 - 06:37 PM