warrior1024
08.02.2010 19:08
780 mal angesehen

Was Magier können

Hier ist ein Bild aus meiner Map zusehen(der Haufen Drops kommt noch weg, später fallen sowieso genug). Hier ist ein Schamane(Script im Wiki zu finden, von Noigi). Nur hier sind die Tooltips vollständig, eine wichtige Comfortfunktion ist auch dabei und das 4. Schamanenwunder ist fast einsatzbereit(der Preis muss angepasst werden, wer zahlt den schon 10 Wetteränderungen auf Regen, um ein paar Soldaten mehr zu bekommen?). Wie ihr seht, arbeite ich gerade am Cooldown des Effekts, damit es nicht zur Variablenüberschreibung kommt;)
Die Truppen verschwinden nach 3 Minuten wieder, aber sie lassen dann auch die Waffen liegen.

Mit der Erlaubnis und Unterstützung von Noigi gescriptet!


Auf das Bild klicken, um es in Originalgröße zu sehen (172,61 KB)


Kommentare

» Kommentar schreiben

warrior1024
11.02.2010 21:46

Wenn du am Code interessiert bist, der sieht im Moment so aus:

function Shamans_Curse4_Action( _shaman )
	local pos = GetPosition( _shaman)
	--MiscAxeShield = SKav
	--MiscBow = LKav
	--MiscSwordShield = Schwert
	--MiscPoleArm = Speer
	local maxDrops = 100
	SKavRoh = {Logic.GetEntitiesInArea(Entities.XD_MiscAxeShield, pos.X, pos.Y, 5000, maxDrops)}
	for i = 2, SKavRoh[1] + 1 do
		local SKavPos = GetPosition( SKavRoh[i])
		ReplaceEntity( SKavRoh[i], Entities.PU_LeaderHeavyCavalry2)
		ChangePlayer(SKavRoh[i], 1)
		Logic.CreateEffect( GGL_Effects.FXMaryDemoralize, SKavPos.X, SKavPos.Y, 0)
	end
	LKavRoh = {Logic.GetEntitiesInArea(Entities.XD_MiscBow, pos.X, pos.Y, 5000, maxDrops)}
	for i = 2, LKavRoh[1] + 1 do
		local LKavPos = GetPosition( LKavRoh[i])
		ReplaceEntity( LKavRoh[i], Entities.PU_LeaderCavalry2)
		ChangePlayer(LKavRoh[i], 1)
		Logic.CreateEffect( GGL_Effects.FXMaryDemoralize, LKavPos.X, LKavPos.Y, 0)
	end
	SwordRoh = {Logic.GetEntitiesInArea(Entities.XD_MiscSwordShield, pos.X, pos.Y, 5000, maxDrops)}
	for i = 2, SwordRoh[1] + 1 do
		local SwordPos = GetPosition( SwordRoh[i])
		ReplaceEntity( SwordRoh[i], Entities.PU_LeaderSword4)
		ChangePlayer(SwordRoh[i], 1)
		Logic.CreateEffect( GGL_Effects.FXMaryDemoralize, SwordPos.X, SwordPos.Y, 0)
	end
	SpeerRoh = {Logic.GetEntitiesInArea(Entities.XD_MiscPoleArm, pos.X, pos.Y, 5000, maxDrops)}
	for i = 2, SpeerRoh[1] + 1 do
		local SpeerPos = GetPosition( SpeerRoh[i])
		ReplaceEntity( SpeerRoh[i], Entities.PU_LeaderPoleArm4)
		ChangePlayer(SpeerRoh[i], 1)
		Logic.CreateEffect( GGL_Effects.FXMaryDemoralize, SpeerPos.X, SpeerPos.Y, 0)
	end
	gvCountdown = 0
	StartSimpleJob("Control_Curse4")
end

function ControlCurse4()
	gvCountdown = gvCountdown + 1
	if (gvCountdown == 180) then
		for i = 2, SKavRoh[1] + 1 do
			SetHealth(SKavRoh[i], 0)
		end
		for i = 2, LKavRoh[1] + 1 do
			SetHealth(LKavRoh[i], 0)
		end
		for i = 2, SwordRoh[1] + 1 do
			SetHealth(SwordRoh[i], 0)
		end
		for i = 2, SpeerRoh[1] + 1 do
			SetHealth(SpeerRoh[i], 0)
		end
		return true
	end
end


An der Control_Shaman-Funktion wird noch gearbeitet, damit der Cooldown funktioniert
Ich denke, man kann sich denken, was passiert, wenn der Spieler 2x in weniger als 180 Sekunden den Button drückt.

Wladimir
09.02.2010 21:06

tolle Idee! Mit der Verbesserung werde ich den Code vielleicht auch verwenden.

Danke.

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

Impressum