魔力宝贝

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

[GA] item.lua--压矿,开心诱魔香

[复制链接]
发表于 前天 02:08 | 显示全部楼层 |阅读模式
Delegate.RegInit("item_Init");
Delegate.RegDelLoginEvent("item_LoginEvent");
Delegate.RegDelLogoutEvent("item_LogoutEvent");
Delegate.RegDelLoginGateEvent("item_LoginGateEvent");

JpackTable = {68620,10000,10001,10002,10003,10004,10005,10006,10007,10008,10009,12800,12801,12802,12803,12804,12805,800555,12806,12807,12808,12809,12006,12102,12400,11219,12401,12402,12403,12404,11200,11201,11203,12100,12101,12407,12408,12409,12000,12002,12003,11601,11600,12001,12005,11205,11311,11306,11309,12410,12411,12412,12406,12406,11202,11226,12416,12417,12418,12419,12405,15201,15202,15203,15204,15205,15205,15205,15208,15209,15209,15211,15212,15213,15214,15215,15216,15217,15218,15219,15606,15607,15608,15609,15610,15611,15612,15613,15614,15615,9600,9601,9602,9603,9604,9605,9606,9607,9608,9609,9611,9612,9613,9614,9615,9616,9617,9618,9619,9620,980874,980875,980876,980877,980878,652104,980258,980259};

function GetItemNum(_player,_ItemId)
        local Count = 0;
        for i = 0,27 do
                local ItemIndex = Char.GetItemIndex(_player,i);
                if(ItemIndex >= 0) then
                        if(Item.GetData(ItemIndex,%道具_ID%) == _ItemId) then
                                Count = Count + Item.GetData(ItemIndex,%道具_堆叠数%);
                        end
                end
        end
        return Count;
end

function item_LoginEvent(player)
        Char.SetWalkPostEvent("lua/Module/item.lua","PostWalkEvent",player);
end
function item_LoginGateEvent(player)
        if(tbl_bx[Playerkey(player)] ~= nil) then
                tbl_bx[Playerkey(player)] = nil;
                Char.SetData(player,%对象_香步数%,0);
                Char.SetData(player,%对象_香上限%,0);
                NLG.SystemMessage(player,"检测到您已登回城内记录点,诱魔香状态我们已为您暂停...如要继续,请重新使用..");
        end
end
function item_LogoutEvent(player)
        if(tbl_bx[Playerkey(player)] ~= nil) then
                tbl_bx[Playerkey(player)] = nil;
        end
end       
function CheckItem(player,itemindex)
        for i=8,27 do
                if(Char.GetItemIndex(player,i) == itemindex) then
                        return i;
                end
        end
        return -1;
end

--function PostWalkEvent(player)
--        if(tbl_bx[Playerkey(player)] ~= nil) then
--                local ItemSlot = CheckItem(player,tbl_bx[Playerkey(player)]);
--                if(ItemSlot == -1) then
--                        Item.SetData(tbl_bx[Playerkey(player)],%道具_耐久%,Item.GetData(tbl_bx[Playerkey(player)],%道具_耐久%) -1);
--                        tbl_bx[Playerkey(player)] = nil;
--                        Char.SetData(player,%对象_香步数%,0);
--                        Char.SetData(player,%对象_香上限%,0);
--                        NLG.SystemMessage(player,"诱魔香已经烧完了...");
--                else
--                        local Rem = Item.GetData(tbl_bx[Playerkey(player)],%道具_耐久%);
--                        if(Rem - 1 <= 0) then
--                                Item.Kill(player,tbl_bx[Playerkey(player)],ItemSlot);
--                                tbl_bx[Playerkey(player)] = nil;
--                                Char.SetData(player,%对象_香步数%,0);
--                                Char.SetData(player,%对象_香上限%,0);
--                                NLG.SystemMessage(player,"诱魔香已经烧完了...");
--                        else
--                                Item.SetData(tbl_bx[Playerkey(player)],%道具_耐久%,Rem -1);
--                                Item.UpItem(player,ItemSlot);
--                        end
--                end
--        end
--end

