流星蝴蝶剑任务增强补丁 v3.15
( 真武林江湖群侠传 出品)
该版本以下功能适用于 1.07/1.08/9.07/9.08 版本
请不要修改该文件,避免运行崩溃!
1
增加的API 功能函数:
1. 支持 任务PST和地图PST 通信,任务PST通过函数可直接控制地图机关变化。
2. 支持 任务PST直接函数控制 语音对白,播放语音文件。每句对白是单独语音文件,自由控制播放时间点。
3. 支持 任务等级进度等保存功能, 不限Meteor.exe版本, 比如9.07 也支持保存功能. (提供2种保存函数)
3. 支持 任务PST直接切换玩家的武器。(EnableSwitchWeapon后, 小键盘 4/8/6/2 默认也可切换)
4. 支持 任务PST直接移动玩家到任意地点
5. 支持 任务PST直接指定玩家使用任意招式。
6. 支持 任务PST直接显示当前使用武器的招式表, 游戏中出现半透明窗口 (EnableSwitchWeapon后 小键盘 5 默认也可切换)
7. 支持 任务PST接收游戏中键盘1-9按键事件, 方便任务PST获得用户选择(1/2..../9)进行多条件开放剧情编写 (键盘事件 9001-9009)
8. 支持 任务PST直接切换当前玩家使用的人物模型。
9. 支持 任务PST禁用ESC键,防止玩家跳过某些桥段。
10.支持 语音自动合成, 对白直接转声音. (声音质量取决于采用的TTS语音引擎,TBD)
基本函数使用简介:
ZMJAI_SendEvent(1, 0, 0, 0); //播放第1句话, 立即播放
ZMJAI_SendEvent(1, 1, 7, 1); //播放第2句话,7秒后播放, 1表示结束此次声音事件请求(使用1表示AI引擎会立即处理)
ZMJAI_SendEvent(0, 10, 3, 1); //启动机关10, 3秒后启动, 1表示结束此次机关事件请求(使用1表示AI引擎会立即处理)
ZMJAI_GameSave(int score, int scence, int val1, int val2, int val3, int val4) //保存本关得分, 以及其余5个用户自定义意义参数 到 pst文件
ZMJAI_SwitchWeapon(8); //切换或通知SDK, 主角主武器为8(刀)
ZMJAI_MakePose(239); //让主角使用 239这一招,双刺 左右A
ZMJAI_MoveLocat(8, 9, 10); //把主角移动到 坐标为8,9,10的地点去。
ZMJAI_SwitchHero(19); //使用p19 model 代替当前的 model(一般默认是p0 model)
ZMJAI_EnableSwitchWeapon(0); //0 : 不允许使用小键盘(4/8/6/2 和 5) 切换武器和显示招式表, 1: 允许切换 (按 F12+小键盘5 也可以开关)
ZMJAI_EnableDumpstate(0); //仅供调试bug使用, 0 : 不生成dumpstate文件, 1: 生成, (会自动记录日志供调试,可能会导致系统卡顿)
ZMJAI_ShowSkillBook(6); //游戏中出现半透明窗口显示主角当前使用武器的招式秘笈, -1则表示AI猜测当前武器(用过ZMJAI_SwitchWeapon或小键盘)
//小键盘5 也可以弹出秘笈窗口,(该功能默认关闭。 调试可用 F11+小键盘5 来弹出, 依然需要先用 F12+小键盘5 先使能)
//低版本图像补丁与该功能冲突,高版本图像补丁则无问题(2019年6月后)
ZMJAI_EnableESCkey(0); //0:不允许玩家使用ESC按键跳过剧情 1:允许玩家使用ESC按键跳过剧情
ZMJAI_SpeakVoice("Liang", "真武林",2, 1);//播放这句话,Liang表示男声/Liang (Lily表示女声Lily, ...), 1表示女声, 2秒后开始发声, 1表示结束此次声音事件请求,
//使用TTS语音引擎合成来说话,必须安装TTS引擎,默认是 NeoSpeech, 质量比较高.默认该功能关闭, 可通过ZMJAI_SendEvent 播放高质量音频替代。
########################### MOD 制作简介 ###########################
再也不用设计NPC吃道具来控制地图机关了,
再也不用全程看哑巴字幕了,
再也不用全程使用同一个主角了,
再也不用全程使用同一把武器了,
再也不用切换出来看招式表了,
再也不能强制ESC跳过剧情桥段了,
添加相关文件到流星目录:
1. AIHero32.dll
2. UIHero32.dll
3. PScriptLib\zmjeve.pst
4. default.res
如何使能补丁:
二进制打开Meteor.exe, 搜索AVIFile32.dll, 替换成AIHero32.dll 即可
######################## 如何编写剧本:
为了保证游戏效率,只有任务PST和地图PST 都添加了如下代码,
补丁才工作起来。
任务PST: sn01_.pst
///////////////////////////////////////////////////////////////////
ZMJAI_OnEvent(int zmjEvt)
{
//Say(1, "Recv event : ", zmjEvt);
return zmjEvt-0;
}
#include "..\PScriptLib\zmjeve.pst"
OnUpdate()
{
int evt = ZMJAI_OnHandler();
// ... 收到事件后该干嘛干嘛
// ... evt 9001-9009 是专指用户按了键盘 1-9
// ... 其他事件主要是自己编写的任务和地图互传事件
// ... 调用 ZMJAI_XXX 做你想做的吧 !
}
///////////////////////////////////////////////////////////////////
地图PST:sn01.pst
///////////////////////////////////////////////////////////////////
ZMJAI_OnEvent(int zmjEvt)
{
if(zmjEvt == -1)
{
return -1;
}
if(zmjEvt == 10)
{
Misc("transfer", 1, "D_wpBBox01"); // ... 做你想做的吧 !
return 11; // 11会传给 任务PST
}
if(zmjEvt == 12)
{
int i;
for(i=1; i<=32; i++)
{
StoneOnAttack(i, 1000); // ... 做你想做的吧 !
}
return 13; // 13会传给 任务PST
}
return -1;
}
#include "..\PScriptLib\zmjeve.pst"
///////////////////////////////////////////////////////////////////
######################## 对白语音定义:sound\zmjAIvoice.lst
///////////////////////////////////////////////////////////////////
zmj1.mp3
zmj2.mp3
zmj3.mp3
zmj4.mp3
zmj5.mp3
...
音频名是可以随意指定编写,
ZMJAI_SendEvent(1, 0, 0, 0); //播放第1句话(zmj1.mp3), 立即播放
///////////////////////////////////////////////////////////////////
######################## 如何保存存档:
ZMJAI_GameSave 或 ZMJAI_GameEncryptSave/ZMJAI_GameEncryptLoad
1. PScriptLib\zmjcfg.pst 该文件自动生成,可以直接包含在剧情PST里,函数调用保存的数据。
2. Level\usrhero.sav 该文件是加密保存存档,最多保存120个数据,需要调用save/load函数
其他更多相关功能以及API使用方法,请参考附带的 演示demo 关卡 (钟乳洞)