De Javu
Advanced User
- Joined
- Apr 4, 2008
- Messages
- 150
- Reaction score
- 20
Witam
W tym temacie dam wam par? przydatnych link?w, dzi?ki kt?rym ka?dy b?dzie m?g? zobaczy? na czym polegaj? LUA, XML, SQL, C++ czyli tak zwane j?zyki programowania.
Wikipedia:
\m/ kul \m/
LUA
1. Czym jest lua?LUA
2. Do czego wykorzystujemy lua w OTSach?
3. Jak napisa? skrypt lua? Podstawy.
1. Czym jest lua?
Lua jest j?zykiem programowania pierwotnie zaprojektowanym dla rozszerzenia funkcjonalno?ci r??nych aplikacji, jednak cz?sto u?ywany jest 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 wg standardu ANSI C. Celami implementacji s?: prostota, wydajno?? i przeno?no?? kodu.
?r?d?o:
Tak wi?c, najnormalniej, najzwyklej, po ludzku lua to j?zyk programowania znany ze swojej prostoty i wydajno?ci.
2. Do czego wykorzystujemy lua w OTSach?
W OTSach lua jest jednym z podstawowych j?zyk?w programowania.
J?zyki OTSa:
OTS = C++ sk?adaj?ce si? z dokument?w XML zawieraj?cych (w wi?kszo?ci) odno?niki do lua.
Konkretniej, j?zyk lua jest wykorzystywany w skryptach
- akcji (actions)
- czar?w (spells)
- przemieszczania (movements)
- npc (skrypty do npc)
- akcji s??w (niedos?ownie talkactions)
- innych (config, global itd.)*---------------\/
jednak ka?dy ze skrypt?w lua opr?cz innych* musi by? "podpi?ty" pod odpowiedni dokument XML, ale za to ?aden dokument XML nie musi mie? skryptu lua.
3. Jak napisa? skrypt lua? Podstawy.
Code:
Dobrym plikiem lua, kt?ry jest w otsie, a kt?ry si? przyda do pisania skrypt?w, to global.lua (w folderze data).
Zacznijmy od skryptu akcji (actions).
Code:
[COLOR="#ff0000"]function onUse(cid, item, frompos, item2, topos)[/COLOR]
[COLOR="#0000ff"]doPlayerSay[/COLOR](cid, "[COLOR="SeaGreen"]Napisalem skrypt lua![/COLOR]", 16)
end
I teraz tak:
*Na czerwono zaznaczy?em pocz?tek skryptu - tak zaczyna si? prawie ka?dy skrypt lua z u?yciem. Istniej? r?wnie? inne rodzaje, np. onStepIn (funkcja nadepni?cia) itp. Wa?ne, ?eby zawsze skopiowa? ten pocz?tek do skryptu "z u?yciem". Wa?ne! BEZ TEGO POCZ?TKU SKRYPT NIE B?DZIE DZIA?A?!!!
*Na niebiesko zaznaczy?em FUNKCJ?. Jest to najwa?niejsza cz??? skryptu. Ona opisuje co ma si? wydarzy?. Dla ludzi ze znajomo?ci? podstaw angielskiego, edytowanie skrypt?w nie powinno sprawia? trudno?ci.
>doPlayerSay w wolnym t?umaczeniu znaczy "zr?bGraczPowiedz" <--- mimo tej dziwnej sk?adni chyba wszyscy wiemy o co chodzi?
*Na zielono zaznaczy?em atrybuty funkcji. Opisuj? one konkrety funkcji, oddziela si? je przecinkami. Ten sk?ada si? akurat z:
cid - nie za bardzo wiem o co chodzi, to jest jak umlaut czasownika twardego w niemieckim - do ka?dego skryptu musisz zapami?ta? w?asny "przedrostek".
"Napisa?em skrypt lua!" - tutaj jest tekst kt?ry gracz ma "zrobi?GraczPowiedzie?", czyli po prostu powiedzie?. To mo?e by? "lol", "Nabuchodonozor Drugi", "Je$t3M SwEeT", ale nie mo?e by?: "Nabuchodonozor Drugi d??y? do podboju Egiptu", poniewa? "d??y?" zawiera polskie litery.
16 - tutaj nie mo?na domy?le? si? o co chodzi, trzeba po prostu wiedzie?. Wiedzie?, ?e to jest KOLOR. Kolory oraz inne przydatne rzeczy s? w?a?nie zawarte w global.lua, w tym przypadku:
Code:
TALKTYPE_SAY = 1
TALKTYPE_WHISPER = 2
TALKTYPE_YELL = 3
TALKTYPE_PRIVATE = 4
TALKTYPE_CHANNEL_Y = 5
TALKTYPE_BROADCAST = 9
TALKTYPE_CHANNEL_R1 = 10
TALKTYPE_PRIVATE_RED = 11
TALKTYPE_CHANNEL_O = 12
TALKTYPE_CHANNEL_R2 = 14
[COLOR="#ff8c00"]TALKTYPE_ORANGE_1 = 16[/COLOR]
TALKTYPE_ORANGE_2 = 17
Jest to kolor pomara?czowy, odcie? 1.
*I na pomara?czowo zaznaczy?em koniec. "end" to po angielsku koniec - chyba ka?dy to wie. Ale nie ka?dy wie, ?e "end" w lua nie oznacza ko?ca SKRYPTU, a jedynie koniec FUNKCJI. W bardziej z?o?onych skryptach "end" pojawia si? kilkadziesi?t, kilkaset razy!
Dobrze. To koniec skryptu.
Zapisujemy go w data/actions/scripts jako posag.lua (tu te? odradzam polskich znak?w).
W??czamy OTSa. I co? Nie dzia?a.
Dlaczego?
Poniewa? musimy go, jak ju? wspomnia?em, PODPI?? pod dokument XML. W tym przypadku actions.xml. Znajduje si? on w data/actions. Otwieramy go za pomoc? notatnika i mi?dzy:
Code:
<?xml version="1.0"?>
<actions>
a
Code:
</actions>
wklejamy:
Code:
<action itemid="xxxx" script="posag.lua" />
wtedy po klikni?ciu na item o ID xxxx wy?wietli si? nad nasz? g?ow? tekst albo wklejamy
<action uniqueid (lub actionid)="xxxx" script="posag.lua" />
wtedy po klikni?ciu na przedmiot (byle jaki) o uniqueid (lub actionid), kt?re mo?emy ustawi? w MapEdytorze r?wnym xxxx wy?wietli si? nad nasz? g?ow? tekst.
Download:
-- to plik w notatniku ze wszystkimi funkcjami.
Last edited: