流星蝴蝶剑单机版是我比较喜欢的一款武侠竞技游戏,10几年前和CS一样在各大对战平台非常火爆,但最终这款游戏败给了外挂。
今天安装了个流星蝴蝶剑1.08单机版试下新鼠标,长时间没玩剧情关卡打起来有点吃力,最终在金华城我有了作弊的想法。网上找了一番无限气和无限血的外挂竟没找到能用的。后来发现了个改关卡脚本的方法。
流星蝴蝶剑的人物、场景、动作都是封装好的。因为关卡剧情的灵活需要,开发团队把部分的函数和事件直接暴露给脚本使用,至此我们就可以通过改动关卡脚本文件来实现自己的需求。
关卡脚本文件位于软件安装目录的Level目录下,以下为对应1-9关的文件名
sn14_.pst 炎硫岛
sn01_.pst 锺乳洞
sn03_.pst 一线天
sn13_.pst 金华城
sn04_.pst 炽雪城
sn15_.pst 飞鹏堡
sn05_.pst 皇天城
sn09_.pst 决死阵
sn10_.pst 炼铁狱
关卡脚本代码配置说明
int Rule = 4; //1盟主,2截镖,3守城,4暗杀,5死斗
int RoundTime = 15; //游戏的时间 单位:分钟
int PlayerSpawn = 249; //角色游戏开始时出现的地方
int PlayerSpawnDir = 90; //角色出现时面对的方向 根据旋转角度计算(最大值为360)
int PlayerWeapon = 24; //角色出场携带的正武器 5=匕首 6剑 7枪 8刀 9锤子 反正不能为0
int PlayerWeapon2 = 14; //角色负武器
int PlayerHP = 2000; //角色血量 除以10计算 如要改成9999血设置为99990
关卡事件及无限气代码
//进入关卡时执行的事件
OnStart()
{
AddNPC("npc05_01"); //如添加NPC
}
//关卡游戏中的更新事件,更新时间估计不到一秒
OnUpdate()
{
//关卡中的主要故事逻辑均在此事件中,我们的作弊代码也要加在次事件中
int player = GetChar("player"); //获取当前游戏角色ID
if (player < 0)
{
return 0; //角色ID不存在 则退出
}
//无限气作弊代码,一定要加在上述代码下面,因为需要角色ID
if(GetAnger(player)<100) //角色气槽<100
{
PlayerPerform("use",8); //设置角色气满
}
}
其它函数说明
int GetChar(string name) //获取角色ID,可接受参数player、vip、enemyvip、flag、X | 依次:当前角色、队长、敌方队长、标志、X指定对象
int GetAnyChar(string name) //取得该名称的对象ID号
int GetSelf(int self) //取得该对象自身ID号
int GetHP(int id) //获取HP值
int GetMaxHP(int id) //获取MAX HP值
int GetTeam(int id) //取得指定ID号对象的队伍
int GetEnemy(int id) //取得指定ID的敌方ID
int GetLeader(int id) //取得指定ID的头领ID
int GetGameTime() //取得游戏时间秒数
int EnableWaypoints(int a, int b, ...) //激活路径点
int DisableWaypoints(int a, int b, ...) //去活路径点
int ChangeBehavior(int id, string behavior, ...) //改变对象ID的行动状态
// behavior="wait", "idle", "run", "follow", "patrol", "attacktarget", "kill" | 依次:等待、闲、跑动、跟随、路径跑(x,y,z)、攻击物体、攻击NPC或玩家(第三参数指定)
int Perform(int id, string pose, ...) //对象ID执行指定动作
//pose="faceto", "say", "pause", "aggress", "jump", "attack", "guard", "crouch", "use" | 依次:面对、说、暂停、同意、跳跃、攻击、守卫、卧倒、使用
int PlayerPerform(int id, string pose, ...) //玩家执行操作
// pose="say", "pause", "use", "block" 说、停、用、锁定
int StopPerform(int id) //停止操作
int IsPerforming(int id) //是否正在操作中
int SetTarget(int idx, string type, ...)
// type="char", "waypoint", "flag", "safe" 角色、点、镖、护
int Distance(int idx1, int idx2) //ID间的距离,用来做精确跳跃、攻击、闪躲好
int Rand(int n) //随机
int AddNPC(string npc) //加入NPC
int RemoveNPC(int id) //删除指定ID的NPC
int UpdateAIAttrib(id) //更新NPC的AI属性
int Call(int id, string functionName, param1, param2, ...) //呼叫指定ID对象执行函数
int Say(id, a, b, c, ...) //指定ID说话,里面加参数和固定字符串
int Print(a, b, c, ...) //输出提示
GameOver(int state) //游戏结束 (胜、平、负)
// 未用函数
// AttackGoal FastLook GetItem AvoidObstacle Dodge Kill Combat RandomRun Follow Patrol GotoGoal Wait Init
用好以上函数,基本可以自己编写游戏关卡剧情和逻辑