Crearea propriilor plug-in-uri pentru amxx
Scrierea plugin-urilor în limba mică este suficient de ușoară și, după câteva lecții, veți putea să vă scrieți propriul plug-in la AMX. Prin urmare, cred că nu ar trebui să scriu în mod inutil mult până când tu însuți începi să gândești singur cum să scrii un plug-in (cod).
Desigur, dacă ați scris înainte de program, acest lucru va ajuta foarte mult. Dar cred că limba mică este un început bun pentru un începător. Sper că aveți câteva concepte-cheie în limbile de programare. Dacă nu înțelegeți care sunt variabilele și funcțiile, atunci ar trebui să mergeți și să găsiți informații despre aceste probleme. Nu vă voi explica asta. Dar nu te speria. Cred că din lecțiile mele înțelegeți ce este.
Am scris acest plugin pentru HL mod - Counter Strike. Luați act de asta. Dar, cred, tot ceea ce sa spus aici va fi util pentru scrierea de scripturi altor moduri HL.
030613
Lecția 1
Primul plugin
*****************
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 ca administratorul ar putea fi atunci când vrea să, și introduceți comanda corespunzătoare pentru a afișa acest semn: Salut lume, salut sau „Privet, 4 itaki“ ().
Ai verificat totul? Să mergem!
Orice plugin trebuie să aibă funcția plugin_init (). Tot ce este inserat în această funcție va fi înregistrat în AMX, astfel încât să poată utiliza plugin-ul: public plugin_init () <
register_plugin ("Hello world", "0.1", "jghg")
>
Dar acest lucru nu este suficient pentru scopul nostru. Trebuie să fie o echipă care va fi capabil de a utiliza admin și pentru aceasta au nevoie de noi să-l înregistreze în funcția de inițializare plugin_ (). 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, funcția plugin_init () arată astfel: public plugin_init () <
register_plugin ("Hello world", "0.1", "jghg")
register_clcmd ("amx_helloworld", "myfunction", ADMIN_VOTE, "spune Lumea Hello la ecranul de joc")
Păstrați liniuțe, adică utilizați "tab" sau, de exemplu, spații în funcții de scriere. Deschideți orice. sma, furnizat cu AMX, și veți înțelege despre ce vorbesc. . * va simplifica compilația și plugin-ul va fi compilat mai calitativ. De asemenea, va fi mai ușor să aflați despre plug-in-ul dvs. de la alți dezvoltatori. Este mult mai ușor să înțelegi codul structurat decât într-o mizerie. Mai există motive grave, dar acum nu voi intra în ele.
Adăugați date de linie. Ele trebuie să fie prezente în plugin: #include
#include
Am scris deja destul de mult. Trebuie să fie astfel: / *
Bună ziua lume, v0.1
Prin JGHG
* /
public plugin_init () <
register_plugin ("Hello world", "0.1", "jghg")
register_clcmd ("amx_helloworld", "myfunction", ADMIN_VOTE, "spune Lumea Hello la ecranul de joc")
Salvați întotdeauna ceea ce ați scris. Cine știe când opresc energia electrică. Încercați să compilați acest plugin. Dacă există erori, atunci este mai ușor să le găsiți acum decât să ridicați o grămadă de cod. . * Simplu simplifică căutarea erorilor.
Salvați plugin-ul și rulați sc. liliac. sc. bat este un fișier batch care caută toate fișierele sma din directorul sursă. Compilează și adaugă în directorul compilat extensia. AMX. Dacă doriți să compilați numai plugin-ul dvs., trebuie să executați sc. exe cu parametrul egal cu numele fișierului în care este salvat pluginul (sc.exe helloworld.sma). Fișierul cu extensia .amx va fi salvat în directorul curent.
Dacă se întâmplă ceva în compilare, asigurați-vă că plugin-ul este scris corect.
Rămâne pentru noi să scriem ultima funcție - ieșirea mesajului pe ecran. Am înregistrat o comandă care va fi executată în consola, iar mesajul afișat pe ecran este, de asemenea, înregistrat. Acum rămâne să creați o funcție care va face toate acestea: funcția publică (id, nivel, cid) <
dacă (! cmd_access (id, nivel, cid, 1)) <
returnați PLUGIN_HANDLED
>
>
Nu voi descrie cum funcționează funcția cmd_ access (). Voi spune doar că verifică dacă clientul poate folosi această comandă.
Id-ul este folosit diferit. În cmd_ access (), prin id, nivelul de acces al acestui utilizator fluid este verificat și nimeni altcineva. Sper că este ușor de înțeles.
Următorul rând de cod: client_print (0, print_center, "Hello world.")
.* apoi linia de cod care este responsabil pentru imprimarea mesajului de la client. cu lient_ print este numele unei funcții care necesită trei parametri (poate fi necesar mai mult, dar despre asta în alte lecții). Primul parametru (0) este responsabil pentru cel căruia îi va fi afișată această comandă. Dacă introduceți numărul de identificare al playerului, mesajul va fi afișat pentru el și pentru dvs. În acest caz, acesta va fi afișat pentru toți cei prezenți pe server (live sau morți). Ie când trebuie să faceți ceva cu toată lumea sau să spuneți tuturor câte ceva trebuie să utilizați. Al doilea parametru specifică unde să se afișeze mesajul. Puteți pune un mesaj în zona de chat - print_ chat sau notificare print_ - se afișează numai în consolă. Și al treilea parametru este mesajul în sine. Că în cadrul citatelor este mesajul care va fi imprimat pe ecran. Nu pierdeți citate.
Aproape am scris primul plugin. Rămâne doar să adăugați următoarea linie la funcția myfunction (): return PLUGIN_HANDLED
.* Este o linie importanta. 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
Deci, întotdeauna închideți funcția de revenire PLUGIN_HANDLED.
Pluginul nostru arată astfel: / *
Bună ziua lume, v0.1
Prin JGHG
* /
funcția publică (id, nivel, cid) <
dacă (! cmd_access (id, nivel, cid, 1)) <
returnați PLUGIN_HANDLED
>
public plugin_init () <
register_plugin ("Hello world", "0.1", "jghg")
register_clcmd ("amx_helloworld", "myfunction", ADMIN_VOTE, ".prints Hello world pentru toata lumea")
Toate ștecherul este gata. Compilați-l și asigurați-vă că nu există erori la compilare. Dacă în timpul compilării primiți un mesaj de avertizare 217: indentare liber, du-te la locul indicat și asigurați-vă că ar adânci ( „tab“ - amintiți-vă ...) a fost la fel peste tot în plugin.
Acum poți pune fișierul "helloworld". amx la dosarul amx \ plugins și înregistrați plugin-ul în amx \ config \ plugins. .ini. Adăugați linia helloworld. amx la sfârșitul listei de plugin-uri. Acum, porniți serverul. Dacă serverul rulează, puteți utiliza comanda de repornire din consola server. Împreună cu restabilirea cardului, pluginurile vor fi recalculate, iar noul plug-in adăugat va fi utilizat de AMX.
Acum intrați în joc și scrieți amx_ helloworld și asigurați-vă că totul este afișat corect. Asigurați-vă că atunci când tastați amx_ help, descrierea se potrivește cu ceea ce am folosit. Dacă plug-in-ul nu funcționează, introduceți pluginurile amx în consola server și asigurați-vă că pluginul este încărcat. Poate ați uitat să vă înscrieți ca administrator.