测试环境:兄弟国际仿官
适用版本:几乎全部版本
测试时间:2022-11-5 00:13:28
客户要求:每天限制用户只能兑换2000点数,次日重置数量。
思路:兑换后MD_Self_DuiHuanSJ记录当前时间,如果不是当天了,则马上重置累计兑换的点数。这个思路完全可以按照副本次数的方式进行修改(欢迎提供更简单更方便的次数更新方式)。
MD_Self_DuiHuanCS记录今天总共的兑换数量,如果想兑换的点数超过了2000了,则禁止兑换,必须让你兑换少于等于2000哦。 如果你后续想修改成,超过两千则兑换2000也是可以的。
编号:XUEWU-20220511-XLGM-01-ID01 - XUEWU-20220511-XLGM-01-ID03 共计三处修改,记录编号以便后续修改时查询
具体代码:
\home\tlbb\Public\Data\Script\obj\qianzhuang\oqianzhuang_yuanbao.lua
function x181000_BuyYuanbao( sceneId, selfId, nYuanBao )
--雪舞新增点数购买限制 2022-11-4 20:40:34
-- local MD_Self_DuiHuanCS = 587 --测试时使用,重启服务器后可删除,不删也没关系的。
-- local MD_Self_DuiHuanSJ = 588 --测试时使用,因为服务器的全局变量还没生效,重启才能生效哦。
--修改编号:XUEWU-20220511-XLGM-01-ID01
local ShengYu = 2000
local lastTime = GetMissionDataEx(sceneId, selfId, MD_Self_DuiHuanSJ)
local lastDayTime = floor( lastTime / 100 )
local lastDayCount = mod( lastTime, 100 )
local CurDayTime = GetDayTime()
if CurDayTime > lastDayTime then
lastDayTime = CurDayTime
lastDayCount = 0
SetMissionDataEx( sceneId, selfId, MD_Self_DuiHuanCS,0)
x181000_g_Str_Tips(sceneId, selfId,"新的一天已经开始,您的累计兑换点数已经清空。")
end
lastDayCount = lastDayCount + 1
lastTime = lastDayTime * 100 + lastDayCount
SetMissionDataEx(sceneId, selfId, MD_Self_DuiHuanSJ,lastTime)
local LeiJi = GetMissionDataEx( sceneId, selfId, MD_Self_DuiHuanCS)
if (nYuanBao+LeiJi) > ShengYu then
x181000_g_Str_Tips(sceneId, selfId,"今日已累计兑换"..LeiJi.."点数,不足以继续兑换"..nYuanBao.."点,最多可再兑换"..(ShengYu-LeiJi).."点数,请减少数量再试。")
return
end
if LeiJi > ShengYu then
x181000_g_Str_Tips(sceneId, selfId,"今日已累计兑换"..LeiJi.."点数,还剩余可兑换点数"..(ShengYu-LeiJi).."点")
return
end
end
ScriptGlobal.lua
--每日兑换限制记录
MD_Self_DuiHuanCS = 587 --本代码使用extxt储存 byxuewu 2022-11-4 20:16:30
MD_Self_DuiHuanSJ = 588 --本代码使用extxt储存 byxuewu 2022-11-4 20:16:30
287记录点数数量
288记录是否是新的一天
二次验证:\home\tlbb\Public\Data\Script\event\prize\eprize.lua
function x888899_BuyRet( sceneId, selfId, ntype, nPoint, nLeftPoint )的elseif( 2 == ntype) then 下面加入
--修改查询编号:XUEWU-20220511-XLGM-01-ID02 雪舞注释 2022-11-5 00:16:17
local shengyu = GetMissionDataEx( sceneId, selfId, MD_Self_DuiHuanCS)
if shengyu >= 2000 then
x888899_g_Str_Tips(sceneId, selfId,"您好,今日已累计2000点数,请明天再兑换")
return
end
最后在点数完成兑换的代码后面加入 ,例如函数x888899_BuyRet最后面,当然是end之前。
--修改查询编号:XUEWU-20220511-XLGM-01-ID03 雪舞注释 2022-11-5 00:16:17
SetMissionDataEx( sceneId, selfId, MD_Self_DuiHuanCS,shengyu + nPoint)
x888899_g_Str_Tips(sceneId, selfId,"今日已累计兑换"..(shengyu+nPoint).."点数,还剩余可兑换点数"..(2000-shengyu-nPoint).."点")
|