Page 1 of 2
how to find entity (entities) on map [Solved]
Posted: Fri Oct 24, 2014 1:04 pm
by Jouki
Hello, can you help me please how can I check if entity exists? I'd like to use 'while' for enabling particles but 'findEntity()' doesnt seems to work . I need something that returns true/false if entity even exists.
Re: how to find entity (entities) on map
Posted: Fri Oct 24, 2014 1:12 pm
by NutJob
Might be helpful?
Code: Select all
arr_entities= {"something_1", "something_2", "something_3"}
function aGenericFunc()
for _,strId in pairs(arr_entities) do
x = findEntity(strId)
x.light:enable()
end
end
Re: how to find entity (entities) on map
Posted: Fri Oct 24, 2014 3:25 pm
by Jouki
NutJob wrote:Might be helpful?
Code: Select all
arr_entities= {"something_1", "something_2", "something_3"}
function aGenericFunc()
for _,strId in pairs(arr_entities) do
x = findEntity(strId)
x.light:enable()
end
end
Actaully it doesn't solve that I have to write all of these light sources into the code

but nevermind thanks for help, I'd need something like

:
Code: Select all
int i=1;
while(lightSource_[i]:isExist()){
lightSource_[i].light:enable();
lightSource_[i].particle:enable();
i++;
}
Re: how to find entity (entities) on map
Posted: Fri Oct 24, 2014 4:46 pm
by SnowyOwl47
Actaully it doesn't solve that I have to write all of these light sources into the code

but nevermind thanks for help, I'd need something like

:
Code: Select all
int i=1;
while(lightSource_[i]:isExist()){
lightSource_[i].light:enable();
lightSource_[i].particle:enable();
i++;
}
[/quote]
That is easy to do!
First of all your light sources would be called something like castle_lantern_1 first tell me what kind of lights they are or at least what there called.
Re: how to find entity (entities) on map
Posted: Fri Oct 24, 2014 5:01 pm
by Jouki
SnowyOwl47 wrote:
That is easy to do!
First of all your light sources would be called something like castle_lantern_1 first tell me what kind of lights they are or at least what there called.
mine_support_pillar_lantern_
Now I have about 20 these pillars 
Re: how to find entity (entities) on map
Posted: Fri Oct 24, 2014 5:06 pm
by SnowyOwl47
Code: Select all
i = 0
function findAllLights()
while mine_support_pillar_lantern_ i :isExist() == true do
i = i + 1
mine_support_pillar_lantern_ i .light:enabled(true)
mine_support_pillar_lantern_ i .particle:enabled(true)
end
end
Tha code should work don't change it any way, the i has to have spaces on both sides but it will still work!
Re: how to find entity (entities) on map
Posted: Fri Oct 24, 2014 5:36 pm
by SnowyOwl47
SnowyOwl47 wrote:Code: Select all
i = 0
function findAllLights()
while mine_support_pillar_lantern_ i :isExist() == true do
i = i + 1
mine_support_pillar_lantern_ i .light:enabled(true)
mine_support_pillar_lantern_ i .particle:enabled(true)
end
end
Tha code should work don't change it any way, the i has to have spaces on both sides but it will still work!
Now with that said actually from what I can tell this might be what you want to do!
Code: Select all
found = false
i = 0
function findAllLights()
while found == false do
if i == 21 then
found = true
else
i = i + 1
mine_support_pillar_lantern_ i .light:enabled(true)
mine_support_pillar_lantern_ i .particle:enabled(true)
end
end
end
Re: how to find entity (entities) on map
Posted: Fri Oct 24, 2014 6:56 pm
by Jouki
SnowyOwl47 wrote:SnowyOwl47 wrote:Code: Select all
i = 0
function findAllLights()
while mine_support_pillar_lantern_ i :isExist() == true do
i = i + 1
mine_support_pillar_lantern_ i .light:enabled(true)
mine_support_pillar_lantern_ i .particle:enabled(true)
end
end
Tha code should work don't change it any way, the i has to have spaces on both sides but it will still work!
Now with that said actually from what I can tell this might be what you want to do!
Code: Select all
found = false
i = 0
function findAllLights()
while found == false do
if i == 21 then
found = true
else
i = i + 1
mine_support_pillar_lantern_ i .light:enabled(true)
mine_support_pillar_lantern_ i .particle:enabled(true)
end
end
end
unfortunately I put this into the script and absolutely didnt change anything (except connectors of course) and this happened (I've noticed I've forgotten 01 at the and of the name but I added that)

Re: how to find entity (entities) on map
Posted: Fri Oct 24, 2014 7:28 pm
by SnowyOwl47
Hmm @Jouki Delete the spaces around the i ok
Re: how to find entity (entities) on map
Posted: Fri Oct 24, 2014 7:30 pm
by JohnWordsworth
When building an entity name from variables and then retrieving that entity, you will want to do some string concatenation and use the "findEntity" function. The following first defines a flexible function that can turn on a whole bunch of lights that all start with the same ID in the editor and then defines a specific "utility function" that you can call from a pressure plate that turns on all lights in your dungeon that have the name "top_floor_lights_i" (where i starts at 1 and goes up to the last light it finds using this pattern).
Code: Select all
-- A generic function that will turn on the light and particle component
-- for all entities in the dungeon that have the id "prefix_i" where
-- "prefix" is the parameter given to this method and "i" counts up from 1.
function turnOnLights(prefix)
local i = 1;
local entity = findEntity(prefix .. "_" .. i);
while entity ~= nil do
if entity.light ~= nil then
entity.light:enable();
end
if entity.particle ~= nil then
entity.particle:enable();
end
i = i + 1;
entity = findEntity(prefix .. "_" .. i);
end
end
--
-- This function is one you can hook into a pressure plate and it will
-- turn on all lights in your dungeon with the name "top_floor_lights_i"
-- ie. top_floor_lights_1, top_floor_lights_2, ...
function turnOnTopFloorLights()
turnOnLights("top_floor_lights");
end
Hope this helps!