Nichtspielergebaeude bauen?

» Siedler Map Source Forum » Mapping » Nichtspielergebaeude bauen?

Seiten: 1

Wladimir
#1
15.06.2009 17:38
Beiträge: 489

Nichtspielergebaeude bauen?

Hab mir Emzets 2. Map angesehen, wo der Spieler einen Turm gebaut bekommt. Wie kann ich das machen? Und wessen Funktion ist das?

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

Flodder
#2
15.06.2009 19:06
Beiträge: 2608

Zitat von Wladimir:
Hab mir Emzets 2. Map angesehen, wo der Spieler einen Turm gebaut bekommt. Wie kann ich das machen? Und wessen Funktion ist das?
Wladimir.



hi wladi,
das ist die "baufunktion". ursprüngliche ersteller der funktion, soweit ich mich erinnern kann :
jugar.

____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.

Wladimir
#3
15.06.2009 19:43
Beiträge: 489

jugar? Kann es sein, das sehr viele Funktionen vom Jugar-Team sind? Was brauche ich um das machen zu koennen? Ich will nämlich das zwar (noch) nicht in einer eigenen Map hier bringen, aber für mich selbst daheim wäre das ein Interressanter Code. Wie der Funktioniert, verstehe ich nicht.

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

Flodder
#4
15.06.2009 20:16
Beiträge: 2608

Zitat von Wladimir:
jugar? Kann es sein, das sehr viele Funktionen vom Jugar-Team sind?
Wladimir.


ja! die waren fit und fleissig.

____________________
Take a Nudelholz und hau it on the Kopp of a bekloppt Person .... to give you a better Gefühl than vorher.

xx1000
#5
15.06.2009 20:17
Beiträge: 143

waren
is leider der richtige ausdrug

xx1000

____________________
Die Kunst ist nichts Wahres ohne Aussicht auf Bares
Ich suche einen guten Scripter der für mich eine Funktion macht.
Bei Interesse mir bitte eine PN schreiben
MfG xx1000

Wladimir
#6
15.06.2009 20:33
Beiträge: 489

nein sind!! die haben doch noch so ne Seite, wo man die Maps von denen sich downloaden kann, oder net mehr??

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

xx1000
#7
15.06.2009 20:41
Beiträge: 143

Also hier wurden alle maps gelöscht

xx1000

____________________
Die Kunst ist nichts Wahres ohne Aussicht auf Bares
Ich suche einen guten Scripter der für mich eine Funktion macht.
Bei Interesse mir bitte eine PN schreiben
MfG xx1000

Wladimir
#8
15.06.2009 20:42
Beiträge: 489

solange ich irgentwo an diese Maps komme ist das für mich nicht so schlimm, aber trotzdem schade.

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

Siedler_Team
#9
15.06.2009 22:15
Beiträge: 847

Zitat von Wladimir:
solange ich irgentwo an diese Maps komme...



...wird dir das nicht viel nützen, denn es bleibt ja noch die für dich unüberwindliche hürde der "Skript-Sauklaue"

____________________
Wer altes Wissen ehrt und neues Wissen erlangt, ist bereit, ein Lehrer zu sein. ( -Konfuzius- )

Wladimir
#10
16.06.2009 09:46
Beiträge: 489

ne, ich meinte vom Spielen her, kann man sie noch immer haben.

Wladimir.

____________________
Viele, die leben, verdienen den Tod und viele die tot sind, das Leben. Kannst du es ihnen geben? Dann sei auch nicht so rasch mit einem Todesurteil zur Hand!

Gandalf

jugar
#11
16.06.2009 12:29
Beiträge: 141

Zitat von Wladimir:
ne, ich meinte vom Spielen her, kann man sie noch immer haben.
Wladimir.



Eindeutig NEIN !
Wegen Ungleichbehandlung im Kommentarbereich wird keine Map mehr vom Jugar-Team auf die Map-Base hochgeladen.

( Einem Mitglied des Jugar-Teams wurde wegen Kritik an anderen Maps der Zugriff auf die Map-Base seitens der Administration gesperrt )

