传奇上线3小时触发送100元宝脚本实现全指南

来源: 作者: 点击:
本文聚焦传奇游戏中“上线满3小时触发脚本送100元宝”的核心需求,覆盖HERO、GOM、BLUE三大主流引擎的具体实现步骤,步骤清晰可直接套用,无需额外插件支持。

一、HERO引擎上线3小时送100元宝脚本配置

HERO引擎通过“QManage.txt”脚本文件结合在线时长判断,实现定时送元宝功能,操作如下:

1. 定位脚本文件:打开HERO引擎安装目录,找到“Data”文件夹下的“QManage.txt”,该文件用于管理角色在线触发类脚本逻辑。

2. 编写触发脚本:在文件末尾添加如下脚本内容,核心逻辑为记录上线时间、累计在线满3小时执行元宝发放:

;上线3小时送100元宝触发脚本
If Login
SetUserVar OnlineTime 0
EndIf

;每60秒更新一次在线时长(避免频繁计算占用资源)
If Timer 60
LocalOnlineTime = GetUserVar(OnlineTime)
SetUserVar OnlineTime LocalOnlineTime + 1
;判断是否满3小时(3小时=180分钟=180个60秒周期)
If LocalOnlineTime >= 180
;判断是否已发放(避免重复发放)
If GetUserVar(GiveIngotFlag) < 1
GiveIngot 100 ;发放100元宝
SetUserVar GiveIngotFlag 1 ;设置发放标记
SendMsg 255 255 0 0 "上线满3小时,已自动发放100元宝!"
EndIf
EndIf
EndIf

3. 生效与测试:保存文件后重启HERO引擎,创建测试账号登录游戏,累计在线满3小时即可触发发放。若未触发,需检查两点:一是“OnlineTime”“GiveIngotFlag”变量名无拼写错误;二是Timer周期设置正确,60代表每60秒更新一次时长。

二、GOM引擎上线3小时送100元宝脚本实现

GOM引擎通过“QFunction-1.txt”中的在线时长函数实现需求,支持角色离线后时长清零,适配多数服主需求:

1. 打开核心脚本文件:进入GOM引擎“Data”目录,找到“QFunction-1.txt”,该文件负责角色在线状态相关的触发逻辑。

2. 添加时长判断与发放脚本:在文件内添加如下函数,通过系统时间差计算在线时长:

;上线记录登录时间
Function OnLogin()
SetRoleVar(LoginTime, GetSysTime()) ;存储登录时的系统时间(秒级)
SetRoleVar(IngotGiven, 0) ;初始化发放标记为未发放
return true
EndFunction

;每30秒检测一次在线时长
Function OnTimer_30()
local loginTime = GetRoleVar(LoginTime)
local nowTime = GetSysTime()
local onlineSec = nowTime - loginTime ;计算在线总秒数
local onlineHour = onlineSec / 3600 ;转换为小时数
local ingotGiven = GetRoleVar(IngotGiven)

;判断满3小时且未发放元宝
if onlineHour >= 3 and ingotGiven == 0 then
AddIngot(100) ;发放100元宝
SetRoleVar(IngotGiven, 1) ;更新发放标记
MsgBox "上线满3小时福利到账!已为你发放100元宝"
end
return true
EndFunction

3. 脚本关联与生效:保存文件后,打开GOM引擎控制台,点击“脚本管理”→“加载QFunction脚本”,确认“QFunction-1.txt”加载成功。登录测试账号,待在线满3小时即可触发发放,离线后再次上线会重新计算时长。

三、BLUE引擎上线3小时送100元宝设置方法

BLUE引擎支持可视化定时脚本配置,也可通过手动编写脚本确保适配性,以下为手动编写步骤:

1. 新建脚本文件:进入BLUE引擎“Scripts”文件夹,新建“Online3hGiveIngot.txt”脚本文件。

2. 编写核心脚本逻辑:在新建文件内添加如下内容,通过角色在线事件与时长累计实现需求:

-- 注册角色登录事件
RegisterLoginEvent(function(player)
player:SetVar("LoginStamp", os.time()) ;记录登录时间戳
player:SetVar("IngotGot", false) ;设置元宝领取状态为未领取
end)

-- 注册定时检测事件(每1分钟检测一次)
RegisterTimerEvent(60000, function()
-- 遍历所有在线角色
for _, player in ipairs(GetOnlinePlayers()) do
local loginTime = player:GetVar("LoginStamp")
local nowTime = os.time()
local onlineTime = nowTime - loginTime ;计算在线秒数

-- 满3小时(10800秒)且未领取元宝
if onlineTime >= 10800 and not player:GetVar("IngotGot") then
player:AddIngot(100) ;发放100元宝
player:SetVar("IngotGot", true) ;更新领取状态
player:SendMsg(1, "恭喜!上线满3小时,成功领取100元宝福利")
end
end
end)

3. 加载脚本生效:打开BLUE引擎控制台,找到“脚本加载”选项,选择“Online3hGiveIngot.txt”进行加载,勾选“开机自动加载”防止重启引擎后失效。测试时需注意:BLUE引擎需确保“AddIngot”函数可用,部分版本需在“功能配置”中开启元宝发放权限。

四、通用问题排查技巧

1. 元宝发放重复:核心原因是未设置发放标记(如上述脚本中的IngotGiven、IngotGot变量),需确保发放后更新标记状态,避免定时检测时重复执行发放指令。

2. 在线时长计算错误:离线后时长需重新计算,脚本中需通过“登录时间戳”或“在线时长变量重置”实现,避免直接累计系统时间导致离线时长计入。

3. 脚本无触发反应:优先检查脚本文件是否正确加载(引擎控制台查看加载状态),其次核对函数名称与变量名拼写,最后确认元宝发放函数(GiveIngot/AddIngot)与引擎版本匹配。

五、核心逻辑说明

所有脚本的核心逻辑一致:登录时记录初始时间→定时更新/检测在线时长→满3小时阈值且未发放元宝时,执行发放指令并标记状态。不同引擎仅脚本文件位置、函数名称存在差异,可根据自身使用的引擎版本对应选择配置方案。