Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2017-02-05, 21:38


marcin778

Krytyk serwerów MTA






Wiek: 24
Na forum: 4149 dni
Posty: 2268
Nick w MP: Marcineg

Piwa: 4662

Respekt: 1436,8
Respekt: 1436,8

Witam, postaram si? w tej 'serii' poradnik?w wyt?umaczy? krok po kroku LUA. Jest wiele poradnik?w na temat lua i jego podstaw, ale w ka?dym autor od razu rzuca si? na g??bok? wod?. Ja wyt?umacz? wszystko od A do Z. Zacznijmy.

LUA jest w bardzo du?ym stopniu oparte o j?zyk angielski, je?li go znasz to na pewno sobie poradzisz.

Ka?dy kod si? musi jako? 'zacz??' Kod to rozpisane funkcje i zmienne oraz zdarzenia.

Stw?rzmy funkcj?, kt?ra stworzy pojazd o id 448 obok gracza.

Jak wy?ej napisa?em 'stw?rzmy funkcj?' czyli zaczynamy
function tworzymyPojazd(plr)
po function nadajemy tej funkcji nazw?, a w nawiasach podajemy argumenty. W tym przypadku 'plr' to argument gracza, kt?ry wpisze komend? /pojazd

Teraz gdy ju? mamy rozpocz?t? funkcj? kontynuujemy kod. Musimy u?y? teraz funkcji wbudowanej w mta, kieruj?c si? logik? skoro ma to by? tworzenie pojazdu obok gracza to musimy pobra? pozycj? tego gracza, czyli u?ywamy
Więcej informacji znajdziesz w Wikipedii MTA:

getElementPosition
getElementPosition(plr)
pobiera nasz? pozycj?, ka?da funkcja co? zwraca, w tym przypadku ta funkcja zwr?ci nam po przecinku trzy liczby, x,y,z czyli nasz? pozycje, x to boki, y prz?d/ty?, z wysoko??. W funkcji musimy uwzgl?dni? argument gracza, kt?rego t? pozycj? chcemy pobra?, czyli w tym wypadku 'plr'. Nasz? funkcje musimy jako? zdeklarowa?, tak jak wy?ej napisa?em funkcja zwraca nam trzy warto?ci to nasza zmienna te? musi by? z?o?ona z trzech warto?ci, na przyk?ad pos1,pos2,pos3, lecz zazwyczaj jest to x,y,z mo?emy j? zdeklarowa? jak chcemy.
 local p1,p2,p3 getElementPosition(plr)
przedrostek local powoduje, ?e zmienna od funkcji b?dzie dzia?a? tylko w tej funkcji 'stworzPojazd' Czyli je?li zrobimy drug? komend? na np pokazywanie pozycji gracz to nie mo?emy u?y? tej samej zmiennej je??i jej nie zdeklarujemy. Teraz kieruj?c si? logik? chce stworzy? pojazd to po angielsku b?dzie to
Więcej informacji znajdziesz w Wikipedii MTA:

createVehicle