Nach Ansicht des Jugar-Teams ging es nicht um Maps/Skripten, sondern war dies eine persönliche Entscheidung der Administration. Daraufhin wurden alle Maps des Jugar Teams gelöscht.

Weitere Begründung:
Skript-Sau klaue
Skript-Klau

Dieser Beitrag wurde von jugar am 16.06.2009 um 12:38 editiert.

totalwarANGEL
#12
16.06.2009 18:31
Beiträge: 2123

Skript sau klaue?

Was ist den das?

____________________
Die Welt ist arschlochförmig und wir leben in der Mitte.

fritz_98
#13
17.06.2009 19:51
Beiträge: 472

back2topic:
Ich denke, Wladimir sucht immer noch nach einer Lösung für sein Bauproblem. "StarteBau" heisst die Funktion von jugar. Jugar hat übrigens keine "Sauklaue", sondern ein bestimmtes Programm zu vesrchlüsseln. Es ist immer noch funktionsfähig, aber schwer zu lesen und noch schwerer zu kopieren (wenn man nicht die ganzen Variablen durchsuchen will).

Hab nun auch eine "kleine" Baufunktion geschrieben. Leider hab ich es nicht hinbekommen, das Gebäude per SetTerrainNodeHeight() anzuheben. Man sieht nur das Baugerüst und ein paar Leibis, die daran rumhämmern, bis das Gebäude erscheint. Also ganz einfach gemacht...

