Sorata_Kanda Posted August 29, 2018 Share Posted August 29, 2018 Hey everyone, again, I have a problem. I want to teleport the player whenever it hits the entry/exit marker of a Burger Shot. However, whenever I add the functions to the "onMarkerHit" event, I keep teleporting back and forth. Script is server-sided. --Entry/Exit marker grabbed from .map file local burgershotEnter = getElementByID("burgershotEnter") local burgershotExit = getElementByID("burgershotExit") -- Table of spawn location when entering/leaving Burger Shot local burgershotSpawn = { enter = { x = 364.4189453125, y = -74.154296875, z = 1001.5078125, rot = 313.42001342773 }, exit = { x = -2334.7392578125, y = -166.7958984375, z = 35.5546875, rot = 221.95193481445 } } -- Debug stuff whether coordinates of entry/exit markers are the same as defined in .map (which in this case, it is) local enterPosX, enterPosY, enterPosZ = getElementPosition(burgershotEnter) local exitPosX, exitPosY, exitPosZ = getElementPosition(burgershotExit) outputChatBox ( "Enter: " .. tostring(burgershotEnter) .. " " .. enterPosX .. ", " .. enterPosY .. ", " .. enterPosZ ) outputChatBox ( "Exit: " .. tostring(burgershotExit) .. " " .. exitPosX .. ", " .. exitPosY .. ", " .. exitPosZ ) --------------------------------------- function burgershotEnterHit( player ) outputChatBox("Welcome to Burger Shot! If you want to order something, click on the ped.") setElementInterior( player, 10, burgershotSpawn["enter"]["x"], burgershotSpawn["enter"]["y"], burgershotSpawn["enter"]["z"]) --setPlayerRotation( burgershotSpawn["enter"]["rot"] ) end function burgershotExitHit( player ) outputChatBox("Thanks for visiting Burger Shot! Come again soon!") setElementInterior( player, 0, burgershotSpawn["exit"]["x"], burgershotSpawn["exit"]["y"], burgershotSpawn["exit"]["z"]) --setPlayerRotation( burgershotSpawn["exit"]["rot"] ) end addEventHandler( "onMarkerHit", burgershotEnter, burgershotEnterHit ) addEventHandler( "onMarkerHit", burgershotExit, burgershotExitHit ) Do I still have to check if the player is in the marker or not? Because I thought I don't need to do that when I tie the function to an event with the according marker. Thanks in advance! Link to comment
Sorata_Kanda Posted August 29, 2018 Author Share Posted August 29, 2018 (edited) So something I've examined is that there's a certain detection range which goes beyond the marker itself. Can you specifically set that range? Edited August 29, 2018 by Sorata_Kanda Link to comment
DiGiTal Posted August 29, 2018 Share Posted August 29, 2018 Your code dont have a sense . GetElementPosition(here element not table) Link to comment
Sorata_Kanda Posted August 29, 2018 Author Share Posted August 29, 2018 14 minutes ago, DiGiTal said: Your code dont have a sense . GetElementPosition(here element not table) Why? 'burgershotEnter' and 'burgershotExit' are elements. The table 'burgershotSpawn' contains coordinates where the player are supposed to be teleported when they hit the marker respectively. 1 Link to comment
JeViCo Posted August 29, 2018 Share Posted August 29, 2018 when you teleport inside, you instantly hit another marker which teleports you back. You can teleport a player a little bit forward OR make a little delay between marker hits using set/getElementData @Sorata_Kanda Link to comment
Sorata_Kanda Posted August 29, 2018 Author Share Posted August 29, 2018 2 hours ago, JeViCo said: when you teleport inside, you instantly hit another marker which teleports you back. You can teleport a player a little bit forward OR make a little delay between marker hits using set/getElementData @Sorata_Kanda I actually set the coordinates so you don't tp into the marker. What's strange is that it even triggers onMarkerHit when you are nearby of the marker and not when you "only" hit the marker. Link to comment
JeViCo Posted August 29, 2018 Share Posted August 29, 2018 30 minutes ago, Sorata_Kanda said: I actually set the coordinates so you don't tp into the marker. What's strange is that it even triggers onMarkerHit when you are nearby of the marker and not when you "only" hit the marker. as i said you teleport to the next marker and hit it even if you nearby so it causes a loop -- Table of spawn location when entering/leaving Burger Shot local burgershotSpawn = { enter = { x = 364.4189453125, y = -74.154296875, z = 1001.5078125, rot = 313.42001342773 }, exit = { x = -2334.7392578125, y = -166.7958984375, z = 35.5546875, rot = 221.95193481445 } } --Entry/Exit marker grabbed from .map file local burgershotEnter = getElementByID("burgershotEnter") local burgershotExit = getElementByID("burgershotExit") -- i created markers to test it --[[ local ent = burgershotSpawn.enter local exi = burgershotSpawn.exit local burgershotEnter = createMarker(exi.x,exi.y,exi.z,"cylinder",1) local burgershotExit = createMarker(ent.x,ent.y,ent.z,"cylinder",1) setElementInterior(burgershotExit,10) --]] -- Debug stuff whether coordinates of entry/exit markers are the same as defined in .map (which in this case, it is) local enterPosX, enterPosY, enterPosZ = getElementPosition(burgershotEnter) local exitPosX, exitPosY, exitPosZ = getElementPosition(burgershotExit) outputChatBox ( "Enter: " .. tostring(burgershotEnter) .. " " .. enterPosX .. ", " .. enterPosY .. ", " .. enterPosZ ) outputChatBox ( "Exit: " .. tostring(burgershotExit) .. " " .. exitPosX .. ", " .. exitPosY .. ", " .. exitPosZ ) --------------------------------------- function burgershotEnterHit( player ) if not getElementData(player,"player:denyMarker") then -- can player interact with marker or not outputChatBox("Welcome to Burger Shot! If you want to order something, click on the ped.") setElementInterior( player, 10, burgershotSpawn["enter"]["x"], burgershotSpawn["enter"]["y"], burgershotSpawn["enter"]["z"]) --setPlayerRotation( burgershotSpawn["enter"]["rot"] ) setElementData(player,"player:denyMarker",true) -- disable that loop setTimer(removeElementData,2000,1,player,"player:denyMarker") -- return ability to interact with markers ( 2 seconds delay) end end function burgershotExitHit( player ) if not getElementData(player,"player:denyMarker") then -- can player interact with marker or not outputChatBox("Thanks for visiting Burger Shot! Come again soon!") setElementInterior( player, 0, burgershotSpawn["exit"]["x"], burgershotSpawn["exit"]["y"], burgershotSpawn["exit"]["z"]) --setPlayerRotation( burgershotSpawn["exit"]["rot"] ) setElementData(player,"player:denyMarker",true) -- disable that loop setTimer(removeElementData,2000,1,player,"player:denyMarker") -- return ability to interact with markers end end addEventHandler( "onMarkerHit", burgershotEnter, burgershotEnterHit ) addEventHandler( "onMarkerHit", burgershotExit, burgershotExitHit ) @Sorata_Kanda Link to comment
Sorata_Kanda Posted August 29, 2018 Author Share Posted August 29, 2018 23 minutes ago, JeViCo said: as i said you teleport to the next marker and hit it even if you nearby so it causes a loop -- Table of spawn location when entering/leaving Burger Shot local burgershotSpawn = { enter = { x = 364.4189453125, y = -74.154296875, z = 1001.5078125, rot = 313.42001342773 }, exit = { x = -2334.7392578125, y = -166.7958984375, z = 35.5546875, rot = 221.95193481445 } } --Entry/Exit marker grabbed from .map file local burgershotEnter = getElementByID("burgershotEnter") local burgershotExit = getElementByID("burgershotExit") -- i created markers to test it --[[ local ent = burgershotSpawn.enter local exi = burgershotSpawn.exit local burgershotEnter = createMarker(exi.x,exi.y,exi.z,"cylinder",1) local burgershotExit = createMarker(ent.x,ent.y,ent.z,"cylinder",1) setElementInterior(burgershotExit,10) --]] -- Debug stuff whether coordinates of entry/exit markers are the same as defined in .map (which in this case, it is) local enterPosX, enterPosY, enterPosZ = getElementPosition(burgershotEnter) local exitPosX, exitPosY, exitPosZ = getElementPosition(burgershotExit) outputChatBox ( "Enter: " .. tostring(burgershotEnter) .. " " .. enterPosX .. ", " .. enterPosY .. ", " .. enterPosZ ) outputChatBox ( "Exit: " .. tostring(burgershotExit) .. " " .. exitPosX .. ", " .. exitPosY .. ", " .. exitPosZ ) --------------------------------------- function burgershotEnterHit( player ) if not getElementData(player,"player:denyMarker") then -- can player interact with marker or not outputChatBox("Welcome to Burger Shot! If you want to order something, click on the ped.") setElementInterior( player, 10, burgershotSpawn["enter"]["x"], burgershotSpawn["enter"]["y"], burgershotSpawn["enter"]["z"]) --setPlayerRotation( burgershotSpawn["enter"]["rot"] ) setElementData(player,"player:denyMarker",true) -- disable that loop setTimer(removeElementData,2000,1,player,"player:denyMarker") -- return ability to interact with markers ( 2 seconds delay) end end function burgershotExitHit( player ) if not getElementData(player,"player:denyMarker") then -- can player interact with marker or not outputChatBox("Thanks for visiting Burger Shot! Come again soon!") setElementInterior( player, 0, burgershotSpawn["exit"]["x"], burgershotSpawn["exit"]["y"], burgershotSpawn["exit"]["z"]) --setPlayerRotation( burgershotSpawn["exit"]["rot"] ) setElementData(player,"player:denyMarker",true) -- disable that loop setTimer(removeElementData,2000,1,player,"player:denyMarker") -- return ability to interact with markers end end addEventHandler( "onMarkerHit", burgershotEnter, burgershotEnterHit ) addEventHandler( "onMarkerHit", burgershotExit, burgershotExitHit ) @Sorata_Kanda I'll try that one. But I don't know if you understand the problem or not. Take this picture as an example: I would expect "onMarketHit" to trigger only when you really enter the marker. Instead, it happens only when your nearby. I suspect it's related with the type of marker. I'll try the corona one. Link to comment
JeViCo Posted August 29, 2018 Share Posted August 29, 2018 I guess i understood you. Use cylinder marker type (most common). You can also test range with onMarkerLeave Link to comment
Sorata_Kanda Posted August 29, 2018 Author Share Posted August 29, 2018 14 minutes ago, JeViCo said: I guess i understood you. Use cylinder marker type (most common). You can also test range with onMarkerLeave @JeViCo It's actually a cylinder. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now