function InTohelos(_meIndex,_toIndex,_itemslot)
        local _itemindex = Char.GetItemIndex(_meIndex,_itemslot);
        if(CheckItem(_meIndex,_itemindex) == -1) then
                NLG.SystemMessage(_meIndex,"道具使用参数错误");
                return;
        end
        if(Item.GetData(_itemindex,%道具_耐久%) <= 0) then
                Item.Kill(_meIndex,_itemindex,_itemslot);
                NLG.SystemMessage(_meIndex,"诱魔香已经烧完了...");
                return;
        end
        if(tbl_bx[Playerkey(_meIndex)] == nil) then
                tbl_bx[Playerkey(_meIndex)] = _itemindex;
                Char.SetData(_meIndex,%对象_香步数%,Item.GetData(_itemindex,%道具_耐久%));
                Char.SetData(_meIndex,%对象_香上限%,99);
                NLG.SystemMessage(_meIndex,"诱魔香已经生效了..您在随后的"..Item.GetData(_itemindex,%道具_耐久%).."步内将会步步遇敌!");
        else
                tbl_bx[Playerkey(_meIndex)] = nil;
                Char.SetData(_meIndex,%对象_香步数%,0);
                Char.SetData(_meIndex,%对象_香上限%,0);
                NLG.SystemMessage(_meIndex,"诱魔香已经暂停了..");
        end
end

function AddFame(_meIndex,_toIndex,_itemslot)
        local _itemindex = Char.GetItemIndex(_meIndex,_itemslot);
        if(CheckItem(_meIndex,_itemindex) == -1) then
                NLG.SystemMessage(_meIndex,"道具使用参数错误");
                return;
        end
        local Fame = Char.GetData(_meIndex,%对象_声望%);
        Char.SetData(_meIndex,%对象_声望%,Fame + Item.GetData(_itemindex,%道具_特殊类型%));
        NLG.SystemMessage(_meIndex,"您的声望值提高了"..Item.GetData(_itemindex,%道具_特殊类型%).."点");
        Item.Kill(_meIndex,_itemindex,_itemslot);
end

function Pack(_meIndex,_toIndex,_itemslot)
        local _itemindex = Char.GetItemIndex(_meIndex,_itemslot);
        if(CheckItem(_meIndex,_itemindex) == -1) then
                NLG.SystemMessage(_meIndex,"道具使用参数错误");
                return;
        end
        if(Char.ItemSlot(_meIndex) >= 20) then
                NLG.SystemMessage(_meIndex,"请至少留出一个空的道具栏栏位...");
                return;
        end
        for i = 8,27 do
                local JpItem = Char.GetItemIndex(_meIndex,i);
                if(JpItem >= 0) then
                        local ItemId = Item.GetData(JpItem,%道具_ID%);
                        if(IsInTable(ItemId,JpackTable) ~= -1) then
                                local MaxRemain = Item.GetData(JpItem,%道具_最大堆叠数%);
                                local ItemName = Item.GetData(JpItem,2001);
                                local YunRemain = MaxRemain * 10;
                                if(GetItemNum(_meIndex,ItemId) >= YunRemain) then
                                        Char.DelItem(_meIndex,Item.GetData(_itemindex,%道具_ID%),1);
                                        local _RetItem = Char.GiveItem(_meIndex,500218,1);
                                        if(_RetItem < 0) then
                                                NLG.SystemMessage(_meIndex,"万能打包器发生错误,请将此错误提示截图发与客服,以便我们修复此Bug!");
                                                return;
                                        end
                                        Char.DelItem(_meIndex,ItemId,YunRemain);
                                        Item.SetData(_RetItem,2001,"『"..ItemName.."』×"..YunRemain.."");
                                        Item.SetData(_RetItem,2003,""..ItemId..","..YunRemain.."");
                                        Item.SetData(_RetItem,%道具_最大堆叠数%,1);
                                        Item.SetData(_RetItem,%道具_堆叠数%,1);
                                        Item.UpItem(_meIndex,-1);
                                        NLG.SystemMessage(_meIndex,"成功打包了"..YunRemain.." 件 "..ItemName.."");
                                        return;
                                end
                        end

                end
        end
        NLG.SystemMessage(_meIndex,"好像没有什么可以被打包的道具...需要身上有10组以上相同道具才可以被打包噢!");
        return;
end

