MF99K Posted August 19, 2017 Share Posted August 19, 2017 Hi guys, I'm trying to make a function that calls to the nearest entity with a specific tag on it, but I'm not sure how I need to phrase it. I know that TheSim:FindFirstEntityWithTag will work in some circumstances, but I really need nearest as opposed to first. TheSim:FindNearest and TheSim:FindClosest don't work so I'm wondering how to get this to work. Link to comment Share on other sites More sharing options...
ptr Posted August 19, 2017 Share Posted August 19, 2017 There has already been a built-in global function in simutil.lua, you can simply use it: function GetClosestInstWithTag(tag, inst, radius) local x, y, z = inst.Transform:GetWorldPosition() local ents = TheSim:FindEntities(x, y, z, radius, type(tag) == "string" and { tag } or tag) return ents[1] ~= inst and ents[1] or ents[2] end Link to comment Share on other sites More sharing options...
MF99K Posted August 20, 2017 Author Share Posted August 20, 2017 On 8/18/2017 at 5:37 PM, ptr said: There has already been a built-in global function in simutil.lua, you can simply use it: function GetClosestInstWithTag(tag, inst, radius) local x, y, z = inst.Transform:GetWorldPosition() local ents = TheSim:FindEntities(x, y, z, radius, type(tag) == "string" and { tag } or tag) return ents[1] ~= inst and ents[1] or ents[2] end so TheSim:GetClosestInstWithTag("tag") would work for any prefab instance with that tag and apply to the nearest one? not just the prefab where that line of code is? Link to comment Share on other sites More sharing options...
ZupaleX Posted August 20, 2017 Share Posted August 20, 2017 Which line of code are you referring to? If you break down GetClosestEntityWithTag, you see that the only thing it is doing is find you all the entity with a specific tag in a radius around an origin point and return you the entity which is the closest to that origin (excluding the entity "inst" which is the one use to determine the origin point). So it just looks for the tag and is not doing anything else. Link to comment Share on other sites More sharing options...
MF99K Posted August 20, 2017 Author Share Posted August 20, 2017 5 hours ago, ZupaleX said: Which line of code are you referring to? If you break down GetClosestEntityWithTag, you see that the only thing it is doing is find you all the entity with a specific tag in a radius around an origin point and return you the entity which is the closest to that origin (excluding the entity "inst" which is the one use to determine the origin point). So it just looks for the tag and is not doing anything else. so it would be GetClosestEntity and not GetClosestInst? I think I already tried GetClosestInst Link to comment Share on other sites More sharing options...
ZupaleX Posted August 20, 2017 Share Posted August 20, 2017 I just made a typo. The function is the one ptr copy/pasted. You said you tried it and it did not work? Could you post the function you used? What exactly did not work? Link to comment Share on other sites More sharing options...
MF99K Posted August 23, 2017 Author Share Posted August 23, 2017 local function RebindChester(inst, chester) chester = chester-- or TheSim:GetClosestInstWithTag("chester")--or TheSim:GetClosestEntityWithTag("chester")-- -- or TheSim:FindNearestEntityWithTag("chester") if chester ~= nil then OpenEye(inst) inst:ListenForEvent("death", function() StartRespawn(inst, TUNING.CHESTER_RESPAWN_TIME) end, chester) if chester.components.follower.leader ~= inst then chester.components.follower:SetLeader(inst) end return true end end note that all the different --TheSim lines are commented out, I'm only using one at a time when I test them, but none of the ones you see there work Link to comment Share on other sites More sharing options...
ptr Posted August 23, 2017 Share Posted August 23, 2017 You definitely misunderstood the usage of the function It should be chester = GetClosestInstWithTag("chester", inst, 10000) or for mods, it would be chester = GLOBAL.GetClosestInstWithTag("chester", inst, 10000) Link to comment Share on other sites More sharing options...
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