Important: Acesta este un tutorial mai vechi facut de mine pe alta comunitate, s-ar putea s-am cateva greseli de Gramatica sau de cod,v-as ruga sa ma intelege-ti, am sa-i fac update cand am sa am timp, acum doar l-am postat ca sa fie, o sa-i fac update si-o sa-i mai adaug o gramada de chestii, multumesc pentru intelegere.
Ce n-ati inteles sau daca vreti sa mai adaug ceva, va rog sa lasati reply.
Ce o sa contina tutorialul:
- Comentariii ( comentariile sunt pentru a ajuta scripterii sa inteleaga ce face acea parte a codului )
- Variabile (variabilele sunt pentru a stocka informatii )
- Functii ( functii fac ce le faci tu sa faca )
- Native ( creiezi functii care foloseste pentru pluginul tau, ex: set_user_xp )
- Structuri ( cum sati faci propriul tau plugin )
- Trucuri pentru a incepe programarea ( niste informatii mici care te vor ajuta sa incep programarea in pawn )
- linkul-uri ( linkuri cu alte tutoriale folositoare )
Ce este un comentariu ?
Un comentariu este o linie care nu este citita de compilerul amxmodx
Este creata pentru ai da o informatie anume celu care deschide sursa
exemple:
Code: Select all
// Aceasta linie e un comment
Un comentariu bun:
Code: Select all
// Acesta e un comment
Code: Select all
/ Acesta nu e un comment
A 2a metoda de a crea comentarii, vomo folosi "/*
Aceasta metoda deschide un com
/*
Iar aceasta o inchide:
*/
Exemplu:
Code: Select all
/*
Tot ce citesti inauntrul acestui
code, este un comentariu
Nu va fi citit de compiler
Este pentru a da o informatie, celui care a deschis sursa
*/
Deci tehnic, gandestete ca o variabila este o cutie goala unde tu poti stoca orice informatie vrei.
Pentru a crea o variabila vom folosi urmatorul cod:
Code: Select all
new NumeleVariabilei;
Daca creiem o variabila cu valuarea 3, exemplu:
Code: Select all
new Flanco = 3;
Nota: cand faci o variabila noua , daca nu o definesti, valuarea ei default este "0".
poti sai schimbi valuarea default( adica 0 ) in urmatoarele moduri:
1) La creiere:
Code: Select all
new Andrei = 5;
Code: Select all
new Andrei;
Andrei = 5;
Code: Select all
new Andrei; Andrei = 5;
Code: Select all
new Andrei;
new Alex = 3;
new Alin = 1;
Andrei = Alex + Alin;
Float
Alte tipuri de variabile (care folosesc numere) ar mai putea fi "float", aceasta variabila este exact ca si variabila normala integer ( adica cea normala cu new numevar.. etc)
Exista doar 2 diferente
- Float-urile sunt ca si variabilele normale de tip integer, doar ca sa sunt numere cu punct intre ele( ca cele de la matematica 2.5 )
Exemple:
Cum le creiem:100.3
999.0
2.45
56.942
Code: Select all
new float:NumeVariabila = 5.0;
Deci, e ca si atunci cand facem o variabila normala doar ca punem "float:" in fata ->
Code: Select all
new float:Andrei = 99.99;"
Ex. creare variabila cu valuare default:
Code: Select all
new float:Andrei;
Boolean
boolean este tot un tip de variabila doar ca mai special, acest tip de variabila nu este definit cu numere, este definit cu 2 valuori, adica "True" ( adevarat ) sau "False" ( fals ).
Cum o creiem ?
Code: Select all
new bool:Variabile;
Code: Select all
Variabile = true
false / ture:
Code: Select all
new bool:Andrei;
new bool:Alin;
Andrei = false;
Andrei = true;
String
Sa ne amintim despre variabile, string este tot un tip de variabila doar ca nu puate retine decat cuvinte.
exemplu :
Code: Select all
new szAndrei = "Numele meu e Andrei";
Code: Select all
new Andre[ 3 ];
Andrei [ 0 ] = "a";
Andrei [ 1 ] = "b";
Andrei [ 2 ] = "c";
Functii
gandeste ca ai in casa niste masinarii, trebuie sa le activezi ca sa faca ceva.
Pentru a activa o functie:
Code: Select all
NumeleFunctiei()
Unele functii nu sunt goale au parametrii:
Code: Select all
NumeleFunctiei ( id )
Unele functii returneaza o valuare
Unele nu
public NumeFunctie( id ) - face legatura intre comenzi, cvar-uri, eventuri, etc
stock NumeFunctie ( id ) - NumeFunctie( id ) va face ceva( ce iai zi tu sa faca )
NumeFunctie( id ) - Este o functie privata, care poate fi folosita inauntrul publicurilor.
native NumeFunctie ( id ) - exact ca stock doar ca face legatura intre un plugin exterior
forward NumeFunctie ( id ) - un fel de event-fals care face legatura cu pluginuri exterioare
Native
Nativele sunt masinarii care nu sunt in casa ta, gandeste ca sunt din casa vecinului si le folosesti ( in timp ce functiile sunt in casa ta ).
Nativele pot avea mai multi parametrii
NumeleNativei( parametru1, parametru2, parametru3, etc... )
parametru 1 de exemplu poate fi ID-ul.
- Pot avea parametrii
- Pot returna valuori
- Nu pot sa le faci si sa le folosesti in acelasi cod ( trebuie creat din alt plugin si folosit in alt plugin ).
Deci, tehnic forwad-ul e un EVENT, creat din pluginuri exterioare.
sa va dau ca exemplu plugin_init() , este un event creat care este chemat atunci cand serverul se deschide.
O sa va dau un tutorial de creare a forwad-ului in Linkuri.
Structuri
Toate pluginurile au o structura pentru a fi creat, nu poti pune pur si simplu coduri la intamplare si sa speri sati iasa ceva, trebuie sa iei totul logic.
De exemplu intro casa nu poti pune usor sub pat si sa te astepti ca lumea sa iasa/intre de acolo.
Orindea creierii structurilor:
- Facem comentariile
- Includem librarile necesare
- Definim informatii, etc
- Facem variabilele globale(daca avem nevoie de ele)
- Inregistram informatiile( plugin_init)
- Functii si Eventuri
- Aranjarea codurilor
- Optimizarea daca gasim
- Compilare
- Testare
- Optimizare iar
- Etc.
Inauntru vom pune o descriere a pluginui, cvar,credite, etc
momentan nu vreau sa fac un plugin doar va dau niste exemple
Code: Select all
/*
Aceste este pluginul meu
ChangeLog:
Credite:
Cvar-uri:
Comenzi:
Instalare
*/
b) Librarile noastre pot contine o larga gama de functii, eventuri si multe altele , e ca o bilbioteca de functii, exemple 2 librarii la intamplare:
Code: Select all
#include <amxmodx>
#include <amxmisc>
c) definim informatiile, adica vom folosi define
Code: Select all
#define NUME_PROIECT "Numele proiectului"
#define VERSIUNE_PROIECT "1.0"
#define AUTHOR_PROIECT "Swapped`s"
c) Cateodata in pluginuri ne trebuie sa facem variabile in afara functiilor, asta inseamna o variabila globala, o variabila in afara functiei.
variabilele globale sunt speciale pentru ca poti sa adaugi informatii noi dintro functie si sa le afisezi in alta.
d) In plugin_init( eventul care este chemat cand deschizi serverul ) este cel mai bun loc pentru a inregistra cvar-uri, comenzi, eventuri si multe altele
Code: Select all
public plugin_init( )
{
register_plugin( NUME_PROIECT, VERSIUNE_PROIECT, AUTHOR_PROIECT );
// Facem la intaimplare o comanda in chat ( /test )
// NumePublic va fi chemat de fiecare data cand jucatorul tasteaza /test.
register_clcmd( "say /test", "NumePublic" );
}
Code: Select all
public NumePublic( id )
{
// afisam un mesaj la intaimplare:
client_print(id,print_chat,"Salut");
}
Code: Select all
public NumePublic( id )
{
// cod urat:
client_print(id,print_chat,"Salut");
}
- =>
Code: Select all
public NumePublic( id )
{
// Tocmai am lasat spatiu intre parametrii .
client_print( id, print_chat, "Salut" );
}
COMPILARE aici: www.amxmodx.org/webcompiler.cgi
il testati si optimizati sa vedeti daca nu mere, etc.
Trucuri
Voi vorbi putin despre eficienta si altele, dar puteti gasi mult mai multe lucruri explicate in alte tutoriale asta am scris asa sa vada incepatorii
Code: Select all
if( !is_user_alive( id ) )
Code: Select all
new alive = is_user_alive( id )
if( !alive )
{
// do something
}
Code: Select all
string_name[0] = '^0'
- format
- formatex
- log_amx
- client_print
- %d si %i - Pentru a afisa un integer ( %d - Decimal, %i - Integer )
%f - Pentru a afisa un Float ( %f - Float )
%s - Pentru a afisa un String ( %s - String )
Code: Select all
new numar = 5;
client_print( id, print_chat, " Numarul meu favorit este %i ", numar );
Link-uri:
- Cereri Tutoriale - Locul unde poti face cerere pentru un tutorial.
Operatori si semne - Operatorii limbajului pawn.
[CREDIT's: Emp, Hawk, Connor, Hamlet, mie ca l-am tradus si-am mai adaugat :P si altii care se simt ].