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

Wysłany: 2017-05-08, 22:00


pendehos







Wiek: 30
Na forum: 3317 dni
Posty: 7



Respekt: 50

No wi?c 3 dni temu zacz??em nauk? j?zyka Lua (chc? w przysz?o?ci postawi? jaki? serwer MTA:SA) i postanowi?em na swoje pierwsze zadanie wykona? prost? prac? dowoziciela Pizzy. W pewnym momencie gracz musi stan?? w obr?bie markera, b?d?c na skuterze. I problem w tym, ?e mam problem ze sprawdzeniem tego - wyskakuje b??d.

Po stronie clienta za ka?dym razem, gdy wsi?dzie w jakikolwiek pojazd jest zapisywana zmienna z jego nazw?:


function checkVehicles()
    theVehicle getPedOccupiedVehicle(source)
    pojazd getVehicleName(theVehicle)
end
addEventHandler("onClientPlayerVehicleEnter",getRootElement(),checkVehicles)



a po stronie serwera jest utworzony marker i funkcja przywo?uj?ca zmienn? pojazd (t? po stronie clienta):


marker createMarker(2101.810546875,-1806.984375,11.5546875'cylinder'4.0255,100,0,100)

function MarkerHithitElementmatchingDimension ) 
    local elementType getElementTypehitElement ) 
    outputChatBoxelementType.." inside myMarker"getRootElement(), 255255)
    outputChatBox("pojazd: "..pojazd)
end
addEventHandler"onMarkerHit"markerMarkerHit )



No i przy wej?ciu w marker w okienku czatu, ?e player wszed? w marker, przy wjechaniu skuterem, wyskakuje ?e player i vehicle - co jest wporzadku. Problem jest z t? dan? pojazd. W konsoli przy ka?dym wej?ciu w marker pojawia si? komunikat:

ERROR: mojserver\script.lua:66: attempt to concatenate global 'pojazd' (a nil value)


Z g?ry dopowiem, ?e wy?ej wymienione kody znajduj? si? w tym samym folderze, ale w oddzielnych plikach, z kt?rego pierwszy jest zdefiniowany jako client, a drugi jako server. Sk?d si? bierze ten b??d? Czy serwer nie mo?e u?ywa? w ten spos?b zmiennych utworzonych po stronie clienta? Troch? mi si? przez to wszystko miesza strona clienta i serwera. Czy m?g?by kto? to sensownie wyt?umaczy?? Z g?ry dzi?kuj? za ka?d? pomocn? wypowied?.[/quote]

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-05-08, 22:07


amited







Wiek: 26
Na forum: 3714 dni
Posty: 1233
Nick w MP: Amited

Piwa: 512

Respekt: 466
Respekt: 466


outputChatBox("pojazd: "..pojazd)

Zmienna pojazd jest znana tylko po stronie clienta. Strona servera nic o niej nie wie mimo ?e jest pobliczna.

Podpis
"amited" napisał/a:
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-05-08, 22:15


pendehos







Wiek: 30
Na forum: 3317 dni
Posty: 7



Respekt: 50

Jak wi?c zrobi? co? takiego tylko po stronie serwera? Z tego co wiem (oczywi?cie prosz? nie przyj?? tego jak jaki? atak), to w?a?nie client ma dost?p do rzeczy, kt?re dziej? si? wok?? niego. Nie wiem jakiej funkcji u?y?, aby to server sprawdzi?, w jakim poje?dzie znajduje si? gracz.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-05-08, 23:40


amited







Wiek: 26
Na forum: 3714 dni
Posty: 1233
Nick w MP: Amited

Piwa: 512

Respekt: 466
Respekt: 466

np triggerem:

function checkVehicles()
    theVehicle getPedOccupiedVehicle(source)
    pojazd getVehicleName(theVehicle)
triggerServerEvent("sss",source,pojazd)
end
addEventHandler("onClientPlayerVehicleEnter",getRootElement(),checkVehicles)

--server
addEvent("sss",true)
addEventHandler("sss",root,function(veh)
pojazd=veh
end)

marker createMarker(2101.810546875,-1806.984375,11.5546875'cylinder'4.0255,100,0,100)

function MarkerHithitElementmatchingDimension ) 
    local elementType getElementTypehitElement ) 
    outputChatBoxelementType.." inside myMarker"getRootElement(), 255255)
    outputChatBox("pojazd: "..pojazd)
end
addEventHandler"onMarkerHit"markerMarkerHit )

lub sprawdzaniem po stronie servera:

function MarkerHit(el,md) 
    local element getElementType(el)
if element=="player" then
local pojazd getPedOccupiedVehicle(el)
    outputChatBoxelement.." inside myMarker"getRootElement(), 255255)
    outputChatBox("pojazd: "..pojazd)
elseif element=="vehicle" then
local pojazd getVehicleName(element)
    outputChatBoxelement.." inside myMarker"getRootElement(), 255255)
    outputChatBox("pojazd: "..pojazd)
end
end
addEventHandler"onMarkerHit"markerMarkerHit )

i teraz server powienien rozpozna? czym jest pojazd

Ostatnio zmieniony przez amited 2017-05-09, 15:03, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-05-09, 00:06


mtm

</3






Wiek: 26
Na forum: 3716 dni
Posty: 181

Piwa: 252

Respekt: 70

triggerServerEvent(source,"sss",source,pojazd)

?le to jest;
triggerServerEvent string eventelement theElement, [arguments...] )

czyli powinno by? tak;
triggerServerEvent("sss"sourcepojazd)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-05-09, 15:02


amited







Wiek: 26
Na forum: 3714 dni
Posty: 1233
Nick w MP: Amited

Piwa: 512

Respekt: 466
Respekt: 466

Taa przepraszam pomyli?y mi si? triggery xd

Podpis
"amited" napisał/a:
Postaw piwo autorowi tego posta
 

 
Tagi: attempt :: concatenate :: global :: nil :: value)
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » attempt to concatenate global (a nil value) 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