Komentarze

# Episodes from Liberty City dopiero w połowie kwietnia
  1. no ja <komuna>......

W tym tygodniu napiszemy skrypt, który będzie pozwalać na losowe zmienianie ubioru.. W tym przykładzie ustawimy zmiany na 2 sekundy, ale pamiętaj, że podczas zmiany ubrania może wystąpić krótki lag. Dlatego radzimy ustawiać skrypt tak, aby zmieniał ubrania w dość dużych odstępach czasu..

Video: scriptvideo3.avi – XviD codec (640×480, 30fps)

Skrypt: script3.lua

Policzmy ubrania…

Na samym początku pracy, musimy policzyć ile tak naprawdę mamy ubrać w każdej kategorii. Będziemy je trzymać w tabeli:
local count = {}

Mamy 18 różnych rodzajów ubrań. (będzie to udokumentowane tak jak reszta ID, kiedy mod zostanie wydany):

for type = 0, 17 do –wywołujemy licznik

local clothes = 0–stosujemy pętlę typu while, aby zwiększać go aż dojdzie do nieprawidłowego ID ubrania

while getClothesByTypeIndex ( type, clothes ) ~= false do

clothes = clothes + 1

end –pamiętajmy, że ostatni id w ogóle nie istnieje. Musimy go skasował

–z licznika, w którym jest przechowywany

count[type] = clothes – 1

end

Uwaga: Można również zrobić to za pomocą tabeli, jako że każda niezmodowana kopia gry ma taką samą liczbę ubrań w każdej kategorii.

Tworzenie funkcji zmieniającej ubrania

Przejdźmy do napisania głównej funkcji, która będzie faktycznie zmieniać ubrania. Na początku zadeklarujmy samą funkcję, abyśmy potem mogli jej używać:

function doChangeClothes ()
Teraz udostępnijmy ją dla każdego z podłączonych graczy. Można ich uzyskać, poprzez pobranie tabeli, w której są przechowywani przez serwer, potem zapętlimy skrypt tak, aby korzystając z niej zmieniać ubrania.. Pobierzmy więc samą tabelę:
local players = getElementsByType ( ‘player’ )
Następnie zastosujmy funkcję Lua FOR, jaką jeden z rodzajów pętli, aby przemieszczać się pomiędzy każdym z graczy w tabeli.

for i, player in players do
Na początku musimy wybrać ubranie losując je za pomocą funkcji Lua math.random. Nie zajmiemy się tatuażami, bo ich zwyczajnie nie widać pod ubraniami (ID 4-12):
local accessory = math.random ( 0, 1 )

if accessory == 1 then –ustawiamy akcesoria, takie jak okulary type = math.random ( 13, 17 ) else –następnie zajmujemy się fryzurami/koszulkami/spodniami/butami

type = math.random ( 0, 3 ) end
Ubrania, które są kompletami (ID 17) są normalnie zakładane na koszulki I spodnie, dlatego usuniemy je, jeżli zajdzie taka potrzeba:

if type == 0 or type == 2 then removePlayerClothes ( player, 17 ) end

Teraz zwyczajnie wylosujmy typ ubrania:
local clothing = math.random ( 0, count[type] )

–…I ubierzmy naszego gracza.
–pobieramy teksturą i model za pomocą funkcji getClothesByTypeIndex

texture, model = getClothesByTypeIndex ( type, clothing ) –I oczywiście zmieniamy sam wygląd gracza.

addPlayerClothes ( player, texture, model, type )
Nie wolno nam zapomnieć, aby zakończyć pętlę ‘for’ i deklarację funkcji.
End

End

Uruchomienie funkcji

Wreszcie, uruchamiamy naszą funkcję, jeżli ‘dane źródłowe’ będą pasowały do naszej funkcji (bardziej dokładniej opisane zostaną za chwilę) i kiedy ona sama startuje.

addEventHandler(‘onResourceStart’, getRootElement(), ‘clothesStart’)

function clothesStart ( resourcename )
Nasza funkcja clothesStart powinna być wywoływana tylko, gdy TEN skrypt startuje. Ta linia kodu zapobiega ładowania danych, które nie pasują do skryptu:

if resourcename ~= getThisResource() then return end
Ustawmy licznik za pomocą funkcji setTimer tak jak w poprzednim tutorialu. Wywoływać będziemy naszą funkcję co dwie sekundy. Język Lua korzysta z danych czasowych w postaci milisekund. Jedna sekunda odpowiada 1000 milisekund.

–0 znaczy tyle, co nieskończoność, a właściwie do czasu, kiedy licznik zostanie zatrzymany

setTimer ( ‘doChangeClothes’, 2000, 0 )

end

To tyle w tym tygodniu. Jeżeli masz jakieś pytania – zapraszamy na forum.