• 旧版本金庸群侠传3D新Unity重置修复版入门-lua”脚本“


    金庸3DUnity重置入门系列文章

    金庸3dUnity重置入门 - lua 语法

    金庸3dUnity重置入门 - UniTask插件

    金庸3dUnity重置入门 - Cinemachine 动画

    金庸3dUnity重置入门 - 大世界实现方案

    金庸3dUnity重置入门 - 素材极限压缩

    (部分可能放到付费博客)

    2022年底~2023年初

    2021年中开始的项目,到现在只要从Github下载,即是完全可运行版本,虽然整个项目有点大,素材什么的总共 几个G吧,但还是很靠谱的一个项目,稳定,迭代足够

    (后来发现,项目应该从2018~2019即启动,还真要几年时间才能有这个体量,诞生在四川,也就是成都,有点唏嘘,没想到在广州绝迹的端游反而在四川有点生命力,再没落下去,只能去西安,西安去完没地方去,只能去越南了)

    035b35a456b3f81cd212604f6d140bd1.png

    开头动画比较复杂,只需要修改 lua ”脚本“

    个人不建议新手学这套Lua,真正实战的Lua语法和应用可完全是2回事,

    就好像少林长拳和九阳真经练到9重的区别。

    练十年长拳真的只能强身健体,成了火头工或者扫地僧

    一些基本命令所在目录, BuildResource/Lua 

    一些事件、故事脚本所在目录, Mods/JYX2/Lua

    修改,开头智冠动画 ka691”脚本“:

    1. --ka691.lua
    2. ----------------------------
    3. SetRoleFace(1);
    4. jyx2_Wait(2.4) --等待2.4秒后再播放黑屏幕,
    5. -- jyx2_SetTimelineSpeed(3); --播放速度X3
    6. -- jyx2_PlayTimeline("[Timeline]ka691_小虾米居_醒来", 0, false);
    7. -- jyx2_Wait(1);
    8. -- Talk(0, "啊!头好痛呀!是不是最近K书K太凶了,所以有点恍惚了……我记得我正在玩“金庸群侠传”啊!怎么突然就睡着了。管他的,我得赶紧起来玩,这游戏可是等了半年多才玩到的,非第一个破关不可。", "talkname0", 1);
    9. -- PlayAnimation(-1, 6890, 6932);
    10. -- jyx2_PlayTimeline("[Timeline]ka691_小虾米居_站起", 0, false);
    11. -- jyx2_Wait(10);
    12. -- Talk(0, "咦!我的电脑呢?", "talkname0", 1);
    13. -- PlayAnimation(-1, 6934, 6986);
    14. -- jyx2_PlayTimeline("[Timeline]ka691_小虾米居_迷惑", 0, false);
    15. -- jyx2_Wait(10);
    16. -- Talk(0, "奇怪,我什么时候换了衣服的,我都不知道。哎!还是古装的?", "talkname0", 1);
    17. -- PlayAnimation(-1, 6988, 7000);
    18. -- PlayAnimation(-1, 6988, 7000);
    19. -- Talk(114, "好了,不能再说下去了,游戏设计者叮咛过我,话不能说太多,否则会犯了游戏的大忌,俗语说……“好GAME不多话”。BYE!BYE!", "talkname114", 0);
    20. DarkScence(); --增加过场(黑场)
    21. -- jyx2_StopTimeline("[Timeline]ka691_小虾米居_醒来");
    22. -- jyx2_StopTimeline("[Timeline]ka691_小虾米居_站起");
    23. -- jyx2_StopTimeline("[Timeline]ka691_小虾米居_迷惑");
    24. -- jyx2_StopTimeline("[Timeline]ka691_小虾米居_四处观察");
    25. -- jyx2_StopTimeline("[Timeline]ka691_小虾米居_转身");
    26. -- jyx2_StopTimeline("[Timeline]ka691_小虾米居_软体娃娃跳起");
    27. -- jyx2_StopTimeline("[Timeline]ka691_小虾米居_软体娃娃打招呼");
    28. -- jyx2_SetTimelineSpeed(1); --播放速度还原
    29. -- SetRoleFace(0); --修正朝向角度
    30. LightScence(); --增加过场(黑场还原)

    修改, 在开头动画一开始旁边的箱子事件 ka695 ”脚本“:

    1. --ka695.lua
    2. ----------------------------
    3. --这个代码应该是保证宝箱只打开一次,暂时屏蔽,因为哥需要多次触发宝箱(录屏几次)
    4. --ModifyEvent(-2, -2, -2, -2, -1, -1, -1, 2492, 2492, 2492, -2, -2, -2);
    5. AddItem(1, 3);
    6. Talk(500, "刚才调整了开头动画,使用的即是Lua脚本,但个人不建议新手学这套Lua,真正实战的Lua语法和应用可完全是2回事,就好像少林长拳和九阳真经练到9重的区别。", "talkname200", 2)
    7. Talk(0,"刚才写Lua脚本,每个逻辑结束时也没有写分号;个人是“逍遥派”,不写分号派,但也不想破坏原作者的规范,后续不会在Lua脚本上深究了","",2)
    8. Talk(0,"总结一下就是:github下载源码;Unity2020.3打开;修改Lua脚本(Mode/JYX2/Lua/691.lua;File->BuildSettings找到启动界面;运行即可","",5)
    9. do return end;

    或者完全不管,直接使用GM工具

    1. case "zuoyouhubo": //主角学会左右互搏
    2. {
    3. GameRuntimeData.Instance.Player.Zuoyouhubo = int.Parse(paras[1]);
    4. StoryEngine.DisplayPopInfo(
    5. "主角设置左右互搏:" + (GameRuntimeData.Instance.Player.Zuoyouhubo == 1 ? "开" : "关"));
    6. break;
    7. }
    8. case "transportwei":
    9. {
    10. TransportWei();
    11. break;
    12. }
    13. default:
    14. Debug.Log("没有识别的指令,将执行lua替代:" + cmd);
    15. string luaContent = cmd;
    16. Jyx2.LuaExecutor.ExecuteLuaAsync(luaContent);
    17. break;

    自定义GM工具(”脚本“,程序实现)

    因为经常碰到(也可能是个人原因)提示已经在执行事件,其他任何交互功能(事件)变得不可执行了,所以需要一个扩展调试功能:查看当前正在执行什么事件。

    原理,就是修改开头动画的 ka691.lua”脚本“即可,因为只要你使用jx 2的默认mod,则必然会执行开头动画,也能使用 eventlua方法了,

    1. SetRoleFace(1);
    2. jyx2_Wait(2.4)
    3. function eventlua( ... )
    4. print("eve")
    5. end
    6. -- jyx2_SetTimelineSpeed(3); --播放速度X3
    7. -- jyx2_PlayTimeline("[Timeline]ka691_小虾米居_醒来", 0, false);

     使用方法:只要在对话框输入:eventlua(),点执行

    流个尾巴(TODO)

    1.不重新启动游戏,直接执行修改lua文件并马上触发执行

    2.Xlua自动转换c#代码 + Profiler + 断点调试

    3.在事件脚本 ka691等等中注入lua

    4.短,中,和长3个故事脚本

  • 相关阅读:
    Linux项目自动化构建工具:make/Makefile
    leetcode_1155 掷骰子等于目标和的方法数
    【附源码】计算机毕业设计JAVA合租吧管理系统
    2022世界杯结果预测,简单AI模型最有效?附代码!
    mysql 查询性能分析
    QWidget | Qt::WindowType 枚举的取值及意义&QFlags 模板类详解
    ubuntu20.04部署ntp服务器ntpd(ntpdate )
    【Transformer系列】关于Transformer的若干问题FAQ解析
    Windows编程-进程
    Java 内置包装类——System类详解
  • 原文地址:https://blog.csdn.net/avi9111/article/details/128199896