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

Wysłany: 2020-04-16, 19:43


Irvs







Wiek: 30
Na forum: 2680 dni
Posty: 48

Piwa: 3

Respekt: 50

Cze?? wszystkim,

Mam problem z u?yciem onMarkerHit.
Kod wygl?da nast?puj?co:


marker1 createMarker

function start()
marker2 createMarker
end
addEventHandler("onMarkerHit"marker1 start)

function step(plr)
if not isElementWithinMarkerplrmarker2 then return end
cositutaj dzieje
end
addEventHandler("onMarkerHit"marker2 step)


I teraz problem jest nast?puj?cy, skrypt po uruchomieniu stwierdza, ?e argument 2 nie ma warto?ci czyli marker2 i faktycznie tak jest, bo uzyskuje j? gdy funkcja start si? wype?ni.
Ale ten marker nie mo?e si? utworzy?(nie chce tego) nim funkcja start si? nie wype?ni

Z tego te? powodu w momencie wype?nienia funkcji start i pr?bie wej?cia w marker2 nic si? nie dzieje (powinien uruchomi? funkcje step)

Dodam tylko, ?e funkcja 2 tworzy te? marker u?ywany przez funkcje 3 a trzecia tworzy dla czwartej.

Jak to rozwi?za??

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-04-16, 20:36


kamison

Przyszły programista .lua






Wiek: 25
Na forum: 3302 dni
Posty: 391
Nick w MP: kamison

Piwa: 594

Respekt: 205,3
Respekt: 205,3Respekt: 205,3

Tak jest!
Zobacz na wiki co daje funkcja onMarkerHit, ja widz?, ?e source to marker w kt?ry wejdzie gracz, a wi?c!

marker1 createMarker

function start()
    if source == marker1 then -- albo zamiast tego i enda na ko?cu ifa u?yj po prostu if source ~= marker1 then return end
        marker2 createMarker
    end
end
addEventHandler("onMarkerHit"root start) -- mo?liwe, ?e pod resourceRoot tezadzia?a

function step(plr)
    if source == marker2 then -- albo zamiast tego i enda na ko?cu ifa u?yj po prostu if source ~= marker2 then return end
    
    if not isElementWithinMarkerplrmarker2 then return end
    cositutaj dzieje
    
    end
end
addEventHandler("onMarkerHit"root step)-- czytaj up kom w addEventHandler

Je?li zadzia?a nie obra?? si? na piwo :)

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Irvs
Wysłany: 2020-04-16, 20:41


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Po co podpina? event bo wszystkie markery, skoro mo?na pod konkretny?

Po prostu w chwili startu pr?bujesz przypisa? event do jeszcze nie istniej?cego markeru.
Dopiero po wej?ciu w marker1, stworzy si? marker2.

Rozwi?zanie: zmie? kolejno?? tworzenia marker?w
albo dodaj event onMarkerHit do marker2 dopiero w funkcji podpi?tej do eventu marker1.

marker1 createMarker

function step(plr)
--cositutaj dzieje
end

function start()
marker2 createMarker
addEventHandler("onMarkerHit"marker2 step)
end
addEventHandler("onMarkerHit"marker1 start)


Sprawdzanie funkcji isElementWithinMarker w evencie onMarkerHit jest zb?dne, bo wiadomo ?e zwr?ci true, no chyba wtedy event by si? nie wykona?.

Mam nadziej?, ?e funkcj? createMarker u?ywasz poprawnie, bo brakuje tutaj praktycznie wszystkich argument?w, go?a funkcja.


Więcej informacji znajdziesz w Wikipedii MTA:

createMarker


Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-04-16, 22:36


Irvs







Wiek: 30
Na forum: 2680 dni
Posty: 48

Piwa: 3

Respekt: 50

"kamison" napisał/a:


Je?li zadzia?a nie obra?? si? na piwo :)

Piwo polecia?o, dzia?a po cz??ci, lecz wykonuje wszystkie funkcje po kolei niewa?ne czy wejd? w kolejny marker czy nie.
Ciekawe jest to, ?e wykonuje w funkcji podcar to

setVehicleLocked cvechfalse )  
    destroyElement(mcar)
    destroyElement(blip)


Zanim wejd? do markera, kt?ry powinien t? funkcje aktywowa?, wystarczy, ?e b?d? ok 50m od niego i si? wykona, je?li b?d? daleko to nie... Ju? sam nie rozumiem, a debug nie pokazuje nic.
Poni?ej ca?y kod wraz z tworzeniem marker?w