createVehicle(448. p1,p2+2,p3

Powy?sza funkcja stworzy nam pojazd o id 448 obok gracza. Przeanalizujmy sobie j?. p1,p2,p3 to nasza zmienna od pozycji. Dlaczego dajemy p2+2 ? Dlatego, ?e spowoduje to stworzenie pojazdu obok gracza a nie bezpo?rednio na nim. Ka?da funkcja ma argumenty wymagane oraz opcjonalne, o takich argumentach mo?emy si? dowiedzie? za pomoc? wikipedi MTA, s? w niej zawarte wszystkie funkcje wbudowane w mta oraz dok?adnie opisane. Dobrze, gdy ju? mamy stworzony pojazd obok gracza, wy?wietlmy mu informacj? o tym.
Więcej informacji znajdziesz w Wikipedii MTA:

outputChatBox

outputChatBox("Stworzy?e? pojazd :)",plr,255,255,255)

W funkcji r?wnie? mamy argumenty, w nawiasach. Kolejno jest to w stringu czyli ci?g znak?w w cudzys?owie " ", czyli tre?? informacji, potem mamy 'plr' czyli gracz, kt?remu chcemy t? wiadomo?? wy?wietli?, nast?pnie s? to 255,255,255 czyli kolor r,g,b - red green blue. Po argumencie koloru jest boolean czyli true albo false jest to opcjonalny argument, true spowoduje, ?e mo?emy w informacji u?y? kodu HEX np #00FF00Witaj wy?wietli zielony tekst, wtedy kolor r,g,b nie ma znaczenia. Je?li nie chcemy tam mie? koloru HEX tylko rgb to nie musimy dawa? false, wystarczy, ?e nic tam nie damy. Po u?o?eniu funkcji musimy j? zako?czy? czyli
end

Teraz trzeba by jako? do tej funkcji podpi?? komend?,
Więcej informacji znajdziesz w Wikipedii MTA:

addCommandHandler
Czyli
addCommandHandler("pojazd"stworzPojazd)


w nawiasach mamy argumenty ponownie stringu, czyli komenda oraz funkcj? do kt?rej podpinamy komend?.

Ca?y kod wygl?da? b?dzie tak:

function stworzPojazd(plr)
local p1,p2,p3 getElementPosition(plr)
createVehicle(448,p1,p2+2,p3)
outputChatBox("Stworzono pojazd :)",plr,255,255,255)
end
addCommandHandler("pojazd",stworzPojazd)


Wa?na jest te? kolejno?? kodu, nie mo?emy np doda? komendy nad funkcj? czyli
addCommandHandler("pojazd",stworzPojazd)

function stworzPojazd(plr)
Poniewa?, funkcja ta jest na dole, a nie nad wi?c kod nie b?dzie wiedzia? co to 'stw?rzPojazd'. Wy?ej napomkn??em o rodzaju zmiennych, 'local'. Przedrostek local spowoduje, dzia?anie zmiennej na danej funkcji /danym zdarzeniu a nie ca?y kodzie. Czyli na przyk?ad


function cos(plr)
local x,y,getElementPosition(plr)
createVehicle(506,x,y,z)
end
addCommandHandler("auto",cos)

function cos2(plr)
outputChatBox("Twoja pozycja to: "..x..","..y..","..z.."",plr)
end
addCommandHandler("pos",cos2)

To taki kod nam nie zadzia?a, poniewa? skrypt nie b?dzie wiedzia? co to x y z w funkcji cos2. Musimy zdeklarowa? pozycj? tak?e w funkcji cos2
function cos2(plr)
local x,y,getElementPosition(plr)
outputChatBox("Twoja pozycja to: "..x..","..y..","..z.."",plr)
end
addCommandHandler("pos",cos2)


Jest jeszcze drugi rodzaj zmiennych, 'globalne', zmienna globalna to taka, kt?ra dzia?a na ca?y kod.

Przyk?adowo


obiect createObject(24640,0,0)

function de()
destroyElement(obiect)
end
addCommandHandler("ds",de)


Nie musimy wtedy w funkcji de deklarowa? obiektu czyli co to jest obiect poniewa? mamy go zdeklarowanego na ca?y kod.

Mo?na te? zrobi?

local obiect createObject(24640,0,0)

function de()
destroyElement(obiect)
end
addCommandHandler("ds",de)
Wtedy zadzia?a to tak samo, dlaczego, skoro jest local? Dlatego, ?e jest to nad funkcj? czyli te? dzia?a na ca?y kod.

Po napisaniu naszego kodu i zapisaniu go jako plik lua, musimy do niego stworzy? met? czyli plik meta z rozszerzeniem xml. meta.xml - Nie mo?e on si? inaczej nazywa?. W pliku tym definiujemy nasz plik jako zas?b.




<meta>

<script src="naszplik.lua" type="server" />

</meta>


"naszplik.lua" to ?cie?ka do naszego pliku, 'type' to strona pliku client lub server. Je?li jest to client musimy da? 'type = "client" natomiast je?li to server nie musi dawa? type="server" poniewa?, wtedy meta automatycznie przypisze plikowi stron? serwer. Aczkolwiek, je?li chcemy to mo?emy to doda? dla porz?dku. Je?li chcemy 'zabezpieczy?' nasz plik client przed kradzie?? to w mecie ustawiamy jego cache na false. Dzia?a to tylko na plikach client, poniewa? pliki server nie pobieraj? si? na dysk gracza, natomiast client tak. Dajemy wtedy 'cache="false" ' czyli

<script src="naszplikclient.lua" type="client" cache="false" />

Ustawienie cache na false, spowoduje, ?e plik nie pobierze si? na dysk gracza, aczkolwiek b?dzie on w pami?ci RAM. Uzyskanie dost?pu do takiego pliku jest mo?liwe, ale tylko dla zaawansowanych informatyk?w. Jakie? strony client/ server o co w og?le chodzi?! - Chodzi o to, ?e w mta s? wbudowane funkcje, kt?re dzia?aj? tylko na danej stronie client lub server, s? te? takie, kt?re dzia?aj? na obydwu czyli obustronne. Na wikipedii mta opisane jako 'Shared function'. Czym r??ni si? client od servera? Tym, ?e server wykonuje si? u wszystkich graczy, a client tylko u danego gracza na komputerze. Np. funkcja
Więcej informacji znajdziesz w Wikipedii MTA:

getLocalPlayer
dzia?a tylko na stronie clienta, poniewa? pobiera ona 'lokalnego' gracza. Przyk?adowo zdarzenie
Więcej informacji znajdziesz w Wikipedii MTA:

onClientGUIClick
wykona si? osobie, kt?ra klikn??a jaki? element gui a nie ka?demu na serwerze. Wi?kszo?? prac dorywczych w wi?kszo?ci jest pisane na stronie client, poniewa? dany gracz pracuje a nie ka?dy. Na stronie client graczem jest zawsze localPlayer, lub zmienna od getLocalPlayer, czyli tam nie ma takiego czego? jak np. plr. To nasza funkcja na tworzenie pojazdu na stronie client'a wygl?da?a by tak:

function stworzPojazd()
local p1,p2,p3 getElementPosition(localPlayer)
createVehicle(448,p1,p2+2,p3)
outputChatBox("Stworzono pojazd :)",255,255,255)
end
addCommandHandler("pojazd",stworzPojazd)
W funkcji outputChatBox nie ma 'plr' poniewa?, wiadomo?? wy?wietli si? tylko graczowi, kt?ry wpisa? komend?.

Ja osobi?cie do pisania polecam program Notepad++, kt?rego sam u?ywam. Dla pocz?tkuj?cych przydatnym do notepada++ jest styl/plugin od AteX'a. Na kolorowanie funkcji tak jak na wikipedii MTA. Czerwone - client, Pomara?czowe - Server, Niebieskie - Obustronne/Shared Z??te/Br?zowe to funkcje/elementy domy?lne z LUA tj. end, break, pairs,ipairs,in,math,local,function itd.

Przydatne linki:

Notepad++ https://notepad-plus-plus.org/download/v7.3.1.html
Sublime Text https://www.sublimetext.com/3 -- Program inny ni? notepad++
Styl/Plugin od AteX'a koloruj?cy sk?adnie http://gtao.pl/multithefa...02114cf1617837d
Wikipedia MTA https://wiki.multitheftauto.com/wiki/Main_Page
Dokumentacja LUA https://www.lua.org/docs.html

Przydatna jest te? komenda /debugscript3 na serwerze, kt?ra pokazuje nam wszystkie b??dy, w jakim pliku, w kt?rej linijce i co jest nie tak w naszym kodzie.

My?l?, ?e jak na pierwszy poradnik wprowadzaj?cy by?oby to na tyle. Mi?ego uczenia si?, niebawem kolejne cz??ci.

Podpis
Moje prace: https://www.youtube.com/c...MuaWGHPp1mhlGnw

-- obecnie
-- obecnie
-- dawniej
-- dawniej
-- dawniej
Ostatnio zmieniony przez marcin778 2017-06-04, 19:55, w całości zmieniany 5 razy  
Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 20 piw(a):
xMaXeRx, ProsiaczekP, Virahh, STOPseba, switel1200, Makay, Dawcio77, PenkY, Mateusz87956, kaksonek, Bolt, theoriginalspac, Mezo., Kacperiusz, MrKewciu, NeXt2k20, Kosma, Suchy1001, Piesek67, umiemsalto14
Wysłany: 2017-02-05, 21:55


polaczkos







Wiek: 25
Na forum: 4085 dni
Posty: 168
Nick w MP: polaczkos

Piwa: 3

Respekt: 45,3

Bardzo dobry poradnik i przejrzysty
[lua] local p1,p2,p3 = getElementPosition(plr)[lua] nie wstawiles / w [lua]

Komentarz marcin778 dodany 2017-02-06, 14:12Poprawione
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-02-06, 16:20


_Haze

Peace Yo!






Wiek: 24
Na forum: 4184 dni
Posty: 1648
Nick w MP: Haze

Piwa: 2628

Respekt: 1020
Respekt: 1020

marcin778, poda?e?
Więcej informacji znajdziesz w Wikipedii MTA:

getLocalPlayer()
a powinno by?
Więcej informacji znajdziesz w Wikipedii MTA:

getLocalPlayer
+ skoro to 1 poradnik dlaczego nie opisa?e? p?tl, break, local, nazywania funkcji typu funkcja = function(). Pokaza?e? jak si? robi jakie? pierwsze skrypty ale ta wiedza jest nie przydatna kiedy kto? nie wie jak pos?ugiwa? si? local albo p?tlami albo eventami kt?rych tu nie opisa?e?. Warto te? doda? ?e zmienne lokalne "local" ?le opisa?e? poniewa? zmienna local dzia?a tylko na plik a globalna mo?e dzia?a? ponad zas?b. Mam nadziej? ?e w przysz?ych poradnikach opiszesz "wi?cej" i pocz?tkuj?cym i tak si? przyda ten poradnik ale zach?cam te? do obczajenia innych poradnik?w kt?re uzupe?ni? t? wiedz? :D

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-02-06, 16:52


marcin778

Krytyk serwerów MTA






Wiek: 24
Na forum: 4149 dni
Posty: 2268
Nick w MP: Marcineg

Piwa: 4662

Respekt: 1436,8
Respekt: 1436,8

Hazmudex, To nie jest m?j pierwszy poradnik, pierwszy poradnik nt. nauki lua. Co do p?tli etc to wszystko w nast?pnych cz??ciach, tutaj jest takie wyt?umaczenie jak stworzy? poprawnie funkcj?. Jednak?e dzi?ki za opinie.

Podpis
Moje prace: https://www.youtube.com/c...MuaWGHPp1mhlGnw

-- obecnie
-- obecnie
-- dawniej
-- dawniej
-- dawniej
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-02-06, 18:17


Dexnes_

Tiger






Wiek: 26
Na forum: 4401 dni
Posty: 620
Nick w MP: Dexnes

Piwa: 1394

Respekt: 390
Respekt: 390Respekt: 390Respekt: 390Respekt: 390

marcin778, Jak dla mnie poradnik bardzo dobry , dobrze wszystko wyt?umaczy?e? .

Hazmudex, Ale to nie ma znaczenia czego uczy si? na pocz?tku nowy skrypter . Przecie? osoba , kt?ra przeczyta?a poradnik marcina i czego? si? dowiedzia?a , nie b?dzie pisa?a od razu profesjonalnych skrypt?w. Wszystkiego po woli si? nauczy , a kolejno?? moim zdaniem jak na razie nie jest taka wa?na.

Poradnik naprawd? ciekawy :)

