Komentarze

# The Lost and Damned Tips: Chopper vs. Chopper
  1. gra wygląda ciekawie, chciałem w nia pograć, ale nikt nie dołącza do mojego serwera...

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..

MTA crazy clothes tutorial

Policzmy ubrania

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

Kod
local count = {}

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

Kod
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ć:

Kod
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ę:

Kod
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.

Kod
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):

Kod
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żeli zajdzie taka potrzeba:

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

Teraz zwyczajnie wylosujmy typ ubrania:

Kod
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żeli „dane źródłowe” będą pasowały do naszej funkcji (bardziej dokładniej opisane zostaną za chwilę) i kiedy ona sama startuje.

Kod
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:

Kod
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.

Kod
–0 znaczy tyle, co nieskończoność, a właściwie do czasu, kiedy licznik zostanie zatrzymany
setTimer ( ‘doChangeClothes’, 2000, 0 )
end