vlad11
Mesaje : 160 Data de inscriere : 30/10/2012 Varsta : 30 Localizare : Targoviste, Dambovita
| Subiect: Tutorial scripting [AMXX] hlds Mar Noi 27, 2012 6:40 am | |
| 1. INCLUDEREA FISIERELOR Includerea fisierelor se realizeaza prin 2 cai: Cod: #include
Cod: #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: #include
Daca pluginul contine si comenzi care pot fi folosite de admini , atunci va trebui sa includem si amxmisc: Cod: #include
2. CONSTANTE SIMBOLICE Definirea constantelor simbolice se face astfel: Cod: #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: #define COMUNITATE eXtreamCS
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: set_hudmessage(...) shoe_hudmessage
Vom vorbi acum despre set_hudmessage.Este alcatuit din: Cod: 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: 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: 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: 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: set_hudmessage(200, 255, 0, 0.04, 0.48, 0, 6.0, 12.0) show_hudmessage(id, "www.csgo.us/forum)
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 COMUNITATE cu valoarea eXtreamCS. Mai jos avem o linie de cod ce printeaza un mesaj in chat: Cod: client_print(0, print_chat, "Tutorial facut pentru comunitatea eXtreamCS!")
Acum vom face o modificare pentru a citi valoarea constantei: Cod: 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: #if CONDITIE SECTIUNE #endif
Pentru ca aceasta parte de cod sa fie valida , conditia trebuie definita.Uitati mai jos un exemplu: Cod: #define ARATA_COMUNITATEA 1 #define COMUNITATE eXtreamCS
#if ARATA_COMUNITATEA client_print(0, print_chat, "Tutorial facut pentru comunitatea %s!", COMUNITATE) #else client_print(0, print_chat, "Tutorial facut de KronoS") #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: //Tutorial facut pentru comunitatea eXtreamCS
Cod: /*Tutorial facut pentru comunitatea eXtreamCS*/
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
7. INREGISTRAREA PLUGINULUI Inregistrarea pluginului se foloseste pentru a printa informatii despre plugin(Numele pluginului , Versiune , Autor). Se face astfel: Cod: register_plugin("Numele pluginului", "Versiunea", "Autorul")
Acest cod poate fi folosit in: Cod: public plugin_init
Cod: public plugin_precache
De asemenea pot fi folosite si constantele simbolice: Cod: #define PLUGIN "Plugin eXtreamCS" #define VERSIUNE "1.0" #define AUTOR "KronoS"
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: public plugin_init() { register_clcmd("say comanda", "executa_comanda") register_clcmd("say_team comanda", "executa_comanda") register_clcmd("comanda", "executa_comanda") }
public executa_comanda(id) { client_print(id, print_chat, "Tutorial facut de KronoS") }
Cand un jucator tasteaza in chat , team_chat sau consola comanda , in chat va aparea mesajul: Cod: Tutorial facut de KronoS
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: register_concmd("amx_kill","kill_player",ADMIN_KICK,"- Omori jucatorul respectiv")
Acum facem un nou public numit kill_player: Cod: 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: 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: 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: #include #include
public_plugin_init() { register_concmd("amx_kill","kill_player",ADMIN_KICK,"- Omori jucatorul respectiv") }
public kill_player(id,level,cid) { if(!cmd_access(id,level,cid,2)) { client_print(id, console_print, "Nu ai acces la aceasta comanda") return PLUGIN_HANDLED } 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 } | |
|