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

Wysłany: 2022-10-01, 18:46


S2YM3K







Wiek: 25
Na forum: 2478 dni
Posty: 2

Piwa: 5

Respekt: 50

Siemka. Ucze sie pisania w lua i napotka?em problem nad kt?rym siedze ju? d?u?szy czas. Przerabiam skrypt na myjnie. Fukcja po stronie serwera dzia?a?a do momentu a? doda?em setElementFrozen. Od tego momentu pokazuje b??d Bad argument @ "getPlayerOccupiedVechicle"[Expected ped at argument 1, got nil].
serwer



addEvent("onserver",true)

local kwota 100;

function umyj thePlayer)

    local playerVehicle getPlayerOccupiedVehicle thePlayer ) 

    if playerVehicle then 
local currentFreezeStatus isElementFrozen playerVehicle )
        
        local newFreezeStatus not currentFreezeStatus
        
        setElementFrozen playerVehiclenewFreezeStatus )
                    fadeCamera thePlayerfalse2.500)
           setTimer fadeCamera25001thePlayertrue2.5)
            outputChatBox "Witamy na myjni samochodowej!"thePlayer0255255true )
    end
end


addEventHandler("onserver",getRootElement(),umyj)



client
myShader dxCreateShader"texture.fx" )
local kwota 100
local x,y,1911.2, -177612
local Marker createMarker(xyz"cylinder"525500150)
local blip createBlip(1911.2, -17761240) 

  function cleancar (player)
        local vehicle getPlayerOccupiedVehicle player )
        if kwota<=getPlayerMoney(playerthen
        if vehicle then
            engineApplyShaderToWorldTexturemyShader"vehiclegrunge256"vehicle )
            engineApplyShaderToWorldTexturemyShader"?emap*"vehicle )
             triggerServerEvent ("onserver"playerumyj)
        end
    end
    end
addEventHandler("onClientMarkerHit"Markercleancar)



Nie chce ?eby kto? tylko wrzuci? mi tu poprawny kod. Chcia?bym zrozumie? co robie ?le, bardzo prosze o wyja?nienie.

Jest jeszcze druga sprawa. Pobieranie pieni?dzy mo?e by? po stronie clienta czy musi by? po stronie serwera?

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 3 piw(a):
fiXlly., lagerek, borsuk
Wysłany: 2022-10-02, 14:23


Karolowatyy







Wiek: 25
Na forum: 3286 dni
Posty: 117
Nick w MP: Ripley

Piwa: 826

Respekt: 90

Ostrzeżeń: 20%
https://wiki.multitheftauto.com/wiki/GetPlayerOccupiedVehicle

^^ ta funkcja jest przestarza?a i ju? nie ma jej w tej wersji MTA.

Zamiast tamtej funkcji u?yj:

https://wiki.multitheftauto.com/wiki/GetPedOccupiedVehicle

Kase zabieraj po stronie sside

Ostatnio zmieniony przez Karolowatyy 2022-10-02, 17:19, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 2 piw(a):
fiXlly., borsuk
Wysłany: 2022-10-02, 15:11


xyzzzikk

.gg






Wiek: 18
Na forum: 2774 dni
Posty: 175
Nick w MP: aspyk

Piwa: 6499

Respekt: 30,5

"S2YM3K" napisał/a:


Jest jeszcze druga sprawa. Pobieranie pieni?dzy mo?e by? po stronie clienta czy musi by? po stronie serwera?

musi byc po strone serwera, nawet powinno sie robic wiekszosc rzeczy po sside

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 2 piw(a):
fiXlly., borsuk
Wysłany: 2022-10-02, 16:15


Przemcio







Wiek: 32
Na forum: 1926 dni
Posty: 58

Piwa: 79

Respekt: 80

Nie musi, mo?e by? u clienta. Oczywi?cie lepiej zrobi? to po stronie serwera dla samych zabezpiecze?, ale na ten moment MTA ma takie zabezpieczenia, ?e cheatowanie nie jest mo?liwe.

