Download
(19Kb)
Download
Updated: 08-04-09 08:18 PM
Pictures
File Info
Updated:08-04-09 08:18 PM
Created:unknown
Downloads:25,634
Favorites:355
MD5:

Fizzwidget Linkerator  Popular! (More than 5000 hits)

Version: 3.2
by: Gazmik [More]

Have you ever wanted to tell your friends about some impressive loot you saw another adventurer using? Share your regret about the quest reward you foolishly didn't choose? Spread word to your guild of what your raiding party found? Now you can do so easily with my latest gizmo! Not only does it help you keep track of all the items you encounter, Linkerator makes it super-easy to tell your friends about them in full detail!

Features:

  • Automatically remembers item links you come across (some of which you might not even see!)... in chat channels, in your inventory and bank, on other players, in loot messages, etc. (Unlike some addons which do this, Linkerator doesn't keep a database of full names for all items; for most items, it just makes sure your WoW client caches the data.)
  • Allows you to insert an item link in chat by merely typing its name in brackets. (i.e., type `/g [swift razzashi raptor]` to send a message to your guild with a clickable link for the mount they likely won't see often.)
  • Since there are some cases of different items which have the same name, you can type the name followed by something distinctive about the item in parentheses (e.g. `[punctured voodoo doll (druid)]` or `[warblade of the hakkari (off)]`) if you're looking for a specific match -- you can use any item attribute that shows up in that item's tooltip. (This only works if the variant you're looking for is in your WoW client's cache, however.) Alternately, if you know the item ID of a specific item, you can type it in brackets (preceded by a pound sign) to link it (e.g. `[#18473]` to get the Hunter variant of [Royal Seal of Eldre'thalas]).
  • YYou can also retrieve stored links via various `/link` chat commands.

Note: I created Linkerator as a replacement for LootLink/ItemsMatrix/KC_Items/etc. for myself because I never used the features of such addons that allow you to search for items based on their attributes. (So, keeping those addons installed meant I was using up a lot of memory with data I'd never search.) The only think Linkerator does that other link-database addons generally don't is allow you to type out links in chat... given that I donĚt use other link-database addons, I'm not particularly interested in adding this feature to them -- bug their authors if you want to use those addons and get the link-typing feature. They're welcome to borrow my code for it.

Click here to lend your support!

v. 3.2 - 2009/08/04
- Updated TOC to indicate compatibility with WoW Patch 3.2.
- Fixes an error message which could appear when sending chat messages.

v. 3.1 - 2009/04/18
- Updated TOC to indicate compatibility with WoW Patch 3.1.
- Linkerator now avoids performing CPU-intensive link searches on text sent to chat by macros or other addons if the text in brackets is only a number (e.g. `Hateful Strike --> Grunkk [23423]`). To "linkify" by item ID number in a macro, use the format `[item:43593]` or `[#43593]`.
- We also no longer attempt to "linkify" text sent to custom chat channels (such as the hidden channels used by some other addons).
- Fixed an issue where Linkerator would sometimes fail to avoid "linkifying" text in certain chat commands (e.g. `/script`) as intended.

v. 3.0.1 - 2008/10/22
- Fixes an error when attempting to type links in chat.

v. 3.0 - 2008/10/14
- Updated for compatibility with WoW Patch 3.0 and Wrath of the Lich King.
- It's now possible to retrieve item links given a known item ID (using `/link <number>`) even if the item is not in your client's local cache. Items unknown by the server will return no results.
- Includes preliminary support for spell links -- they're now returned in `/link` search results but not for as-you-type linking. More spell, talent, quest, and achievement link features will follow in future releases.
Optional Files (0)


Post A Reply Comment Options
Unread 11-30-09, 09:12 PM  
AnrDaemon
A Chromatic Dragonspawn
AddOn Author - Click to view AddOns

Forum posts: 156
File comments: 2231
Uploads: 5
I don't feel easy wiping raid just because some addon decided to take a long lookup in the middle of combat... so...
lua Code:
  1. function FLT_OnUpdate(self, elapsed)
  2.   if UnitAffectingCombat("player") then return; end;
  3. ....
Report comment to moderator  
Reply With Quote
Unread 12-17-09, 11:34 AM  
AnrDaemon
A Chromatic Dragonspawn
AddOn Author - Click to view AddOns

Forum posts: 156
File comments: 2231
Uploads: 5
Can I suggest yet another improvement?
Add enchants/gems to link.
[#itemid:enchantid:gem:...]
Report comment to moderator  
Reply With Quote
Unread 05-28-10, 03:19 PM  
biggoofyus
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 76
Uploads: 1
3.3.5 PTR Error

PTR 3.3.5 build 12124

Code:
Date: 2010-05-28 16:21:22
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\GFW_Linkerator\Linkerator.lua line 335:
   attempt to index global 'ChatFrameEditBox' (a nil value)
Debug:
   [C]: ?
   GFW_Linkerator\Linkerator.lua:335:
      GFW_Linkerator\Linkerator.lua:301
AddOns:
  Swatter, v5.9.4758 (WhackyWallaby)
  GFWLinkerator, v3.2
  BlizRuntimeLib_enUS v0.3.5.30300 <beta.us>
  (ck=68)
Last edited by biggoofyus : 05-28-10 at 03:21 PM.
Report comment to moderator  
Reply With Quote
Unread 06-22-10, 08:09 PM  
zaphon
A Defias Bandit

Forum posts: 2
File comments: 27
Uploads: 0
Yeah, it blows up under 3.3.5.

I hope you fix it, as I miss it already.
Report comment to moderator  
Reply With Quote
Unread 06-22-10, 10:38 PM  
Tourbillon
A Kobold Labourer

Forum posts: 0
File comments: 1
Uploads: 0
Replacing all references to ChatFrameEditBox (there are three, on lines 262, 335, and 336) with ChatFrame1EditBox restores functionality in 3.3.5.
Report comment to moderator  
Reply With Quote
Unread 06-23-10, 03:18 PM  
Hirsute
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 14
File comments: 13
Uploads: 1
Replacing ChatFrameEditBox with ChatFrame1EditBox will only fix it if you're on the General (or whatever happens to be your first) chat tab. If you're on a custom tab there will be no error, but it won't autocomplete your links. I've coded a fix that restores it to its 3.3.3 level of function and am waiting on the go ahead from Gazmik before posting it anywhere.
Report comment to moderator  
Reply With Quote
Unread 06-23-10, 05:09 PM  
AnrDaemon
A Chromatic Dragonspawn
AddOn Author - Click to view AddOns

Forum posts: 156
File comments: 2231
Uploads: 5
Originally posted by Hirsute
Replacing ChatFrameEditBox with ChatFrame1EditBox will only fix it if you're on the General (or whatever happens to be your first) chat tab. If you're on a custom tab there will be no error, but it won't autocomplete your links. I've coded a fix that restores it to its 3.3.3 level of function and am waiting on the go ahead from Gazmik before posting it anywhere.
Quite expected.
What is the proper way of dealing with this issue?
Report comment to moderator  
Reply With Quote
Unread 06-23-10, 08:24 PM  
Hirsute
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 14
File comments: 13
Uploads: 1
Originally posted by AnrDaemon
Quite expected.
What is the proper way of dealing with this issue?
It's a bit involved to be all posted here from my notes at the moment (wife is WoWing on the computer my changes are on at the moment), but essentially:

On the OnLoad for the addon, where he hooks the ChatFrameEditBox, a few changes need to happen:

1)Outside that function, make FLT_Orig_ChatEdit_OnChar a table.

2)Inside that function, loop through the existing chat frames (with for i=1,NUM_CHAT_WINDOWS) and hook each existing chat frame's edit box (_G["ChatFrame"..i.."EditBox"]), storing the original in FLT_Orig_ChatEdit_OnChar.i. Inside FLT_ChatEdit_OnChar, get the index of the current chat frame with string.match(FCF_GetCurrentChatFrame().editBox:GetName(),"%d+") and change the second if statement to
Code:
if (FLT_Orig_ChatEdit_OnChar.<whatever variable you stored that index in>) then return FLT_Orig_ChatEdit_OnChar.ChatFrameIndex(self, text); end
3)Inside FLT_ResetCompletion add as the first line
Code:
local ChatFrameEditBox = _G[FCF_GetCurrentChatFrame().editBox:GetName()]
I *think* that was all of my changes.

You're experienced enough with code that you should be able to sort out any remaining errors.


ps - If you want it to pick up added frames without a UI Reload, you'll need to register the addon's frame for UPDATE_CHAT_WINDOWS and hook new frames' edit boxes there. I haven't figured out the best way to do that yet, as it actually seems like the OnChar scripts for the standard frames are nil. The problem with this being that simply looping through all the frames when UPDATE_CHAT_WINDOWS fires and hooking anything that you don't have a script stored in FLT_Orig_ChatEdit_OnChar for will result in you storing FLT_ChatEditOnChar for everything that was initially nil. I'm wondering if comparing non-nil scripts to FLT_Orig_ChatEdit_OnChar before storing them as originals will work. For example, something like:

Code:
if not FLT_Orig_ChatEdit_OnChar.ChatFrameIndex and _G["ChatFrame"..ChatFrameIndex.."EditBox"]:GetScript("OnChar") ~= FLT_ChatEdit_OnChar then ... end
But I thought of that after my wife started this raid, so I haven't had a chance to test it yet.
Last edited by Hirsute : 06-23-10 at 08:40 PM.
Report comment to moderator  
Reply With Quote
Unread 06-25-10, 12:51 AM  
Hirsute
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 14
File comments: 13
Uploads: 1
Scratch that

Scratch that, turns out that FCF_GetCurrentChatFrame() only every returns ChatFrame10, for whatever reason.

Looping through the chat frames when hooking does seem to take care of the problem there, though.

Not the best solution here, but the only way I could figure out to do this:
Create the following helper function:
Code:
local function GetFocusedChatFrame()
	local c = DEFAULT_CHAT_FRAME.editBox
	for i=1,NUM_CHAT_WINDOWS do
		local n,_,_,_,_,_,s,_,_,_ = GetChatWindowInfo(i)
		if n and s then c = _G["ChatFrame"..i.."EditBox"] end
	end
	return c
end
Then, instead of
Code:
local ChatFrameEditBox = _G[FCF_GetCurrentChatFrame().editBox:GetName()]
do
Code:
local ChatFrameEditBox = GetFocusedChatFrame()
That change to my previous comments should set things right.
Last edited by Hirsute : 06-25-10 at 01:58 AM.
Report comment to moderator  
Reply With Quote
Unread 06-25-10, 08:51 AM  
Hirsute
A Deviate Faerie Dragon
AddOn Author - Click to view AddOns

Forum posts: 14
File comments: 13
Uploads: 1
Re: Scratch that

Well, I've waited a few days for Fizzwidget to respond to my email, and haven't heard anything. He doesn't list a license for his addons anywhere that I can find, and I'm sure there are people out there who would like this information, so I'm posting the diff between his file and my working one below. I don't have time to support this addon myself, so if you don't know what to do with a diff file, please don't be mad when I don't walk you through the process. If you do know what to do with a diff file, copy the text in the code block below and paste it into its own file, "linkerator-chat-fix.diff"

Code:
--- Linkerator.lua.old	Tue Aug  4 18:24:42 2009

+++ Linkerator.lua	Fri Jun 25 02:01:46 2010

@@ -11,7 +11,28 @@

 FLT_RandomPropIDs[FLT_Locale] = { };
 FLT_RandomItemCombos[FLT_Locale] = { };
 FLT_AuctionLinks = {};
+local FLT_Orig_ChatEdit_OnChar = {};
 
+local function EditBoxHooks()
+	for i=1,NUM_CHAT_WINDOWS do
+		local ChatFrameEditBox = _G["ChatFrame"..i.."EditBox"]
+		if not FLT_Orig_ChatEdit_OnChar.i then
+			FLT_Orig_ChatEdit_OnChar.i = ChatFrameEditBox:GetScript("OnChar");
+			ChatFrameEditBox:SetScript("OnChar", FLT_ChatEdit_OnChar);
+		end
+	end
+end
+
+local function GetFocusedChatFrame()
+	local c = DEFAULT_CHAT_FRAME.editBox
+	for i=1,NUM_CHAT_WINDOWS do
+		local n,_,_,_,_,_,s,_,_,_ = GetChatWindowInfo(i)
+		if n and s then c = _G["ChatFrame"..i.."EditBox"] end
+	end
+	return c
+end
+
+
 local ChatMessageTypes = {
 	"CHAT_MSG_SYSTEM",
 	"CHAT_MSG_SAY",
@@ -69,9 +90,10 @@

 ------------------------------------------------------
 
 function FLT_ChatEdit_OnChar(self, text)
+	local ChatFrameIndex = string.match(GetFocusedChatFrame():GetName(),"%d+")
 	if (not FLT_ChatEdit_ShouldComplete(self)) then
 		FLT_ChatCompleteQueued = nil;
-		if (FLT_Orig_ChatEdit_OnChar) then return FLT_Orig_ChatEdit_OnChar(self, text); end
+		if (FLT_Orig_ChatEdit_OnChar.ChatFrameIndex) then return FLT_Orig_ChatEdit_OnChar.ChatFrameIndex(self, text); end
 	end
 	
 	local text = self:GetText();
@@ -259,6 +281,7 @@

 end
 
 function FLT_ResetCompletion()
+	local ChatFrameEditBox = GetFocusedChatFrame()
 	if (FLT_ItemCacheFull and not ChatFrameEditBox:IsVisible()) then
 		FLT_ItemNamesCache = nil;
 		collectgarbage();
@@ -330,10 +353,11 @@

 	self:RegisterEvent("QUEST_PROGRESS");
 	self:RegisterEvent("QUEST_GREETING");
 	self:RegisterEvent("AUCTION_ITEM_LIST_UPDATE");
+	self:RegisterEvent("UPDATE_CHAT_WINDOWS");
 	
 	-- hooks for autocompletion in the edit box
-	FLT_Orig_ChatEdit_OnChar = ChatFrameEditBox:GetScript("OnChar");
-	ChatFrameEditBox:SetScript("OnChar", FLT_ChatEdit_OnChar);
+	-- Code edited by Hirsute for 3.3.5 compatibility
+	EditBoxHooks();
 	FLT_Orig_ChatEdit_OnTextChanged = ChatEdit_OnTextChanged;
 	ChatEdit_OnTextChanged = FLT_ChatEdit_OnTextChanged;
 	FLT_Orig_ChatEdit_OnTabPressed = ChatEdit_OnTabPressed;
@@ -442,6 +466,8 @@

 				FLT_MaxNotFoundTime = math.max((FLT_MaxNotFoundTime or 0), parseTime);
 			end
 		end
+	elseif (event == "UPDATE_CHAT_WINDOWS") then
+		EditBoxHooks()
 	else
 		FLT_ProcessLinks(arg1);
 	end
@@ -1327,4 +1353,4 @@

 	FLT_SpellCacheFull = true;	
 end
 
-			

\ No newline at end of file

+
Report comment to moderator  
Reply With Quote
Unread 06-27-10, 04:44 PM  
Tirdal
A Kobold Labourer

Forum posts: 0
File comments: 8
Uploads: 0
Thank you, Hirsute. Much appreciate the diffs!
Report comment to moderator  
Reply With Quote
Unread 06-27-10, 10:21 PM  
Fiercy
A Cyclonian
 
Fiercy's Avatar
AddOn Author - Click to view AddOns

Forum posts: 40
File comments: 142
Uploads: 7
Re: Re: Scratch that

Ditto, thanks for the tweak.
__________________
There are countless ingredients that make up the human body and mind, like all the components that make up me as an individual with my own personality. Sure, I have a face and voice to distinguish myself from others, but my thoughts and memories are unique only to me, and I carry a sense of my own destiny. Each of those things are just a small part of it. I collect information to use in my own way. All of that blends to create a mixture that forms me and gives rise to my conscience.
Report comment to moderator  
Reply With Quote
Unread 07-05-10, 08:16 PM  
orckin
A Kobold Labourer

Forum posts: 0
File comments: 1
Uploads: 0
Hi all, registered here to post in this thread...

Hirsute, haven't been able to find your working file... Is there an alternative to linkerator that is working with the current patch 3.3.5?

My apologies if this has been covered elsewhere, haven't had a great chance to search so far whilst at work.

Thanks.
Report comment to moderator  
Reply With Quote
Unread 07-08-10, 04:50 AM  
Livanamako
A Murloc Raider
 
Livanamako's Avatar

Forum posts: 7
File comments: 3
Uploads: 0
Hirsute posted a patchfile as code, that much is clear, however he didn't tell what program he used for making the diff nor did it specify the format. It does look like the unified format and a normal gnu patch should do.
Report comment to moderator  
Reply With Quote
Unread 07-08-10, 06:45 AM  
Shadowcall
A Cyclonian
 
Shadowcall's Avatar
AddOn Author - Click to view AddOns

Forum posts: 44
File comments: 58
Uploads: 1
Originally posted by Livanamako
Hirsute posted a patchfile as code, that much is clear, however he didn't tell what program he used for making the diff nor did it specify the format. It does look like the unified format and a normal gnu patch should do.
You can use notepad++ and modify the file by hand.
I did that but now i get a new error. It seems that there is an conflict with another, though linkerator works fine.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.