当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇脚本命令:土城仓库玩家定时批量传送至指定地图写法

热度:
针对“每晚8点将土城仓库地图内所有玩家,强制传送至指定地图”的需求,核心是通过“定时触发+地图玩家筛选+批量传送”的脚本逻辑实现。以下是完整脚本命令写法、参数说明及适配要点,直接复制修改关键参数即可使用。

一、核心脚本整体写法(通用版)

本脚本基于传奇机器人脚本定时机制开发,无需依赖玩家操作,到点自动执行筛选与传送,适配主流传奇引擎(GOM/HERO/BLUE),需根据自身引擎调整指令后缀。

[机器人脚本]
脚本名称=土城仓库玩家定时传送
触发方式=时间触发
触发时间=20:00:00
循环执行=是
执行优先级=高

//核心逻辑:遍历在线玩家→筛选土城仓库地图内玩家→批量传送
Start:
//定义变量:存储玩家ID、当前地图ID
INT玩家ID=0
INT当前地图ID=0
//定义目标参数:土城仓库地图ID、指定目标地图ID及坐标
INT源地图ID=301//土城仓库地图ID,需替换为自身版本实际ID
INT目标地图ID=502//目标地图ID,需替换为实际ID
INT目标X坐标=120//目标地图安全区X坐标
INT目标Y坐标=130//目标地图安全区Y坐标

//遍历所有在线玩家(传奇引擎通用遍历指令)
玩家ID=GETONLINEFIRST()//获取第一个在线玩家ID
WHILE玩家ID>0
//获取当前玩家所在地图ID
当前地图ID=GETMAP(玩家ID)
//筛选:仅处理土城仓库地图内的玩家
IF当前地图ID==源地图ID
//执行强制传送(不同引擎指令差异见下文)
//GOM引擎指令
MOVEMAP玩家ID目标地图ID目标X坐标目标Y坐标
//HERO引擎替换为:MOVE玩家ID目标地图ID目标X坐标目标Y坐标
//BLUE引擎替换为:MAPMOVE玩家ID目标地图ID目标X坐标目标Y坐标

//可选:给被传送玩家发送提示
SENDMSG玩家ID2"系统:您已被传送至活动地图,请做好准备!"
ENDIF
//获取下一个在线玩家ID,循环遍历
玩家ID=GETONLINENEXT(玩家ID)
ENDWHILE
//脚本执行完毕
RETURN


二、关键参数与指令说明(必看修改项)

1.基础参数替换(根据自身版本填写)

脚本中“源地图ID”“目标地图ID”及坐标为通用占位符,必须替换为自身版本的实际数据,否则会导致传送失效或玩家传送到错误位置。

-土城仓库地图ID获取:登录游戏GM账号,进入土城仓库,输入命令“@mapid”,聊天框会显示当前地图ID,替换脚本中“源地图ID=301”的“301”。

-目标地图ID与坐标获取:GM账号进入目标地图,输入“@mapid”获取地图ID;输入“@pos”获取当前坐标(选安全、无障碍物区域,避免玩家卡模),分别替换“目标地图ID=502”“目标X坐标=120”“目标Y坐标=130”。

2.核心指令适配(按引擎选择)

不同传奇引擎的“强制传送”指令存在差异,必须对应替换,否则脚本执行无效果,以下是三大主流引擎的适配方案:

传奇引擎

强制传送指令格式

指令说明

GOM/GEE

MOVEMAP玩家ID目标地图IDX坐标Y坐标

支持离线玩家标记,在线玩家即时传送

HERO

MOVE玩家ID目标地图IDX坐标Y坐标

需确保玩家无特殊状态(如麻痹、冰冻)

BLUE

MAPMOVE玩家ID目标地图IDX坐标Y坐标

可添加“0”作为第五参数,代表忽略传送冷却

3.定时触发机制(与机器人脚本联动)

脚本头部“触发方式=时间触发”“触发时间=20:00:00”“循环执行=是”为基础设置,需与服务器机器人脚本配合实现每日执行:

