56 lines
1.7 KiB
Lua
56 lines
1.7 KiB
Lua
local mod = Chatter:NewModule("Tell Target (/tt)", "AceHook-3.0", "AceEvent-3.0", "AceConsole-3.0")
|
|
local L = LibStub("AceLocale-3.0"):GetLocale("Chatter")
|
|
mod.modName = L["Tell Target (/tt)"]
|
|
|
|
local UnitIsPlayer = _G.UnitIsPlayer
|
|
local UnitCanAssist = _G.UnitCanAssist
|
|
local UnitIsCharmed = _G.UnitIsCharmed
|
|
local SendChatMessage = _G.SendChatMessage
|
|
local UnitIsSameServer = _G.UnitIsSameServer
|
|
local UnitName = _G.UnitName
|
|
|
|
local gsub = _G.string.gsub
|
|
|
|
function mod:OnEnable()
|
|
-- self:SecureHook("ChatEdit_ParseText")
|
|
for i = 1, 10 do
|
|
self:HookScript(_G["ChatFrame" .. i .. "EditBox"], "OnTextChanged")
|
|
end
|
|
if not self.slashCommandRegistered then
|
|
self:RegisterChatCommand("tt", "SendChatMessage")
|
|
self.slashCommandRegistered = true
|
|
end
|
|
end
|
|
|
|
function mod:OnTextChanged(obj)
|
|
local text = obj:GetText()
|
|
if text:sub(1, 4) == "/tt " then
|
|
self:TellTarget(obj.chatFrame, text:sub(5))
|
|
end
|
|
self.hooks[obj].OnTextChanged(obj)
|
|
end
|
|
|
|
function mod:TellTarget(frame, msg)
|
|
local unitname, realm
|
|
if UnitIsPlayer("target") and (UnitIsFriend("player", "target") or UnitIsCharmed("target")) then
|
|
unitname, realm = UnitName("target")
|
|
if unitname then unitname = gsub(unitname, " ", "") end
|
|
if unitname and not UnitIsSameServer("player", "target") then
|
|
unitname = unitname .. "-" .. gsub(realm, " ", "")
|
|
end
|
|
end
|
|
ChatFrame_SendTell((unitname or "InvalidTarget"), frame)
|
|
_G[frame:GetName() .. "EditBox"]:SetText(msg)
|
|
end
|
|
|
|
function mod:Info()
|
|
return L["Enables the /tt command to send a tell to your target."]
|
|
end
|
|
|
|
function mod:SendChatMessage(input)
|
|
if UnitIsPlayer("target") and (UnitCanAssist("player", "target") or UnitIsCharmed("target"))then
|
|
SendChatMessage(input, "WHISPER", nil, UnitName("target"))
|
|
end
|
|
end
|
|
|