function StarteBauFritz(_entity,_type,_pos1,_length,_player)
		_pos = GetPosition(_pos1)
		local Type = _type
		if Type == "PB_Alchemist1" or Type == "PB_Alchemist2" or Type == "PB_Bickworks1" or Type == "PB_Bickworks2"	or Type == "PB_StoneMason1"	or Type == "PB_StoneMason2" or Type == "CB_Mercenary" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteStonemason1,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+500,_pos.Y+600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+500,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-500,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-500,_pos.Y+600,0,_player)
		end	
		if Type == "PB_Archery1" or Type == "PB_Archery2" or Type == "PB_Stable1" or Type == "PB_Stable2" or Type == "PB_Foundry1" or Type == "PB_Foundry2"	or Type == "PB_Headquarters1" or Type == "PB_Headquarters2"
		or Type == "PB_Headquarters3" or Type == "PB_Market1" or Type == "PB_Market2" or Type == "PB_Tavern1" or Type == "PB_Tavern2" or Type == "PB_University1" or Type == "PB_University2"
		or Type == "CB_Castle1" or Type == "CB_Castle2" or Type == "CB_CrawfordCastle" or Type == "CB_MonasteryBuildingSite1" or Type == "CB_BarmeciaCastle" or Type == "CB_CleycourtCastle" or Type == "CB_DarkCastle"
		or Type == "CB_FolklungCastle" or Type == "CB_KaloixCastle" then
			Logic.CreateEntity(Entities.ZB_UpgradeSite3,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+800,_pos.Y+800,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+800,_pos.Y-800,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-800,_pos.Y-800,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-800,_pos.Y+800,0,_player)
        end
        if Type == "PB_Bank1" or Type == "PB_Bank2"	or Type == "PB_GunsmithWorkshop1" or Type == "PB_GunsmithWorkshop2" or Type == "PB_MasterBuilderWorkshop" or Type == "CB_InventorsHut1" then
			Logic.CreateEntity(Entities.ZB_UpgradeSite2,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+600,_pos.Y+600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+600,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-600,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-600,_pos.Y+600,0,_player)
        end	
        if Type == "PB_Barracks1" or Type == "PB_Barracks2" or Type == "CB_Abbey01" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteBarracks1,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+600,_pos.Y+600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+600,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-600,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-600,_pos.Y+600,0,_player)
        end
        if Type == "PB_Beautification01" or Type == "PB_Beautification02" or Type == "PB_Beautification03" or Type == "PB_Beautification04" or Type == "PB_Beautification05" 
        or Type == "PB_Beautification06" or Type == "PB_Beautification07" or Type == "PB_Beautification08" or Type == "PB_Beautification09" or Type == "PB_Beautification10"
        or Type == "PB_Beautification11" or Type == "PB_Beautification12" or Type == "PB_DarkTower1" or Type == "PB_DarkTower2" or Type == "PB_DarkTower3" or Type == "PB_Tower1"
        or Type == "PB_Tower2" or Type == "PB_Tower3" or Type == "PB_PowerPlant1" or Type == "PB_WeatherTower1" or Type == "CB_Abbey02" or Type == "CB_Abbey03" or Type == "CB_Abbey04"
		or Type == "CB_Camp04" or Type == "CB_Camp05" or Type == "CB_Camp06" or Type == "CB_Camp07" or Type == "CB_Camp12" or Type == "CB_Camp13" or Type == "CB_Camp14"
		or Type == "CB_Camp15" or Type == "CB_Camp16" or Type == "CB_Camp18" or Type == "CB_Camp19" or Type == "CB_Camp20" or Type == "CB_Camp21" or Type == "CB_Camp23"
		or Type == "CB_Camp24" or Type == "CB_DestroyAbleRuinSmallTower1" or Type == "CB_DestroyAbleRuinSmallTower3" or Type == "CB_Evil_Tower1" or Type == "CB_SteamMashine" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteTower1,_pos.X,_pos.Y,0,0)	
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+200,_pos.Y+200,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+200,_pos.Y-200,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-200,_pos.Y-200,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-200,_pos.Y+200,0,_player)
        end
        if Type == "PB_Blacksmith1" or Type == "PB_Blacksmith2" or Type == "PB_Blacksmith3" or Type == "CB_Camp01" or Type == "CB_Camp02" or Type == "CB_Camp03" or Type == "CB_Camp08"
        or Type == "CB_Camp09" or Type == "CB_Camp10" or Type == "CB_Camp11" or Type == "CB_Camp17" or Type == "CB_Camp22" or Type == "CB_DestroyAbleRuinHouse1" or Type == "CB_HermitHut1"
        or Type == "CB_Lighthouse" or Type == "CB_LighthouseActivated" or Type == "CB_MinerCamp1" or Type == "CB_MinerCamp2" or Type == "CB_MinerCamp3" or Type == "CB_MinerCamp4" 
        or Type == "CB_MinerCamp5" or Type == "CB_MinerCamp6" or Type == "CB_RobberyTower1" or Type == "CB_Bastille1" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteBlacksmith1,_pos.X,_pos.Y,0,0)	
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+400,_pos.Y+400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+400,_pos.Y-400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-400,_pos.Y-400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-400,_pos.Y+400,0,_player)
        end
        if Type == "PB_Farm1" or Type == "PB_Farm2" or Type == "PB_Farm3" or Type == "PB_Residence1" or Type == "PB_Residence2" or Type == "PB_Residence3" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteFarm1,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+400,_pos.Y+400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+400,_pos.Y-400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-400,_pos.Y-400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-400,_pos.Y+400,0,_player)			
        end
		if Type == "PB_Monastery1" or Type == "PB_Monastery2" or Type == "PB_Monastery3" or Type == "CB_DestroyAbleRuinMonastery1" or Type == "CB_OldKingsCastle" or Type == "CB_OldKingsCastleRuin" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteMonastery1,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+800,_pos.Y+700,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+800,_pos.Y-700,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-800,_pos.Y-700,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-800,_pos.Y+700,0,_player)
		end
	meinBauFritzTable = {}
	meinBauFritzTable.type = _entity
	meinBauFritzTable.pos = _pos
	meinBauFritzTable.pos1 = _pos1
	meinBauFritzTable.length = _length
	meinBauFritzTable.player = _player
	meinBauFritzTable.serfs,meinBauFritzTableSerf1,meinBauFritzTableSerf2,meinBauFritzTableSerf3,meinBauFritzTableSerf4 = Logic.GetPlayerEntitiesInArea(_player ,Entities.PU_Serf, _pos.X, _pos.Y, 3000, 4)
	StartSimpleJob("AufbauFritz")
