Entities aus der Map holen

Old McDonald hat uns ja das wunderbare Programm EntityOut.Exe geschrieben, mit dem man alle Entities aus der Map auslesen kann.

Nun habe ich flott dazu ein Programm geschrieben, mit dem man aus diesen Angaben einen Bereich (Rechteck) auswählen kann.

Die in diesem Rechteck vorhandenen Entities werden dann in eine Funktion geschrieben, die die IDs der Entities zurück gibt.

holeentities.jpg

Bedienung ist einfach.

Dann ist die Funktion in Form von:

function HoleEntities()
	local entitiesImRechteck = {};
	local AddEntity = function( _x, _y)
		table.insert(entitiesImRechteck,  assert(Logic.GetEntityAtPosition(_x , _y),"Entity ist nicht mehr da"));
	end
	AddEntity(3004.98, 3286.27); AddEntity(3220.22, 3284.31); AddEntity(2464.06, 3500); AddEntity(2788.76, 3277.68); AddEntity(2464, 3100.641); 
	AddEntity(2576.8, 3273.62); AddEntity(3436.22, 3289.79); AddEntity(3858.5, 3299.14); AddEntity(3870, 4030); AddEntity(2910.1, 4026.609); 
	AddEntity(3770, 2570); AddEntity(2810.1, 2573.39); AddEntity(3230, 4030); AddEntity(3530, 4030); AddEntity(2613.35, 4030); 
	AddEntity(2513.35, 2570); AddEntity(3130, 2570); AddEntity(3430, 2570); AddEntity(3770, 2116.12); AddEntity(2494.58, 2116.12); 
	AddEntity(3111.22, 2116.12); AddEntity(3470, 2119.86); AddEntity(2821.96, 2098.42); AddEntity(3956.859, 3503.109); AddEntity(3952.289, 3098.75); 
	AddEntity(3653.74, 3300.32); AddEntity(2420, 2017.21); AddEntity(2714.01, 2000.55); AddEntity(3080, 2000.1); AddEntity(3420, 2020); 
	AddEntity(3789.359, 2016.26); AddEntity(1940, 2342.86); AddEntity(2622.33, 3844.699); AddEntity(3684.09, 3854.16); AddEntity(3307.051, 3891.869); 
	AddEntity(2754.94, 2531.62); AddEntity(3626.051, 2435.76); AddEntity(2344.15, 2070.92); AddEntity(2180, 3980); AddEntity(2133.88, 3880); 
	AddEntity(3374.09, 2218.04); AddEntity(3411.66, 1956.1); AddEntity(1906.54, 3796.18); AddEntity(2615.39, 3970.32); AddEntity(3674.689, 2597.1); 
	AddEntity(3087.66, 1997.35); AddEntity(3685.189, 1966.87); AddEntity(2488.71, 2127.63); AddEntity(2062.36, 2620.8); AddEntity(2020.99, 2138.13); 
	AddEntity(2066.05, 1721.66); AddEntity(2452.47, 1582.25); AddEntity(2923.28, 1597.59); AddEntity(2102.28, 1942.14); AddEntity(2117.58, 2439.06); 
	AddEntity(3672.891, 1607.73); AddEntity(3813.119, 1691.97); AddEntity(3237.27, 1748.14); AddEntity(2399.97, 1723.57); AddEntity(2689.07, 1583.38); 
	AddEntity(3177.47, 1590.85); AddEntity(2598.06, 2450.53); AddEntity(2897.83, 1777.96); AddEntity(3396.971, 1626.99); AddEntity(4065.41, 1808.75); 
	AddEntity(4123.01, 2361.53); AddEntity(4186.26, 2147.08); AddEntity(3551.801, 1635.2); AddEntity(3978.051, 1672.52); AddEntity(2055.64, 1971.3); 
	AddEntity(2278.73, 1698.35); AddEntity(4069.99, 3295.77); AddEntity(2372.29, 3276.53); AddEntity(4142.359, 2602.89); AddEntity(4043.779, 1945.14); 
	AddEntity(2226.58, 2160.93); AddEntity(3164.56, 4141.471); AddEntity(2414.76, 4016.34); AddEntity(4022.67, 3935.539); AddEntity(3346.811, 3958.4); 
	AddEntity(2962.4, 4065.17); AddEntity(2425.01, 4144.9); AddEntity(2354, 2755.45); AddEntity(2538.2, 2476.6); AddEntity(2885.1, 2493.39); 
	AddEntity(3512.83, 2653.49); AddEntity(3950.891, 2469.72); AddEntity(2982.2, 2721.17); AddEntity(3793.9, 2230.2); AddEntity(3698.24, 1942.15); 
	AddEntity(3252.38, 2049.96); AddEntity(2835.38, 1987.44); AddEntity(2982.67, 2195.5); AddEntity(2366.01, 1873.63); AddEntity(2570.27, 2125.81); 
	AddEntity(2415.59, 2146.27); AddEntity(2783.5, 4100.711); AddEntity(3086.92, 3986.27); AddEntity(3709.4, 4037.561); AddEntity(2784.08, 4029.551); 
	AddEntity(3099.55, 2518.21); AddEntity(2694.96, 2661.24); AddEntity(2334.3, 2519.62); AddEntity(3917.789, 2729.11); AddEntity(3515.891, 2210.02); 
	AddEntity(3373.98, 2054.85); AddEntity(2936.25, 2012.01); AddEntity(2809.24, 2090.62); AddEntity(2471.52, 2048.95); AddEntity(3230.24, 2591.63); 
	AddEntity(3406.27, 2476.02); AddEntity(3307.93, 2521.88); AddEntity(2467.33, 4146.039); AddEntity(3615.211, 2489.38); AddEntity(3079.82, 2174.18); 
	AddEntity(2295.5, 3535.15); AddEntity(2295, 3056.01); AddEntity(3220.2, 3284.301); AddEntity(1286.84, 3488.641); AddEntity(1575.01, 3189.81); 
	return entitiesImRechteck;
end

in der Zwischenablage. =⇒ Rechte Maustaste ins Script und einfügen.

Einfache Anwendung:

myEntities = HoleEntities()
for i = 1, table.getn(myEntities ) do DestroyEntity(myEntities [i]) end

Und alles ist futsch.

Wie gesagt braucht man die EntityOut.Exe

Und das kleine bisschen hier.