--[[
@file ChongZhiZhongXinOBJ.lua
@brief 充值中心UI对象类
@description 处理游戏内充值功能的UI界面,包括支付方式切换、充值档位显示、自定义充值等功能
@author 游戏开发团队
]]

-- 充值中心对象类定义
ChongZhiZhongXinOBJ = {}
-- 类名标识,用于窗口管理和调试
ChongZhiZhongXinOBJ.__cname = "ChongZhiZhongXinOBJ"
-- 加载充值中心配置文件,包含充值档位、奖励等信息
ChongZhiZhongXinOBJ.config = ssrRequireCsvCfg("cfg_ChongZhiZhongXin")
-- 当前选择的支付方式 (1=支付宝, 2=微信, 3=其他)
ChongZhiZhongXinOBJ.PayWay = 1

-------------------------------↓↓↓ UI操作 ↓↓↓---------------------------------------

--[[
@function main
@brief 充值中心主界面初始化函数
@param objcfg 对象配置参数,包含UI路径和NPC ID等信息
@description 创建充值中心窗口,设置UI布局,绑定事件处理函数
]]
function ChongZhiZhongXinOBJ:main(objcfg)
    -- 创建主窗口容器,设置为模态窗口
    local parent = GUI:Win_Create(self.__cname, 0, 0, 0, 0, false, false, true, true, true, objcfg.NPCID)
    -- 加载UI布局文件
    GUI:LoadExport(parent, objcfg.UI_PATH)
    -- 保存父窗口引用
    self._parent = parent
    -- 创建UI代理对象,便于访问UI控件
    self.ui = GUI:ui_delegate(parent)
    
    -- 设置背景图片位置(居中偏移-30像素)
    ssrSetWidgetPosition(parent, self.ui.ImageBG, 2, -30, 0)
    
    -- 背景点击事件(防止点击穿透到下层界面)
    GUI:addOnClickEvent(self.ui.ImageBG, function()
        --ssrPrint("我是防点击穿透")
    end)
    
    -- 启用关闭区域的触摸响应
    GUI:setTouchEnabled(self.ui.CloseLayout,true)
    
    -- 点击背景关闭区域关闭窗口
    GUI:addOnClickEvent(self.ui.CloseLayout, function()
        GUI:Win_Close(self._parent)
    end)

    -- 点击关闭按钮关闭窗口
    GUI:addOnClickEvent(self.ui.CloseButton, function()
        GUI:Win_Close(self._parent)
    end)
    
    -- 播放窗口打开的缩放动画效果
    GUI:Timeline_Window1(self._parent)
    -- 初始化UI显示内容
    self:UpdateUI()

    -------------------------------↓↓↓支付方式切换↓↓↓-------------------------------
    
    -- 支付方式按钮1点击事件(支付宝)
    GUI:addOnClickEvent(self.ui.TopUp_Button_1, function()
        ChongZhiZhongXinOBJ:Switchpay(1)
    end)

    -- 支付方式按钮2点击事件(微信支付)
    GUI:addOnClickEvent(self.ui.TopUp_Button_2, function()
        ChongZhiZhongXinOBJ:Switchpay(2)
    end)

    -- 支付方式按钮3点击事件(其他支付方式)
    GUI:addOnClickEvent(self.ui.TopUp_Button_3, function()
        ChongZhiZhongXinOBJ:Switchpay(3)
    end)
    
    -------------------------------↑↑↑支付方式切换↑↑↑-------------------------------

    -- 自定义充值按钮点击事件
    GUI:addOnClickEvent(self.ui.Request_Button, function()
        -- 获取用户输入的充值金额
        local num = GUI:TextInput_getString(self.ui.Input)
        -- 发送自定义充值请求到服务器
        ssrMessage:sendmsg(ssrNetMsgCfg.ChongZhiZhongXin_Request1, self.PayWay, num)
    end)
end

