[GP] zuoqiitem.lua--坐骑道具

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
local payitem = 100 --需要兑换道具数量
local wnitemid = 79700 --万能碎片id
local LV0 = "坐骑卡LV0"
local LV1 = "坐骑卡LV1"
local LV2 = "坐骑卡LV2"
local LV3 = "坐骑卡LV3"
local LV4 = "坐骑卡LV4"
local LV5 = "坐骑卡LV5"
local LV6 = "坐骑卡LV6"
local LV7 = "坐骑卡LV7"
local LV8 = "坐骑卡LV8"
local LV9 = "坐骑卡LV9"
local LV10 = "坐骑卡LV10"

--------------
Global_Reg.RegItemUseEvent ("zuoqi_item");--创建一个所有玩家双击道具栏物品就会触发的Lua函数。
Global_Reg.RegMoveEquipItem("zuoqi_jinji")--移动一件道具到另一个格子事件

function zuoqi_item(player, Itemindex)
        local itemid = Item.GetData(Itemindex, %道具_ID%);--坐骑碎片id
        if itemid then
                local item2id = itemid-10000 --坐骑整卡id
                if itemid >= 711000 and itemid <= 719999 then
                        local haveitem = Char.ItemNum(player, itemid) -- 拥有道具数量
                        local havezkitem = Char.ItemNum(player, item2id) -- 是否有整卡
                        if haveitem >= payitem then -- 拥有道具数量>=需求道具数量
                                if havezkitem >= 1 then
                                        NLG.SystemMessage(player,"你身上已有该坐骑卡。")
                                else
                                        NLG.DelItem(player, itemid, payitem) --扣除道具
                                        Char.GiveItem(player,item2id,1)
                                        local pos = Char.FindItemId(player,item2id)
                                        local item2index = Char.GetItemIndex(player, pos)
                --                        NLG.SystemMessage(player,"item2index="..item2index..",类型="..type(item2index)..",")
                                        local item2name =  Item.GetData(item2index,2001) --获取名字
                                        Item.SetData(item2index,%道具_耐久%,0)
                                        Item.SetData(item2index,2001,item2name.."LV1")
                                        Item.UpItem(player,pos)
                                end
                        else
                                NLG.SystemMessage(player,"你的坐骑碎片不足,需要"..payitem.."个碎片才可兑换。")
                        end
                        return 1
                end
        end
        return 0--通过
end

function zuoqi_jinji(player,zkItemPos, spItemPos)--移动一件道具到另一个格子事件
        local zkitemindex = Char.GetItemIndex(player,zkItemPos);--目标index
        local spitemindex = Char.GetItemIndex(player,spItemPos);--拿起的index
        local zkItem_ID = Item.GetData(zkitemindex,0) or -1--目标道具ID
        local spItem_ID = Item.GetData(spitemindex,0) or -1--拿起的道具ID
        local wnpd = zkItem_ID - wnitemid --万能碎片判断
--                NLG.SystemMessage(player,"zkItem_ID="..zkItem_ID..",spItem_ID="..spItem_ID..",")
        if zkItem_ID >= 701000 and zkItem_ID <= 710999 then
                if spItem_ID-zkItem_ID == 10000 then
                        zuoqi_sheding(player,spItem_ID,spitemindex,spItemPos,zkItem_ID,zkitemindex,zkItemPos)--普通碎片
                elseif wnpd >= 621300 and spItem_ID == wnitemid then
                        zuoqi_wnsheding(player,spItem_ID,spitemindex,spItemPos,zkItem_ID,zkitemindex,zkItemPos)--万能碎片
                end
        end
        return 0
end

function zuoqi_sheding(player,spItem_ID,spitemindex,spItemPos,zkItem_ID,zkitemindex,zkItemPos)--普通碎片具体设定
        local zklv = Item.GetData(zkitemindex,2000) --获取坐骑整卡等级
        local zkname = Item.GetData(zkitemindex,2001) --获取坐骑整卡名字
        local zknj = Item.GetData(zkitemindex,%道具_耐久%)
        local zkmaxnj = Item.GetData(zkitemindex,%道具_最大耐久%)
        local spsl = Item.GetData(spitemindex,9) --碎片数量
        local sppd =  zkmaxnj - zknj - spsl  --整卡耐久最大值-碎片数量
        local name = string.sub(zkname,1,-2)
--                                NLG.SystemMessage(player,"sudu="..sudu..",zknj="..zknj..",sppd="..sppd.."")
        if zklv == LV10 then
                NLG.SystemMessage(player,"该坐骑卡目前暂未开放更高级别。")
        elseif sppd >= 1 then --未达到晋级的情况
                NLG.DelItem(player, spItem_ID, spsl) --扣除道具
                Item.SetData(zkitemindex,%道具_耐久%,zknj+spsl)                       
                Item.UpItem(player,zkItemPos)
        elseif sppd <= 0 then
                NLG.DelItem(player, spItem_ID, zkmaxnj-zknj) --扣除道具
                Item.SetData(zkitemindex,%道具_耐久%,0)
                if zklv == LV1 then
                        Item.SetData(zkitemindex,2000,LV2)
                        Item.SetData(zkitemindex,%道具_最大耐久%,150)
                        Item.SetData(zkitemindex,2001,name.."2")
                        Item.SetData(zkitemindex,%道具_子参二%,120)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV2。")
                elseif zklv == LV2 then
                        Item.SetData(zkitemindex,2000,LV3)
                        Item.SetData(zkitemindex,%道具_最大耐久%,200)
                        Item.SetData(zkitemindex,2001,name.."3")
                        Item.SetData(zkitemindex,%道具_子参二%,125)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV3。")
                elseif zklv == LV3 then
                        Item.SetData(zkitemindex,2000,LV4)
                        Item.SetData(zkitemindex,%道具_最大耐久%,300)
                        Item.SetData(zkitemindex,2001,name.."4")
                        Item.SetData(zkitemindex,%道具_子参二%,130)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV4。")
                elseif zklv == LV4 then
                        Item.SetData(zkitemindex,2000,LV5)
                        Item.SetData(zkitemindex,%道具_最大耐久%,400)
                        Item.SetData(zkitemindex,2001,name.."5")
                        Item.SetData(zkitemindex,%道具_子参二%,135)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV5。")
                elseif zklv == LV5 then
                        Item.SetData(zkitemindex,2000,LV6)
                        Item.SetData(zkitemindex,%道具_最大耐久%,500)
                        Item.SetData(zkitemindex,2001,name.."6")
                        Item.SetData(zkitemindex,%道具_子参二%,140)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV6。")
                elseif zklv == LV6 then
                        Item.SetData(zkitemindex,2000,LV7)
                        Item.SetData(zkitemindex,%道具_最大耐久%,600)
                        Item.SetData(zkitemindex,2001,name.."7")
                        Item.SetData(zkitemindex,%道具_子参二%,145)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV7。")
                elseif zklv == LV7 then
                        Item.SetData(zkitemindex,2000,LV8)
                        Item.SetData(zkitemindex,%道具_最大耐久%,700)
                        Item.SetData(zkitemindex,2001,name.."8")
                        Item.SetData(zkitemindex,%道具_子参二%,150)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV8。")
                elseif zklv == LV8 then
                        Item.SetData(zkitemindex,2000,LV9)
                        Item.SetData(zkitemindex,%道具_最大耐久%,800)
                        Item.SetData(zkitemindex,2001,name.."9")
                        Item.SetData(zkitemindex,%道具_子参二%,155)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV9。")
                elseif zklv == LV9 then
                        Item.SetData(zkitemindex,2000,LV10)
                        Item.SetData(zkitemindex,%道具_最大耐久%,900)
                        Item.SetData(zkitemindex,2001,name.."10")
                        Item.SetData(zkitemindex,%道具_子参二%,160)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV10。")
                end
                Item.UpItem(player,zkItemPos)
        end
end

function zuoqi_wnsheding(player,spItem_ID,spitemindex,spItemPos,zkItem_ID,zkitemindex,zkItemPos)--万能碎片具体设定
        local zklv = Item.GetData(zkitemindex,2000) --获取坐骑整卡等级
        local zkname = Item.GetData(zkitemindex,2001) --获取坐骑整卡名字
        local zknj = Item.GetData(zkitemindex,%道具_耐久%)
        local zkmaxnj = Item.GetData(zkitemindex,%道具_最大耐久%)
        local spsl = Item.GetData(spitemindex,9) --碎片数量
        local sppd =  zkmaxnj - zknj - (spsl*5)  --整卡耐久最大值-碎片数量
        local name = string.sub(zkname,1,-2)
        local paywnsp = math.ceil((zkmaxnj-zknj)/5) -- 需要支付的万能碎片数量
        local dcwnsp = math.mod(zkmaxnj-zknj, 5) -- 多出的万能碎片耐久
--                                NLG.SystemMessage(player,"name="..name..",zknj="..zknj..",sppd="..sppd.."")
        if zklv == LV10 then
                NLG.SystemMessage(player,"该坐骑卡目前暂未开放更高级别。")
        elseif sppd >= 1 then --未达到晋级的情况
                NLG.DelItem(player, spItem_ID, spsl) --扣除道具
                Item.SetData(zkitemindex,%道具_耐久%,zknj+(spsl*5))                       
                Item.UpItem(player,zkItemPos)
        elseif sppd <= 0 then
                NLG.DelItem(player, spItem_ID, paywnsp) --扣除道具
                Item.SetData(zkitemindex,%道具_耐久%,dcwnsp)
                if zklv == LV1 then
                        Item.SetData(zkitemindex,2000,LV2)
                        Item.SetData(zkitemindex,%道具_最大耐久%,150)
                        Item.SetData(zkitemindex,2001,name.."2")
                        Item.SetData(zkitemindex,%道具_子参二%,120)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV2。")
                elseif zklv == LV2 then
                        Item.SetData(zkitemindex,2000,LV3)
                        Item.SetData(zkitemindex,%道具_最大耐久%,200)
                        Item.SetData(zkitemindex,2001,name.."3")
                        Item.SetData(zkitemindex,%道具_子参二%,125)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV3。")
                elseif zklv == LV3 then
                        Item.SetData(zkitemindex,2000,LV4)
                        Item.SetData(zkitemindex,%道具_最大耐久%,300)
                        Item.SetData(zkitemindex,2001,name.."4")
                        Item.SetData(zkitemindex,%道具_子参二%,130)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV4。")
                elseif zklv == LV4 then
                        Item.SetData(zkitemindex,2000,LV5)
                        Item.SetData(zkitemindex,%道具_最大耐久%,400)
                        Item.SetData(zkitemindex,2001,name.."5")
                        Item.SetData(zkitemindex,%道具_子参二%,135)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV5。")
                elseif zklv == LV5 then
                        Item.SetData(zkitemindex,2000,LV6)
                        Item.SetData(zkitemindex,%道具_最大耐久%,500)
                        Item.SetData(zkitemindex,2001,name.."6")
                        Item.SetData(zkitemindex,%道具_子参二%,140)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV6。")
                elseif zklv == LV6 then
                        Item.SetData(zkitemindex,2000,LV7)
                        Item.SetData(zkitemindex,%道具_最大耐久%,600)
                        Item.SetData(zkitemindex,2001,name.."7")
                        Item.SetData(zkitemindex,%道具_子参二%,145)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV7。")
                elseif zklv == LV7 then
                        Item.SetData(zkitemindex,2000,LV8)
                        Item.SetData(zkitemindex,%道具_最大耐久%,700)
                        Item.SetData(zkitemindex,2001,name.."8")
                        Item.SetData(zkitemindex,%道具_子参二%,150)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV8。")
                elseif zklv == LV8 then
                        Item.SetData(zkitemindex,2000,LV9)
                        Item.SetData(zkitemindex,%道具_最大耐久%,800)
                        Item.SetData(zkitemindex,2001,name.."9")
                        Item.SetData(zkitemindex,%道具_子参二%,155)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV9。")
                elseif zklv == LV9 then
                        Item.SetData(zkitemindex,2000,LV10)
                        Item.SetData(zkitemindex,%道具_最大耐久%,900)
                        Item.SetData(zkitemindex,2001,name.."10")
                        Item.SetData(zkitemindex,%道具_子参二%,160)
                        NLG.SystemMessage(player,""..zkname.."已升级为LV10。")
                end
                Item.UpItem(player,zkItemPos)
        end
end


回复

使用道具 举报

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