Co do b??du, na przysz?o?? - je?li masz taki b??d to oznacza, ?e w pierwszym argumencie funkcja oczekiwa?a peda (czyli element MTA), a dosta?a nic (nil), tak?e debugujesz sobie zmienn?, kt?r? tam podstawiasz. Prawdopodobnie wynika to z tego co napisa? ju? Karolowatyy (funkcja jest przestarza?a), ale je?li nie, no to zacznij od wy?wietlenia co zwraca GetPedOccupiedVehicle za pomoc? np. outputConsole albo outputChatBox, bo je?li dostajesz nila, to co? nie tak pobierasz.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 2 piw(a):
fiXlly., borsuk
Wysłany: 2022-10-02, 19:36


S2YM3K







Wiek: 25
Na forum: 2478 dni
Posty: 2

Piwa: 5

Respekt: 50

Bardzo dzi?kuje za wszystkie odpowiedzi. Przetestowa?em tak jak pisali?cie jednak zmiana funkcji nie przynios?a ?adnych efekt?w. Pokombinowa?em jeszcze troch? i zmieni?em addEventHandler("onserver",root,umyj) na addCommandHandler ( "wykonaj", umyj ) i w tym momencie funkcja dzia?a poprawnie. Dlaczego na addEventHandler nie dzia?a? Oczywi?cie poczyta?em o tym na mta wiki ale nie znalaz?em niczego co pomog?o by mi rozwi?za? ten problem.
Jeszcze raz wklejam tu kod
Client

myShader dxCreateShader"texture.fx" )
local kwota 100
local x,y,1911.2, -177612
local Marker createMarker(xyz"cylinder"525500150)
local blip createBlip(1911.2, -17761240) 

  function cleancar (thePlayer )
        local vehicle =  getPedOccupiedVehicle thePlayer  )
        if kwota<=getPlayerMoney(thePlayer then
        if vehicle then
            engineApplyShaderToWorldTexturemyShader"vehiclegrunge256"vehicle )
            engineApplyShaderToWorldTexturemyShader"?emap*"vehicle )
             triggerServerEvent ("onserver"thePlayer umyj)
        end
    end
    end
addEventHandler("onClientMarkerHit"Markercleancar)


Server side
ten dzia?a

addEvent("onserver",true)

local kwota 100;

function umyj thePlayer)
 local theVehicle getPedOccupiedVehicle thePlayer )
    if theVehicle then
local currentFreezeStatus isElementFrozen (theVehicle)
        local newFreezeStatus not currentFreezeStatus
        setElementFrozen theVehicle newFreezeStatus )
                    fadeCamera thePlayerfalse2.500)
          setTimer fadeCamera25001thePlayertrue2.5)
           outputChatBox "Witamy na myjni samochodowej!"thePlayer0255255true )
    end
end

addCommandHandler "wykonaj"umyj )

server side
A ten nie dzia?a

addEvent("onserver",true)

local kwota 100;

function umyj thePlayer)
 local theVehicle getPedOccupiedVehicle thePlayer )
    if theVehicle then
local currentFreezeStatus isElementFrozen (theVehicle)
        local newFreezeStatus not currentFreezeStatus
        setElementFrozen theVehicle newFreezeStatus )
                    fadeCamera thePlayerfalse2.500)
          setTimer fadeCamera25001thePlayertrue2.5)
           outputChatBox "Witamy na myjni samochodowej!"thePlayer0255255true )
    end
end
addEventHandler("onserver",getRootElement(),umyj)


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 2 piw(a):
fiXlly., borsuk
Wysłany: 2022-10-03, 09:55


Przemcio







Wiek: 32
Na forum: 1926 dni
Posty: 58

Piwa: 79

Respekt: 80

Nie dzia?a, bo wysy?asz dane stricte clienckie do servera, czyli

triggerServerEvent ("onserver"playerumyj)


"player" to element, kt?rego server nie rozpoznaje (zgaduj?, ?e to localPlayer). Zmie? "player" na "resourceRoot", a na serverze wywal ca?kiem te "thePlayer" i zmie? to na client - nie dawaj tego jako argument funkcji, po prostu sama nazwaFunkcji(), a "w ?rodku" u?ywasz client zamiast "thePlayer".

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 2 piw(a):
fiXlly., borsuk
Tagi: fukcja :: nie :: czyta :: argumentu
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA 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
Dodaj temat do Ulubionych
Wersja do druku