1.将上述脚本保存为“TimeTransport.txt”,放入服务器“Scripts/机器人脚本”文件夹;

2.打开机器人脚本配置文件(通常为“RobotConfig.txt”),添加执行规则:“执行脚本=TimeTransport.txt执行周期=每天执行时间=20:00:00”;

3.重启机器人服务或输入GM命令“@reloadrobot”,使配置生效。

三、常见问题与规避方法

1.部分玩家传送失败(原因及解决)

若存在玩家未被传送的情况,优先排查以下两点:

-玩家状态限制:处于战斗、交易、摆摊状态的玩家,部分引擎会禁止强制传送。可在脚本中添加状态判断,跳过战斗玩家并提示,示例代码:
//新增:判断玩家是否处于战斗状态(通用指令)
INT战斗状态=GETBATTLE(玩家ID)
IF战斗状态==0
//执行传送指令
MOVEMAP玩家ID目标地图ID目标X坐标目标Y坐标
ELSE
SENDMSG玩家ID2"系统:战斗中无法传送,请结束战斗后等待下次传送!"
ENDIF

-地图权限设置:目标地图若设置“禁止进入”权限,会导致传送失败。进入GM后台,在“地图管理”中找到目标地图,将“进入权限”改为“所有人”。

2.脚本执行无响应(排查步骤)

1.检查脚本路径:确保文件放在“机器人脚本”指定文件夹,路径无中文或特殊字符;

2.查看日志文件:服务器“Log/RobotLog”中搜索“TimeTransport”,若提示“指令错误”,则为引擎指令未适配;若提示“地图ID无效”,则为地图ID填写错误;

3.测试单玩家传送:用GM命令“@执行脚本TimeTransport.txt”手动触发,观察自身是否被传送,排查坐标是否正确。

3.避免传送拥堵(优化细节)

若土城仓库玩家数量较多,同时传送可能导致目标地图拥堵,可在脚本中添加“随机坐标偏移”,让玩家分散在安全区周围,示例代码:

//新增:坐标随机偏移(±5范围内)
INT随机X=目标X坐标+RAND(-55)
INT随机Y=目标Y坐标+RAND(-55)
//用随机坐标执行传送
MOVEMAP玩家ID目标地图ID随机X随机Y

四、完整适配示例(GOM引擎版)

假设土城仓库地图ID为301,目标活动地图ID为502,安全区坐标(120130),完整可直接使用的脚本如下:

[机器人脚本]
脚本名称=土城仓库定时传送
触发方式=时间触发
触发时间=20:00:00
循环执行=是
执行优先级=高

Start:
INT玩家ID=0
INT当前地图ID=0
//实际参数(已替换为示例数据)
INT源地图ID=301
INT目标地图ID=502
INT目标X坐标=120
INT目标Y坐标=130
INT战斗状态=0
INT随机X=0
INT随机Y=0

玩家ID=GETONLINEFIRST()
WHILE玩家ID>0
当前地图ID=GETMAP(玩家ID)
IF当前地图ID==源地图ID
战斗状态=GETBATTLE(玩家ID)
IF战斗状态==0
//坐标随机偏移
随机X=目标X坐标+RAND(-55)
随机Y=目标Y坐标+RAND(-55)
//GOM引擎传送指令
MOVEMAP玩家ID目标地图ID随机X随机Y
SENDMSG玩家ID2"系统:您已被传送至活动地图,活动即将开始!"
ELSE
SENDMSG玩家ID2"系统:战斗中无法传送,活动地图将为您保留10分钟入口!"
ENDIF
ENDIF
玩家ID=GETONLINENEXT(玩家ID)
ENDWHILE
RETURN

使用前只需替换“源地图ID”“目标地图ID”及基础坐标,按自身引擎调整传送指令即可。若测试中遇到特殊场景问题(如多职业传送差异、跨引擎适配),可根据实际日志提示补充参数或调整判断逻辑。
[顶部]