SendCode(CharIndex,OutTime,OutTimeCallModuleBack,CodeCallModuleBack)


注意 请在gp_config.cf里面Captcha改成2才可以使用此函数,此函数应用data目录下的Revise.txt

函数功能:

给指定对象发送验证码进行验证


操作参数:

参数名 是否必须 类型 说明
CharIndex int 角色对象索引
OutTime int 超时时间设定(秒的计算方式)
OutTimeCallModuleBack Module 超时调用的函数(注意只触发一次)
CodeCallModuleBack Module 接收到的验证码(注意只触发一次)超时将不会进入此函数

返回值:

返回值类型 成功 失败
int 1 0

  1. 超时调用流程 OutTimeCallModuleBack->CodeCallModuleBack
  2. 错误、正确、未超时 直接调用CodeCallModuleBack

OutTimeCallModuleBack函数

参数名 是否必须 类型 说明
CharIndex int 角色对象索引
OutTime int 超时时间

CodeCallModuleBack函数

参数名 是否必须 类型 说明
CharIndex int 角色对象索引
IICorrect bool 是否正确

简单说明下,此功能已经完全封装好的,人物注销或者掉线,都会自动清空。所以如需登录后继续验证,请自行用处理


操作实例:

local CharValidationState  = {};
--如果超时了会先调用OutTimeCallModuleBack->CodeCallModuleBack
function OutTimeCallModuleBack(CharIndex,OutTime)
       CharValidationState[CharIndex] = OutTime;
    --[[ 立即发送超时消息(避免延迟)
        local msg = string.format("[验证码] 回答超时,请在指定的%d秒内回答", OutTime)
        NLG.SystemMessage(CharIndex, msg)
        这里根据需求自己定义,但是如若超时,验证码窗口是不会关闭的。因为在弹出窗口的时候鼠标只能移动无法点击--]]
    return;
end
--如果没超时默认CodeCallModuleBack
function CodeCallModuleBack(CharIndex,IICorrect)
    if CharValidationState[CharIndex] ~= nil then
        local CommadString = string.format("[验证码] 回答超时,请在指定的%d秒内回答",CharValidationState[CharIndex]);
        NLG.SystemMessage( CharIndex, CommadString);
        return;
    end
    if IICorrect then
        NLG.SystemMessage( CharIndex, "回答正确");
    else
        NLG.SystemMessage( CharIndex, "回答错误");
    end
    CharValidationState[CharIndex] = nil;--释放掉
end
Char.SendCode(CharIndex,10,"OutTimeCallModuleBack","CodeCallModuleBack");

备注:

  • 更多返回错误代码请看首页的错误代码描述
文档更新时间: 2025-08-07 18:27   作者:105493660