Project1

标题: 萌新求教,请问如何更换主角+一系列相关问题 [打印本页]

作者: Lostmonkey    时间: 2024-1-11 17:09
标题: 萌新求教,请问如何更换主角+一系列相关问题
萌新,问题有点多有点杂,希望有大佬解答  小弟先行拜谢。

先说小弟想要达到的效果:
A.单一主角游戏,想要关掉队伍管理功能,玩家只要管理目前操作的角色所携带的物品和金钱即可。

B.主角有类似附身的功能,他可以附着在其他NPC身上,以其他NPC的身份行动。此时,玩家可操作角色会变成目标NPC,这需要达成两个条件:
        a.流程控制,小弟通过事件页可以处理这个  或
        b.取得与目标NPC有联系的信物,再与目标NPC互动时,可以解锁附身的选项。
c.附身时,玩家所持有的物品/金钱全部变成目标NPC所持有的物品
d.其他NPC会以对待目标NPC的方式行动。

C.物品/金钱的管理。
        e.玩家可以赠予/夺取特定NPC的物品,也可以在市场上交易。或是以某些手段改变目标NPC的金钱数。
        f.场景中的“箱子”,可以存放物品/金钱。
  
以下是我的思路和一些问题:

1.美化问题,A:我想要隐藏队伍管理功能,默认只显示一个角色,小弟目前没有在编辑器中发现类似的功能,不知道是否有类似的插件。
                   b:小弟用编辑器自带的选项显示,似乎没有办法把按钮变成灰色。只能是显示按钮,或者完全不显示按钮。小弟希望玩家在没有获取信物,但已解锁了附身技能时,能显示灰色的附身动作按钮。

