GUI Tooltipp will sicht nicht ändern
» Siedler Map Source Forum » Siedler DEdK Script Forum » GUI Tooltipp will sicht nicht ändern
Seiten: 1
Drake
|
#1 24.06.2010 09:35 Beiträge: 132 |
GUI Tooltipp will sicht nicht ändern
Hi leute ich hab mal ne Frage warum Funzt diese Funktion net HILFE!!!
function HeroAbilities() Action() ToolTipp() end function ToolTipp() GUITooltip_Generic_Orig = GUITooltip_Generic; GUITooltip_Generic = function(a) if a == "MenuCommandsGeneric/expel" then XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText,"Euer Held nimmt @color:190,255,0 Gift @color:255,255,255 und vergiftet alle Einheiten in seiner nähe!") else GUITooltip_Generic_Orig(a); end end end function Action() GUIAction_ExpelSettler_Original = GUIAction_ExpelSettler function GUIAction_ExpelSettler() pos = GetPosition("Held") pX = pos.X --woher soll GetPosition wissen, ob du X oder Y willst? pY = pos.Y Logic.CreateEffect( GGL_Effects.FXKalaPoison, pos.X, pos.Y, 1 ); TowerData = {Logic.GetPlayerEntitiesInArea(2, 0, pX, pY, 500, 6)} --Liefert so geschrieben ein table zurück for i = 2, TowerData[1]+1, 1 do Logic.HurtEntity(TowerData[i], 200) end end end
und das will auch net hinnhauen :
XGUIEng.TransferMaterials("Hero8_Poison", "MenuCommandsGeneric/expel") XGUIEng.TransferMaterials("Buy_Serf", "Technologies.T_LightBricks")
Mordred
|
#2 24.06.2010 10:10 Beiträge: 939 |
function HeroAbilities() Action() ToolTipp() end function ToolTipp() GUITooltip_Generic_Original = GUITooltip_Generic function GUITooltip_Generic(_menu) if (_menu == "MenuCommandsGeneric/expel")then XGUIEng.SetText(gvGUI_WidgetID.TooltipBottomText,"Euer Held nimmt @color:190,255,0 Gift @color:255,255,255 und vergiftet alle Einheiten in seiner Nähe!") else GUITooltip_Generic_Original(_menu) end end end function Action() GUIAction_ExpelSettler_Original = GUIAction_ExpelSettler -- unnötig - wird ja eh nicht verwendet function GUIAction_ExpelSettler() Logic.CreateEffect(GGL_Effects.FXKalaPoison,GetPosition("Held").X,GetPosition("Held").Y,1) TowerData = {Logic.GetPlayerEntitiesInArea(2,0,GetPosition("Held").X,GetPosition("Held").Y,500,6)} --Liefert so geschrieben ein table zurück (schlau! Besser gesagt eins mit 6 Entities von spieler 2) for i = 2, TowerData[1]+1, 1 do Logic.HurtEntity(TowerData[i], 200) end end end
hi Drake
Ich bin erstaunt
denn tooltipps und GUIActions sind schon etwas schwerer - Respekt.
Allerdings ist dein Code - auch der oben - generell für entlassen. DH, egal bei welcher entity du "entlassen" klickst, es wird immer diese Aktion ausgeführt und es erschein immer der "gefälschte" tooltipp(bei jeder xbeliebigen einheit).
Dann wird schon etwas schwerer.
Anarki
|
#4 24.06.2010 12:17 Beiträge: 518 |
Mh, Anmerkung.
Nutzt du notepad++ ?
Wenn nein, bitte tu es
Wenn ja, bitte rücke doch per Tab etc deine Funktionen ein bevor du sie per copy paste hier einfügst... es ist schlecht wenn 'wir' erstmal die Funktionen selbst einrücken müssen um die zu helfen.
Verstehst was ich meine?
z.B. also bitte So:
function MeineFunktion() meineVariable = false for i = 1, 20 do if i > 10 then if i == 15 then meineVariable = true end if i == 17 and meineVariable == true then break end end end end
STATT SO:
function MeineFunktion() meineVariable = false for i = 1, 20 do if i > 10 then if i == 15 then meineVariable = true end if i == 17 and meineVariable == true then break end end end end
Denke es wird klar was ich meine...
____________________
Siedler V Tool: Selbstextrahierende Maps erstellen
Bitte testen und kommentieren
warrior1024
|
#5 24.06.2010 14:06 Beiträge: 345 |
function HeroAbilities() Action() ToolTipp() end function ToolTipp() GUITooltip_Generic_Orig = GUITooltip_Generic; GUITooltip_Generic = function(a) local sel = GUI.GetSelectedEntity() --Welche Entity ist selektiert? sel ist die ID der selektierten Entity. if sel == GetEntityID("Held") then if a == "MenuCommandsGeneric/expel" then XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText,"Euer Held nimmt @color:190,255,0 Gift @color:255,255,255 und vergiftet alle Einheiten in seiner nähe!") else GUITooltip_Generic_Orig(a); end else GUITooltip_Generic_Orig(a) end end end function Action() --Cooldown vielleicht? GUIAction_ExpelSettler_Original = GUIAction_ExpelSettler GUIAction_ExpelSettler() = function() local sel = GUI.GetSelectedEntity() if sel == GetEntityID("Held") then local pos = GetPosition("Held") local pX = pos.X --woher soll GetPosition wissen, ob du X oder Y willst? --Schön kopiert! local pY = pos.Y Logic.CreateEffect( GGL_Effects.FXKalaPoison, pos.X, pos.Y, 1 ); local TowerData = {Logic.GetPlayerEntitiesInArea(2, 0, pX, pY, 500, 6)} --Liefert so geschrieben ein table zurück for i = 2, TowerData[1]+1, 1 do Logic.HurtEntity(TowerData[i], 200) --Böse! Kann ins Auge gehen, wenn Leader getötet wird, aber noch Soldaten der Truppe existieren! end else GUIAction_ExpelSettler_Original() end end end
Das mit dem Einrücken geht mit der Tabulator-Taste(die über CapsLock[ist mies, wer hat die erfunden?] und Shift[die Taste zum Großschreiben]).
Im Browser(GoogleChrome, Firefox, InternetExplorer, Opera) macht der Tabulator was anderes.
Sogar im mitgelieferten Windoof-Editor kannst du Tabulator benutzten, aber mit Notepad++ hast du eine halbautomatische Einrückung.
Der Code müsste funktionieren, hat eine tolle Einrückung und Kommentare, auf die ich näher eingehe, um dir zu zeigen, auf was man achten sollte:
Zeile 26:
Immernoch mein Kommentar drin? Deswegen: Stell dir vor, du machst eine Testmap und setzst an die Position bei der X-Koordinate 2000 und bei der Y-Koordinate 3500 eine Entity mit Skriptnamen "Hans".
Dann liefert GetPosition("Hans" sowas zurück: {X = 2000, Y = 3500}
Verstanden?
Zeile 29:
Nochmal schön kopiert, wenigstens mit abgeänderten Parametern.
Zeile 8:
GUI.GetSelectedEntity ist dein Freund! Mit der Abfrage in Zeile 9 kannst du dann überprüfen, ob der Spieler den Helden selektiert hat. Wichtig: Die Funktion liefert eine ID!
Der schlimmste Fehler in Zeile 31:
Stell dir vor, ein Leader mit 8 Soldaten im Schlepptau kommt, kriegt den Schaden und stirbt, aber seine Soldaten existieren noch. Wenn du Glück hast, ist der Spieler irritiert, wenn du Pech hast, verabschiedet sich das Spiel ohne Fehlermeldung.
Wie vermeiden?
So: Lösung
Dann noch die ganze Funktion:
Cooldown(wie beim Scout-Försterskript)/Kosten(vielleicht steigend?) wäre/wären vorteilhaft, sonst setzt der Spieler die Funktion zu oft ein.
warrior1024
____________________
"Banken machen keine Fehlentscheidungen! Haben Euch das Eure Eltern nicht beigebracht?"
- Bankier Samael Silren, Enderal
Seiten: 1