Der Interface-Basteleien-Thread!

früher mal konnte ich einfach in den \WoW\Fonts Ordner gehen und Dateien austauschen. Heute gibt es den Ordner per default nicht und wenn ich meinen alten mit meinen alten Fonts einfüge, fliegen mir diverse Fehler um die Ohren, dass alle möglichen Fonts nicht gesetzt sind. Was also muss da drin sein, damit alles seine Font abkriegt?

Das AddOn benutzen
http://www.wowinterface.com/downloads/info8786-tekticles.html
 
früher mal konnte ich einfach in den \WoW\Fonts Ordner gehen und Dateien austauschen. Heute gibt es den Ordner per default nicht und wenn ich meinen alten mit meinen alten Fonts einfüge, fliegen mir diverse Fehler um die Ohren, dass alle möglichen Fonts nicht gesetzt sind. Was also muss da drin sein, damit alles seine Font abkriegt?

die default fonts müssen noch im ordner sein

Da ich ja nicht zum direkten Programmieren kommen hab ich mir mal überlegt wie ich es überhaupt anstellen will.

Mein bisheriger Plan sieht so aus:

1. Frame erstellen
2. Fluchen weil nichts funktioniert
3. Herrausfinden wie ich Text in diesem Frame anzeigen lassen kann
4. Noch mehr Fluchen
5. Irgendeinen Beispieltext in den Frame anzeigen lassen und verstehen warum das so funktioniert hat
6. Ne kleine runde freuen
7. Irgendwie den Zonentext auslesen und in dem Frame anzeigen lassen.
8. Im Forum fragen warum das nicht klappt.
9.-13 noch nicht definiert.

Fehlt da was oder ist der Plan soweit gut?

fluchen weil es nicht geupdated wird wenn du die zone änderst
 
Zuletzt bearbeitet von einem Moderator:
Ich finde den Plan bis jetzt gut, aber vielleicht etwas weniger fluchen und mehr freuen. :-P

Ohne das Fluchen hätte ich aber keine Motivation und ohne Motivation kein AddOn ohne AddOn kein Lernerfolg ohne Lernerfolg kein interesse mehr an Lua bzw an Addons, also bräuche ich nimmer hier in Forum gucken^^
 
die default fonts müssen noch im ordner sein

[Hier sarkastischen "Ach, wirklich?!"-Kommentar einfügen....

Das ist schon klar, sonst würden ja keine "fehlenden" Fonts gemeldet. Ich will wissen, welche das sein sollen, weil es den Ordner per default ja eben nicht gegeben hat ~.~
 
Jemand von euch hatte doch diese oUF_Classic nachgebaut, oder irre ich mich?
Stehen die irgendwo zum DL bereit? *fg*
 
Hmm, hat vielleicht wer eine Lösung für mein Problem? Ich versuche die Zeit in einer SavedVar zu speichern, jedoch weiß ich nicht ganz wie ich das machen soll.
Das ganze soll so funktionieren: Ich drücke auf den Knopf und dann wird die Zeit eingetragen + 1 Stunde wird dazugezählt. Nun diese soll gespeichert werden und nicht jedes mal verschwinden nach einem Reload. Das ganze soll mir anzeigen, wann ich wieder Instanzen betreten kann.

Ich komme einfach nicht klar mit Saved Variables. :S

Hier mein Code:
Code:
local font = [=[Fonts\ARIALN.ttf]=]
local hour, minute

local frame = CreateFrame("Frame", nil, UIParent)
frame:Width(150)
frame:Height(45)
frame:SetTemplate()
frame:Point("TOP", UIParent, "TOP", 0, -5)
frame:SetFrameStrata("BACKGROUND")

frame:FontString(nil, font, 12, "OUTLINE")
frame.text:SetText("Dungeon Reset Time")
frame.text:SetPoint("TOP", frame, "TOP", 0, -5)

frame.startbutton = CreateFrame("Button", nil, frame)
frame.startbutton:Width(65)
frame.startbutton:Height(15)
frame.startbutton:SetTemplate()
frame.startbutton:Point("BOTTOMLEFT", frame, "BOTTOMLEFT", 5, 5)
frame.startbutton:EnableMouse(true)
frame.startbutton:RegisterForClicks("AnyUp")
frame.startbutton:HighlightButton()

frame.startbutton:FontString(nil, font, 12, "OUTLINE")
frame.startbutton.text:SetText("Start!")
frame.startbutton.text:SetPoint("CENTER")
frame.startbutton.text:SetTextColor(.03, .87, .99)

frame.timebutton = CreateFrame("Button", nil, frame)
frame.timebutton:Width(65)
frame.timebutton:Height(15)
frame.timebutton:SetTemplate()
frame.timebutton:Point("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -5, 5)
frame.timebutton:EnableMouse(true)
frame.timebutton:RegisterForClicks("AnyUp")
frame.timebutton:HighlightButton()
frame.timebutton:Disable()

frame.timebutton:FontString(nil, font, 12, "OUTLINE")
frame.timebutton.text:SetPoint("CENTER")
frame.timebutton.text:SetTextColor(.03, .87, .99)

frame.startbutton:HookScript("OnMouseDown", function(self)
	hour, minutes = tonumber(date("%H")), tonumber(date("%M"))
	
	if minutes > 10 then
		frame.timebutton.text:SetText(1+hour..":"..minutes)
	elseif minutes < 10 then
		frame.timebutton.text:SetText(1+hour..":".."0"..minutes)
	end
	
	self:Disable()
	frame.timebutton:Enable()
end)

frame.timebutton:HookScript("OnMouseDown", function(self)
	frame.timebutton.text:SetText(" ")
	self:Disable()
	frame.startbutton:Enable()
end
 
In die TOC-Datei einfügen:
Code:
## SavedVariablesPerCharacter: MYADDON_HOUR, MYADDON_MINUTES
Unter
Code:
frame.timebutton.text:SetTextColor(.03, .87, .99)
folgendes hinzufügen (Nicht sicher, ob es so klappt):
Code:
if ( MYADDON_MINUTES ) then
	frame.timebutton.text:SetText(MYADDON_MINUTES < 10 and ("0"..MYADDON_MINUTES) or (MYADDON_MINUTES));
end
Und zum Schluss noch die Funktionen überarbeiten (NIEMALS! Funktionen direkt rein schreiben!):
Code:
local function MyAddon_OnMouseDown_Start(self)
	self:Disable();
	
	local hour = tonumber(date("%H"));
	local minutes = tonumber(date("%M"));
	
	MYADDON_HOUR = hour+1;
	MYADDON_MINUTES = minutes;
	
	local timeButton = self:GetParent().timebutton;
	timeButton:Enable();
	timeButton.text:SetText(MYADDON_HOUR..":"..(MYADDON_MINUTES < 10 and ("0"..MYADDON_MINUTES) or (MYADDON_MINUTES)));
end
frame.startbutton:HookScript("OnMouseDown", MyAddon_OnMouseDown_Start);


local function MyAddon_OnMouseDown_Reset(self)
	self:Disable();
	self.text:SetText("");
	
	MYADDON_HOUR = nil;
	MYADDON_MINUTES = nil;
	
	local startButton = self:GetParent().startbutton;
	startButton:Enable();
end
frame.timebutton:HookScript("OnMouseDown", MyAddon_OnMouseDown_Reset);

In MYADDON_HOUR und MYADDON_MINUTES sind deine Werte nun gespeichert bzw. werden gelöscht, wenn du "Reset" drückst.
 
Zuletzt bearbeitet von einem Moderator:
Code:
if ( MYADDON_MINUTES ) then
        frame.timebutton.text:SetText(MYADDON_MINUTES < 10 and ("0"..MYADDON_MINUTES) or (MYADDON_MINUTES));
end

durch

Code:
frame:RegisterEvent("VARIABLES_LOADED")
local function LoadVars(self)
	self.timebutton.text:SetText(snDR_HOUR..":"..snDR_MINUTES)
end

frame:SetScript("OnEvent", LoadVars)

Ersetzt und nun klappt alles wunderbar. Vielen Dank Shantalya.
 
Zuletzt bearbeitet von einem Moderator:
Genau, das hätte ich als 2tes vorgeschlagen, allerdings nicht VARIABLES_LOADED, sondern ADDON_LOADED. :-)
 
Kennt wer ein Event, dass sehr oft auftritt? Nach jedem Ladebildschirm oder wenn ich aus einem Vehikel aussteige, dann verschiebt sich meine Mainbar nach links, jedoch sollte sie in der Mitte sein. :/

Events die ich schon benutze:
Code:
frame:RegisterEvent("PLAYER_LOGIN")
frame:RegisterEvent("PLAYER_ENTERING_WORLD")
frame:RegisterEvent("KNOWN_CURRENCY_TYPES_UPDATE")
frame:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
frame:RegisterEvent("BAG_UPDATE")
frame:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED")
 
Zuletzt bearbeitet von einem Moderator:
UNIT_EXITED_VEHICLE
UNIT_EXITING_VEHICLE
- Ausstieg aus dem Fahrzeug

oder, was aber wohl Taint-Fehler machen würde, die SetPoint-Funktion ins leere führen lassen: Mainbar.SetPoint = function() end;
 
Zuletzt bearbeitet von einem Moderator:
Wieso verschiebt sich eure Aktionleiste und meine nicht? :O
 
Dann halt: Wieso verschiebt sich Mingxie's Leiste und unsere nicht? xD
 
Nun ja, ich benutze noch die MainMenuBar und die verschiebt sich jedes mal, wenn ich ein Portal betrete etc.. Ich will sie auch nicht entfernen oder sonstiges, sie sieht einfach nur toll aus und ich möchte sie behalten. Was auch immer ... habe nun das Problem gelöst.

Ein extra Frame erstellt und die MainMenuBar in das Frame verschoben. Tada! Nun verschiebt sich die MainMenuBar nicht nach jedem Ladebildschirm.
 
Zurück