start createMarker(-1686.53, -93.693.58-0.90,"cylinder",1,12,23,32)
stanm createMarker(-1697.63, -82.243.57 -0.90,"cylinder",1,12,23,32)

pojazdystan 0
hajs 5000

local spawncar = {
{ -2205.8061.1435.32"wysoka""Banshee""Daniel Cortez"429 },
{ -2462.56, -98.9525.90"wysoka""Banshee""Daniel Cortez"429 },
{ -2146.581218.8847.27"wysoka""Banshee""Daniel Cortez"429 },
{ -2176.351223.1033.93"wysoka""Banshee""Daniel Cortez"429 },
{ -1702.3610.943.55"wysoka""Banshee""Daniel Cortez"429 },
{ -2221.79, -137.1335.32"wysoka""Banshee""Daniel Cortez"429 },
{ -2218.54607.8135.17"wysoka""Banshee""Daniel Cortez"429 },
{ -2738.88126.454.54"wysoka""Banshee""Daniel Cortez"429 },
{ -2589.03309.824.85"wysoka""Banshee""Daniel Cortez"429 },
{ -2440.621037.2250.40"wysoka""Banshee""Daniel Cortez"429 },
{ -2324.78989.0050.70"wysoka""Banshee""Daniel Cortez"429 },
{ -2188.56969.3180.00"wysoka""Banshee""Daniel Cortez"429 },
{ -2045.721010.5754.67"wysoka""Banshee""Daniel Cortez"429 },
{ -1668.951019.107.92"wysoka""Banshee""Daniel Cortez"429 },
{ -2071.44971.3462.88"wysoka""Banshee""Daniel Cortez"429 },
{ -2524.45316.2427.77"wysoka""Banshee""Daniel Cortez"429 },
{ -2563.35851.8755.88"wysoka""Banshee""Daniel Cortez"429 },
{ -1916.81304.0541.05"wysoka""Banshee""Daniel Cortez"429 },
{ -1839.12, -13.3015.12"wysoka""Banshee""Daniel Cortez"429 },
{ -1820.01, -152.139.40"wysoka""Banshee""Daniel Cortez"429 },
{ -2059.4189.4428.39"wysoka""Banshee""Daniel Cortez"429 };

}


function startpr thePlayer )
--if source == start then
--    if not isElementWithinMarkerthePlayerstart then return end
matchs math.random(1,#spawncar)
mcar =  createMarker spawncar[matchs][1],spawncar[matchs][2],spawncar[matchs][3]-0.90"cylinder"6255255255,10)
blip createBlipAttachedTo(mcar41)
cvech createVehicle(spawncar[matchs][7],spawncar[matchs][1],spawncar[matchs][2],spawncar[matchs][3])
setVehicleLocked cvechtrue )

    outputChatBox("*Informacje*",thePlayer,255,255,255)
    outputChatBox("Klasa: "..spawncar[matchs][4],thePlayer,255,255,255)
    outputChatBox("Marka: "..spawncar[matchs][5],thePlayer,255,255,255)
    outputChatBox("W?a?ciel: "..spawncar[matchs][6],thePlayer,255,255,255)
    outputChatBox("=>Na GPS zosta? oznaczony pojazd",thePlayer,255,30,30)
--end
end
addCommandHandler("namierz",startpr)


function podcar thePlayer )
if source == mcar then
    outputChatBox("Pr?bujesz z?ama? zabezpieczenie...",thePlayer,255,255,255)
    
    --setTimer ( function()
    odjmakrer createMarker(-1693.93, -90.173.56-0.90,"cylinder",4,255,255,255,50)
    odjblip createBlip(-1693.93, -90.173.56,41)
    outputChatBox("Dobra pojazd jest tw?j, zabierz go do kryj?wki!",thePlayer,255,255,255)
    setVehicleLocked cvechfalse )  
    destroyElement(mcar)
    destroyElement(blip)
--    end5000)
    end
end
addEventHandler("onMarkerHit"rootpodcar)

function magazyn thePlayer)
if source == odjmakrer then

    destroyElement(odjmakrer)
    destroyElement(odjblip)
    destroyElement(cvech)
    pojazdystan pojazdystan+1
    outputChatBox("Pojazd schowany! Ilo?? pojazd?w w magazynie to: " ..pojazdystan,thePlayer,255,255,255)
end
end
addEventHandler("onMarkerHit"root magazyn)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-04-17, 15:25


kamison

Przyszły programista .lua






Wiek: 25
Na forum: 3302 dni
Posty: 391
Nick w MP: kamison

Piwa: 594

Respekt: 205,3
Respekt: 205,3Respekt: 205,3

Sprawdzi?em to w tym przyk?adzie i dzia?a

