Witamy sympatyków GTA na forum GTAOnline Obecny czas to 2012-05-20, 02:58 Zarejestrowanych: 40331
Panel Logowania


Zapamiętaj moje hasło.
Strona główna | Rejestracja | Użytkownicy | Grupy | Faq | Regulamin | Zaloguj

Poprzedni temat :: Następny temat
[LUA] Łączenie zasobów
Autor Wiadomość
Pioruniasty  Piszę, więc jestem.





Informacje
Nick w MP: Piorun
Na forum: 1584 dni
Posty: 897
Piwa: 163
Respekt: 99,7
Głosy: 7



Wysłany: 2011-07-04, 17:07   [LUA] Łączenie zasobów


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.
_________________
Project: San Andreas
Projekt serwera RP w MTA. Na razie istniejemy
jako strona na Facebook'u. Możesz nas polubić,
skomentować i oceniać naszą pracę.
Ostatnio zmieniony przez Shaun 2011-07-04, 17:59, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
Tagi: [lua] :: łączenie :: zasobów
Anonymous



Dołaczył: Wczoraj 0:00
Posty: 1
Skad: google.com


Anonymous Koniecznie zajrzyj na:




Miejsce na Twoją reklamę!





Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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
Wersja do druku

Skocz do:  


phpBB by Przemo modified by xXx 2003-2012

Template GTAONLINE created by gtaonline.pl



Dubbing w grach, wywiady, recenzje - DUBSCORE.pl
Strona wygenerowana w 0,27 sekundy. Zapytań do SQL: 16