找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 108|回复: 2

[教程] 【服务端】[GMS083] 修改指令!warp使其支持选择制定落脚点

[复制链接]

4

主题

12

回帖

111

积分

注册会员

积分
111
发表于 2025-2-21 21:52:19 | 显示全部楼层 |阅读模式
本帖最后由 Magical-H 于 2025-2-21 23:41 编辑

如果你需要在某些情况下调试角色的传送落脚点,比如事件初始位置,那么可以参考这个方法


本教程以北斗服务端(https://github.com/BeiDouMS/BeiDou-Server)为基础进行制作

本次思路为服务端在接收到!warp指令时,会随机指定一个落脚点,因此我们需要将随机改为指定。
打开源码路径:gms-server/src/main/java/org/gms/client/command/commands/gm2/WarpCommand.java

按下Ctrl+F搜索
  1. player.saveLocationOnWarp();
复制代码
将下方的
  1. player.changeMap(target, target.getRandomPlayerSpawnpoint());
复制代码
替换为
  1. Portal portal = null;
  2. if (params.length >= 2) {
  3.                 portal = target.getPortal(params[1]);   // 首先尝试使用String作为参数获取Portal
  4.                 if (portal == null && params[1].matches("\\d+")) {// 检查params[1]是否全由数字组成,如果是,则尝试使用int方式获取Portal
  5.                                 portal = target.getPortal(Integer.parseInt(params[1]));
  6.                 }
  7. }
  8. if (portal == null) {
  9.                 portal = target.getRandomPlayerSpawnpoint(); // 随机落脚点
  10. }
  11. player.changeMap(target, portal);
复制代码

指令格式示例与解释:
  指令:!warp 910000000 1
  解释:指令          地图Id        落脚点索引
数组索引:                   0                          1
  指令:!warp 701010322 st07
  解释:指令          地图Id        落脚点名称
数组索引:                   0                          1

params[1] 指定分割的字符串索引,既落脚点字符串。


评分

参与人数 1金钱 +20 收起 理由
leevccc + 20 赞一个!

查看全部评分

33

主题

12

回帖

100

积分

管理员

积分
100
发表于 2025-2-21 23:35:14 | 显示全部楼层
很多任务地图的初始 portal 都用的相同 name ,用 name 可能会更好。

是否存在某个 ID 就是默认的初始 portal ?
我尽可能地不设置回复可见,希望让跟帖更有质量,有问题欢迎跟帖提问。

4

主题

12

回帖

111

积分

注册会员

积分
111
 楼主| 发表于 2025-2-21 23:39:19 | 显示全部楼层
本帖最后由 Magical-H 于 2025-2-21 23:43 编辑
leevccc 发表于 2025-2-21 23:35
很多任务地图的初始 portal 都用的相同 name ,用 name 可能会更好。

是否存在某个 ID 就是默认的初始 por ...

默认落脚点应该都是int索引:0
似乎是第一个创建的落脚点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|蘑菇物语

GMT+8, 2025-4-20 07:31 , Processed in 0.056443 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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