魔力宝贝

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

[GP] maze_box_npc.lua--迷宫之城宝箱

[复制链接]
发表于 前天 03:30 | 显示全部楼层 |阅读模式

local MaxGold = 100000000 --最大魔币
local meze_box_num = meze_box_num or 0
meze_npc_tab=meze_npc_tab or {}
meze_npc_everyday = meze_npc_everyday or {}
meze_npc_everyday2 = meze_npc_everyday2 or {}
local meze_npc_all_gold = meze_npc_all_gold or {}

------
local meze_npc_limit_map = {}
meze_npc_limit_map[38111]=1
meze_npc_limit_map[38112]=1
meze_npc_limit_map[38113]=1
------

Global_Reg.RegInit("meze_npc_init");--自动启动函数
Global_Reg.RegDischargeParty("meze_npc_disteam");

function meze_npc_init() --NPC注册
        meze_npc_master()
        meze_npc_box1()
        meze_npc_box2()
        meze_npc_box3()
        return 0
end

function meze_npc_disteam(player)
        local Maptype = Char.GetData(player, %对象_地图类型%);
        local MapID = Char.GetData(player, %对象_地图%);
        if Maptype==0 and meze_npc_limit_map[MapID] then
                NLG.SystemMessage(player,"[提示]当前无法解散队伍,请先领取[奖励宝箱]")
                return -1
        end
        return 0;
end

function Maze_down()
        local tab=NLG.GetOnLinePlayer(0)
        for _,v in pairs(tab) do
                local CDK=Char.GetData(v,2002)
                local rignum=Char.GetData(v,48)
                local tcdk=CDK..rignum
                if meze_npc_tab[tcdk] then
                        if meze_npc_tab[tcdk]~=0 then
                                NLG.AddGold(player,meze_npc_tab[tcdk])
                                meze_npc_tab[tcdk]=0
                        end
                end
        end
end

function meze_npc_login(player)
        local job = Char.GetData(player, 51)
        if job~=540 then--不为佣兵
                local CDK=Char.GetData(player,2002)
                local rignum=Char.GetData(player,48)
                local tcdk=CDK..rignum
                if meze_npc_everyday[tcdk]==nil then
                        local yue,ri=get_now_time()
                        meze_npc_everyday[tcdk]={yue,ri,5}
                end
                if meze_npc_everyday2[tcdk]==nil then
                        local yue,ri=get_now_time()
                        meze_npc_everyday2[tcdk]={yue,ri,1}
                end
                if meze_npc_tab[tcdk]==nil then
                        meze_npc_tab[tcdk]=0
                end
        end
        return 0
end

function meze_npc_master(npc) --NPC设置
        if npc == nil  then
        npc = NL.CreateNpc(nil,"meze_npc_event")
        end       
        Char.SetData(npc,1,14504)
        Char.SetData(npc,2,14504)
        Char.SetData(npc,2000,"魔法工匠卡达斯")
        Char.SetData(npc,7,6)
        Char.SetData(npc,4,38011)
        Char.SetData(npc,5,29)
        Char.SetData(npc,6,32)
        LuaNpcIndex["meze_npc_master"]=npc;
        InstallNpc("meze_npc_master",npc);
        NLG.UpChar(npc)
        Char.SetTalkedEvent(nil,"meze_npc_master_chuangkou",npc)
        Char.SetWindowTalkedEvent(nil,"meze_npc_master_gongneng",npc)
        return true
end

function meze_npc_box1(npc) --NPC设置
        if npc == nil  then
        npc = NL.CreateNpc(nil,"meze_npc_event")
        end       
        Char.SetData(npc,1,27893)
        Char.SetData(npc,2,27893)
        Char.SetData(npc,2000,"奖励宝箱")
        Char.SetData(npc,7,4)
        Char.SetData(npc,4,38111)
        Char.SetData(npc,5,37)
        Char.SetData(npc,6,20)
        NLG.UpChar(npc)
        Char.SetTalkedEvent(nil,"meze_npc_box1_chuangkou",npc)
        return true
end

