-- ========================================
-- 玩家升级自动送技能系统配置文件
-- 功能说明：
-- 1. 真实玩家升级时自动学习技能，限制到35级
-- 2. 假人升级时自动学习技能，不受等级限制
-- 3. 支持详细的日志配置和技能排除列表
-- 
-- 主要配置项（在文件底部的配置区域）：
-- - 开关新手送技能: 1=开启, 0=关闭
-- - 真实玩家送技能等级限制: 默认35级
-- - 假人送技能等级限制: 默认255级（无限制）
-- - 各种日志详细程度配置
-- ========================================

local 武器幸运表 = {
  [0] = {0.8, 0.001},
  [1] = {0.6, 0.001},
  [2] = {0.4, 0.001},
  [3] = {0.2, 0.001},
  [4] = {0.05, 0.001},
  [5] = {0.005, 0.001},
  [6] = {0.0005, 0.001},
}

function player_clear_everyday(角色数据) --12点清除变量

  角色数据.脚本变量[数字_魔塔个人标准层数记录] = 0
  角色数据.脚本变量[数字_魔塔个人进阶层数记录] = 0
  角色数据.脚本变量[数字_魔塔个人秘境层数记录] = 0
  角色数据.脚本变量[数字_魔塔个人每日领取记录] = 0

  
  角色数据.脚本变量[数字_遗落寺庙进入次数] = 0

  角色数据.脚本变量[数字_屠魔大厅普通层数记录] = 0
  角色数据.脚本变量[数字_屠魔大厅标准层数记录] = 0
  角色数据.脚本变量[数字_屠魔大厅进阶层数记录] = 0
  角色数据.脚本变量[数字_屠魔大厅每日领取记录] = 0

  角色数据.脚本变量[数字_蜘蛛长廊标准层数记录] = 0
  角色数据.脚本变量[数字_蜘蛛长廊进阶层数记录] = 0
  角色数据.脚本变量[数字_蜘蛛长廊困难层数记录] = 0
  角色数据.脚本变量[数字_蜘蛛长廊每日领取记录] = 0
  角色数据.脚本变量[数字_蜘蛛长廊每日进入次数] = 0

  角色数据.脚本变量[数字_未知一层每日进入次数] = 0
  角色数据.脚本变量[数字_未知二层每日进入次数] = 0

  角色数据.脚本变量[数字_魔虫窟每日进入次数] = 0
  角色数据.脚本变量[数字_妖塔每日进入次数] = 0

end

function player_useitem(玩家, 物品) -- 使用物品
  if 物品.物品编号 == 1500250 then
    玩家:消耗背包物品(1, 物品)
    玩家.金币数量 = 玩家.金币数量 + randomNum(1000, 10000, false)
    return 1
  end

  return 0
end

function playerlogin(玩家)  --登录游戏
  if 玩家.当前地图.副本地图 and not 玩家.当前地图.副本关闭 then
    local 副本 = 玩家:查找我的副本(88)
    if 副本 ~= nil then
      玩家.当前地图 = 副本
    end
  end
end

-- function player_clear_everyday(角色数据) --12点清除变量
--   角色数据.在线时间.V = 0
-- end

function player_die(玩家, 击杀者, 技能击杀) --人物死亡触发
  if (击杀者.对象类型 == 游戏对象类型.玩家 and 击杀者.对象名字 ~= 玩家.对象名字) then
    if 玩家.角色数据.脚本数字[1000] == 1 then
      击杀者.元宝数量 = 击杀者.元宝数量 + (500 * 100)
      玩家.角色数据.脚本数字[1000] = 0
      玩家:移除Buff时处理(35242)
      玩家:更新玩家战力()
      玩家:更新对象属性()
      玩家:发送顶部公告("玩家：[<font color='#00ff00'><u>".. 击杀者.对象名字 .."</u></font>]击杀了拥有狂暴称号的[<font color='#00ff00'><u>狂暴之力</u></font>]获得了(<font color='#00ff00'><u>500</u></font>)元宝！", true)
    end
  end
end

