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

Wysłany: 2011-07-04, 17:07


Piorun







Wiek: 32
Na forum: 6712 dni
Posty: 1837
Nick w MP: Piorun

Piwa: 516

Respekt: 480,7
Respekt: 480,7

Operacje na funkcjach 'call'
(wykorzystywanie funkcji z jednego zasobu w innych)


1. Przygotowanie funkcji

Ka?da funkcja, kt?ra b?dzie odwo?ywana powinna zwraca? jakie? warto?ci (wi?cej tutaj, dzia? numer 4). Przyk?adowa funkcja zwracaj?ca np. nick gracza.
Kod:

function showMeMyName(player)

playerName = getPlayerName(player)
return playerName

end

I tak, gdy odwo?amy si? w jakim? innym zasobie do tej funkcji zwr?ci ona nam nick gracza.

2. 'export' w Meta.xml

Drug? wa?n? rzecz?, o kt?rej nie mo?na zapomnie? jest dodanie odpowiedniej linijki do pliku Meta.xml. Tak wi?c otwieramy w/w plik i dodajemy linijk?:
Kod:

<export function="nazwa_funkcji_bez_nawias?w" type="server/client" http="true/false" />

Parametry type i http nie s? konieczne.
type - okre?la po kt?rej stronie funkcja ma dzia?a?. Je?eli nie uwzgl?dnimy tego parametru to funkcja b?dzie dzia?a? i po stronie serwera i po stronie klienta.
http - okre?la, czy funkcja mo?e by? wykorzystywana przez serwer http (www).

3. Funkcja 'call'

Przysz?a pora na ko?cowy etap, a konkretnie odwo?anie si? do funkcji w jakim? innym zasobie. Otwieramy dowolny plik ?r?d?owy (ten z rozszerzeniem .lua) i umieszczamy kod:
Kod:

function nowa_nazwa_funkcji()
call(getResourceFromName("nazwa_zasobu_z_kt?rego_ma_zosta?_pobrana_funkcja"), "nazwa_funkcji", parametr1, parametr2, ...)
end
addCommandHandler("test", nowa_nazwa_funkcji)

W naszym przypadku b?dzie to wygl?da? tak:
Kod:

function myCommand()
call(getResourceFromName("examplename"), "showMeMyName", source)
end
addCommandHandler("test", myCommand)

Daje nam to tylko odwo?anie bez ?adnego efektu. Aby uzyska? go wystarczy ob?o?y? funkcj? 'call' zmienn?, oraz doda? funkcj? outputChatBox:
Kod:

function myCommand()
local name = call(getResourceFromName("examplename"), "showMeMyName", source)
outputChatBox(name)
end
addCommandHandler("test", myCommand)

Dzi?ki temu po wpisaniu komendy "/test" pojawi si? nam nasz nick.
Oczywi?cie to s? przyk?adowe funkcje. Skrypterzy u?atwiaj? sobie dzi?ki temu prac?, bo zamiast kopiowa? i wkleja? ponownie par? linijek kodu, mog? si? odwo?a? do ju? istniej?cej funkcji.

4. Post scriptum

Mo?ecie si? r?wnie? spotka? z poni?szymi funkcjami, kt?re r?wnie? dzia?aj? jak funkcja 'call':

  • exports.nazwa_zasobu:nazwa_funkcji ( parametr1, parametr2, ... )

lub dla nazwy zasobu, kt?ra zawiera dodatkowe znaki
  • exports["nazwa_zasobu"]:nazwa_funkcji ( parametr1, parametr2, ... )


Na po?egnanie - mi?ej zabawy z Lua.
Dzi?kuje jeszcze raz za przeczytanie powy?szego tutka.
Pozdrawiam, Piorun.

Podpis
Możesz mnie znaleźć na: Facebook
Ostatnio zmieniony przez Shaun 2011-07-04, 17:59, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-07-21, 00:23


Morales







Wiek: 28
Na forum: 5562 dni
Posty: 3
Nick w MP: Taku Kamachi



Respekt: 50

Ostrzeżeń: 20%
W sumie nic nie rozumiem, ale piffko leci. :D

Postaw piwo autorowi tego posta
 

 
Wysłany: 2012-08-25, 02:28


adam454







Wiek: 44
Na forum: 6917 dni
Posty: 4



Respekt: 50

Ostrzeżeń: 20%
Bardzo ciekawy tutorial.

Pozdrawiam.

Postaw piwo autorowi tego posta
 

 
Tagi: [lua] :: łączenie :: zasobów
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] Łączenie zasobów 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