marker1 createMarker (-301.6572265625,1313.037109375,54.010417938232,"cylinder",1)

function start()
    if source == marker1 and not isElement (marker2then -- albo zamiast tego i enda na ko?cu ifa u?yj po prostu if source ~= marker1 then return end
        marker2 createMarker (-297.7412109375,1314.8525390625,54.10551071167,"cylinder",1)
        outputChatBox ("zrob marker 2")
    end
    if source == marker1 then outputChatBox ("Marker 1"end
end
addEventHandler("onMarkerHit"root start) -- mo?liwe, ?e pod resourceRoot tezadzia?a

function step(plr)
    if source == marker2 then -- albo zamiast tego i enda na ko?cu ifa u?yj po prostu if source ~= marker2 then return end
    outputChatBox ("marker 2")
    end
end
addEventHandler("onMarkerHit"root step)-- czytaj up kom w addEventHandler


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Irvs
Wysłany: 2020-04-17, 16:28


Irvs







Wiek: 30
Na forum: 2680 dni
Posty: 48

Piwa: 3

Respekt: 50

"kamison" napisał/a:

Sprawdzi?em to w tym przyk?adzie i dzia?a


Tylko nie dzia?a poprawnie w kodzie kt?ry przes?a?em powy?ej.

Funkcja podcar uruchamia si? zanim wejd? do markera mcar
Wystarczy, ?e b?d? w odleg?o?ci 50m od niego a funkcja si? uruchomi zanim zd??e nawet do niego wej??.
(outputchatBox si? nie poka?e, ale reszta si? wykona)

Poni?ej film jak to dzia?a, a raczej nie dzia?a.

https://youtu.be/0-Fwr5EZdjo

Jak wida? marker znika jak i blip nim do niego zd??e wej??, wi?c funkcja si? wykonuje... A powinna w momencie wej?cia do markera

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-04-17, 16:54


kamison

Przyszły programista .lua






Wiek: 25
Na forum: 3302 dni
Posty: 391
Nick w MP: kamison

Piwa: 594

Respekt: 205,3
Respekt: 205,3Respekt: 205,3

A zobacz bez latania

[ Dodano: 2020-04-17, 16:57 ]
A i mo?esz podpi?? pod resourceRoot b?dzie bardziej optymalny skrypt

Ostatnio zmieniony przez kamison 2020-04-17, 16:58, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Irvs
Wysłany: 2020-04-17, 16:57


Irvs







Wiek: 30
Na forum: 2680 dni
Posty: 48

Piwa: 3

Respekt: 50

To samo, w momencie gdy doje?dzam na oko?o 50-100m od wyznaczonego punktu funkcja si? uruchamia, jakie? czary...

Edit. Po zmianie na resourceRoot dalej to samo.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2020-04-17, 17:19


kamison

Przyszły programista .lua






Wiek: 25
Na forum: 3302 dni
Posty: 391
Nick w MP: kamison

Piwa: 594

Respekt: 205,3
Respekt: 205,3Respekt: 205,3

Dobra, wilq poda? fajne wykorzystanie. Marker znika? bo bez wzgl?du na to jaki element uderza? w marker powodowa? jego zadzia?anie, dlatego mog?y znika?.

start createMarker(-2139.5478515625,918.3427734375,79.8515625-0.90,"cylinder",1,12,23,32)
stanm createMarker(-297.7412109375,1314.8525390625,54.10551071167,"cylinder",1,12,23,32)

pojazdystan 0
hajs 5000

local spawncar = {
{ -2205.8061.1435.32"wysoka""Banshee""Daniel Cortez"429 },
{ -2462.56, -98.9525.90"wysoka""Banshee""Daniel Cortez"429 },
{ -2146.581218.8847.27"wysoka""Banshee""Daniel Cortez"429 },
{ -2176.351223.1033.93"wysoka""Banshee""Daniel Cortez"429 },
{ -1702.3610.943.55"wysoka""Banshee""Daniel Cortez"429 },
{ -2221.79, -137.1335.32"wysoka""Banshee""Daniel Cortez"429 },
{ -2218.54607.8135.17"wysoka""Banshee""Daniel Cortez"429 },
{ -2738.88126.454.54"wysoka""Banshee""Daniel Cortez"429 },
{ -2589.03309.824.85"wysoka""Banshee""Daniel Cortez"429 },
{ -2440.621037.2250.40"wysoka""Banshee""Daniel Cortez"429 },
{ -2324.78989.0050.70"wysoka""Banshee""Daniel Cortez"429 },
{ -2188.56969.3180.00"wysoka""Banshee""Daniel Cortez"429 },
{ -2045.721010.5754.67"wysoka""Banshee""Daniel Cortez"429 },
{ -1668.951019.107.92"wysoka""Banshee""Daniel Cortez"429 },
{ -2071.44971.3462.88"wysoka""Banshee""Daniel Cortez"429 },
{ -2524.45316.2427.77"wysoka""Banshee""Daniel Cortez"429 },
{ -2563.35851.8755.88"wysoka""Banshee""Daniel Cortez"429 },
{ -1916.81304.0541.05"wysoka""Banshee""Daniel Cortez"429 },
{ -1839.12, -13.3015.12"wysoka""Banshee""Daniel Cortez"429 },
{ -1820.01, -152.139.40"wysoka""Banshee""Daniel Cortez"429 },
{ -2059.4189.4428.39"wysoka""Banshee""Daniel Cortez"429 };

}


function startpr thePlayer )
--if source == start then
--    if not isElementWithinMarkerthePlayerstart then return end
matchs math.random(1,#spawncar)
mcar =  createMarker spawncar[matchs][1],spawncar[matchs][2],spawncar[matchs][3]-0.90"cylinder"6255255255,10)
blip createBlipAttachedTo(mcar41)
cvech createVehicle(spawncar[matchs][7],spawncar[matchs][1],spawncar[matchs][2],spawncar[matchs][3])
setVehicleLocked cvechtrue )

    outputChatBox("*Informacje*",thePlayer,255,255,255)
    outputChatBox("Klasa: "..spawncar[matchs][4],thePlayer,255,255,255)
    outputChatBox("Marka: "..spawncar[matchs][5],thePlayer,255,255,255)
    outputChatBox("W?a?ciel: "..spawncar[matchs][6],thePlayer,255,255,255)
    outputChatBox("=>Na GPS zosta? oznaczony pojazd",thePlayer,255,30,30)
    addEventHandler("onMarkerHit"mcarpodcar)
