导航:首页 > 源码编译 > buffevent源码

buffevent源码

发布时间:2022-12-11 19:56:35

① 求剑网三各种宏命令语句,如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

阅读全文

与buffevent源码相关的资料

热点内容
单片机高电平驱动 浏览:115
ios多选文件夹 浏览:907
加强行车调度命令管理 浏览:241
服务器已禁用什么意思 浏览:148
部队命令回复 浏览:753
神奇宝贝服务器地图怎么设置 浏览:380
加密算法输出固定长度 浏览:862
程序员去重庆还是武汉 浏览:121
服务器如何撤销网页登录限制 浏览:980
微信公众平台php开发视频教程 浏览:628
怎么看苹果授权绑定的app 浏览:255
压缩机单级压缩比 浏览:380
linux测试php 浏览:971
什么时候梁旁边需要加密箍筋 浏览:40
微信清粉软件源码 浏览:717
matlabdoc命令 浏览:550
如何去ping服务器 浏览:75
ecshop安装php55 浏览:817
javaword库 浏览:958
php图片路径数据库中 浏览:488