Heldenfähigkeiten abfragen

» Siedler Map Source Forum » Siedler DEdK Script Forum » Heldenfähigkeiten abfragen

Seiten: 1

totalwarANGEL
#1
12.07.2010 11:05
Beiträge: 2123

Heldenfähigkeiten abfragen

Ist es möglich abzufragen, ob gerade eine Heldenfähigkeit - zum Beispiel Helias Segen - auf einen Leibeigenen einwirkt? Der Rüstungswert wird ja bei Serfs und Arbeitern nicht verändert.

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

Flodder
#2
12.07.2010 14:59
Beiträge: 2608

Zitat von totalwarANGEL:
Ist es möglich abzufragen, ob gerade eine Heldenfähigkeit - zum Beispiel Helias Segen - auf einen Leibeigenen einwirkt? Der Rüstungswert wird ja bei Serfs und Arbeitern nicht verändert.



moin,
du meinst nicht zufällig "bekehren" statt "segnen"?
wenn "bekehren" auf einen leibeigenen einer anderen NICHT spielereigenen Id angewandt wird, dann ändert sich deren Id auf 1 (...denk ich doch, oder?). damit wäre abfragbar, ob die Heldenfähigkeit "bekehren" gewirkt hat.

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

totalwarANGEL
#3
12.07.2010 16:32
Beiträge: 2123

Zitat von Flodder:
du meinst nicht zufällig "bekehren" statt "segnen"?
wenn "bekehren" auf einen leibeigenen einer anderen NICHT spielereigenen Id angewandt wird, dann ändert sich deren Id auf 1 (...denk ich doch, oder?). damit wäre abfragbar, ob die Heldenfähigkeit "bekehren" gewirkt hat.


Leider meine ich aber seine Segnen-Fähigkeit, die bei Soldaten die RP erhöht.

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

Mordred
#4
12.07.2010 17:05
Beiträge: 939

da kannst du dir ja eine "Faust-Funktion" bauen:
1. Nachschauen, wie lang segnen wirkt
2. Originalfunktion mit Counter ausstatten
3. Beim Leibeigenen eine AreEntitiesInAre Abfrage
Aber naja..
--edit:
Wow, das wird ja ne spannende Map, die du da zusammenzumixen scheinst

fritz_98
#5
12.07.2010 17:25
Beiträge: 472

Herauszufinden, ob Helias überhaupt die Fähigkeit ausführt, ist relativ einfach. Machst du einfach einen klitzekleinen GUI-Hack.

Aber speziell auf einen Leibeigenen? Bestimmt nur auf Umwegen... (*hust* s. Mordred )

Du könntest ja auch mit Hilfe unseres klitzekleinen GUI-Hacks erstmal herausfinden, ob überhaupt Helias' Fähigkeit ausgeführt wird und dann schaust du, ob in seiner Nähe irgendwo ein Leibi rumläuft.

totalwarANGEL
#6
12.07.2010 19:21
Beiträge: 2123

Simulieren oder Hacken

Die Möglichkeit mit dem Simulieren ist vermutlich einfacher. wird aber unschön. Gibt es dieses Leuchten bei den Heldenfähigkeiten auch als Grafikeffekt?


Hacken? Ich habe noch nie von einem Hack gehört, der prüft ob die Fähigkeit ausgeführt wird. Wenn, dann hätte ich wohl kaum um Hilfe gefragt.

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

Mordred
#7
12.07.2010 19:37
Beiträge: 939

es geht, fritz_98 hat die lösung schon gesagt
code folgt..
-- edit (fast vergessen )
Wow, wurde doch schwerer als erwartet.
Dennoch ist der code nicht fertig, denn er ist ungetestet
und es gibt mehrere schwachstellen.
aber das ist vermutlich die richtige Richtung
Lg Mordred

function HeliasSegnetLeibi()
 SegnenUndSoWeiter_Original	= GUI.SettlerAffectUnitsInArea
  function GUI.SettlerAffectUnitsInArea(_held)
   if (Logic.GetEntityTypeName(Logic.GetEntityType(GetEntityId(_held))) == "PU_Hero6")then
    if not SegnenderHelias then
	 local ERSTERAUFRUF = true
	end
   SegnenderHelias = _held
   SegnenderHealiasTicker = 60 -- Wie lange dauert segnen?
	if ERSTERAUFRUF then
	 StartSimpleJob("HeliasSegne_LiefereLeibis")
	end
   end
  end
end
function HeliasSegne_LiefereLeibis()
 SegnenderHealiasTicker = SegnenderHealiasTicker - 1
  if (SegnenderHealiasTicker < 1)then
   return true
  else
   if IsNear(SegnenderHelias,"xxxxxxxxx")then -- Leibeigenen name
	-- Deine Aktion
   end
  end
end

Dieser Beitrag wurde von Mordred am 12.07.2010 um 20:02 editiert.

warrior1024
#8
12.07.2010 21:18
Beiträge: 345

@Mordred:
Der Job wird nur einmal gestartet und sobald der Segen vorbei ist, wird der Job nicht mehr gestartet.

Mal schnell aus dem Kopf und der GUIElements:

Selection_Hero6
               Commands_Hero6
                 Hero6_RechargeBless
                  Calls: GUIUpdate_HeroAbility(Abilities.AbilityRangedEffect,gvGUI_WidgetID.Hero6_Bless)
                 Hero6_RechargeConvertSettler
                  Calls: GUIUpdate_HeroAbility(Abilities.AbilityConvertSettlers,gvGUI_WidgetID.Hero6_ConvertSettlers)
                 Hero6_Bless
                   Calls: GUIAction_Hero6Bless()
                   Calls: GUITooltip_NormalButton("MenuHero6/command_bless","KeyBindings/HeroAbility2")
                 Hero6_ConvertSettler
                   Calls: GUIAction_Hero6ConvertSettlers()
                   Calls: GUITooltip_NormalButton("MenuHero6/command_convertbuilding","KeyBindings/HeroAbility1")


Und der Code:

HeliasSegenAktiv = HeliasSegenAktiv or 0
function HackHeliasSegen()
	GUIAction_Hero6Bless_Orig = GUIAction_Hero6Bless
	GUIAction_Hero6Bless = function()
		HeliasSegenAktiv = 1
		StartCountdown(60, ResetHeliasSegen) --Solange nur ein Spieler-Helias vorhanden ist
		GUIAction_Hero6Bless_Orig
	end
end
function ResetHeliasSegen()
	HeliasSegenAktiv = 0
end
function IstGesegnet(_id)
	if IsNear(_id, "Helias", 1000) and HeliasSegenAktiv == 1 then
		return true
	else
		return false
	end
end



Der Held muss "Helias" heißen, darf nur einmal als spielereigenen Helden vorkommen und wahrscheinlich sind die Segenswerte falsch.
Per IstGesegnet(_id) kann man herausfinden, ob die Entity gesegnet ist. VOrher wird das ganze über HackHeliasSegen() aktiviert.

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

Seiten: 1

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

Impressum