Mesaje : 25
| Subiect: amxx. scripting Lun Mai 05, 2014 5:56 pm |
|
| Un mic ajutor pentru "invataceii" de scripting pe baza modului amxx. 1. INCLUDEREA FISIERELOR Includerea fisierelor se realizeaza prin 2 cai: Cod: [Selectează] #include
Cod: [Selectează] #include "fisierul"
Folosind prima cale , fisierul este cautat in directoarele standard(In cazul AMXX directorul standard este include). Folosind a doua cale , fisierul este cautat in directorul curent , apoi in cele standard(In cazul AMXX directorul curent este scripting). Aceasta forma Atunci cand facem un plugin AMXX , va trebui sa includem mereu amxmodx:
Cod: [Selectează] #include
Daca pluginul contine si comenzi care pot fi folosite de admini , atunci va trebui sa includem si amxmisc:
Cod: [Selectează] #include
2. CONSTANTE SIMBOLICE Definirea constantelor simbolice se face astfel:
Cod: [Selectează] #define NUMELE_CONSTANTEI VALOAREA_CONSTANTEI
Acest lucru face ca in toata sursa , NUMELE_CONSTANTEI sa fie inlocuit cu VALOAREA_CONSTANTEI(exceptie comentariile). Scopul acestora este de a usura editarea surselor. Exemplu:
Cod: [Selectează] #define FORUM [Trebuie sa fiti inscris si conectat pentru a vedea acest link]
3. PRINTAREA MESAJELOR Exista patru tipuri de mesaje: mesaje hud , mesaje in chat , mesaje in consola si mesaje centrate.
3.1. MESAJE HUD Printarea mesajelor hud se face prin intermediul:
Cod: [Selectează] set_hudmessage(...) show_hudmessage
Vom vorbi acum despre set_hudmessage.Este alcatuit din:
Cod: [Selectează] set_hudmessage ( red, green, blue, Float:x, Float:y, effects, Float:fxtime, Float:holdtime, Float:fadeintime, Float:fadeouttime, channel )
red , green , blue reprezinta culoarea mesajului. Float:x , Float:y reprezinta pozitia mesajului. effects reprezinta efectele mesajului:
Cod: [Selectează] 0 = fade in/fade out 1 = flickery credits 2 = write out (training room)
Float:fxtime , Float:fadeintime , Float:fadeouttime reprezinta timpii la care efectele se schimba Float:holdtime reprezinta cat timp apare mesajul pe ecran. channel reprezinta canalul pe care este trimis mesajul.Exista 4 canale per jucator. Uitati aici un exemplu: Cod: [Selectează] set_hudmessage ( 200, 100, 0, -1.0, 0.35, 0, 6.0, 12.0, 0.1, 0.2, 4 )
Dupa ce am stabilit setarile mesajului , este timpul sa il printam cu show_hudmessage:
Cod: [Selectează] show_hudmessage ( index, message[], ... )
index reprezinta jucatorul cui i se va afisa mesajul [ 0 - tuturor ] [ id - doar acelui jucator care a actionat comanda] message[] reprezinta mesajul ce va fi afisat Exemplu: Cod: [Selectează] set_hudmessage(200, 255, 0, 0.04, 0.48, 0, 6.0, 12.0) show_hudmessage(id, "[Trebuie sa fiti inscris si conectat pentru a vedea acest link]
4. FOLOSIREA CONSTANTELOR SIMBOLICE Pentru ca NUMELE_CONSTANTEI sa ia valoarea VALOAREA_CONSTANTEI trebuie sa efectuam niste modificari in sursa. Am definit mai sus o constanta numita FORUM cu valoarea [Trebuie sa fiti inscris si conectat pentru a vedea acest link] Mai jos avem o linie de cod ce printeaza un mesaj in chat:
Cod: [Selectează] client_print(0, print_chat, "Tutorial facut pentru comunitatea Lan-Mania!")
Acum vom face o modificare pentru a citi valoarea constantei:
Cod: [Selectează] client_print(0, print_chat, "Tutorial facut pentru comunitatea %s!", COMUNITATE)
5. COMPILAREA CU CONDITII Compilarea cu conditii permite includerea/excluderea unor portiuni din sursa in functie de conditiile puse. Aceasta se face astfel:
Cod: [Selectează] #if CONDITIE SECTIUNE #endif
Pentru ca aceasta parte de cod sa fie valida , conditia trebuie definita.Uitati mai jos un exemplu:
Cod: [Selectează] #define ARATA_FORUM 1 #define FORUM [Trebuie sa fiti inscris si conectat pentru a vedea acest link]
Cod: [Selectează] #if FORUM client_print(0, print_chat, "Tutorial facut pentru comunitatea %s!", FORUM) #else client_print(0, print_chat, "Tutorial facut de StoleA") #endif
6. COMENTARII IN SURSA Comentariile din sursa sunt foarte folositoare deoarece putem explica ce am facut prin niste linii de cod.Exista doua moduri prin care puteam sa facem comentarii: Cod: [Selectează] //Tutorial facut pentru comunitatea Lan-Mania.Com /*Tutorial facut pentru comunitatea Lan-Mania.Com*/
Daca doriti sa folositi prima forma , iar comentariul se intinde pe mai multe randuri , trebuie sa adaugati // in fata fiecarui rand de comentariu. A doua forma este recomandata deoarece la inceputul comentariului se pune /* iar la sfarsit se pune */ Avantajul este ca nu mai trebuie sa puneti simbolurile in fata fiecarui rand! ATENTIE: Comentariile din sursa nu sunt compilate, nu sunt loate in considerare
7. INREGISTRAREA PLUGINULUI Inregistrarea pluginului se foloseste pentru a printa informatii despre plugin(Numele pluginului , Versiune , Autor). Se face astfel:
Cod: [Selectează] register_plugin("Numele pluginului", "Versiunea", "Autorul")
Acest cod poate fi folosit in:
Cod: [Selectează] public plugin_init
Cod: [Selectează] public plugin_precache
De asemenea pot fi folosite si constantele simbolice:
Cod: [Selectează] #define PLUGIN "Plugin Lan-Mania" #define VERSIUNE "0.1" #define AUTOR "Lan-Mania Suport"
public plugin_init() { register_plugin( PLUGIN, VERSIUNE, AUTOR) }
8. INREGISTRAREA COMENZILOR Inregistrarea comenzilor se foloseste pentru a executa anumite linii de cod pe jucatorii care folosesc acele comenzi. De exemplu:
Cod: [Selectează] public plugin_init() { register_clcmd("say comanda", "executa_comanda") register_clcmd("say_team comanda", "executa_comanda") register_clcmd("comanda", "executa_comanda") }
Cod: [Selectează] public executa_comanda(id) { client_print(id, print_chat, "Tutorial facut de GodLikE") }
Cand un jucator tasteaza in chat , team_chat sau consola comanda , in chat va aparea mesajul:
Tutorial facut de GodLikE
9. INREGISTRAREA COMENZILOR DE ADMIN Inregistrarea comenzilor de admin se foloseste pentru a executa anumite linii de cod pe jucatorii pe care au fost folosite acele comenzi.Vom inregistra comanda amx_kill care omoara jucatorul pe care este folosita comanda. In public plugin_init adaugam:
Cod: [Selectează] register_concmd("amx_kill","kill_player",ADMIN_KICK,"- Omori jucatorul respectiv")
Acum facem un nou public numit kill_player:
Cod: [Selectează] public kill_player(id,level,cid) { }
In publicul kill_player , verificam daca jucatorul este admin. Daca nu este , comanda nu este executata si apare un mesaj:
Cod: [Selectează] if(!cmd_access(id,level,cid,2)) { client_print(id, console_print, "Nu ai acces la aceasta comanda") return PLUGIN_HANDLED }
Dupa aceste linii , adaugam: Cod: [Selectează] new arg[32] read_argv(1,arg,31) new player = cmd_target(id,arg,7) if(!is_user_alive(id)) /*Verifica daca jucatorul este in viata*/ return PLUGIN_HANDLED client_cmd(player,"kill") /*Omoara jucatorul*/ return PLUGIN_HANDLED In final va arata asa:
Cod: [Selectează] #include #include public_plugin_init() { register_concmd("amx_kill","kill_player",ADMIN_KICK,"- Omori jucatorul |
|