function meze_npc_box2(npc) --NPC设置
        if npc == nil  then
        npc = NL.CreateNpc(nil,"meze_npc_event")
        end       
        Char.SetData(npc,1,27897)
        Char.SetData(npc,2,27897)
        Char.SetData(npc,2000,"奖励宝箱")
        Char.SetData(npc,7,4)
        Char.SetData(npc,4,38112)
        Char.SetData(npc,5,37)
        Char.SetData(npc,6,20)
        NLG.UpChar(npc)
        Char.SetTalkedEvent(nil,"meze_npc_box2_chuangkou",npc)
        return true
end

function meze_npc_box3(npc) --NPC设置
        if npc == nil  then
        npc = NL.CreateNpc(nil,"meze_npc_event")
        end       
        Char.SetData(npc,1,27899)
        Char.SetData(npc,2,27899)
        Char.SetData(npc,2000,"奖励宝箱")
        Char.SetData(npc,7,4)
        Char.SetData(npc,4,38113)
        Char.SetData(npc,5,37)
        Char.SetData(npc,6,20)
        NLG.UpChar(npc)
        Char.SetTalkedEvent(nil,"meze_npc_box3_chuangkou",npc)
        return true
end

function meze_npc_event(index)
        return true;
end

function meze_npc_master_chuangkou(npc,player) --窗口
        if NLG.CanTalk(npc,player) then
                NLG.ShowWindowTalked(player,2,2,0,"3\n可爱的小冒险者,你想不想$4[资助]$0我的研究?我会给你一些开启迷宫之城底部宝箱的$1[特殊钥匙]$0当酬谢的\n\n                 「查看介绍」\n                 「普通资助」\n                 「高额资助」",npc)
        end
end

