打印

下載一堆可是都不會用!!

下載一堆可是都不會用!!

這是jzlua腳本都是從神奇社區下載的,有高手可以指教怎麼用嗎?
還是可以把它修改簡單一點??
這是裝備強化,另外我這邊還有一些lua腳本會修改的可以跟我聯絡下嘛~~


function EquipPlus_Reload()
        if (EquipPlus_index == nil) then
                EquipPlus_index = NL.CreateNpc("./data/npc/lua/EquipPlus/EquipPlus.lua", "EquipPlus_Init");
                NLG.UpChar(EquipPlus_index);
                return "裝備升級NPC創建成功";
        else
                NL.DelNpc(EquipPlus_index);
                NLG.UpChar(EquipPlus_index);
                EquipPlus_index = nil;
                return "裝備升級NPC刪除成功";
        end
end

EquipPlus_Reload();

TOP

function EquipPlus_Init( _MeIndex )
        Char.SetData(_MeIndex, %對像_形象%, 100700);
        Char.SetData(_MeIndex, %對像_原形%, 100700);
        Char.SetData(_MeIndex, %對像_地圖%, 2000);
        Char.SetData(_MeIndex, %對像_X%, 57);
        Char.SetData(_MeIndex, %對像_Y%, 67);
        Char.SetData(_MeIndex, %對像_方向%, %右下%);
        Char.SetData(_MeIndex, %對像_原名%, "裝備強化大師");

        if (Char.SetTalkedEvent(nil, "EquipPlus_Talked", _MeIndex) < 0) then
                print("EquipPlus_Talked 註冊事件失敗。");
                return false;
        end
        if (Char.SetWindowTalkedEvent(nil, "EquipPlus_WindowTalked", _MeIndex) < 0) then
                print("pztestnpc_WindowTalked 註冊事件失敗。");
                return false;
        end

        return true;
end

--Talked事件
--目前最高SEQNO=13
function EquipPlus_Talked( _MeIndex, _PlayerIndex, _Msg, _Color, _Channel)
        --這裡檢查玩家是否站在NPC面前
        if(NLG.CheckInFront(_PlayerIndex, _MeIndex, 1) == false) then
                return ;
        end
        --面向玩家
        local i;
        i = Char.GetData(_PlayerIndex, %對像_方向%);
        if i >= 4 then
                i = i - 4;
        else
                i = i + 4;               
        end
        Char.SetData(_MeIndex, %對像_方向%,i);
        NLG.UpChar( _MeIndex);
        NLG.ShowWindowTalked(_PlayerIndex, 2, 0, 0,
             "7\n         ☆裝備強化系統☆"..
             "\n裝備強化說明:"..
             "\n"..
             "\n"..
             "\n"..
             "\n"..
             "\n"..
             "\n                 【強化裝備】"..
             "\n                 【離    開】",
_MeIndex);
return ;
end

-- WindowTalked 事件
function EquipPlus_WindowTalked( _MeIndex, _TalkIndex, _Seqno, _Select, _Data)

        --這裡檢查玩家是否站在NPC面前
        if(NLG.CheckInFront(_TalkIndex, _MeIndex, 1) == false) then
                return ;
        end
        if _Seqno == 0 and _Data == "1" then
                NLG.ShowWindowTalked(_TalkIndex, 2, 0, 1,
                         "7\n         ☆裝備強化系統☆"..
                         "\n請選擇(請勿更改道具名稱):" ..
             "\n"..
             "\n"..
             "\n"..
             "\n"..
             "\n"..
                          "\n                 【裝備列表】" ..
                          "\n                 【道具列表】" ..
                          "\n                 【離    開】",
                         _MeIndex);
                return;
        end
       
        if _Seqno == 1 then
                if _Data == "1" then
                        local pos = 0;
                        --改說明時勿添行
                        local TM_Buff = "1\n請選擇:";
                        local itemindex;
                        local equip = {"頭部","身體","右手","右飾","左飾","腰間","左手","腳部","手掌"};

                        while(pos <= 8)do
                                itemindex = Char.GetItemIndex( _TalkIndex, pos);
                                if( itemindex > 0)then
                                        TM_Buff = TM_Buff.."\n".. equip[pos + 1] .. ":" .. Item.GetData( itemindex, %道具_名%);
                                else
                                        TM_Buff = TM_Buff .. "\n" .. equip[pos + 1] .. ":無裝備";
                                end
                                pos = pos + 1;
                        end
                        NLG.ShowWindowTalked( _TalkIndex, 2, 0, 2, TM_Buff, _MeIndex);
                        return;
                end
               
                if _Data == "2" then
                        --改說明時勿添行
                        local pos = 9;
                        local TM_Buff = "1\n請選擇道具:";
                        local itemindex;
                        local itempos = {"道具欄1","道具欄2","道具欄3","道具欄4","道具欄5","道具欄6","道具欄7","道具欄8"};

                        while(pos <= 17)do
                        itemindex = Char.GetItemIndex( _TalkIndex, pos);
                        if (pos == 17) then
                                TM_Buff = TM_Buff .. "\n" .. "                下一頁";
                        else
                                if( itemindex > 0)then
                                        TM_Buff = TM_Buff.."\n".. itempos[pos - 8] .. ":" .. Item.GetData( itemindex, %道具_名%);
                                else
                                        TM_Buff = TM_Buff .. "\n" .. itempos[pos - 8] .. ":無物品";
                                end
                        end
                        pos = pos + 1;
                        end
                        NLG.ShowWindowTalked( _TalkIndex, 2, 0, 3, TM_Buff, _MeIndex);
                        return;
                end
        end

        if(_Seqno == 3 or _Seqno == 2 or _Seqno == 4) then
                if (_Seqno == 3 and _Data == "9") then
                        --改說明時勿添行
                        local pos = 17;
                        local TM_Buff = "0\n";
                        local itemindex;
                        local itempos = {"道具欄9","道具欄10","道具欄11","道具欄12","道具欄13","道具欄14","道具欄15"};

                        while(pos <= 24)do
                                itemindex = Char.GetItemIndex( _TalkIndex, pos);
                                if (pos == 24) then
                                TM_Buff = TM_Buff .. "\n" .. "               離  開";
                                else
                                        if( itemindex > 0)then
                                                TM_Buff = TM_Buff.."\n".. itempos[pos - 16] .. ":" .. Item.GetData( itemindex, %道具_名%);
                                        else
                                                TM_Buff = TM_Buff .. "\n" .. itempos[pos - 16] .. ":無物品";
                                        end
                                end
                                pos = pos + 1;
                        end

                        NLG.ShowWindowTalked( _TalkIndex, 2, 0, 4, TM_Buff, _MeIndex);
                else
                        local sel = tonumber(_Data);
                        if _Seqno == 4 then
                                sel = sel - 1;
                        end
                        EquipPlus_Plus(_TalkIndex,_Seqno-1,sel);
                   end
        end
