Resursele sunt o parte esențială a MTA. Resource - este un director sau un zip-fișier care conține o colecție de fișiere și meta-fișier care descrie modul în care se descarcă resursa server și al cărui fișier este. Resource joacă aproape același rol ca și programul în sistemul de operare - poate fi pornit și oprit, cu mai multe resurse pot fi rulate simultan.
Toate asociate cu scripting, este de resurse. Alocarea resurselor și determină dacă este mod, carte sau orice altceva. MTA vine cu resurse pe care le puteți lua în mod selectiv profita de modurile, de exemplu, maplimits, permițând jucătorilor să păstreze în limitele acestor carduri, sau deathpickups, crearea de camionete cu arme.
Crearea unui scenariu de lucru
Pentru a începe, vom învăța cum să facă pas cu pas scenariul de bază, care va permite jucătorului să se plimbe în jurul orașului.
Unde sunt toate script-urile?
Să aruncăm o privire la structura de fișiere de script-ul. Du-te la folderul MTA Server și du-te la următoarea cale:
Vezi o mulțime de .zip-arhive, care sunt ambalate script-uri de încercare furnizate împreună cu DM MTA. Fiecare fișier - aceasta este o „resursă“, ei vor fi server de despachetat și încărcate atunci când îl porniți. Pentru a crea propria resursă, creați pur și simplu un folder și nume-l după cum doriți. În cazul nostru, noi o numim „myserver“.
Acum, trebuie să mergeți în acest dosar:
Identificați resursa
Serverul poate afla despre conținutul unei resurse, acesta trebuie să fie creat un fișier meta.xml. listarea conținutul său. Acest fișier trebuie să fie localizat în directorul rădăcină al resursei, în cazul nostru - este dosarul „myserver“. Pur și simplu a crea un fișier text numit „meta.xml“ și deschideți-l cu Notepad (Notepad).
Fișierul meta.xml introduceți următorul cod:
eticheta
etichetă prevede script-uri (script-uri), care conține o resursă pentru ei, acum discutăm.
Creați un script simplu
Rețineți că eticheta .lua de mai sus, fișierul nu se află în directoare imbricate. Prin urmare, vom crea un fișier în același folder ca meta.xml. Acum puteți copia și insera în script.lua următorul cod:
Acest script vă zaspavnen coordonatele (x, y, z), menționat mai sus, atunci când vă conectați la server. Rețineți că funcția fadeCamera trebuie să fie, în caz contrar, ecranul va fi negru. De asemenea, în versiunile mai târziu DP2 aveți nevoie pentru a seta un obiectiv pentru aparatul de fotografiat (altfel tot ce vei vedea un jucător - albastru deschis).
Sursa variabilă se referă la cel care a declanșat evenimentul. Din moment ce acest cod este declanșată atunci când se apropie de orice jucător, această variabilă este utilizată pentru a determina cine a intrat. Deci, va da naștere la acel jucător, mai degrabă decât dintr-o dată, sau de cineva din greșeală.
Dacă te uiți la addEventHandler. vei observa trei lucruri: „onPlayerJoin“, care indică atunci când se va declanșa (de ce); getRootElement (), care pokazyvet datorită căruia / ce a declanșat (getRootElement () - este totul / toate) pot apărea și joinHandler, care este responsabil pentru funcția, care va schimba evenimente atunci când srabyvanii. Mai multe detalii vor fi stabilite ulterior pe un singur exemplu, și acum să începem doar serverul și va practica!
Rulați scriptul
Apoi vom adăuga comanda script-ul, care jucătorii pot folosi pentru a da naștere lângă un vehicul. Puteți sări peste acest lucru si uita-te la articolul pe mai multe scenarii avansate folosind Map Manager. care va continua să-l ghideze. O altă ramură a acestui ghid este o introducere la scripting GUI. după ce a citit-o, veți învăța interfață grafică cum și programabile de utilizator scoasă în MTA: DM.
Crearea unui simplu de comandă
Să ne întoarcem la fișierul script.lua conținut. După cum sa spus, vrem să dea comanda de a crea transortnogo înseamnă aproape de poziția curentă în joc. În primul rând, trebuie să creăm o funcție, pe care o vom numi, și un manipulator de comandă care va face o echipă la dispoziția jucătorului selecția introducând-o în consolă.
Notă: Dacă faceți clic pe numele funcției în codul de probă va redirecționa către pagina cu descrierea acestuia.
Despre stivuitoare de comandă
Primul addCommandHandler argument - numele comenzii, care va fi disponibil la player, iar al doilea argument - funcția, care va trece, în acest caz - este createVehicleForPlayer.
Dacă aveți deja experiență în scripting, știi ce funcții sunt numite astfel:
Privind cu atenție la al doilea eșantion (de mai sus), vedem că argument1 - thePlayer și argument2 - numele comenzii. thePlayer - cel care a marcat echipa, asa cum ar fi nu ați introdus, variabila va conține jucătorul care a activat. numele comenzii - o echipa care a intrat. Deci, atunci când tastați „/ salut“, acest argument va conține „salut“. Argumentul 3 - orice altceva, după ce jucătorul a intrat, vei afla mai multe despre mai târziu în acest ghid. Nu uitați niciodată că primele două argumente sunt standard, dar ele te pot suna pe cont propriu. Adică, ordinea este importantă, nu numele.
Am provocat deja funcția atât de addCommandHandler. iar din createVehicleForPlayer - de asemenea, caracteristica, ea poate fi, de asemenea numit asa. Dar pentru aceasta folosim handler de comandă, care determină într-un mod similar, numai pe plan intern.
De exemplu: cineva introduce „createVehicle 468“, în consola de jocuri zaspavnen Sanchez, handler de comandă solicită funcția createVehicleForPlayer ca și cum am avea următoarea linie de cod în script-ul:
După cum puteți vedea, cu condiția de mai mulți parametri: jucatorul care a provocat echipa în sine, pe care a introdus, și un text, pe care a introdus ulterior, în acest caz - „468“ ca id transoprtnogo înseamnă otvchechayuschego pentru Sanchez. Primii doi parametri sunt aceleași pentru toate stivuitoare de comandă, despre ele puteți citi pe pagina addCommandHandler. De fapt, trebuie întotdeauna să se definească cel puțin acești doi parametri pentru a putea folosi orice alta, mergând după ei (de exemplu, pentru procesarea textului introdus după comanda ca model de vehicul id în acest caz).
Notă: Conductorul de comandă trebuie să fie adăugat imediat după funcția la care se va referi, în caz contrar nu va fi găsit. Comanda este important!
funcţii de scriere
Pentru a umple funcția am creat, ar trebui să ne gândim că trebuie să facem:
- Obține poziția jucătorului, să știe unde să ruleze vehiculul (vrem să apară chiar lângă player-ul)
- Calculați poziția în care ne-o dorim zaspavnen TC (nu vrem să apară pe mintea jucatorului)
- De fapt, zaspavnen TC
- Verificați dacă zaspavnen cu succes, în caz contrar - pentru a afișa un mesaj într-un chat
Pentru a permite tuturor zadchai set, trebuie să folosim mai multe funcții. Și pentru a găsi funcției necesare, aveți nevoie pentru a merge la lista de funcții de server. În primul rând avem nevoie de o funcție care va primi coordonatele player-ului. Din moment ce toți jucătorii sunt membri, vom alege imediat funcții Element. în cazul în care este funcția getElementPosition. Dacă faceți clic pe numele funcției din listă, veți obține o descriere. Puteti vedea sintaxa, returnează și, de obicei, un exemplu de utilizare. Sintaxa spune ce argumente putem sau ea ar trebui să spună.
Cele trei float în fața numelui funcției și sunt tipurile de valori pe care le returnează. În acest caz, înseamnă că funcția returnează trei numere reale cu virgulă (x, y și z). În interiorul paranteze sunt date argumentele pe care le are nevoie pentru a transmite. În acest caz, numai elementul a cărui poziție doriți, l-am prezentat la player.
Apoi, trebuie să ne asigurăm că vehiculul nu spawn direct în player-ul, astfel încât vom adăuga un număr mic variabilei x. ceea ce ar atrage după sine vehicul miceliu la est de jucător.
Acum avem nevoie de o altă funcție pentru a zaspavnen direct vehicul. Suntem din nou în căutarea pentru ea în lista de funcții de server. De data aceasta, din moment ce vorbim despre transport - vezi funcții de vehicule. în cazul în care vom alege createVehicle. Sintaxa acestei funcții este indicată doar o singură valoare de retur (care apare cel mai des) - vehicul tip de element, ceea ce reprezintă un AT nou creat. vom vedea, de asemenea, că unele dintre argumentele cuprinse in [], prin urmare, acestea sunt opționale.
In interiorul functiei noastre, avem deja toate argumentele necesare pentru funcția createVehicle. Doar calculat poziția în variabilele x, y, z, și modelul de id-ul pe care l-am primit prin comanda ( „createvehicle 468“), acesta este disponibil în cadrul funcției ca vehicleModel variabilă.
Acest cod este, desigur, poate fi îmbunătățită în diferite moduri, dar cel puțin vom adăuga o verificare dacă vehiculul a fost creat cu succes. După cum poate fi citit pe pagina createVehicle sub Returnează. funcția returnează false. în cazul în care vehiculul nu a reușit să creeze. Deci, vom verifica valoarea variabilei createVehicle.
Acum am terminat scenariul:
După cum ați observat, probabil, ochii a apărut o nouă caracteristică - outputChatBox. Acum puteți examina conținutul paginii sale de documentație. Pentru a afla mai multe despre scripting avansate, citiți pe hartă Managerul.
Ce trebuie să știți
Ai ceva de citit pe resursele, manipulatorii de comandă și funcțiile în găsirea documentația în prima secțiune, dar mult mai rămâne de învățat. Această secțiune are o destul de scurtă trecere în revistă a unora dintre aceste lucruri, referindu-se la paginile relevante posibil.
Client și server-side script-uri
Poate ați observat deja acestea sau termeni similari (client / server) undeva pe acest wiki, cel mai probabil, împreună cu caracteristici. MTA nu numai ca suporta scripturi pe serverul care rulează, oferă comenzi (de exemplu, așa cum am menționat mai sus), precum și alte caracteristici, dar, de asemenea, script-uri care ruleaza pe client MTA că jucătorii folosesc pentru a se conecta la server. Motivul pentru aceasta este faptul că unele MTA cu condiția funcții nu poate fi un server (de exemplu, GUI - Graphical User Interface, adică interfața grafică de utilizator), altele acolo, doar să funcționeze mai bine, dar celălalt este încă mai bine să fie un server sau pur și simplu nu funcționează pentru partea de client.
Cele mai multe script-uri le-ați făcut (mods, hărți) sunt susceptibile de a fi server, ca cel pe care am scris în primul capitol. Dacă vii cu ceva ce nu poate fi pus în aplicare pe partea de server, ați putea fi capabil să-l pună în aplicare pe client. Pentru a scrie un script client, a crea un fișier script regulat (de exemplu, client.lua numit) și introduceți-o în meta.xml după cum urmează:
resurse mai complexe
Secțiunea anterioară a prezentat modul de a adăuga o resursă scripturi personalizate, dar oportunitățile sunt de fapt mult mai mult. După cum este scris la începutul acestui articol, resursele pot fi orice. Funcția lor este determinată de ceea ce fac. Să ne imaginăm niște resurse teoretice, se uită la conținutul fișierelor lor, meta.xml și să se gândească la ceea ce pot face:
Primul exemplu - script auxiliar
- commands.lua oferă unele comenzi de administrator, cum ar fi băncile și jucătorii mute sau orice altceva care ar putea fi disponibile pentru administratorii de server
- client.lua oferă o interfață grafică, a fost posibil să se efectueze cu ușurință pașii de mai sus
Acest exemplu poate fi efectuată în orice moment (chiar autorun pentru a porni server), deoarece este util pe tot parcursul jocului și nu intră în conflict cu ea, în cazul în care administratorul, desigur, el nu a vrut.
Al doilea exemplu - Maude
- counterstrike.lua conține funcții similare cu cele enumerate mai jos:
- Permite jucătorilor să aleagă echipa și spawn lor
- Pentru a le oferi cu arme, ținte și instrucțiuni (eventual preluate de pe cartela de joc. A se vedea mai jos)
- Determina regulile jocului, de exemplu. când runda se termina, ceea ce se întâmplă atunci când moartea unui jucător
- . și poate altceva
- buymenu.lua - script client care creează un meniu pentru a cumpăra arme
Acest model poate fi referit la MAp, deoarece nu afectează doar modul de joc, dar, de fapt, și definește domeniul său de aplicare. Atributul type indică faptul că acest exemplu funcționează cu Map Manager. Eu am o altă resursă, scrisă de asigurare a calității echipei pentru gestionarea și modurile de carduri podgruzki. Este foarte recomandat să se bazeze moda lor, cu condiția de a le funcționale.
De asemenea, înseamnă că evenimentele nu pot rula fără o hartă. Moda ar trebui să utilizeze întotdeauna funcționalitatea generală cât mai larg posibil. carte de probă - în exemplul următor.
Al treilea exemplu - Harta
- airport.map - fișier XML, care este moda informațiilor hartă care include:
- În cazul în care jucătorii trebuie să ruleze, cu ce arme, care sunt echipa
- Care sunt obiectivele
- Vremea, timp, limita de timp
- furnizează serviciul de transport
- airport.lua poate cuprinde intrinsec funcțională Această hartă care include:
- Deschiderea orice ușă, subminând ceva în anumite condiții
- Crearea sau mutarea unor obiecte de joc, sau de control pe cele care au fost create prin .map-fișier
- . tot ceea ce are nimic asociat cu carduri
După cum probabil ați observat, atribut de tip schimbat la „harta“, spune Map Manager. că această resursă - o hartă, în timp ce atributul gamemodes spune, ceea ce acest card este moduri compatibile, în acest caz - este un mod în exemplul de mai sus. Surpriza ar putea părea că în card de resurse include, de asemenea, un script. Desigur, nu este necesar pentru un card, dar deschide o gamă largă de oportunități pentru creatorii lor, permițându-vă să creați propria lume a modei cu normele pe care se bazează.
fișier airport.map ar putea arata ceva de genul:
Evenimente - o modalitate de a informa script-urile MTA despre ceea ce se întâmplă. De exemplu, atunci când un jucător moare, a declanșat evenimentul onPlayerWasted. Așa că, atunci când un jucător moare sa întâmplat ceva, va trebui să facă acțiunea, similară cu adăugarea unui handler de comandă, așa cum este descris în prima secțiune.
Acest exemplu va afișa un mesaj cu numele jucatorului care a murit:
În loc prima afișare o listă de argumente necesare, pagina afișează documentația pentru eveniment, care sunt parametrii trecut la funcția de tratare, precum și face handler de comandă. doar variază de la un eveniment la altul. Un alt punct important este, existent în-handlers ale sursei variabile. Ei nu sunt neapărat pe lista parametrilor funcției, dar cu toate acestea există. Valoarea sa variază de la un eveniment la, pentru evenimente asociate cu player-ul (ca în exemplul de mai sus), este - un element de tipul de jucător. Ca o altă probă servește ca bază pentru script-ul spawn jucător în prima secțiune, de exemplu, este posibil să se înțeleagă modul de utilizare a sursei.