设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
返回列表
+ 发新帖
查看: 678|回复: 0

[转载发布] 我又来发脚本了_这次发布的是一个 游戏流程管理插件

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    昨天 03:27
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    9102

    主题

    893

    回帖

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    64916
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    74941

    灌水之王

    发表于 2024-2-13 13:28:25 | 显示全部楼层 |阅读模式
    大家好啊,我是之前发 编辑大量对话的插件 和 拆分代码的工具 的新人。
    这次我又来发脚本了。

    我不知道大家是怎么管理游戏的流程的啊。。。
    我最开始是设置了几个变量和开关来管理流程。。但序章都没写完就管理不过来了。。。经常一个事件要判断N个变量+N个开关。。。又不能用复合条件,全靠if来套。。。整个事件流搞得难看得要死。。。
    所以就搞了这个插件。。。

    先简单说说使用方法吧:
    导入插件:
    注意,本插件和我之前发的消息插件一样,也依赖 "LYZ_Core" 这个插件,。或者说我的个人插件都会依赖这个。


    几个参数:
    "Flow Tree Definition"是文件名,文件放在"data/FLOW"文件夹下:

    Tab Indent,几个tab算作一次缩进。
    Space Indent,几个空格算作一次缩进
    缩进是用来判定这是哪一级流程的,非常重要。
    Max Depth是表示流程树有多深,默认为8层,虽然我至今最多只用到了3层。

    然后光说参数含义还是肯定懂不了,所以再来说说流程定义文件。长这样。
    TEXT 代码


    很典型的树状结构。缩排就是用来表示流程级别的。比如第一卷第二卷是一级流程,第一章第二章之类是二级流程,事件1事件2之类是三级流程,
    郑重提醒,缩排用的格式最好全文件统一,用tab就全用tab,用空格就全用空格,混用特别容易出错。
    深度就是最多有几级流程,比如现在这个流程树深度为3。
    所有流程都不允许以'$'开头,有可能会跟保留字段冲突。

    占位流程($):每一级流程之前都有一个名为'$'的流程,在没有设置子流程之前用于占位之用。
    流程的值(.$value):每个流程会被自动分配一个值,从上到下依次增加,占位流程的值与父流程相同。
    举个栗子,还是拿上面的流程树来说:
    这代码里面Flow是根流程,所有一级流程都是它的子流程
    JAVASCRIPT 代码


    以此类推

    常用语句:
    JAVASCRIPT 代码



    还有很多高级用法说不完,下面就是定义流程对象类型的代码片段,愿意的自己可以啃代码;
    Chapter类



    这些语句都知道了,在哪用呢:
    主要是两个地方:判断流程和设置流程


    判定(Flow的F大写):

    设置(插件指令和脚本均可,区别只是脚本只能F大写,插件指令F大小写均可):


    因为是脚本,所以均支持复合条件判定
    比如 Flow.第一卷.$contains() || Flow.第二卷第四章.$is()
    或者 Flow.第一卷.第一章.$lt() && Flow.第二卷第四章.$gt()

    另外关于如何判断游戏开始。
    游戏第一次进入时所在的流程是$.$.$.$......值为0
    所以可以像我图中那样用Flow().$v==0来判定,也可以用Flow.$is()来判定,第二种更简洁,第一种语义更明确,用哪种看喜好。

    流程发生切换的时候会自动在控制台打log方便调试。


    当前所在流程会被存档,读档时是根据名字进行索引的,所以如果只是改了流程顺序或者增加了流程存档仍然可用,但如果流程改了名字或者删除了流程,进度刚好在被改名或者删除的流程位置的存档会失效。

    其他:
    Flow对象是插件定义在全局对象上的属性,如果发生命名冲突可以通过LYZ.Flow或者LYZ.FlowManager.Flows['Main']来访问这个对象。
    插件默认只创建了一个全局流程管理对象(即Flow对象),用于管理整个游戏的流程
    但是可以用LYZ.FlowManager.MakeFlow(filename,key)来创建新的流程管理对象,每个对象各自独立。可以通过返回值或者LYZ.FlowManager.Flows[key]来获取这个对象。
    比如如果会写脚本的话可以将这东西附着在任务对象上,让任务系统也拥有流程管理能力。

    下载在这:
    [attachments]0[/attachments]
                 本帖来自P1论坛作者大钊,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg. blue/forum.php?mod=viewthread&tid=391001  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    帖子地址: 

    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-10-22 00:11 , Processed in 0.099335 second(s), 60 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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