end

function EquipPlus_Plus( _PlayerIndex,_Page,_Sel)
        local itemtbl = { {0,1,2,3,4,5,6,7,8} , {9,10,11,12,13,14,15,16,17} , {18,19,20,21,22,23,-1,-1,-1} };
       
        local haveitemindex = itemtbl[_Page][_Sel];

        if haveitemindex >= 0 then
                local itemindex = Char.GetItemIndex(_PlayerIndex,haveitemindex);
                if itemindex >= 0 then
                        local itemid = Item.GetData(itemindex,%道具_ID%);
                        if(EquipPlus_Check(itemid) > 0)then
                                EquipPlus_PPlus(_PlayerIndex,itemindex,itemid);
                                return;
                        else
                                NLG.TalkToCli(_PlayerIndex,"該物品無法強化!",%紅色%);
                                return;
                        end
                end
        end
end

function EquipPlus_Check(_ItemID)
        local MAX = 10; --下面列表的項目數
        local PlusItemIDTbl = {14871,16671,17451,18091,18092,18093,2070,2071,2072,2056}; --可以加強的道具ID

        local i = 1;

        while(i<=MAX)do
                if _ItemID == PlusItemIDTbl then
                        return 1;
                end
                i = i + 1;
        end
       
        return 0;
end

TOP