end
function AufbauFritz()
	if Counter.Tick2("counterOfTheFritzBau1",meinBauFritzTable.length) then
	  Logic.CreateEntity(meinBauFritzTable.type,meinBauFritzTable.pos.X,meinBauFritzTable.pos.Y,0,meinBauFritzTable.player)
	  SetHealth(meinBauFritzTableSerf1,0)
	  SetHealth(meinBauFritzTableSerf2,0)
	  SetHealth(meinBauFritzTableSerf3,0)
	  SetHealth(meinBauFritzTableSerf4,0)
	  return true
	end
	  Logic.SetTaskList(meinBauFritzTableSerf1,TaskLists.TL_SERF_BUILD)
	  Logic.SetTaskList(meinBauFritzTableSerf2,TaskLists.TL_SERF_BUILD)
	  Logic.SetTaskList(meinBauFritzTableSerf3,TaskLists.TL_SERF_BUILD)
	  Logic.SetTaskList(meinBauFritzTableSerf4,TaskLists.TL_SERF_BUILD)
	  LookAt(meinBauFritzTableSerf1,meinBauFritzTable.pos1)
	  LookAt(meinBauFritzTableSerf2,meinBauFritzTable.pos1)
	  LookAt(meinBauFritzTableSerf3,meinBauFritzTable.pos1)
	  LookAt(meinBauFritzTableSerf4,meinBauFritzTable.pos1)
	if Counter.Tick2("counterOfTheFritzBau2",3) then	
	    local poses1 = GetPosition(meinBauFritzTableSerf1)
		local poses2 = GetPosition(meinBauFritzTableSerf2)
		local poses3 = GetPosition(meinBauFritzTableSerf3)
		local poses4 = GetPosition(meinBauFritzTableSerf4)
		Logic.CreateEffect(5,poses1.X,poses1.Y,1)
		Logic.CreateEffect(6,poses1.X,poses1.Y,1)
		Logic.CreateEffect(7,poses1.X,poses1.Y,1)	 
		Logic.CreateEffect(5,poses2.X,poses2.Y,1)
		Logic.CreateEffect(6,poses2.X,poses2.Y,1)
		Logic.CreateEffect(7,poses2.X,poses2.Y,1)	 
		Logic.CreateEffect(5,poses3.X,poses3.Y,1)
		Logic.CreateEffect(6,poses3.X,poses3.Y,1)
		Logic.CreateEffect(7,poses3.X,poses3.Y,1)	 
		Logic.CreateEffect(5,poses4.X,poses4.Y,1)
		Logic.CreateEffect(6,poses4.X,poses4.Y,1)
		Logic.CreateEffect(7,poses4.X,poses4.Y,1)	 
	end
end


Müsste mit allen Gebäuden funktionieren, die im Namen ein PB_ oder ein CB_ enthalten. Dorfzentrum geht also nicht (kann sich aber jeder noch selbst einbauen). Sollten noch Entities fehlen, dann bitte sagen!

Verwendung:
_entity: ist die Entity
_type: ist fast das Gleiche, nur ein String und ohne ein Entities. davor.
_pos1: ist die Position
_length: Wie lange soll der Bau dauern?
_player: Wem gehört das Gebäude?

Anwendungsbeispiel:

StarteBauFritz(Entities.CB_Bastille1,"CB_Bastille1","pos",20,4) 


Einfach mal ausprobieren. Es muss nur eine ScriptEntity mit dem Namen "pos" auf der Map platziert sein.

Aufgrund der Länge wäre es mir lieb, vor der Verwendung zu fragen oder mich in der Mapbeschreibung nur kurz mit einem Wort zu erwähnen... (Bitte kein Aufsatz!; nur gaanz kurz)

LG
Fritz

aCid
#14
18.06.2009 14:59
Beiträge: 275

was passiert mit den srfs nach dem bau bzw. wo kommen die serfs her?

ansosnten hiermit gefragt für eventuelllen späteren bedarf.

____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm

fritz_98
#15
18.06.2009 15:56
Beiträge: 472