[ Dodano: 2017-02-06, 18:19 ]
@edit , m?g?y? doda? jeszcze program "sublime", gdyby kto? wola? inny program ni? notepad++

Komentarz marcin778 dodany 2017-02-07, 14:28Dodane
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-02-06, 22:25


ProsiaczekP







Wiek: 30
Na forum: 3636 dni
Posty: 4
Nick w MP: Prosiak



Respekt: 60

Bardzoo fajniuchy poradnik leci zimne piweczkoo :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-02-24, 21:03


MIKAELmta







Wiek: 24
Na forum: 3979 dni
Posty: 311

Piwa: 10617

Respekt: 355,3
Respekt: 355,3Respekt: 355,3Respekt: 355,3Respekt: 355,3

Poradnik jest niez?y. Bardzo przejrzysty i zawiera dobre informacje, akurat takie kt?re trzeba na pocz?tku umie?.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-02-26, 22:47


Virahh

Weteran MTA






Wiek: 24
Na forum: 3466 dni
Posty: 38
Nick w MP: Eszteban

Piwa: 1326

Respekt: 71,5

Ostrzeżeń: 100%
poradnik przejrzysty, fajnie sie czyta :) zostawiam :arrow: :arrow: :piwo:

Podpis
Pomogłem? może jakieś :piwo: :)
Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
PenkY
Wysłany: 2017-04-03, 09:25