function meze_npc_master_gongneng(npc,player,_SqeNo,_select,_data) --功能
--NLG.SystemMessage(player,"\n _SqeNo是:"..(_SqeNo or "空").."它的类型是"..type(_SqeNo).."\n  _select是:".. (_select or "空").."它的类型是"..type(_select).."\n  _data是:"..(_data or "空").."它的类型是"..type(_data))
        if _select ~= 2 then
                if _SqeNo==0 then
                        if _data=="1" then--介绍
                                local msg = "\n    $4『赞助卡达斯』$9每天有一定的次数,捐献一定量魔币,获得1次"
                                                        .."\n$8〈卡达斯的宝箱钥匙〉$4[增益]$0"
                                                        .."\n\n   $8〈卡达斯的宝箱钥匙〉$9:一种特殊被动,在$4『迷宫之城』$9底部领取"
                                                        .."\n$4[奖励宝箱]$9的时候会触发,让全队(包括自身)获得$4[额外的魔币]$9,让自$9己获得更高品质的$4[魔法宝石]$9"
                                                        .."\n    $4『同队累积机制』$9同一个队伍每个队员都可$4『赞助卡达斯』$9,当 $9队伍里面有复数$8〈卡达斯的宝箱钥匙〉$9被动时,全队获得的$4[额外的魔$4币]$9会叠加,$4[额外魔币]$5限制同队多开只获得1份(多开只能获得1份)"
                                                        .."\n    $4『伙伴加成』$9当队长携带伙伴打开迷宫之城底部的$4[奖励宝箱]$9时$9,将会额外获得伙伴数量的$4[魔法宝石]$9和$8〈卡达斯的宝箱钥匙〉$9的$4[额$4外的魔币]$9,但额外获得的$4[魔法宝石]$9品质不受$8〈卡达斯的宝箱钥匙〉$9被动影响"
                                                        .."\n    $5〈卡达斯的宝箱钥匙(铜)〉$9增益效果简介"
                                                        .."\n  $4价格:5万魔币  队伍额外魔币:6000/人(伙伴给队长8000/伙伴)"
                                                        .."\n  获得的高品质魔法宝石:皇家蓝(80%),鸽血红(20%)"
                                                        .."\n    $5〈卡达斯的宝箱钥匙(银)〉$9增益效果简介"
                                                        .."\n  $4价格:15万魔币 队伍额外魔币:1.8万/人(伙伴给队长2.4万/伙伴)"
                                                        .."\n  获得的高品质魔法宝石:皇家蓝(30%),鸽血红(70%)"
                                                        .."\n    $5〈卡达斯的宝箱钥匙(金)〉$9增益效果简介"
                                                        .."\n  $4价格:20万魔币 队伍额外魔币:2.4万/人(伙伴给队长3.2万/伙伴)"
                                                        .."\n  获得的高品质魔法宝石:鸽血红(95%),熏衣紫(5%)"
                                NLG.ShowWindowTalked(player,10,2,99,msg,npc)
                        elseif _data=="2" then--普通赞助,一天5次
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local tcdk=CDK..rignum
                                local yue,ri=get_now_time()
                                if yue~=meze_npc_everyday[tcdk][1] then
                                        meze_npc_everyday[tcdk]={yue,ri,5}
                                end
                                if ri~=meze_npc_everyday[tcdk][2] then
                                        meze_npc_everyday[tcdk]={yue,ri,5}
                                end
                                local num = meze_npc_everyday[tcdk][3]
                                local chuangkou = 2
                                local msg = "$4赞助后能从迷宫之城奖励宝箱中获得高阶魔法宝石$0\n          剩余今日普通资助次数$4『"..num.."/5』$0\n"
                                if num>0 then
                                        msg="7\n"..msg.."\n要资助卡达斯一定量魔币获得1次$9〈卡达斯的宝箱钥 $9匙〉$4[增益]$0吗?\n注:该$1〖增益〗$0并非道具,在通关迷宫之城后,点击领奖宝箱自动触发\n 支付$45万$0 魔币获得1次$9〈卡达斯的宝箱钥匙(铜)〉$0\n 支付$415万$0魔币获得1次$9〈卡达斯的宝箱钥匙(银)〉$0"
                                else
                                        msg=msg.."\n\n        您今天的$4[普通资助]$0次数已经耗尽了"
                                        chuangkou = 0
                                end
                                NLG.ShowWindowTalked(player,chuangkou,2,10,msg,npc)
                        elseif _data=="3" then--高阶赞助,一天1次
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local tcdk=CDK..rignum
                                local yue,ri=get_now_time()
                                if yue~=meze_npc_everyday2[tcdk][1] then
                                        meze_npc_everyday2[tcdk]={yue,ri,1}
                                end
                                if ri~=meze_npc_everyday2[tcdk][2] then
                                        meze_npc_everyday2[tcdk]={yue,ri,1}
                                end
                                local num = meze_npc_everyday2[tcdk][3]
                                local anniu=3
                                local msg = "$4赞助后能从迷宫之城奖励宝箱中获得高阶魔法宝石$0\n\n          剩余今日高额资助次数$4『"..num.."/1』$0\n"
                                if num>0 then
                                        msg=msg.."\n要资助卡达斯$420万$0魔币获得1次$9〈卡达斯的宝箱钥匙($9金)〉$4[增益]$0吗?\n注:该$1〖增益〗$0并非道具,在通关迷宫之城后,点击领奖宝箱自动触发\n\n          点击$1[确定]$0资助卡达斯的研究"
                                else
                                        msg=msg.."\n\n        您今天的$4[高额资助]$0次数已经耗尽了"
                                        anniu=2
                                end
                                NLG.ShowWindowTalked(player,0,anniu,100,msg,npc)
                        end
                elseif _SqeNo==10 then
                        if _data == "1" then
                                local money = Char.GetData(player,%对象_金币%)
                                local msg = ""
                                if money<50000 then
                                        NLG.SystemMessage(player,"[卡达斯]:你的金币不够了")
                                else
                                        local CDK=Char.GetData(player,2002)
                                        local rignum=Char.GetData(player,48)
                                        local tcdk=CDK..rignum
                                        if meze_npc_tab[tcdk]==0 then
                                                meze_npc_tab[tcdk]=50000
                                                NLG.AddGold(player,-50000)
                                                meze_npc_everyday[tcdk][3]=meze_npc_everyday[tcdk][3] -1
                                                NLG.SystemMessage(player,"[卡达斯]:感谢您的赞助!(你获得了〈卡达斯的宝箱钥匙(铜)〉增益)")
                                        else
                                                NLG.SystemMessage(player,"[系统]:你身上已经有一份〈卡达斯的宝箱钥匙〉增益了")
                                        end
                                end
                        elseif _data=="2" then
                                local money = Char.GetData(player,%对象_金币%)
                                local msg = ""
                                if money<150000 then
                                        NLG.SystemMessage(player,"[卡达斯]:你的金币不够了")
                                else
                                        local CDK=Char.GetData(player,2002)
                                        local rignum=Char.GetData(player,48)
                                        local tcdk=CDK..rignum
                                        if meze_npc_tab[tcdk]==0 then
                                                meze_npc_tab[tcdk]=150000
                                                NLG.AddGold(player,-150000)
                                                meze_npc_everyday[tcdk][3]=meze_npc_everyday[tcdk][3] -1
                                                NLG.SystemMessage(player,"[卡达斯]:感谢您的赞助!(你获得了〈卡达斯的宝箱钥匙(银)〉增益)")
                                        else
                                                NLG.SystemMessage(player,"[系统]:你身上已经有一份〈卡达斯的宝箱钥匙〉增益了")
                                        end
                                end
                        end
                elseif _SqeNo==100 then
                        if _select == 1 then
                                local money = Char.GetData(player,%对象_金币%)
                                local msg = ""
                                if money<200000 then
                                        NLG.SystemMessage(player,"[卡达斯]:你的金币不够了")
                                else
                                        local CDK=Char.GetData(player,2002)
                                        local rignum=Char.GetData(player,48)
                                        local tcdk=CDK..rignum
                                        if meze_npc_tab[tcdk]==0 then
                                                meze_npc_tab[tcdk]=200000
                                                NLG.AddGold(player,-200000)
                                                meze_npc_everyday2[tcdk][3]=meze_npc_everyday2[tcdk][3] -1
                                                NLG.SystemMessage(player,"[卡达斯]:感谢您的赞助!(你获得了〈卡达斯的宝箱钥匙(金)〉增益)")
                                        else
                                                NLG.SystemMessage(player,"[系统]:你身上已经有一份〈卡达斯的宝箱钥匙〉增益了")
                                        end
                                end
                        end
                end
        end
