流星蝴蝶剑单机版是我比较喜欢的一款武侠竞技游戏,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锤子 反正不能为0int PlayerWeapon2 = 14; //角色负武器int PlayerHP = 2000; //角色血量 除以10计算 如要改成9999血设置为99990
关卡事件及无限气代码
//进入关卡时执行的事件OnStart(){AddNPC("npc05_01"); //如添加NPC}//关卡游戏中的更新事件,更新时间估计不到一秒OnUpdate(){//关卡中的主要故事逻辑均在此事件中,我们的作弊代码也要加在次事件中int player = GetChar("player"); //获取当前游戏角色IDif (player < 0){return 0; //角色ID不存在 则退出}//无限气作弊代码,一定要加在上述代码下面,因为需要角色IDif(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的敌方IDint GetLeader(int id) //取得指定ID的头领IDint 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) //加入NPCint RemoveNPC(int id) //删除指定ID的NPCint 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
用好以上函数,基本可以自己编写游戏关卡剧情和逻辑