魔力宝贝

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

[GP] TheTowerV2ForPlayer.lua--无之塔

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式
local TheHeroTowerSqlName = "thetowerhero"
local TheHeroTowerSqlCdkey = "cdkey"
local TheHeroTowerSqlReg = "Reg"
local TheHeroTowerSqlPlayerName = "PlayerName"
local TheHeroTowerSqlFloorStart = "FloorStart"
local TheHeroTowerSqlFloorNow = "FloorNow"
local TheHeroTowerSqlFloorMax = "FloorMax"
local TheHeroTowerSqlFloorMaxTime = "FloorMaxTime"
local TheHeroTowerSqlPoint = "FloorPoint"

local TheHeroTowerFieldHistory = "TheTowerPlayerHistory" --最近获胜层数

local TheHeroTowerName = "勇者试炼" --塔名
local TheHeroTowerMainMsg = "\n这里是勇者试炼的说明。限于篇幅,具体请看论坛-自制任务版块-勇者试炼相关攻略。" --无限塔说明

local TheHeroTowerenemyidgroup = {} --怪物模版
TheHeroTowerenemyidgroup[1] = {} --怪物模版 enemyidgroup1[i] = x i为序号 x为怪物id
TheHeroTowerenemyidgroup[2] = {} --怪物模版 enemyidgroup1[i] = x i为序号 x为怪物id
TheHeroTowerenemyidgroup[3] = {} --怪物模版 enemyidgroup1[i] = x i为序号 x为怪物id

for i = 777001,777294 do
        TheHeroTowerenemyidgroup[1][i-777000] = i
end
for i = 777296,777385 do
        TheHeroTowerenemyidgroup[1][i-777001] = i
end
for i = 777388,777405 do
        TheHeroTowerenemyidgroup[1][i-777003] = i
end
for i = 777501,777590 do
        TheHeroTowerenemyidgroup[2][i-777500] = i
end
for i = 777701,777752 do
        TheHeroTowerenemyidgroup[3][i-777700] = i
end



local TheHeroTowerfragmentitemnum = {} --点数与关数倍率
TheHeroTowerfragmentitemnum[1] = 1 --1关前每关1点
TheHeroTowerfragmentitemnum[50] = 1 --130关前每关1点
TheHeroTowerfragmentitemnum[90] = 2 --130关前每关2点
TheHeroTowerfragmentitemnum[120] = 3 --130关前每关2点
TheHeroTowerfragmentitemnum[200] = 5 --130关前每关2点

local TheHeroTowerenemylvprefloor = {} --关数与怪物等级比例
--TheHeroTowerenemylvprefloor[1] = {1,1,1,1,1,1,1} --TheHeroTowerenemylvprefloor[关数] = {第一组怪物模版等级比例,第二组怪物模版等级比例,第三组怪物模版等级比例...}
--TheHeroTowerenemylvprefloor[90] = {1,1,1} --TheHeroTowerenemylvprefloor[关数] = {第一组怪物模版等级比例,第二组怪物模版等级比例,第三组怪物模版等级比例...}
--TheHeroTowerenemylvprefloor[110] = {1,1.5,2}
--TheHeroTowerenemylvprefloor[130] = {1.5,2,2.5}
--TheHeroTowerenemylvprefloor[200] = {1,1,1,1,1,1,1} --TheHeroTowerenemylvprefloor[关数] = {第一组怪物模版等级比例,第二组怪物模版等级比例,第三组怪物模版等级比例...}
for i = 1,50 do
        TheHeroTowerenemylvprefloor[i] = {50/i,50/i,50/i,50/i,50/i,50/i}
end
TheHeroTowerenemylvprefloor[51] = {1,1,1,1,1,1,1}

local TheHeroTowerenemygroup = {} --怪物队形
TheHeroTowerenemygroup[1] = {2,0,0,0,0,1,1,1,1,1}
TheHeroTowerenemygroup[51] = {2,2,0,0,0,1,1,1,1,1}
TheHeroTowerenemygroup[101] = {3,2,0,0,0,1,1,1,1,1}
TheHeroTowerenemygroup[126] = {3,2,2,2,0,1,1,1,1,1}
TheHeroTowerenemygroup[151] = {3,3,2,2,0,1,1,1,1,1}
TheHeroTowerenemygroup[176] = {3,3,3,2,0,1,1,1,1,1}
TheHeroTowerenemygroup[201] = {3,3,3,2,2,1,1,1,1,1}
TheHeroTowerenemygroup[226] = {3,3,3,2,2,2,1,1,1,1}
TheHeroTowerenemygroup[251] = {3,3,3,2,2,2,2,1,1,1}
TheHeroTowerenemygroup[276] = {3,3,3,3,2,2,2,1,1,1}
TheHeroTowerenemygroup[301] = {3,3,3,3,2,2,2,2,1,1}
TheHeroTowerenemygroup[326] = {3,3,3,3,2,2,2,2,2,1}
TheHeroTowerenemygroup[351] = {3,3,3,3,2,2,2,2,2,2}
TheHeroTowerenemygroup[376] = {3,3,3,3,3,2,2,2,2,2}

local TheHeroTowerWinGive = 72226 --战斗胜利奖励

local TheHeroTowerilvitemnum = {} --最终奖励道具给予数量
TheHeroTowerilvitemnum[10] = 1
TheHeroTowerilvitemnum[30] = 2
TheHeroTowerilvitemnum[80] = 3
TheHeroTowerilvitemnum[101] = 1

local TheHeroTowerilvrate = {} --最终奖励道具id
TheHeroTowerilvrate[10] = {70107,"魔石"}
TheHeroTowerilvrate[50] = {70108,"魔石"}
TheHeroTowerilvrate[101] = {72225,"勇者试炼护符"}

--以上设置 可间隔设置 会自动按照最近的设置过的关数补齐没有设置的关数

local TheHerotowerfloormax = 1000 --预设最高塔关次

local TheHeroTowerfloorgrow = 1 --战斗胜利后关数增加值

local TheHeroTowerfloorcheck = 5 --领取大奖所需战斗关数

local TheHeroTowerfloordown = 10 --领取大奖所需消耗关数

local TheHeroTowerfloorfrist = 101 --领取大奖的最低关数

local TheHeroTowerpaygold = 1000 --战斗开启时需要支付的金币费用/每层

local TheHeroTowerisallpay = 0 --是否全部队员都需要支付 0为只有队长支付 否则为全队支付

