GUI-Hack Frage

» Siedler Map Source Forum » Siedler DEdK Script Forum » GUI-Hack Frage

Seiten: 1

andre111
#1
13.02.2010 20:37
Beiträge: 220

GUI-Hack Frage

Hallo,

ich möchte bei einem Soldaten alle Knöpfe verschinden lassen und nur einen(den von Dario mit den Truppen verscheuchen) anzeigen lassen.
das hier bewirkt nur, dass der "Nachkaufen" Button verschindet. alles andere bleibt unverändert

XGUIEng.ShowWidget( "Commands_Leader", 0 )
XGUIEng.ShowWidget( "Formation04", 0 )
XGUIEng.ShowWidget( "Formation03", 0 )
XGUIEng.ShowWidget( "Formation02", 0 )
XGUIEng.ShowWidget( "Formation01", 0 )
XGUIEng.ShowWidget( "Buy_Soldier_Button", 0 )
XGUIEng.ShowWidget( "Selection_Leader", 0 )
XGUIEng.ShowWidget( "Details_Leader", 0 )
XGUIEng.ShowWidget( "Selection_Hero1", 1 )
XGUIEng.ShowWidget( "Commands_Hero1", 1 )
XGUIEng.ShowWidget( "Hero1_RechargeSendHawk", 0 )
XGUIEng.ShowWidget( "Hero1_RechargeProtectUnits", 0 )
XGUIEng.ShowWidget( "Hero1_SendHawk", 0 )
XGUIEng.ShowWidget( "Hero1_LookAtHawk", 0 )
XGUIEng.ShowWidget( "Hero1_ProtectUnits", 1 )



Was ist hier falsch.

FG
andre111

Wladimir
#2
13.02.2010 20:58
Beiträge: 489

GUI ist jetzt nicht mein Spezialgebiet, aber wie soll ein Button auftauchen, der nicht existiert?

Um Darios Button in das Menu des Soldaten zu bekommen, müsste man z.B. den Stopp-Button stehen lassen und diesem dann ein neues Bildchen und eine neue Funktion zuweisen.

Hier ein Schwertbutton für die Technologie "Verbesserte Räder" o.Ä. :

XGUIEng.TransferMaterials("Buy_LeaderSword","Research_BetterChassis")



Das müsste dann bei deinem Button ähnlich gemacht werden.

Wladimir.

PS: Hab ich von fritz. Der weiß da sehr viel.

____________________
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

andre111
#3
13.02.2010 21:15
Beiträge: 220

Zitat von Wladimir:
GUI ist jetzt nicht mein Spezialgebiet, aber wie soll ein Button auftauchen, der nicht existiert?



@Wladimir:

Noigi "erschafft" aber auch Buttons in Itm 2.

FG
andre111

Wladimir
#4
13.02.2010 21:17
Beiträge: 489

Zitat von andre111:

Zitat von Wladimir:
GUI ist jetzt nicht mein Spezialgebiet, aber wie soll ein Button auftauchen, der nicht existiert?



@Wladimir:

Noigi "erschafft" aber auch Buttons in Itm 2.

FG
andre111



Nein, tut er nicht.
Er lässt sie einfach da, ändert die Position, das Bild und die Funktion. So entsteht ein "neuer" Button!

In fritzens Version mit dem Anheuern von Soldis (vgl. Screen) wurde dies ebenso gemacht.
(Weiss ich aus zuverlässiger Quelle )

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

andre111
#5
13.02.2010 21:22
Beiträge: 220

Zitat von Wladimir:

Zitat von andre111:

Zitat von Wladimir:
GUI ist jetzt nicht mein Spezialgebiet, aber wie soll ein Button auftauchen, der nicht existiert?



@Wladimir:

Noigi "erschafft" aber auch Buttons in Itm 2.

FG
andre111



Nein, tut er nicht.
Er lässt sie einfach da, ändert die Position, das Bild und die Funktion. So entsteht ein "neuer" Button!

