Jump to content

[Tutorial] Primul plugin


Recommended Posts

Posted

Acesta este al treilea tutorial, cel care ne va ajuta sa punem pluginul in functiune. Tutorialul a fost selectat de pe un forum de counter-strike random si corectat prin unele locuri de catre mine.

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 "Nume"

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 in 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 vanzatoarea iti spune sa te intorci peste x timp. Practic, ti-a indicat ca peste x timp trebuie sa faci o actiune. 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.

Guest
This topic is now closed to further replies.
×
×
  • Create New...