local TheHeroToweritemnumplusitem = {50361,"勇者试炼金币"} --额外箱子所需道具

local TheHeroTowerbattlenpc = {} --战斗npc设置
TheHeroTowerbattlenpc[1] = {14064,63931,44,22,6,"勇者试炼挑战"}
TheHeroTowerbattlenpc[2] = {14064,63932,44,22,6,"勇者试炼挑战"}

local TheHeroTowergivenpc = {99098,63933,44,22,6,"勇者试炼通过"} --领奖npc设置

local TheHeroTowerItemChangeNpcInfo = {} --随机抽奖
TheHeroTowerItemChangeNpcInfo = {470103,"宏伟秘境宝箱",6,63931,44,20,1,999,0,"宏伟秘境宝箱",{}}
--TheHeroTowerItemChangeNpcInfo[11][1] = {解锁兑换层数,"额外说明",随机下限(如0.7 则为70%-100%能力随机),基础词缀数量,兑换使用道具id,兑换需要数量,兑换的道具id,是否绑定 0不绑}
TheHeroTowerItemChangeNpcInfo[11][1] = {101,"$4词缀数量1$0\n无法交易",0.5,1,72226,50,72225,1}
TheHeroTowerItemChangeNpcInfo[11][2] = {200,"$4词缀数量2$0\n无法交易",0.5,2,72226,75,72225,1}
TheHeroTowerItemChangeNpcInfo[11][3] = {200,"$4词缀数量2$0\n可以交易",0.5,2,72226,100,72225,0}



---------------------------------------------------------------
Global_Reg.RegLoginEvent("theherotowerloginout")
Global_Reg.RegLogoutEvent("theherotowerloginout")
Global_Reg.RegBattleOverEvent ("TheHeroTowerWinCallBack")
Global_Reg.RegLoginGateEvent ("theherotowerloginout");
Global_Reg.RegBattleStartEvent ("theherotowerbattlestart");

TheHeroTowerGetInfo = TheHeroTowerGetInfo or {}

TheHeroTowerBattleInFloor = TheHeroTowerBattleInFloor or {}
--TheHeroTowerBattleInFloor[player] = {battle,nextfloor,battlestarttime,battleovertime}

TheHeroTowerDamageList = TheHeroTowerDamageList or {}




for i = 1,TheHerotowerfloormax do
        if TheHeroTowerfragmentitemnum[i] then
                TheHeroTowerfragmentitemnum[0] = TheHeroTowerfragmentitemnum[i]
        else
                TheHeroTowerfragmentitemnum[i] = TheHeroTowerfragmentitemnum[0]
        end

        if TheHeroTowerenemygroup[i] then
                TheHeroTowerenemygroup[0] = TheHeroTowerenemygroup[i]
        else
                TheHeroTowerenemygroup[i] = TheHeroTowerenemygroup[0]
        end
       
        if TheHeroTowerilvitemnum[i] then
                TheHeroTowerilvitemnum[0] = TheHeroTowerilvitemnum[i]
        else
                TheHeroTowerilvitemnum[i] = TheHeroTowerilvitemnum[0]
        end
       
        if TheHeroTowerilvrate[i] then
                TheHeroTowerilvrate[0] = TheHeroTowerilvrate[i]
        else
                TheHeroTowerilvrate[i] = TheHeroTowerilvrate[0]
        end
       
        if TheHeroTowerenemylvprefloor[i] then
                TheHeroTowerenemylvprefloor[0] = TheHeroTowerenemylvprefloor[i]
        else
                TheHeroTowerenemylvprefloor[i] = TheHeroTowerenemylvprefloor[0]
        end
end


function theherotowerbattlestart(battle)
        if ExBossDamageDownList[battle] then
                ExBossDamageDownList[battle] = nil
        end
        if ExBossDamageUpList[battle] then
                ExBossDamageUpList[battle] = nil
        end
        if TheHeroTowerDamageList[battle] then
                ExBossDamageDownList[battle] = TheHeroTowerDamageList[battle][1]
                ExBossDamageUpList[battle] = TheHeroTowerDamageList[battle][2]
                TheHeroTowerDamageList[battle] = nil
        end
end

function getherotowerfloor(player)
        local cdkey = Char.GetData(player,2002)--账号
        local regnum = Char.GetData(player,48)--RegistNumber
        local playername = Char.GetData(player,2000)--原名
        if savestring(cdkey) then -- and savestring(playername) then
                local query = "SELECT "..TheHeroTowerSqlFloorStart..","..TheHeroTowerSqlFloorNow..","..TheHeroTowerSqlFloorMax..","..TheHeroTowerSqlFloorMaxTime..","..TheHeroTowerSqlPoint.." FROM "..TheHeroTowerSqlName.." WHERE "..TheHeroTowerSqlCdkey.." = '"..cdkey.."' AND "..TheHeroTowerSqlReg.." = "..regnum
                local resset = SQL.Run(query)
                if type(resset) == "table" then
                        return tonumber(resset["0_0"]),tonumber(resset["0_1"]),tonumber(resset["0_2"]),tonumber(resset["0_3"]),tonumber(resset["0_4"])
                elseif resset == nil then
                        query = "INSERT INTO "..TheHeroTowerSqlName.." ("..TheHeroTowerSqlCdkey.." , "..TheHeroTowerSqlReg.." , "..TheHeroTowerSqlPlayerName.." , "..TheHeroTowerSqlFloorStart.." , "..TheHeroTowerSqlFloorNow.." , "..TheHeroTowerSqlFloorMax.." , "..TheHeroTowerSqlFloorMaxTime.." , "..TheHeroTowerSqlPoint..") VALUES (".."'"..cdkey.."',"..regnum..",'"..playername.."',0,0,0,0,0)"
                        resset = SQL.Run(query)
                        return 0,0,0,0,0
                end
        else
                NLG.SystemMessage(player,"非法的帐号。")
                return nil
        end
end

