ActiveCondtion.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. ConditionHandler:register(ConditionId.active["真实时间检测"], "真实时间检测", function(actor, param)
  2. local activeTime = string.split(param,"-")
  3. if table.count(activeTime) < 2 then
  4. return false
  5. end
  6. local startDataStr = string.split(activeTime[1],"_")
  7. local startTime = TimeUtil.earlyOneMorning(tonumber(startDataStr[1]),tonumber(startDataStr[2]),tonumber(startDataStr[3]))
  8. local endDataStr = string.split(activeTime[2],"_")
  9. local endTime = TimeUtil.midnightOneDay(tonumber(endDataStr[1]),tonumber(endDataStr[2]),tonumber(endDataStr[3]))
  10. local currentTime = getbaseinfo("nowsec")
  11. if currentTime >= startTime and currentTime < endTime then
  12. return true
  13. end
  14. return false
  15. end)
  16. ConditionHandler:register(ConditionId.active["主活动持续时间检测"], "主活动持续时间检测", function(actor, param)
  17. -- 读取当前活动的开始时间
  18. local mainDurationInfo = string.split(param,"#")
  19. if table.count(mainDurationInfo) < 2 then
  20. return true
  21. end
  22. local mainGroup = tonumber(mainDurationInfo[1])
  23. local durationDay = tonumber(mainDurationInfo[2])
  24. local currentActive = getsysvar(CURRENT_ACTIVE)
  25. if table.isNullOrEmpty(currentActive) then
  26. return true
  27. end
  28. local mainActive = currentActive.mainActive
  29. local saveMainGroup = mainActive["mainGroup"]
  30. if saveMainGroup == mainGroup then
  31. local closeTime = mainActive["closeTime"]
  32. local currentTime = getbaseinfo("now")
  33. if currentTime < closeTime then
  34. return false
  35. end
  36. end
  37. return true
  38. end)
  39. ConditionHandler:register(ConditionId.active["子活动持续时间检测"], "子活动持续时间检测", function(actor, param)
  40. -- 读取当前活动的开始时间
  41. local mainDurationInfo = string.split(param,"#")
  42. if table.count(mainDurationInfo) < 3 then
  43. return true
  44. end
  45. local mainGroup = tonumber(mainDurationInfo[1])
  46. local subType = tonumber(mainDurationInfo[2])
  47. local durationDay = tonumber(mainDurationInfo[3])
  48. local currentActive = getsysvar(CURRENT_ACTIVE)
  49. if table.isNullOrEmpty(currentActive) then
  50. return true
  51. end
  52. local subActive = currentActive.subActive
  53. if table.isNullOrEmpty(subActive) then
  54. return true
  55. end
  56. local subActiveId = ConfigDataManager.getTableValue("cfg_OperateActivity_subActivity","id","mainGroup",mainGroup,"subType",subType)
  57. local subStartTime = subActive[tonumber(subActiveId)]
  58. if subStartTime == nil then
  59. return true
  60. end
  61. local subCloseTime = TimeUtil.addDayEnd(subStartTime, durationDay)
  62. local currentTime = getbaseinfo("nowsec")
  63. if currentTime < subCloseTime then
  64. return false
  65. end
  66. return true
  67. end)
  68. ConditionHandler:register(ConditionId.active["检测为几周"], "检测为几周", function(actor, param)
  69. -- 读取当前活动的开始时间
  70. local checkWeek = string.split(param,"#")
  71. local currentTime = getbaseinfo("nowsec")
  72. local weekDay = tonumber(os.date("%w", tonumber(currentTime)))
  73. if weekDay == 0 then
  74. weekDay = 7
  75. end
  76. for k, day in pairs(checkWeek) do
  77. if tonumber(day) == weekDay then
  78. return true
  79. end
  80. end
  81. return false
  82. end)