.RiV







Wiek: 25
Na forum: 3588 dni
Posty: 554
Nick w MP: Split

Piwa: 2596

Respekt: 597,8
Respekt: 597,8

Nie wiem czy jest sens od?wie?a? temat ale pocz?tkuj?cy u?ytkownicy mog? mie? problemy z jedn? liter?wk? ot?? w:

<script src="naszplikclient.lua"type="client" cache="false" />


Pozdrawiam :)

Komentarz marcin778 dodany 2017-04-03, 16:03Poprawione.
Podpis

Autor OGRPG, na scenie MTA od 2012 roku.




Użytkownik: 08.08.2016
GTAO Member: 06.02.2017
Support-Team: 17.06.2017 & 01.06.2019 - 18.11.2019
Moderator: 14.01.2018 - 09.08.2018

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
luki123luki123
Wysłany: 2017-05-05, 01:02


Telsky







Wiek: 27
Na forum: 3390 dni
Posty: 8
Nick w MP: Telsky



Respekt: 50

Mo?e i od?wie?am temat, ale dopiero si? ucz? lua i chcia?bym si? wypowiedzie?.
marcin778, poradnik dla pocz?tkuj?cych jak np. dla mnie jest bardzo dobry, jeden z lepszych, kt?re przeczyta?em, a by?o ich naprawd? spor. Piwko dla ciebie i mam nadziej? na odpowied? na GG.