2.流程问题,B:小弟的想法是,将所有NPC都写入MZ的数据库中,再通过出入队队功能完成“附身”的操作。(通过在共通事件中,获取当前队伍成员#1的角色编码,然后令#1角色角出队,目标NPC入队。)但这带来了麻烦。
                   a:角色编码不能用来指定出入队,因此我都只能写死在事件里。第二,出入队不会交换目标NPC与主角的位置,比如,主角在牢房内,目标NPC在牢房外,此时只会将目标NPC弄到牢房里,而不是我想实现的,让玩家操控牢房外的NPC。我一直在寻找能交换玩家坐标的方法。我通过变量获取玩家的XY轴坐标,然后通过“设置事件位置-变量指定”交换玩家与事件的坐标,不过最后是玩家和目标NPC同时进牢房里了...

                   c:MZ数据库似乎没有办法设定角色默认所持有的物品,更不要提金钱了。
                   d:这一点倒是可以通过角色编码的变量来解决。
                   e:编辑器似乎无法解决,小弟试图通过物品增减事件+商店的办法来处理,感觉不是很合适。只能指望插件。
                   f:编辑器似乎无法解决,只能指望插件。

我在站内搜了搜,貌似没有人提到类似的插件(也许是我搜索姿势不对)
写到这里发现好像都是求插件hhh,真的很不好意思,萌新第一贴就开始伸手。还是希望有大佬能解答,小弟再次拜谢

作者: 4887441    时间: 2024-1-11 20:09
你这机制也太复杂了。。。rpg maker就一个做小游戏的工具,不弄插件的话很难做的你这种复杂机制。前两个美化反正我搞不定,等懂程序的大佬来帮你吧。
后面的几个建议你找个会编程的大佬带你,虽然可以靠纯事件和基础脚本实现,但会非常非常麻烦。
美化问题
第一点搞不定,反正我做的单主角游戏直接把菜单禁用了,用图片触发公共事件插件做了个假菜单。
第二点你想的太复杂了没必要,选了之后做个判定,没有信物随便加个提示把玩家堵住就完了。
流程问题
第一点,角色编码可以指定入队,先设定脚本$gameParty.addActor(角色编码)或者$gameParty.addActor($gameVariables.value(代表角色编码的变量编号即可))
第二点,你要的交换位置必须先保存目标地点的坐标,也就是说你一个附身角色至少需要三个变量来标识(不考虑朝向,考虑朝向的话再加一个。)每次附身之前记录判定当前角色的编码,然后对应的变量带入地图坐标。比如1号角色在1号地图2*2的位置要附身在2号地图4*4位置的2号角色,那就要先给一号角色对应的三个变量带入,变量1号角色所在地图编号带入1,变量1号角色横坐标带入2,变量1号角色纵坐标带入2。然后1号角色离队,2号角色入队,场所移动到地图编号为变量2号角色地图编号。横坐标变量2号角色横坐标,纵坐标变量2号角色纵坐标。等下次在进行附身的时候再来一遍。最初的变量可以在游戏开始前用一个自动出发事件带入。
第三点,你可以在选择透明状态开始游戏,然后游戏开始前增加一个新地图,里面放一个自动触发事件,把需要的初始物品直接塞包里,最初的位置变量也可以在这个时候带入。结束之后把角色传送到开始位置并且解除透明。

顺便提个建议。
看这几个问题应该是真萌新,而且对工程量没太大认识。建议非必要的复杂系统一刀砍了就行,尤其是不同角色分开的金钱管理和背包管理之类的,如果不是核心玩法的话建议直接砍了。或者找找有没有合用的插件。NPC态度差异看起来简单实际上工程量不小。你现在的第一目标其实是把游戏做出来而不是把游戏做好,先简化剧情简化系统先做个demo练练手比较好。至少对工程量和技术难度有个大概的认识。刚入坑的时候很多设想到现在都没办法实现既要又要的结果大概率工程量失控(算一下根本做不完原地摆烂)/系统复杂度失控(BUG乱蹦修屎山修到心态爆炸)。而且你这设定怎么听着有股小黄油的感觉,等一波成品。


作者: tsjslgy    时间: 2024-1-11 21:50
本帖最后由 tsjslgy 于 2024-1-11 22:15 编辑

虽然我也是萌新不过可以回答一些问题以及看法。
a,在数据库的系统2中可以关闭队伍管理,(只要没入队菜单里永远只有一人,参考下条)
b,对于‘附身’问题如果不考虑自己写脚本的话,我觉得采用‘设置移动路线-更改图像’来做更简单。说白了就是当触发某开关时更改成NPC的行走图(头像图,对话等自己更换),同时让该NPC事件透明,反向操作同理。如果不想所有NPC都能附身导致工作量增加只要限定几个并标注即可,物品和道具并没有改变因为还是一个人,如果想要增加物品参考下条。
c,首先NPC的物品在哪?NPC只是一个事件并没有道具栏,说白也是自己设定的,那么增加/减去对应道具即可。可以用对话的方式让玩家感到掠夺或赠予。
d,灰色按钮可以用mpp_choiceEX插件来做,自己设定条件开关即可https://rpg.blue/thread-491901-1-1.html
e,默认持有物品在游戏开始直接弄个事件给予就行
f,金钱管理直接弄个变量存储即可,有bank的范例直接参考不用插件,仓库可以用DarkPlasma_ItemStorage来做简单方便。
(如果非要把钱和物品能一起放,可以把钱换成道具的形式来储存,比如100钱=1金块,然后存放金块即可,兑换直接使用增加钱就行)
g,关于交换位置我觉得没必要弄那么复杂,首先某开关触发后,淡出屏幕-玩家移动(地图跳转)到NPC旁边-NPC透明-新建一个NPC事件出现在玩家旁边-淡入屏幕。解决,虽然不是原点移动,但不用想得太复杂,除非自己写一大堆代码还要检查是否报错,何必呢。关于玩家控制NPC行动,其实可以参考第二条。淡出屏幕-新弄一个玩家图事件在旁边-玩家移动并改变图像-NPC透明-淡入屏幕。这样就感觉控制了,而玩家也能看见角色在原位置上(旁边?)。
最后:如果能自己写代码懂代码也愿意花时间构建系统那么以上都是废话。如果都不会建议能简单就简单,不行就淡出淡入屏幕靠脑补即可。

作者: Lostmonkey    时间: 2024-1-12 21:42
4887441 发表于 2024-1-11 20:09
你这机制也太复杂了。。。rpg maker就一个做小游戏的工具,不弄插件的话很难做的你这种复杂机制。前两个美 ...

谢谢大佬耐心回复!我仔细看完了帖子。

1.关于美化问题:完全明白你的意思了。

2.关于流程问题:
        a.请问这个脚本,可以写在共通事件里,每次调用这个共通事件就可以了是嘛?这些变量都是全局变量吗?
        b.完全明白你的意思,梦回手写swap函数。另外,请问MZ的变量在初始化时都是0吗?
        c.明白了,不过应该是我的想法太不合适了。我想要给每一个NPC都设定一个默认的物品栏,不单单是主角团。感觉确实超出了MZ引擎的能力,应该要魔改数据库系统才比较方便。
       
3.关于您的建议:
我是真萌新,很早就注册了账号,但是最近才刚上手开始做游戏。很遗憾,附身是游戏的核心玩法,和剧情也是强相关,我会尽可能实现它。(不是黄油QWQ)用MZ就是想快速做一个Demo的,不过还是低估了超出引擎能力情况下的工程量...狠狠踩一个大坑。
作者: Lostmonkey    时间: 2024-1-12 21:57
tsjslgy 发表于 2024-1-11 21:50
虽然我也是萌新不过可以回答一些问题以及看法。
a,在数据库的系统2中可以关闭队伍管理,(只要没入队菜单 ...

谢谢您的回复!比心
a,弄明白了,感谢!
c,明白您的意思了。因为我的想法是,每个NPC都有自己的物品,玩家附身之后可以使用NPC身上携带的物品,同时自己的物品还必须得保留,再回到原身时可以继续使用自己身上原来的物品。在这种情况下做赠予和掠夺才会更方便些。
d,感谢分享插件。
e,感谢,不过应该是我的想法太不合适了。我想要给每一个NPC都设定一个默认的物品栏,不单单是主角团。感觉确实超出了MZ引擎的能力,应该要魔改数据库系统才比较方便。
f,明白了,感谢!金块直接思路打开。
b,g,完全明白。

我有一些C++基础,不过完全不懂JavaScript。我大概明白是我的想法有点超出引擎能力了,实现起来工程量太大。目前还是专注用事件写死,做一个小Demo出来好了。
作者: 4887441    时间: 2024-1-12 23:08
本帖最后由 4887441 于 2024-1-12 23:14 编辑
Lostmonkey 发表于 2024-1-12 21:42
谢谢大佬耐心回复!我仔细看完了帖子。

1.关于美化问题:完全明白你的意思了。


a:可以写在公共事件里,RPG制作大师的变量都是公共变量,所有事件都可以调用。
b:没有赋值的变量默认是0.
c:  找个大佬帮你魔改数据库吧。金钱管理还能靠变量解决,私人背包硬要做的的话只能给你个思路,如果你的物品是唯一的的话可以给每个物品都顺序指定一个变量得到X-XXX号变量,然后附身时的公共事件用脚本获取当前角色持有的物品编号,然后把对应编号的变量改成当前角色编号。清空角色背包,换成新角色,历遍X-XXX号变量,把变量等于当前角色编号的物品塞进背包。但问题是用事件做会导致非常非常麻烦,必须用脚本才能搞定。而且除非你自己在脚本里声明一长串变量,不然会占用相当多的游戏内部变量。
作者: 4887441    时间: 2024-1-12 23:13
Lostmonkey 发表于 2024-1-12 21:57
谢谢您的回复!比心
a,弄明白了,感谢!
c,明白您的意思了。因为我的想法是,每个NPC都有自己的物品, ...

我看你的要求貌似是主角有自己的能力,附身可以用别人的能力,要不考虑一下把别人的能力做成技能?然后改一下界面和名称糊弄过去?比如物品改成公共背包,技能改成私人背包。技能天然是每个人分开的,而且也可以绑定公共事件,物品的得失和消耗也可以用添加和移除技能搞定。个人感觉比起折腾数据库感觉会简单一些。至少能魔改界面的大佬应该比能帮你魔改数据库的大佬好找。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1