Wysłany: 2019-11-26, 19:46
Josemitek
Wiek: 26 Na forum: 2404 dni Posty: 17
Nick w MP: Josek
Witam, pr?buj? zrobi? skrypt na przesuwanie si? obiektu (chodzi o drzwi) i chc? to zrobi? tak by po wejsciu w marker, wyswietla nam sie gui, jesli klikniemy "otworz" otwieraja sie drzwi, jesli "zamknij" to zamykaja. GUIEditor = {
button = {},
window = {}
}
addEventHandler ( "onClientResourceStart" , resourceRoot ,
function()
GUIEditor . window [ 1 ] = guiCreateWindow ( 1063 , 423 , 194 , 308 , "Otw?rz/zamknij drzwi PSP" , false )
guiWindowSetSizable ( GUIEditor . window [ 1 ], false )
GUIEditor . button [ 1 ] = guiCreateButton ( 29 , 76 , 139 , 79 , "Otw?rz" , false , GUIEditor . window [ 1 ])
GUIEditor . button [ 2 ] = guiCreateButton ( 29 , 189 , 139 , 79 , "Zamknij" , false , GUIEditor . window [ 1 ])
guiSetVisible ( GUIEditor . window [ 1 ], false )
end
)
function isPlayerInPSP ( plr )
local idb = getElementData ( plr , 'player:idb' )
if not sid then return end
local result = exports [ 'database' ]: dbGet ( 'SELECT 1 FROM factions WHERE code=? AND idb=? LIMIT 1;' , "PSP" , idb )
if result [ 1 ] then
return true
else
return false
end
end
local gate = createObject ( 3089 ,- 239.30 , 1205.23 , 19.74 , 0 , 0 , 90 )
local marker = createMarker (- 247.85 , 1201.82 , 18.59 , 'cylinder' , 1.5 , 255 , 255 , 0 , 170 )
local marker2 = createMarker (- 254.28 , 1200.87 , 18.59 , 'cylinder' , 1.5 , 255 , 255 , 0 , 170 )
setElementDimension ( gate , 0 )
setElementDimension ( marker , 0 )
setElementDimension ( marker2 , 0 )
function hit ( playerid )
if isElementWithinMarker ( playerid , marker ) then
if isPlayerInPSP ( playerid )
guiSetVisible ( GUIEditor . window [ 1 ], true )
end
elseif isElementWithinMarker ( playerid , marker2 ) then
if isPlayerInPSP ( playerid )
guiSetVisible ( GUIEditor . window [ 1 ], true )
end
end
end
addEventHandler ( "onMarkerHit" , marker , hit )
function wyszedl ()
guiSetVisible ( GUIEditor . window [ 1 ], false )
end
addEventHandler ( "onMarkerLeave" , marker , wyszedl )
Mam co? takiego i niestety po wejsciu w marker nie wyswietla mi sie gui nawet. Nie skonczylem go robic i chcialem sprawdzic czy dzia?a wyswietlanie/znikanie gui. Prosi? bym o pomoc, czemu mi nie wyswietla si? to gui po wejsciu w marker ?
Ostatnio zmieniony przez Josemitek 2019-11-26, 19:52, w całości zmieniany 1 raz
Wysłany: 2019-11-26, 19:51
Wilq
Wiek: 24 Na forum: 4429 dni Posty: 3410
Piwa : 739
Po kliencie jest tylko
Drugi argument addEventHandler oznacza marker, z kt?rym tylko i wy??cznie wykona si? funkcja podpi?ta pod ten sam event. Je?li chcesz tam obs?u?y? oba markery, wstaw tam "getRootElement()". Tak samo w "onClientMarkerLeave".
Więcej szczegółów
Wystawiono 1 piw(a):Josemitek
Wysłany: 2019-11-28, 22:23
Josemitek
Wiek: 26 Na forum: 2404 dni Posty: 17
Nick w MP: Josek
Zmienilem calkowicie kod, dzia?a ju? prawie, tylko jak dodaje sprawdzenie czy gracz jest w frakcji (nie na sluzbie tylko czy dodany jest w frakcji) to niestety nie dzia?a. Nie wywala b??du a te? nie dzia?a. W bazie danych jestem dodany.
SERVERSIDE
SPRAWDZENIE -
function isPlayerInPSP ( plr )
local idb = getElementData ( plr , 'player:idb' )
if not idb then return end
local result = exports [ 'database' ]: dbGet ( 'SELECT 1 FROM factions WHERE code=? AND idb=? LIMIT 1;' , "PSP" , idb )
if result [ 1 ] then
return true
else
return false
end
end
-----------------------------------------
addEvent ( "gatetoogle" , true )
addEventHandler ( "gatetoogle" , root , function( el , player )
if not player then return end
if isPlayerInPSP ( player ) then
if gate . animation then
return
end
if gate . closed then
gate . open ()
setTimer (function()
gate . close ()
end , 8000 , 1 )
end
end
end )
CLIENTSIDE -
bindKey ( "k" , "down" , function( el )
triggerServerEvent ( "gatetoogle" , root , el )
end )
Nie podaje calego kodu, poniewa? gdy nie ma sprawdzenia isPlayerInPSP to kod dzia?a normalnie.
Wysłany: 2019-11-29, 18:09
Wilq
Wiek: 24 Na forum: 4429 dni Posty: 3410
Piwa : 739
Pytanie, czy eksport funkcji dbGet w skrypcie database jest przystosowany (w mecie) dla klienta.
Poczytaj tutaj:
Więcej informacji znajdziesz w Wikipedii MTA: call
You cannot call a server function from the client or vice versa. See triggerServerEvent and triggerClientEvent for possibilities to do that.
Więcej szczegółów
Wystawiono 1 piw(a):Josemitek
Wysłany: 2019-11-29, 18:36
Josemitek
Wiek: 26 Na forum: 2404 dni Posty: 17
Nick w MP: Josek
dbGet jest po stronie serwera tylko, uzywa funkcji dbQuery i dbPool, kt?re sa tylko po stronie serwera
Wysłany: 2019-11-29, 18:40
Wilq
Wiek: 24 Na forum: 4429 dni Posty: 3410
Piwa : 739
No to widzisz, sam sobie odpowiedzia?e?.
Wi?c albo u?yjesz
albo dodasz kolejn? elementDat?, w kt?rej zapiszesz stan frakcji gracza.
Więcej szczegółów
Wystawiono 1 piw(a):Josemitek
Wysłany: 2019-12-01, 10:39
Josemitek
Wiek: 26 Na forum: 2404 dni Posty: 17
Nick w MP: Josek
"Wilq" napisał/a :No to widzisz, sam sobie odpowiedzia?e?.
Wi?c albo u?yjesz
albo dodasz kolejn? elementDat?, w kt?rej zapiszesz stan frakcji gracza.
Git, dziala
Tagi: wejście :: marker :: wyswietlanie :: gui :: przesuwanie :: obiektu
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: