Sari la conținut

Postări Recomandate

Postat (editat)

Am creat acest ghid pentru a ajuta oamenii care nu stiu cum se creeaza un "server" si care nu stiu notiunile de baza.Acest ghid are urmatoarele "capitole" (daca le pot numi asa):

  • Ce este PAWN?
  • Ce este PAWNO?
  • Ce este functia?
  • Ce este "callback"-ul?
  • Cum pot defini ceva?
  • Ce sunt "includerile"?
  • Cum folosesc un procesor de comenzi?
  • Cum pot rezolva erorile primite la compilare?

1) Ce este PAWN?
PAWN este un limbaj de programare facut dintr-un amestec de limbaje de programare deja cunoscute.PAWN este utilizat de mai multe jocuri, inclusiv SA:MP. El are functii si "callback"-uri ca orice alt limbaj pe programare.

2) Ce este PAWNO?
PAWNO este programul cu care editezi/creezi un script (folosind un fisier sursa).Acesta la randul lui se foloseste de pawncc.exe care functioneaza ca un compilator pentru PAWNO si il ajuta sa gaseasca greselile (erorile/avertizementele) si care creeaza fisierul .amx (scriptul compilat).Fiserul compilat este folosit de samp-server.exe (fisierul .pwn este sursa).Acum ca am spus toate astea, presupun ca te intrebi de unde poti descarca editorul.Pai, raspunsul este foarte usor, PAWNO poate fi gasit in pachetul cu "

This is the hidden content, please
"-ul de baza.

3) Ce este functia?
Functia face parte din "scripting" si spune scriptului ce sa faca si in ce "
callback" sa faca, iar un exemplu potrivit ar fi:

SendClientMessage(playerid, /* CULOARE */, "UltraPhase"); // O functie obisnuita.



Codul scris mai sus trimite un mesaj jucatorului respectiv cu o culoare aleasa de tine (mesajul este "UltraPhase").Ei bine, trebuie sa pui textul intre " ".Acele ghilimele inseamna "arie" in limbajul de programare (pe engleza se numeste "string").Sa dau un exemplu pentru a intelege mai bine acest lucru (in acest exemplu, voi adauga si "callback"-ul OnPlayerConnect) si ar trebui sa arate cam asa:

public OnPlayerConnect(playerid)

{
SendClientMessage(playerid, -1, "Te-ai conectat pe UltraPhase."); // Asta inseamna ca atunci cand un jucator se conecteaza, ii va aparea mesajul "Te-ai conectat pe UltraPhase.", doar lui.
return 1;
}



Ca sa facem acest mesaj "public" (sa apara tuturor jucatorilor) facem in felul urmator:

public OnPlayerConnect(playerid)
{
SendClientMessageToAll(-1, "Un jucator tocmai s-a conectat pe UltraPhase RPG Server."); // Asta inseamna ca atunci cand un jucator se conecteaza, toti ceilalti jucatori vor primi un mesaj cum ca cineva sa conectat.
return 1;
}


 

A-ti observat ca nu am scris "playerid" la parametrii? Ghiciti de ce.Deoarece trimitem mesajul tuturor jucatorilor, nu doar unei persoane specificate.Pentru a vedea mai multe functii, accesati aceasta pagina.
 
4) Ce este "callback"-ul?
"Callback"-ul mai este numit si "scheletele scripting"-ului si poate fi inteles cu cateva cunostinte in limba engleza asa ca nu o sa spun prea multe despre el (cum am mai spus, sunt foarte usor de inteles deoarece numele lor contine o parte din scopul acestora).Cum ar fi:


OnPlayerConnect // Un jucator se conecteaza.

OnPlayerDisconnect // Un jucator se deconecteaza.


OnPlayerSpawn // Un jucator se genereaza.


OnPlayerDeath // Un jucator moare.


// s.a.m.d



// Toate aceste Spoilere De mai sus(de la 4) se pun una sub alta .. pe mine nu m-a lasat sa le pun pe toate intr-un spoiler
 

Pentru a citi mai multe despre "callback"-uri si despre parametrii lor, accesati aceasta pagina.Dar, revenind la subiect, mai sunt si "callback"-uri importante cum ar fi main() sau OnGameModeInit.Acestea ajuta la diferentierea scriptului ("filterscript") de modul de joc ("gamemode") iar main() are un rol foarte important, deoarece trebuie folosit neaparat la crearea unui mod de joc (ca, consola sa functioneze) iar OnGameModeIniteste pentru obiecte, "pickup"-uri, vehicule, etc.
 
5) Cum pot defini ceva?
Pentru a defini ceva trebuie folosit #define.Ca un exemplu, voi defini culoare COLOR_RED si va arata cam asa:

#define COLOR_RED 0xA10000AA



#define este o directiva a compilatorului (pawncc.exe) care ne ajuta la definirea lucrurilor pe care vrem sa le facem.Deci, daca vreau sa definesc COLOR_RED, scriu COLOR_RED si 0xA10000AA (codul pentru culoarea rosie, in PAWNO) iar daca as vrea sa definesc culoarea COLOR_YELLOW va arata cam asa:

#define COLOR_YELLOW 0xE0E377AA


 

6) Ce sunt "include-urile"?

 

Pai, de fiecare data (la inceputul fiecarui script) trebuie sa aveti linia asta:

#include <a_samp> // Include toate functiile si "callback"-urile de baza.



Deci, cu cat mai multe "includeri" aveti in script, cu atat de multe functii aveti de folosit dar nu includeti fisiere aiurea doar pentru a avea mai multe functii, adaugati-le doar pe cele de care aveti nevoie. Sintaxa pentru a include ceva este:

#include </* NUME */>



Toate fisierele care pot fi folosite pe post de "includeri" se gasesc in pawno/include sub extensia .inc.

 
 
7) Cum folosesc un procesor de comenzi?
 
Librariile compilatorului dispun de o functie care compara doua arii, aceasta fiind strcmp iar o comanda facuta cu functia asta ar arata cam asa:

public OnPlayerCommandText(playerid, cmdtext[]) // "Callback"-ul folosit pentru procesarea comenzii.

{ // Acolda de deschidere.
if(strcmp("/scripting", cmdtext, true, 10) == 0) // Verifica daca un jucator a scris "/scripting".
{ // Daca jucatorul a scris asta, proceseaza urmatoarele functii:
SendClientMessage(playerid, COLOR_RED, "Functioneaza."); // Trimite mesajul respectiv.
return 1; // Reintoarce valoarea 1 ("true").
} // Acolada de inchidere.
return 0; // Reintoarce valoarea 0 ("false") deoarece am reintors deja valoarea valida.
} // Punem capat acestui "callback".



O comanda facuta cu acest procesor de comenzi ar arata cam asa:

CMD:scripting(playerid, params[]) // Comanda creata.

{ // Acolda de deschidere.
SendClientMessage(playerid, COLOR_RED, "Functioneaza."); //Trimite mesajul respectiv.
return 1; // Reintoarce valoarea 1 ("true").
}// Acolada de inchidere.



8) Reparare Erori / Advertismente UltraPhase ★ Gaming Revolution

Editat de »ζ͜͡ЯaulDєиis«
Postat (editat)

Nu toate afirmatiile sunt corecte :(

O sa editez eu postul maine..

Editat de WahmonOfficial
Imi vine o ruda din Italia si trebuie sa o astept la aeroport..
Postat

Nu toate afirmatiile sunt corecte :(

O sa editez eu postul maine..

Postat

Nu toate afirmatiile sunt corecte :(

O sa editez eu postul maine..

Ehh .. nu sunt cel mai bun scripter din lume (sa zic asa) mai dau si eu rori unde .. si unde :)

 

 

 

Nu toate afirmatiile sunt corecte :(

O sa editez eu postul maine..

 

Sa inteleg ca ai postat pentru +1 ? :-/

Ai grija data viitoare !

  • 6 luni mai târziu...
[[Template forums/front/topics/postContainer is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]
  • 2 săptămâni mai târziu...
Postat

Editez eu sa vad daca ai cateva greseli :)

  • 2 săptămâni mai târziu...
Postat

Editez eu sa vad daca ai cateva greseli :)

Ehh , posibil . In fine , mz

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea noastră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.
×
×
  • Creează nouă...