魔力宝贝

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

[GP] MakeItemJMX.lua--智能出怪模块

[复制链接]
发表于 前天 02:55 | 显示全部楼层 |阅读模式
local AutoEnemyNumMapList = {} --地图浮动怪物数量
AutoEnemyNumMapList[0] = {} --初始化普通地图
AutoEnemyNumMapList[1] = {} --初始化随机迷宫
AutoEnemyNumMapList[0][11003] = {{1,2},{3,4},{4,5,6},{5,6,7},{7,7}} --哈洞 AutoEnemyNumMapList[0][地图id] = {1人时怪物数量,2人时怪物数量,3人时怪物数量,4人时怪物数量,5人时怪物数量}
AutoEnemyNumMapList[0][15005] = {{1,2},{3,4},{4,5,6},{5,7},{7,7}} --海底
AutoEnemyNumMapList[0][38015] = {{1,2},{3,4},{4,6},{5,7},{7,7}} --雪山
--AutoEnemyNumMapList[0][33000] = {{2,3},{3,4},{3,5},{4,5},{5,7}} --坎村
AutoEnemyNumMapList[0][33000] = {{2,6},{2,6},{2,6},{2,6},{4,4}} --坎村
AutoEnemyNumMapList[0][38016] = {{1,2},{3,4},{4,5,6},{5,6,7},{7,7}} --炎洞
AutoEnemyNumMapList[0][38017] = {{1,2},{3,4},{4,5,6},{5,6,7},{7,7}} --水洞
AutoEnemyNumMapList[1][1421] = {{1,2},{3,4},{4,6},{5,7},{7,7}} --龙城
AutoEnemyNumMapList[0][38019] = {{1,2},{3,4},{4,6},{5,7},{7,7}} --火山
AutoEnemyNumMapList[0][38020] = {{1,2},{3,4},{4,6},{5,7},{7,7}} --兰一
AutoEnemyNumMapList[0][62902] = {{1,2},{3,4},{4,6},{5,7},{7,7}} --山道

--取消智能遇敌的地图(5组怪物出现表都填原始出怪数)
AutoEnemyNumMapList[1][3] = {{2,6},{2,6},{2,6},{3,7},{3,7}} --灵堂 AutoEnemyNumMapList[1][随机迷宫编号] = {1人时怪物数量,2人时怪物数量,3人时怪物数量,4人时怪物数量,5人时怪物数量}
AutoEnemyNumMapList[0][101] = {{1,2},{1,2},{1,2},{1,2},{1,2}}--巴洛斯(牛场)
AutoEnemyNumMapList[0][301] = {{1,4},{1,4},{1,4},{1,4},{1,4}}--阿卡斯
AutoEnemyNumMapList[0][401] = {{1,4},{1,4},{1,4},{1,4},{1,4}}--佛利波罗
AutoEnemyNumMapList[0][47025] = {{3,3},{3,3},{3,3},{3,3},{3,3}}--耶卡(冥府之道)
AutoEnemyNumMapList[0][47029] = {{1,1},{1,1},{1,1},{1,1},{1,1}}--耶卡(冥府之道)
AutoEnemyNumMapList[0][43821] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--深海1(八岐大蛇)
AutoEnemyNumMapList[0][43822] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--深海2
AutoEnemyNumMapList[0][43823] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--深海3
AutoEnemyNumMapList[0][43824] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--深海4
AutoEnemyNumMapList[0][43825] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--深海5
AutoEnemyNumMapList[0][43826] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--深海6
AutoEnemyNumMapList[0][43830] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--海之神殿
for i=1,19 do
        AutoEnemyNumMapList[0][20100+i] = {{1,4},{1,4},{1,4},{1,4},{1,4}}--六耀之塔
end
for i=1,30 do
        AutoEnemyNumMapList[0][20500+i] = {{1,4},{1,4},{1,4},{1,4},{1,4}}--冰召
end
for i=1,18 do
        AutoEnemyNumMapList[0][51000+i] =  {{1,6},{1,6},{1,6},{1,6},{1,6}}--黑之宫殿