In fritzens Version mit dem Anheuern von Soldis (vgl. Screen) wurde dies ebenso gemacht.
(Weiss ich aus zuverlässiger Quelle )

Wladimir.




Doch, tut er schon, ich habs mir ja im Script angeschaut, er hats sogar kommentiert.

FG
andre111

Wladimir
#6
13.02.2010 21:25
Beiträge: 489

Oha!
Dann bin ich ja nicht auf dem neusten Stand!
Werde ich mir bei Gelegenheit mal ansehen und was draus lernen.

Wladimir.

PS: Fritz hat mir die Variante mit verschieben etc... gezeigt, weshalb ich mir es nicht anders erklären konnte. Sorry.

____________________
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

andre111
#7
13.02.2010 21:28
Beiträge: 220

Zitat von Wladimir:
Oha!
Dann bin ich ja nicht auf dem neusten Stand!
Werde ich mir bei Gelegenheit mal ansehen und was draus lernen.

Wladimir.

PS: Fritz hat mir die Variante mit verschieben etc... gezeigt, weshalb ich mir es nicht anders erklären konnte. Sorry.



Hier, das ist ein ausschnitt aus dem Itm 2 code:

	["PB_Residence1"] = {
	  -- MENÃœs
		{	widgetID = 963, -- Hausmenü AUS
			show = 0,
		},
		{	widgetID = 1004, -- Kirchenmenü AN
			show = 1,
		},
		{	widgetID = 908, -- Unimenü AN
			show = 1,
		},
	  -- SIEDLER
		{	widgetID = WPTechButtons[1][1],
			show = 1,
			disable = 0,
			pos = {X=73,Y=48},
			transfer = 374,
		},
	  -- Upgrade-Button
		{	widgetID = "Upgrade_University1",
			show = 1,
		},
	  -- Ausblenden
		{	widgetID = "BlessSettlers1",
			show = 0,
		},
		{	widgetID = "BlessSettlers2",
			show = 0,
		},
		{	widgetID = "BlessSettlers3",
			show = 0,
		},
		{	widgetID = "BlessSettlers4",
			show = 0,
		},
		{	widgetID = "BlessSettlers5",
			show = 0,
		},
		{	widgetID = "Upgrade_Monastery1",
			show = 0,
		},
		{	widgetID = "Upgrade_Monastery2",
			show = 0,
		},
	},



nur leider bekomme ich sowas nicht hin

FG
andre111

Wladimir
#8
13.02.2010 21:35
Beiträge: 489

Zitat von andre111:

nur leider bekomme ich sowas nicht hin



Kein Wunder!
Wie soll man denn die ganzen Ids der Buttons und die Positions dieser Buttons finden können? Da rackert man sich ja zu tode!

Wär interessant zu wissen, wie Noigi das gemacht hat.

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

Noigi
#9
13.02.2010 22:40
Beiträge: 772

Zitat von Wladimir:

Zitat von andre111:

nur leider bekomme ich sowas nicht hin



Kein Wunder!
Wie soll man denn die ganzen Ids der Buttons und die Positions dieser Buttons finden können? Da rackert man sich ja zu tode!

Wär interessant zu wissen, wie Noigi das gemacht hat.

Wladimir.


Probieren, Probieren, Probieren!
Man kann statt den ID's aber auch die Namen aus der gui-Tabelle (als string) verwenden.

Um mal mit den Mythen aufzuräumen:
Auch ich kann in einem Selektionsmenü keine Buttons erschaffen (Mit der dicken Tabelle die Andre gequotet hat stelle ich bloß Informationen zusammen, damit die nachher automatisiert verarbeitet werden können). Man kann aber einfach anstelle des "echten" Selektionsmenüs der jeweiligen Einheit ein anderes Menü einblenden, das die gewünschten Buttons enthält. Du, Andre, könntest zB bei deinem Soldaten das Menü von Dario einblenden. Wahrscheinlich wäre es aber wirklich einfacher einen bestehenden Button umzufunktionieren, wie Wladimir meinte. Also: Bild & Position ändern, GUIAction, GUITolltip und GUIUpdate ändern.
Wahrscheinlich ist der letzte Punkt auch dein Problem; ich kenne mich mit den Buttons im Einheitenmenü jetzt nicht so aus,
aber wahrscheinlich blenden irgendwelche GUIUpdates (zB GUIUpdate_CommandGroup) deine Buttons ständig wieder ein. Wenn du diese Funktionen findest und abschaltest, sollten deine Aufrufe so funktionieren.

