不用插件的只用一个宏:/run空格JoinBattlefield(0)打开战场npc ,然后等喊排时点这个宏排队,这样排队的战场列表不会消失,等出场时,如果列表里没有你出的场就是新场.有的话就是老场了
/**************************************************************************************************8888*/
【插件说明】
战场国家队插件BattleInfo主要功能是报新场,最适合奥山团排,其他战场配合dbm能达到所有战场插件的效果。
/bi 或 /battleinfo 来设置比分栏的命令:
/bi center 设置到屏幕中央
/bi top 设置到默认位置
7月20日更新:
1、增加了按键邦定功能,设置可以在 ESC菜单 绑定按键中找到;
2、bug修正
— 如果用户加载了QuestRepeat Bi的自动交牌子功能会自惭形秽的关闭
— 取消了打开排队窗口时 ctrl 排队
— 修成了一个不常见的Titan兼容问题
— 修正了好久好久以前遗留的不常见
7月11日更新:
修正回车不能加入bug
7月11日更新:
v1.41 svn r48
根据 单翼天使 的反馈 修改了收回快捷窗的方式
快捷窗消失原因打字了
现在删除了打字关闭对 话框的功能
按”>”后变成 1.40 的工作方式
v1.41 svn r47
根据Juha的建议
修改的快速排队的出现方式
现在大家可以通过”>”来调用快速排队界面
快速排队界面默认关闭再也不会影响到打字了
另外ctrl+npc那句话也改为白色方便阅读
7月5日更新:
修正了按回车键不影响正常聊天;
6月29日更新:
1 与SSPVP兼容
现在同时使用BI和SSPVP也可以看到新旧场次了
sspvp和bi有些交集功能 关闭注意关闭两个
2 快速排队界面调整
快速排队界面作了调整 有了小队快速加入功能
3 奥山开战前有了比分栏
这个市Blz bug 我代为修正 现在奥山战斗不开始也能看到比分栏使人数一目了然
4 新旧场提示调整
增加一个可能的提示
由于网络延迟 有些人提示新 有喜人提示旧 最后导致坑的出现
现在对于刚刚变成旧场的场次 有了一个新的称号 可能
5月19日更新:
1、增加一个离场时候的计算功能。计算你进入战场到战斗结束的时间;你在在场中一共获得多少荣誉;这将帮助你更好选择队伍;
2、增加一个屏蔽战斗结束时候离队信息的功能。默认是关闭的,/bi 开启之后,战斗结束后就不会有烦人的XX离开团队了;
3、倒计时被移动到按钮上防止刷屏;
5月17日更新:
纠正一个打开关闭地图时候引起新旧重复的bug
5月13日更新:
1 添加 输出到当前聊天 解决 密语 和 各种怪异频道的要求
2 添加 输出到输入框 使灵活性更大 方便复制粘贴
4月19日更新:
1 增加了一个图形设置界面 移除了陈旧的命令行设置方式
2 自动离开战场增加了一个开关
3 显示帮助信息增加了一个开关
4 修改比分栏重置方式以修正与Titan冲突问题 (看不见就/bi重置下 一般就能看见了)
5 所有的语言信息被重新制作以防止未知冲突
6 修正非战场时报告的问题
7 修正一个可能引发新旧场报告错误的bug
8 全新的定向报告方式可以方便的定位到各频道
9 解决部落用户无法使用自动交牌自功能
10 修正自己交牌子时候提示交牌子完成的bug
建议删除/addons下原来的battleinfo目录 再安装
原来的用户配置没有跟随升级 请/bi重新设置
繁体中文配置文件需要彻底更新
4月7日更新:
1 增加了一个自动化模块 这个模块包括
* CTRL+NPC自动排队
* 自动释放灵魂
* 战斗结束3秒自动退场
目前只有 自动释放灵魂设有开关 /bi norel
2 修正灵魂医者计时器字体过大问题
3 调整灵魂医者计时器
* 我发现灵魂医者 复活不是统一时间的 而且间断的周期 在奥山要比其他战场稍微长些
4月6日更新:
1 加入了一个灵魂医者复活计时 可以让你方便了知道什么时候释放尸体
2 代码重构 现在BattleInfo被按模块封装起来 任何人都可以通过简单的代码调用BattleInfo的功能 轻松完成2次开发
3 灵敏性再一次被提高 不会出现提示人数与实际人数不符了
4 本地化模块被分离出来 自带了一个不太完整的 繁体中文模块 这个模块是参考 nnjack512 制作的BI v0.44繁体中文版制作的
5 参考了gzkuru修改版BI添加了搜索新场功能
6 现在默认的提示会告诉你是不是国家队而不是一个服务器的名字
7 奥特兰克山谷现在也像其他战场一样提示是否是国家队了
4月3日更新:
1 新增 自动提交牌子功能 大家可以输入/bi x=? 来交牌子 当然用鼠标点开NPC还是不能避免的 但是工作量也大大减少
2 更新TOC 适应2.4
3 修正了一个引起场次可能不被报告的bug
v0.44 更新说明 2008-2-14
增加ctrl+进入战场不向团队发送新场。自己没有排到需要重排的时候,就不会向团队发送错误信息了
取消将比分牌移动到屏幕中间和玩家头像下方命令,改以ctrl+拖动改变比分牌位置。新的位置能够被保存。
解决本插件一直以来每次进入游戏,比分牌位置与头像重叠bug
解决非战场区域,比分牌与头像重叠bug
去除非战场区域,比分牌前面的“?”
将按着ctrl不发送信息改为按着ctrl键才向团队发送
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【作者专区】
作为国内最大和最早的中文魔兽世界插件网站之一,本站欢迎各位魔兽世界插件爱好者发布原创和汉化的优秀插件,并作为稳定的发布页面。插件发布Email:iqq800@gmail.com。所有经测试认证的发布插件都将在本站首页作者专区推荐下载!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【本站说明】
1.插件下载后解压缩到World of Warcraft 目录里Interface文件夹下 AddOns目录里。
2.如下载的插件包内有任何不明.EXE文件,请不要执行。应立即用新版杀毒软件查杀。
3.下载插件请到正规专题网站下载,以防资料被盗。本站所有插件均已通过安全性测试。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
『魔兽世界插件中文站团队』于江苏常州
/*******************************************************************************************/
## Interface: 20400
## Title: BattleInfo V 1.42
## Notes: 战场详情指示器 by T.G.(farmer1992@gmail.com)
## SavedVariablesPerCharacter: BattleInfoDB
localization/localization.lua
localization/enUS.lua
localization/zhCN.lua
localization/zhTW.lua
BattleInfo.xml
mod/common.lua
mod/server.lua
mod/newbattle.lua
mod/quest.lua
mod/auto.lua
mod/option.lua
mod/av.lua
mod/binding.lua
BattleInfo.lua
/********************************************************************************************/
local L=BATTLEINFO_LOACALE
local biS=BattleInfo_Server:New()
local biNF=BattleInfo_NewBattleFinder:New()
local biQ=BattleInfo_Quest:New()
local biA=BattleInfo_AutoExeC:New()
function BattleInfo_ReportTo(tostr)
if BattleInfo_InBattle() then
local tstr={strsplit(“*”, biS:Report())}
for i in pairs(tstr) do
SendChatMessage(tstr[i],tostr)
end
end
end
–国家队分析Hook的callbak
function BattleInfo_Update()
BattleInfo1Text:SetText(“”)
BattleInfo0Text:SetText(“”)
BattleInfoSHText:SetText(“”)
if AlwaysUpFrame1Text then
BattleInfo1:SetParent(“AlwaysUpFrame1”)
BattleInfo1:SetPoint(“RIGHT”, “AlwaysUpFrame1Text”, “LEFT”, -8, 0)
BattleInfo1:Show()
BattleInfoSH:SetParent(“AlwaysUpFrame1”)
BattleInfoSH:SetPoint(“RIGHT”, “AlwaysUpFrame1Text”, “LEFT”, -8, 20)
BattleInfoSH:Hide()
if BattleInfo_InBattle() then
BattleInfo1Text:SetText(biS.data[1].num)
BattleInfo1Text:SetTextColor(biS.data[1].color.r,biS.data[1].color.g,biS.data[1].color.b)
AlwaysUpFrame1.tooltip=biS.data[1]:GetTooltip()
x=biS:GetAreaSpiritHealerTime()
if x then
BattleInfoSHText:SetText(x)
BattleInfoSH:Show()
end
else
biS.timesh=nil
end
end
if AlwaysUpFrame2Text then
BattleInfo0:SetParent(“AlwaysUpFrame2”)
BattleInfo0:SetPoint(“RIGHT”, “AlwaysUpFrame2Text”, “LEFT”, -8, 0)
BattleInfo0:Show()
if BattleInfo_InBattle() then
BattleInfo0Text:SetText(biS.data[0].num)
BattleInfo0Text:SetTextColor(biS.data[0].color.r,biS.data[0].color.g,biS.data[0].color.b)
AlwaysUpFrame2.tooltip=biS.data[0]:GetTooltip()
end
end
end
local Keyin=””
function BattleInfo_OnKey(k)
if k==”ENTER” then
BattleInfo_QS()
–elseif k==”LCTRL” or k==”RCTRL” then
— BattlefieldFrameJoinButton_OnClick()
elseif k==nil then
Keyin=””
elseif k==”BACKSPACE” or k==”NUMPADMINUS” then
Keyin=string.sub(Keyin,1,-2) or “”
elseif k==”NUMPADPLUS” then
Keyin=Keyin==”” and “0” or Keyin
BattleInfo_QS(CanJoinBattlefieldAsGroup() and IsPartyLeader())
elseif k==”DELETE” or k==”NUMPADDECIMAL” then
Keyin=””
elseif k==”ESCAPE” then
HideUIPanel(BattlefieldFrame)
else
local _,_,x,_ =strfind(k,”.*(%d+)”)
if x and string.len(Keyin)<3 then
Keyin=Keyin..x
else
end
end
BIQuickSortTip:SetOwner(BIQuickSort, “ANCHOR_RIGHT”,-50);
BIQuickSortTip:AddLine(string.format(L.QUICKJOINTIP,Keyin))
BIQuickSortTip:Show()
end
function BattleInfo_QS(t)
if Keyin==”” then
return
elseif Keyin==”0″ then
JoinBattlefield(0,t)
BattleInfo_Print(string.format(L.QUICKJOIN,L.QUICKJOIN_FIRST))
BattleInfo_OnKey()
return
else
for i=1, GetNumBattlefields() do
if Keyin == GetBattlefieldInstanceInfo(i) ..”” then
JoinBattlefield(i,t)
BattleInfo_Print(string.format(L.QUICKJOIN,Keyin))
BattleInfo_OnKey()
return
end
end
end
BattleInfo_Print(string.format(L.QUICKJOIN_CANTFIND,Keyin))
BattleInfo_OnKey()
end
local QsShow=nil;
local keyupf=function() BattleInfo_OnKey(arg1) end
local eventf=function() BattleInfo_OnKey() end
function BattleInfo_QsShowHide(force,fv)
if force then
QsShow= fv
else
QsShow=not QsShow
end
if QsShow then
BIQuickSortShowHide:SetNormalTexture(“Interface//Buttons//UI-SpellbookIcon-PrevPage-Up”)
BIQuickSortShowHide:SetPushedTexture(“Interface//Buttons//UI-SpellbookIcon-PrevPage-Down”)
BIQuickSortShowHide:SetDisabledTexture(“Interface//Buttons//UI-SpellbookIcon-PrevPage-Disabled”)
BIQuickSort:SetScript(“OnKeyUp”,keyupf)
BIQuickSort:SetScript(“OnEvent”,eventf)
BattleInfo_OnKey()
else
BIQuickSortShowHide:SetNormalTexture(“Interface//Buttons//UI-SpellbookIcon-NextPage-Up”)
BIQuickSortShowHide:SetPushedTexture(“Interface//Buttons//UI-SpellbookIcon-NextPage-Down”)
BIQuickSortShowHide:SetDisabledTexture(“Interface//Buttons//UI-SpellbookIcon-NextPage-Disabled”)
BIQuickSort:SetScript(“OnKeyUp”,nil)
BIQuickSort:SetScript(“OnEvent”,nil)
BIQuickSortTip:Hide()
end
end
— 参考 Talented
local function getChatWrite(tostr)
local edit = DEFAULT_CHAT_FRAME.editBox
local SendChatMessage = SendChatMessage
local type = edit:GetAttribute(“chatType”)
local lang = edit.language
if tostr~=nil then
return function (text, …)
SendChatMessage(text, tostr, lang, channel)
end
end
if type == “WHISPER” then
local target = edit:GetAttribute(“tellTarget”)
return function (text, …)
if text:find(“%”, 1, true) then text = text:format(…) end
SendChatMessage(text, type, lang, target)
end
elseif type == “CHANNEL” then
local channel = edit:GetAttribute(“channelTarget”)
return function (text, …)
if text:find(“%”, 1, true) then text = text:format(…) end
SendChatMessage(text, type, lang, channel)
end
else
return function (text, …)
if text:find(“%”, 1, true) then text = text:format(…) end
SendChatMessage(text, type, lang)
end
end
end
function BattleInfo_SCan()
local mapName= GetBattlefieldInfo()
local t={}
for i=1, GetNumBattlefields() do
instanceID = GetBattlefieldInstanceInfo(i)
table.insert(t,instanceID)
end
table.sort(t)
local write=getChatWrite(“SAY”)
if biNF.sayto==L.SELF then
BattleInfo_Print(string.format(L.HINT3,mapName))
BattleInfo_Print(“|CFF00FF00″..biNF:FindNew(t)..”|r”)
BattleInfo_Print(L.HINT1,1)
elseif biNF.sayto==L.CHATBOX then
DEFAULT_CHAT_FRAME.editBox:SetText(DEFAULT_CHAT_FRAME.editBox:GetText()..biNF:FindNew(t))
DEFAULT_CHAT_FRAME.editBox:Show()
else
if biNF.sayto==L.YELL then
write=getChatWrite(“YELL”)
elseif biNF.sayto==L.RAID or biNF.sayto==L.PARTY then
if UnitInRaid(“player”) then
write=getChatWrite(“RAID”)
elseif UnitInParty(“player”) then
write=getChatWrite(“PARTY”)
else
BattleInfo_Print(L.HINT2,1)
end
elseif biNF.sayto==L.CURRENT then
write = getChatWrite()
end
write(string.format(L.HINT3,mapName))
write(biNF:FindNew(t))
end
end
function BattleInfo_Reset()
BattleInfoParent:ClearAllPoints()
BattleInfoParent:SetPoint(“TOP”, “UIParent”, “TOP”,-5,-15)
WorldStateAlwaysUpFrame:ClearAllPoints()
WorldStateAlwaysUpFrame:SetPoint(“TOPLEFT”,”BattleInfoParent”,”TOPLEFT”,0,0)
end
function BattleInfo_Command(msg)
local _,_,x,_ =strfind(msg,”x=(%d+)”)
x=tonumber(x)
if x then
if x>=0 and x<=100 then
BattleInfo_Print(string.format(L.MARKINIT,x))
biQ.pMax=x
else
BattleInfo_Print(L.MARKERR)
end
elseif msg==”titan” then
BattleInfoDB.titanpatch=not BattleInfoDB.titanpatch
BattleInfo_Print(“Moving patch is now “..(BattleInfoDB.titanpatch and “on” or “off”)..” Reload UI (/console reloadui)”)
else
InterfaceOptionsFrame_OpenToFrame(“BattleInfo”)
end
end
local function BattleInfo_Apply()
biNF.selfsay=BattleInfoDB.selfsay
biNF.sayto=BattleInfoDB.sayto
biA.autorelease=BattleInfoDB.autorelease
biA.autoleave=BattleInfoDB.autoleave
biA.leavetime=BattleInfoDB.leavetime
biA.stat=BattleInfoDB.showstat
biA.igleft=BattleInfoDB.igleft
end
function BattleInfo_OnLoad()
biS:Hook(BattleInfo_Update)
biNF:Hook(BattleInfo_SCan)
if not IsAddOnLoaded(“QuestRepeat”) then
biQ:Hook()
end
biA:Hook()
BattleInfoDBDefault=
{
sayto=L.SELF,
leavetime=3,
}
BattleInfoDB=BattleInfoDB or {
showhelp=1,
selfsay=1,
autorelease=1,
autoleave=1,
showstat=1,
igleft=nil,
}
for i,v in pairs(BattleInfoDBDefault) do
BattleInfoDB[i]= BattleInfoDB[i] or v
end
BIOption:Hook(BattleInfo_Apply)
BattleInfo_Apply()
BattleInfo_QsShowHide(1)
SlashCmdList[“BATTLEINFO”] = BattleInfo_Command;
SLASH_BATTLEINFO1 = “/BATTLEINFO”;
SLASH_BATTLEINFO2 = “/BI”;
–titan and other WorldStateAlwaysUpFrame moving ui patch
if BattleInfoDB.titanpatch then
hooksecurefunc(WorldStateAlwaysUpFrame,”SetPoint”,function(…)
local _,_,l=…;
if l~=”BattleInfoParent” then
WorldStateAlwaysUpFrame:SetPoint(“TOPLEFT”,”BattleInfoParent”,”TOPLEFT”,0,0)
end
end)
end
end
/*******************************************************************************************/
#下面是报WOW战场新场关键代码
/*******************************************************************************************/
local L=BATTLEINFO_LOACALE
local BINewBattle={}
function BINewBattle:New()
local x={}
x.OldBT={}
x.OldOldBT={}
x.OldTime=GetTime()
x.Clicking=0
self.__index = self
setmetatable(x, self)
return x
end
function BINewBattle:lastNew(id)
if #(self.OldOldBT)==0 or GetTime()-self.OldTime>60 then
return nil
end
for i in pairs(self.OldOldBT) do
if self.OldOldBT[i]..””==id then
return nil
end
end
return 1
end
function BINewBattle:IsNew(id)
if self.Clicking==0 then
return nil
end
for i in pairs(self.OldBT) do
if self.OldBT[i]..””==id then
if self:lastNew(id) then
return L.PERHAPS
else
return L.OLD
end
end
end
return L.NEW
end
function BINewBattle:BeforeJoin()
self.Clicking=1
self.OldOldBT=self.OldBT
self.OldTime=GetTime()
self.OldBT={}
for i=1, GetNumBattlefields() do
instanceID = GetBattlefieldInstanceInfo(i)
table.insert(self.OldBT,instanceID)
end
table.sort(self.OldBT)
end
BattleInfo_NewBattleFinder={}
function BattleInfo_NewBattleFinder:New()
local x={}
x.data={
[L.WARSONG]=BINewBattle:New(),
[L.ARATHI]=BINewBattle:New(),
[L.EYE]=BINewBattle:New(),
[L.ALTERAC]=BINewBattle:New(),
[“DEFAULT”]={},
}
x.selfsay=true
x.sayto=L.SELF
x.f= CreateFrame(“Frame”, nil)
self.__index = self
setmetatable(x, self)
return x
end
function BattleInfo_NewBattleFinder:FindNew(t)
local outstr=””
local lsj=1
for i in pairs(t) do
j=lsj
while j<=t[i]-1 do
k=t[i]-1-j
if k>2 then
outstr=outstr..j..”->”..j+k..” ”
break
else
outstr=outstr..j..” ”
j=j+1
end
end
lsj=t[i]+1
end
outstr=outstr..lsj..L.ANDAFTER
return outstr
end
function BattleInfo_NewBattleFinder:Hook(callback)
–CONFIRM_NEW_BFENTRY SSPVP
if StaticPopupDialogs[“CONFIRM_BATTLEFIELD_ENTRY”] then
StaticPopupDialogs[“CONFIRM_BATTLEFIELD_ENTRY”].button2=L.LEAVEBUTTON
StaticPopupDialogs[“CONFIRM_BATTLEFIELD_ENTRY”].OnCancel=function(arg1,arg2)
if IsControlKeyDown() and arg2==”clicked” then
AcceptBattlefieldPort(arg1,nil)
end
end
StaticPopupDialogs[“CONFIRM_BATTLEFIELD_ENTRY”].OnShow=function()
local thisBT=getglobal(this:GetName()..”Text”)
local tx=thisBT:GetText()
if string.find(tx,L.OLD,1,1) or string.find(tx,L.NEW,1,1) then
return
end
for i in pairs(self.data) do
local _,_,toJ,_ = string.find(tx, “.+”..i..” (%d+).+”);
if toJ then
thisBT:SetText(string.gsub(tx,toJ,toJ..(self.data[i]:IsNew(toJ) or “”)))
break
end
end
end
elseif StaticPopupDialogs[“CONFIRM_NEW_BFENTRY”] then
StaticPopupDialogs[“CONFIRM_NEW_BFENTRY”].button2=L.LEAVEBUTTON
StaticPopupDialogs[“CONFIRM_NEW_BFENTRY”].OnCancel=function(arg1,arg2)
if IsControlKeyDown() and arg2==”clicked” then
AcceptBattlefieldPort(arg1,nil)
end
end
hooksecurefunc(StaticPopupDialogs[“CONFIRM_NEW_BFENTRY”],”OnUpdate”,function()
local thisBT=getglobal(this:GetName()..”Text”)
local tx=thisBT:GetText()
if string.find(tx,L.OLD,1,1) or string.find(tx,L.NEW,1,1) or string.find(tx,L.OLD,1,1) then
return
end
for i in pairs(self.data) do
local _,_,toJ,_ = string.find(tx, “.+”..i..” #(%d+).+”);
if toJ then
thisBT:SetText(string.gsub(tx,”#”..toJ,”#”..toJ..(self.data[i]:IsNew(toJ) or “”)))
break
end
end
end)
end
–BattlefieldFrameJoinButton_OnClick
hooksecurefunc(“JoinBattlefield”,function()
local mapName= GetBattlefieldInfo()
if self.data[mapName] then
self.data[mapName]:BeforeJoin()
if self.selfsay then
callback()
end
end
end)
self.f:SetScript(“OnEvent”, function()
self.data[BattleInfo_SafeZone()].Clicking=0
end)
self.f:RegisterEvent(“PLAYER_ENTERING_WORLD”)
end
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/12323.html