end
for i=1,10 do
        AutoEnemyNumMapList[0][20300+i] = {{1,4},{1,4},{1,4},{1,4},{1,4}}--凤鸣之塔
end
AutoEnemyNumMapList[1][807] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--诅咒者的洞穴(水) 迷宫
AutoEnemyNumMapList[1][808] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--诅咒者的洞穴(火) 迷宫
AutoEnemyNumMapList[1][809] = {{2,2},{2,2},{2,2},{2,2},{2,2}}--诅咒者的洞穴(地) 迷宫

-------------------------


--AutoEnemyNumMapList[0][62902] = {{1,1},{3,2},{2,3},{3,4},{4,5}} --山道
--AutoEnemyNumMapList[0][15005] = {{1,2},{3,4},{4,5,6},{5,7},{6,8}} --海底

local BaseAutoEnemyNum = {{1,2},{2,4},{3,5},{4,7},{5,8}}
local NoAutoEnemyNumBase = {} --不参与浮动怪物数量enemyid
NoAutoEnemyNumBase[10000] = 1 --箱子
NoAutoEnemyNumBase[10001] = 1 --箱子
NoAutoEnemyNumBase[10002] = 1 --箱子
NoAutoEnemyNumBase[10003] = 1 --箱子
NoAutoEnemyNumBase[10004] = 1 --箱子
NoAutoEnemyNumBase[10005] = 1 --箱子
NoAutoEnemyNumBase[10006] = 1 --箱子
NoAutoEnemyNumBase[10007] = 1 --箱子
NoAutoEnemyNumBase[10008] = 1 --箱子
NoAutoEnemyNumBase[10009] = 1 --箱子
NoAutoEnemyNumBase[12117] = 1 --回来报仇的牛鬼

Global_Reg.RegInit("ZNCG");

function ZNCG()
        NL.RegEnemyCreateEvent(nil,"JMXRegEnemyCreateEvent");
        return 0;
end

function JMXRegEnemyCreateEvent(player,encount,EnemyNumTable,CheckBoss)
        if CheckBoss > 0 then
                return -3
        end
        --[[旧聚魔香
        if ZDYMXtab[1][player+1] == 2 then--[自动]聚魔香模块
                for k,v in pairs(EnemyNumTable) do
                        if v==-1 then
                                local s=k
                                while EnemyNumTable[s]==-1
                                do
                                local i=math.random(1,10)
                                        if EnemyNumTable[i]~=-1 then
                                                EnemyNumTable[s]=EnemyNumTable[i]
                                        end
                                end
                        end
                end
                return EnemyNumTable,0
        end--[自动]聚魔香模块
        if ZDYMXtab[1][player+1] == 3 then--[自动]聚魔香模块
                ZDYMXtab[1][player+1] = -1
                for k,v in pairs(EnemyNumTable) do
                        if v==-1 then
                                local s=k
                                while EnemyNumTable[s]==-1
                                do
                                local i=math.random(1,10)
                                        if EnemyNumTable[i]~=-1 then
                                                EnemyNumTable[s]=EnemyNumTable[i]
                                        end
                                end
                        end
                end
                return EnemyNumTable,0
        end--[自动]聚魔香模块
        -]]--旧聚魔香
        if Auto_battle_x_save[player] then
                if jmx_item_num[Auto_battle_x_save[player]] then--[自动]聚魔香模块
                        for k,v in pairs(EnemyNumTable) do
                                if v==-1 then
                                        local s=k
                                        while EnemyNumTable[s]==-1
                                        do
                                        local i=math.random(1,10)
                                                if EnemyNumTable[i]~=-1 then
                                                        EnemyNumTable[s]=EnemyNumTable[i]
                                                end
                                        end
                                end
                        end
                        return EnemyNumTable,0
                end
        end--[自动]聚魔香模块