--[[
@function Switchpay
@brief 切换支付方式显示
@param num 支付方式编号 (1=支付宝, 2=微信, 3=其他)
@description 隐藏所有支付方式界面,只显示选中的支付方式
]]
function ChongZhiZhongXinOBJ:Switchpay(num)
    -- 隐藏所有支付方式界面
    GUI:setVisible(self.ui.ZhiFuFangShi1, false)  -- 支付宝
    GUI:setVisible(self.ui.ZhiFuFangShi2, false)  -- 微信支付
    GUI:setVisible(self.ui.ZhiFuFangShi3, false)  -- 其他支付方式
    
    -- 显示选中的支付方式界面
    GUI:setVisible(self.ui["ZhiFuFangShi"..num], true)
    
    -- 更新当前支付方式
    self.PayWay = num
end

--[[
@function UpdateUI
@brief 更新充值中心UI显示
@description 刷新支付方式选择、充值档位列表、奖励显示等所有UI元素
]]
function ChongZhiZhongXinOBJ:UpdateUI()
    -- 切换到当前选择的支付方式
    ChongZhiZhongXinOBJ:Switchpay(self.PayWay)
    
    -- 清空充值档位容器中的所有子控件
    GUI:removeAllChildren(self.ui.Panel_1)
    

    -- [1] = {
	-- 	Image = "type1",
	-- 	Sum = 10,
	-- 	award = {
	-- 		[1] = {
	-- 			[1] = "绑定灵符",
	-- 			[2] = 100,
	-- 		},
	-- 		[2] = {
	-- 			[1] = "元宝",
	-- 			[2] = 50000,
	-- 		},
	-- 		[3] = {
	-- 			[1] = "焚天石",
	-- 			[2] = 188,
	-- 		},
	-- 		[4] = {
	-- 			[1] = "天工之锤",
	-- 			[2] = 188,
	-- 		},
	-- 	},
	-- },
    -- 创建8个充值档位按钮
    for i = 1, 8 do
        -- 获取当前档位的配置信息
        local cfg = self.config[i]
        
        -- 创建档位背景图片
        local Type_Image = GUI:Image_Create(self.ui.Panel_1, "Type_Image"..i, 0.00, 0.00, "res/custom/ChongZhiZhongXin/".. cfg.Image ..".png")
        
        -- 创建可点击的按钮区域
        local ButtonLayout = GUI:Layout_Create(Type_Image, "ButtonLayout"..i, 5.00, 15.00, 190, 235, false)
        -- 启用触摸响应
        GUI:setTouchEnabled(ButtonLayout,true)
        -- 绑定充值按钮点击事件
        GUI:addOnClickEvent(ButtonLayout, function()
            -- 发送充值请求:支付方式、档位编号、充值金额
            ssrMessage:sendmsg(ssrNetMsgCfg.ChongZhiZhongXin_Request2,self.PayWay,i,cfg.Sum)
        end)
        
        -- 创建奖励物品显示区域
        local itemlooks = GUI:Layout_Create(Type_Image, "itemlooks"..i, 35.00, 67.00, 160, 35, false)
        
        -- 根据领取状态显示不同的奖励内容
        if self.data[i] == 0 then
            -- 未领取:显示完整奖励列表
            ssrAddItemListX(itemlooks, cfg.award,"奖励1",{imgRes = "",spacing = 45, itemScale = 1})
        else
            -- 已领取:只显示首个奖励物品
            ssrAddItemListX(itemlooks, {cfg.award[1]},"奖励",{imgRes = "",spacing = 45, itemScale = 1})
        end
    end
    
    -- 设置充值档位容器的自动布局(4列网格布局)
    GUI:UserUILayout(self.ui.Panel_1, { dir=3, addDir=1, colnum=4 })

    -- 统计已领取的档位数量
    local AwardState = 0
    for i = 1, 8 do
        AwardState = AwardState + self.data[i]
    end
    
    -- 如果所有档位都已领取,隐藏累计充值显示
    if AwardState == 8 then
        GUI:setVisible(self.ui.Money_24_Img, false)
    else
        -- 显示当前累计充值金额
        GUI:Text_setString(self.ui.Money_24_Num, self.data[9])
    end
    
    -- 显示玩家当前拥有的货币数量
    GUI:Text_setString(self.ui.Money_22_Num, self.data[10])
end

-------------------------------↓↓↓ 网络消息 ↓↓↓---------------------------------------

--[[
@function SyncResponse
@brief 同步充值数据响应处理
@param arg1, arg2, arg3 网络消息参数(未使用)
@param data 服务器返回的充值数据
@description 接收服务器推送的充值状态更新,刷新UI显示
]]
function ChongZhiZhongXinOBJ:SyncResponse(arg1, arg2, arg3, data)
    -- 保存服务器返回的充值数据
    self.data = data
    -- SL:dump(data)  -- 调试用:打印数据内容
    
    -- 如果充值中心窗口当前处于打开状态,则刷新UI
    if GUI:GetWindow(nil, self.__cname) then
        self:UpdateUI()
    end
end

--[[
@function OpenUI
@brief 打开充值中心UI请求处理
@param arg1, arg2, arg3 网络消息参数(未使用)
@param data 服务器数据(未使用)
@description 响应服务器的打开充值中心UI指令
]]
function ChongZhiZhongXinOBJ:OpenUI(arg1, arg2, arg3, data)
    -- 通过UI管理器打开充值中心窗口
    ssrUIManager:OPEN(ssrObjCfg.ChongZhiZhongXin)
end

-- 返回充值中心对象类
return ChongZhiZhongXinOBJ
    local config = {
    	[1] = {
    		Image = "type1",
    		Sum = 10,
    		award = {
    			[1] = {
    				[1] = "绑定灵符",
    				[2] = 100,
    			},
    			[2] = {
    				[1] = "元宝",
    				[2] = 50000,
    			},
    			[3] = {
    				[1] = "焚天石",
    				[2] = 188,
    			},
    			[4] = {
    				[1] = "天工之锤",
    				[2] = 188,
    			},
    		},
    	},
    	[2] = {
    		Image = "type2",
    		Sum = 30,
    		award = {
    			[1] = {
    				[1] = "绑定灵符",
    				[2] = 300,
    			},
    			[2] = {
    				[1] = "绑定金币",
    				[2] = 10000000,
    			},
    			[3] = {
    				[1] = "元宝",
    				[2] = 100000,
    			},
    			[4] = {
    				[1] = "幻灵水晶",
    				[2] = 188,
    			},
    		},
    	},
    	[3] = {
    		Image = "type3",
    		Sum = 68,
    		award = {
    			[1] = {
    				[1] = "绑定灵符",
    				[2] = 680,
    			},
    			[2] = {
    				[1] = "元宝",
    				[2] = 300000,
    			},
    			[3] = {
    				[1] = "焚天石",
    				[2] = 588,
    			},
    			[4] = {
    				[1] = "天工之锤",
    				[2] = 588,
    			},
    		},
    	},
    	[4] = {
    		Image = "type4",
    		Sum = 128,
    		award = {
    			[1] = {
    				[1] = "绑定灵符",
    				[2] = 1280,
    			},
    			[2] = {
    				[1] = "绑定金币",
    				[2] = 30000000,
    			},
    			[3] = {
    				[1] = "幻灵水晶",
    				[2] = 328,
    			},
    			[4] = {
    				[1] = "打工皇帝[称号]",
    				[2] = 1,
    			},
    		},
    	},
    	[5] = {
    		Image = "type5",
    		Sum = 198,
    		award = {
    			[1] = {
    				[1] = "绑定灵符",
    				[2] = 1980,
    			},
    			[2] = {
    				[1] = "元宝",
    				[2] = 500000,
    			},
    			[3] = {
    				[1] = "鸿运当头",
    				[2] = 1,
    			},
    			[4] = {
    				[1] = "怪物猎人[称号]",
    				[2] = 1,
    			},
    		},
    	},
    	[6] = {
    		Image = "type6",
    		Sum = 328,
    		award = {
    			[1] = {
    				[1] = "绑定灵符",
    				[2] = 3280,
    			},
    			[2] = {
    				[1] = "绑定金币",
    				[2] = 50000000,
    			},
    			[3] = {
    				[1] = "鸿运当头",
    				[2] = 1,
    			},
    			[4] = {
    				[1] = "魔法盾[技能]",
    				[2] = 1,
    			},
    		},
    	},
    	[7] = {
    		Image = "type7",
    		Sum = 648,
    		award = {
    			[1] = {
    				[1] = "绑定灵符",
    				[2] = 6480,
    			},
    			[2] = {
    				[1] = "元宝",
    				[2] = 1000000,
    			},
    			[3] = {
    				[1] = "鸿运当头",
    				[2] = 1,
    			},
    			[4] = {
    				[1] = "夜明珠",
    				[2] = 1,
    			},
    		},
    	},
    	[8] = {
    		Image = "type8",
    		Sum = 998,
    		award = {
    			[1] = {
    				[1] = "绑定灵符",
    				[2] = 9980,
    			},
    			[2] = {
    				[1] = "元宝",
    				[2] = 2000000,
    			},
    			[3] = {
    				[1] = "鸿运当头",
    				[2] = 2,
    			},
    			[4] = {
    				[1] = "牛马主宰印",
    				[2] = 1,
    			},
    		},
    	},
    }
    return config
      -- 定义充值中心模块表
      local ChongZhiZhongXin = {}
      -- 引入充值中心配置文件
      local config = include("QuestDiary/cfgcsv/cfg_ChongZhiZhongXin.lua")
      
      --[[ 
        处理充值请求1 (自定义金额充值)
        @param actor 发起请求的玩家对象
        @param PayWay 支付方式
        @param Sum 充值金额
      ]]
      function ChongZhiZhongXin.Request1(actor, PayWay ,Sum)
          -- 校验充值金额是否为整数
          if Sum % 1 ~= 0 then return end
      
          -- 校验最低充值金额
          if Sum < 10 then
              Player.sendmsgEx(actor, "提示#251|:#255|最低充值|10元#249|,请重新输入...")
              return
          end
          -- 调用支付接口,7可能代表某种货币类型或渠道
          pullpay(actor,Sum,PayWay,7)
      end
      
      --[[ 
        检查玩家是否已领取所有首充翻倍奖励,并授予“至尊玩家”称号
        @param actor 玩家对象
      ]]
      local function CheckAwardState(actor)
          local Num = 0
          -- 遍历8个首充翻倍标识
          for i = 1, 8 do
              -- 获取对应标识的状态
              local bool = getflagstatus(actor, VarCfg["F_首充翻倍标识_".. i ..""])
              Num = Num + bool
          end
          -- 如果8个标识都已激活,则授予称号
          if Num < 8 then return   end
          confertitle(actor, "至尊玩家", 1)
      end
      
      --[[ 
        处理充值请求2 (固定档位充值或礼包购买)
        @param actor 发起请求的玩家对象
        @param PayWay 支付方式
        @param Sort 礼包或档位编号
        @param Sum 支付金额 (在某些情况下,如果玩家有足够积分,则用积分兑换,否则走支付流程)
      ]]
      function ChongZhiZhongXin.Request2(actor,PayWay,Sort,Sum)
          -- 获取指定档位首充翻倍标识的状态
          local bool = getflagstatus(actor, VarCfg["F_首充翻倍标识_".. Sort ..""])
          -- 获取玩家当前的换购积分
          local JiFenNum = getplaydef(actor, VarCfg["U_换购积分"])
          -- 从配置中获取当前档位的信息
          local cfg = config[Sort]
          -- 如果该档位首充翻倍标识未激活 (bool == 0)
          if bool == 0  then
              -- 如果玩家的换购积分足够支付当前档位
              if JiFenNum >= cfg.Sum then
                  -- 激活该档位的首充翻倍标识
                  setflagstatus(actor, VarCfg["F_首充翻倍标识_".. Sort ..""], 1)
                  -- 重新获取换购积分 (虽然前面获取过,但这里可能是为了确保最新值,或者编码习惯)
                  local JiFenNum = getplaydef(actor, VarCfg["U_换购积分"])
                  -- 扣除消耗的积分
                  JiFenNum = JiFenNum - cfg.Sum
                  setplaydef(actor, VarCfg["U_换购积分"], JiFenNum)
                  -- 获取该档位的奖励配置
                  local award = cfg.award
                  local JieShao = "" -- 用于邮件内容的奖励描述字符串
                  local JiangLi = "" -- 用于邮件附件的奖励字符串
                  -- 遍历奖励配置,拼接奖励描述 (跳过第一个,通常第一个是货币)
                  for i, v in ipairs(award) do
                      if i >= 2 then
                          JieShao = JieShao .. "\\获得"..v[1].."x"..v[2]
                      end
                  end
      
                  -- 遍历奖励配置,拼接邮件附件奖励字符串 (跳过第一个)
                  for i, v in ipairs(award) do
                      if i >= 2 then
                          JiangLi = JiangLi .. "".. v[1] .."#"..v[2].."#51&"
                      end
                  end
                  -- 获取玩家UserID
                  local UserId = getconst(actor, "<$USERID>")
                  -- 发送奖励邮件
                  sendmail(UserId, 5001, cfg.Sum.."元充值礼包",JieShao,JiangLi)
                  -- 给玩家发送提示消息
                  Player.sendmsgEx(actor, "提示#251|:#255|恭喜你,领取|"..  cfg.Sum .."元充值礼包#249|,祝您游戏愉快...")
                  -- 同步充值数据到客户端
                  ChongZhiZhongXin.SyncResponse(actor)
                  -- 检查是否满足授予“至尊玩家”称号的条件
                  CheckAwardState(actor)
              else
                  -- 如果积分不足,则走正常支付流程
                  pullpay(actor,Sum,PayWay,7)
              end
          else
              -- 如果该档位首充翻倍标识已激活,则直接走正常支付流程 (可能是重复购买)
              pullpay(actor,Sum,PayWay,7)
          end
          -- release_print("支付方式",PayWay) -- 调试打印,已注释
          -- release_print("礼包编号",Sort) -- 调试打印,已注释
          -- release_print("支付金额",Sum) -- 调试打印,已注释
      end
      
      --[[ 
        同步充值相关数据到客户端
        @param actor 玩家对象
        @param logindatas 可选参数,登录时批量同步数据用,如果提供,则将数据插入此表,否则直接发送消息
      ]]
      function ChongZhiZhongXin.SyncResponse(actor, logindatas)
          local data = { } -- 用于存储同步数据的表
          -- 遍历8个首充翻倍标识,获取状态并存入data表
          for i = 1, 8 do
              local num = getflagstatus(actor, VarCfg["F_首充翻倍标识_".. i ..""])
              table.insert(data, num)
          end
          -- 获取并存入玩家的换购积分
          local JiFenNum = getplaydef(actor, VarCfg["U_换购积分"])
          table.insert(data, JiFenNum)
          -- 获取并存入玩家的累计真实充值金额
          local LeiJiChongZhi = getplaydef(actor, VarCfg["U_真实充值"])
          table.insert(data, LeiJiChongZhi)
      
          -- 构建网络消息数据包
          local _login_data = { ssrNetMsgCfg.ChongZhiZhongXin_SyncResponse, 0, 0, 0, data }
          -- 如果提供了logindatas (通常在登录流程中),则将数据添加到logindatas表中批量发送
          if logindatas then
              table.insert(logindatas, _login_data)
          else
              -- 否则,直接发送同步消息给客户端
              Message.sendmsg(actor, ssrNetMsgCfg.ChongZhiZhongXin_SyncResponse, 0, 0, 0, data)
          end
      end
      -- 注册充值中心相关的网络消息处理函数
      Message.RegisterNetMsg(ssrNetMsgCfg.ChongZhiZhongXin, ChongZhiZhongXin)
      
      --[[ 
        充值回调函数,当玩家充值成功后由支付系统调用
        @param actor 玩家对象
        @param gold 充值获得的货币数量
        @param productid 商品ID或NPC标识 (在此处未使用)
        @param moneyid 充值货币类型 (7:灵符, 20:绑定灵符)
      ]]
      local function _onRecharge(actor, gold, productid, moneyid)
          -- 只处理灵符和绑定灵符的充值回调
          if moneyid ~= 7 and moneyid ~= 20 then return end
          -- local name = getbaseinfo(actor, ConstCfg.gbase.name) -- 调试代码,已注释
          -- sendmsg(actor, 1, '{"Msg":"<font color=\'#ff0000\'>玩家'.. name ..'。。。</font>","Type":9}') -- 调试代码
          -- sendmsg(actor, 1, '{"Msg":"<font color=\'#ff0000\'>货币'.. moneyid ..'。。。</font>","Type":9}') -- 调试代码
          -- sendmsg(actor, 1, '{"Msg":"<font color=\'#ff0000\'>数量'.. gold ..'。。。</font>","Type":9}') -- 调试代码
          -- sendmsg(actor, 1, '{"Msg":"<font color=\'#ff0000\'>NPC'.. productid ..'。。。</font>","Type":9}') -- 调试代码
          
          -- 给玩家增加对应货币 (货币类型11可能是游戏内的通用充值货币)
          changemoney(actor, 11, "+", gold, "充值回调增加", true)
          
          --------------增加每日充值记录--------------
          local RiChongNum = getplaydef(actor, VarCfg["J_日冲记录"])
          RiChongNum = RiChongNum + gold
          setplaydef(actor, VarCfg["J_日冲记录"], RiChongNum)
          
          --------------增加真实充值累计--------------
          local LeiJiChongZhi = getplaydef(actor, VarCfg["U_真实充值"])
          LeiJiChongZhi = LeiJiChongZhi + gold
          setplaydef(actor, VarCfg["U_真实充值"], LeiJiChongZhi)
          
          --------------增加礼包积分 (如果玩家不是“至尊玩家”)--------------
          if not checktitle(actor, "至尊玩家") then
              local JiFenNum = getplaydef(actor, VarCfg["U_换购积分"])
              JiFenNum = JiFenNum + gold
              setplaydef(actor, VarCfg["U_换购积分"], JiFenNum)
          end
      
          local OnTheList = false -- 标记充值金额是否匹配某个首充档位
          local AwardInfo = {}    -- 存储匹配到的档位信息
          -- 遍历充值配置,检查充值金额是否与某个档位的金额完全匹配
          for i, v in ipairs(config) do
              if gold == v.Sum then
                  -- 获取该档位首充翻倍标识的状态
                  local num = getflagstatus(actor, VarCfg["F_首充翻倍标识_".. i ..""])
                  -- 如果该档位尚未首充 (标识为0)
                  if num == 0 then
                      -- 激活首充标识
                      setflagstatus(actor, VarCfg["F_首充翻倍标识_".. i ..""], 1)
                      OnTheList = true -- 标记已匹配到首充档位
                      AwardInfo = v    -- 保存档位信息
                      ChongZhiZhongXin.SyncResponse(actor) -- 同步数据到客户端
                      break -- 找到匹配即跳出循环
                  end
              end
          end
      
          -- 如果成功匹配到首充档位并激活了标识 (OnTheList为true)
          if OnTheList then
              -- 获取当前换购积分 (此时应该是已经加上了本次充值额度的积分)
              local JiFenNum = getplaydef(actor, VarCfg["U_换购积分"])
              -- 扣除该档位对应的“消耗”积分 (因为首充通常是直接给奖励,这里的逻辑可能是:充值先加等额积分,然后如果触发首充,再用积分“兑换”首充礼包)
              JiFenNum = JiFenNum - AwardInfo.Sum 
              setplaydef(actor, VarCfg["U_换购积分"], JiFenNum)
              
              local award = AwardInfo.award -- 获取档位奖励配置
              local JieShao = ""          -- 邮件描述
              local JiangLi = ""          -- 邮件附件
      
              -- 拼接邮件奖励描述
              for i, v in ipairs(award) do
                  if i >= 2 then
                      JieShao = JieShao .. "\\获得"..v[1].."x"..v[2]
                  end
              end
      
              -- 拼接邮件附件奖励
              for i, v in ipairs(award) do
                  if i >= 2 then
                      JiangLi = JiangLi .. "".. v[1] .."#"..v[2].."#51&"
                  end
              end
      
              local UserId = getconst(actor, "<$USERID>")
              -- 发送首充礼包邮件
              sendmail(UserId, 5001, AwardInfo.Sum.."元充值礼包",JieShao,JiangLi)
              -- 给玩家发送提示
              Player.sendmsgEx(actor, "提示#251|:#255|恭喜你,领取|"..  AwardInfo.Sum .."元充值礼包#249|,祝您游戏愉快...")
              -- 同步充值数据到客户端
              ChongZhiZhongXin.SyncResponse(actor)
              -- 检查是否满足授予“至尊玩家”称号的条件
              CheckAwardState(actor)
          end
          -- 无论是否触发首充,都同步一次数据 (确保累计充值等信息更新)
          ChongZhiZhongXin.SyncResponse(actor)
          -- 推送充值完成事件
          GameEvent.push(EventCfg.onRechargeEnd, actor)
      
      end
      -- 注册充值事件回调
      GameEvent.add(EventCfg.onRecharge, _onRecharge, ChongZhiZhongXin)
      
      --[[ 
        玩家登录完成事件回调
        @param actor 玩家对象
        @param logindatas 登录时用于批量同步数据的表
      ]]
      local function _onLoginEnd(actor, logindatas)
          -- 同步充值相关数据到客户端
          ChongZhiZhongXin.SyncResponse(actor, logindatas)
      end
      -- 注册登录完成事件回调
      GameEvent.add(EventCfg.onLoginEnd, _onLoginEnd, ChongZhiZhongXin)
      
      --[[ 
        杀怪事件回调 (怪物猎人功能)
        每击杀10只怪物,如果玩家拥有“怪物猎人”称号,则永久增加1点切割伤害
        @param actor 玩家对象
        @param monobj 被击杀的怪物对象
      ]]
      local function _onKillMon(actor, monobj)
          -- 检查玩家是否拥有“怪物猎人”称号
          if checktitle(actor, "怪物猎人") then
              -- 获取当前杀怪计数
              local KillMonNum = getplaydef(actor, VarCfg["N$怪物猎人_杀怪计数"])
              KillMonNum = KillMonNum + 1
              setplaydef(actor, VarCfg["N$怪物猎人_杀怪计数"], KillMonNum)
              -- 如果杀怪数量达到10
              if KillMonNum >= 10  then
                  -- 重置杀怪计数
                  setplaydef(actor, VarCfg["N$怪物猎人_杀怪计数"], 0)
                  -- 获取当前“怪物猎人”层数
                  local num = getplaydef(actor, VarCfg["U_怪物猎人层数"])
                  num = num + 1
                  setplaydef(actor, VarCfg["U_怪物猎人层数"], num)
                  -- 增加玩家切割属性 (具体属性ID和计算方式由"3#200#".. num ..""决定)
                  setaddnewabil(actor,12,"=","3#200#".. num .."")
              end
          end
      end
      -- 注册杀怪事件回调
      GameEvent.add(EventCfg.onKillMon, _onKillMon, ChongZhiZhongXin)
      
      
      -- 返回模块表,使其可以被其他脚本引用
      return ChongZhiZhongXin
        撰写回复...