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

Wysłany: 2016-11-13, 04:51


noose

JESTĘ SKRYPTERĘ






Wiek: 35
Na forum: 3756 dni
Posty: 222

Piwa: 2294

Respekt: 155,8
Respekt: 155,8Respekt: 155,8

Witam
.
Dzi? postanowi?em napisa? pierwszy m?j poradnik dla tego serwisu. B?dzie to poradnik opisuj?cy jak stworzy? komend? po stronie serwera z dodatkowymi parametrami

Czym s? parametry?
Parametry funkcji to dodatkowe parametry, kt?re mo?emy wpisa? po komendzie, czyli np
/testowakomenda parametr1 parametr2
To, do czego nam pos?u?? (co b?d? pobiera?, lub wykonywa?), zale?y Tylko i wy??cznie od Twojej inwencji tw?rczej.
?eby zacz?? tworzy? skrypt z parametrami, nale?y pami?ta?, ?e w LUA, skrypty s? czytane "s?owo po s?owie", dos?ownie :) sprawdzane/wykonywane jest kolejno ka?de zdanie w linijce, dlatego przy dodawaniu parametr?w do komendy, wa?ne jest by zachowa? czytelno??/przejrzysto?? kodu, by skrypt m?g? 'zrozumie?', czego od niego oczekujesz.

Dodawanie parametr?w do funkcji
Dodawanie parametr?w jest bardzo proste. Po dw?ch pierwszych parametrach podstawowych plr,cmd (kt?re s? wymagane), kolejno po przecinku wpisujemy swoje parametry.
function mojafunkcja(plr,cmd,param1,param2)

plr - jest to zmienna gracza wpisuj?cego komend?*
cmd - komenda, kt?ra b?dzie elementem docelowym/wywo?uj?cym w naszej funkcji*
param1 - dodatkowy parametr(1)
param2 - dodatkowy parametr(2)

* 2 pierwsze parametry (z czerwon? gwiazdk?) s? wymagane. Ich pomini?cie b?dzie skutkowa?o tym, ?e funkcja nie b?dzie dzia?a? tak jak nale?y

Limit parametr?w w funkcji
Z tego co mi wiadomo, nie ma ograniczenia je?li chodzi o te parametry dodatkowe. Mo?esz ich doda? ile tylko zechcesz, o ile p??niej b?dziesz w stanie sobie poradzi? z ich oskryptowaniem :P

Jak to wygl?da w praktyce
Za???my, ?e chcemy stworzy? obiekt za pomoc? komendy, lecz nie chcemy tworzy? 2 oddzielnych komend dla ka?dego obiektu. I tutaj w?a?nie pomog? nam parametry.

function obiekty(plr,cmd,cotworze)
[Tworzymy now? funkcj?, w kt?rej parametrem dodatkowym b?dzie cotworze]
cotworze = tostring(cotworze)
[ten kod definiuje nam, w jakiej postaci jest wpisywany nasz parametr.
tostring - litera/ci?g liter
tonumber - cyfra/ci?g cyfr]

if not cotworze then return outputChatBox("Brak parametru",plr, 255, 0, 0) end
local x,y,z = getElementPosition(plr)
[if not cotworze - je?li nie podano parametru komendy, to...w naszym przypadku, komenda nie wykona si?]
if cotworze == "barierka" then
local barierka = createObject(1459, x,y,z-0.32)
[Gdy po komendzie postaw wpiszemy barierka, skrypt stworzy nam barierk? na pozycji gracza]
elseif cotworze == "pacholek" then
local pacholek = createObject(1238, x,y,z-0.65)
[Gdy po komendzie postaw wpiszemy pacholek, skrypt stworzy nam pacholek na pozycji gracza]
end
end
addCommandHandler("postaw",obiekty)

Wystarczy wpisa? w MTA /postaw pacholek lub /postaw barierka a skrypt zrobi swoje.

Inny przyk?ad(?eby zaprezentowa? mo?liwo?ci zastosowania parametr?w)
function testy(plr,cmd,par1,par2)
if par1 ~= "a" or par1 ~= "b" or not par1 then return end
if par1 == "a" then
dozrobienia
end
elseif par1 == "b" then
if par2 ~= "c" or par2 ~= "d" or not par2 then return end
if par2 == "c" then
dozrobienia
elseif par2 == "d" then
dozrobienia
end
end
end
end
addCommandHandler("testujemy",testy)

Co nast?puje w takiej sytuacji:
Pierwszy parametr ma 2 mo?liwo?ci: a lub b
je?li pierwszy parametr to
a - to co? si? wykona, poprostu.
b - to wymagany jest parametr2 o warto?ci c lub d

jak b?dzie to wygl?da? w praktyce
/testujemy a - taka komenda zadzia?a, co? si? wykona
/testujemy b skrypt nie zadzia?a, poniewa? do parametru b, wymagany jest parametr2 o warto?ci c lub d
/testujemy b c - zadzia?a
/testujemy b d - zadzia?a


Nie jest to szczeg?lnie trudna sprawa. Wystarczy pami?ta?, ?e w LUA sprawdzane/wykonywane jest kolejno ka?dy wyraz w linijce, dlatego przy dodawaniu parametr?w do komendy, wa?ne jest by zachowa? czytelno??/przejrzysto?? kodu, by skrypt m?g? 'zrozumie?', czego od niego oczekujesz, oraz aby? Ty m?g? go ?atwo zrozumie?, gdyby? chcia? co? zmieni?/doda?/usun??. I nie tylko przy zabawie z parametrami, zawsze nale?y pami?ta? o zachowaniu przejrzysto?ci kodu, u?ywaniu tabulator?w, wspomaganiu si? Wikipedi? MTA, lub skromn? pomoc? Nas tutaj egzystuj?cych. Je?li Wasze skrypty b?d? mia?y minimum tej przejrzysto?ci, a Wy logiki my?lenia, gwarantuj? Wam, ?e ?aden skrypt nie b?dzie dla Was trudny do napisania:)

No i tyle.
JE?LI WYTRWA?E? DO TEJ LINIJKI: Dzi?kuje za przeczytanie tego poradnika do ko?ca, i ?ycz?, sukces?w :)

Postaw piwo autorowi tego posta
 

 
Tagi: [s-side]komenda :: parametrami
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 » [S-SIDE]Komenda z parametrami 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