--NLG.SystemMessage(player,"JuMoMinNum="..(JuMoMinNum[player] or "nil").." JuMoMaxNum="..(JuMoMaxNum[player] or "nil"))
        if (JuMoMinNum[player]==nil or JuMoMaxNum[player]==nil) or (JuMoMinNum[player] <= 1 and JuMoMaxNum[player] <= 1) then
                local playermaptype = Char.GetData(player,%对象_地图类型%)
                local playermap = Char.GetData(player,%对象_地图%)
                local dungen = NLG.Get_Dungeonconf_Int(player,0);--获取迷宫序号
                local enemynum = -1
                if playermaptype == 0 then
                        enemynum = AutoEnemyNumMapList[playermaptype][playermap]
                elseif playermaptype == 1 then
                        enemynum = AutoEnemyNumMapList[playermaptype][dungen]
                end
                if type(enemynum) == "table" then
                else
                        enemynum = BaseAutoEnemyNum
                end
                local groupnum = Char.PartyNum(player)--返回组队的人数
                local newenemynum = math.random(enemynum[groupnum][1],enemynum[groupnum][2])--读取设置的出怪数量表中设定的对应组队人数的出怪量
                local EnemyList = EnemyNumTable
                local oldenemynum = 0
                local addenemyid = -1
                for i = 1,10 do
                        if EnemyNumTable[i] > 0 then
                                oldenemynum = oldenemynum + 1
                                local baseid = (BaseEnemyTable[EnemyNumTable[i]] or {})[2] or 0
                                --if NoAutoEnemyNumBase[baseid] then
                                if NoAutoEnemyNumBase[EnemyNumTable[i]] then
                               
                                else
                                        addenemyid = EnemyNumTable[i]
                                end
                        end
                end
--NLG.SystemMessage(player,"newenemynum="..newenemynum.." oldenemynum="..oldenemynum.." addenemyid="..addenemyid)
                if newenemynum > oldenemynum then
                        local addenemynum = newenemynum - oldenemynum
                        for i = 1,10 do
                                if addenemynum > 0 and addenemyid > 0 then
                                        if EnemyList[i] and EnemyList[i] < 0 then
                                                EnemyList[i] = addenemyid
                                                addenemynum = addenemynum - 1
                                        else
                                                addenemyid = EnemyList[i]
                                        end
                                else
                                        break
                                end
                        end
                else
                        local addenemynum = oldenemynum - newenemynum
                        for i = 10,1,-1 do
                                if addenemynum > 0 then
--NLG.SystemMessage(player,"EnemyList["..i.."]="..EnemyList[i].." name="..((BaseEnemyTable[EnemyList[i]] or {})[6] or 2).." lv="..((BaseEnemyTable[EnemyList[i]] or {})[6] or 2).." addenemynum="..addenemynum)
                                        if EnemyList[i] and EnemyList[i] > 0 and (playermaptype ~= 0 or ((BaseEnemyTable[EnemyList[i]] or {})[6] or 2) > 1) then
                                                EnemyList[i] = -1
                                                addenemynum = addenemynum - 1
                                        end
                                else
                                        break
                                end
                        end
                end
                return EnemyList,0
        else
                local JuMoNum = math.random(JuMoMinNum[player],JuMoMaxNum[player])
                local EnemyList = EnemyNumTable
                local oldenemynum = 0
                local addenemyid = -1
                for k,v in pairs(EnemyNumTable) do
                        if v > 0 then
                                oldenemynum = oldenemynum + 1
                                addenemyid = v
                        end
                end
                if JuMoNum > oldenemynum then
                        local addenemynum = JuMoNum - oldenemynum
                        for i = 1,10 do
                                if addenemynum > 0 then
                                        if EnemyList[i] and EnemyList[i] < 0 then
                                                EnemyList[i] = addenemyid
                                                addenemynum = addenemynum - 1
                                        else
                                                addenemyid = EnemyList[i]
                                        end
                                else
                                        break
                                end
                        end
                end
                return EnemyList,0
        end
end


回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-12 19:10 , Processed in 0.161417 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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