Skocz do zawartości


Poradnik LUA dla początkujacych - część pierwsza

Scripting

2 odpowiedzi w tym temacie

#1 Dante

    Huge Clucker

  • Użytkownicy
  • 246 postów

Napisano 27 lipiec 2014 - 10:22

Cześć! Postanowiłem że i ja napiszę swój poradnik, ponieważ umiem już w LUA trochę więcej niż podstawy, więc myślę że mogę to zrobić Dołączona grafika


A więc tak, zaczynamy!


1. Uruchamiamy serwer lokalny
Na czymś musimy testować nasze zasoby, prawda? Istnieją dwie możliwości postawienia serwera lokalnego - przez zakładkę Host game w menu, lub uruchamiając aplikację MTA Server.exe. My skorzystamy z tego drugiego. Przechodzimy do katalogu w którym mamy zainstalowane MTA, a w nim do server. Tam uruchamiamy aplikację MTA Server.exe. Uruchomi nam się konsolka. Możemy przejść do MTA. Wchodzimy na serwer 127.0.0.0, jeśli nie będziecie mogli się połączyć, w katalogu z serwerem przejdzcie do mods/deathmach, otwórzcie plik mtaserver.conf, i znajdzcie następującą linijkę: (u mnie linia 12)
<serverip>IP Mojego Serwera</serverip>

"IP Mojego Serwera" zamieniacie na Wasze IP, które możecie sprawdzić w ten sposób:


Spoiler


2. Tworzymy pierwszy zasób
Ok, to tak. Wracamy do katalogu z serwerem, i przechodzimy do mods/deathmach/resources. Tam tworzymy nowy folder, np. mojPierwszyZasob. Przechodzimy do folderu, i dodajemy w nim plik server.lua - będzie to nasz pierwszy plik. Następnie, tworzymy plik meta.xml, a w nim wpisujemy:
<meta>
<info author="NaszNick" type="script" name="Nasz pierwszy zasób" />
<script src="server.lua" type="server" />
</meta>

W linijce
<script src="server.lua" type="server" />

dołączamy nasz zasób, oraz dajemy serwerowi informacje, jaka to ma być strona - dla strony serwera w sumie nie trzeba pisać type="server", ale ja napisałem to dla przykładu. Możemy także zamiast "server" wstawić "client", ale nasz zasób będzie po stronie serwera - więc tego nie robimy.

3. Funkcja

Funkcja, to podstawowa rzecz jaką musimy znać.

Funkcję definiujemy za pomocą:
function naszaPierwszaFunkcja ()
-- zawartosc naszej funkcji
end

w LUA, zamiast klamer jak to mamy w innych językach, funkcję kończymy używając end, tak samo z warunkami IF, ale o tym w następnej części tutoriala.

Tak stworzoną funkcję możemy wywołać np. za pomocą event handlera. W miejscu naszaPierwszaFunkcja wpisujemy nazwę naszej funkcji.

3. Pierwsze linijki!

No więc tak, bo podejrzewam, że wolicie coś praktycznego niż przykłady których wprawie nie da się wykorzystać Dołączona grafika

Zrobimy informację, o tym kto wszedł na serwer, lub kto z niego wyszedł.
addEventHandler("onPlayerJoin", getRootElement(),
function ( )
outputChatBox(""..getPlayerName(source).." dołączył/a do serwera.", getRootElement(), 255, 000, 000)
end)


addEventHandler("onPlayerQuit", getRootElement(),
function ( reason )
outputChatBox(""..getPlayerName(source).." wyszedł/a z serwera ("..reason..")", getRootElement(), 255, 000, 000)
end)



No więc tak. Dlaczego getPlayerName(source)? Każda funkcja, a w naszym przypadku event, zwraca wartość source. W przypadku onPlayerJoin i onPlayerQuit source to element gracza który wszedł/wyszedł. Natomiast np. w przypadku onPlayerMarkerHit, source to element markera w który wszedł gracz. Dzięki temu możemy np. sprawdzić czy getElementData(source, "stacjaPaliwa") == true, jeśli tak to tankujemy pojazd - jeśli nie to nie robimy nic.


4. Komentarze

Komentarze to nie wątpliwe bardzo przydatne rzeczy. Są to po prostu jakieś dopiski do kodu, których serwer nie czyta.

Komentarze mogą nam się przydać np. do oznaczenia co robi dana funkcja, albo co przechowuje dana zmienna - przy większych projektach da się w tym pogubić.

Rozróżniamy dwa typy komentarzy:

1. jednoliniowy

Definiujemy go za pomocą '--'

Przykład:
local zmienna = 242 -- ta zmienna oznacza liczbe, ktora bede mnozyc

2. wieloliniowy

Definiujemy go za pomocą '--[[' a kończymy za pomocą ']]--'.

Przykład:
--[[

To jest moj pierwszy komentarz wieloliniowy
yeaaaaaaaaaaaaaaaah

]]--

5. Zmienne lokalne i globalne

Chwilka, zapędziłem się a nie wyjaśniłem Wam, co to zmienne Dołączona grafika

No więc tak, zmienna to po prostu tak jakby schowek, do którego możemy coś schować np. cyfrę bądź liczbę. W LUA sytuację ze zmiennymi mamy ułatwioną o tyle, że nie musimy definiować, czy zmienna ta przechowuje cyfrę, czy liczbę.

Rozróżniamy dwa typy zmiennych:
  • Lokalną
Występuje tylko w pliku w którym została stworzona, lub jeśli została stworzona w warunku IF lub funkcji, to tylko wewnątrz warunku lub funkcji.
Definiujemy ją za pomocą
local zmienna = 5242
  • Globalną
Występuje w całym zasobie, nie ma znaczenia czy stworzymy ją w funkcji czy też w warunku.

Definiujemy ją za pomocą:
zmienna = 4141

Czyli po prostu nazwy zmiennej, = i jej zawartość.


To na dziś wszystko, planuję także drugą część poradnika Dołączona grafika Zapraszam do pisania sugestii, oraz konstruktywnej krytyki.

Użytkownik ThePiotrek edytował ten post 25 październik 2014 - 22:04


#2 Blacha

    Newbie

  • Użytkownicy
  • 3 postów

Napisano 30 sierpień 2014 - 13:32

Przydatne ;)

#3 YankeS

    Little Clucker

  • Użytkownicy
  • 11 postów

Napisano 09 maj 2016 - 18:57

Chciałbym poinformować, że dwa razy wpisałeś 3. pkt.





Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych