Lua

Jahh thx =)

Genau das hab ich gebraucht Fettes thx
happy.gif


...Mist... Funktioniert doch net so wie ich wollte =/
Kleine Frage kann man auch unterscheiden lassen ob ne Ini heroisch ist oder net ?
 
Zuletzt bearbeitet von einem Moderator:
Code:
local frame = CreateFrame("Frame")

frame:RegisterEvent("ZONE_CHANGED_NEW_AREA") --[[ BUG FIXED;-) ]]

function frame:OnEvent(event, ...)

	if event == "ZONE_CHANGED_NEW_AREA" then
		
		zname = GetZoneText();
		if zname == "Orgrimmar" or zname == "Stormwind" then --[[ Vor then halt die ganzen Hauptstaedte noch auf identitaet mit zname ueberpruefen, oder einen table mit allen Hauptstadtnamen zur ueberpruefung verwenden]]		
			ChatFrame1:AddMessage("Willkommen in der Hauptstadt "..zname);
		else
			k,_ = IsInInstance();
			if k ~= "none" then
			  name, type, difficulty, _ = GetInstanceInfo();
			  printout = "Willkommen in der Instanz oder dem Schlachtfeld "..name;
			  if type == "raid" then
				if difficulty == 1 then
				  printout = printout.." vom Typ 10 Spieler im normalen Modus"; --[[ Achtung:  Kann auch normaler 40er Raid sein! Per IF überprüfen! ]]
				elseif difficulty == 2 then
				  printout = printout.." vom Typ 25 Spieler im normalen Modus";
				elseif difficulty == 3 then
				  printout = printout.." vom Typ 10 Spieler im heroischen Modus";
				else
				  printout = printout.." vom Typ 25 Spieler im heroischen Modus";
				end
			  elseif type == "party" then
				if difficulty == 1 then
				  printout = printout.." vom Typ 5 Spieler im normalen Modus";
				elseif difficulty == 2 then
				  printout = printout.." vom Typ 5 Spieler im heroischen Modus";
				end
			  end
			  ChatFrame1:AddMessage(printout);
			else
			  ChatFrame1:AddMessage("Willkommen im Gebiet "..zname);
			end
		end
	end

end

frame:SetScript("OnEvent", frame.OnEvent)

Code nicht getestet, kann uA. Syntaxfehler haben, gibt hier schließlich kein Syntaxhighlighting im Forum.
Achja @ Buffed -> Vote 4 Einrückung durch Tab ^^
@ lua-Crew: ich hätte gerne 'ne Switchanweisung.
 
Zuletzt bearbeitet von einem Moderator:
Code:
local frame = CreateFrame("Frame")

frame:RegisterEvent("ZONE_CHANGED")

function frame:OnEvent(event, ...)

	if event == "ZONE_CHANGE_NEW_AREA" then
		
		zname = GetZoneText();
		if zname == "Orgrimmar" or zname == "Stormwind" then --[[ Vor then halt die ganzen Hauptstaedte noch auf identitaet mit zname ueberpruefen, oder einen table mit allen Hauptstadtnamen zur ueberpruefung verwenden]]		
			ChatFrame1:AddMessage("Willkommen in der Hauptstadt "..zname);
		else
			ChatFrame1:AddMessage("Willkommen im Gebiet "..zname);
		end
	end

end

frame:SetScript("OnEvent", frame.OnEvent)

Meinst du so?

**edit: Schande über mich: Lua-Auskommentierung nicht mit zwei Slashes :x**

Ich glaub ich bin echt blöde krieg ja nima das script am laufen >.<
 
Kurzer Auszug:
Code:
frame:RegisterEvent("ZONE_CHANGED")

function frame:OnEvent(event, ...)

	if event == "ZONE_CHANGE_NEW_AREA" then

Muss zu

Code:
frame:RegisterEvent("ZONE_CHANGED_NEW_AREA")

function frame:OnEvent(event, ...)

	if event == "ZONE_CHANGED_NEW_AREA" then

werden
 
Zuletzt bearbeitet von einem Moderator:
Ja Ja das hab ich auch gesehen und geändert aber selbst dann is nix passiert
 

Code:
local poschange = CreateFrame("Frame", nil, UIParent);

poschange:RegisterEvent("ZONE_CHANGED_NEW_AREA");

function poschange:OnEvent(event, ...)

	if event == "ZONE_CHANGED_NEW_AREA" then
		
		zname = GetZoneText();
		if zname == "Orgrimmar" or zname == "Stormwind" then 	
			ChatFrame1:AddMessage("Willkommen in der Hauptstadt "..zname);
		else
			k,_ = IsInInstance();
			if k ~= nil then
			  name, type, difficulty, _ = GetInstanceInfo();
			  printout = "Willkommen in der Instanz oder dem Schlachtfeld "..name;
			  if type == "raid" then
				if difficulty == 1 then
				  printout = printout.." vom Typ 10 Spieler im normalen Modus";
				elseif difficulty == 2 then
				  printout = printout.." vom Typ 25 Spieler im normalen Modus";
				elseif difficulty == 3 then
				  printout = printout.." vom Typ 10 Spieler im heroischen Modus";
				else
				  printout = printout.." vom Typ 25 Spieler im heroischen Modus";
				end
			  elseif type == "party" then
				if difficulty == 1 then
				  printout = printout.." vom Typ 5 Spieler im normalen Modus";
				elseif difficulty == 2 then
				  printout = printout.." vom Typ 5 Spieler im heroischen Modus";
				end
			  end
			  ChatFrame1:AddMessage(printout);
			else
			  ChatFrame1:AddMessage("Willkommen im Gebiet "..zname);
			end
		end
	end
	return nil
end

poschange:SetScript("OnEvent", poschange.OnEvent);


Argh - so klappt es bei mir definitiv auf dem aktuellen Live-Realm als einziges, eingeschaltetes AddOn mit korrekter Ausgabe.

Fehler lag imho bei:
Code:
if k ~= nil then

Da hat mich Wow-Wiki etwas in die Irre geführt:
inInstance, instanceType = IsInInstance()

instanceType
String - The instance type:

* "none" when outside an instance
* "pvp" when in a battleground
* "arena" when in an arena
* "party" when in a 5-man instance
* "raid" when in a raid instance
Nicht aufgepasst ;-)

Edit: Sämtliche Lua-Fehlermeldungen durch die WoW-Api erscheinen immernoch, allerdings kann ich nicht sagen, wie oder warum diese zustande kommen.
 
Zuletzt bearbeitet von einem Moderator:
Btw mal so nebenbei (sry habs jetz ers gesehen und du hast jetz ne Pm deswegen) könnte man auch das mit OG und Sw rausnehmen weil ich brauchs nur für Inis den rest sollte ich selbst auf die Reihe Bekommen =)
 
Code:
local poschange = CreateFrame("Frame", nil, UIParent);

poschange:RegisterEvent("ZONE_CHANGED_NEW_AREA");

function poschange:OnEvent(event, ...)

	if event == "ZONE_CHANGED_NEW_AREA" then
		
			k,_ = IsInInstance();
			if k ~= nil then
			  name, type, difficulty, _ = GetInstanceInfo();
			  printout = "Willkommen in der Instanz oder dem Schlachtfeld "..name;
			  if type == "raid" then
				if difficulty == 1 then
				  printout = printout.." vom Typ 10 Spieler im normalen Modus";
				elseif difficulty == 2 then
				  printout = printout.." vom Typ 25 Spieler im normalen Modus";
				elseif difficulty == 3 then
				  printout = printout.." vom Typ 10 Spieler im heroischen Modus";
				else
				  printout = printout.." vom Typ 25 Spieler im heroischen Modus";
				end
			  elseif type == "party" then
				if difficulty == 1 then
				  printout = printout.." vom Typ 5 Spieler im normalen Modus";
				elseif difficulty == 2 then
				  printout = printout.." vom Typ 5 Spieler im heroischen Modus";
				end
			  end
			  ChatFrame1:AddMessage(printout);
			end
	  
	end
	return nil
end

poschange:SetScript("OnEvent", poschange.OnEvent);

Das wäre das Skript ohne die Hauptstadt-Filterung.
 
Zuletzt bearbeitet von einem Moderator:
Thx rest sollte ich teilweise selber schaffen aber jetz wirklich letzte Frage (sonst habt ihr das Addon ja fast geschrieben ;P) Wollte ja, wenn ich ne bestimmte instance komme auch ne bestimmte message bekommen aber mit dem script da oben bekomm ich ja eigentlich in jeder instance das gleich.
Kann ich das auch unterscheiden lassen in welcher ich bin?
 
Zuletzt bearbeitet von einem Moderator:
Klar geht das
Code:
local poschange = CreateFrame("Frame", nil, UIParent);

poschange:RegisterEvent("ZONE_CHANGED_NEW_AREA");

function poschange:OnEvent(event, ...)

	if event == "ZONE_CHANGED_NEW_AREA" then
		
			k,_ = IsInInstance();
			if k ~= nil then
			  name, type, difficulty, _ = GetInstanceInfo();
			  if name == "Der Schwarze Tempel" then
				DEFAULT_CHAT_FRAME:AddMessage("Halli Hallo Halloedle!");
			  else
				printout = "Willkommen in der Instanz oder dem Schlachtfeld "..name;
				  if type == "raid" then
					if difficulty == 1 then
					  printout = printout.." vom Typ 10 Spieler im normalen Modus";
					elseif difficulty == 2 then
					  printout = printout.." vom Typ 25 Spieler im normalen Modus";
					elseif difficulty == 3 then
					  printout = printout.." vom Typ 10 Spieler im heroischen Modus";
					else
					  printout = printout.." vom Typ 25 Spieler im heroischen Modus";
					end -- END difficulty == 1
				  elseif type == "party" then
					if difficulty == 1 then
					  printout = printout.." vom Typ 5 Spieler im normalen Modus";
					elseif difficulty == 2 then
					  printout = printout.." vom Typ 5 Spieler im heroischen Modus";

				   end -- END difficulty == 1
				  end -- END type == "raid"
				  ChatFrame1:AddMessage(printout);
				end -- END name == "Der Schwarze Tempel" 
			end  -- END k~=nil
	  
	end  -- END event == "ZONE_CHANGED_NEW_AREA"
	return nil
end -- END function

poschange:SetScript("OnEvent", poschange.OnEvent);

in der Var "name" steht der exakte Name der Instanz, abhängig von deinem Sprachpaket auch in der entsprechenden Sprache.
Da ich z.b. auf einem Englischen Wow-Client spiele, wäre es auch hier schlau, statts den String " Der Schwarze Tempel " auf Deutsch, einen Array/einen Table mit den Instanznamen auf allen Sprachen zu verwenden, solltest du das Addon veröffentlichen wollen.
 
Mhh danke auch für den Code aber if then else brauch ich eig net =/

Jetz nomal ganz genau
wink.gif

Ich möchte sagen wa Mal, wenn ich Vio nh betrete in dem chat haben "Halölelalilalo und wenn ichs Hero betretet "Halilalipolaolalo"
So aber wenn ich jetz mit dem Code ne andere betrete dann bekomm ich ja das gleiche wills aber halt für Jede Ini anders haben.
Also eig will ich nur den Code da für eine einzige Ini haben

Würde DAS auch gehen also ohne if ini vio then "bla" else (andere ini unbekannt) hallo ini 5man hero bla
wink.gif
?
Ps: Könnte man da auchn true oder false einbauen ?
pss: Bug is auch das, wenn man ne ini betret ab dann egal worüber man den courser schwenkt das Game laggt wie Hölle auch selbst dann wenn alle Addons aus sind und nur das an is.
Hier auch mal n Bild das es auch noch das Erfolgs Fenster zerschießt und das Interface Menü is beim erstenmal öffnen uneingestellt ^^
http://s2.imgimg.de/uploads/WoWScrnShot120...acfda03ajpg.jpg
 
Zuletzt bearbeitet von einem Moderator:
Ganz simpel und einfach:

Code:
local instance = {
	[1] = { -- 5er oder 10er Normal (oder 40er)
		["Instanzname1"] = "Instanznachricht1",
		["Instanzname2"] = "Instanznachricht2",
	},
	[2] = { -- 5er Heroisch / 25er Normal
		["Instanzname1"] = "Instanznachricht1",
	},
	[3] = { -- 10er Heroisch
		["Instanzname1"] = "Instanznachricht1",
	},
	[4] = { -- 25er Heroisch
		["Instanzname1"] = "Instanznachricht1",
	},
};
local function OnEvent(self, event, ...)
	if ( IsInInstance() ) then
		local difficulty, zoneName = GetInstanceDifficulty(), GetZoneText();
		if ( instance[difficulty] and instance[difficulty][zoneName] ) then
			print(instance[difficulty][zoneName]);
		end
	end
end
local frame = CreateFrame("Frame");
frame:RegisterEvent("ZONE_CHANGED_NEW_AREA");
frame:SetScript("OnEvent", OnEvent);
 
Zuletzt bearbeitet von einem Moderator:
Oo das funktioniert perfekt FETTES thx Shantalya =)
 
Doppelpost phöse
wink.gif


Thx nochmal =D
Hier ma n Screen von dem was ich hab bis jetz :
wowscrnshot120809231318.jpg
 
*grab**trippelpost* ^^

Habn Problem, unzwar ich bekomme ich immer den Error, wenn ich das"/run CancelUnitBuff("player", ["Mohawked!"])" script im Chat eingebe, " expected near '['"

Das komme hab ich schonmal versucht wegzulassen aber das streikt er auch <.<


Edit: Sry fehl Alarm, die [] musten weg, die wow Fehlermeldungen können ein aber auch iritieren xP
 
Zuletzt bearbeitet von einem Moderator:
*grab**trippelpost* ^^

Habn Problem, unzwar ich bekomme ich immer den Error, wenn ich das"/run CancelUnitBuff("player", ["Mohawked!"])" script im Chat eingebe, " expected near '['"

Das komme hab ich schonmal versucht wegzulassen aber das streikt er auch <.<


Edit: Sry fehl Alarm, die [] musten weg, die wow Fehlermeldungen können ein aber auch iritieren xP




Ähm, sorry. Aber was bringt ein das Addon? Bin da nicht so bewandert
 
Will daraus eig nen kleines Fun Addon machen was, wenn man den Buff von dieser Irokesen Granate hat, ihn wieder wegmacht.
Die Funktion hab ich ja jetzt, nun muss ich das nur noch verpacken daser das von alleine macht.

(Grund fürs Addon war das ich alle paar sekunden von diesen Granaten erwischt werde und die Fratze einfach nur nervt =O)

Edit: Hier is der code, fals ihn jemand haben will was ich aber mal weniger denke xD

Code:
local function OnEvent(self, event, ...)
	if ( UnitBuff("player", "Mohawked!") ) then
	CancelUnitBuff("player", "Mohawked!")	
	end
end
local frame = CreateFrame("Frame");
frame:RegisterEvent("UNIT_AURA")
frame:SetScript("OnEvent", OnEvent);
 
Zuletzt bearbeitet von einem Moderator:
Hm währe es der Übersicht zuliebe ne besser du machst es glei so

Code:
local frame = CreateFrame("Frame");
frame:RegisterEvent("UNIT_AURA")
frame:SetScript("OnEvent", function()
	if ( UnitBuff("player", "Mohawked!") ) then
	CancelUnitBuff("player", "Mohawked!")	
	end
end);

Aber naja muss jeder selber wissen^^
 
Will daraus eig nen kleines Fun Addon machen was, wenn man den Buff von dieser Irokesen Granate hat, ihn wieder wegmacht.
Die Funktion hab ich ja jetzt, nun muss ich das nur noch verpacken daser das von alleine macht.

(Grund fürs Addon war das ich alle paar sekunden von diesen Granaten erwischt werde und die Fratze einfach nur nervt =O)

Edit: Hier is der code, fals ihn jemand haben will was ich aber mal weniger denke xD

Code:
local function OnEvent(self, event, ...)
	if ( UnitBuff("player", "Mohawked!") ) then
	CancelUnitBuff("player", "Mohawked!")	
	end
end
local frame = CreateFrame("Frame");
frame:RegisterEvent("UNIT_AURA")
frame:SetScript("OnEvent", OnEvent);


geht einwandfrei, er machts innerhalb 1ner sekunde, habs getestet^^
 
Zurück