① 求劍網三各種宏命令語句,如mbuff,monbuff等,特別請教:「或者」的命令語句,多謝了
mbuff是目標身上有什麼buff情況下,使用什麼樣的技能,比如:/skill [mbuff:致殘,mbuff:致傷=2] 龍牙,是目標身上有一層致殘,兩次致傷的情況下施展龍牙技能。
monbuff是目標身上沒有某個buff的情況下,使用什麼技能,比如:/skill [fight,monbuff:流血] 破風,當戰斗中,目標身上沒有流血buff的時候,使用破風。
或者你就用 , 這個來表示吧,以上所有命令為游戲源代碼包含的命令,所以不用擔心這個命令會失效。
② hadoop hdfs 源碼怎麼看
在使用Hadoop的過程中,很容易通過FileSystem類的API來讀取HDFS中的文件內容,讀取內容的過程是怎樣的呢?今天來分析客戶端讀取HDFS文件的過程,下面的一個小程序完成的功能是讀取HDFS中某個目錄下的文件內容,然後輸出到控制台,代碼如下:
[java] view plain
public class LoadDataFromHDFS {
public static void main(String[] args) throws IOException {
new LoadDataFromHDFS().loadFromHdfs("hdfs://localhost:9000/user/wordcount/");
}
public void loadFromHdfs(String hdfsPath) throws IOException {
Configuration conf = new Configuration();
Path hdfs = new Path(hdfsPath);
FileSystem in = FileSystem.get(conf);
//in = FileSystem.get(URI.create(hdfsPath), conf);//這兩行都會創建一個DistributedFileSystem對象
FileStatus[] status = in.listStatus(hdfs);
for(int i = 0; i < status.length; i++) {
byte[] buff = new byte[1024];
FSDataInputStream inputStream = in.open(status[i].getPath());
while(inputStream.read(buff) > 0) {
System.out.print(new String(buff));
}
inputStream.close();
}
}
}
FileSystem in = FileSystem.get(conf)這行代碼創建一個DistributedFileSystem,如果直接傳入一個Configuration類型的參數,那麼默認會讀取屬性fs.default.name的值,根據這個屬性的值創建對應的FileSystem子類對象,如果沒有配置fs.default.name屬性的值,那麼默認創建一個org.apache.hadoop.fs.LocalFileSystem類型的對象。但是這里是要讀取HDFS中的文件,所以在core-site.xml文件中配置fs.default.name屬性的值為hdfs://localhost:9000,這樣FileSystem.get(conf)返回的才是一個DistributedFileSystem類的對象。 還有一種創建DistributedFileSystem這種指定文件系統類型對像的方法是使用FileSystem.get(Configuration conf)的一個重載方法FileSystem.get(URI uri, Configuration),其實調用第一個方法時在FileSystem類中先讀取conf中的屬性fs.default.name的值,再調用的FileSystem.get(URI uri, Configuration)方法。
③ 這個網址的源碼是什麼
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>韓雪冬_BLOG :::web design:::-::: kaven 個人 flash 網站設計 ::: 網站建設 ::: 網頁設計</title>
<META name="Author" content="ExoBUD, Jin_woong Eu,辣辣箭">
<META name="Keywords" content="ExoBUD™ MP,網頁播放器">
<META name="Description" content="INetCasting(asf,wma,mp3,avi,wav),韓雪冬個人網站">
<LINK rel="stylesheet" href="exobud.css" type="text/css">
<style type="text/css">
<!--
.time {behavior: url(#default#time2);}
body {
background-color: #000000;
}
-->
</style>
</head>
<!--
//***************************************************************************************
// 版權所有。
// 請尊重智慧財產權: 無論您對本程序 ExoBUD MP(II) 作任何修改、製作(或翻譯)面板,請您
// *必須*保留此段版權信息的內容,包括程序(及面板)原作者及中文漢化作者的名字和網站鏈接。
//
// 請不要將程序(或面板)原作者或中文漢化作者的名字改成您自己的名字,
// 然後以另一程式名稱重新命名後在網上公開發表及散播本程式,因為這是嚴重的侵權行為。
//
// 這是免費程序,所以請不要使用在商業用途上。
// 另外,您也不可將本程序(全部或部份)復制到其他儲存媒體(例如光碟)上作販賣獲利用途。
//
// 申明:因為使用本程序對你造成任何後果,程序原作者及中文漢化作者均不用對其負責。
//
//---------------------------------------版權信息---------------------------------------
// ExoBUD? MP(II) v5.8 Rhapsody.?-Skined [wmp-obj v7.1/v9]
// (C)Copyright 1998-2006 ExoBUD? All Right Reserved.
// Homepage : http://cyworld.com/exobud , http://exobud.nayana.com
// E-Mail : [email protected]
// ICQ : 96138429 (authorization mode)
//-------------------------------------------------------------------------------------
// Graphic Design (by Rhapsody.?)
// (C)Copyright Rhapsody.? All Right Reserved.
// msn : [email protected]
// Homepage : http://www.intorock.com
//-------------------------------------------------------------------------------------
// 簡體中文漢化: 辣辣箭
// 網站: http://www.cuiz.net
// 電子郵箱: [email protected]
// OICQ號碼: 79342254
// 發表日期: 2006-11-11
//***************************************************************************************-->
<SCRIPT Language ="JavaScript" src="sys/viewobj.js"></SCRIPT><!-- 載入Windows Media Player控制項程序 -->
<SCRIPT Language="JavaScript" src="sys/exobud.js"></SCRIPT><!-- 載入 ExoBUD MP(II) 主程序 -->
<SCRIPT Language="JavaScript" src="config.js"></SCRIPT><!-- 載入 config.js 基本設置程序 -->
<SCRIPT Language ="JScript" src="sys/imgchg.js"></SCRIPT><!-- 載入「動態按鈕圖片切換」程序文件 -->
<SCRIPT Language="JavaScript" src="addlist.js"></SCRIPT><!-- 載入 ExoBUD MP(II) 播放歌曲列表設定文件 -->
<SCRIPT Language ="JScript" FOR=Exobud EVENT=openStateChange(sf)> evtOSChg(sf); </SCRIPT>
<SCRIPT Language ="JScript" FOR=Exobud EVENT=playStateChange(ns)> evtPSChg(ns); </SCRIPT>
<SCRIPT Language ="JScript" FOR=Exobud EVENT=error()> evtWmpError(); </SCRIPT>
<SCRIPT Language ="JScript" FOR=Exobud EVENT=Buffering(bf)> evtWmpBuff(bf); </SCRIPT>
<body onLoad="initExobud();" onContextMenu="return false" onDragStart="return false" onselectstart="return false" style="overflow:hidden;" topmargin=0 leftmargin=0 marginwidth=0 marginheight=0><span align="center" id="loadingBar" style="width:100%;position:absolute; left:0px; top:2px; z-index:1;"><p align="center"><img src="img/loading.gif" align="middle" border="0"></p></span>
<table id="Table_01" width="100%" height="23" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<img src="img/plastic-ii_01.gif" width="2" height="23" alt=""></td>
<td>
<img name="iexobud" src="img/btn_exobud_ovr.gif" width="154" height="23" onClick="vizExobud()" style="cursor:hand;" title="首頁"></td>
<td>
<img name="prevt" src="img/btn_prev.gif" width="19" height="23" onClick="playPrev();this.blur();" onMouseOver="imgtog('prevt',2);" onMouseOut="imgtog('prevt',3)" style="cursor:hand;" title="上一首"></td>
<td>
<img name="playt" src="img/btn_play.gif" width="19" height="23" onClick="startExobud();this.blur();" style="cursor:hand;" title="播放"></td>
<td>
<img name="pauzt" src="img/btn_pauz_off.gif" width="19" height="23" onClick="wmpPP();this.blur();" style="cursor:hand;" title="暫停/繼續"></td>
<td>
<img name="stopt"src="img/btn_stop.gif" width="19" height="23" onClick="wmpStop();this.blur();" onMouseOver="imgtog('stopt',2);" onMouseOut="imgtog('stopt',3)" style="cursor:hand;" title="停止"></td>
<td>
<img name="nextt" src="img/btn_next.gif" width="19" height="23" onClick="playNext();this.blur();" onMouseOver="imgtog('nextt',2);" onMouseOut="imgtog('nextt',3)" style="cursor:hand;" title="下一首"></td>
<td>
<img src="img/plastic-ii_08.gif" width="37" height="23" alt=""></td>
<td width="80" background="img/plastic-ii_09.gif" align="center" onClick="chgTimeFmt();this.blur();" nowrap><span id="disp2" width=168 class="time" align="right" title ="正常/倒序" style="position:relative;top=0;cursor:hand;left:-2px; top:-0px;">00:00 | 00:00</span> </td>
<td>
<img src="img/plastic-ii_10.gif" width="8" height="23" alt=""></td>
<td width="60%" background="img/plastic-ii_11.gif" align="left" valign="top" nowrap><marquee behavior="scroll" width="99%" scrolldelay=30 scrollamount=1 truespeed><span id="disp1" class="title" style="width:0px; height:0px; position:relative; cursor:default; left:0; top:5px; z-index:1;">welcome to http://www.kaven115.com</span>
</marquee> </td>
<td>
<img src="img/plastic-ii_12.gif" width="38" height="23" alt=""></td>
<td>
<img name="plist" src="img/btn_plist.gif" width="18" height="23" onClick="openPlist();this.blur();" onMouseOver="imgtog('plist',2);" onMouseOut="imgtog('plist',3)" style="cursor:hand;" title="歌曲清單"></td>
<td>
<img name="pmode" src="img/btn_rndmode_off.gif" width="19" height="23" onClick="chgPMode();this.blur();" style="cursor:hand;" title="播放順序"></td>
<td>
<img name="tloop" src="img/btn_trkloop_off.gif" width="19" height="23" onClick="chgTrkLoop();this.blur();" style="cursor:hand;" title="切換是否循環播放所選歌曲"></td>
<td>
<img name="vmute" src="img/btn_mute_off.gif" width="19" height="23" onClick="wmpMute();this.blur();" style="cursor:hand;" title="靜音"></td>
<td>
<img name="rept" src="img/btn_rept_off.gif" width="19" height="23" onClick="chkRept();this.blur();" style="cursor:hand;" title="切換是否重復播放當前歌曲"></td>
<td>
<img src="img/plastic-ii_18.gif" width="86" height="23" alt=""></td>
<td width=72><iframe name="音量"src="add_vol/exobud_vol.html" height="23" width="72" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0" frameborder="0" scrolling="no" title="音量- +"></iframe></td>
<td>
<img src="img/plastic-ii_20.gif" width="3" height="23" alt=""></td>
<td>
<img src="img/plastic-ii_21.gif" width="3" height="23" alt=""></td>
<TD><IMG name="rwdt" src="img/btn_rwd.gif" width=21 height=35 border=0 onMouseDown="fastRew();imgChange('rwdt',1);" onMouseUp="endRew();imgChange('rwdt',0);" onMouseOver="imgChange('rwdt',2);" onMouseOut="imgChange('rwdt',0);" title="FastReward" style="display:none;cursor:hand;"></TD>
<TD><IMG name="fwdt" src="img/btn_fwd.gif" width=21 height=35 border=0 onMouseDown="fastFwd();imgChange('fwdt',1);" onMouseUp="endFwd();imgChange('fwdt',0);" onMouseOver="imgChange('fwdt',2);" onMouseOut="imgChange('fwdt',0);" title="FastForward" style="display:none;cursor:hand;"></TD>
</tr>
</table>
<TABLE width=100% height=0 border="0" cellspacing="0" cellpadding="0">
<TR>
<TD height=0>
<SCRIPT Language="JavaScript" src="sys/caption.js"></SCRIPT>
</TD>
</TR>
</TABLE>
</div>
<script language="javascript">
document.all.loadingBar.style.display="none";
document.all.divBody.style.display="";
</script>
</body>
</html>
MP3地址:http://www.zhenruifang.com/blog/music/Mad%20world.mp3
④ 求WOW 目標BUFF DEBUFF增大的lua。
技能觸發插件裡面,選擇圖標設置,可以更改大小和位置。
監視自身buff
bl={5171,73651,51713,84745,84746,84747,32645}
bs=30;xb=-10;yb=-50;br=4;bdr="BORDER"be="UNIT_AURA"cbf=CreateFrame;gi=GetSpellInfo;bm=math.ceil;fm=math.floor;st=STANDARD_TEXT_FONT;function cu(s) return UnitBuff("player",gi(s))end
function Cb(i,s)local _,_,t3=gi(s)local f=cbf("Frame")f:SetSize(bs,bs)f.t=f:CreateTexture(nil,bdr)f.t:SetAllPoints(true)f.t:SetTexture(t3)f.f=f:CreateFontString(nil,bdr)f.f:SetFont(st,12,"OUTLINE")f.f:SetPoint("BOTTOMRIGHT",0,0)return f;end
function vb(s,i,row)local b1,_,_,b4=cu(s)local f=_G["B"..i]if b1 then f:Show()f:SetPoint("CENTER",xb-(bs+5)*bm((row-1)%br),yb-(bs+10)*bm(row/br))if(b4>1)then f.f:SetText(b4)end row=row+1;end return row;end
function ub()for i,s in ipairs(bl)do local b,_,_,_,_,_,k=cu(s)if b then local vt=fm(k-GetTime())if (vt>=60)then vt=bm(vt/60)_G["B"..i].c:SetText(vt.."m")elseif vt >= 0 then _G["B"..i].c:SetText(vt.."s")end end end end
function Cc(f)f.c=f:CreateFontString(nil,bdr)f.c:SetFont(st,12,"OUTLINE")f.c:SetPoint("CENTER",0,-20)end function db()for i in ipairs(bl)do _G["B"..i]:Hide()end end
for i,s in ipairs(bl)do _G["B"..i]=Cb(i,s)Cc(_G["B"..i])_G["B"..i]:Hide()end function bb()db()local bw=1;for i,s in ipairs(bl)do bw=vb(s,i,bw)end end bk=cbf("Frame")bk:SetScript("OnEvent",bb)bk:SetScript("OnUpdate",ub)bk:RegisterEvent(be)
是這個么
⑤ 誰知道 文件分割合並工具的 C++源碼啊
給你個Java的
public class FileCut
/*cl_tl*/
{
private Shell shell;
private Display display;
private Text txtSourceFile;
private Text txtNewFilePath;
private Text txtFileSize;
private Button btnChooseFile;
private Button btnChoosePath;
private Button btnCut;
private Button btnUnionFiles;
private Button btnUp;
private Button btnDown;
private Button btnClear;
private Button btnClearAll;
private Button btnUnion;
private Table tblFileList;
private File sourceFile = null; /*源文件*/
private File[] newFile = null; /*分割後產生的文件*/
private int fileCount = 0; /*分割成的文件個數*/
private int fileSize = 0; /*分割的文件塊大小*/
private String strSourceFile = null; /*源文件路徑及名稱*/
private String strNewFilePath = null; /*分割文件存放路徑*/
public static void main(String[] args)
{
Display display=new Display();
FileCut Item=new FileCut();
Item.createShell();
while( !Item.shell.isDisposed())
{
if(!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
/*fn_hd
*rem:創建窗體
*aut:
*log:2005-11-24
*/
private void createShell()
/*fn_tl*/
{
shell = new Shell(display, SWT.MIN);
shell.setBounds(300,250,500,330);
shell.setText("文件分割合並");
GridLayout shellLayout = new GridLayout();
shellLayout.numColumns = 3;
shell.setLayout(shellLayout);
createWidgets();
shell.open();
}
/**fn_hd
*rem:在窗體內添加控制項
*per:
*aut:
*log:2005-11-24
*/
private void createWidgets()
/*fn_tl*/
{
final Label lblNull0 = new Label(shell,SWT.None);
GridData gd0 = new GridData();
gd0.horizontalSpan = 3;
lblNull0.setLayoutData(gd0);
final Label lblSourceFile = new Label(shell, SWT.None);
lblSourceFile.setText("源 文 件");
GridData gd2 = new GridData(GridData.FILL_HORIZONTAL);
txtSourceFile = new Text(shell, SWT.BORDER);
txtSourceFile.setLayoutData(gd2);
btnChooseFile = new Button(shell, SWT.PUSH);
btnChooseFile.setText("..");
final Label lblPath = new Label(shell, SWT.None);
lblPath.setText("存放路徑");
txtNewFilePath = new Text(shell, SWT.BORDER);
GridData gd3 = new GridData(GridData.FILL_HORIZONTAL);
txtNewFilePath.setLayoutData(gd3);
btnChoosePath = new Button(shell, SWT.PUSH);
btnChoosePath.setText("..");
final Label lblSize = new Label(shell, SWT.None);
lblSize.setText("分塊大小(KB)");
txtFileSize = new Text(shell,SWT.BORDER);
GridData gd7 = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
txtFileSize.setLayoutData(gd7);
btnCut = new Button(shell, SWT.PUSH);
GridData gd4 = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
btnCut.setLayoutData(gd4);
btnCut.setText("開始分割");
final Label lbl1 = new Label(shell, SWT.None);
GridData gd8 = new GridData();
gd8.horizontalSpan = 3;
lbl1.setLayoutData(gd8);
lbl1.setText("待合並的文件列表");
tblFileList = new Table(shell, SWT.BORDER);
GridData gd1 = new GridData(GridData.FILL_BOTH);
gd1.horizontalSpan = 2;
tblFileList.setLayoutData(gd1);
Composite com = new Composite(shell, SWT.None);
GridLayout comLayout = new GridLayout();
com.setLayout(comLayout);
final Label lblNote = new Label(shell, SWT.None);
GridData data = new GridData();
data.horizontalSpan=3;
lblNote.setLayoutData(data);
lblNote.setText("提示:注意合並文件的順序");
btnUnionFiles = new Button(com, SWT.PUSH);
btnUnionFiles.setText("選擇文件");
btnUp = new Button(com, SWT.PUSH);
btnUp.setText(" 上移 ");
btnUp.setEnabled(false);
btnDown = new Button(com, SWT.PUSH);
btnDown.setText(" 下移 ");
btnDown.setEnabled(false);
btnClear = new Button(com, SWT.PUSH);
btnClear.setText(" 刪除 ");
btnClear.setEnabled(false);
btnClearAll = new Button(com, SWT.PUSH);
btnClearAll.setText("清空列表");
btnUnion = new Button(com, SWT.PUSH);
btnUnion.setText("開始合並");
btnCut.addSelectionListener(new SelectionAdapter()
//添加"開始分割"監視器
{
public void widgetSelected(SelectionEvent event)
{
cutButtonEvent();
}
});
btnChooseFile.addSelectionListener(new SelectionAdapter()
//添加選擇(源文件)監視器
{
public void widgetSelected(SelectionEvent event)
{
FileDialog fdOpen = new FileDialog(shell,SWT.OPEN);
String strFileName = fdOpen.open();
if (strFileName != null)
{
txtSourceFile.setText(strFileName);
txtNewFilePath.setText(fdOpen.getFilterPath());
txtFileSize.setFocus();
}
}
});
btnChoosePath.addSelectionListener(new SelectionAdapter()
//添加選擇(分割文件存放路徑)監視器
{
public void widgetSelected(SelectionEvent event)
{
DirectoryDialog dirDia = new DirectoryDialog(shell);
String strFileDir = dirDia.open();
if (strFileDir != null)
{
txtNewFilePath.setText(strFileDir);
txtFileSize.setFocus();
}
}
});
btnUp.addSelectionListener(new SelectionAdapter()
//添加"上移"監視器
{
public void widgetSelected(SelectionEvent event)
{
//int[] itemIndices = tblFileList.getSelectionIndices();
int itemIndex = tblFileList.getSelectionIndex();
if (itemIndex == 0)
{
tblFileList.setFocus();
return;
}
//交換列表中兩行的內容
String strTemp = tblFileList.getItem(itemIndex).getText();
tblFileList.getItem(itemIndex).setText(tblFileList.getItem(
itemIndex - 1).getText());
tblFileList.getItem(itemIndex - 1).setText(strTemp);
//設置焦點
tblFileList.setSelection(itemIndex - 1);
tblFileList.setFocus();
}
});
btnDown.addSelectionListener(new SelectionAdapter()
//添加"下移"監視器
{
public void widgetSelected(SelectionEvent event)
{
//int[] itemIndices = tblFileList.getSelectionIndices();
int itemIndex = tblFileList.getSelectionIndex();
if (itemIndex == tblFileList.getItemCount() - 1)
{
tblFileList.setFocus();
return;
}
//交換列表中兩行的內容
String strTemp = tblFileList.getItem(itemIndex).getText();
tblFileList.getItem(itemIndex).setText(tblFileList.getItem(
itemIndex + 1).getText());
tblFileList.getItem(itemIndex + 1).setText(strTemp);
//設置焦點
tblFileList.setSelection(itemIndex + 1);
tblFileList.setFocus();
}
});
btnClear.addSelectionListener(new SelectionAdapter()
//添加"刪除"監視器
{
public void widgetSelected(SelectionEvent event)
{
int itemIndex = tblFileList.getSelectionIndex();
tblFileList.remove(itemIndex);
btnUp.setEnabled(false);
btnDown.setEnabled(false);
btnClear.setEnabled(false);
}
});
btnClearAll.addSelectionListener(new SelectionAdapter()
//添加"清空列表"監視器
{
public void widgetSelected(SelectionEvent event)
{
tblFileList.removeAll();
btnUp.setEnabled(false);
btnDown.setEnabled(false);
btnClear.setEnabled(false);
}
});
txtFileSize.addSelectionListener(new SelectionAdapter()
//添加"分塊大小"文本框中輸入回車監視器
{
public void widgetDefaultSelected(SelectionEvent event)
{
cutButtonEvent();
}
});
btnUnionFiles.addSelectionListener(new SelectionAdapter()
//添加"選擇文件"監視器
{
public void widgetSelected(SelectionEvent event)
{
FileDialog fd = new FileDialog(shell, SWT.MULTI);
fd.setFilterExtensions(new String[]{"*.dat", "*.*"});
if (fd.open() != null)
{
String[] strFiles = fd.getFileNames();
String strFilePath = fd.getFilterPath();
//strUnionFilePath = new String[strFiles.length];
for(int i = 0; i < strFiles.length; i++)
{
//strUnionFilePath[i] = fd.getFilterPath();
TableItem item = new TableItem(tblFileList, SWT.None);
item.setText(strFilePath + "\\" + strFiles[i]);
}
}
}
});
btnUnion.addSelectionListener(new SelectionAdapter()
//添加"開始合並"監視器
{
public void widgetSelected(SelectionEvent event)
{
if (tblFileList.getItemCount() == 0)
{
return;
}
switch (unionFiles())
{
case 1:
showMessage("成功", "合並完成!",
SWT.OK | SWT.ICON_INFORMATION);
tblFileList.removeAll();
btnUp.setEnabled(false);
btnDown.setEnabled(false);
btnClear.setEnabled(false);
break;
case -1:
showMessage("錯誤", "文件不存在!",
SWT.OK | SWT.ICON_ERROR);
break;
case -2:
break;
default:
showMessage("錯誤", "有錯誤發生,文件合並失敗!",
SWT.OK | SWT.ICON_ERROR);
}
}
});
tblFileList.addSelectionListener(new SelectionAdapter()
//添加選中列表中元素監視器
{
public void widgetSelected(SelectionEvent event)
{
btnUp.setEnabled(true);
btnDown.setEnabled(true);
btnClear.setEnabled(true);
}
});
}
/**fn_hd
*rem:顯示消息框
*log:2005-11-24
*/
private int showMessage(String strText, String strMessage, int i)
{/*fn_tl*/
MessageBox msgBox = new MessageBox(shell,i);
msgBox.setText(strText);
msgBox.setMessage(strMessage);
return msgBox.open();
}
/**fn_hd
*rem:點擊"分割"按鈕觸發的事件響應
*log:2005-11-24
*/
private void cutButtonEvent()
/*fn_tl*/
{
strSourceFile = txtSourceFile.getText().trim();
strNewFilePath = txtNewFilePath.getText().trim();
if (strSourceFile.equals("") || strNewFilePath.equals(""))
{
showMessage("提示", "請輸入源文件和 \n\n分割文件的路徑! ",
SWT.OK | SWT.ICON_INFORMATION);
return;
}
try
{
fileSize = Integer.parseInt(txtFileSize.getText());
fileSize *= 1024;
if (fileSize <= 0)
{
showMessage("錯誤", "分塊大小為正整數! ",
SWT.OK | SWT.ICON_ERROR);
return;
}
}
catch(Exception e)
{
showMessage("錯誤", "請在分塊大小框填入數字! ",
SWT.OK | SWT.ICON_ERROR);
return;
}
switch (cutFile())
{
case 1:
showMessage("提示", "分割完成! ", SWT.OK |
SWT.ICON_INFORMATION);
txtSourceFile.setText("");
txtNewFilePath.setText("");
txtFileSize.setText("");
break;
case -1:
showMessage("錯誤", "源文件不存在或存放路徑不存在!",
SWT.OK | SWT.ICON_ERROR);
break;
default:
showMessage("未知錯誤", "文件分割失敗! ",
SWT.OK | SWT.ICON_ERROR);
}
}
/*fn_hd
*rem:文件分割實現
*per:成功返回1,文件未找到返回-1,其他情況返回0
*exp:IOException
*aut:
*log:2005-11-22,創建
*log:2005-11-24,修改
*/
private int cutFile()
/*fn_tl*/
{
sourceFile = new File(strSourceFile);
fileCount = (int) (sourceFile.length() / fileSize);
if (sourceFile.length() % fileSize != 0)
{
fileCount++;
}
newFile = new File[fileCount];
try
{
int count = 0;
int i = 0;
byte[] bueff = new byte[fileSize];
FileOutputStream out = null;
FileInputStream in = new FileInputStream(sourceFile);
for (i = 0; i < newFile.length; i++)
{
newFile[i] = new File(strNewFilePath,
i + sourceFile.getName() + ".dat");
}
i = 0;
while ((count = in.read(bueff,0,fileSize)) != -1)
{
out = new FileOutputStream(newFile[i]);
out.write(bueff,0,count);
out.close();
i++;
}
in.close();
return 1;
}
catch(FileNotFoundException e)
{
System.out.println(e);
return -1;
}
catch(IOException e)
{
System.out.println(e);
return 0;
}
}
/*fn_hd
*rem:文件合並的實現
*per:成功返回1,文件未找到返回-1,取消操作返回-2,其他情況返回0;
*aut:
*exp:FileNotFoundException,IOException
*log:2005-11-28,創建
*/
private int unionFiles()
/*fn_tl*/
{
String[] strFiles = new String[tblFileList.getItemCount()];
File[] unionFiles = new File[strFiles.length];
FileDialog fdSave = new FileDialog(shell, SWT.SAVE);
String s = fdSave.open();
if (s == null)
{
return -2;
}
File outFile = new File(fdSave.getFilterPath(),
fdSave.getFileName());
if (outFile.exists())
{
int msg = showMessage("提示", "該文件以存在,是否替換?",
SWT.YES | SWT.NO | SWT.ICON_QUESTION);
if (msg == SWT.NO)
{
return -2;
}
}
for(int i = 0; i < strFiles.length; i++)
{
strFiles[i] = tblFileList.getItem(i).getText();
}
try
{
FileInputStream in = null;
FileOutputStream out = new FileOutputStream(outFile);
byte[] buff = new byte[1024];
int count;
for(int i = 0; i < strFiles.length; i++)
{
in = new FileInputStream(strFiles[i]);
while((count = in.read(buff,0,1024)) != -1)
{
out.write(buff,0,count);
}
in.close();
}
out.close();
return 1;
}
catch(FileNotFoundException e)
{
System.out.println(e);
return -1;
}
catch(IOException e)
{
System.out.println(e);
return 0;
}
}
}
⑥ 魔獸懷舊服:世界BUFF被「暗改」,插件作者發現移除了「數據源」
《魔獸世界》懷舊服近期關於世界BUFF的改動較為頻繁,這都是因為第五階段即將到來,暴雪為了應對安其拉開門的伺服器壓力,正在對 游戲 內的部分內容進行著細節「優化」,只是牽一發而動全身,隨之而來的就是各種「BUG」,世界BUFF的改動其實就算得上是因為P5安其拉開門帶來的副產品,而且世界BUFF的改動在 游戲 裡面還並不完美。
世界BUFF的改動,藍貼已經明確過的優化細節,就是在經過熱修之後, 只要伺服器的其中一個位面上交龍頭,整個伺服器都會獲得「屠龍者咆哮」的BUFF,前提是釋放BUFF的任務NPC必須保持重置狀態。 但只要某一個位面的NPC未進入重置位置,那就不能獲得BUFF,也就是很難保持全服同步獲取BUFF,這「優化」跟之前沒有本質上的區別,而且有時候會出兩個位面都沒有BUFF,或者部分玩家無法正常得到BUFF。
第一次熱修帶有明顯的「BUG」,在24號的時候,世界BUFF再次被「暗改」,但沒有藍貼說明。 第二次熱修之後,一個位面上交龍頭之後,其他位面不再觸發NPC的喊話,也沒有「閃電」的效果,而是突然憑空出現BUFF標志。插件也不再能獲取到BUFF的具體數據 ,比如位面和來源區別方面,這意味著第二次熱修,導致了插件的失效。
美服的BUFF插件作者在24號的熱修之後,檢查數據發現,暴雪直接移除了戰斗日誌的部分數據源。 現在的戰斗日誌缺失了部分世界BUFF的源碼,這些源碼之前可以讓插件識別出BUFF的來源NPC、區域,還有奈法利安和奧妮克希亞的區別。第二次熱修除了酋長的祝福和哈卡的數據源外,兩個龍頭的源數據已經從戰斗日誌刪除,插件無法獲取到來源信息。
關於世界BUFF的改動,在 游戲 里的實際表現還比較亂,有著「BUG」的存在。第二次熱修之後,更是直接移除部分數據源,可見改動後的機制還並不理想。 而該插件作者也建議暴雪,把龍頭BUFF的數據源重新加入到戰斗日誌裡面,並且統一伺服器所有位面的BUFF重置機制,最佳的方式就不管任何位面上交龍頭,其他位面都能馬上重置NPC的位置,以讓全服玩家獲取到世界BUFF。
只是,不管後續會有怎樣的優化,暴雪就現在世界BUFF的改動,幾個插件作者給出的相同評價就是「難以想像暴雪這樣的大公司,會出現如此糟糕的程序問題」。而普通玩家,則是更直接明了「暴雪搞亂了 游戲 的本身機制,然後直接刪除?這一定是個玩笑」,不得不說,世界BUFF的數次改動,而且越改越亂的感覺,也預示著安其拉開門的時候,會有更精彩的「BUG」出現,拭目以待吧。
⑦ 魔獸世界插件
團隊報警系統 RaidAlerter 20080902
發布者: 最後的季節
更新日期: 2008-09-02
界面語言: 簡體中文
插件類型: 非庫類
插件來源: wowar
運行環境: for WOW 2.4
插件等級: ★★★☆☆
使用說明:
2008-09-02]RaidAlerter團隊報警系統(簡、繁)——提供RAID和5人隊伍的各種特色警報
插件語言:簡體中文、繁體中文
適用版本:WOW 2.4.3
插件作者:原作者Oldhand
內存佔用:初始內存佔用約270K,超限會自動清理
資源佔用:視戰斗狀況而定,在大規模戰役中將佔用較多的CPU資源。不需要的報警功能建議及時關閉。
插件簡介:提供RAID和5人隊伍的各種特色警報。
RaidAlerter的前身是RaidCompere,因RaidCompere佔用資源過大,早已停止更新。後原作者Oldhand將RaidCompere功能做了大量精簡,成為現在的RaidAlerter。
RaidAlerter現在主要提供TANK血量危急、嘲諷抵抗、OT、獵人寧神命中情況、被控制、打破控制、團隊檢查和5人小隊警報等,這些絕大部分都是首領模塊所不具備的功能。
【插件功能】
帶"★"的功能需要在團隊助手(oRA2或CTRA)里設置TANK順序,否則無效。
◇TANK監視:
·血量監視。若低於設定值(默認30%)則在團隊頻道通知★;通報戰士的盾牆、破釜沉舟技能。
·死亡監視。通報TANK死亡★。
·嘲諷監視。TANK的嘲諷技能如果失敗則在團隊頻道通知。
◇OT報警:默認關閉,建議在需要時手動啟用。BOSS鎖定非TANK目標超過1秒則判定為OT(排除Boss快速切換目標施法的情況)
·團隊消息方式
·M語方式
◇獵人監視:獵人標記怪物以及施放誤導的時候進行通告。
◇寧神監視:通報寧神射擊是否成功。
◇陣亡通報:戰斗結束後若有人陣亡,則
·通報陣亡人數,同時視情況通報和法力和靈魂綁定狀態,便於及時復活和RL決定是否稍息。
·在本機用白字顯示最先進入戰斗狀態者(不會影響他人頻道)。由於受諸多因素影響,此信息僅供參考。
◇精神控制監視:
·被控制警報。對當前被控制者作骷髏標記並在團隊頻道通知,此骷髏標記在戰斗結束後會自動清除。
·解除控制警報。TANK被控制結束後若仍處於變羊狀態,則在團隊頻道通知,以便及時解除。
◇魔法解除:通告玩家驅散怪物的魔法是否成功;30碼內的打破控制技能通告(如開羊)。
◇打斷監視:通告怪物正在施放的魔法被誰成功打斷。
◇干涉監視:通告哪個QS干涉了誰
◇靈魂石監視:通告誰已被綁定靈魂石。
◇Boss血量通報:RAID Boss戰,每10%(5人小隊為20%)通報一次Boss血量;低於設定百分比(5人小隊固定為5%)則開始逐一通報。
◇5人小隊警報:提供組隊(非團隊)時的嘲諷抵抗、隊友血量危急、獵人標記、魔法打斷、打破控制通報等功能。此功能無需隊長許可權。
◇NEF戰監視:
·墮落治療。在團隊頻道通知墮落治療者和累計造成傷害。
·狂野變形。如果點名FS把TANK變形則在團隊頻道通知。
◇TAQ雙子戰監視:提供AOE技能打到小蟲的警報。根據慣用戰術,只監控DZ、ZS和LR。
(上面兩個功能現在已基本用不上...懶得刪了...做個留念..反正不開就不佔資源的)
◇生命危急自動喊話:當玩家自身血量過低(默認30%)時自動喊話請求治療。需屬於團隊模式設置的正常隊員。
此功能進游戲時均默認為關閉,退出遊戲後不保存設置。請根據需要用命令/ral myhp開關。
◇戰斗記錄距離:自動將游戲默認的35碼戰斗記錄距離增大至150碼以獲得更完全的報警,玩家可根據場合需要自行調整。
◇團隊狀態條:提供一個相當精簡的團隊狀態條實時顯示團隊法力、治療法力和死亡人數;同時能在提示中顯示團隊PvP、到位和靈魂石狀態。
【使用說明】
◇狀態條操作:
左鍵點擊:開關警報
右鍵點擊:打開選項菜單
右鍵拖動:調整團隊狀態條位置
Ctrl+左鍵:公布到位檢查結果
Ctrl+右鍵:公布合劑檢查結果
Alt+左鍵:公布PvP檢查結果
Alt+右鍵:公布增強葯劑檢查結果
Shift+左鍵:公布團隊狀態詳情
Shift+右鍵:立即清理插件內存
Ctrl+Alt+左鍵:血量危急自動喊話開關
◇發送團隊警報需要團長L或者助理A許可權,否則只在本機顯示。多人啟用RaidAlerter時,會自動選擇一玩家作為報警發送方。若無需警報請及時關閉,可減少資源佔用。
◇團隊模式人數:比如,設定為25人團隊模式,那麼認為1-5隊屬於正常隊員,其他則被判定為替補。替補成員不影響警報和實時數據。
◇內存清理界限,默認1024K,增大此設置可以降低內存自動清理頻率。個人建議:≤1G內存設定為1000-2000K,1G以上內存建議2000-4000K。
◇戰斗記錄距離的設定同時對DBM/BigWigs/DamageMeters/Recount等依賴戰斗記錄的插件有效,但是如果玩家電腦性能太差的可能會導致游戲「卡」到難於接受,請自行降低警報距離(重置到游戲默認的35碼)。
◇命令幫助:/raidalerter 或 /ral help
建議配合使用的插件:團隊助手(oRA2或CT_RaidAssist) + 首領模塊(DBM或BigWigs)
雖然所有的功能設定均有其用意,但眾口難調,有些細節如果不合你意的話你可以DIY——用文本編輯工具(如Editplus或UltraEdit)打開RaidAlerter.lua文件:
◇警報方式
有的玩家想用喊話、說等不同的警報方式,找到比如:
RAL.SendMSG("**注意!"..re1.."的嘲諷被→"..re2.."←抵抗了!**", "RAID");
括弧最後面""里的RAID就是指報警使用團隊消息方式。可以改為:
SAY - 說
YELL - 喊
RAID_WARNING - 團隊通知
◇警報聲音
不喜歡報警聲音?好吧,你把「PlaySoundFile」字串全部替換為「--PlaySoundFile」就能得到一個無聲版的RaidAlerter
最後,關於插件語言:自原作者Oldhand開始RaidAlerter就是一個本土插件,只支持簡體中文。
個人能力有限,我做的所有改動也只適用於國服簡體中文客戶端。
要支持其他語言,並不是簡單的翻譯一下就能用,而是要把所有名詞和格式做到精準。
非國服玩家可自行嘗試修改。
BTW:UI源碼本來就是完全開放的,任何人都可以在尊重作者的前提下自己進行修改。
08-09-02:
1、Buff檢查:加入太陽之井高地「基魯的勝利之歌」Buff識別。
2、略微調整了一下設置界面和狀態條的字體(效果見新圖)。
08-07-30:
Buff檢查:增加聖騎士的祝福檢查。
仍然為一鍵式檢查,檢查項目由插件自動判定,無需設置。
偶實在厭倦了點完RAL還要再一個一個點XRS的自定義Buff檢查...
雖然不夠完美,但已經能滿足多數情況。
08-07-23:
1、針對2.4.3修訂。得益於BLZ對戰斗記錄的修正,開羊警報現在終於完整(之前不能報平砍開羊)。
2、團隊戰斗計時:
- 不再記錄小於30秒的團隊戰斗時間;
- 修正了一個判定BUG。
3、控制警報優化,避免菲米絲戰役訊息過量可能導致掉線的問題。
4、修正選擇報警發送方存在的小問題。
5、其他一些完善和調整。
08-06-03:
1、簡體中文、繁體中文兩種語言文件整理完成。
繁體語言主要取自恰恰@語風的翻譯,同時參考了spippen0的補充意見。
2、Buff檢查:
- 現在不再檢查離線玩家;
- 改進了通報格式。
3、若是寵物打破控制,則警報包含寵物主人。
4、狀態條數值改為平滑著色。
5、冗餘演算法優化,提高了運行效率。
6、修正幾處小BUG。
7、其他一些完善和調整。
08-05-14:
1、新的設置界面(如圖):更易於上手的操作,更詳細的警報設定;
2、狀態條上Shift+左鍵現在改為新增的Buff檢查功能;
3、修正幾處個別情況下出現的BUG。
08-05-05:
1、增加ZS成功反射法術的通報,歸於TANK血量開關控制;
2、修正一處罕見情況下的報錯;
3、其他一些完善和調整。
08-04-07:
1、修正了一些問題,諸如免疫報為抵抗;
2、報警文字:
- 增加2.4新支持的圖形化圖標;
- 去除了原「注意!」的前綴
3、對於打某些怪物需要一直刷羊的戰術,開羊警報現在基本上不會再持續刷屏;
4、內存清理界限默認值下調為512KB。實測表明,RAID戰中的內存佔用比以前大為優化,個人建議設定為400~800KB即可。
5、其他一些修正和功能調整。
08-04-03:
1、全面支持CWOW2.4
2、RAID戰的內存佔用現在更少了。建議內存清理界限適當調低
3、取消了戰斗距離設定。(BLZ已經把2.4游戲默認的戰斗距離調整為150碼)
4、其他一些修正和功能調整。
Milky、癲瘋大寶、癲瘋長的高、阿斯之光、罡霹、等協助進行測試,特此致謝。
由於2.4戰斗事件的全面改變,對RaidAlerter的影響有好也有壞,目前已知的有
- LR標記現在又能報很遠距離了,並且能報是哪個LR上的標記。
- 開羊通報,現在只能報技能開羊,若是平砍開羊則無據可查。估計是2.4戰斗事件設計的缺陷...
08-03-28:
1、增加目標鎖定檢查:
- MT目標鎖定檢查,熱鍵Alt+左鍵(此熱鍵原為PvP檢查,使用頻率較低,現取消,需時可用/ral pvp命令)
- 命令:/ral tc 職業,可檢查職業目標鎖定。如/ral tc 法師 或 /ral tc FS
2、滑鼠懸停於狀態條時不再導致畫面幀數持續降低
3、修正個別玩家的mod錯誤
4、其他一些調整
08-03-23:
1、改善了RAID戰中的資源佔用。
2、增加增強葯劑檢查功能,公布檢查的組合鍵為Alt+右鍵(原合劑檢查仍為Ctrl+右鍵)。
3、增加RAID戰斗計時功能(見新圖)。
4、系統資源佔用顯示,現在默認關閉。需者可使用命令開啟。
5、OT密語通知:戰斗中將自動屏蔽<BWS>的機器人回復,除非你啟用了顯示發送。
6、其他一些完善和優化調整。
08-03-11:
1、增加了合劑檢查功能,可通過狀態條新增的組合鍵或者命令/ral hjjc或/ral cb公布。
2、更多的狀態條組合鍵操作,方便公布各種檢查結果。
3、完善開羊通報:現在包括怪物的技能解羊。
4、其他一些完善和優化調整。
08-01-18:
1、增加戰士盾牆、破釜沉舟技能的通報。此功能受TANK血量開關控制。
ps:善於運用宏通知的ZS實在不多...思考再三還是決定再增加此功能...
2、增加玩家生命危急自動喊話功能(/ral myhp):當玩家自身血量過低(默認30%)時自動喊話請求治療。
- 出於某些考慮,此功能只接受命令/ral myhp開關。進游戲時均默認為關閉,且退出遊戲後不保存設置。
- 自身需屬於團隊模式設置的正常隊員。
- /ral myhp <數值>可設定界限,比如/ral myhp 50即設定為低於50%HP自動喊話。
08-01-08:
1、修正了新增功能在特定情況下可能會出現的一些小問題。
2、調整了打破控制技能的報警聲音以和TANK血量危急聲音相區分。
3、5人小隊的Boss血量通報功能:考慮到5人FB的Boss戰持續時間的確很短,根據反饋意見,調整如下:
- 間隔通報血量報警間隔調整為20%
- 逐一通報界限固定為5%,不再受選項控制
4、重新修訂了包內的「RaidAlerter說明.txt」文件。鑒於一些UI站點經常轉載不完整,現聲明:
- 相關截圖和源文件以.TOC文件里註明的原始URL發布的為准
- 插件說明以包內文件「RaidAlerter說明.txt」為准
08-01-06:
1、在開羊通報的基礎上,進一步增加了打破控制技能的通報:MS鎖、XD睡,均由「魔法解除」開關控制。
2、增加了誤導通報功能。原「獵人標記」開關改名為「獵人標記和誤導」。
少爺西門、妖月獵手協助完成了誤導測試,特此致謝。
3、現在和修改戰斗記錄格式的Recount插件能正常共同工作了,感謝ICEのSUN提供技術支持。
由於FixLogStrings演算法的一致性,SW Stats未再做測試。
08-01-04:
1、新增開羊通報。誰動了我的羊?冒失鬼將無處藏身。限於游戲設定,只能監視在變羊范圍內的羊(≤30碼)。
原選項「魔法驅散」現在更名為「魔法解除」。打羊屬於怪物的變形魔法被解除,歸於此開關控制。
2、無L或A許可權的玩家,現在仍然能在本機看到報警訊息。
3、當隊伍中有多人啟用RaidAlerter時,會自動選擇一玩家作為報警發送方,避免重復報警刷屏現象。
4、增加了RAID人數的選項設定(如圖):替補成員不再影響警報和實時數據。
比如,設定為25人團隊模式,那麼1-5隊屬於正常隊員,其他則被判定為替補。
5、其他一些修正和調整。
大支懶葩、罡霹參與了同步測試,特此致謝。
07-12-06:
1、增加QS的嘲諷抵抗判定,感謝[華麗的瘋狂]提供戰斗記錄;
2、5人副本的血量和OT警報現在排除以下72級的精英小怪:
- 風暴鍛鑄護衛者,生態船
- 黑翼龍獸,禁魔監獄
個人精力有限,歡迎大家提供有必要的排除數據:副本名、怪物的准確名稱
3、修正控制警報有時過於頻繁的問題。
07-11-25:
1、增加熊D的嘲諷抵抗判定;
2、嘗試修正個別玩家使用快捷鍵觀察出現的nil錯誤;
3、增加了幾個自己法術被抵抗的屏幕提示。
07-11-24修改說明:
1、修正靈魂石數量有時不能及時更新的問題;
2、在游戲ESC主菜單的按鍵設置里增加了觀察目標等設定(如圖)。現在觀察裝備和天賦是經常行為,綁定個快捷鍵會
比較方便。
07-11-19修改說明:
1、TOC版本已更改為2.3版;
2、狀態條現在不再屬於小地圖按鈕類型;
3、警報前綴已改為較溫和的「**注意!...」
4、一些問題修正和調整。
07-10-08修改說明:
1、修正極個別情況下血量危急警報會不斷刷屏的問題
2、修正不報自己做最後擊殺的問題
3、修正非LA許可權時狀態條提示的靈魂石數始終顯示為0的錯誤
07-10-02修改說明:
1、更改版本號以適應最新的WOW版本2.2;
2、增加了FS的變形抵抗和反制抵抗通報;
3、5人小隊模塊:
- 增加OT警報和控制警報;
- 增加72級怪物血量通報(主要針對70和英雄副本Boss);
- 大多數警報現在受相應選項開關控制
4、其他一些調整和修正。
07-08-10修改說明:
1、由於新oRA2的TANK表名稱已更改,之前檢測不到oRA2的TANK設定,現已修正。
2、增加內存自動清理界限的選項設置,默認界限1024K,增大此設置可以降低內存自動清理頻率。
個人建議:≤1G內存設定為1000-2000K,1G以上內存建議2000-4000K。
3、全面啟用內存自動清理優化機制:內存佔用超過界限則自動啟動清理。
- RAID:僅在戰斗結束時啟用
- 非RAID:SOLO或小隊狀態,僅在非戰斗狀態時啟用
**由於個別插件(已確認的比如Auctioneer)會導致RaidAlerter內存在非RAID狀態也較快增長,故而決定全面啟用。
4、調整了Boss血量通報功能。
07-08-06修改說明:本次修改主要是改寫代碼以優化資源佔用
1、大幅減少狀態條和監測報警功能的CPU和內存消耗
2、根據個人設置注冊和注銷Event,去除了部分冗餘事件
3、改進Boss事件如OT警報、血量通報相關演算法。
廢除原表使用的龐大數據,所需Boss列表由當次RAID自動收集。
這樣既可節約資源並能適應TBC及其以後的未知BOSS。
4、改進狀態條滑鼠懸停提示(如圖)
- 增加團隊狀態下的到位和PvP檢測簡報(詳細報告用Shift+左鍵或者/ral cp|pvp命令)
- 增加系統資源佔用顯示:顯示內存和CPU佔用狀況。
CPU佔用若是第一次使用需鍵入/ral cpustart開啟。開啟後可能會略微影響系統性能。
CPU佔用只能提供「佔用CPU時間/秒」格式供參考,此參數並非習慣上的百分比
- 滑鼠懸停時每3秒自動刷新
5、新增內存自動清理優化機制
由於在L或A狀態中RaidAlerter內存增長較快,故而此機制僅在RAID狀態結束戰斗時啟用。
因此,在有的RAID戰結束時,畫面有時可能會略微卡一下。
由於是在戰斗結束,應該不會有人介意這么卡一下吧:)
也可以隨時在狀態條上按Shift+右鍵強制進行清理。
6、其他一些調整和優化。
盡管資源佔用已優化,但仍然建議及時關閉不需要的報警功能尤其是電腦性能稍差的玩家。
關於獵人標記過遠不報的問題,已基本確認是因為CombatLogRangeCreature定義失效導致;目前無法解決。
其他如嘲諷抵抗、打斷等仍然可正常設定警報距離。
07-07-05修改說明:
1、靈魂石檢測通報功能現已正常。
2、Boss血量通報功能現已修復,工作正常。(之前為何失效?實在百思不得其解...)
3、增加命令:到位檢測/ral cp;PvP檢測/ral pvp。或者直接用Shift+左鍵點擊狀態條一次性公布檢測結果。
戰斗距離問題目前仍未解決,過遠的警報無法觸發(比如獵人標記了遠方的怪現在無法觸發標記警報)。期望高手給予指點...
07-06-27修改說明:
修改為TBC版本,小隊模塊和團隊模塊經初步測試,無錯。
戰斗距離問題目前尚未解決,過遠的警報無法觸發。TBC貌似對戰斗記錄限制了距離不能增大?待求證...
http://wowui.owan.com/html/AddOns/3/2/20070806/396.html