Generic Toooltip Original anzeigen

» Siedler Map Source Forum » Siedler DEdK Script Forum » Generic Toooltip Original anzeigen

Seiten: 1

wilma456
#1
18.04.2017 18:16
Beiträge: 460

Generic Toooltip Original anzeigen

Für meine Map "Schlacht um Crawford" habe ich einige generischen Tooltips umgeschrieben. Momentan sieht die Funktion so aus:

function SpeedTooltip()
	GUITooltip_Generic = function(pos)
        if pos == "MenuMap/OnlineHelp" then
	        XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, Umlaute("@color:180,180,180 Spielgeschwindigkeit:"..tostring(speed).." @color:255,255,255 @cr Hier könnt ihr die Spielgeschwindigkeit ändern"));
        elseif pos == "MenuTop/Find_cannon" then
            XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, Umlaute("@color:180,180,180 Schwarzer Ritter @color:255,255,255 @cr Springt zum nächsten Schwarzen Ritter und selektiert ihn"));
        elseif pos == "AOMenuTop/Find_scout" then
            XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, Umlaute("@color:180,180,180 Bogenschützen Bandit @color:255,255,255 @cr Springt zum nächsten Bogenschützen Bandit und selektiert ihn"));
        end
	end
end


Wie bekomme ich es allerdings hin, dass an den anderen Stellen das normale Tooltip erscheint?
Bereits versucht:

function SpeedTooltip()
    GUITooltip_Generic_Orig = GUITooltip_Generic
	GUITooltip_Generic = function(pos)
        if pos == "MenuMap/OnlineHelp" then
	        XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, Umlaute("@color:180,180,180 Spielgeschwindigkeit:"..tostring(speed).." @color:255,255,255 @cr Hier könnt ihr die Spielgeschwindigkeit ändern"));
        elseif pos == "MenuTop/Find_cannon" then
            XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, Umlaute("@color:180,180,180 Schwarzer Ritter @color:255,255,255 @cr Springt zum nächsten Schwarzen Ritter und selektiert ihn"));
        elseif pos == "AOMenuTop/Find_scout" then
            XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, Umlaute("@color:180,180,180 Bogenschützen Bandit @color:255,255,255 @cr Springt zum nächsten Bogenschützen Bandit und selektiert ihn"));
        else
            GUITooltip_Generic_Orig(pos)
        end
	end
end


function SpeedTooltip()
    GUITooltip_Generic_Orig = GUITooltip_Generic
	GUITooltip_Generic = function(pos)
        GUITooltip_Generic_Orig(pos)
        if pos == "MenuMap/OnlineHelp" then
	        XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, Umlaute("@color:180,180,180 Spielgeschwindigkeit:"..tostring(speed).." @color:255,255,255 @cr Hier könnt ihr die Spielgeschwindigkeit ändern"));
        elseif pos == "MenuTop/Find_cannon" then
            XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, Umlaute("@color:180,180,180 Schwarzer Ritter @color:255,255,255 @cr Springt zum nächsten Schwarzen Ritter und selektiert ihn"));
        elseif pos == "AOMenuTop/Find_scout" then
            XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText, Umlaute("@color:180,180,180 Bogenschützen Bandit @color:255,255,255 @cr Springt zum nächsten Bogenschützen Bandit und selektiert ihn"));
        end
	end
end



____________________
Schlacht um Crawford

Wilmasmod

Peter-FS
#2
18.04.2017 21:51
Beiträge: 1086

Deine 2. Version sollte eigentlich funktionieren.
Nimm die NormalButton Funktion, da die Generic auch nur die Normal aufruft. Aufruf in der FMA.
So funtioniert es bei mir!

	GUITooltip_NormalButton_Poison = GUITooltip_NormalButton	
	GUITooltip_NormalButton = function (_TooltipString, _ShortCut)
		if string.find(string.upper(_TooltipString),string.upper("usebinocular_normal"))~= nil and _poisonStarted == true then
			txtTooltip = rt.."Heilpraktiker @cr"..ws.."@cr Der Heilpraktiker heilt kranke Siedler in seiner unmittelbaren Nähe."
			XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomText, txtTooltip)
			XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomCosts, "")
			XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomShortCut,"")		
		elseif  string.find(string.upper(_TooltipString),string.upper("AOMenuTop/Find_scout"))~= nil and _poisonStarted == true then
			txtTooltip = grau.."Heilpraktiker @cr"..ws.."Springt zum nächsten Heilpraktiker und selektiert ihn."
			XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomText, txtTooltip)
			XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomCosts, "")
			XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomShortCut,"")			
		elseif  string.find(string.upper(_TooltipString),string.upper("AOMenuTop/Find_Thief"))~= nil and _poisonStarted == true then
			txtTooltip = grau.."Arzt @cr"..ws.."Springt zum nächsten Arzt und selektiert ihn."
			XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomText, txtTooltip)
			XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomCosts, "")
			XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomShortCut,"")				
		else
			GUITooltip_NormalButton_Poison(_TooltipString, _ShortCut)
	        end
		--Message("NormalButton: ".._TooltipString )
	end



____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

wilma456
#3
20.04.2017 15:11
Beiträge: 460

Die Zeile

if string.find(string.upper(_TooltipString),string.upper("usebinocular_normal"))~= nil and _poisonStarted == true then


führt bei mir zu einem Stack Overflow

____________________
Schlacht um Crawford

Wilmasmod

Peter-FS
#4
20.04.2017 18:52
Beiträge: 1086

Du musst die Funktion natürlich nach deinen Anforderungen anpassen.
Die zusätzliche variable brauchst du nicht und auch die FARB Abkürzungen, wie rt und ws, musst du raus nehmen.
Es diente eigentlich nur als Beispiel.
Ein bisschen Arbeit steckt schon noch drin! Nix Copy & paste

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

castleplayer
#5
20.04.2017 23:04
Beiträge: 243

Hallo Wilma,
ich habs dir glaube ich auch schonmal wo anders geschrieben:
Deine zweite probierte Version ist absolut richtig ich habe bei Tests allerdings rausgefunden, dass du sie nicht in einem Simple Job laufen lassen darfst (keine Ahnung warum aber ohne SimpleJob klappts)

____________________
Wenn die KI immer frontal angreift, wofür steht dann Das I in Künstliche Intelligenz?
Das neueste vom Nebelvolk!

Dieser Beitrag wurde von castleplayer am 21.04.2017 um 17:40 editiert.

Peter-FS
#6
21.04.2017 00:50
Beiträge: 1086

Liebe Leute, hier eine kurze Erklärung.

Man bezweckt damit, die original Funktion zu ändern!
Dazu benötigt man keinen SimpleJob, sonst wird die Funktion ja ständig überschrieben. Hier mal ein code zum Verständnis, ich hoffe es ist so besser verständlich.

Ein einfacher Aufruf in der FMA genügt. Bei mir heißt die Funktion z.B. GuiHacks()

function GuiHacks()
--hier kommen dann die gehackten funktionen rein
--zuerst die original funktion sichern, deshalb ..._orig
tooltip...._orig = tooltip....
tooltip.... = function()
 if xxxxx then
    --hier die neue Funktionalität
 else
    tooltip..._orig()--hier wird die originale ausgeführt, damit der Rest noch wie bisher läuft
 end

end
end



____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

Seiten: 1

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

Impressum