hxp
2025-10-21 ec19547ca0985de3f1c4045411ee6c171204e535
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetSignDay.py
@@ -4,69 +4,38 @@
#
##@package GM.Commands.SetSignDay
#
# @todo:设置签到
# @todo:签到
# @author hxp
# @date 2018-03-29
# @date 2025-10-09
# @version 1.0
#
# 详细描述: 设置签到
# 详细描述: 签到
#
#-------------------------------------------------------------------------------
#"""Version = 2018-03-29 11:00"""
#"""Version = 2025-10-09 16:30"""
#-------------------------------------------------------------------------------
import PlayerControl
import PlayerSignDay
import PlayerMagicWeapon
import GameWorld
import PlayerSignDay
import ChConfig
import datetime
import time
#---------------------------------------------------------------------
## 设置每日签到
#  @param curPlayer 玩家实例
#  @param cmdList 参数列表
#  @return None
#  @remarks
def OnExec(curPlayer, cmdList):
    if len(cmdList) == 1 and cmdList[0] == 0:
        PlayerSignDay.ResetDaySign(curPlayer)
        PlayerSignDay.Sync_SignDayInfo(curPlayer)
        startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayLoginSignStartTime) # 开始时间
        GameWorld.DebugAnswer(curPlayer, "重置签到OK!%s" % GameWorld.ChangeTimeNumToStr(startTime))
        PlayerMagicWeapon.CalcMagicWeaponAttr(curPlayer)
        PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
        return
    
    if not cmdList:
        GameWorld.DebugAnswer(curPlayer, "设置:SetSignDay 已签次数 可补次数 是否次月 累计签到次数")
        GameWorld.DebugAnswer(curPlayer, "重置:SetSignDay 0")
        GameWorld.DebugAnswer(curPlayer, "重置签到: SetSignDay 0")
        GameWorld.DebugAnswer(curPlayer, "设置签到: SetSignDay 天 状态")
        GameWorld.DebugAnswer(curPlayer, "状态:1-已签到;2-可补签;3-已领取")
        return
    
    signNum = cmdList[0]
    canAddSignNum = cmdList[1] if len(cmdList) > 1 else 0
    isMulti = cmdList[2] if len(cmdList) > 2 else 0
    totalSignNum = cmdList[3] if len(cmdList) > 3 else signNum
    value = cmdList[0]
    if value <= 0:
        GameWorld.DebugAnswer(curPlayer, "重置签到")
        PlayerSignDay.ResetDaySign(curPlayer)
        return
    
    curTime = int(time.time())
    curDateTime = GameWorld.ChangeTimeNumToDatetime(curTime)
    startDateTime = curDateTime - datetime.timedelta(days=(signNum + canAddSignNum))
    startTimeStr = str(startDateTime)
    startTime = GameWorld.ChangeTimeStrToNum(startTimeStr)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayLoginSignState, 0) # 默认当前未签到
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayLoginSignNum, signNum)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalSignNum, totalSignNum)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayLoginSignIsMulti, isMulti)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayLoginSignStartTime, startTime)
    day = value
    state = cmdList[1] if len(cmdList) > 1 else 0
    GameWorld.DebugAnswer(curPlayer, "设置签到: 天:%s, 状态:%s" % (day, state))
    GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_SignInState, day - 1, state, False)
    PlayerSignDay.Sync_SignDayInfo(curPlayer)
    PlayerMagicWeapon.CalcMagicWeaponAttr(curPlayer)
    PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
    GameWorld.DebugAnswer(curPlayer, "设置已签次数:%s,可补次数:%s,是否次月:%s" % (signNum, canAddSignNum, isMulti))
    GameWorld.DebugAnswer(curPlayer, "本轮开始签到时间:%s" % (startTimeStr))
    return