|
使用JAPI为WAR3添加局域网下也能进行的文件读写操作的本地函数
新注意:用LOADER启动的WE或WAR3不能同时存在,否则将会有一个无法使用添加的函数
又更新点函数,可以让WAR3播放任意格式的音乐(只要机器上有相应解码器)具体见附件
更新点函数,还是帮暗月做的,可以获得当前系统日期,时间,具体见附件(包含文件操作函数在内)
(什么是JAPI?这东西实在强大,是国外某高手写的HOOKWAR3函数的库文件,这东西能让你向WAR3添加任何你想要的功能,前不久U9还说要用这个将WAR3变成网游...--!,不过目前能找到使用说明的版本还是那个1.0,N年前的东西了,我在适用过程中发现BUG无数,不过还能凑合用,目前最好应该是和NEWGENPACK一起的那个版本,可惜没说明,还没搞明白怎么用...以后再说了- -)
这东西以前C-A写过,我这个和他的差不多,基本函数都一样,如果你感觉没搞懂他那个的话可以来试试我这个
发布第二版,使用最新的NEWGENPACK的JAPI(没有函数说明,压栈方式都改了难怪不能直接替换,费了半天才自己琢磨出来)
现在已经不会出现无法HOOK造成无法游戏的问题了,只要你的函数声明没错就一定能运行,依然存在的BUG是REAL无法存取(问题已解决),明天或晚些时候会写新的JAPI使用说明填补这个空白(网上只能找到1.00的,就是白银翻译的那篇,过时太久了)
新的版本完全摆脱JAPI的native文件夹限制,只需要自己写DLL放在哪都可以了.......
可以忽略的内容(注意:JAPI的最严重BUG就可能是HOOK不上--,也就是进入游戏后因为函数没能正确添加而造成无法游戏,这种情况下需要完全退出WAR3,重新进入才行,我测试最多时重新进入4次才成功--,因此不要看见演示图无法游戏或使用这些函数自己写的地图无法游戏就认为这东西完全无法使用,有耐心才行--...,等我搞明白新版本的JAPI估计就能解决这问题了- -)版本1的BUG,现在没了
使用读写函数时请向地图导入附件中的common.j,附件中的补丁要求放在WAR3目录下,而且注册表要完整,进入游戏和WE都要使用附件中的LOADER程序才行
综上所述,个人始终感觉这东西无法推广,也没有推广的意义(不知道U9用这个把WAR3变网游后会怎么样),鉴于暗月的要求还是放出来了
以下是基本说明:
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
JAPI添加本地函数 -- 基本文件操作函数 -- RahXephon
和SOAR CHIN的文件读写补丁基本一样,使用时将下列函数添加到common.j当中,导入地图中改名为scripts\common.j,然后在地图中使用下列函数即可(在说明文件夹下有整合好的),当然进入游戏和WE都要使用目录下的loader程序
基本功能:可以实现在局域网游戏下进行文件的读写操作
//执行打开文件的操作,并返回文件句柄(fileid),filename为目标文件名,不存在的情况下自动生成(不使用路径情况下,默认为WAR3目录)
native War3FileOpen takes string filename returns integer
//执行关闭文件操作,释放文件句柄(fileid),关闭后文件不可被读写,fileid为War3FileOpen的返回值
native War3FileClose takes integer fileid returns nothing
//执行文件读取整数操作,返回值为当前文件读写指针所指向的整数
native War3ReadInt takes integer fileid returns integer
//执行文件读取实数操作,返回值为当前文件读写指针所指向的实数
native War3ReadReal takes integer fileid returns real
//执行文件读取字符串操作,返回值为当前文件读写指针所指向的字符串
native War3ReadString takes integer fileid returns string
//执行文件写入整数操作,value为待写入数据,写入前文件读写指针所指向的位置,返回值为1则操作成功
native War3WriteInt takes integer fileid, integer value returns integer
//执行文件写入实数操作,value为待写入数据,写入前文件读写指针所指向的位置,返回值为1则操作成功
native War3WriteReal takes integer fileid, real value returns integer
//执行文件写入字符串操作,value为待写入数据,写入前文件读写指针所指向的位置,返回值为1则操作成功
native War3WriteString takes integer fileid, string value returns integer
//执行移动当前文件读写指针位置操作,offset为偏移量,startpos为相对起始点(0:文件开始,1:当前指针位置,2:文件末尾),返回值为操作后指针位置
native War3FileSeek takes integer fileid, integer offset, integer startpos returns integer
//执行文件删除操作,删除指定文件filename,返回值为1则操作成功
native War3FileDelete takes string filename returns integer
在附加的演示地图中简单的写了几个封装函数,可以较简单的使用以上函数,同时也可作为函数使用范例
以上函数中和实数(real)类型相关的函数工作可能不正常,目前原因未知,初步估计和JAPI相关,有待改进
//系统日期和时间函数
native War3GetDay takes nothing returns integer //返回日
native War3GetMon takes nothing returns integer //返回月
native War3GetYear takes nothing returns integer //返回年
native War3GetSec takes nothing returns integer //返回秒
native War3GetMin takes nothing returns integer //返回分
native War3GetHour takes nothing returns integer //返回时
//音乐播放函数
native War3MusicOpen takes string musicname returns integer //打开音乐
native War3MusicPlay takes nothing returns integer //播放音乐
native War3MusicPause takes nothing returns integer //暂停音乐
native War3MusicClose takes nothing returns integer //关闭音乐
附件下在在WOW8: http://bbs.wow8.org/viewthread.php?tid=47960
虽然不怎么实用..但个人还是比较感兴趣..所以转过来了 |
|