andre111
#10
14.02.2010 08:57
Beiträge: 220

Ich hab jetzt meinen Fehler gefunden!
Das hier habe ich vergessen:

XGUIEng.ShowWidget( "Commands_generic", 0 )


Das blendet alle "Verhaltens" Buttons und den Entlassen Button aus. Genau das was mir gefehlt hat.

FG
andre111

andre111
#11
14.02.2010 09:52
Beiträge: 220

jetzt habe ich das nächste Problem,
ich will den "Buy Soldier Button" ganz in die Mitte setzen.
Benutze ich aber das hier passiert nichts:

XGUIEng.SetWidgetPosition("Buy_Soldier_Button",200,48)



Was ist hier falsch?

FG
andre111

Wladimir
#12
14.02.2010 10:00
Beiträge: 489

Zitat von Noigi:
Man kann aber einfach anstelle des "echten" Selektionsmenüs der jeweiligen Einheit ein anderes Menü einblenden, das die gewünschten Buttons enthält.



Das hatte mir auch fritz so erklärt, weshalb ich andre111 diese Vorgehensweise vorschlug.

@ andre111
woher weißt du, dass 200,48 fast genau in der Mitte liegt? Vielleicht hast du den Button so gesetzt, dass er über den Rand hinausragt und das Spiel ihn an seine Anfangsposition zurücksetzt.

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

andre111
#13
14.02.2010 10:06
Beiträge: 220

Zitat von Wladimir:

Zitat von Noigi:
Man kann aber einfach anstelle des "echten" Selektionsmenüs der jeweiligen Einheit ein anderes Menü einblenden, das die gewünschten Buttons enthält.



Das hatte mir auch fritz so erklärt, weshalb ich andre111 diese Vorgehensweise vorschlug.

@ andre111
woher weißt du, dass 200,48 fast genau in der Mitte liegt? Vielleicht hast du den Button so gesetzt, dass er über den Rand hinausragt und das Spiel ihn an seine Anfangsposition zurücksetzt.

Wladimir.



@Wladimir:

dann meinte wir beide die selbe Vorgehensweise.

auch kleinere zahlen wie 20,20 wirken leider nicht.

FG
andre111

Wladimir
#14
14.02.2010 10:28
Beiträge: 489

Zitat von andre111:


auch kleinere zahlen wie 20,20 wirken leider nicht.



Dann ist der Button vielleicht falsch benannt. Wenn der Button der in der Funktion genannt wird, nicht existiert, dann wird auch nix verschoben.

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

andre111
#15
14.02.2010 10:39
Beiträge: 220

Zitat von Wladimir:

Zitat von andre111:


auch kleinere zahlen wie 20,20 wirken leider nicht.



Dann ist der Button vielleicht falsch benannt. Wenn der Button der in der Funktion genannt wird, nicht existiert, dann wird auch nix verschoben.

Wladimir.



@Wladimir:

Oh. ich glaub ich hab mich oben verschrieben.
es passiert nämlich schon was. Und zwar: der button wandert egal welche zahlen ich einfügen umgefähr 5mm nach oben.
Also falsch geschrieben ist der Button Name nicht.

FG
andre111

Wladimir
#16
14.02.2010 10:45
Beiträge: 489

Zitat von andre111:


@Wladimir:

Oh. ich glaub ich hab mich oben verschrieben.
es passiert nämlich schon was. Und zwar: der button wandert egal welche zahlen ich einfügen umgefähr 5mm nach oben.
Also falsch geschrieben ist der Button Name nicht.

FG
andre111