end

function meze_npc_box1_chuangkou(npc,player) --窗口
        if NLG.CanTalk(npc,player) then
                local meze_npc_all_gold = nil
                local count = 0--额外奖励
                local dz = Char.GetData(player,%对象_组队模式%)
                if dz==0 or dz==1 then--只有没队或者队长可以对话
                        meze_box_num = meze_box_num + 1
                        local CDK=Char.GetData(player,2002)
                        local rignum=Char.GetData(player,48)
                        local tcdk=CDK..rignum
                        if dz==1 then--是队长,需要给予佣兵奖励
                                for i=1,4 do
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job = Char.GetData(GroupIndex,51)
                                                if job==540 then
                                                        local catordog = string.sub(Char.GetData(GroupIndex,2002),-1,-1)
                                                        if catordog=="?" then
                                                                count=count+1
                                                        end
                                                end
                                        end
                                end
                                if count>0 then
                                        for i=1,count do
                                                meze_npc_box_give_item(player,1,"伙伴赠送的")--tsmsg:伙伴赠送的
                                        end
                                end
                                for i=0,4 do--团队发奖
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job= Char.GetData(GroupIndex,51)
                                                if job~=540 then
                                                        local CDK=Char.GetData(GroupIndex,2002)
                                                        local rignum=Char.GetData(GroupIndex,48)
                                                        local tcdk3=CDK..rignum
                                                        if meze_npc_tab[tcdk3]==nil then
                                                                meze_npc_tab[tcdk3]=0
                                                        end
                                                        if meze_npc_tab[tcdk3]==0 then
                                                                meze_npc_box_give_item(GroupIndex,1,"")
                                                        elseif meze_npc_tab[tcdk3]==50000 then
                                                                everyday_gift_give(GroupIndex,100)
                                                                meze_npc_box_give_item(GroupIndex,4,"")
                                                        elseif meze_npc_tab[tcdk3]==150000 then
                                                                everyday_gift_give(GroupIndex,100)
                                                                meze_npc_box_give_item(GroupIndex,5,"")
                                                        elseif meze_npc_tab[tcdk3]==200000 then
                                                                everyday_gift_give(GroupIndex,100)
                                                                meze_npc_box_give_item(GroupIndex,6,"")
                                                        end
                                                end
                                        end
                                end
                                if meze_npc_all_gold==nil then
                                        meze_npc_all_gold=0
                                        for i=0,4 do
                                                local GroupIndex = Char.GetTeamIndex(player, i);
                                                if GroupIndex>=0 then
                                                        local CDK2=Char.GetData(GroupIndex,2002)
                                                        local rignum2=Char.GetData(GroupIndex,48)
                                                        local tcdk2=CDK2..rignum2
                                                        local gold = meze_npc_tab[tcdk2] or 0
                                                        meze_npc_all_gold = meze_npc_all_gold + gold
                                                        meze_npc_tab[tcdk2]=0
                                                end
                                        end
                                end
                                local teamgold = math.floor((meze_npc_all_gold/5)*0.6)
                                local user=Char.GetData(player,2002);
                                local macsave={}
                                macsave[Mac[user]] = 1
                                for i=1,4 do
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job = Char.GetData(GroupIndex,51)
                                                if job~=540 and teamgold~=0 then
                                                        local dyuser=Char.GetData(GroupIndex,2002);
                                                        if macsave[Mac[dyuser]] then
                                                                NLG.SystemMessage(GroupIndex,"[多开限制]多开只能领取一次[额外金币]")
                                                        else
                                                                local dqgold = Char.GetData(GroupIndex,%对象_金币%)
                                                                NLG.SystemMessage(GroupIndex,"使用〈卡达斯的宝箱钥匙〉开出了大量金币")
                                                                macsave[Mac[dyuser]]=1
                                                                if (dqgold+teamgold ) > MaxGold then
                                                                        NLG.AddGold(GroupIndex, MaxGold-dqgold)
                                                                else
                                                                        NLG.AddGold(GroupIndex, teamgold)
                                                                end
                                                        end
                                                end
                                        end
                                end
                        elseif dz==0 then
                                if meze_npc_tab[tcdk]==nil then
                                        meze_npc_tab[tcdk]=0
                                end
                                if meze_npc_tab[tcdk]==0 then
                                        meze_npc_box_give_item(player,1,"")
                                elseif meze_npc_tab[tcdk]==50000 then
                                        everyday_gift_give(player,100)
                                        meze_npc_box_give_item(player,4,"")
                                elseif meze_npc_tab[tcdk]==150000 then
                                        everyday_gift_give(player,100)
                                        meze_npc_box_give_item(player,5,"")
                                elseif meze_npc_tab[tcdk]==200000 then
                                        everyday_gift_give(player,100)
                                        meze_npc_box_give_item(player,6,"")
                                end
                                meze_npc_all_gold=meze_npc_tab[tcdk]
                        end
                        local getgold = math.floor((meze_npc_all_gold/5)*0.6) + math.floor((meze_npc_all_gold/5)*0.8*count)
                        if getgold>0 then
                                local msg = "使用〈卡达斯的宝箱钥匙〉开出了大量金币"
                                if count>0 then
                                        msg=msg..",您的"..count.."位伙伴将得到的金币赠予了你"
                                end
                                NLG.SystemMessage(player,msg)
                                local dqgold = Char.GetData(player,%对象_金币%)
                                if (dqgold+getgold ) > MaxGold then
                                        NLG.AddGold(player, MaxGold-dqgold)
                                else
                                        NLG.AddGold(player, getgold)
                                end
                               
                        end
                       
                        NLG.Warp(player,0,38011,26,32)--传送回迷宫之城
                else
                        NLG.SystemMessage(player,"只有队长可以打开奖励宝箱")
                end
        end
        return 0