Ps. podasz mi jaki? poradnik dotycz?cy MySQL? Bo mam z tym wielkie problemy, nawet nie wiem jaki jest port, nazwa bazy i host (1shot1kill - jak kto? wie mo?e mi odpowiedzie?).
Pozdrawiam.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-05-22, 16:03


Emm

***** ***






Wiek: 32
Na forum: 3880 dni
Posty: 3191
Nick w MP: Emm

Piwa: 6162

Respekt: 1580
Respekt: 1580Respekt: 1580


   Administrator: Admin ma zawsze rację | REGULAMIN FORUM | REKLAMA/VIP | .
Podpis

Użytkownik: 20.10.2015r
GTAO Member: 06.03.2016r
Support-Team: 20.01.2016r
Moderator: 30.03.2016r
Mod-Team: 08.10.2016r
Vice Admin: 04.05.2018r
Administrator: 03.05.2022r


! Koniecznie zapoznaj się z regulaminem forum.
Pamiętaj, aby zawsze go przestrzegać, nie mniej ważne są również regulaminy działów, w których się wypowiadasz!
Zamiast zakładać temat po kilka razy, bo jest usuwany przez Administrację, przejrzyj regulamin i napisz poprawnie temat!
Sprawy z administracją możesz załatwiać anonimowo w tym dziale.
Najważniejsze informacje od Administracji możesz przeczytać tutaj oraz tutaj.
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-06-03, 23:09


switel1200

Uczeń LUA






Wiek: 25
Na forum: 3409 dni
Posty: 37
Nick w MP: Switel12

Piwa: 7

Respekt: 55,3

Bardzo przydatny poradnik troche ju? wiem od ciebie o j?zyku lua.
Daje piwko i czekam na kolejny poradnik.
A i mam pytanie czy da sie np. ?e jak gracz raz wpisz? t? komende to drugi raz b?dzie m?g? u?y? po danym czasie?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-08-16, 14:22


Risk







Wiek: 26
Na forum: 3225 dni
Posty: 5
Nick w MP: Risk



Respekt: 50

Mam dziwny b??d.
http://imgur.com/a/3diBj

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-08-16, 14:33


Luqas

.lua <3






Wiek: 25
Na forum: 3455 dni
Posty: 84
Nick w MP: Luqas

Piwa: 10

Respekt: 80

Risk, pewnie stworzy?e? skrypt po stronie serwera, i kod nie wie czym jest "p2".

Musisz zrobi? tak:

function stworzPojazd(player)
local p1,p2,p3 getElementPosition(player)
createVehicle(448,p1,p2+2,p3)
outputChatBox("Stworzono pojazd :)",player,255,255,255)
end
addCommandHandler("pojazd",stworzPojazd)


Napisz czy dzia?a :D

Podpis
Pomogłem? Postaw Piwo lub/i respekt ^^


 Mój Youtube (klik)
Moje skrypty:
- Pay'n'Spray -

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-08-21, 11:25


Pevo

Jabłko






Wiek: 23
Na forum: 3590 dni
Posty: 356
Nick w MP: Pevo

Piwa: 1571

Respekt: 355,8
Respekt: 355,8Respekt: 355,8Respekt: 355,8Respekt: 355,8

Om?w jeszcze triggery :D

Podpis
Jabłko
Postaw piwo autorowi tego posta
 

 
Tagi: lua :: kurs :: lekcja :: nr.
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Poradniki do LUA » Lua Kurs Lekcja nr. 1 Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku