魔力宝贝

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

[GP] item_cir_limit.lua--禁止摆摊,交易,强制丢地消失的道具

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

local item_cir_dorp_NPC = {100905,"丢地NPC",6,7777,33,33} --NPC详情
----------------------
local item_cir_limit_buy = {}
item_cir_limit_buy[60005]=0


----------------------
item_cir_limit_tab = item_cir_limit_tab or {}
--item_cir_limit_tab[200]=1
item_cir_limit_tab[82201]=1
item_cir_limit_tab[82202]=1
item_cir_limit_tab[82203]=1
item_cir_limit_tab[82204]=1
item_cir_limit_tab[82205]=1
item_cir_limit_tab[82206]=1
item_cir_limit_tab[82207]=1
item_cir_limit_tab[82208]=1
item_cir_limit_tab[82301]=1
item_cir_limit_tab[82302]=1
item_cir_limit_tab[82303]=1
item_cir_limit_tab[82304]=1
item_cir_limit_tab[82305]=1
item_cir_limit_tab[82306]=1
item_cir_limit_tab[82307]=1
item_cir_limit_tab[82308]=1
item_cir_limit_tab[82309]=1
item_cir_limit_tab[82310]=1
item_cir_limit_tab[82401]=1
item_cir_limit_tab[82402]=1
item_cir_limit_tab[82403]=1
item_cir_limit_tab[82404]=1
item_cir_limit_tab[82405]=1
item_cir_limit_tab[82406]=1
item_cir_limit_tab[82407]=1
item_cir_limit_tab[82408]=1
item_cir_limit_tab[82409]=1
item_cir_limit_tab[82410]=1
item_cir_limit_tab[82411]=1
item_cir_limit_tab[82412]=1
item_cir_limit_tab[82413]=1
item_cir_limit_tab[82414]=1
item_cir_limit_tab[82415]=1
item_cir_limit_tab[82501]=1
item_cir_limit_tab[82502]=1
item_cir_limit_tab[82503]=1
item_cir_limit_tab[84201]=1
item_cir_limit_tab[84202]=1
item_cir_limit_tab[84203]=1
item_cir_limit_tab[84204]=1
item_cir_limit_tab[84205]=1
item_cir_limit_tab[84206]=1
item_cir_limit_tab[84207]=1
item_cir_limit_tab[84208]=1
item_cir_limit_tab[84301]=1
item_cir_limit_tab[84302]=1
item_cir_limit_tab[84303]=1
item_cir_limit_tab[84304]=1
item_cir_limit_tab[84305]=1
item_cir_limit_tab[84306]=1
item_cir_limit_tab[84307]=1
item_cir_limit_tab[84308]=1
item_cir_limit_tab[84309]=1
item_cir_limit_tab[84310]=1
item_cir_limit_tab[84401]=1
item_cir_limit_tab[84402]=1
item_cir_limit_tab[84403]=1
item_cir_limit_tab[84404]=1
item_cir_limit_tab[84405]=1
item_cir_limit_tab[84406]=1
item_cir_limit_tab[84407]=1
item_cir_limit_tab[84408]=1
item_cir_limit_tab[84409]=1
item_cir_limit_tab[84410]=1
item_cir_limit_tab[84411]=1
item_cir_limit_tab[84412]=1
item_cir_limit_tab[84413]=1
item_cir_limit_tab[84414]=1
item_cir_limit_tab[84415]=1
item_cir_limit_tab[84501]=1
item_cir_limit_tab[84502]=1
item_cir_limit_tab[84503]=1
item_cir_limit_tab[512283]=1
item_cir_limit_tab[512284]=1
item_cir_limit_tab[513201]=1
item_cir_limit_tab[513202]=1
item_cir_limit_tab[513203]=1
item_cir_limit_tab[513204]=1
item_cir_limit_tab[512294]=1
item_cir_limit_tab[512295]=1
item_cir_limit_tab[512296]=1
item_cir_limit_tab[79438]=1--香
item_cir_limit_tab[79439]=1
item_cir_limit_tab[79444]=1
item_cir_limit_tab[79445]=1
item_cir_limit_tab[79446]=1
item_cir_limit_tab[79761]=1
item_cir_limit_tab[79762]=1
item_cir_limit_tab[79763]=1
item_cir_limit_tab[79764]=1
item_cir_limit_tab[79765]=1
item_cir_limit_tab[79766]=1
item_cir_limit_tab[79767]=1
item_cir_limit_tab[79768]=1
item_cir_limit_tab[79451]=1


------------------------------------------------------------------------------------------禁止丢地,禁止交易,禁止摆摊
Global_Reg.RegInit("limit_item_Script");--自动启动函数
Global_Reg.RegDropItem("item_cir_limit_drop")--丢地触发

local tab_limit_dorp = tab_limit_dorp or {}

function limit_item_Script()
        NL.RegTradeList(nil,"item_cir_limit_jiaoyi")
        Stall.RegStallStart(nil,"item_cir_limit_baitan1")
        Char.WinmoliStall(nil,"item_cir_limit_baitan2")
        Stall.RegStallCilck(nil,"new_StallCilckEvent")
        limit_item_dorp_NPC()
        --Protocol.RegProtocolSend(nil,"All_Protocol_RegProtocolSend")
        return 0
end

function new_StallCilckEvent(CharIndex,StallIndex)
        local fd = Protocol.GetFdByChar(CharIndex)
        Protocol.Send(fd,"ooc ")
        return 0
end


function limit_item_dorp_NPC(npc) --NPC设置
        if npc == nil  then
        npc = NL.CreateNpc(nil,"limit_item_dorp_NPC2")
        end       
        Char.SetData(npc,1,item_cir_dorp_NPC[1])
        Char.SetData(npc,2,item_cir_dorp_NPC[1])
        Char.SetData(npc,2000,item_cir_dorp_NPC[2])
        Char.SetData(npc,7,item_cir_dorp_NPC[3])
        Char.SetData(npc,4,item_cir_dorp_NPC[4])
        Char.SetData(npc,5,item_cir_dorp_NPC[5])
        Char.SetData(npc,6,item_cir_dorp_NPC[6])
        LuaNpcIndex["item_cir_limit_npc"]=npc;--读取使用用 LuaNpcIndex.bditemdorp_npc 就可以读取对应NPC index
        InstallNpc("item_cir_limit_npc",npc);
        NLG.UpChar(npc)
        Char.SetWindowTalkedEvent(nil,"item_cir_limit_event",npc)
        return true
end

function limit_item_dorp_NPC2(index)
        return true;
end

function item_cir_limit_event(npc,player,_SqeNo,_select,_data)
        if _select ~= 2 then
                if _SqeNo==0 then
                        if _select==1 then
                                local playerCDK = Char.GetData(player,2002)
                                local RegistNumber = Char.GetData(player,48)
                                local tkey=playerCDK..RegistNumber
                                local ItemPos = tab_limit_dorp[tkey]
                                local tNum = NLG.DelItemByPos(player,ItemPos)
                                tab_limit_dorp[tkey]=nil
                                NLG.SystemMessage(player,"[绑定]道具消失了")
                        end
                end
        end
end

function item_cir_limit_drop(player, ItemIndex, ItemPos)--丢地瞬间会传入的函数
        local itemid = Item.GetData(ItemIndex,%道具_ID%)
        if item_cir_limit_tab[itemid] then
                local playerCDK = Char.GetData(player,2002)
                local RegistNumber = Char.GetData(player,48)
                local tkey=playerCDK..RegistNumber
                tab_limit_dorp[tkey] = ItemPos
                local itemname = Item.GetData(ItemIndex,%道具_已鉴定名%)
                NLG.ShowWindowTalked(player,0,3,0,"\n\n"..itemname.."为$8[绑定道具]$0,是否要丢弃\n\n选$1[是]$0丢弃,选$1[否]$0放弃",LuaNpcIndex.item_cir_limit_npc)
                return -1
        end
        return 0
end

function item_cir_limit_jiaoyi(player, TradeIndex, TradeItemList, TradePetList, TradeGold)--TradeItemList是道具位置tab
--当玩家确定交易时输出。
        local long=#TradeItemList
        for i=1,long do
                local ItemPos=TradeItemList[i]
                local ItemIndex = Char.GetItemIndex(player,ItemPos);
                local itemid = Item.GetData(ItemIndex,%道具_ID%)
                if item_cir_limit_tab[itemid] then
                        NLG.SystemMessage(player,"不可以交易[绑定]伙伴羁绊信")
                        return -1
                end
        end
        for _,v in pairs(TradePetList) do
                local PetIndex = Char.GetPetIndex(player,v)
                if PetIndex>=0 then
                        local petname = Char.GetData(PetIndex,%对象_原名%)
                        local b=string.sub(petname,1,2)
                        if b=="∮" then
                                NLG.SystemMessage(player,"不可以交易[绑定]宠物");
                                return -1
                        end
                end
        end
    return 0;
end

function item_cir_limit_baitan1(player)--返回-1就是不许摆摊
        local TableLen = Stall.GetItem(player);
    for i=1,tonumber(#TableLen) do
        local t1=TableLen[i];
        if tonumber(t1) >= 0 then
            local Sell_ItemIndex = Char.GetItemIndex(player,t1);
            local itemid = Item.GetData(Sell_ItemIndex,%道具_ID%)
                        if item_cir_limit_tab[itemid] then
                                NLG.SystemMessage(player,"不可以上架[绑定]伙伴羁绊信")
                                return -1
                        end
        end
    end
        local TableLen = Stall.GetPet(player);
    for i=1,tonumber(#TableLen) do
        local t1=TableLen[i];
        if tonumber(t1) >= 0 then
            local Sell_PetIndex = Char.GetPetIndex(player,t1);
            local PetName=Char.GetData(Sell_PetIndex,%对象_原名%);
                        local b=string.sub(PetName,1,2)
                        if b=="∮" then
                                NLG.SystemMessage(player,"不可以上架[绑定]宠物");
                                return -1
                        end
        end
    end
        return 0
end

function item_cir_limit_baitan2(player)--返回1拦截,返回0正常
        local maptype = Char.GetData(player,%对象_地图类型%);
        local mapid = Char.GetData(player,%对象_地图%);
        if maptype~=0 then
                Char.WinmoliSendMsg(player,"该地图不能上架物品")
                return 1
        elseif maptype==0 and item_cir_limit_buy[mapid] then
                Char.WinmoliSendMsg(player,"该地图不能上架物品")
                return 1
        end
        for i=0,19 do
                local ItemIndex=Char.WinmoliGetItem(player,i,0);--获取摆摊上架的所有道具index
                local itemid = Item.GetData(ItemIndex,%道具_ID%)
                if item_cir_limit_tab[itemid] then
                        --NLG.SystemMessage(player,"不可以上架[绑定]伙伴羁绊信")
                        Char.WinmoliSendMsg(player,"不能卖[绑定]伙伴羁绊信")
                        return 1
                end
        end
        return 0
end

--[[
function All_Protocol_RegProtocolSend(fd, packet)
        local player = Protocol.GetCharByFd(fd)
        local pos = string.find(packet," ") or 1
        local Head = string.sub(packet,1,pos-1)
        print("\n\n(玩家收包)链接句柄是"..fd.."封包头是"..Head.."封包内容是"..packet.."玩家唯一码是"..player)
end--]]

回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-12 14:14 , Processed in 0.114357 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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