Articolul este despre modul de a construi un plug-in
am citit:
Să începem cu un simplu: mesaje de afișare. Am venit cu o echipa care va face: amx_ HelloWorld, amx_ salut sau salut. Este necesar să fie capabil, atunci când va dori, introduceți comanda corespunzătoare și a afișa această inscripție: Salut lume, salut sau „Privet, 4 itaki“ ().
Totul verificat? Să mergem!
Orice plug-in trebuie să aibă plugin_ funcția de inițializare (). Tot ceea ce este introdus în funcția dată va fi înregistrată în AMX, pe care le-ar putea folosi plug-in: plugin_init publice () register_plugin ( "Hello World", "0.1", "jghg")
>
Dar acest lucru nu este suficient pentru scopul nostru. Trebuie să fie o echipă care va putea folosi și pentru aceasta trebuie noi să-l înregistreze în init plugin_ () funcția. Comenzile sunt introduse în consola de server sau de la client trebuie să fie un init nutrie plugin_ (), astfel încât ar fi în măsură să se bucure. plugin_ init () este important pentru multe alte motive, pe care le veți învăța din lecțiile de mai târziu. init Funcția plugin_ () este ca un mesaj pentru AmxMod, care suschestvket plugin, și dacă se întâmplă ceva (introducerea echipei) juzat ego.register_clcmd ( "amx_helloworld", "myFunction", A DMIN_VOTE "Printuri Bună ziua lume. Pentru toată lumea")
Astfel, init funcția plugin_ () arata ca acest lucru: plugin_init publică () register_plugin ( "Hello World", "0.1", "jghg")
register_clcmd ( "amx_helloworld", "myFunction", ADMIN _VOTE "spune Bună ziua lume. la joc ecran")
Păstrați indentare, și anume Utilizați „tab-ul“ sau, de exemplu, lacune în funcțiile de scriere. Deschideți orice. fișier sma furnizat împreună cu AMX, și veți înțelege ce vreau să spun. Acest lucru va simplifica compilarea și plugin-ul va fi compilat mai eficient. Așa cum va facilita studiul pluginul altor dezvoltatori. Mult mai ușor de înțeles codul structurat decât într-un bordel. Există încă motive bune, dar eu nu voi intra în ele.
Adăugați datele de linie. Ele trebuie să fie prezente în plugin: #include
#include
Am scris deja destul de mult. Ar trebui să fie similar cu acest lucru aici: / *
Bună ziua lume, v0.1
de JGHG
* /
plugin_init publică () register_plugin ( "Hello World", "0.1", "jghg")
register_clcmd ( "amx_helloworld", "myFunction", ADMIN _VOTE "spune Bună ziua lume. la joc ecran")
Păstrați-vă întotdeauna în scris. Cine știe când energia electrică este oprită. Încercați să compila plugin-ul. Dacă există erori, acestea sunt mai ușor de găsit acum decât atunci alege o gramada de cod. Acest lucru simplifică foarte mult de depanare.
Salvați fișa și rulați sc. liliac. sc. liliac - este un fișier batch care va căuta toate sma-fișier în sursa de director. Se compilează și pune într-un director compilat cu. AMX. Dacă doriți să compilați numai plug-in, atunci ai nevoie pentru a începe sc. exe cu un parametru egal cu numele fișierului în care plugin-ul salvat (sc. exe helloworld. sma). extensie de fișier .amx este stocat în directorul curent.
Dacă ceva nu compilează, verifica ortografia plugin.
Rămâne să scrie ultima funcție - un mesaj de avertizare pe ecran. Ne-am rezervat o comandă pentru a fi executat în mesajul consola afișată pe ecran este, de asemenea, înregistrate. Acum trebuie să creați o funcție care va face totul: myFunction publice (id, nivel, cid), în cazul în retur PLUGIN_HANDLED (cmd_access (id, nivel, cid, 1)!)
>
>
Eu nu am de gând să picteze cum funcționează funcția de acces cmd_ (). Pot spune doar că verifică dacă clientul poate utiliza această comandă.
Id-ul este utilizat în diferite moduri. În acces cmd_ () prin ID-ul este verificat nivelul de acces acestui utilizator care curge, și nimeni altcineva. Sper că acest lucru este de înțeles.
Următoarea linie de cod: client_print (0, print_center, "Hello World".)
Aceasta este linia de cod care este responsabil pentru tipărirea din mesajul clientului. cu lient_ de imprimare este numele unei funcții care ia trei parametri (poate dura mai mult, dar că, în alte clase). Primul parametru (0) este responsabil pentru care va fi afișată comanda. Dacă introduceți numărul de identificare al playerului, mesajul va fi afișat pentru el și pentru tine. În acest caz, ar fi derivate pentru toate prezente pe server (mort sau viu). Ie atunci când trebuie să faci cu toate ceva sau să știe toată lumea că este necesar să se utilizeze un 0. Al doilea parametru specifică în cazul în care pentru a afișa mesajul. Puteți pune un mesaj în zona de chat - chat-print_ sau print_ notifică - vor fi afișate în consolă. Și a treia opțiune - mesajul în sine. Faptul că, în cadrul ghilimelele este mesajul care va fi imprimat pe ecran. Nu pierde ghilimele tale.
Aproape că am scris primul nostru plug-in. Rămâne doar să adăugați următoarea linie în myFunction (): întoarcere PLUGIN_HANDLED
Aceasta este o linie importantă. Este imposibil să-și piardă. Amintiți-vă, acesta este ultimul lucru pe care trebuie să adăugați toate funcțiile care invocă comenzile introduse în consola de server sau de pe consola de client. Dacă nu, AMX nu va ști ce se execută comanda, un mesaj va fi afișat pe ecran, iar consola va apărea următoarea eroare: Comandă necunoscută: amx_helloworld
Prin urmare, se termină întotdeauna o funcție de întoarcere PLUGIN_HANDLED.
Toate plugin-ul nostru arata ca acest lucru: / *
Bună ziua lume, v0.1
de JGHG
* /
myFunction publică (id, nivel, cid) if (! cmd_access (id, nivel, cid, 1)) întoarcere PLUGIN_HANDLED
>
plugin_init publică () register_plugin ( "Hello World", "0.1", "jghg")
register_clcmd ( "amx_helloworld", "myFunction", ADMIN _VOTE "tipărește Bună ziua lume. pentru toată lumea")