马上登录/注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
CuStom GO教程贴[适用版本V8.4.X] 从零教会你成为一名熟练的CSG配置师
CuStomeGo最全最新教程贴 [施工完成!可喜可贺!] [2020.2.26-2020.4.9 字符统计:6188字符 统计方法:Word文件统计 ] CuStomGO由国人插件作者制作并在2016年发布到了站内最早的版本V3.0,开始长达4年的开发与扩展目前本体与其6个附属已经达到了40+任务判定,30+条件判定,语句控制等多种配置选项自定义的程度超乎想象,CSG不再是单一功能的插件,超高度的自由度用他与其他的插件连用如MM,公民2,菜单等等连用 可以制作“高端的副本”“全新的小游戏”“完美的PVP”与“自动化的剧情”甚至“插件”大大提高了RPG服务器游玩性与小游戏的丰富度
打住,怎么感觉跟在打上个年代的广告一样,自己牛皮好像吹大了.... 言归正传本次教程贴是基于CuStomGo与其相关附属的教程插件所开的帖子由于作者本身的教程文件版本更新,有一些教程实在太老了配置已经发生了改变所以我就和作者商量了一下就开始着手更新基于V8.3与其相关附属插件的教程,我会以最简单的方式给各位讲解如何从零到有的完美使用CuStomeGo配置出你想要的那一份“游戏”。
PS:以下教程为了方便将会把CuStomeGo简称为CSG
第一章:CSG基础概念与准备 在开始之前CSG需要以下几个插件作为前置当然你也可以选择不装只是会麻烦很多事情。这里我已经为大家链接好了直接点击就可以到对应贴内下载
当确认你的服务器按照好上面的插件以后,就可以打入CSG了并且你会在CSG的配置文件夹看到下面的5个文件(3个文件夹+2个YML)
>>>itemtask (储存各种定义好了的游戏脚本) | >>>lobby (储存你的队列配置) | >>>sign (储存各种定义好了的加入告示牌#目前废案中) | >>>Data.yml (玩家数据) | >>>Option.yml (CSG基础配置) |
|
你如果使用CSG会经常收到这种提示 ——游戏读取完毕 ——队列保存完毕 #那么什么是游戏?什么是队列呢? 简单来说:“饥饿游戏”“起床战争”就叫做游戏,而“饥饿游戏”“起床战争”中的“一号大厅”“二号大厅”就相当于队列。 如果比喻成副本的话可以这样说:游戏就相当于第一关这个整体,队列就相当于第一关中的地图或者大厅。 而负责这一个版块的就是lobby文件夹,在lobby文件夹以内的文件夹就是游戏文件夹而在游戏文件夹以内的就是队列文件了 文件结构:CuStomGo/lobby/游戏/队列.yml
如果你搞懂了这两个概念,那么恭喜你第一章内容毕业!如果没有搞懂也没有关系,因为不去实际用用真的很难懂,先往下看吧!
EXP:+10(10/100) 在CSG中有三大配置元素(触发器,Task,TaskController)他们负责运行CSG的各种各样的事件.脚本.设置如果是初学到这里的小伙伴没必要学会怎么使用三大元素只是做一个阅览就够了。当你学到第四章在回来看说不定更好呢。而这些CSG的配置方法和MM的怪物制作其实是一种思维,将你需要的各种各样的东西组合到一起.
触发器——各种各样脚本逻辑运行。比如击杀了Boss执行什么,玩家死亡执行什么. | Task——触发器里面的脚本指令。 | TaskController——游戏的时候各种执行,比如开始的时候执行什么,结束的时候执行什么 |
|
触发器 Trigger:
<名字>: #与MM的每个怪物的识别ID一个道理,每个名字不能一样 Type: <触发器类型> #触发器的类型,类型大全见下文 Id: #触发的对象(可以是玩家,怪物,等等),如果该触发器类型注有标签 [含ID值]则会对对象有要求 - id1 - id2 ...... Task: #Task - task1 - task2 ...... |
触发器大全 [含触发者] - 在这个Task中可以使用@p,<striker>等指向触发者。
[含ID值] -指定的方块/怪物/玩家的ID(详细见下面)
[含变量] -可以自己调控的数值(详细见下面)
|
触发器类型
| 触发器属性(和下文的 TaskController 标签相关) | 触发器解释 | BreakBlock
| [含触发者] [含ID值:指定的方块ID
| 在玩家破坏指定方块时触发,无论破坏是否成功。 | Death
| [含触发者
| 在一名玩家死亡时执行。 | DamagePlayer
| [含触发者] [含变量:本次造成的伤害量
| 在伤害一名玩家时触发。 | DamageEntity
| [含触发者] [含ID值:指定的怪物ID] [含变量:本次造成的伤害量
| 在伤害指定名字怪物时触发。 | Damaged
| [含触发者] [含变量:本次受到的伤害量
| 在玩家被伤害时触发。 | Diss
| | 在队列因外部原因被迫解散时触发。 | Interact | [含触发者][含ID值:见下方] [含变量:被交互的玩家名字
| 在一名玩家与另一名队列内玩家交互时触发。 | KillEntity
| [含触发者][含ID值:指定的怪物ID
| 在一名玩家击杀指定名字的怪物时触发。 | KillAllEntity
| [含ID值:指定的怪物ID
| 在击杀场内所有指定名字的怪物时触发。 | KillPlayer
| [含触发者
| 在击杀一名玩家时触发。 | Offline
| [含触发者
| 在玩家断开连接时触发。 | PickupItem
| [含触发者][含ID值:指定的物品ID][含变量:ItemID捡到的物品ID/ItemAmount一次性捡起的物品数量
| 在一名玩家捡起指定物品ID的物品时触发。 | Respond
| [含触发者] [含ID值:指定的密码(包涵关键词即可)
| 在任务执行器中使用respond{<密码>} 或globalrespond{<密码>} 触发。 适合配合变量,以通过简单变量区别执行不同复杂的内容(例如玩家数量决定副本难度)。 适合设计函数使Task运行的条理清晰一些。 | Sneak
| [含触发者
| 在一名玩家下蹲/起立时执行。 | SendCommand
| [含触发者] [含ID值:指定的“根指令”如gamemode 1中的gamemode就是根指令] [含变量:<根指令>_<序数>
| 在玩家使用指定根指令时触发。 | TimeUp
| [含ID值:指定的计时器名称
| 在指定计时器(可以使用timer{}自定义计时器)计时结束时触发。 如果不填写ID值,则在队列游戏时长(GroupTimer)结束而强制解散时触发。 | WalkOnBlock
| [含触发者][含ID值:指定的方块ID][含返回变量:踩到的方块ID
| 在一名玩家踩到指定ID的方块时触发。若一直踩着,触发间隔为1秒。 | WalkInRegion
| [含触发者][含ID值:区域的名字可以是多个
| 在一名玩家进入指定区域时触发。若一直在一个区域中,触发间隔为1秒。 | WalkOutRegion
| [含触发者][含ID值:被判断的区域名字也可以是多个
| 在一名玩家离开指定区域时触发。若一直不在一个区域中,触发间隔为1秒。 |
|
Task Task统一格式: - <命令>{<参数>} <目标>[<选择器>=<参数>,<选择器>=<参数>...] |
标签含义:
[含触发者] - 在这个Task中可以使用@p,<striker>等指向触发者的变量。 [限非自由加入] - 这个TaskController仅能在非自由加入队列中使用,否则失效。 [含变量] - 这个TaskController会有一个括号后缀,内含一个变量辅助判定。 |
TaskController大全
onGroupStart | [限非自由加入
| 在队列开始(即等待结束)时执行。 | onPlayerJoin
| [含触发者
| 在一名玩家加入队伍时执行。 | onPlayerLeave | [含触发者
| 在一名玩家离开队伍时执行。 | onPlayerRest(剩余数量)
| [含变量] [限非自由加入
| 在队伍中仅剩余一定玩家时执行。 如果是 onPlayerRest(0) 相当于"当队列结束时执行"。 | onEverySecond
| [限非自由加入
| 在游戏进行中每秒执行一次。 | onTimePast(剩余时间)
| [含变量] [限非自由加入
| 在游戏时间剩余一定秒数时执行。 | onLobbyTimePast(剩余时间)
| [含变量] [限非自由加入
| 在等待厅中,等待时间剩余一定秒数时执行。 | onPlayerJoinFailed
| [含触发者
| 在一名玩家加入失败时执行。注意,这里指代触发者必须用@t,不可以@p! | onPlayerEnough
| [限非自由加入 | 在等待厅时,玩家达到最小人数(可开始倒计时)时触发。 | onPlayerEnough
| [限非自由加入
| 在等待厅时,玩家达到最大人数时触发。 | onPlayerLeaveInWaiting
| [含触发者
| 当一名玩家在游戏正在等待开始时离开队伍,则会执行。 but如果这个队伍是自由加入,则玩家离开时一定调用onPlayerLeaveInWaiting。 (不影响onPlayerLeave触发且在onPlayerLeave触发之前) | onGroupLoaded
| | 当一个队伍加载时执行。 如果不进行额外重载,则在服务器启动时(启动时加载插件)执行。 一般地,这个执行器用于初始化队列,例如调用一下enabletrigger{all}。 |
|
如果你学会了CSG的三大元素,那么你就完全可以自由编写的CSG脚本了~如果第一次看看的一脸懵逼也没有关系.请看下面的实战教程咯 EXP +50 (60/100) 第三章:从零开始制作CSG队列
这部分将开始是CSG的实战教程,以图文结合的方式给大家展示,那么废话多说,直接开始!
首先要在customego文件夹的lobby里面个用于储存{游戏}的文件夹这里我把她叫做【副本一】文件夹并且我们在创建一个.yml文件
注:这里的Default就是副本一的房间
|
|
打开我们的队列文件开始进行编辑吧(下方有教案,可以自己下载使用)
打开文件首先我们先来编辑最基本的内容
注:
[1]是否将这个队列文件设置为初始队列,每一个游戏也就是副本只能设置一个初始队列
[3]这个队列的名字,目前没什么用
[5][7]人数方面的限制,当满住最小人数的时候游戏就可以开始了,如果你想要做成单人副本就把最大与最小都设置成1就好了
[10] 是否自由加入,这个设置成false,如果你设置成true就当与别人正在打副本其他人也能进来打
相关时间方面设置
[14]当人数条件满足最少的时候需要等待多久
[16]当人数条件满住最多的时候需要等待多久
[18]这个游戏一场最长能玩多久
注释:如果你想要你的玩家加入就开始,你可以把你的等待时间全部设置为1,这样玩家一加入就可以开始游戏了(不能设置成0)
相关地点设置
[22]等待大厅的位置,玩家在什么地方等待游戏开始 格式(x,y,z,世界名)
*在V8.5版本过后地图坐标最好就填成(x y z,世界名)坐标中间的,改为空格隔开
[24]当游戏打完或者结束了最后把玩家传送到什么地方
[26]真正游戏的地方,相当于就是副本所在地(可以配置多个)
[29]玩家的区域范围,当跑出去的话会被强行拉回来。如果你的地图确保是完全封闭的其实都可以不用设置这个(可以配置多个)
注意V8.50后面的版本所有关于地点的设置都将用空格代替不再用 , 分隔了
游戏全局判定(TaskController)
[35-36]别乱动
[38-39]当玩家加入到等待大厅的时候执行什么指令,这里是给全部等待大厅玩家发送一条消息,可以设置多个(包括下面的几条都可以)
[40-41]当人满了的时候执行什么指令
[42-44]正式开始,执行的指令,这里的[44]是用控制台指令刷新mm怪物
[46-47]当结束和失败檫屁股执行什么,如果你是副本一定要记得结束消除本次的怪物,你可以不想要下一批玩家打两个boss吧。这里要注意一点你如果没有使用独立副本的附属的话,两个一样副本距离要大于32个方块距离,不如当A副本结束她会把B副本的怪物清除掉。B副本玩家:我的BOSS呢???
**这里的taskcontroller理论上你可以写无数个,然后再加无数个指令
游戏全局判定(Task)
[52-61] 这里是当你击杀了指定的mm boss不管还有没有小怪都会在60tik(3s)后结束本次游戏
*怪物标签可以添加多个,标签对应mm怪物的ID不是displayer(怪物名字)
[64-70]就是上面说的区域限制 [29] 问题,如果你没有搞区域就没必要写这个
[73-77]这是当队列遇到特殊情况会强制进行的措施,如插件被重载之类的
[79-83]这里是当你的游戏时间 [18] 到了后执行的操作
**这里的task理论上你可以写无数个,然后再加无数个判定
玩家的相关设置
这些都可以加也可以不加,看你自己的决定注释也写的很详细了我就不解释了
那么到现在基础的队列教程也就配置完毕了,当然详细的数据得更具你的服务器自己调整了,下方有这次教程写的配置模板,你可以直接下载改改就能直接用了 EXP +15 (75/100) 第四章:配置更加高端的CSG队列 这个位置我打算教各位怎么用CSG来写属于自己的小游戏,个人有什么想学的小游戏或者点子都可以写到下方评论区,我会根据不错的点子或者小游戏来尽量更新
第五章: CSG的扩展功能(附属插件讲解) CSG拥有超多的附属,每一个附属都能给CSG增加全新的机制,学会使用附属会为你CSG带来不小的帮助
CustomGO-Divider 简绍:CuStomeGo-Divider是CuStomGo的相关附属插件,本次附属插件扩展了CuStomeGo的对于房间的自动分配机制扩展,让其C-GO能够更加灵活的为玩家自动分配房间,避免等待的苦恼!
使用方法:
1.将插件放入plugins中后重启服务器,即可生成相关的文件
2.打开生成的文件会有一个叫做Option.yml的文件打开文件就开始配置了,格式如下
[指令参数]:[大厅1],[大厅2],[大厅3].......[大厅X无数个]
解释:
这里相当于将testx,test,test2放入了div1这个{组}里面了,当玩家输入相关指令的时候(这里对应玩家输入的/fwdiv div1)就会在div1里面优先选择人数最多的游戏加入进去
相关指令:
/fwdiv 指令参数 |
CustomGO-DailyJoin
简绍:CustomGo-DailyJoin是CustomeGo的每日限入附属,字面意思给游戏加上进入的限制次数,不是限制要求
使用方法:
1.将插件放入plugins后重启即可
2.打开生成的文件会有一个叫做Option.yml的文件打开文件就开始配置了,格式如下
[队列名]:[每日加入次数]
解释:
这里是配置了3个限制,特别注意DJ是通过队列名来进行限制的奥不是通过游戏进行限制的奥,相当于不同游戏同一个队列名都会受到限制。所以你要做的现在的游戏就用特殊的队列名哦
注意:
每日限制要通过重启服务器才能完成刷新,所以你要打上每日限制还要做一个游戏重启(这里建议找一个每日自动重启的插件,站内就有) |
|
|
简绍:CustomeGo-Leader是CustomeGo的队长附属,他会指定第一个加入游戏的玩家是队长,队长拥有立即开始游戏与t出玩家的权限(相当于房主)
使用方式:
1.放入plugins后重启服务器,Leader不会生成相关的文件夹
2.打开你要开启队长设置的队列文件.就是第三章的那个教程的文件
3.在里面新的一行加上
Leader: true
就可以设置这个队列启用队长模式了
相关指令:
/fwl go #立即开始游戏
/fwl kick 玩家 #踢出一名玩家
/fwl change 玩家 #转让队长 |
|
|
CustomeGo-Tili/JoinPrice 简绍:
JoinPrice扩展了CustomeGo的限制判定目前有(金币,点券,等级,TIlI的体力)
使用方法:
JoinPrice在V8.4及以上已经被整合到了CSG本体插件里面了,无需在打附属
Tili和其他附属一样放到插件包里面重启就会有专门的文件夹
配置方法:
打开需要加入现在的队列文件.还是第三章的那个文件
[Need]在开始游戏前判断玩家是否瞒住了这些条件,不会进行消耗
[Consume]在游戏开始后消耗玩家这些东西
前者是要求,后者是消耗
特别注意Need设置的内容要大于等于Consume的内容,如果小于的话,系统会自动将Consume作为Need进行判断
Tili文件夹的config配置:
这个什么好说的,自己看注释就是了
需要注意的就是在V8.4之前的版本,恢复速度是按照ti计算的20ti=1s,V8.4以后就按照秒了
然后就是注意的PAPI的版本,如果版本没设置对后台会报未连接的
PAPI变量: %fwtili.tili% 玩家当前体力
TiTl的相关指令:
/addtl <体力> 使你自己获得一定的体力。(需要权限:tili.addtl) /addti <体力> <玩家> 使一个玩家获得一定的体力。(需要权限同上) /addtall <体力> 使所有在线玩家获得一定体力。 |
|
|
ustomeGo-SPRoom.异步独立副本
重头戏来了,我最喜欢的一个附属插件,学会使用这个插件能让服务器B格直接上升到另一个层次
简绍: CSG-SPR是CSG提供了异步独立系统,他能够为每一个玩家提供独立的副本与地图,0排队,0抢怪,0抢资源。并且采用的是异步生存地图避免了卡服的可能性只要不作死就不会造成服务器卡顿问题 |
使用方法: 1.首先你先要创建一个正常的游戏与配置(也就是第三章的配置文件)将他加载到服务器里面 2.输入/seril <CustomGo游戏名> 就会开始创建相关的独立副本,他会给你提示世界未加载新建一个超平坦地图.这个不用担心这个是正常现象 3.将服务器关闭,打开CSG—SPR的文件夹,里面有一个world文件,这个就是独立副本的世界模板,每一次生成独立副本就会复制一次这个模板. 将你的副本地图与对应的世界模板进行替换(内部文件全部替换) 4.在CSG-SPR中也有一个lobby的文件夹,这个就是独立副本的游戏文件夹,将独立副本的配置打开后将必要的世界名替换成<tag.world>组队的相关地点替换成none(这里可以去参考独立副本的模板文件) <tag.world>就是代指你的独立副本的世界名字 5.启动服务器后如果文件正确就会生成一次独立副本文件 6.通过指令/fwroom xx setmax <最大副本数> 即可修改同时副本运行的上限(免费版一个副本最多10个,付费不限)
|
指令: /seril <CustomGo游戏名> 导入已有密室副本配置与对应地图,创建独立副本!
(若无对应地图,先自动创建一个超平坦世界作为对应地图)
/fwroom xx editworld 重新修改(或传送到)已经导入为独立副本地图的世界
/fwroom xx renewlobby 重新导入CustomGo配置到独立副本(修改配置后用)
/fwroom xx setmax <最大副本数> 设定该独立副本最多允许多少副本同时进行
/fwroom list 显示独立副本列表
/fwroom xx statu 查看一个独立副本的状态
/fwroom defaultloc 设置默认传送点(临时世界被移除时世界内玩家传送到这)
/fwroom xx join (玩家指令)加入独立副本!
/fwroom xx join <玩家名> (管理员指令)令一名玩家加入独立副本(免费版缺失)!
/fw leave (玩家指令)离开一个独立副本!(没错是CustomGo原指令) | 请注意:
1.独立副本不能通过修改config来进行注册副本,必须通过指令一步一步的来 |
|
|