function setherotowerfloor(player,key,isrealset)
        local tempint = {TheHeroTowerSqlFloorStart,TheHeroTowerSqlFloorNow,TheHeroTowerSqlFloorMax,TheHeroTowerSqlFloorMaxTime,TheHeroTowerSqlPoint}
        local cdkey = Char.GetData(player,2002)
        local regnum = Char.GetData(player,48)
        local playername = Char.GetData(player,2000)
        if isrealset and type(isrealset) == "number" then
                local query = "UPDATE "..TheHeroTowerSqlName.." SET "..tempint[key].." = "..isrealset.." , "..TheHeroTowerSqlPlayerName.." = '"..playername.."' WHERE "..TheHeroTowerSqlCdkey.." = '"..cdkey.."' AND "..TheHeroTowerSqlReg.." = "..regnum
                local resset = SQL.Run(query)
                return true
        else
                if key == 1 then
                        local query = "UPDATE "..TheHeroTowerSqlName.." SET "..tempint[1].." = "..tempint[2].."-"..TheHeroTowerfloordown.." , "..tempint[2].." = "..tempint[2].."-"..TheHeroTowerfloordown.." , "..TheHeroTowerSqlPlayerName.." = '"..playername.."' WHERE "..TheHeroTowerSqlCdkey.." = '"..cdkey.."' AND "..TheHeroTowerSqlReg.." = "..regnum
                        local resset = SQL.Run(query)
                        return true
                elseif key == 2 then
                        local query = "UPDATE "..TheHeroTowerSqlName.." SET "..tempint[2].." = "..tempint[2].."+"..TheHeroTowerfloorgrow.." , "..TheHeroTowerSqlPlayerName.." = '"..playername.."' WHERE "..TheHeroTowerSqlCdkey.." = '"..cdkey.."' AND "..TheHeroTowerSqlReg.." = "..regnum
                        local resset = SQL.Run(query)
                        return true
                end
        end
        return false
end

function theherotowerloginout(player)
        TheHeroTowerBattleInFloor[player] = nil
end

function TheHeroTowerWinCallBack(battle)
        local win = 0
                for Side=0,1 do
                        for Num = 0,9 do
                        local Charindex = Battle.GetPlayIndex(battleIndex,Side,Num)
                        if Charindex  >= 0 then
                                if Char.GetData(Charindex,0) == 1 then
                                        if Char.GetData(Charindex,9) > 1 then
                                                win = 1
                                                break
                                        end
                                end
                        end
                end
        end
        if win == 1 then
                for Side=0,1 do
                        for Num = 0,9 do
                                local Charindex = Battle.GetPlayIndex(battleIndex,Side,Num)
                                if Charindex >= 0 then
                                        if Char.GetData(Charindex,0) == 1 then
                                                if TheHeroTowerBattleInFloor[Charindex] then
                                                        if battle == TheHeroTowerBattleInFloor[Charindex][1] and TheHeroTowerBattleInFloor[Charindex][4] == nil then
                                                                TheHeroTowerBattleInFloor[Charindex][4] = os.time()
                                                                NLG.Warp(Charindex,0,TheHeroTowergivenpc[2],(TheHeroTowergivenpc[3]-2),TheHeroTowergivenpc[4])
                                                        else
                                                                TheHeroTowerBattleInFloor[Charindex] = nil
                                                        end
                                                end
                                        end
                                end
                        end
                end       
        else
                for Charindex,info in pairs(TheHeroTowerBattleInFloor) do
                        if  battle == info[1] then
                                TheHeroTowerBattleInFloor[Charindex] = nil
                                --NLG.SystemMessage(-1,"Charindex="..Charindex.." battle="..battle.." info clean")
                        end
                end
        end
end

function TheHeroTowerBattleTalkEvent(npc,player)
        if NLG.CanTalk(npc,player) then
                local msg = "3\n          **********"..TheHeroTowerName.."**********\n请选择您需要的服务:\n\n1."..TheHeroTowerName.."副本详细介绍\n2.参与"..TheHeroTowerName.."关卡挑战\n3.查看挑战排行榜\n4.查看积分排行榜"
                NLG.ShowWindowTalked(player,2,2,0,msg,npc)
        end
end