function player_pickup(玩家, 物品)  -- 拾取触发
  if 拾取奖励编号[物品.物品编号] ~= nil and 系统数据.数据.脚本字符[拾取奖励编号[物品.物品编号][1]] == "暂无" then
    系统数据.数据.脚本字符[拾取奖励编号[物品.物品编号][1]] = 玩家.对象名字
    玩家:脚本添加元宝(拾取奖励编号[物品.物品编号][2], 0, "首曝奖励")
    玩家:发送顶部公告("恭喜玩家：<font color='#00ff00'><u>[".. 玩家.对象名字 .."]</u></font>第一个打到了<font color='#00ff00'><u>[".. 物品.物品名字去数字 .."]</u></font>，获得了<font color='#00ff00'><u>[".. 拾取奖励编号[物品.物品编号][2] .."]</u></font>元宝奖励！",false,false)
    玩家:发送系统消息("恭喜玩家：<font color='#00ff00'><u>[".. 玩家.对象名字 .."]</u></font>第一个打到了<font color='#00ff00'><u>[".. 物品.物品名字去数字 .."]</u></font>，获得了<font color='#00ff00'><u>[".. 拾取奖励编号[物品.物品编号][2] .."]</u></font>元宝奖励！")
  end
end


-- 定义新手送技能函数
-- function 新手送技能(玩家, level)
--   for key, item in pairs(游戏物品.数据表) do  --88行
--     if item.物品分类 == 物品使用分类.技能书籍 and
--        item.需要职业 == 玩家.角色职业 and
--        item.附加技能 > 0 and
--        item.需要等级 <= level and
--        not 玩家.主体技能表:ContainsKey(item.附加技能) then
--       local success, err = pcall(function()
--         玩家:玩家学习技能(item.附加技能)
--       end)
--       if not success then
--         主程.添加系统日志("新手送技能出错,技能为" .. item.物品名字)
--       end
--     end
--   end
-- end

-- 定义需要排除的技能 ID 列表
local 排除技能列表 = {
  [2551] = true,  -- 初级冰咆哮
  -- 如果还有其他需要排除的技能，继续添加
  -- [技能ID] = true,
}

-- 定义新手送技能函数 - 优化版
function 新手送技能(玩家, level)
  local 学会技能数量 = 0
  local 跳过技能数量 = 0
  local 错误技能数量 = 0
  
  local enumerator = 游戏物品.数据表:GetEnumerator()
  while enumerator:MoveNext() do
    local item = enumerator.Current.Value
    if item ~= nil and
       item.物品分类 == 物品使用分类.技能书籍 and
       item.需要职业 == 玩家.角色职业 and
       item.附加技能 > 0 and
       item.需要等级 <= level then

      -- 检查是否已经学会
      if 玩家.主体技能表:ContainsKey(item.附加技能) then
        跳过技能数量 = 跳过技能数量 + 1
      -- 检查是否在排除列表
      elseif 排除技能列表[item.附加技能] then
        跳过技能数量 = 跳过技能数量 + 1
        if 玩家.是否假人 then
          主程.添加系统日志("假人 [" .. 玩家.对象名字 .. "] 跳过排除技能: " .. item.物品名字)
        end
      else
        -- 尝试学习技能
        local success, err = pcall(function()
          玩家:玩家学习技能(item.附加技能)
          学会技能数量 = 学会技能数量 + 1
          
          -- 根据配置决定是否显示详细的技能学习日志
          if 玩家.是否假人 and 假人学习技能详细日志 == 1 then
            主程.添加系统日志("假人 [" .. 玩家.对象名字 .. "] 学会技能: " .. item.物品名字 .. " (需要等级:" .. item.需要等级 .. ")")
          elseif not 玩家.是否假人 and 真实玩家学习技能日志 == 1 then
            主程.添加系统日志("玩家 [" .. 玩家.对象名字 .. "] 学会技能: " .. item.物品名字)
          end
        end)
        
        if not success then
          错误技能数量 = 错误技能数量 + 1
          主程.添加系统日志("技能学习失败 - 玩家: [" .. 玩家.对象名字 .. "], 技能: " .. item.物品名字 .. ", 错误: " .. tostring(err))
        end
      end
    end
  end
  
  -- 汇总日志（根据配置显示）
  if 玩家.是否假人 then
    -- 假人汇总日志（只有在学会技能或出错时才显示）
    if 假人学习技能详细日志 == 1 and (学会技能数量 > 0 or 错误技能数量 > 0) then
      主程.添加系统日志("假人 [" .. 玩家.对象名字 .. "] " .. level .. "级技能学习汇总: 学会" .. 学会技能数量 .. "个, 跳过" .. 跳过技能数量 .. "个, 失败" .. 错误技能数量 .. "个")
    elseif 假人学习技能详细日志 == 0 and 学会技能数量 > 0 then
      -- 简化日志模式
      主程.添加系统日志("假人 [" .. 玩家.对象名字 .. "] " .. level .. "级学会 " .. 学会技能数量 .. " 个技能")
    end
  else
    -- 真实玩家汇总日志
    if 真实玩家学习技能日志 == 1 and 学会技能数量 > 0 then
      主程.添加系统日志("玩家 [" .. 玩家.对象名字 .. "] " .. level .. "级学会了 " .. 学会技能数量 .. " 个新技能")
    end
  end
  
  -- 总是显示错误信息（无论配置如何）
  if 错误技能数量 > 0 then
    主程.添加系统日志("警告: [" .. 玩家.对象名字 .. "] 有 " .. 错误技能数量 .. " 个技能学习失败")
  end