function UnPack(_meIndex,_toIndex,_itemslot)
        local _itemindex = Char.GetItemIndex(_meIndex,_itemslot);
        if(CheckItem(_meIndex,_itemindex) == -1) then
                NLG.SystemMessage(_meIndex,"道具使用参数错误");
                return;
        end
        if(Char.ItemSlot(_meIndex) >= 10) then
                NLG.SystemMessage(_meIndex,"请至少留出十个空的道具栏栏位...");
                return;
        end
        local _itemindex = Char.GetItemIndex(_meIndex,_itemslot);
        local ItemPar = Item.GetData(_itemindex,2003);
        local data = Split(ItemPar,",");
        local ItemId = data[1];
        local ItemNum = data[2];
        Item.Kill(_meIndex, _itemindex,_itemslot);
        Char.GiveItem(_meIndex,ItemId,ItemNum);
        NLG.SystemMessage(_meIndex,"被打包的道具已经全部取出了...");
        return;
end

function PetReBirth(_meIndex,_toIndex,_itemslot)
        local _itemindex = Char.GetItemIndex(_meIndex,_itemslot);
        if(CheckItem(_meIndex,_itemindex) == -1) then
                NLG.SystemMessage(_meIndex,"道具使用参数错误");
                return;
        end
        local PetIndex = Char.GetPet(_meIndex,0);
        if(PetIndex < 0) then
                NLG.SystemMessage(_meIndex,"请确认您的宠物栏第一栏位有宠物...");
                return;
        end

        if(Char.GetData(PetIndex,%对象_脸%) ~= 1) then
                NLG.SystemMessage(_meIndex,"无法为野生宠物提供洗档服务...");
                return;
        end
        local PetExp = Char.GetData(PetIndex,%对象_经验%);
       
        Char.DelItem(_meIndex,Item.GetData(_itemindex,%道具_序%),1);
        Pet.ReBirth(_meIndex, PetIndex);
        Char.SetData(PetIndex,%对象_经验%,PetExp);
        Pet.UpPet(_meIndex, PetIndex);
        NLG.SystemMessage(_meIndex,"宠物洗点完成,快打开宠物栏看看吧!...");
        return;
end

function PetMetamo(_meIndex,_toIndex,_itemslot)
        local _itemindex = Char.GetItemIndex(_meIndex,_itemslot);
        if(CheckItem(_meIndex,_itemindex) == -1) then
                NLG.SystemMessage(_meIndex,"道具使用参数错误");
                return;
        end
        local PetIndex = Char.GetPet(_meIndex,0);
        if(PetIndex < 0) then
                NLG.SystemMessage(_meIndex,"请确认您的宠物栏第一栏位有宠物...");
                return;
        end

        --先记录原形象
        if(Char.GetData(PetIndex,%对象_伤害数%) == 0) then
                Char.SetData(PetIndex,%对象_伤害数%,Char.GetData(PetIndex,%对象_原形%));
        end

        local image = Item.GetData(_itemindex,%道具_特殊类型%);
        if(image == 0) then        --特殊类型等于0代表宠物还原卡
                image = Char.GetData(PetIndex,%对象_伤害数%);
                Char.SetData(PetIndex,%对象_伤害数%,0);
        end

--        Char.SetData(PetIndex,%对?骭原形%,image);
        Char.SetData(PetIndex,%对象_原形%,image);
        Pet.UpPet(_meIndex,PetIndex);
        Char.DelItem(_meIndex,Item.GetData(_itemindex,%道具_序%),1);

        NLG.SystemMessage(_meIndex,"宠物形象修改完成,快打开宠物栏看看吧!...");
        return;
end

function item_Init()
        NL.RegItemString("lua/Module/item.lua","InTohelos","LUA_useInTohelos"); --注册诱魔香
        NL.RegItemString("lua/Module/item.lua","AddFame","LUA_useAddFame"); --注册声望之花
        NL.RegItemString("lua/Module/item.lua","Pack","LUA_usePack"); --注册万能打包器
        NL.RegItemString("lua/Module/item.lua","UnPack","LUA_useUnPack"); --注册万能解包器
        NL.RegItemString("lua/Module/item.lua","PetReBirth","LUA_usePetReBirth"); --注册宠物洗点药水
        NL.RegItemString("lua/Module/item.lua","PetMetamo","LUA_usePetMetamo"); --注册宠物形象卡
end


回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-12 18:08 , Processed in 0.111840 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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