end

function meze_npc_box2_chuangkou(npc,player) --窗口
        if NLG.CanTalk(npc,player) then
                local meze_npc_all_gold = nil
                local count = 0--额外奖励
                local dz = Char.GetData(player,%对象_组队模式%)
                if dz==0 or dz==1 then--只有没队或者队长可以对话
                        meze_box_num = meze_box_num + 1
                        local CDK=Char.GetData(player,2002)
                        local rignum=Char.GetData(player,48)
                        local tcdk=CDK..rignum
                        if dz==1 then--是队长,需要给予佣兵奖励
                                for i=1,4 do
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job = Char.GetData(GroupIndex,51)
                                                if job==540 then
                                                        local catordog = string.sub(Char.GetData(GroupIndex,2002),-1,-1)
                                                        if catordog=="?" then
                                                                count=count+1
                                                        end
                                                end
                                        end
                                end
                                if count>0 then
                                        for i=1,count do
                                                meze_npc_box_give_item(player,2,"伙伴赠送的")--tsmsg:伙伴赠送的
                                        end
                                end
                                for i=0,4 do--团队发奖
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job= Char.GetData(GroupIndex,51)
                                                if job~=540 then
                                                        local CDK=Char.GetData(GroupIndex,2002)
                                                        local rignum=Char.GetData(GroupIndex,48)
                                                        local tcdk3=CDK..rignum
                                                        if meze_npc_tab[tcdk3]==nil then
                                                                meze_npc_tab[tcdk3]=0
                                                        end
                                                        if meze_npc_tab[tcdk3]==0 then
                                                                meze_npc_box_give_item(GroupIndex,2,"")
                                                        elseif meze_npc_tab[tcdk3]==50000 then
                                                                everyday_gift_give(GroupIndex,100)
                                                                meze_npc_box_give_item(GroupIndex,4,"")
                                                        elseif meze_npc_tab[tcdk3]==150000 then
                                                                everyday_gift_give(GroupIndex,100)
                                                                meze_npc_box_give_item(GroupIndex,5,"")
                                                        elseif meze_npc_tab[tcdk3]==200000 then
                                                                everyday_gift_give(GroupIndex,100)
                                                                meze_npc_box_give_item(GroupIndex,6,"")
                                                        end
                                                end
                                        end
                                end
                                if meze_npc_all_gold==nil then
                                        meze_npc_all_gold=0
                                        for i=0,4 do
                                                local GroupIndex = Char.GetTeamIndex(player, i);
                                                if GroupIndex>=0 then
                                                        local CDK2=Char.GetData(GroupIndex,2002)
                                                        local rignum2=Char.GetData(GroupIndex,48)
                                                        local tcdk2=CDK2..rignum2
                                                        local gold = meze_npc_tab[tcdk2] or 0
                                                        meze_npc_all_gold = meze_npc_all_gold + gold
                                                        meze_npc_tab[tcdk2]=0
                                                end
                                        end
                                end
                                local teamgold = math.floor((meze_npc_all_gold/5)*0.6)
                                local user=Char.GetData(player,2002);
                                local macsave={}
                                macsave[Mac[user]] = 1
                                for i=1,4 do
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job = Char.GetData(GroupIndex,51)
                                                if job~=540 and teamgold~=0 then
                                                        local dyuser=Char.GetData(GroupIndex,2002);
                                                        if macsave[Mac[dyuser]] then
                                                                NLG.SystemMessage(GroupIndex,"[多开限制]多开只能领取一次[额外金币]")
                                                        else
                                                                local dqgold = Char.GetData(GroupIndex,%对象_金币%)
                                                                NLG.SystemMessage(GroupIndex,"使用〈卡达斯的宝箱钥匙〉开出了大量金币")
                                                                macsave[Mac[dyuser]]=1
                                                                if (dqgold+teamgold ) > MaxGold then
                                                                        NLG.AddGold(GroupIndex, MaxGold-dqgold)
                                                                else
                                                                        NLG.AddGold(GroupIndex, teamgold)
                                                                end
                                                        end
                                                end
                                        end
                                end
                        elseif dz==0 then
                                if meze_npc_tab[tcdk]==nil then
                                        meze_npc_tab[tcdk]=0
                                end
                                if meze_npc_tab[tcdk]==0 then
                                        meze_npc_box_give_item(player,2,"")
                                elseif meze_npc_tab[tcdk]==50000 then
                                        everyday_gift_give(player,100)
                                        meze_npc_box_give_item(player,4,"")
                                elseif meze_npc_tab[tcdk]==150000 then
                                        everyday_gift_give(player,100)
                                        meze_npc_box_give_item(player,5,"")
                                elseif meze_npc_tab[tcdk]==200000 then
                                        everyday_gift_give(player,100)
                                        meze_npc_box_give_item(player,6,"")
                                end
                                meze_npc_all_gold=meze_npc_tab[tcdk]
                        end
                        local getgold = math.floor((meze_npc_all_gold/5)*0.6) + math.floor((meze_npc_all_gold/5)*0.8*count)
                        if getgold>0 then
                                local msg = "使用〈卡达斯的宝箱钥匙〉开出了大量金币"
                                if count>0 then
                                        msg=msg..",您的"..count.."位伙伴将得到的金币赠予了你"
                                end
                                NLG.SystemMessage(player,msg)
                                local dqgold = Char.GetData(player,%对象_金币%)
                                if (dqgold+getgold ) > MaxGold then
                                        NLG.AddGold(player, MaxGold-dqgold)
                                else
                                        NLG.AddGold(player, getgold)
                                end
                               
                        end
                       
                        NLG.Warp(player,0,38011,26,32)--传送回迷宫之城
                else
                        NLG.SystemMessage(player,"只有队长可以打开奖励宝箱")
                end
        end
        return 0