Das ist ja mal interessant!
Hier kann eher jemand helfen, der sich eingehender mit deiner Problemfunction befasst hat.

Aber eine letzte Idee ist noch da: fällt dir auf, dass in fritzens Screen mit dem Soldaten kaufen in Zelten der Button zentriert in der Mitte liegt, obwohl der Button, welchen er änderte weiter rechts lag?
Du verschiebst also deinen Button und das Spiel setzt Ihn zuerst zurück und dann aufgrund einiger Fehlfunktionen vielleicht etwas höher.
Daher ist es dann auch egal, wohin du den Button legst.

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

Noigi
#17
14.02.2010 15:45
Beiträge: 772

Ja, das ist fies.

Jeder Button hat ein übergeordnetes Widget, "in dem" er sich befindet. Normalerweise sind das die entsprechenden Selektionsmenüs - der Einheiten-Beschützen-Button von Dario ist zB ein Sub-Widget von Darios Selektionsmenü. Er lässt sich (und das ist der Knackpunkt) nur innerhalb des Menübereichs, also dem Selektionsfenster, verschieben.

Manche Buttons haben aber noch ein eigenes übergeordnetes Widget, das in der Hierarchie zwischen dem Menü und dem Button selbst steht, der Soldatenkauf-Button hat auch so eins. Warum das so ist weiß ich nicht.
Dieses Widget ist ein unsichtbares Rechteck um den Button herum, und nur innerhalb dieses Rechtecks lässt er sich verschieben - das hat er bei Andre ja auch gemacht.

Die Lösung: Einfach statt dem Button selbst dieses übergeordnete Widget verschieben. Das Ding heißt - wie man in der gui-Übersicht scjön erkennen kann - "Buy_Soldier".

andre111
#18
14.02.2010 20:39
Beiträge: 220

Zitat von Noigi:
Ja, das ist fies.

Jeder Button hat ein übergeordnetes Widget, "in dem" er sich befindet. Normalerweise sind das die entsprechenden Selektionsmenüs - der Einheiten-Beschützen-Button von Dario ist zB ein Sub-Widget von Darios Selektionsmenü. Er lässt sich (und das ist der Knackpunkt) nur innerhalb des Menübereichs, also dem Selektionsfenster, verschieben.

Manche Buttons haben aber noch ein eigenes übergeordnetes Widget, das in der Hierarchie zwischen dem Menü und dem Button selbst steht, der Soldatenkauf-Button hat auch so eins. Warum das so ist weiß ich nicht.
Dieses Widget ist ein unsichtbares Rechteck um den Button herum, und nur innerhalb dieses Rechtecks lässt er sich verschieben - das hat er bei Andre ja auch gemacht.

Die Lösung: Einfach statt dem Button selbst dieses übergeordnete Widget verschieben. Das Ding heißt - wie man in der gui-Übersicht scjön erkennen kann - "Buy_Soldier".



@Noigi:

danke, genau das wars. Jetzt kann meine Scripterweiterung ja weiter geschrieben werden.(Übrigens: Wie stehts den um ItM 2?)

FG
andre111

Wladimir
#19
15.02.2010 08:49
Beiträge: 489

Zitat von andre111:

Übrigens: Wie stehts den um ItM 2?



Ich hatte bereits die Ehre, ITM 2 testen zu dürfen.
Hat alles gefunzt, nur die Tooltips hatten noch an manchen Stellen gefehlt. Daher schätze ich, dass wir nicht mehr lange warten brauchen.

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

andre111
#20
16.02.2010 15:43
Beiträge: 220

Zitat von Wladimir:

Zitat von andre111:

Übrigens: Wie stehts den um ItM 2?



Ich hatte bereits die Ehre, ITM 2 testen zu dürfen.
Hat alles gefunzt, nur die Tooltips hatten noch an manchen Stellen gefehlt. Daher schätze ich, dass wir nicht mehr lange warten brauchen.

Wladimir.



@Wladimir:

Ich habs auch schon getestet , ist aber schon ne Weile her.

FG
andre111

Seiten: 1

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

Impressum