Dropped rifle

» Siedler Map Source Forum » Siedler DEdK Script Forum » Dropped rifle

Seiten: 1

SH
#1
13.06.2018 18:53
Beiträge: 127

Dropped rifle

Hi,
How to remove a dropped rifle of PU_LeaderRifle2?
(like DestroyEntity)

____________________
Sorry for my German

Zedeg
#2
14.06.2018 16:24
Beiträge: 428

This will remove any rifle dropped on a battlefield (not tested):

Trigger.RequestTrigger(Events.LOGIC_EVENT_ENTITY_CREATED, nil, "DestroyRifles", 1)

function DestroyRifles()
    local id = Event.GetEntityID()
    local type = Logic.GetEntityType(id)
    if type == Entities.XD_SoldierRifle1_Rifle or type == Entities.XD_SoldierRifle2_Rifle then
        DestroyEntity(id)
    end
end



____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski

warrior1024
#3
14.06.2018 18:21
Beiträge: 345

Note that using DestroyEntity in a EntityCreated trigger breaks Event.GetEntityID(), so you need a workaround:

SW_ToDestroyEntities = {}
function SW_DestroySafe(_entityID)
	function SW_DestroyJob()
		for i = table.getn( SW_ToDestroyEntities), 1, -1 do
			DestroyEntity( SW_ToDestroyEntities[i])
		end
		SW_ToDestroyEntities = {}
		return true;
	end;
	table.insert(SW_ToDestroyEntities, _entityID);
	if table.getn(SW_ToDestroyEntities) == 1 then
		StartSimpleHiResJob("SW_DestroyJob");
	end
end



____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal

mcb
#4
14.06.2018 19:41
Beiträge: 1472

Zitat von warrior1024:
Note that using DestroyEntity in a EntityCreated trigger breaks Event.GetEntityID(), so you need a workaround:



I noticed this too and added a fix to my mcbTrigger. (I think this version is not published at its thread) . But im not sure if it is caused by my code mapping one C++ trigger to all lua functions or by some C++ code.

Peter-FS
#5
14.06.2018 20:28
Beiträge: 1086

Delete droped weapons

If you know the position of the weapons or a battlefield you can use this function to clean an area. This function was created by Flodder

function DeleteWeapons(_pos, _range)
    if waffenTable==nil then
        GlobaleTables()
    end
    local posWaffen = GetPosition(_pos)
    local i
	local j
    for j=1,table.getn(waffenTable) do
    local Data = { Logic.GetEntitiesInArea( waffenTable[j], posWaffen.X, posWaffen.Y, _range, 20)};
      for i=2, Data[1]+1 do
        DestroyEntity(Data[i]);
      end
    end
end
function GlobaleTables()
	waffenTable={
	Entities.XD_MiscAxeShield,
	Entities.XD_MiscBow,
	Entities.XD_MiscShield,
	Entities.XD_MiscPoleArm,
	Entities.XD_MiscSword,
	Entities.XD_SoldierRifle1_Rifle,
	Entities.XD_SoldierRifle2_Rifle,
	Entities.XD_MiscSwordShield,
	Entities.XD_DroppedAxeShield,
	Entities.XD_DroppedBow,
	Entities.XD_DroppedPoleArm,
	Entities.XD_DroppedShield,
	Entities.XD_DroppedSword,
	Entities.XD_DroppedSwordShield,
	}
end



____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

SH
#6
16.06.2018 18:06
Beiträge: 127

Thank you
I also found a other way, but these can be useful.

____________________
Sorry for my German

Dieser Beitrag wurde von SH am 16.06.2018 um 18:17 editiert.

Der_Deutsche
#7
22.06.2018 23:37
Beiträge: 349

Zitat von Zedeg:
This will remove any rifle dropped on a battlefield (not tested):

Trigger.RequestTrigger(Events.LOGIC_EVENT_ENTITY_CREATED, nil, "DestroyRifles", 1)

function DestroyRifles()
    local id = Event.GetEntityID()
    local type = Logic.GetEntityType(id)
    if type == Entities.XD_SoldierRifle1_Rifle or type == Entities.XD_SoldierRifle2_Rifle then
        DestroyEntity(id)
    end
end



Ist es nicht so, dass du mit diesem Trigger alle auf einmal löschst?

____________________
Nachbau von Siedler 5 Lobbys "Ubi.Com"

Updatelösungen Siedler 5 Patch 1.06

Creators Update Lösung Windows 10 Siedler 5

mcb
#8
23.06.2018 13:50
Beiträge: 1472

Nicht wirklich. Der Trigger wird ausgeführt, wenn ein neues Entity erstellt wird. Das heißt, nachdem du den Trigger erstellst, werden keine neuen mehr liegenbleiben, aber alle alten die vorher schon irgendwo rumliegen bleiben da auch.

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum