找回密码
 点一下
查看: 1502|回复: 11

[转自某R的]JAPI添加本地函数 -- 文件操作,系统日期,多类型音乐播放(修正文件读写实数错误)

[复制链接]
发表于 2008-6-25 06:17:45 | 显示全部楼层 |阅读模式
使用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
虽然不怎么实用..但个人还是比较感兴趣..所以转过来了
发表于 2008-6-25 10:02:10 | 显示全部楼层
回复

使用道具 举报

发表于 2008-6-25 10:06:00 | 显示全部楼层
这里没发过么。。。。
回复

使用道具 举报

发表于 2008-6-25 10:16:17 | 显示全部楼层
其实偶不想占沙发而已...
回复

使用道具 举报

发表于 2008-6-25 10:33:10 | 显示全部楼层
好长………………
回复

使用道具 举报

发表于 2008-6-25 10:47:52 | 显示全部楼层
RahXephon本人
貌似有发过?还带图的?
回复

使用道具 举报

发表于 2008-6-25 12:00:17 | 显示全部楼层
沉默在某无人的角落
回复

使用道具 举报

发表于 2008-6-25 13:05:46 | 显示全部楼层
這種東西作為有趣的東西自己玩玩研究還行,咩有實用性。
不推廣只能自己YY別人不能玩。
推廣了就有安全問題,版本問題等諸多問題。
回复

使用道具 举报

 楼主| 发表于 2008-6-25 14:35:04 | 显示全部楼层
呵呵。。。已经考虑到了 所以作为个人爱好研究研究。。。
回复

使用道具 举报

发表于 2008-6-25 20:10:16 | 显示全部楼层
引用第4楼黑暗灵蛇于2008-06-25 10:33发表的 :
好长………………

确实好长,有同感。
回复

使用道具 举报

发表于 2008-6-25 20:12:18 | 显示全部楼层
直接回复!
回复

使用道具 举报

发表于 2008-6-26 00:20:39 | 显示全部楼层
不! 这个.....如果能够播放所有格式的东西的话那么声音软件处理起来就容易多了!!!!
但是推广性....谁可以把全部压成一个SETUP.EXE 那么 呼呼  召唤EVA剑心!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 06:50 , Processed in 0.031680 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表