--end
end
addCommandHandler("namierz",startpr)


function podcar thePlayer )

if getElementType (thePlayer) ~= "player" then return end
if source == mcar then
    outputChatBox("Pr?bujesz z?ama? zabezpieczenie...",thePlayer,255,255,255)
    
    --setTimer ( function()
    odjmakrer createMarker(-1693.93, -90.173.56-0.90,"cylinder",6,255,255,255,50)
    odjblip createBlip(-1693.93, -90.173.56,41)
    outputChatBox("Dobra pojazd jest tw?j, zabierz go do kryj?wki!",thePlayer,255,255,255)
    setVehicleLocked cvechfalse )  
    destroyElement(mcar)
    destroyElement(blip)
--    end5000)
addEventHandler("onMarkerHit"odjmakrer magazyn)
    end
end


function magazyn thePlayer)
if getElementType (thePlayer) ~= "player" then return end
if source == odjmakrer then

    destroyElement(odjmakrer)
    destroyElement(odjblip)
    destroyElement(cvech)
    pojazdystan pojazdystan+1
    outputChatBox("Pojazd schowany! Ilo?? pojazd?w w magazynie to: " ..pojazdystan,thePlayer,255,255,255)
end
end


[ Dodano: 2020-04-17, 17:19 ]
Kordy od startu zmieni?em(te dwa markery)

[ Dodano: 2020-04-17, 17:19 ]
I szeroko?ci marker?w przy aucie

[ Dodano: 2020-04-17, 17:19 ]
Wi?c zmie? jak chcesz

[ Dodano: 2020-04-17, 17:21 ]
Tylko we? pod uwag?, ?e je?li kto? to rozpocznie to ka?demu si? pojawi (przez to, ?e jest po stronie serwera) i nie definiuj w onMarkerHit pierwszego elementu jako thePlayer, lepiej jako element(bo tak wynika ze sk?adni) nie b?dzie p??niej ci??ko zweryfikowa? co trzeba zrobi?.

[ Dodano: 2020-04-17, 17:22 ]
Mam nadziej?, ?e b?dzie dzia?a? i b?dziesz zadowolony!

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
Irvs
Wysłany: 2020-04-17, 18:58


Irvs







Wiek: 30
Na forum: 2680 dni
Posty: 48

Piwa: 3

Respekt: 50

Dzi?kuj? za pomoc, dzia?a :D

Mo?e co? zaradzisz te? na drugi m?j problem tutaj:

https://gtao.pl/kajdanki-vt134377.htm?sid=8b805589d92fa4671a6c33f118e88492

Postaw piwo autorowi tego posta
 

 
Tagi: onmarkerhit
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






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