JAY.ANN Posted October 24, 2021 Share Posted October 24, 2021 (edited) Hi. I'm kinda newbie in scripting and I need some help. local points = { {-2180, 293.3, 35.4}, {-2089, 84.2, 35.5}, {-2064, 83.7, 35.5}, } How can I get the closest point to player from that massive? I'll be very grateful for any help. Edited October 24, 2021 by J-N Link to comment
The_GTA Posted October 24, 2021 Share Posted October 24, 2021 (edited) You could divide that area into triangles and solve the closest-point problem for each rectangle, then take the point with the minimum distance out of all rectangles. Edited October 24, 2021 by The_GTA Link to comment
JAY.ANN Posted October 24, 2021 Author Share Posted October 24, 2021 2 minutes ago, The_GTA said: You could divide that area into triangles and solve the closest-point problem for each rectangle, then take the point with the minimum distance out of all rectangles. My idea is to repeat vehicle spawn like it's realized in GTA Online. So there will be a lot of points Link to comment
The_GTA Posted October 24, 2021 Share Posted October 24, 2021 Just now, J-N said: My idea is to repeat vehicle spawn like it's realized in GTA Online. So there will be a lot of points Oh, those points are not supposed to span an area? I wonder why you mentioned a "massive" then. You want to get the point which is the closest of a fixed set of points, right? Then just do the following: local function getClosestSpawnPoint(points, x, y, z) local closest_dist = false; local closest_x, closest_y, closest_z = false, false, false; for m,pt in ipairs(points) do local ptx, pty, ptz = pt[1], pt[2], pt[3]; local dist = getDistanceBetweenPoints3D(x, y, z, ptx, pty, ptz); if not (closest_dist) or (closest_dist > dist) then closest_dist = dist; closest_x, closest_y, closest_z = ptx, pty, ptz; end end return closest_x, closest_y, closest_z; end ... -- The place you want to use the spawn point. local player_x, player_y, player_z = getElementPosition(player); local spawn_x, spawn_y, spawn_z = getClosestSpawnPoint(points, player_x, player_y, player_z); -- TODO: use spawn_x, spawn_y, spawn_z Link to comment
JAY.ANN Posted October 24, 2021 Author Share Posted October 24, 2021 1 minute ago, The_GTA said: Oh, those points are not supposed to span an area? I wonder why you mentioned a "massive" then. You want to get the point which is the closest of a fixed set of points, right? Then just do the following: local function getClosestSpawnPoint(points, x, y, z) local closest_dist = false; local closest_x, closest_y, closest_z = false, false, false; for m,pt in ipairs(points) do local ptx, pty, ptz = pt[1], pt[2], pt[3]; local dist = getDistanceBetweenPoints3D(x, y, z, ptx, pty, ptz); if not (closest_dist) or (closest_dist > dist) then closest_dist = dist; closest_x, closest_y, closest_z = ptx, pty, ptz; end end return closest_x, closest_y, closest_z; end ... -- The place you want to use the spawn point. local player_x, player_y, player_z = getElementPosition(player); local spawn_x, spawn_y, spawn_z = getClosestSpawnPoint(points, player_x, player_y, player_z); -- TODO: use spawn_x, spawn_y, spawn_z Yup, you got me right! Soon I'll answer if my problem was solved or not Solved. Thank you <3 Link to comment
The_GTA Posted October 24, 2021 Share Posted October 24, 2021 46 minutes ago, J-N said: Solved. Thank you You're welcome! Hoping to see you back here asking more questions. I will be there to help you again. Link to comment
JAY.ANN Posted October 24, 2021 Author Share Posted October 24, 2021 5 hours ago, The_GTA said: You're welcome! Hoping to see you back here asking more questions. I will be there to help you again. I'm not sure that I abled to ask another question on another topic here, so therefore, I apologize in advance. Everything works fine, thank you. But now I need some help in making an "appearence animation" for my car by using setElementAlpha(). I'd like to use InterpolateBetween() but I don't have any experience of working with it. Link to comment
The_GTA Posted October 25, 2021 Share Posted October 25, 2021 6 hours ago, J-N said: ... But now I need some help in making an "appearence animation" for my car by using setElementAlpha(). I'd like to use InterpolateBetween() but I don't have any experience of working with it. I recommend you to use interpolateBetween using the "OutInQuad" easing function. It expects a value between 0..1 inclusive as progress parameter. This can be a time parameter if you divide elapsed time by a duration. If the time has elapsed completely then you should not use interpolateBetween anymore but instead treat the vehicle as completely visible. How about you try your hands at it? If you know the above modular details then it is not a matter of experience but mathematical profoundness. Link to comment
JAY.ANN Posted October 25, 2021 Author Share Posted October 25, 2021 (edited) 2 hours ago, The_GTA said: I recommend you to use interpolateBetween using the "OutInQuad" easing function. It expects a value between 0..1 inclusive as progress parameter. This can be a time parameter if you divide elapsed time by a duration. If the time has elapsed completely then you should not use interpolateBetween anymore but instead treat the vehicle as completely visible. How about you try your hands at it? If you know the above modular details then it is not a matter of experience but mathematical profoundness. Well, I've been trying to do something with it in two or three different ways by using examples from mta.wiki but I didn't make it, bruh. Yup, I guess I'm too dumb in math Edited October 25, 2021 by J-N Link to comment
The_GTA Posted October 25, 2021 Share Posted October 25, 2021 Just now, J-N said: Well, I've been trying to do something with it in two or three different ways by using examples from mta.wiki but I didn't make it, bruh Could you show me the code? Link to comment
JAY.ANN Posted October 25, 2021 Author Share Posted October 25, 2021 1 minute ago, The_GTA said: Could you show me the code? I'm not at home now but I'll try to send the code as soon as possible Link to comment
JAY.ANN Posted October 25, 2021 Author Share Posted October 25, 2021 Well, I've been working with my script and now it works fine. Solved. Again. Xd Thanks a lot for your help! Link to comment
The_GTA Posted October 25, 2021 Share Posted October 25, 2021 Just now, J-N said: Well, I've been working with my script and now it works fine. Solved. Again. Xd Thanks a lot for your help! Glad to be of help to you! I admit that I wanted to get you to look at your own code instead of me solving it outright for you. In my opinion a really good way to learn is to self-reflect based on your own accomplishments. If you would have posted the code I could have given my solution of course. But this is not required anymore since you have solved the issue. 1 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