function EquipPlus_PPlus(charaindex,itemindex,itemid)
        local buf = Item.GetData(itemindex,%道具_原名%);
        local buf2 = Item.GetData(itemindex,%道具_名%);
        --1~9級需要的加強材料,最後一項不要改
        local itemtbl = {20841,20841,20841,20842,20842,20842,20843,20843,20843,-1};
        --1~9級需要的材料數量,最後一項不要改
        local itemnumtbl = {1,1,1,1,1,1,1,1,1,1};
        local level = 0;
        if( (buf.."+1") == buf2)then
                level = 1;
        elseif( (buf.."+2") == buf2)then
                level = 2;
        elseif( (buf.."+3") == buf2)then
                level = 3;
        elseif( (buf.."+4") == buf2)then
                level = 4;
        elseif( (buf.."+5") == buf2)then
                level = 5;
        elseif( (buf.."+6") == buf2)then
                level = 6;
        elseif( (buf.."+7") == buf2)then
                level = 7;
        elseif( (buf.."+8") == buf2)then
                level = 8;
        elseif( (buf.."+9") == buf2)then
                level = 9;
        end
        if(level == 9)then
                NLG.TalkToCli(charaindex,"已經達到強化最大值!",%青色%);
                return;
        end
        if (Char.FindItemId(charaindex,itemtbl[level+1]) < itemnumtbl[level+1]) then
                NLG.TalkToCli(charaindex,"缺少強化所需要的材料!",%紅色%);
                return;
        end
                                        --這裡是概率,現在是1/10,改10為2則1/2的概率
        local randnum = math.floor(math.random(1, 1));
        if(randnum == 1)then
                if(level == 8 or level == 7)then
                        --這是9級加強
                        Item.SetData(itemindex,%道具_附攻%, Item.GetData(itemindex,%道具_附攻%) + 15);
                        --加HP
                        Item.SetData(itemindex,%道具_附體%, Item.GetData(itemindex,%道具_附體%) + 15);
                        --加MP
                        Item.SetData(itemindex,%道具_附氣%, Item.GetData(itemindex,%道具_附氣%) + 15);
                        Item.SetData(itemindex,%道具_附防%, Item.GetData(itemindex,%道具_附防%) + 15);
                        Item.SetData(itemindex,%道具_附敏%, Item.GetData(itemindex,%道具_附敏%) + 15);
                else
                        Item.SetData(itemindex,%道具_附攻%, Item.GetData(itemindex,%道具_附攻%) + 5);
                        --加HP
                        Item.SetData(itemindex,%道具_附體%, Item.GetData(itemindex,%道具_附體%) + 5);
                        --加MP
                        Item.SetData(itemindex,%道具_附氣%, Item.GetData(itemindex,%道具_附氣%) + 5);
                        Item.SetData(itemindex,%道具_附防%, Item.GetData(itemindex,%道具_附防%) + 5);
                        Item.SetData(itemindex,%道具_附敏%, Item.GetData(itemindex,%道具_附敏%) + 5);
                end
                local buff = Item.GetData(itemindex,%道具_原名%).."+"..level+1;
                Item.SetData(itemindex,%道具_名%,buff);
                local buff = Item.GetData(itemindex,%道具_說明%);
                if level == 0 then
                        local i,j;
                        i,j = string.find(buff,"次加強");
                        if(i ~=2 or j ~= 7)then
                                buff = "1次加強"..buff;
                        else
                                buff = string.gsub(buff,level,level+1);
                        end
                else
                        buff = string.gsub(buff,level,level+1);
                end
                Item.SetData(itemindex,%道具_說明%,buff);

                NLG.DelItem(charaindex,itemtbl[level+1],itemnumtbl[level+1]);
                NLG.TalkToCli(charaindex,"恭喜你,強化成功!(請重新登陸查看裝備屬性)",%黃色%);
                NLG.TalkToCli(-1,"恭喜"..Char.GetData(charaindex,%對像_原名%).."成功強化"..Item.GetData(itemindex,%道具_原名%)..",現在是+"..level+1,%紫色%);
                return;
        else
                NLG.DelItem(charaindex,itemtbl[level+1],itemnumtbl[level+1]);
                                        --降級概率,現在是1/2,改2為3則變為1/3
                randnum = math.floor(math.random(1,1));
                if randnum == 1 then
                        if(level == 0)then
                        NLG.TalkToCli(charaindex,"強化裝備失敗",%紅色%);
                        return;
                        end
                        if(level == 8 or level == 7 or level == 6)then
                                Item.SetData(itemindex,%道具_附攻%, Item.GetData(itemindex,%道具_附攻%) - 15*(level-7) - 5 * 7);
                                Item.SetData(itemindex,%道具_附防%, Item.GetData(itemindex,%道具_附防%) - 15*(level-7) - 5 * 7);
                                Item.SetData(itemindex,%道具_附敏%, Item.GetData(itemindex,%道具_附敏%) - 15*(level-7) - 5 * 7);
                                Item.SetData(itemindex,%道具_附體%, Item.GetData(itemindex,%道具_附體%) - 15*(level-7) - 5 * 7);
                                Item.SetData(itemindex,%道具_附氣%, Item.GetData(itemindex,%道具_附氣%) - 15*(level-7) - 5 * 7);
                                local buff = Item.GetData(itemindex,%道具_原名%);
                                Item.SetData(itemindex,%道具_名%,buff);
                                local buff = Item.GetData(itemindex,%道具_說明%);
                                buff = string.gsub(buff,level,"0");
                                Item.SetData(itemindex,%道具_說明%,buff);
                                NLG.TalkToCli(charaindex,"強化失敗!該裝備初始化",%紅色%);
                        else
                                Item.SetData(itemindex,%道具_附攻%, Item.GetData(itemindex,%道具_附攻%) - 5);
                                Item.SetData(itemindex,%道具_附防%, Item.GetData(itemindex,%道具_附防%) - 5);
                                Item.SetData(itemindex,%道具_附敏%, Item.GetData(itemindex,%道具_附敏%) - 5);
                                Item.SetData(itemindex,%道具_附體%, Item.GetData(itemindex,%道具_附體%) - 5);
                                Item.SetData(itemindex,%道具_附氣%, Item.GetData(itemindex,%道具_附氣%) - 5);
                                local buff = Item.GetData(itemindex,%道具_原名%).."+"..level-1;
                                Item.SetData(itemindex,%道具_名%,buff);
                                local buff = Item.GetData(itemindex,%道具_說明%);
                                buff = string.gsub(buff,level,level-1);
                                Item.SetData(itemindex,%道具_說明%,buff);
                                NLG.TalkToCli(charaindex,"強化失敗!等級下降",%紅色%);
                                end
                        return;
                else
                        NLG.TalkToCli(charaindex,"對不起,強化失敗!",%紅色%);
                end




        end
end

TOP

引用:
原帖由 yang 於 2013-10-18 10:21 發表
他少了初始化npc的
可以參考其他lua腳本
對呀,就是卡在初始化,管理員有空可以幫忙指點一下嗎??

TOP