Skocz do zawartości
szymex

Od zera do LUA Mastera - Podstawy

Rekomendowane odpowiedzi

Witajcie drodzy użytkownicy!
Dzisiaj zaczynam własną serię poradników dla młodych zapaleńców, którzy chcieliby zabłysnąć wśród kolegów znajomością języka Lua. Postaram się, aby poradniki trafiały na forum regularnie, aczkolwiek nic nie obiecuje...


Na początku wyjaśnijmy sobie, co to w ogóle jest LUA. Definicja wikipedii brzmi:
Lua - język skryptowy pierwotnie zaprojektowany dla rozszerzenia funkcjonalności różnych aplikacji, jednak często używany jako samodzielny język. Lua wiąże w sobie prostą składnię procedury (podobną do Pascala) z konstrukcjami opisu danych opartymi na tablicach asocjacyjnych i rozszerzalnej semantyce. Język ten zaimplementowany jest jako mała biblioteka języka C, napisana według standardu ANSI C. Celami implementacji są: prostota, wydajność i przenośność kodu.
Krócej mówiąc jeden z wielu języków skryptowych stosowanych do poszerzania możliwości aplikacji (w naszym przypadku Multi Thef Auto).

Dobrze... Teraz środowisko, czyli miejsce pracy. Do wyboru mamy kilka programów:
- Mta Script Editor - specjalny program do pisania skryptów pod MTA. Zawiera on bazę funkcji, eventów, a także kilka innych pomocnych narzędzi. Dostępny tutaj.
- LuaEdit (Link)
- Notepad++ z pluginem lua

Skoro już mamy gdzie pisać bierzemy się do pracy.
Zmienne - dla wielu bardzo przytłaczająca rzecz. Co to w ogóle jest zmienna?
Zmienna jak to ktoś powiedział, to taka podpisana szufladka, która przechowuje daną wartość. Najprościej mówiąc wyraz 'imie' ma wartość "Adrian". Czyli jeżeli rozkażemy serwerowi wyświetlić zmienną 'imie' pokażę on nam na konsoli czy chacie "Adrian".
Po prostu zmienne służą do przechowywania pewnych wartości. Po co nazywamy zmienne? Na przykład: Mamy liczbę 20 ... i co z tego skoro nie wiemy czym ona jest, dlatego tworzymy zmienną 'wiek' równą 20.
Rozróżniamy kilka typów zmiennych, przedstawię tylko te podstawowe:
1. Integer - liczba całkowita np. -15, 4, 6, 10430
2. Float - liczba zmiennoprzecinkowa np. 25.0923, -4.005
3. String - ciąg znaków np. "Wiek", "Ola z przedszkola"
4. Bool - prawda/fałsz. Zawiera tylko dwie wartości true/false.
LUA jest o tyle proste, że samo identyfikuje typ zmiennej i nie musimy go podawać. Wyróżniamy dwa rodzaje zmiennych  - globalne i lokalne, a tworzymy je następująco:
local nazwaZmiennej = wartość  - zmienna lokalna
nazwaZmiennejGlobalnej = 5  - zmienna globalna
Przykład:

local wiek = 20
local imie="Adrian"
a = 1
b = 5

Teraz, jeżeli jeszcze nie rozumiecie o co w tym chodzi pokaże Wam przykład z zastosowaniem funkcji print, która wyświetla nam coś na konsoli:

print(imie, wiek, a, b) -- wyświetli na konsoli "Adrian 20 1 5"

 

Operatory logiczne:
- not - czyli zaprzeczenie np.: not true = false
- or - tłumacząc na polski "lub" np.: 0 or 1
- and - w tłumaczeniu "i" np.: 0 and 1

Operatory arytmetyczne:
- + (dodawanie)
- - (odejmowanie)
- * (mnożenie)
- / (dzielenie)
- ^ (potęgowanie)
- % (modulo)

Operatory relacji:
- == (równe)
- ~= ( nie równe)
- < (mniejsze od)
- > (większe od)
- <= (mniejsze i równe)
- >= (większe i równe)
Te operatory zawsze zwracają false lub true. Przykład: 0 == 7 zwróci false (fałsz).

Operator length ( "#" ). Typowy operator długości ciągu znaków. Przykład:

local imie = "Adrian"
#imie == 6

Tak, tak, sama logika, ale po co mi logika w pisaniu skryptów? Na przykład do tego, aby sprawdzić czy gracz podał odpowiednie hasło (==), żeby prowadzić statystyki gracza (+, -), żeby sprawdzić czy hasło nie jest za długie lub za krótkie (#haslo > 11).
Więcej informacji znajdziecie tutaj http://lua.org.pl/5.1/manual.html#2.5.1

A w kolejnym poradniku warunek if oraz pętle...

Autor: szymex
Zakaz kopiowania i rozpowszechniania bez mojej zgody!

Edytowane przez szymex

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
local wiek = 20
local imie="Adrian"
a = 1
b = 5

To znaczy że a i b są lokalne, jakiś domyślny typ, czy po prostu pominąłeś tworzenie?

 

Czy można zrobić tak?

local a,b
Edytowane przez Maciej

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
local wiek = 20
local imie="Adrian"
a = 1
b = 5

To znaczy że a i b są lokalne, jakiś domyślny typ, czy po prostu pominąłeś tworzenie?

 

Czy można zrobić tak?

local a,b

Zmienne a i b są globalne ;) Można zrobić coś takiego jak podałeś, ale wtedy będą lokalne.

 

local a,b = 1,5
Edytowane przez szymex

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

W Lua język jest bardziej ścisły co ułatwia pisanie poszczególnych skryptów. To jest duży plus w porównaniu do programowania w pawn, gdzie trzeba użyć kilku odniesień nawet w najprostszej komendzie czy funkcji.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×