Forum profesionist despre scenariu de amanet

învățarea pawno pentru începători!

Începem prima lecție. Sampingul se face în Pawno. Pawno este un program care compilează pwn (un fișier modificat pentru un scenariu viitor) în amx (scriptul însuși) și pentru a schimba primul. După ce am deschis un scenariu, vedem o mulțime de inscripții și cifre. Vom analiza ce înseamnă ei. Deschideți nou.pwn. Vom începe să dezasamblat cele mai simple.







publice OnGameModeInit ()
print ("GameModeInit ()");
SetGameModeText ("Blank Script");
AddPlayerClass (0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0); retur 1;
>

Noi facem un teleporter, în general este simplu, dar poate cineva să vină la îndemână.

// Comandă: / Teleport
dacă (strcmp (cmdtext, "/ Teleport", adevărat) == 0)
nou vehicul = GetPlayerVehicle eID (playerid);
stat nou = GetPlayerState (playerid);
dacă (IsPlayerInAnyVe hicle (playerid) Stare == PLAYER_STATE_DR IVER)
retur SetVehiclePos (vehicul, Coordonate X, Y.Z),
GameTextForPlay er (playerid, "

Mesajul dvs. după teleportare ", 5000, 5);
>
SetPlayerPos (playerid, Coordonate X, Y.Z);
GameTextForPlay er (playerid, "

Mesajul tău după teleportare! ", 5000, 5);
retur 1;
>
Și am pus toate acestea în public:
public Text OnPlayerCommand (playerid, cmdtext [])

Vom organiza transportul și respawns.

Acum începem să învățăm coordonatele, unde să ajungem unde să punem. În directorul San-Andreas'a căutați un fișier samp_debug.exe (este de dorit să faceți o scurtătură și o puneți în dosarul server) și faceți clic pe butonul Lansare debug. Jocul va începe să se încarce și te vei găsi în Los Santos. În acest mod, puteți găsi coordonatele de care aveți nevoie. Utilizați comenzile / vsel pentru a selecta un transport. / salvați <примечание> conservarea coordonatelor. Stați acolo unde trebuie să stocați coordonatele și să utilizați comanda; F11 și F12 defilați înainte și înapoi. Apoi, găsim fișierul salvat. txt în directorul San Andreas'a (de asemenea, de dorit să faceți o comandă rapidă la dosarul cu serverul) și uitați-vă acolo:
Dacă ați păstrat coordonatele pe jos, ar trebui să aveți:
AddPlayerClass (0.1496.7302.1438.9197,10.8281,115.1 985.0.0.0.0.0.0); // spawn
Dacă în mașină:
AddStaticVehicle (494,1505,4323,1450,9718,10.7365,3 57.1130,36.13); // hotring Apoi, puneți coordonatele în scriptul nostru:
Căutați
publice OnGameModeInit ()
print ("GameModeInit ()");
SetGameModeText ("Blank Script");
AddPlayerClass (0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0);
retur 1;
>
și a redeschis
publice OnGameModeInit ()
print ("GameModeInit ()");
SetGameModeText ("Blank Script");
AddPlayerClass (0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0);
retur 1;
>
Atenție puneți coordonatele din pozițiile salvate. txt!

În primul rând:
public SetPlayerToTeam Culoare (playerid)
Acolo vedem liniile:
dacă (IsPlayerConnect ed (playerid))
SetPlayerColor
Pentru a face culoarea bandei trebuie doar să adăugăm liniile:
SetPlayerColor ((PlayerInfo [playerid] [pMember] == 4 || PlayerInfo [playerid] [pLeader] == 4), 0xFFFF00AA);

Ceea ce este evidențiat în verde este - ce fracție (id) va fi acea culoare. și apoi ceea ce este evidențiat în albastru este culoarea.
Și de mai multe ori (în funcție de câte trupe ați pus)


Lecția 6
Teleportați prin pick-up

Unde se scriu toate variabilele noi
teleportare nouă;







În continuare, în căutare căutăm public OnGameModeInit () și interpunem acolo:

Am explicat 1274 este ID pickup, 1 este tipul de pickup, x, y, z sunt coordonatele locatiei pickup-ului

Căutăm OnPlayerPickUpPickup (playerid, pickupid) și acolo introducem:


dacă (pickupid == teleport)
<
SetPlayerInteri sau (playerid, 0);
SetPlayerPos (playerid, x, y, z);
SendClientMessa ge (playerid, 0xFF0000FF, "Ai teleportat la punctul dorit");
>
Eu explic: SetPlayerInteri sau (playerid, 0); - prin aceasta întrebați interiorul jucătorului, pe această stradă, scrieți-vă interiorul
SetPlayerPos (playerid, x, y, z); - aici setați locația jucătorului. XYZ este coordonatele unde va fi teleportat
SendClientMessa ge (playerid, 0xFF0000FF, "Ai teleportat la punctul dorit"); este un mesaj de teleportare. Puteți să eliminați

Pawno lecții de scripting
I. Introducere

Ce este o scară? Ea simplifică viața noastră și este ușor de utilizat.
În programare, "scara", de fapt, îndeplinește aceleași funcții.
Sigur că ați observat că majoritatea liniilor din cod sunt împinse în partea dreaptă.
Această distanță (spații) între marginea din stânga și linia și sunt părți ale scării.
Codul "mai adânc", cu atât distanța este mai mare. Acesta este ceea ce face codul mai ușor de înțeles.

Voi întrebați cum, voi răspunde: scara arată ce se referă la acest sau acel cod.
De exemplu, avem un test if (unii parametri), și există și un cod în el.
Acest cod se referă la verificarea noastră și trebuie să o împingem spre dreapta.
Pentru a face acest lucru, trebuie să selectați codul care urmează să fie mutat și să faceți clic pe 'TAB'
Codul evidențiat sa mutat spre dreapta și acum vedem că se referă la acest test.
Ar trebui să fie clar pentru o persoană care nu înțelege deloc programarea, nu-i așa?

În general, codul public (kolbekov) constă în controale constante. Se pare că o vom face
pentru a muta codul fiecărui cec, dar pentru că, ca urmare, publicul va arăta frumos cu ajutorul lui
acest tip de "scară" urâtă.

Dacă ați descărcat deja modul special pentru formare și ați încercat deja să îl compilați, ați primit următoarele avertismente:

C: \. \ gamemodes \ Education.pwn (137). avertizare 217: indentare liberă
C: \. \ gamemodes \ Education.pwn (146). avertizare 217: indentare liberă


Ele sunt legate de scări sau mai degrabă de absența lor. Dar nu vă faceți griji, acum veți corecta totul.

Luați în considerare utilizarea "scării" pe un exemplu specific, sub forma comenzii "/ restart"
Cea mai obișnuită comandă, și dacă o găsiți în modul nostru, veți vedea:

Cod: [Evidențiați]
dacă (strcmp (cmd, "/ restart", true) == 0)
dacă (IsPlayerConnected (playerid))
GameModeExit ();
>
retur 1;
>
Codul pare foarte rău și, în plus, nu va fi convenabil să lucrați cu el, dacă este necesar.
După cum știți, dacă este o verificare și în paranteze există câțiva parametri necesari.
Acum nu vom mai intra în ele, dar codul arată clar că toate echipele se află pe
1 din marginea din stânga. Acest lucru se datorează faptului că aparține acestui cod
public OnPlayerCommand Text (playerid, cmdtext []) și prin urmare tot codul din interiorul acestuia este tabelat.
În consecință, evidențiem pe deplin echipa noastră și făcând clic pe TAB 1.
Acum are aceeași distanță ca și celălalt cod (alte comenzi) ale acestui bec.

Apoi, comanda însăși este vizibilă: dacă (strcmp (cmd, "/ restart", true) == 0)
După ce se deschide primul braț curbat "Deoarece există un bracket care arată începutul, atunci trebuie să existe un bracket care arată sfârșitul.
Este logic să presupunem că prima paranteză arată începutul de la început și prima consola de la capăt la capăt.
Aceste două paranteze rămân în locul lor legal, iar codul care este între ele,
ne subliniem și ghici ce facem cu ea? Da! Selectați și apăsați TAB (1 dată).

Ca rezultat, am reușit:

Cod: [Evidențiați]
dacă (strcmp (cmd, "/ restart", true) == 0)
dacă (IsPlayerConnected (playerid))
GameModeExit ();
>
retur 1;
>
Excelent! Munca este aproape terminată! În total, în echipa noastră 2 cecuri.
Prima dată am tablat întreaga echipă, pentru că ea se află în callback.
A doua oară este codul din interiorul primei verificări.
Mai avem încă un test, codul pe care nu l-am tablat.
Acesta este un test dacă (IsPlayerConnect ed (playerid))

Între parantezele acestui test este o singură funcție care este responsabilă pentru repornirea serverului.
Ei bine, să fie o funcție. Din nou, selectați-l, nu atingeți parantezele și apăsați TAB.
Gata! Echipa este complet tabelată. Acum trebuie sa comparati rezultatele mele si rezultatele:

Cod: [Evidențiați]
dacă (strcmp (cmd, "/ restart", true) == 0)
dacă (IsPlayerConnected (playerid))
GameModeExit ();
>
retur 1;
> Dacă totul se converge, atunci trebuie să fi realizat că există o "scară", este tabulație, în programare.







Trimiteți-le prietenilor: