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

Wysłany: 2020-02-13, 19:53


ReMiK1337

Mapper / Uczeń LUA






Wiek: 17
Na forum: 935 dni
Posty: 314
Nick w MP: ToXu

Piwa: 6

Respekt: 160
Respekt: 160Respekt: 160


Siemka, mam problem z funkcją setPlayerWantedLevel.
Chce aby gracz, który ma ponad 50000$ miał jedną gwiazdkę i im więcej hajsu tym więcej gwiazdek, co widać w kodzie. Lecz tak jak mam to mi nie działa. Wie ktoś w czym leży problem? Kod jest po stronie serwera.

kod:

function gwiazdki(plr)
local pieniadze getElementData(plr"player:money")
if (pieniadze 50000then
setPlayerWantedLevel(plr1)
elseif (pieniadze 100000then
setPlayerWantedLevel(plr2)
elseif (pieniadze 150000then
setPlayerWantedLevel(plr3)
elseif (pieniadze 200000then
setPlayerWantedLevel(plr4)
elseif (pieniadze 250000then
setPlayerWantedLevel(plr5)
elseif (pieniadze 300000then
setPlayerWantedLevel(plr6)
end
end
addEventHandler("onResourceStart"rootgwiazdki)


db3:

WARNINGtest/test_s.lua:2Bad argument 'getElementData' [Expected element at argument 1got resource-data]


Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-02-13, 20:08


vNex

gtao.pl






Wiek: 20
Na forum: 1983 dni
Posty: 430
Nick w MP: Nexisten

Piwa: 917

Respekt: 241,5
Respekt: 241,5Respekt: 241,5



Więcej informacji znajdziesz w Wikipedii MTA:

onResourceStart

Poczytaj trochę, może sam wpadniesz na Twój błąd w kodzie.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-02-13, 21:13


ReMiK1337

Mapper / Uczeń LUA






Wiek: 17
Na forum: 935 dni
Posty: 314
Nick w MP: ToXu

Piwa: 6

Respekt: 160
Respekt: 160Respekt: 160


Nie wiem w czym może być problem. Nawet jak dałem tak:
addEventHandler ( "onResourceStart",getResourceRootElement(getThisResource()), gwiazdki )

To i tak nie działa, bez tego eventu również nic.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-02-13, 21:18


Szypki_exe

kng.Crystal






Wiek: 16
Na forum: 1115 dni
Posty: 103
Nick w MP: Crystal

Piwa: 911

Respekt: 90


"ReMiK1337" napisał/a:

Nie wiem w czym może być problem. Nawet jak dałem tak:
addEventHandler ( "onResourceStart",getResourceRootElement(getThisResource()), gwiazdki )

To i tak nie działa, bez tego eventu również nic.


Weź pod uwagę to że date "player:money" pobierasz ze skryptu w którym jest ten event, a nie gracza

inaczej:
zmienna "plr" to nie gracz, tylko skrypt w którym jest ten event

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-02-14, 00:02


ReMiK1337

Mapper / Uczeń LUA






Wiek: 17
Na forum: 935 dni
Posty: 314
Nick w MP: ToXu

Piwa: 6

Respekt: 160
Respekt: 160Respekt: 160


Czyli jakbym dał thePlayer to byłoby dobrze?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-02-14, 00:21


Gorn5







Wiek: 20
Na forum: 2151 dni
Posty: 22
Nick w MP: Rayzer

Piwa: 6

Respekt: 100
Respekt: 100


thePlayer w tym przypadku to tylko nadanie innej nazwy niezdefiniowanemu argumentowi funkcji, którego tak naprawdę nigdzie nie wywołujesz, bo event onResourceStart, oprócz uruchamianego zasobu, nie przyjmuje żadnych innych parametrów, które mógłbyś "na czysto" wykorzystać w kodzie. Musisz więc najpierw określić gracza. Polecam skorzystać z tego:

Więcej informacji znajdziesz w Wikipedii MTA:

onElementDataChange

W razie gdybyś miał problemy, zamieszczam nieprzetestowany kod:


function setWantedLevel(dataNameoldValuenewValue)
    if getElementType(source) == "player" and client == source then
        if (dataName == "player:money"then
            if (newValue ~= oldValue and newValue 50000then
                setPlayerWantedLevel(source1)
            elseif (newValue ~= oldValue and newValue 100000then
                setPlayerWantedLevel(source2)
            elseif (newValue ~= oldValue and newValue 200000then
                setPlayerWantedLevel(source3)
            end
        end
    end
end
addEventHandler("onElementDataChange"getRootElement(), setWantedLevel)


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
ReMiK1337
Wysłany: 2020-02-14, 06:31


Wilq







Wiek: 18
Na forum: 2304 dni
Posty: 2669

Piwa: 534

Respekt: 1025,8
Respekt: 1025,8



   Moderator: Cześć, pamiętaj, aby Twoje posty zawierały argumentację zgodną z regulaminem.
Powyższy kod ma mały błąd: sprawdzasz w nim stan 'client', co jest predefiniowane tylko po stronie klienta (event po serwerze).


Jeśli jednak dalej wolałbyś użyć eventu onResourceStart, to musisz wykonać pętlę na wszystkich graczach.

Więcej informacji znajdziesz w Wikipedii MTA:

getElementsByType


Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-02-14, 14:15


ReMiK1337

Mapper / Uczeń LUA






Wiek: 17
Na forum: 935 dni
Posty: 314
Nick w MP: ToXu

Piwa: 6

Respekt: 160
Respekt: 160Respekt: 160


Gorn5, kod niestety nie zbyt działa.

Wilq, nie do końca wiem jak to wykonać.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-02-14, 14:35


Gorn5







Wiek: 20
Na forum: 2151 dni
Posty: 22
Nick w MP: Rayzer

Piwa: 6

Respekt: 100
Respekt: 100


"Wilq" napisał/a:

Powyższy kod ma mały błąd: sprawdzasz w nim stan 'client', co jest predefiniowane tylko po stronie klienta (event po serwerze).

Cytat:

client: The client global variable is set to the client that called setElementData, or nil if it was called on the server.

Jest to zależne od strony, na której nadana została element data. Jeśli miałoby to miejsce po stronie clienta, warunek miałby jak najbardziej sens. Jednak skoro kod jest po stronie serwera, powinienem przyjąć, że autor ma zamiar nadać element datę również po tej samej stronie, więc fakt, warunek zbędny. ;)


function setWantedLevel(dataNameoldValuenewValue)
    if getElementType(source) == "player" then
        if (dataName == "player:money"then
            if (newValue 50000then
                setPlayerWantedLevel(source1)
            elseif (newValue 100000then
                setPlayerWantedLevel(source2)
            elseif (newValue 200000then
                setPlayerWantedLevel(source3)
            end
        end
    end
end
addEventHandler("onElementDataChange"getRootElement(), setWantedLevel)


"ReMiK1337" napisał/a:

Gorn5, kod niestety nie zbyt działa.

Pokaż kod, w którym nadajesz wymaganemu elementowi element date.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
ReMiK1337
Wysłany: 2020-02-14, 18:33


ReMiK1337

Mapper / Uczeń LUA






Wiek: 17
Na forum: 935 dni
Posty: 314
Nick w MP: ToXu

Piwa: 6

Respekt: 160
Respekt: 160Respekt: 160


Gorn5, z systemem pieniędzy nie jest nic źle bo wszystko działa, przy kupowaniu itd.

Teraz ten kod co dałeś to nie ważne ile mam pieniędzy to mam jedną gwiazdke

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-02-14, 19:16


Wilq







Wiek: 18
Na forum: 2304 dni
Posty: 2669

Piwa: 534

Respekt: 1025,8
Respekt: 1025,8



   Moderator: Cześć, pamiętaj, aby Twoje posty zawierały argumentację zgodną z regulaminem.
Dodaj warunek, kiedy masz więcej niż x pieniędzy i mniej niż y w następnym progu pieniężnym.

if (>= 50000) and (100000then


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
ReMiK1337
Wysłany: 2020-02-15, 09:40


ReMiK1337

Mapper / Uczeń LUA






Wiek: 17
Na forum: 935 dni
Posty: 314
Nick w MP: ToXu

Piwa: 6

Respekt: 160
Respekt: 160Respekt: 160


Dzięki wszystkim za pomoc, działa :D

Postaw piwo autorowi tego posta
 

 
Tagi: setplayerwantedlevel
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:









Wyświetl posty z ostatnich:   

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

Skocz do: