Prüfen, ob Tavern gebaut wurde

» Siedler Map Source Forum » Siedler DEdK Script Forum » Prüfen, ob Tavern gebaut wurde

Seiten: 1

wilma456
#1
08.08.2018 15:40
Beiträge: 458

Prüfen, ob Taverne gebaut wurde

Ich will prüfen, ob eine Taverne gebaut wurde. Bisher verwende ich

if Logic.GetPlayerEntitiesInArea(1,Entities.PB_Tavern1,tapos.X,tapos.Y,1000,1) > 0 then


Allerdings wird das schon ausgelöst, sobald der Bauplatz erschient. Kennt jemand eine passende Funktion, die prüft, wenn die Taverne fertig ist?

____________________
Schlacht um Crawford

Wilmasmod

Dieser Beitrag wurde von wilma456 am 10.08.2018 um 14:54 editiert.

mcb
#2
08.08.2018 16:05
Beiträge: 1393

Hiermit kannst du prüfen, ob ein Gebäude fertig gebaut ist:

Logic.IsConstructionComplete(_buildingId)==1

wilma456
#3
10.08.2018 13:50
Beiträge: 458

Wie bekomme ich anhand der Koordinaten die BuildingID?

____________________
Schlacht um Crawford

Wilmasmod

mcb
#4
10.08.2018 15:25
Beiträge: 1393

Z.B. mit Logic.GetPlayerEntitiesInArea(_playerId, _entityType, _posX, _posY, _range, _amount) , gibt zuerst die Anzahl und dann nacheinander bis zu 16 ids zurück.

local ids = {Logic.GetPlayerEntitiesInArea(_playerId, _entityType, _posX, _posY, _range, _amount)}
table.remove(ids, 1)
for _, id in ipairs(ids) do
   -- stuff
end



Wenn dir die 16 ids nicht reichen hilft nur der Hook:

for id in S5Hook.EntityIterator(Predicate.OfPlayer(player), Predicate.OfType(type), Predicate.InCircle(x, y, range)) do
   - stuff
end

Peter-FS
#5
11.08.2018 08:48
Beiträge: 1071

Bauquest

Dafür gibt es fertige Funktionen und man muss sich nicht darum kümmern, ob das Gebäuede fertig gebaut ist.

function CheckTaverne()
    local Bauquest = {
        EntityTypes = {{Entities.PB_Tavern1,1},},
		-- AreaPos = "powerplant_pos",
                -- Player = 4,		
                AreaSize = 5000,
		Any = nil,
		Callback = function()
                   --hier was dann passieren soll
		end,
    };
	SetupEstablish( Bauquest )
end
-----------------------------------------------------------------------------------------------------------
-- Setup establish: Player has to build different buildings in an optional area, no area whole map is used
--
-- Player = checking this player...optional
-- AreaPos = base must be established near this position...optional
-- AreaSize = in this range
-- EntityTypes = table with entities, Element(Type and Amount)
-- Any = any building is placed
-- Callback = Call this function after establish quest done
-----------------------------------------------------------------------------------------------------------



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

wilma456
#6
13.08.2018 21:01
Beiträge: 458

Hat mit den Code von Peter-FS wunderbar funktioniert. Danke!

____________________
Schlacht um Crawford

Wilmasmod

Seiten: 1

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

Impressum