function TheHeroTowerBattleWindowEvent(npc,player,Seqno,Select,Data)
--NLG.SystemMessage(player,"Seqno="..Seqno.." Select="..Select.." Data="..Data)
        if NLG.CanTalk(npc,player) then
                if Select ~= 2 then
                        if Seqno == 0 then
                                if tonumber(Data) == 1 then
                                        NLG.ShowWindowTalked(player,0,2,9999,TheHeroTowerMainMsg,npc)
                                elseif tonumber(Data) == 2 then
                                        local start,now,maxfloor,maxtime,point = getherotowerfloor(player)
                                        local nextsel = 6
                                        local msg = "          **********"..TheHeroTowerName.."**********\n\n您从 "..start.." 关开始已成功挑战至 "..now.." 关。\n您的当前总积分有: "..point.." 分。"..NLG.c("\n--------------------").."\n点击【是】立即带队挑战第 "..(now+TheHeroTowerfloorgrow).." 关"..TheHeroTowerName.."。\n费用:"..(TheHeroTowerpaygold*(now+TheHeroTowerfloorgrow)).."G"
                                        if TheHeroTowerisallpay == 0 then
                                                msg = msg.." (队长支付)"
                                        else
                                                msg = msg.." (每人支付)"
                                        end
                                        if now - start >= TheHeroTowerfloorcheck and now >= TheHeroTowerfloorfrist and now >= TheHeroTowerfloordown then
                                                msg = msg .."\n点击【确定】领取 "..TheHeroTowerilvitemnum[now].." 个『"..TheHeroTowerilvrate[now][2].."』。\n领取后,您将从第 "..(now-TheHeroTowerfloordown+TheHeroTowerfloorgrow).." 关开始重新挑战。"
                                                nextsel = 7
                                        end
                                        NLG.ShowWindowTalked(player,0,nextsel,100,msg,npc)
                                elseif tonumber(Data) == 3 then
                                        local cdkey = Char.GetData(player,2002)
                                        local regnum = Char.GetData(player,48)
                                        local start,now,maxfloor,maxtime = getherotowerfloor(player)
                                        local query = "SELECT "..TheHeroTowerSqlCdkey..","..TheHeroTowerSqlReg..","..TheHeroTowerSqlPlayerName..","..TheHeroTowerSqlFloorMax..","..TheHeroTowerSqlFloorMaxTime.." FROM "..TheHeroTowerSqlName.." ORDER BY "..TheHeroTowerSqlFloorMax.." DESC , "..TheHeroTowerSqlFloorMaxTime.." ASC"
                                        local resset = SQL.Run(query)
                                        if type(resset) == "table" then
                                                local msg = ""
                                                local playernum = 0
                                                for i = 0,500 do
                                                        if resset[i.."_0"] then
                                                                if i < 20 then
                                                                        local tempmsg = string.format("\n第[%-2d]名:%0-16s最高记录%4d关 用时%4d秒",i+1,resset[i.."_2"],resset[i.."_3"],resset[i.."_4"])
                                                                        msg = msg..tempmsg
                                                                end
                                                                if resset[i.."_0"] == cdkey and tonumber(resset[i.."_1"]) == regnum then
                                                                        playernum = i+1
                                                                end
                                                        end
                                                end
                                                if playernum > 0 then
                                                        msg = NLG.c("你的最高记录"..maxfloor.."关,用时"..SecondTurnTimeStr(maxtime).."。位于服务器第"..playernum.."名\n")..msg
                                                else
                                                        msg = NLG.c("你的最高记录"..maxfloor.."关,用时"..SecondTurnTimeStr(maxtime).."。 位于服务器500名外\n")..msg
                                                end                       
                                                NLG.ShowWindowTalked(player,10,2,9998,msg,npc)
                                        end
                                elseif tonumber(Data) == 4 then
                                        local cdkey = Char.GetData(player,2002)
                                        local regnum = Char.GetData(player,48)
                                        local start,now,maxfloor,maxtime,point = getherotowerfloor(player)
                                        local query = "SELECT "..TheHeroTowerSqlCdkey..","..TheHeroTowerSqlReg..","..TheHeroTowerSqlPlayerName..","..TheHeroTowerSqlPoint..","..TheHeroTowerSqlFloorMax..","..TheHeroTowerSqlFloorMaxTime.." FROM "..TheHeroTowerSqlName.." ORDER BY "..TheHeroTowerSqlPoint.." DESC , "..TheHeroTowerSqlFloorMax.." DESC"
                                        local resset = SQL.Run(query)
                                        if type(resset) == "table" then
                                                local msg = ""
                                                local playernum = 0
                                                for i = 0,500 do
                                                        if resset[i.."_0"] then
                                                                if i < 20 then
                                                                        local tempmsg = string.format("\n第[%-2d]名:%0-16s积分:%8d 最高记录%4d关",i+1,resset[i.."_2"],resset[i.."_3"],resset[i.."_4"])
                                                                        msg = msg..tempmsg
                                                                end
                                                                if resset[i.."_0"] == cdkey and tonumber(resset[i.."_1"]) == regnum then
                                                                        playernum = i+1
                                                                end
                                                        end
                                                end
                                                if playernum > 0 then
                                                        msg = NLG.c("你的积分为"..point.." ,位于服务器第"..playernum.."名\n")..msg
                                                else
                                                        msg = NLG.c("你的积分为"..point.." 。 位于服务器500名外\n")..msg
                                                end                       
                                                NLG.ShowWindowTalked(player,10,2,9999,msg,npc)
                                        end
                                end
                        elseif Seqno == 100 then
                                local start,now,maxfloor,maxtime = getherotowerfloor(player)
                                if Select == 1 then
                                        if now - start >= TheHeroTowerfloorcheck and now >= TheHeroTowerfloorfrist and now >= TheHeroTowerfloordown then
                                                if 20 - Char.ItemSlot(player) >= TheHeroTowerilvitemnum[now] then
                                                        local cdkey = Char.GetData(player,2002)
                                                        local regnum = Char.GetData(player,48)
                                                        if TheHeroTowerGetInfo[cdkey.."/"..regnum] == nil or os.date("%x") ~= os.date("%x",TheHeroTowerGetInfo[cdkey.."/"..regnum]) then
                                                                setherotowerfloor(player,1)
                                                                TheHeroTowerGetInfo[cdkey.."/"..regnum] = os.time()
                                                                if Char.ItemNum(player,TheHeroToweritemnumplusitem[1]) > 0 then
                                                                        Char.DelItem(player,TheHeroToweritemnumplusitem[1],1)
                                                                        for i = 1,TheHeroTowerilvitemnum[now]+1 do
                                                                                MakeILvItem(player,TheHeroTowerilvrate[now][1],21,now,math.floor(now/100))
                                                                        end
                                                                        --Char.GiveItem(player,TheHeroTowerilvrate[now][1],TheHeroTowerilvitemnum[now]+1)
                                                                else
                                                                        for i = 1,TheHeroTowerilvitemnum[now] do
                                                                                MakeILvItem(player,TheHeroTowerilvrate[now][1],21,now,math.floor(now/100))
                                                                        end
                                                                        --Char.GiveItem(player,TheHeroTowerilvrate[now][1],TheHeroTowerilvitemnum[now])
                                                                end
                                                                NLG.SystemMessage(player,"奖励领取成功!")
                                                        else
                                                                NLG.SystemMessage(player,"你今天已经领取过奖励了。")
                                                        end
                                                else
                                                        NLG.SystemMessage(player,"您需要至少有"..TheHeroTowerilvitemnum[now].."个道具栏才能领取大奖。")
                                                end
                                        else
                                                NLG.SystemMessage(player,"您需要至少达到"..TheHeroTowerfloorfrist.."关并且至少完成第"..(start+TheHeroTowerfloorcheck).."关才能领取大奖。")
                                        end
                                elseif Select == 4 then
                                        if Char.GetPartyMember(player,0) == player then
                                                local partynum = Char.PartyNum(player)
                                                local partyint = {}
                                                local able = true
                                                local errman = nil
                                                local errgold = nil
                                                local errdummy = nil
                                                for i = 1,(partynum - 1) do
                                                        partyint[i] = Char.GetPartyMember(player,i)
                                                        if DummyFriendDummyIndex[partyint[i]] then
                                                                able = false
                                                                errdummy = partyint[i]
                                                                break
                                                        else
                                                                if able then
                                                                        local _,partynow = getherotowerfloor(partyint[i])
                                                                        if partynow < now then
                                                                                able = false
                                                                                errman = partyint[i]
                                                                                break
                                                                        end
                                                                        if Char.ItemSlot(partyint[i]) < 20 then
                                                                               
                                                                        else
                                                                                able = false
                                                                                errslot = partyint[i]
                                                                                break
                                                                        end
                                                                        if TheHeroTowerisallpay ~= 0 then
                                                                                if Char.GetData(partyint[i],53) < (TheHeroTowerpaygold*(now+TheHeroTowerfloorgrow)) then
                                                                                        able = false
                                                                                        errgold = partyint[i]
                                                                                        break
                                                                                end
                                                                        end
                                                                end
                                                        end
                                                end
                                                if Char.GetData(player,53) < (TheHeroTowerpaygold*(now+TheHeroTowerfloorgrow)) then
                                                        able = false
                                                        errgold = player
                                                end
                                                if able then
                                                        local floornum = now + TheHeroTowerfloorgrow
                                                        local enemyid = {}
                                                        local enemylv = {}
                                                        local temporder = 1
                                                        for i = 1,10 do
                                                                if TheHeroTowerenemygroup[floornum][i] > 0 then
                                                                        local enemyingroup = TheHeroTowerenemygroup[floornum][i]
                                                                        local enemyrealid = TheHeroTowerenemyidgroup[enemyingroup][math.random(1,#TheHeroTowerenemyidgroup[enemyingroup])]
                                                                        local enemyreallv = math.floor(TheHeroTowerenemylvprefloor[floornum][enemyingroup]*floornum)
                                                                        enemyid[temporder] = enemyrealid
                                                                        enemylv[temporder] = enemyreallv
                                                                        temporder = temporder + 1
                                                                end
                                                        end
                                                        AddGold(player,-(TheHeroTowerpaygold*(now+TheHeroTowerfloorgrow)))
                                                        if NLG.Get_Char_Date(player,145) > 0 then
                                                                for i = 1,10 do
                                                                        if enemyid[i] then
                                                                                NLG.SystemMessage(player,i..": enemyid="..enemyid[i].." lv="..enemylv[i])
                                                                        end
                                                                end
                                                        end
                                                        local battleindex = NLG.CreateBattle(player,npc,nil,enemyid,enemylv,nil,nil)
                                                        if battleindex >= 0 then
                                                                TheHeroTowerDamageList[battleindex] = {0.5-floornum*0.01,{10,floornum-50}}
                                                                for k,v in pairs(partyint) do
                                                                        TheHeroTowerBattleInFloor[v] = {battleindex,floornum,os.time()}
                                                                        if TheHeroTowerisallpay ~= 0 then
                                                                                AddGold(v,-(TheHeroTowerpaygold*(now+TheHeroTowerfloorgrow)))
                                                                        end
                                                                end
                                                                TheHeroTowerBattleInFloor[player] = {battleindex,floornum,os.time()}
                                                                --local battleevent = Battle.SetWinEvent(nil,"TheHeroTowerWinCallBack",battleindex)
                                                                for i = 1,#TheHeroTowerbattlenpc do
                                                                        NLG.SystemMessageToMap(0,TheHeroTowerbattlenpc[i][2],Char.GetData(player,2000).."和他的朋友们开始挑战"..TheHeroTowerName.."第 "..floornum.." 关。")
                                                                end
                                                                if floornum >= TheHeroTowerHighFloor[1] then
                                                                        NLG.SystemMessage(-1,Char.GetData(player,2000).."和他的朋友们开始挑战"..TheHeroTowerName.."第 "..floornum.." 关!")
                                                                end
                                                        else
                                                                for k,v in pairs(partyint) do
                                                                        NLG.SystemMessage(v,"战斗开启失败,请重试。")
                                                                end
                                                        end
                                                else
                                                        for k,v in pairs(partyint) do
                                                                if errman then
                                                                        NLG.SystemMessage(v,Char.GetData(errman,2000).."的当前关数低于队长。无法开始"..TheHeroTowerName.."第 "..(now+TheHeroTowerfloorgrow).." 关。")
                                                                end
                                                                if errgold then
                                                                        NLG.SystemMessage(v,Char.GetData(errgold,2000).."的金币不足"..(TheHeroTowerpaygold*(now+TheHeroTowerfloorgrow)).."G。无法开始"..TheHeroTowerName.."第 "..(now+TheHeroTowerfloorgrow).." 关。")
                                                                end
                                                                if errdummy then
                                                                        NLG.SystemMessage(v,Char.GetData(errdummy,2000).."是佣兵,不能参与战斗。")
                                                                end
                                                                if errslot then
                                                                        NLG.SystemMessage(player,Char.GetData(errslot,2000).."的道具栏已经满了。")
                                                                end
                                                        end
                                                        if errman then
                                                                NLG.SystemMessage(player,Char.GetData(errman,2000).."的当前关数低于队长。无法开始"..TheHeroTowerName.."第 "..(now+TheHeroTowerfloorgrow).." 关。")
                                                        end
                                                        if errgold then
                                                                NLG.SystemMessage(player,Char.GetData(errgold,2000).."的金币不足"..(TheHeroTowerpaygold*(now+TheHeroTowerfloorgrow)).."G。无法开始"..TheHeroTowerName.."第 "..(now+TheHeroTowerfloorgrow).." 关。")
                                                        end
                                                        if errdummy then
                                                                NLG.SystemMessage(player,Char.GetData(errdummy,2000).."是佣兵,不能参与战斗。")
                                                        end
                                                        if errslot then
                                                                NLG.SystemMessage(player,Char.GetData(errslot,2000).."的道具栏已经满了。")
                                                        end
                                                end
                                        else
                                                NLG.SystemMessage(player,"你不是队长。")
                                        end
                                end
                        end
                end
        end
end

function TheHeroTowerGiveTalkEvent(npc,player)
        if NLG.CanTalk(npc,player) then
                for i = 0,4 do
                        local playerindex = Char.GetPartyMember(player,i)
                        if playerindex >= 0 then
                                if Char.GetData(playerindex, 51) == 540 then
                                        NLG.DischargeParty(playerindex)
                                else
                                        if TheHeroTowerBattleInFloor[playerindex] then
                                                local start,now,maxfloor,maxtime,point = getherotowerfloor(playerindex)
                                                local k2 = TheHeroTowerBattleInFloor[playerindex][2]
                                                local k3 = tonumber(TheHeroTowerBattleInFloor[playerindex][3])
                                                local k4 = tonumber(TheHeroTowerBattleInFloor[playerindex][4])
                                                if k2 and k3 and k4 then
                                                        if k2 > TheHeroTowerHighFloor[1] or (k2 == TheHeroTowerHighFloor[1] and k4 - k3 < TheHeroTowerHighFloor[2]) then
                                                                TheHeroTowerHighFloor[1] = k2
                                                                TheHeroTowerHighFloor[2] = k4 - k3
                                                                NLG.SystemMessage(-1,Char.GetData(playerindex,2000).."(Lv"..Char.GetData(playerindex,8)..(JobName[Char.GetData(playerindex,51)] or "其他职业")..")".."和他的朋友们刚刚创造了新的服务器记录!")
                                                                NLG.SystemMessage(-1,TheHeroTowerName.."第 "..k2.." 关!用时 "..SecondTurnTimeStr(k4 - k3).." !")
                                                        end
                                                        if k2 > maxfloor or (k2 == maxfloor and k4 - k3 < maxtime) then
                                                                setherotowerfloor(playerindex,3,k2)
                                                                setherotowerfloor(playerindex,4,(k4 - k3))
                                                                NLG.SystemMessage(playerindex,"个人新记录:"..TheHeroTowerName.."第 "..k2.." 关!用时 "..SecondTurnTimeStr(k4 - k3).." !")
                                                        end
                                                        if k2 > now and k2 <= now + TheHeroTowerfloorgrow then
                                                                setherotowerfloor(playerindex,2,k2)
                                                                NLG.SystemMessage(playerindex,"保存了当前战绩:第 "..k2.." 关。")
                                                        end
                                                        local pointplus = TheHeroTowerfragmentitemnum[k2]*k2
                                                        setherotowerfloor(playerindex,5,point+pointplus)
                                                        NLG.SystemMessage(playerindex,"得到了 "..pointplus.." 点通关积分。")
                                                        if k2 > 100 then
                                                                Char.GiveItem(playerindex,TheHeroTowerWinGive,k2-50)
                                                        end
                                                        TheHeroTowerBattleInFloor[playerindex] = nil
                                                        Field.NewSet(playerindex,TheHeroTowerFieldHistory,k2)
                                                else
                                                        NLG.SystemMessage(playerindex,"您的战斗记录不完整。")
                                                end
                                        else
                                                NLG.SystemMessage(playerindex,"没有您的战斗记录。")
                                        end
                                end
                        end
                end
                --NLG.DischargeParty(player)
                local rdm = math.random(1,#TheHeroTowerbattlenpc)
                NLG.Warp(player,0,TheHeroTowerbattlenpc[rdm][2],(TheHeroTowerbattlenpc[rdm][3]-2),TheHeroTowerbattlenpc[rdm][4])
        end
end

function TheHeroTowerNpcInit(npc)
        return true
end

if TheHeroTowerNpc == nil then
        TheHeroTowerNpc = NL.CreateNpc(nil,"TheHeroTowerNpcInit")
        Char.SetData(TheHeroTowerNpc,1,TheHeroTowerbattlenpc[1][1])
        Char.SetData(TheHeroTowerNpc,2,TheHeroTowerbattlenpc[1][1])
        Char.SetData(TheHeroTowerNpc,4,TheHeroTowerbattlenpc[1][2])
        Char.SetData(TheHeroTowerNpc,5,TheHeroTowerbattlenpc[1][3])
        Char.SetData(TheHeroTowerNpc,6,TheHeroTowerbattlenpc[1][4])
        Char.SetData(TheHeroTowerNpc,7,TheHeroTowerbattlenpc[1][5])
        Char.SetData(TheHeroTowerNpc,2000,TheHeroTowerbattlenpc[1][6])
        Char.SetTalkedEvent(nil,"TheHeroTowerBattleTalkEvent",TheHeroTowerNpc)
        Char.SetWindowTalkedEvent(nil,"TheHeroTowerBattleWindowEvent",TheHeroTowerNpc)
        NLG.UpChar(TheHeroTowerNpc)
       
        TheHeroTowerNpc1 = NL.CreateNpc(nil,"TheHeroTowerNpcInit")
        Char.SetData(TheHeroTowerNpc1,1,TheHeroTowergivenpc[1])
        Char.SetData(TheHeroTowerNpc1,2,TheHeroTowergivenpc[1])
        Char.SetData(TheHeroTowerNpc1,4,TheHeroTowergivenpc[2])
        Char.SetData(TheHeroTowerNpc1,5,TheHeroTowergivenpc[3])
        Char.SetData(TheHeroTowerNpc1,6,TheHeroTowergivenpc[4])
        Char.SetData(TheHeroTowerNpc1,7,TheHeroTowergivenpc[5])
        Char.SetData(TheHeroTowerNpc1,2000,TheHeroTowergivenpc[6])
        Char.SetTalkedEvent(nil,"TheHeroTowerGiveTalkEvent",TheHeroTowerNpc1)
        NLG.UpChar(TheHeroTowerNpc1)
       
        local query = "SELECT "..TheHeroTowerSqlFloorMax..","..TheHeroTowerSqlFloorMaxTime.." FROM "..TheHeroTowerSqlName.." ORDER BY "..TheHeroTowerSqlFloorMax.." DESC , "..TheHeroTowerSqlFloorMaxTime.." ASC"
        local resset = SQL.Run(query)
        if type(resset) == "table" then
                TheHeroTowerHighFloor = {tonumber(resset["0_0"]),tonumber(resset["0_1"])}
        else
                TheHeroTowerHighFloor = {0,0}
        end
end

if TheHeroTowerNpcOther == nil and #TheHeroTowerbattlenpc > 1 then
        for i = 2,#TheHeroTowerbattlenpc do
                TheHeroTowerNpcOther = NL.CreateNpc(nil,"TheHeroTowerNpcInit")
                Char.SetData(TheHeroTowerNpcOther,1,TheHeroTowerbattlenpc[i][1])
                Char.SetData(TheHeroTowerNpcOther,2,TheHeroTowerbattlenpc[i][1])
                Char.SetData(TheHeroTowerNpcOther,4,TheHeroTowerbattlenpc[i][2])
                Char.SetData(TheHeroTowerNpcOther,5,TheHeroTowerbattlenpc[i][3])
                Char.SetData(TheHeroTowerNpcOther,6,TheHeroTowerbattlenpc[i][4])
                Char.SetData(TheHeroTowerNpcOther,7,TheHeroTowerbattlenpc[i][5])
                Char.SetData(TheHeroTowerNpcOther,2000,TheHeroTowerbattlenpc[i][6])
                Char.SetTalkedEvent(nil,"TheHeroTowerBattleTalkEvent",TheHeroTowerNpcOther)
                Char.SetWindowTalkedEvent(nil,"TheHeroTowerBattleWindowEvent",TheHeroTowerNpcOther)
                NLG.UpChar(TheHeroTowerNpcOther)
        end
end

function TheHeroTowerBuyItem(player,npc,pos,movenum)
        if TheHeroTowerItemChangeNpcInfo[11][pos] then
                if movenum < 0 then
                        movenum = 1
                end
                if movenum > 20 then
                        movenum = 20
                end
                for buy = 1,movenum do
                        if Char.ItemSlot(player) < 20 then
                                local start,now,maxfloor,maxtime = getherotowerfloor(player)
                                if maxfloor >= TheHeroTowerItemChangeNpcInfo[11][pos][1] then
                                        if Char.ItemNum(player,TheHeroTowerItemChangeNpcInfo[11][pos][5]) >= TheHeroTowerItemChangeNpcInfo[11][pos][6] then
                                                Char.DelItem(player,TheHeroTowerItemChangeNpcInfo[11][pos][5],TheHeroTowerItemChangeNpcInfo[11][pos][6])
                                                local ilv = (math.random(TheHeroTowerItemChangeNpcInfo[11][pos][3]*100,100)/100)*maxfloor
                                                --NLG.SystemMessage(player,"ilv="..ilv)
                                                local itemtypelist = {17,18,21}
                                                local itemindex = MakeILvItem(player,TheHeroTowerItemChangeNpcInfo[11][pos][7],itemtypelist[math.random(1,#itemtypelist)],ilv,TheHeroTowerItemChangeNpcInfo[11][pos][4])
                                                if TheHeroTowerItemChangeNpcInfo[11][pos][8] ~= 0 then
                                                        Item.SetData(itemindex,52,0)
                                                        Item.SetData(itemindex,53,1)
--                                                        Item.SetData(itemindex,%道具_宠邮%,0)
                                                else
                                                        Item.SetData(itemindex,52,0)
                                                        Item.SetData(itemindex,53,0)
--                                                        Item.SetData(itemindex,%道具_宠邮%,1)
                                                end
                                        else
                                                NLG.SystemMessage(player,"兑换所需的道具不足。持有"..Char.ItemNum(player,TheHeroTowerItemChangeNpcInfo[11][pos][5]).."份,需要"..TheHeroTowerItemChangeNpcInfo[11][pos][6].."份。")
                                                break                                               
                                        end
                                else
                                        NLG.SystemMessage(player,"你尚未解锁该物品。")
                                        break
                                end
                        else
                                NLG.SystemMessage(player,"你的东西太多了。")
                                break
                        end
                end
                Item.UpItem(player,-1)
        end
        return true
end

function TheHeroTowerMoveItem(player,npc,startpos,topos,movenum)
--NLG.SystemMessage(player,"startpos="..startpos.." topos="..topos.." movenum="..movenum)
        if startpos >= 0 and startpos <= 27 then
                NLG.SystemMessage(player,"本窗口只能拖拽道具至道具栏,不接受贩卖。")
        elseif startpos >= 100 and startpos <= 139 then
                if topos >= 0 and topos <= 27 then
                        if Char.ItemSlot(player) < 40 then
                                TheHeroTowerBuyItem(player,npc,startpos-99,movenum)
                                return true
                        else
                                NLG.SystemMessage(player,"你的东西太多了。")
                                return false
                        end
                elseif topos >= 100 and topos <= 139 then
                        NLG.SystemMessage(player,"本窗口只能拖拽道具至道具栏,不接受位置变更。")
                        return false
                end
        end
        return false
end

function TheHeroTowerLoadItem(player,npc)
        local intreturn = {}
        if TheHeroTowerItemChangeNpcInfo then
                for i = 1,20 do
                        if TheHeroTowerItemChangeNpcInfo[11][i] then
                                --local start,now,maxfloor,maxtime = getherotowerfloor(player)
                                --if maxfloor >= TheHeroTowerItemChangeNpcInfo[11][i][1] then
                                        intreturn[i+99] = {}
                                        intreturn[i+99][1] = Item.GetData(Get_Itemindex(player,TheHeroTowerItemChangeNpcInfo[11][i][7]),1)
                                        intreturn[i+99][2] = TheHeroTowerItemChangeNpcInfo[11][i][1]
                                        intreturn[i+99][3] = Item.GetData(Get_Itemindex(player,TheHeroTowerItemChangeNpcInfo[11][i][7]),2001)
--                                        intreturn[i+99][4] = "①:兑换需要"..TheHeroTowerItemChangeNpcInfo[11][i][6].."份"..Item.GetData(Get_Itemindex(player,TheHeroTowerItemChangeNpcInfo[11][i][5]),2001).."\n②:道具堆叠数为解锁兑换需要达到的层数\n③:点击选取本物品拖动到个人物品栏,输入想要的件数进行兑换\n"..TheHeroTowerItemChangeNpcInfo[11][i][2]
                                        intreturn[i+99][4] = "①:兑换需要"..TheHeroTowerItemChangeNpcInfo[11][i][6].."份"..Item.GetData(Get_Itemindex(player,TheHeroTowerItemChangeNpcInfo[11][i][5]),2001).."\n②:道具堆叠数为解锁兑换需要达到的层数\n③:点击选取本物品拖动到个人物品栏,输入想要的件数进行兑换\n"..TheHeroTowerItemChangeNpcInfo[11][i][2]
                                --end
                        end
                end
        end
        return intreturn
end

function TheHeroTowerItemChangeNpcInit(npc)
        return true
end

function TheHeroTowerItemChangeNpcTalkEventCallBack(npc,player)
        if NLG.CanTalk(npc,player) then
                local BDBankTempInt = TheHeroTowerLoadItem(player,npc)
                local msg = "A|"
                for i = 100,119 do
                        --id,num,metamo,name
                        if BDBankTempInt[i] then
                                msg = msg..BDBankTempInt[i][1].."|"..BDBankTempInt[i][2].."|0|"..BDBankTempInt[i][3].."||"..BDBankTempInt[i][4].."|"
                        else
                                msg = msg.."||||||"
                        end
                end
                msg = msg.."|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||0"
                NLG.ShowWindowTalked(player,23,0,100,msg,npc)
        end
end

function TheHeroTowerItemChangeNpcWindowEventCallBack(npc,player,Seqno,Select,Data)
        if Select ~= 2 then
                if Seqno == 100 then
                        if string.len(Data) >= 7 and string.sub(Data,1,2) == "I|" then
                                local inttemp = splitplus(Data,"|")
                                local mbdbreturn = TheHeroTowerMoveItem(player,npc,tonumber(inttemp[2]),tonumber(inttemp[3]),tonumber(inttemp[4]))
                                if mbdbreturn then
                                        local BDBankTempInt = TheHeroTowerLoadItem(player,npc)
                                        local msg = "A|"
                                        for i = 100,119 do
                                                --id,num,metamo,name
                                                if BDBankTempInt[i] then
                                                        msg = msg..BDBankTempInt[i][1].."|"..BDBankTempInt[i][2].."|0|"..BDBankTempInt[i][3].."||"..BDBankTempInt[i][4].."|"
                                                else
                                                        msg = msg.."||||||"
                                                end
                                        end
                                        msg = msg.."|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||0"
                                        NLG.ShowWindowTalked(player,23,0,100,msg,npc)
                                end
                        end
                end
        end
end

if TheHeroTowerItemChangeNpcIndex == nil then
        TheHeroTowerItemChangeNpcIndex = NL.CreateNpc(nil,"TheHeroTowerItemChangeNpcInit")
        Char.SetData(TheHeroTowerItemChangeNpcIndex,1,TheHeroTowerItemChangeNpcInfo[1])
        Char.SetData(TheHeroTowerItemChangeNpcIndex,2,TheHeroTowerItemChangeNpcInfo[1])
        Char.SetData(TheHeroTowerItemChangeNpcIndex,4,TheHeroTowerItemChangeNpcInfo[4])
        Char.SetData(TheHeroTowerItemChangeNpcIndex,5,TheHeroTowerItemChangeNpcInfo[5])
        Char.SetData(TheHeroTowerItemChangeNpcIndex,6,TheHeroTowerItemChangeNpcInfo[6])
        Char.SetData(TheHeroTowerItemChangeNpcIndex,7,TheHeroTowerItemChangeNpcInfo[3])
        Char.SetData(TheHeroTowerItemChangeNpcIndex,2000,TheHeroTowerItemChangeNpcInfo[2])
        Char.SetTalkedEvent(nil,"TheHeroTowerItemChangeNpcTalkEventCallBack",TheHeroTowerItemChangeNpcIndex)
        Char.SetWindowTalkedEvent(nil,"TheHeroTowerItemChangeNpcWindowEventCallBack",TheHeroTowerItemChangeNpcIndex)
        if TheHeroTowerItemChangeNpcInfo[7] == 1 then
                Char.SetData(TheHeroTowerItemChangeNpcIndex,8,TheHeroTowerItemChangeNpcInfo[8])
                Char.SetData(TheHeroTowerItemChangeNpcIndex,44,TheHeroTowerItemChangeNpcInfo[9])
                Char.SetData(TheHeroTowerItemChangeNpcIndex,2001,TheHeroTowerItemChangeNpcInfo[10])
--                NLG.SetShowName(TheHeroTowerItemChangeNpcIndex,TheHeroTowerItemChangeNpcInfo[7])
        end
        NLG.UpChar(TheHeroTowerItemChangeNpcIndex)
end


function MakeILvItem(player,itemid,itype,ilv,iplusnum,bfpsd) --return 1 成功 -1 失败
        if Char.ItemSlot(player) < 40 then
                local itemindex = Char.GiveItem(player,itemid,1)
                if itemindex >= 0 then
                        if itype >= 0 then
                                Item.SetData(itemindex,3,itype)
                        end
                        local itemname = ""
                        local statelist = {}
                        local itemtype = Item.GetData(itemindex,3)
                        local itembasetype = ItemBaseTypeList[itemtype]
                        local itemlv = ilv
                        local itemplusnum = iplusnum
                        local itemplusstr = 0
                        local bfable = 0
                        if BattleFireExLv > 0 then
                                for i = 1,MaxBattleFireNum do
                                        local rdm = math.random(1,1000)
                                        if rdm > 1000 - (bfpsd or BattleFirePsd) then
                                                itemlv = ilv + BattleFireExLv
                                                itemplusnum = itemplusnum + BattleFirePlus
                                                itemname = BattleFireName
                                                bfable = bfable + 1
                                        else
                                                break
                                        end
                                end
                        end
                        statelist[18] = BaseType[itembasetype][1]*itemlv
                        --statelist[19] = BaseType[itembasetype][2]*itemlv
                        statelist[27] = BaseType[itembasetype][3]*itemlv
                        if itemplusnum >= 1 then
                                for i = 1,itemplusnum do
                                        local iplustype = math.random(1,#PlusList)
                                        if type(PlusList[iplustype]) == "table" then
                                                if statelist[PlusList[iplustype][1]] == nil then
                                                        statelist[PlusList[iplustype][1]] = PlusType[itembasetype][PlusList[iplustype][3]]*itemlv
                                                else
                                                        statelist[PlusList[iplustype][1]] = statelist[PlusList[iplustype][1]] + PlusType[itembasetype][PlusList[iplustype][3]]*itemlv
                                                end
                                                itemname = itemname..PlusList[iplustype][2]
                                                itemplusstr = itemplusstr + iplustype*(32^(i-1))
                                        end
                                end
                        end
                        if string.len(itemname) > 10 then
                                if bfable > 0 then
                                        itemname = BattleFireName..TooLongName
                                else
                                        itemname = TooLongName
                                end
                        end
                        Item.SetData(itemindex,2001,itemname..ItemTypeName[Item.GetData(itemindex,3)])
                        for k,v in pairs(statelist) do
                                Item.SetData(itemindex,k,Item.GetData(itemindex,k)+math.floor(v))
                        end
                        if ItemTypeMetamo[itemtype] then
                                local rdm = math.random(1,#ItemTypeMetamo[itemtype])
                                Item.SetData(itemindex,1,ItemTypeMetamo[itemtype][rdm])
                        end
                        if ilvrecourd > 0 then
                                Item.SetData(itemindex,ilvrecourd,itemlv) --ilv记录
                        end
                        if iplusrecourd > 0 then
                                Item.SetData(itemindex,iplusrecourd,itemplusstr) --iplus记录
                        end
                        Item.UpItem(player,-1)
                        return itemindex
                else
                        return -1
                end
        else
                return -1
        end
end


回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-13 03:47 , Processed in 0.131203 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表