end

function meze_npc_box3_chuangkou(npc,player) --窗口
        if NLG.CanTalk(npc,player) then
                local meze_npc_all_gold = nil
                local count = 0--额外奖励
                local dz = Char.GetData(player,%对象_组队模式%)
                if dz==0 or dz==1 then--只有没队或者队长可以对话
                        meze_box_num = meze_box_num + 1
                        local CDK=Char.GetData(player,2002)
                        local rignum=Char.GetData(player,48)
                        local tcdk=CDK..rignum
                        if dz==1 then--是队长,需要给予佣兵奖励
                                for i=1,4 do
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job = Char.GetData(GroupIndex,51)
                                                if job==540 then
                                                        local catordog = string.sub(Char.GetData(GroupIndex,2002),-1,-1)
                                                        if catordog=="?" then
                                                                count=count+1
                                                        end
                                                end
                                        end
                                end
                                if count>0 then
                                        for i=1,count do
                                                meze_npc_box_give_item(player,3,"伙伴赠送的")--tsmsg:伙伴赠送的
                                        end
                                end
                                for i=0,4 do--团队发奖
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job= Char.GetData(GroupIndex,51)
                                                if job~=540 then
                                                        local CDK=Char.GetData(GroupIndex,2002)
                                                        local rignum=Char.GetData(GroupIndex,48)
                                                        local tcdk3=CDK..rignum
                                                        if meze_npc_tab[tcdk3]==nil then
                                                                meze_npc_tab[tcdk3]=0
                                                        end
                                                        if meze_npc_tab[tcdk3]==0 then
                                                                meze_npc_box_give_item(GroupIndex,3,"")
                                                        elseif meze_npc_tab[tcdk3]==50000 then
                                                                everyday_gift_give(GroupIndex,100)
                                                                meze_npc_box_give_item(GroupIndex,4,"")
                                                        elseif meze_npc_tab[tcdk3]==150000 then
                                                                everyday_gift_give(GroupIndex,100)
                                                                meze_npc_box_give_item(GroupIndex,5,"")
                                                        elseif meze_npc_tab[tcdk3]==200000 then
                                                                everyday_gift_give(GroupIndex,100)
                                                                meze_npc_box_give_item(GroupIndex,6,"")
                                                        end
                                                end
                                        end
                                end
                                if meze_npc_all_gold==nil then
                                        meze_npc_all_gold=0
                                        for i=0,4 do
                                                local GroupIndex = Char.GetTeamIndex(player, i);
                                                if GroupIndex>=0 then
                                                        local CDK2=Char.GetData(GroupIndex,2002)
                                                        local rignum2=Char.GetData(GroupIndex,48)
                                                        local tcdk2=CDK2..rignum2
                                                        local gold = meze_npc_tab[tcdk2] or 0
                                                        meze_npc_all_gold = meze_npc_all_gold + gold
                                                        meze_npc_tab[tcdk2]=0
                                                end
                                        end
                                end
                                local teamgold = math.floor((meze_npc_all_gold/5)*0.6)
                                local user=Char.GetData(player,2002);
                                local macsave={}
                                macsave[Mac[user]] = 1
                                for i=1,4 do
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job = Char.GetData(GroupIndex,51)
                                                if job~=540 and teamgold~=0 then
                                                        local dyuser=Char.GetData(GroupIndex,2002);
                                                        if macsave[Mac[dyuser]] then
                                                                NLG.SystemMessage(GroupIndex,"[多开限制]多开只能领取一次[额外金币]")
                                                        else
                                                                local dqgold = Char.GetData(GroupIndex,%对象_金币%)
                                                                NLG.SystemMessage(GroupIndex,"使用〈卡达斯的宝箱钥匙〉开出了大量金币")
                                                                macsave[Mac[dyuser]]=1
                                                                if (dqgold+teamgold ) > MaxGold then
                                                                        NLG.AddGold(GroupIndex, MaxGold-dqgold)
                                                                else
                                                                        NLG.AddGold(GroupIndex, teamgold)
                                                                end
                                                        end
                                                end
                                        end
                                end
                        elseif dz==0 then
                                if meze_npc_tab[tcdk]==nil then
                                        meze_npc_tab[tcdk]=0
                                end
                                if meze_npc_tab[tcdk]==0 then
                                        meze_npc_box_give_item(player,3,"")
                                elseif meze_npc_tab[tcdk]==50000 then
                                        everyday_gift_give(player,100)
                                        meze_npc_box_give_item(player,4,"")
                                elseif meze_npc_tab[tcdk]==150000 then
                                        everyday_gift_give(player,100)
                                        meze_npc_box_give_item(player,5,"")
                                elseif meze_npc_tab[tcdk]==200000 then
                                        everyday_gift_give(player,100)
                                        meze_npc_box_give_item(player,6,"")
                                end
                                meze_npc_all_gold=meze_npc_tab[tcdk]
                        end
                        local getgold = math.floor((meze_npc_all_gold/5)*0.6) + math.floor((meze_npc_all_gold/5)*0.8*count)
                        if getgold>0 then
                                local msg = "使用〈卡达斯的宝箱钥匙〉开出了大量金币"
                                if count>0 then
                                        msg=msg..",您的"..count.."位伙伴将得到的金币赠予了你"
                                end
                                NLG.SystemMessage(player,msg)
                                local dqgold = Char.GetData(player,%对象_金币%)
                                if (dqgold+getgold ) > MaxGold then
                                        NLG.AddGold(player, MaxGold-dqgold)
                                else
                                        NLG.AddGold(player, getgold)
                                end
                               
                        end
                       
                        NLG.Warp(player,0,38011,26,32)--传送回迷宫之城
                else
                        NLG.SystemMessage(player,"只有队长可以打开奖励宝箱")
                end
        end
        return 0
