* @plugindesc [v 1.0.1] 高级动态团队控制
*
*
* @help
*
* ===============================================
* ----------------------------------------地图部署-----------------------------------------
* ==============================================
*
* 地图事件部署:
* 为了正确实现角色切换的效果,需要在支持某角色切换的地图中部署与该角色具有同样
* 行走图的事件,该事件会在执行角色切换后代替该角色立即出现在玩家执行切换时的位置
* 上,作为不受控角色存在。在该事件第一页靠上的行加入事件注释
* “ProxyPlayer number”,其中“number”是该事件对应的可选角色的id,注意不是事件id,
* 是系统中每个玩家角色的id。
* ==============================================
* ===============================================
* 1.私有背包功能:
* 游戏中每一个可使用角色都可以拥有只属于该角色的私有背包。
*
* 当然仅限于常规武器,道具和装备,你要说别的插件又开辟的类似重要道具之类的道具栏,
* 还声明了自定义对象存储,那这个当然不会奏效。
*
* 功能描述:
* 开启本功能后只有队列的队首玩家的道具可以在道具界面显示,增加或减少道具也只会在
* 队首玩家的库存中有效,玩家可以通过整队决定在游戏中使用谁的道具进行游戏中互动。
* 游戏中关闭该功能后若以不同队首玩家分别收取物品后,重新打开该功能会使已拾取的物
* 品按各自拾取者,分配给各自的私有背包。
*
* * 但还是强烈建议,为了高级功能的正常使用除非必要队伍中只应有一人 *
*
*
* 脚本使用:
* 游戏中开启该功能:
* RSFSR.RSFSR_bool1 == true;
* 游戏中关闭该功能:
* RSFSR.RSFSR_bool1 == false;
* ======================================================
* 2.角色切换功能:
* 游戏中可以切换当前控制的角色。且原被控角色即便重新进入地图也会保留在玩家离开时
* 的位置,也就是事件具有位置记忆功能。
*
* 功能描述:
* 使用脚本执行角色切换。至于运行脚本是在菜单界面还是地图界面或是其他UI界面则以安
* 装的其他插件自定义功能为准。
*
* 注意事项:
* 当前队伍必须只有一人,否则角色切换无法正常执行。
*
* 脚本使用:
* $gamePlayerChange.playerChangeExecute(number);
* number为执行角色切换的目标角色Id
* ========================================================
* 3.角色自主行为:
* 可以通过任务调度系统预定义每个角色在不同地图的自主行为。可以使用并行公共事件设
* 置移动路线,使角色在地图中可循环移动。
*
* 3.1 操作换手:
* 执行角色切换后,若原受控角色在本地图预定义了某些自主行为,其会立即在地图按预定
* 义指令(也就是移动路线)开始行动,而且可以随意切换到任何正在执行自主行动的角色。
*
* 3.2 事件自动化开关:
* 角色在执行移动路线时,每次到达一个寻路脚本的目的地都会开启一个独立开关,重新开
* 始移动时会关闭所有独立开关。开启独立开关的顺序为ABCD循环顺序,若未能勾选全部独
* 立开关则会按字母顺序找到下一个开启。
*
* 每一个角色都可以选定一个全局开关作为碰撞检测的基准,当角色前进受阻时,会开启该
* 开关,可以继续前进时会关闭该开关。通过以上两种自动开关的组合,可实现角色在自主
* 移动时,自动进行事件页切换的效果。
*
* 3.3 角色移动自主控制:
* 角色在执行移动路线时会动态规避行进路线上的玩家和其他移动中的事件,如果因其他事
* 件或地形导致原目标点无法到达会重新选择离原目标点最近的位置作为新目标点。
*
* 3.4 狭路人机博弈行为:
* 角色自主移动时,如果玩家故意在前往目标点的必经节点上阻挡,则会放弃对玩家的躲避,
* 直接朝玩家前进,进而触发碰撞检测与玩家进行交互,并会随着时间推移,出现以下行为:
*
* 一、决不后退:
* 在一定延时内若玩家不主动让路,会顶住玩家不后退。若玩家先让路则会通过狭路。
*
*
* 二、主动让路:
* 再经过一定延时内若玩家不主动让路,会后退到不妨碍玩家进出的位置面对玩家,来等待
* 玩家通过。若玩家也让路或玩家已经通过,会结束等待并通过狭路。
*
*
* 三、跳过目标:
* 在等待玩家通过的过程中,若经历了较长时间后,玩家依然阻挡在狭路,会放弃当前目标,
* 向下一个目标坐标前进。
*
* 四、妥协机制
* 角色因玩家的原因在本地图曾经被迫放弃过一次行动目标,并在玩家没有重新进入当前地
* 图前,如遇到玩家再次故意阻挡狭路时,不会再顶撞玩家而是会直接进入主动让路程序。
*
*
* 脚本使用:
* 在脚本移动中填入以下脚本
* this.fpXY(x, y); // 只能插两条啊大哥,填多了会导致重新选择目标时开关顺序错位,
* 进而导致场景对话错位。
*
* 在脚本使用时,不管目标点多远,只要在限制范围内,在移动路线中只需填入两条脚本移
* 动指令就可以控制角色一直前进直到目标点,成功到达后才会执行第三条指令。
*
* 注意事项:角色切换有2秒操作冷却,以及熔断机制。冷却机制是避免可能存在的性能瓶颈,
* 熔断机制是防止因用户任务配置错误,使操作换手误勾选了执行自身的公共事件,而触发
* 死亡递归使游戏引擎卡死。
* ----------------------------------------温馨提示-----------------------------------------
* 本插件通过各种开关实现的事件页自动化控制与基于场景的拟人化移动行为旨在为游戏开
* 发者提供具有一定智能的NPC,可应用于游戏剧情中的一些人机队友的行为,使玩家在单
* 机游戏中也没那么孤独。
*
* 另外,如果初始不擦除型角色,其初始放置位置与设定的初始启用坐标不一致必然会导致
* 观感不好(闪现),以及在当前操作视角视野范围内切换到从未启用过的角色时,它会在
* 地图凭空出现,观感也不好,所以该操作最好在当前视野看不到目标点时执行为上。
本帖来自P1论坛作者开空单,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:
https://rpg.blue/forum.php?mod=viewthread&tid=497020 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。