-------------
>>was passiert mit den srfs nach dem bau bzw. wo kommen die serfs her?
-------------
Sie entstehen an Ort und Stelle und wenn das Gebäude fertig ist, sind sie genauso schnell verschwunden wie sie gekommen sind.
-------------
>>ansosnten hiermit gefragt für eventuelllen späteren bedarf.
-------------
Gut, bitteschön .

Fritz

PS: Ich arbeite gerade an einem Update, das eine Callback-Funktion zulässt und auch den Bau anschaulicher werden lässt (AOE II-Style )

Die_Helden
#16
18.06.2009 16:34
Beiträge: 2

Danksagung

Da Wladimirs Account hier gesperrt ist, hier übers Team eine Danksagung an fritz:

Danke für diesen tollen Code, aber werde ihn soschnell nicht verwenden koennen, da ich hier ja nicht reinkomme. Falls ich irgentwann wieder hier rein kann, werde ich den Code nutzen und deinen Namen in der Mapbeschreibung nicht auslassen Weiet so!

Wladimir.

fritz_98
#17
18.06.2009 17:05
Beiträge: 472

Hab den Code nun überarbeitet und hier ist Version 1.2.1!

function StarteBauFritz(_entity,_type,_pos1,_length,_player,_callback)
		_pos = GetPosition(_pos1)
		local zuKlein = false
		local Type = _type
		if Type == "PB_Alchemist1" or Type == "PB_Alchemist2" or Type == "PB_Bickworks1" or Type == "PB_Bickworks2"	or Type == "PB_StoneMason1"	or Type == "PB_StoneMason2" or Type == "CB_Mercenary" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteStonemason1,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+500,_pos.Y+600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+500,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-500,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-500,_pos.Y+600,0,_player)
		end	
		if Type == "PB_Archery1" or Type == "PB_Archery2" or Type == "PB_Stable1" or Type == "PB_Stable2" or Type == "PB_Foundry1" or Type == "PB_Foundry2"	or Type == "PB_Headquarters1" or Type == "PB_Headquarters2"
		or Type == "PB_Headquarters3" or Type == "PB_Market1" or Type == "PB_Market2" or Type == "PB_Tavern1" or Type == "PB_Tavern2" or Type == "PB_University1" or Type == "PB_University2"
		or Type == "CB_Castle1" or Type == "CB_Castle2" or Type == "CB_CrawfordCastle" or Type == "CB_MonasteryBuildingSite1" or Type == "CB_BarmeciaCastle" or Type == "CB_CleycourtCastle" or Type == "CB_DarkCastle"
		or Type == "CB_FolklungCastle" or Type == "CB_KaloixCastle" then
			Logic.CreateEntity(Entities.ZB_UpgradeSite3,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+800,_pos.Y+800,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+800,_pos.Y-800,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-800,_pos.Y-800,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-800,_pos.Y+800,0,_player)
        end
        if Type == "PB_Bank1" or Type == "PB_Bank2"	or Type == "PB_GunsmithWorkshop1" or Type == "PB_GunsmithWorkshop2" or Type == "PB_MasterBuilderWorkshop" or Type == "CB_InventorsHut1" then
			Logic.CreateEntity(Entities.ZB_UpgradeSite2,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+600,_pos.Y+600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+600,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-600,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-600,_pos.Y+600,0,_player)
        end	
        if Type == "PB_Barracks1" or Type == "PB_Barracks2" or Type == "CB_Abbey01" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteBarracks1,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+600,_pos.Y+600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+600,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-600,_pos.Y-600,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-600,_pos.Y+600,0,_player)
        end
        if Type == "PB_Beautification01" or Type == "PB_Beautification02" or Type == "PB_Beautification03" or Type == "PB_Beautification04" or Type == "PB_Beautification05" 
        or Type == "PB_Beautification06" or Type == "PB_Beautification07" or Type == "PB_Beautification08" or Type == "PB_Beautification09" or Type == "PB_Beautification10"
        or Type == "PB_Beautification11" or Type == "PB_Beautification12" or Type == "PB_DarkTower1" or Type == "PB_DarkTower2" or Type == "PB_DarkTower3" or Type == "PB_Tower1"
        or Type == "PB_Tower2" or Type == "PB_Tower3" or Type == "PB_PowerPlant1" or Type == "PB_WeatherTower1" or Type == "CB_Abbey02" or Type == "CB_Abbey03" or Type == "CB_Abbey04"
		or Type == "CB_Camp04" or Type == "CB_Camp05" or Type == "CB_Camp06" or Type == "CB_Camp07" or Type == "CB_Camp12" or Type == "CB_Camp13" or Type == "CB_Camp14"
		or Type == "CB_Camp15" or Type == "CB_Camp16" or Type == "CB_Camp18" or Type == "CB_Camp19" or Type == "CB_Camp20" or Type == "CB_Camp21" or Type == "CB_Camp23"
		or Type == "CB_Camp24" or Type == "CB_DestroyAbleRuinSmallTower1" or Type == "CB_DestroyAbleRuinSmallTower3" or Type == "CB_Evil_Tower1" or Type == "CB_SteamMashine" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteTower1,_pos.X,_pos.Y,0,0)	
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+200,_pos.Y+200,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+200,_pos.Y-200,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-200,_pos.Y-200,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-200,_pos.Y+200,0,_player)
			zuKlein = true
        end
        if Type == "PB_Blacksmith1" or Type == "PB_Blacksmith2" or Type == "PB_Blacksmith3" or Type == "CB_Camp01" or Type == "CB_Camp02" or Type == "CB_Camp03" or Type == "CB_Camp08"
        or Type == "CB_Camp09" or Type == "CB_Camp10" or Type == "CB_Camp11" or Type == "CB_Camp17" or Type == "CB_Camp22" or Type == "CB_DestroyAbleRuinHouse1" or Type == "CB_HermitHut1"
        or Type == "CB_Lighthouse" or Type == "CB_LighthouseActivated" or Type == "CB_MinerCamp1" or Type == "CB_MinerCamp2" or Type == "CB_MinerCamp3" or Type == "CB_MinerCamp4" 
        or Type == "CB_MinerCamp5" or Type == "CB_MinerCamp6" or Type == "CB_RobberyTower1" or Type == "CB_Bastille1" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteBlacksmith1,_pos.X,_pos.Y,0,0)	
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+400,_pos.Y+400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+400,_pos.Y-400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-400,_pos.Y-400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-400,_pos.Y+400,0,_player)
			zuKlein = true
        end
        if Type == "PB_Farm1" or Type == "PB_Farm2" or Type == "PB_Farm3" or Type == "PB_Residence1" or Type == "PB_Residence2" or Type == "PB_Residence3" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteFarm1,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+400,_pos.Y+400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+400,_pos.Y-400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-400,_pos.Y-400,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-400,_pos.Y+400,0,_player)	
			zuKlein = true			
        end
		if Type == "PB_Monastery1" or Type == "PB_Monastery2" or Type == "PB_Monastery3" or Type == "CB_DestroyAbleRuinMonastery1" or Type == "CB_OldKingsCastle" or Type == "CB_OldKingsCastleRuin" then
			Logic.CreateEntity(Entities.ZB_UpgradeSiteMonastery1,_pos.X,_pos.Y,0,0)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+800,_pos.Y+700,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X+800,_pos.Y-700,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-800,_pos.Y-700,0,_player)
			Logic.CreateEntity(Entities.PU_Serf,_pos.X-800,_pos.Y+700,0,_player)
		end
	meinBauFritzTable = {}
	meinBauFritzTable.type = _entity
	meinBauFritzTable.pos = _pos
	meinBauFritzTable.pos1 = _pos1
	meinBauFritzTable.length = _length
	meinBauFritzTable.player = _player
	meinBauFritzTable.callback = _callback
	meinBauFritzTable.zuKlein = zuKlein
	meinBauFritzTable.serfs,meinBauFritzTableSerf1,meinBauFritzTableSerf2,meinBauFritzTableSerf3,meinBauFritzTableSerf4 = Logic.GetPlayerEntitiesInArea(_player ,Entities.PU_Serf, _pos.X, _pos.Y, 3500, 4)
	StartSimpleJob("AufbauFritz")
	StartSimpleJob("AufbauFritzEntities")