end
--[[
mold解释:
1:普通无BUFF奖励
2:中等无BUFF奖励
3:困难无BUFF奖励
4:5万元BUFF奖励
5:15万元BUFF奖励
6:20万元BUFF奖励

--]]

function meze_npc_box_give_item(player,mold,tsmsg)--tsmsg:伙伴赠送的
        local num=math.random(1,100)
        local CDK=Char.GetData(player,2002)
        local rignum=Char.GetData(player,48)
        local tcdk=CDK..rignum
        if tsmsg==nil then
                tsmsg=""
        end
        local box_item = 91023--绿
        if mold==1 then
                if num>99 then
                        box_item = 91025--皇家蓝
                elseif num>95 and num<=99 then
                        box_item = 91024--碧玺蓝
                elseif num>70 and num<=95 then
                        box_item = 91023--祖母绿
                elseif num>10 and num<=70 then
                        box_item = 91022--浅绿
                else
                        box_item = 91021--浅灰
                end
        elseif mold==2 then
                if num>98 then
                        box_item = 91025--皇家蓝
                elseif num>63 and num<=98 then
                        box_item = 91024--碧玺蓝
                elseif num>13 and num<=63 then
                        box_item = 91023--祖母绿
                else
                        box_item = 91022--浅绿
                end
        elseif mold==3 then
                if num>65 then
                        box_item=91025--深蓝
                else
                        box_item=91024--浅蓝
                end
        elseif mold==4 then
                if num>80 then
                        box_item=91026--红
                else
                        box_item=91025--深蓝
                end
        elseif mold==5 then
                if num>70 then
                        box_item=91025--深蓝
                else
                        box_item=91026--红
                end
        elseif mold==6 then
                if num>95 then
                        box_item=91027--紫
                else
                        box_item=91026--红
                end
        end
        local Num = Char.FindEmptyItemBox(player)
        if Num>0 then
                NLG.GiveItem(player,box_item,1);
                NLG.SystemMessage(player,"[系统]:您获得了"..tsmsg.."魔法宝石")
        else
                local long = tablength(M_Arena_rank_give_item[tcdk])
                if long<20 then
                        table.insert(M_Arena_rank_give_item[tcdk],box_item)
                        NLG.SystemMessage(player,"[系统]:您获得了"..tsmsg.."魔法宝石,请到右上角管家小精灵处领取")
                end
        end
end
       

回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-12 13:53 , Processed in 0.120097 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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