-- Closed Thread
Results 1 to 3 of 3
  1. Tutorial scripting/plugin

    #1
    VIP RaZz0R's Avatar
    Member since
    Jan 2013
    Location
    Schiulesti, Prahova
    Posts
    2,750
    Mentioned
    2 Post(s)
    Achievements Visitor Messages Received 1 Total Posts 3 Total Posts 2 Total Posts 1 Days Since Last Visited 1 Days Registered 3 Days Registered 2 Days Registered 1
    Doneaza
    Sustine Comunitatea WarGods!
    Fii unul de-al nostru! Doneaza
    Doneaza in Cont Bancar
    Click aici pentru a face o Donatie

    Tutorial scripting/plugin

    Am cautat, am gasit, am facut acest tutorial cu scopul de a ii ajuta pe cei ce vor sa scripteze sau sa inteleaga bazele limbajului Pawn, mai ales ca sunt foarte putine tutoriale in limba romana.

    1. Informatii de baza
    • Pluginurile AmxModX sunt realizate folosind limbajul de programare Pawn (cunoscut ca si Small).Codul este scris intr-un editor de text (precum Notepad, Notepad++, AMXX Studio etc.) si salvat ca fisier cu extensia .sma (fisier sursa de plugin AmxModX).Acesta trebuie compilat pentru a se obtine un fisier cu extensia .amxx (pluginul in sine).
    • Programarea pluginurilor in limbajul Pawn este relativ usoara deoarece nu exista unele notiuni care se gasesc in limbajele de programare mai avansate.


    2. Compilarea unui plugin
    • Compilarea reprezinta procesul prin care codul sursa scris intr-un limbaj de programare (in cazul nostru Small sau Pawn) este tradus in cod obiect, ce poate fi apoi executat.
    • In cazul surselor de pluginuri amxmodx, compilarea se poate face online sau local (aceasta fiind metoda recomandata).Compilarea online se face accesand link-ul You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account! .Aici puteti posta codul in casuta de text special amenajata, precum si numele care doriti sa-l atribuiti fisierului, sau, puteti selecta sursa direct din calculator.Dupa apasarea butonului Compile va incepe compilarea pluginului, urmata de link-ul de descarcare al pluginului (cu extensia .amxx) sau de erori si avertismente in cazul in care sunt gasite greseli la nivelul codului.Compilarea locala se poate face daca aveti instalat modul AmxModX in calculator.Va duceti in folderul
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    si puneti acolo fisierul sursa (exemplu: plugin.sma), apoi trageti iconita acestuia peste fisierul compile.exe tinand apasat Click stanga.Astfel, o sa apara o consola ce o sa returneze erorile si avertismentele sau va informeaza ca a decurs cu succes compilarea.Pluginul compilat il gasiti in folderul
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!


    3. Notatii si vocabular in limbajul Pawn
    Vocabularul limbajului Pawn este format din simboluri de baza, clasificate in trei mari categorii:
    • literele alfabetului englez
    • cifre arabe: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    • simboluri speciale (operatori si delimitatori): . ; , : ? " ( ) [ ] { } < > ! | / _ # % & ^ + - * =

    Tot in categoria simbolurilor speciale se incadreaza si cuvintele rezervate, numite si cuvinte-cheie, care au un inteles bine stabilit si nu pot fi folosite de catre scripteri decat in contextul permis de catre sintaxa limbajului Pawn.Din lista cuvintelor-cheie fac parte urmatoarele: case, const, else, enum, float, for, if, return, sizeof, static, switch, while, public, iar lista poate continua.

    Scrierea unui plugin cu ajutorul limbajului Pawn este similara scrierii de fraze in limbaj natural.Se folosesc combinatii de cuvinte si separatori.Cuvintele pot fi:
    • simboluri speciale
    • identificatori obisnuiti sau predefiniti
    • constante
    Separatorii se incadreaza in una din urmatoarele categorii:
    • spatiu
    • comentariu
    • sfarsit de linie

    Identificatorii reprezinta modalitatea de denumire a constantelor, tipurilor de date, variabilelor si functiilor.Constantele reprezinta date ale caror valori nu se modifica pe parcursul rularii pluginului.Prin contrast, variabilele reprezinta date ale caror valori pot fi modificate.


    4. Structura unui plugin
    Un plugin AmxModX are, in principiu, urmatoarea structura:
    • Directive preprocesor/de includere
    • Definitii de variabile globale/constante
    • Definitii de functii

    Directivele preprocesor/de includere reprezinta primele linii dintr-un program.Prin aceste directive compilatorul este anuntat sa foloseasca anumite biblioteci care contin descrierea unor functii folosite in plugin.Sintaxa directivei de includere este:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!


    5. Includerea fisierelor/bibliotecilor
    Includerea fisierelor/bibliotecilor se realizeaza prin doua cai:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Folosind prima cale, fisierul este cautat in directorul standard (In cazul AMXX directorul standard este include).
    Folosind a doua cale, fisierul este cautat in directorul curent, apoi in cel standard (In cazul AMXX directorul curent este scripting).Aceasta forma
    Atunci cand facem un plugin AMXX, va trebui sa includem mereu biblioteca amxmodx:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Daca pluginul contine si comenzi pentru admini, atunci va trebui sa includem si biblioteca amxmisc:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!


    6. Comentarii
    Comentariile sunt foarte folositoare deoarece putem adauga explicatii in sursa.Acestea sunt eficiente mai ales in sursele mari, unde exista mari sanse sa va incurcati sau sa nu mai stiti ce anume face o linie de cod.Exista doua moduri prin care puteam sa declaram comentarii:

    //Tutorial pentru scripteri
    /*Tutorial pentru scripteri*/


    Daca doriti sa folositi prima forma, iar comentariul se intinde pe mai multe randuri, trebuie sa adaugati // in fata fiecarui rand de comentariu:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    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:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    ATENTIE: Comentariile din sursa nu sunt citite de catre compilator


    7. Variabile/Tipuri de variabile
    Variabilele sunt structuri simple folosite pentru a manipula informatii in plugin.Fiecarei variabile i se atribuie o locatie din memoria RAM (cu alte cuvinte, variabilele mananca memorie RAM), in care se stocheaza valoarea acesteia.Puteti sa va imaginati ca o variabila este o cutie in care puteti stoca un numar.

    Numele unei variabile trebuie sa contina cel mult 19 caractere si trebuie sa inceapa cu o litera.Poate sa contina simbolurile A-Z, a-z, 0-9 si _ (underscore/underline).Este important de stiut faptul ca numele variabilelor sunt case sensitive (sensibile la majuscula): var, Var, VAR, VaR sunt patru variabile diferite.
    Declararea variabilelor se face folosind sintaxa:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Daca ne gandim si la exemplul de mai sus cu cutia obtinem:

    Variabilele pot fi declarate la nivel global (in afara oricarei functii) sau local (in interiorul unei functii).
    Alocarea memoriei in cazul variabilelor globale este statica, adica memoria alocata acestora ramane ocupata atata timp cat pluginul ruleaza!Durata de viata a variabilelor globale este cea a intregului plugin.
    Exemplu in care o variabila este declarata la nivel global:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Diagrama:

    Alocarea memoriei pentru variabilele locale este automata, memoria alocata este ocupata doar in momentul executarii functiei in care se afla acestea (la sfarsitul executiei functiei, memoria alocata pentru variabilele locale este eliberata).
    Durata de viata a variabilelor locale este cea a functiei in care acestea sunt declarate.
    Exemplu in care o variabila este declarata la nivel local:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Diagrama:

    Limbajul Pawn are doar trei tipuri de date pentru declararea variabilelor.Tipul de variabila implicit este integer, adica numar intreg.

    Tipuri de variabile

    Integer

    Cel mai simplu tip de variabila in limbajul Pawn este integer, numar intreg.Pentru a declara o noua variabila de tip numar intreg, se foloseste operatorul new:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Puteti declara mai multe variabile pe un singur rand:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Float

    De asemenea, o variabila poate fi declarata ca fiind de tip float, ceea ce inseamna ca poate stoca numere cu zecimale (cu virgula).
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!
    Boolean

    Ultimul tip de variabila este boolean, care face ca o variabila sa aiba una din urmatoarele doua valori: false (fals) sau true (adevarat).
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!


    8. Optimizarea consumului de memorie al variabilelor
    Aceste lucruri sunt valabile si pentru vectori si siruri!
    Pentru ca un plugin sa consume cat mai putina memorie RAM, sunt recomandate:
    folosirea unui numar cat mai mic de variabile globale
    declararea cat mai exacta a numarului de pozitii (in cazul vectorilor si al sirurilor)(Exemplu: stocarea numelui unui jucator intr-o variabila poate ocupa maxim 32 de pozitii, de aceea variabila va fi declarata ca avand 32 de pozitii, si nu un alt numar mai mare decat valoarea recomandata)


    9. Vectori
    Un vector este un tip simplu de date agregate.Asta inseamna ca puteti stoca multiple valori intr-o singura variabila.Un vector are aceleasi reguli si tipuri ca si o variabila normala.Diferenta intre cele doua este ca primul contine valori multiple.Un vector se defineste cu paranteze drepte, intre care se afla numarul de valori pe care acesta poate sa-l contina.
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Puteti stoca valori in oricare din cele 32 de pozitii ale vectorului.Pozitiile sunt numerotate de la 0 la n-1 (in cazul de mai sus 32-1, adica 31).Orice pozitie are implicit valoarea 0.
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!


    10. Siruri
    Cei care au experienta probabil au remarcat ca lipseste un tip de date important, caracterele.Acestea se numesc siruri si in limbajul Pawn sunt, tehnic vorbind, numere.Un sir este un vector de numere care sunt traduse in simboluri ASCII (caractere).
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!


    11. Operatori si expresii
    Limbajul Pawn permite folosirea unui numar mare de operatori.Un operator se reprezinta cu ajutorul unuia sau a doua caractere speciale alaturate, numite operanzi (exemple: = sau != etc.).

    Tipuri de operatori:
    • unari - folosesc un singur operand
    • binari - folosesc doi operanzi
    O expresie este o combinatie de operanzi si operatori scrisa astfel incat, respectand regulile limbajului de programare, sa conduca la calcularea unei valori unice.La fel ca si in matematica, ordinea efectuarii operatiilor in cadrul unei expresii este stabilita de prioritatea operatorilor, care poate fi modificata prin utilizarea parantezelor rotunde pe oricat de multe niveluri este necesar.Spre deosebire de matematica, nu este permisa folosirea in expresii a parantezelor drepte sau a acoladelor pentru modificarea ordinii de efectuare a operatiilor.

    Atunci cand intr-o expresie apar operatori cu aceeasi prioritate, ordinea de efectuare a operatiilor este impusa de ordinea de asociere a operatorilor.In general, aceasta este de la stanga la dreapta dar exista si doua exceptii, operatorii unari si operatorii de atribuire, in cazul carora ordinea de asociere este de la dreapta la stanga.


    12. Constante simbolice
    Definirea constantelor simbolice se face astfel:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Acest lucru face ca in toata sursa, constanta definita mai sus sa fie inlocuita cu valoarea atribuita (exceptie comentariile).
    Scopul acestora este de a usura editarea surselor.
    Exemplu:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!


    13. Functii/Declararea unei functii
    O functie reprezinta un set de instructiuni apelabil din alte parti ale pluginului (apelarea unei functii inseamna executarea acesteia).Functiile ajuta la structurarea pluginului in unitati logice.O functie este alcatuita din antet (ce cuprinde tipul functiei, numele acesteia precum si parametrii (daca exista)) si corp (ce cuprinde instructiunile functiei).Antetul arata astfel:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    In cazul pluginurilor AMXX, functiile sunt adesea de tipul public
    Parametrii se separa cu virgule.
    Exemplu de functie fara parametrii:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Exemplu de functie cu parametrii:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!


    14. Functia plugin_init( )
    Functia plugin_init( ) reprezinta functia principala a pluginului, in care se inregistreaza pluginul, comenzile, eventurile folosite etc.Ea este apelata imediat dupa schimbarea hartii.
    Functia este de tip public, fara parametrii si se declara astfel:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!


    15. Inregistrarea pluginului
    Inregistrarea pluginului se face cu scopul de a identifica usor pluginul atunci cand tastam amxx plugins in consola serverului.De asemenea, aceasta ofera si informatii precum numele pluginului, versiunea, precum si autorul acestuia.
    Inregistrarea pluginurilor se face prin intermediul native-ului register_plugin( ... )
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Exemplu:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Pluginurile pot fi inregistrate in oricare din urmatoarele functii:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Exemplu:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    sau
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!

    Puteti folosi si constante simbolice:
    AMXX Code:
    You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!



    ================================================

    Surse/Post-scriptum
    • You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!
    • Ps:Este posibil ca tutorialul sa sufere unele modificari
    Autori/contribuabili
    Autor original: KronoS # GG
    O parte din material este:
    • preluat si tradus de pe You have to register to be able to see this link. Register HERE! If you are already a member please log in! If you still you are not able to see the link you need to activate your account or an administrator need to activate your account!
    • adaptat dupa Daniela Saru
    Last edited by RaZz0R; 14-03-2015 at 11:09 AM.
    Pentru probleme pe serverele oficiale ma gasiti pe STEAM sau Facebook

    **************************************************



    **************************************************

    Ce cautam:
    • scripteri - cs 1.6 / css (csgo) / samp / minecraft / metin2
    • bloggeri & posteri
    • designeri

    Ce oferim:
    • grad in comunitate in functie de categoria aleasa (Programator, Blogger/Promovare/Stiri/Echipa Tehnica/Helper, Designer)
    • grad de Moderator pe sectiunea aleasa
    • alte beneficii pentru seriozitate si efortul depus (de exemplu: servere de Counter-Strike 1.6 sau SAMP gratuite)
    Thanks r3d69 a dat Thanks acetui post
    Like r3d69, DarkRed, Alex`, ADRI, F0rS3ti a dat Like acetui post

  2. Tutorial scripting/plugin

    #2
    Banned DarkRed's Avatar
    Member since
    Dec 2013
    Location
    Pitesti
    Posts
    728
    Last username
    Justice01 TITAN Tetrahidrocanabinol
    Mentioned
    0 Post(s)
    Achievements Total Posts 2 Total Posts 1 Days Since Last Visited 2 Days Since Last Visited 1 Days Registered 3 Days Registered 2 Days Registered 1 Threads 2
    Pot zice ca acest tutorial este singurul din care am inteles ceva . Felicitari si multumesc .
    Este foarte bine structurat .

  3. Tutorial scripting/plugin

    #3
    VIP ~TraNda~'s Avatar
    Member since
    Feb 2014
    Location
    WarGods
    Posts
    12,099
    Last username
    LiOn. ~JoK3r ~
    Blog Entries
    4
    Mentioned
    95 Post(s)
    Achievements Days Registered 4 Mentions Received 2 Mentions Received 1 Mentions Given 4 Mentions Given 3 Mentions Given 2 Mentions Given 1 Threads Rating Received 1
    Doneaza
    Sustine Comunitatea WarGods!
    Fii unul de-al nostru! Doneaza
    Doneaza in Cont Bancar
    Click aici pentru a face o Donatie

    Pentru o aprofundare mai amanuntita cititi
    TUTORIALELE
    facute de AsuStar!

    Last edited by ~TraNda~; 16-11-2015 at 10:10 PM.
    -------------

    TraNda - WarGods | R.R.M - AngeL - LiOn. - pichacku - Jok3r - UnicA

    P A C E

    DISCORD: unknown.cfg

    Thanks lAsuStarl a dat Thanks acetui post
    Like lAsuStarl a dat Like acetui post

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Partners
Humble Monthly Bundle
Voucher PC-Garage