Eigene Findebuttons
» Siedler Map Source Forum » Siedler DEdK Script Forum » Eigene Findebuttons
Seiten: 1
wilma456
|
#1 03.04.2017 18:02 Beiträge: 460 |
Eigene Findebuttons
Da ich gerade an einem Update meiner Map werkle, ist mir die Idee gekommen, eigne Findebuttons für die Raubritter und die Banditenschützen einzubauen. Also habe ich erstmals den Kanonen Findebutton überschrieben:
function KeyBindings_SelectCannons() KeyBindings_SelectUnit(UpgradeCategories.BlackKnightLeaderMace1,0) end
Funktioniert perfekt! Wenn ich den Button anblicke wird ein Raubritter ausgewählt. Aber jetzt wird es kompliziert: Bei allen anderen Buttons muss ich die Funktion KeyBindings_SelectUnit überschreiben (Also die Funktion, die ich brauche). Deshalb habe ich folgendes in die FMA geschrieben:
FindeEinheit = KeyBindings_SelectUnit
Und weiter unten im Skript:
function KeyBindings_SelectCannons() FindeEinheit(UpgradeCategories.BlackKnightLeaderMace1,0) end function KeyBindings_SelectUnit() FindeEinheit(UpgradeCategories.LeaderBanditBow,0) end
Wenn ich jetzt jedoch auf einen Findebutton klicke (auch auf den der Kanone/Raubritter) stürzt das Spiel ab. Wie kann ich nun die Button überschreiben?
____________________
Schlacht um Crawford
Wilmasmod
mcb
|
#2 03.04.2017 19:02 Beiträge: 1472 |
Versuch mal die beiden Funktionen auch in die FMA zu packen (unter die andere Zeile). Sie überschreiben die Originalen beim Laden des Scriptes und danach wird die FMA aufgerufen, die FindeEinheit setzt. Gibt dann am Ende eine schöne Endlosrekursion
wilma456
|
#3 04.04.2017 21:03 Beiträge: 460 |
Das führt leider nur zu einem Stack Overflow beim laden der Map.
Aber ich habe eine andere Lösung gefunden: Die FindeEinheit = KeyBindings_SelectUnit Zeile muss außerhalb einer Funktion vor dem Überschreiben von KeyBindings_SelectUnit stehen.
____________________
Schlacht um Crawford
Wilmasmod
Noigi
|
#4 20.04.2017 13:23 Beiträge: 772 |
Hi! Ich habe mal eine Comfort-Funktion für custom FindUnit-Buttons geschrieben. Ich meine, sie müsste auch in der TRIBE-Map enthalten sein. Wenn ich zu Hause bin, kann ich noch mal nachsehen.
Zu deinem Problem: Ich meine mich zu erinnern, dass KeyBindings_SelectUnit eine Upgrade-Category als Parameter übergibt.
wilma456
|
#5 20.04.2017 14:31 Beiträge: 460 |
Ich konnte das Problem bereits selbst lösen. Trotzdem danke.
____________________
Schlacht um Crawford
Wilmasmod
castleplayer
|
#6 20.04.2017 23:30 Beiträge: 243 |
Zitat von mcb:
Gibt dann am Ende eine schöne Endlosrekursion
Zitat von wilma456:
Das führt leider nur zu einem Stack Overflow beim laden der Map.
Das ist so ne miese Eigenschaft, die Endlosrekursionen nicht loswerden wollen
@Noigi
Ja es werden UpgradeCategories zurückgegeben
In zusammenhang mit S5Hook könnte man damit also theoretisch für noch mehr Einheiten - sofern sie eine UpgradeCategory darstellen - einen extra Findebutton machen.
Für die Kanonen dürfte das leider nicht gehen, da SelectCannons keine Übergabeparameter hat.
Für alle die es auch interressiert ich hab auch mal den Code zusammengeschrieben und will ihn hier niemandem vorenthalten (ich würde ihn eh bald in nem Update in den NV-Maps reintun)
KeyBindings_SelectUnit_Orig = KeyBindings_SelectUnit KeyBindings_SelectUnit = function(_unit) KeyBindings_SelectUnit_Orig(_unit) if _unit == UpgradeCategories.X then KeyBindings_SelectUnit(UpgradeCategories.Y, 0) end end
____________________
Wenn die KI immer frontal angreift, wofür steht dann Das I in Künstliche Intelligenz?
Das neueste vom Nebelvolk!
Seiten: 1