• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Jak zacząć lua...

xKos

New Member
Joined
Mar 27, 2013
Messages
58
Reaction score
2
No siema, ogarniam w miarę podstawowe podstawy lua, ale chciałbym trochę głębiej wejść w ten temat. Nie wiem niestety od czego zacząć, tz. czytać poradniki, skrypty czy bezsensownie bawić się silnikiem bez końca. Jak Wy zaczęliście naukę?
 
Myślę, że wystarczy zapoznać się z działami:
2 – The Language
5 – Standard Libraries
Są to podstawy LUA, które raczej warto poznać.
 
ja tam co do kodu nieraz chaotycznie i beznadziejnie piszę skrypty ale bardziej patrzę na to czy działają

Najlepiej pisać skrypty dla siebie i robić proste/średnio złożone skrypty na zamówienie - za darmo ale z haczykiem że kod piszesz głównie dla siebie i sam również go wykorzystasz
No i co do funkcji lua jeśli nie wiesz dokładnie jak coś działa szukasz przykładu w czymś co ją wykorzystuje po czym kopiujesz i zmieniasz parametry tak by działała pod twój skrypt
Ekspertem w lua nie jestem dalej ze stringami i tabelami mam nieco kłopot ale poziom na którym umiem pisać w lua w pełni mnie zadowala

Ja zaczynałem od actions, kończąc na globaleventach i złożonych rpgowych npc które mają po 25 keywordów i kilka misji(dla przykładu zwariowany npc od oaka w moim datapacku)
 
weź sobie znajdź na necie jakieś zadania matematyczne takie bardziej na logikę i rób sobie skrypty ;s

polecam Lua Manual, all funkcje ładnie wypisane z opisem
 
Poczytać trochę na lua.org. Lua nie jest trudnym językiem do opanowania. Skrypty najlepiej zacząć od rozrysowania sobie co i jak, a pózniej do roboty. Uzywaj jak najwięcej pętli i staraj się, aby kod był najwydajniejszy (im mniej funkcji użytych w skrypcie, tym mniej pamieci zezre). Dobrym ćwiczeniem jest też czytanie skryptów innych ludzi (np. Darkhaosa albo Mocka).
 
Ja zaczalem od zapoznania sie z cala lista funkcji i kilkoma skryptami (fishing rod, obsidian knife, potions). Pozniej postanowilem napisac skrypt actions, u mnie to bylo zmiana profesji, speed, max hp i outfitu. Potem dodalem do tego tabele. Dalej to juz luzem samo lecialo z gorki.

@up
I tabel! Bo jak patrze na niekotre kody np. transy to ahh... szkoda gadac...
 
Wziąłem się za siebie już jestem w fazie 'testów' mojego pierwszego skryptu. Po prostu jeśli jest ktoś kto byłby w stanie dać mi dobrą radę to chętnie jej wysłucham :).

Przy okazji chciałbym spytać - co w tej funkcji:
Code:
 doPlayerAddItem(cid, 5880[1])
jest nie tak? Kompilator wysyła mi ten błąd:
luac: prog.lua:17: ')' expected near '['
 
no, wrzucasz numer z indeksem
a zmienna nie może mieć nazwy z samych cyfr
więc tak nazywać się tablica również nie może
 
No właśnie dopiero przed chwilą się dowiedziałem, że kwadratowe klamry są od tablic. Ale dzięki:).
 
Wziąłem się za siebie już jestem w fazie 'testów' mojego pierwszego skryptu. Po prostu jeśli jest ktoś kto byłby w stanie dać mi dobrą radę to chętnie jej wysłucham :).

Przy okazji chciałbym spytać - co w tej funkcji:
Code:
 doPlayerAddItem(cid, 5880[1])
jest nie tak? Kompilator wysyła mi ten błąd:
tak jak napisałeś odniosłeś się do nieistniejącej tabeli o nazwie 5880
jak chcesz item to
Code:
doPlayerAddItem(cid, 5880, 1)

a jak tabelę to
Code:
nagroda = {5880, 1}
doPlayerAddItem(cid, nagroda[1], nagroda[2])
 
A jak chcesz zrobić by np. dodać wiele itemów szybko to zrobić coś takiego np.:

Lua:
nagrody = {2222, 1, 3333, 4, 5252, 29}
for itemek = 1, #nagrody do
	if nagrody[itemek] > 100 then
		doPlayerAddItem(cid, nagrody[itemek], nagrody[itemek+1])
	end
end

- - - Updated - - -

można też tak:
Lua:
nagrody_tbl = {
	[2222] = {1},
	[3333] = {4},
	[5252] = {29},
	}

for item_id, item_count in pairs(nagrody_tbl) do
	doPlayerAddItem(cid, item_id, item_count)
end
 
A jak chcesz zrobić by np. dodać wiele itemów szybko to zrobić coś takiego np.:

Lua:
nagrody = {2222, 1, 3333, 4, 5252, 29}
for itemek = 1, #nagrody do
	if nagrody[itemek] > 100 then
		doPlayerAddItem(cid, nagrody[itemek], nagrody[itemek+1])
	end
end

no chyba nie
 
Nie chodzi o wynik, a o to, ze ten skrypt to straszna kupa.
 
Back
Top