end
function AufbauFritzEntities()
	if not meinBauFritzTable.zuKlein == true then
	--Kisten
	if Counter.Tick2("counterOfTheFritzBauKisten1",meinBauFritzTable.length/2.5) then
	    SetEntityName(Logic.CreateEntity(Entities.XD_MiscBox1,meinBauFritzTable.pos.X+300,meinBauFritzTable.pos.Y-100,56,0),"bauFritzBox1")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscBox2,meinBauFritzTable.pos.X+100,meinBauFritzTable.pos.Y+190,198,0),"bauFritzBox2")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscBox1,meinBauFritzTable.pos.X-240,meinBauFritzTable.pos.Y-340,213,0),"bauFritzBox3")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscBox2,meinBauFritzTable.pos.X-170,meinBauFritzTable.pos.Y+120,90,0),"bauFritzBox4")
	end	
    --Fässer
	if Counter.Tick2("counterOfTheFritzBauKisten2",meinBauFritzTable.length/1.5) then	
	    SetEntityName(Logic.CreateEntity(Entities.XD_MiscBarrel1,meinBauFritzTable.pos.X+210,meinBauFritzTable.pos.Y-280,84,0),"bauFritzBox5")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscBarrel2,meinBauFritzTable.pos.X-480,meinBauFritzTable.pos.Y-410,290,0),"bauFritzBox6")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscBarrel1,meinBauFritzTable.pos.X+120,meinBauFritzTable.pos.Y+240,333,0),"bauFritzBox7")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscBarrel2,meinBauFritzTable.pos.X-350,meinBauFritzTable.pos.Y+370,145,0),"bauFritzBox8")
	end
	--Heuballen
	if Counter.Tick2("counterOfTheFritzBauKisten3",meinBauFritzTable.length/1.5) then	
	    SetEntityName(Logic.CreateEntity(Entities.XD_MiscHaybale2,meinBauFritzTable.pos.X+130,meinBauFritzTable.pos.Y-280,324,0),"bauFritzBox9")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscHaybale3,meinBauFritzTable.pos.X+260,meinBauFritzTable.pos.Y+310,54,0),"bauFritzBox10")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscHaybale2,meinBauFritzTable.pos.X-180,meinBauFritzTable.pos.Y+340,121,0),"bauFritzBox11")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscHaybale3,meinBauFritzTable.pos.X-290,meinBauFritzTable.pos.Y-170,48,0),"bauFritzBox12")
		Counter.Reset( "counterOfTheFritzBauKisten1" )
		Counter.Reset( "counterOfTheFritzBauKisten2" )
		Counter.Reset( "counterOfTheFritzBauKisten3" )
		Counter.Reset( "counterOfTheFritzBauKisten4" )
		return true
	end
	--So... restliches Zeugs
	if Counter.Tick2("counterOfTheFritzBauKisten4",meinBauFritzTable.length/2) then	
	    SetEntityName(Logic.CreateEntity(Entities.XD_MiscPile1,meinBauFritzTable.pos.X+100,meinBauFritzTable.pos.Y-200,0,0),"bauFritzBox13")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscPile1,meinBauFritzTable.pos.X+200,meinBauFritzTable.pos.Y+300,90,0),"bauFritzBox14")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscPile1,meinBauFritzTable.pos.X-100,meinBauFritzTable.pos.Y+300,45,0),"bauFritzBox15")
		SetEntityName(Logic.CreateEntity(Entities.XD_MiscPile1,meinBauFritzTable.pos.X-200,meinBauFritzTable.pos.Y-100,115,0),"bauFritzBox16")		
	end
	end
