Witam, chcia?bym zapyta?, jak? funkcj? mo?na wy??czy? dzia?anie markera powy?ej nim, poniewa? stawiam marker, np. w kordach 0,0,0, to w kordach 0,0,10 on nadal dzia?a, co zrobi?, aby tak nie by?o?
Najprawdopodobniej tworzysz marker po stronie klienta, wtedy w?a?nie wyst?puje taki defekt. Aby go wyeliminowa?, w evencie 'onClientMarkerHit' pobierz pozycje markeru, oraz gracza.
addEventHandler("onClientMarkerHit", resourceRoot, function(el, md)
if not md then return end
if not getElementData(el, "player:faction") then return end
if getPedOccupiedVehicle(el) then
if getPlayerName(getVehicleController(getPedOccupiedVehicle(el))) == getPlayerName(el) then
if isCursorShowing ( el ) then return end
getElementPosition(source)
getElementPosition(localPlayer)
local pos_marker = {getElementPosition(source)}
local pos_player = {getElementPosition(localPlayer)}
if pos_player [3] + 2 < pos_marker [3] or pos_player [3] - 2 > pos_marker [3] then return end
addEventHandler("onClientRender", getRootElement(), guia)
showCursor(true, false)
showeded = false
end
end
end)
Najprawdopodobniej tworzysz marker po stronie klienta, wtedy w?a?nie wyst?puje taki defekt. Aby go wyeliminowa?, w evencie 'onClientMarkerHit' pobierz pozycje markeru, oraz gracza.
Potem wystarczy ?e por?wnasz ostatni argument tych funkcji (czyli 3) i sprawdzisz czy wysoko?? gracza nie jest wy?sza od wysoko?ci markeru. Mniej wi?cej tak:
local pos_marker = {getElementPosition(source)}
local pos_player = {getElementPosition(localPlayer)}
if pos_player [3] + 2 < pos_marker [3] or pos_player [3] - 2 > pos_marker [3] then return end
[ Dodano: 2020-09-30, 16:24 ] kamison, Przeczytaj dok?adniej to co napisa? u?ytkownik, chodzi mu o to ?e gdy gracz wejdzie w marker powy?ej niego, to przypisany do niego event si? aktywuje. Nawet je?li b?dzie 100 metr?w nad nim.
Poda?em taki przyk?ad bo z innym problemem do tej pory si? nie spotka?em, co nie zmienia faktu, ?e te funkcje kt?re poda?em dzia?aj? poprawnie w przyk?adzie.
Gdyby pytania na tym forum by?y konstuowane w poprawny spos?b to by?oby ?atwiej. Przyk?ad?
Cze??, co zrobi? ?eby marker nie "dzia?a?" powy?ej 10 jednostek tylko od 0 do 10?
By?oby o wiele pro?ciej, pozdrawiam.
W 7 oraz 8 linijce wstawi?e? niezdefiniowan? funkcj? (nie potrzebujesz jej tam)
[ Dodano: 2020-09-30, 17:26 ] kamison, Rozumiem ?e chcia?e? pom?c i bardzo dobrze. Funkcje kt?re poda?e? te? zosta?y podane w prawid?owy oraz zrozumia?y spos?b wraz z przyk?adem. Gracz napisa? ?e szuka funkcji odpowiedzialnej za wy??czenie tego defektu, jednak z tego co wiem to nie ma takiej funkcji (je?li jest to prosz? mnie poprawi?). Ja poda?em mu instrukcje warunkow? na zasadzie kt?rej mo?e zablokowa? ten b??d. Gdyby by?a taka funkcja i wiedzia?bym jak ona si? nazywa to z pewno?ci? bym tutaj z niej skorzysta?. R?wnie? pozdrawiam.
Czyli co mog? zrobi?, aby to naprawi?, bo chyba ?le to robi??
addEventHandler("onClientMarkerHit", resourceRoot, function(el, md)
if not md or el~=localPlayer then return end
if not getElementData(el, "player:faction") then return end
if getPedOccupiedVehicle(el) then
if getPlayerName(getVehicleController(getPedOccupiedVehicle(el))) == getPlayerName(el) then
if isCursorShowing ( el ) then return end
local pos_marker = {getElementPosition(source)}
local pos_vehicle = {getElementPosition(el)}
if pos_vehicle [3] + 2 < pos_marker [3] or pos_vehicle [3] - 2 > pos_marker [3] then return end
addEventHandler("onClientRender", getRootElement(), guia)
showCursor(true, false)
showeded = false
end
end
end)
Kod kt?ry Ci poda?em blokuje aktywowanie eventu je?li gracz jest wy?ej od markera o 2 jednostki. Teraz pytanie do Ciebie. Chcesz zablokowa? to w taki spos?b ?e gracz nie mo?e znajdowa? si? nad marker nawet o par? minimetr?w. Czy mo?e znajdowa? si? tylko odrobin? nad nim?
addEventHandler("onClientMarkerHit", resourceRoot, function(el, md)
if not md or el~=localPlayer then return end
local pos_marker = {getElementPosition(source)}
local pos_player = {getElementPosition(localPlayer)}
if pos_player [3] + 1 < pos_marker [3] or pos_player [3] - 1 > pos_marker [3] then return end
outputChatBox("* Znajdujesz si? w markerze")
end)
[lua]
addEventHandler("onClientMarkerHit", resourceRoot, function(el, md)
if not md or el~=localPlayer then return end
local pos_marker = {getElementPosition(source)}
local pos_player = {getElementPosition(localPlayer)}
if pos_player [3] + 1 < pos_marker [3] or pos_player [3] - 1 > pos_marker [3] then return end
if not getElementData(el, "player:faction") then return end
if getPedOccupiedVehicle(el) then
if getPlayerName(getVehicleController(getPedOccupiedVehicle(el))) == getPlayerName(el) then
addEventHandler("onClientRender", getRootElement(), guia)
showCursor(true, false)
showeded = false
end
end
end)
[lua]
Nie mog?em w to uwierzysz, i sam to sprawdzi?em. U mnie wszystko jest w porz?dku. mo?liwe ?e jaka? instrukcja blokuje Ci wykonanie si? eventu. Sprawd? w /debugscript 3 czy nie wyst?puj? jakie? b??dy. Lub do ka?dej instrukcji warunkowej dopisz outputChatBox() kt?ry wy?wietli si? gdy instrukcja si? nie spe?ni np:
if getElementData(player,"player:faction") then --[[reszta kodu--]] else outputChatBox("B??D!") end
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