跳至主要內容

无限出怪脚本(防守)

鸵鸟工作室大约 3 分钟

注意

  • 这是无限出怪脚本的一个模板
  • 脚本参数通无限出怪脚本(TD),只是去除了爆哥.并且增加了间隔时间

脚本

提示

BOSS_ROUND = 5                --间隔多久出一次Boss
LEVEL_INCREASS_PER_WAVE = 100 --20波以后每次递增多少分数 比如20波是2000分,这里填100,21波就是2100分


function Init(...)
    LowAPI.WinLose_Disable(4); --击杀Boss后不判定胜利
    LowAPI.WinLose_Disable(2); --Boss进入金矿后不判定失败
    

    CMD("等待", "延迟", 2)
    CMD("对话", "NPC_KingSoldier", "士兵长", "哥布林大军即将从四个方向袭来. 准备防守!")
    CMD("对话", "NPC_KingSoldier", "士兵长", "你有<color=green>60秒</color>的准备时间")
    CMD("等待", "延迟", 10)
    CMD("对话", "NPC_KingSoldier", "士兵长", "准备开始喽")
    CMD("函数", "LoopGen")
end

NOW_LOOP_COUNT = 0;
NOW_BOSS_COUNT = 0;

function LoopGen()
    NOW_LOOP_COUNT = NOW_LOOP_COUNT + 1

    CMD("对话", "NPC_KingSoldier", "士兵长", "第<color=red>" .. NOW_LOOP_COUNT .. "</color>波敌人来袭!")
    CMD("奖励", "金币", 600)

    --检测当前循环波数是否能整除BOSS_ROUND内指定的数比如10
    --能整除就是Boss波,不能整除就是普通波
    if NOW_LOOP_COUNT % BOSS_ROUND == 0 then
        LoopGen_Boss();
    else
        LoopGen_Normal();
    end
    CMD("等待", "延迟", 45)
    CMD("函数", "LoopGen")
end

function LoopGen_Normal()
    --每次重置传送门
    CMD("出兵位置", "默认")

    if NOW_LOOP_COUNT <= 7 then
        CMD("延迟_预警", 60, "ground", false)
        CMD("出兵", "分数", math.random(200, 300), "初#辅")
        return;
    elseif NOW_LOOP_COUNT <= 15 then
        CMD("延迟_预警", 60, "ground", false)
        CMD("出兵", "分数", math.random(400, 500), "中#辅")
        return;
    else
        -- 10波以后 不再给钱 都靠爆哥
        -- 爆哥数量随着波数每次 +1
        -- 按波数递增怪的分数
        -- 最低分: 2000 + (波数-20) * 100(LEVEL_INCREASS_PER_WAVE)
        -- 最高分: 2500 + (波数-20) * 100(LEVEL_INCREASS_PER_WAVE)
        local num = math.max(1, NOW_LOOP_COUNT - 15);
        local min = 400 + math.ceil(num * LEVEL_INCREASS_PER_WAVE);
        local max = 500 + math.ceil(num * LEVEL_INCREASS_PER_WAVE);
        local score = math.random(min, max);
        CMD("延迟_预警", 60, "ground", false)                                        
        CMD("出兵", "分数", score, "中#高#辅")
        return;
    end
end

function LoopGen_Boss()
    NOW_BOSS_COUNT = NOW_BOSS_COUNT + 1;
    --前5个Boss一个配置
    --5~10波另外一个配置
    if NOW_BOSS_COUNT <= 2 then
        local boss = LowAPI.GetRandomBossID()
        CMD("延迟_预警", 60, boss, false)
        CMD("出兵", "分数", 150, "初#辅")
        CMD("等待", "延迟", 1)
        CMD("出兵", "分数", 150, "初")
        CMD("等待", "延迟", 2)
        CMD("出兵", "分数", 200, "中#辅")
        CMD("等待", "延迟", 2)
        CMD("出兵", "分数", 200, "初#中#辅")
        CMD("等待", "延迟", 5)
        CMD("出兵", boss, 1, "Boss")
        return;
    elseif NOW_BOSS_COUNT <= 4 then
        local boss = LowAPI.GetRandomBossID()
        CMD("延迟_预警", 80, boss, false)
        CMD("出兵", "分数", 100, "初#中#辅")
        CMD("等待", "延迟", 1)
        CMD("出兵", "分数", 100, "中#辅")
        CMD("等待", "延迟", 2)
        CMD("出兵", boss, 1, "Boss")
        local boss2 = LowAPI.GetRandomBossID()
        CMD("出兵", "分数", 100, "中#高#辅")
        CMD("等待", "延迟", 2)
        CMD("出兵", "分数", 100, "初#中#高#辅")
        CMD("等待", "延迟", 3)
        CMD("出兵", boss2, 1, "Boss")
        return;
    else
        local num = math.max(1, NOW_LOOP_COUNT - 20);
        local min = 600 + math.ceil(num * LEVEL_INCREASS_PER_WAVE);
        local max = 700 + math.ceil(num * LEVEL_INCREASS_PER_WAVE);
        local score = math.random(min, max);

        --首个Boss.相应的ID用于延迟预警的Icon
        local boss = LowAPI.GetRandomBossID()
        CMD("延迟_预警", 90, boss, false)
        CMD("出兵", "分数", score, "中#高#辅")
        CMD("等待", "延迟", 2)
        CMD("出兵", boss, 1, "Boss")

        --其余要出的Boss用循环
        local bornBossNum = math.max(2, NOW_BOSS_COUNT - 3);
        for i = 1, bornBossNum, 1 do
            CMD("出兵", "分数", score, "中#高#辅")
            CMD("等待", "延迟", 1)
            local boss = LowAPI.GetRandomBossID()
            CMD("出兵", boss, 1, "Boss")
            CMD("等待", "延迟", 2)
        end
    end
end

function Reward(_shiLiID, _percent, _customArg)
    CMD("奖励", "金币", math.ceil(_customArg * _percent), "势力", _shiLiID)
end

function OnWin(_shiLiID) ---出现胜利界面
    return true;         --阻止弹出胜利界面
end


上次编辑于:
贡献者: Eran