end
function AufbauFritz()
	if Counter.Tick2("counterOfTheFritzBau1",meinBauFritzTable.length) then
	for i = 1,4 do
	DestroyEntity("bauFritzBox1")
	DestroyEntity("bauFritzBox2")
	DestroyEntity("bauFritzBox3")
	DestroyEntity("bauFritzBox4")
	DestroyEntity("bauFritzBox5")
	DestroyEntity("bauFritzBox6")
	DestroyEntity("bauFritzBox7")
	DestroyEntity("bauFritzBox8")
	DestroyEntity("bauFritzBox9")
	DestroyEntity("bauFritzBox10")
	DestroyEntity("bauFritzBox11")
	DestroyEntity("bauFritzBox12")
	DestroyEntity("bauFritzBox13")
	DestroyEntity("bauFritzBox14")
	DestroyEntity("bauFritzBox15")
	DestroyEntity("bauFritzBox16")
	end
	  SetHealth(meinBauFritzTableSerf1,0)
	  SetHealth(meinBauFritzTableSerf2,0)
	  SetHealth(meinBauFritzTableSerf3,0)
	  SetHealth(meinBauFritzTableSerf4,0)
	  Sound.PlayGUISound(Sounds.VoicesSerf_SERF_WorkIsDone_rnd_01)
	  Logic.CreateEntity(meinBauFritzTable.type,meinBauFritzTable.pos.X,meinBauFritzTable.pos.Y,0,meinBauFritzTable.player)
	  meinBauFritzTable.callback()
	  return true
	end
	  Logic.SetTaskList(meinBauFritzTableSerf1,TaskLists.TL_SERF_BUILD)
	  Logic.SetTaskList(meinBauFritzTableSerf2,TaskLists.TL_SERF_BUILD)
	  Logic.SetTaskList(meinBauFritzTableSerf3,TaskLists.TL_SERF_BUILD)
	  Logic.SetTaskList(meinBauFritzTableSerf4,TaskLists.TL_SERF_BUILD)
	  LookAt(meinBauFritzTableSerf1,meinBauFritzTable.pos1)
	  LookAt(meinBauFritzTableSerf2,meinBauFritzTable.pos1)
	  LookAt(meinBauFritzTableSerf3,meinBauFritzTable.pos1)
	  LookAt(meinBauFritzTableSerf4,meinBauFritzTable.pos1)
	if Counter.Tick2("counterOfTheFritzBau2",3) then	
	    local poses1 = GetPosition(meinBauFritzTableSerf1)
		local poses2 = GetPosition(meinBauFritzTableSerf2)
		local poses3 = GetPosition(meinBauFritzTableSerf3)
		local poses4 = GetPosition(meinBauFritzTableSerf4)
		Logic.CreateEffect(5,poses1.X,poses1.Y,1)
		Logic.CreateEffect(6,poses1.X,poses1.Y,1)
		Logic.CreateEffect(7,poses1.X,poses1.Y,1)	 
		Logic.CreateEffect(5,poses2.X,poses2.Y,1)
		Logic.CreateEffect(6,poses2.X,poses2.Y,1)
		Logic.CreateEffect(7,poses2.X,poses2.Y,1)	 
		Logic.CreateEffect(5,poses3.X,poses3.Y,1)
		Logic.CreateEffect(6,poses3.X,poses3.Y,1)
		Logic.CreateEffect(7,poses3.X,poses3.Y,1)	 
		Logic.CreateEffect(5,poses4.X,poses4.Y,1)
		Logic.CreateEffect(6,poses4.X,poses4.Y,1)
		Logic.CreateEffect(7,poses4.X,poses4.Y,1)	 
	end
end


Hat sich eingentlich nichts am Aufruf geändert. Nun kann man aber Callback-Funktion auch noch aufrufen (bzw. sollte man! Wenn keine gewünscht, einfach eine "leere" Funktion aufrufen)

StarteBauFritz(Entities.PB_Monastery2,"PB_Monastery2","pos",20,4,End)
function End()
Message("Fertig! :)")
end



Und dann halt noch ein paar "kosmetische" Veränderungen .

ACHTUNG! Update!
Grund: Aufgrund eines Bugs wurden einige Entities nach dem Bau nicht gelöscht. Nun behoben.
LG
Fritz

Dieser Beitrag wurde von fritz_98 am 19.06.2009 um 17:23 editiert.

Seiten: 1

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

Impressum