end

-- ========== 升级送技能配置区域 ==========
开关新手送技能 = 1  -- 开启新手送技能功能 (1=开启, 0=关闭)
真实玩家送技能等级限制 = 35  -- 真实玩家赠送技能的等级上限
假人送技能等级限制 = 255  -- 假人赠送技能的等级上限（255=不受限制）

-- 日志详细程度配置
假人学习技能详细日志 = 1  -- 假人学习技能时是否显示详细日志 (1=详细, 0=简化)
真实玩家学习技能日志 = 1  -- 真实玩家学习技能时是否显示日志 (1=显示, 0=不显示)

-- 技能学习提醒配置
真实玩家等级提醒阈值 = 5  -- 真实玩家距离等级限制多少级时开始提醒
-- ==========================================

function player_up(玩家)
  -- 检查是否开启送技能功能
  if 开关新手送技能 ~= 1 then
    return
  end
  
  -- 根据是否是假人确定等级限制
  local 等级限制
  if 玩家.是否假人 then
    等级限制 = 假人送技能等级限制
  else
    等级限制 = 真实玩家送技能等级限制
  end
  
  -- 调用新手送技能函数
  if 玩家.当前等级 <= 等级限制 then
    新手送技能(玩家, 玩家.当前等级)
    
    -- 根据配置记录日志
    if 玩家.是否假人 then
      if 假人学习技能详细日志 == 1 then
        if 假人送技能等级限制 >= 255 then
          主程.添加系统日志("假人 [" .. 玩家.对象名字 .. "] 升级到 " .. 玩家.当前等级 .. " 级，自动学习技能（无等级限制）")
        else
          主程.添加系统日志("假人 [" .. 玩家.对象名字 .. "] 升级到 " .. 玩家.当前等级 .. " 级，自动学习技能（限制到 " .. 假人送技能等级限制 .. " 级）")
        end
      end
    else
      if 真实玩家学习技能日志 == 1 then
        -- 真实玩家接近等级限制时提醒
        if 玩家.当前等级 >= 真实玩家送技能等级限制 - 真实玩家等级提醒阈值 then
          主程.添加系统日志("玩家 [" .. 玩家.对象名字 .. "] 升级到 " .. 玩家.当前等级 .. " 级，自动学习技能（还有 " .. (真实玩家送技能等级限制 - 玩家.当前等级) .. " 级停止送技能）")
        else
          主程.添加系统日志("玩家 [" .. 玩家.对象名字 .. "] 升级到 " .. 玩家.当前等级 .. " 级，自动学习技能")
        end
      end
    end
  elseif 玩家.当前等级 > 等级限制 and not 玩家.是否假人 then
    -- 真实玩家超过等级限制时提醒（只提醒一次）
    if 玩家.当前等级 == 真实玩家送技能等级限制 + 1 and 真实玩家学习技能日志 == 1 then
      主程.添加系统日志("玩家 [" .. 玩家.对象名字 .. "] 已达到 " .. 真实玩家送技能等级限制 .. " 级，自动送技能功能已停止")
    end
  end

  -- 其他升级处理逻辑（如果有）
end

function player_levelup(玩家)
  return player_up(玩家)
end


