Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
[JAVA] маленький скрипт
#1
добрый день, в общем есть скрипт, он реализовует поочередное появление пачек мобов (одиннаковых, 4 моба в каждой), он должен работать бесконечно, таким образом, что бы после появления последней пачки, убив ее, автоматически все перескакивало на начало и так вновь по кругу, в общем это по скрипту видно.

одно из основных условий, это то, что если не убиты все 4 моба, то следующие 4 не появляются (через n-ное время по таймеру), то есть нужен некий счетчик, я попробовал написать чтото вроде cnt, но как-то я намудрил с этим(

почему-то не работает спаун после 2й пачки, ее убиваешь и все.. дальше никого больше не появляется.. помогите пожалуйста разобраться, что не так..

Код:
package com.l2jfrozen.gameserver.ai.special;

import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.quest.Quest;
import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
import java.util.concurrent.Future;

/*  
    @Author  morfeus

    21336 -- Ketra orc white captain
    21378 -- Scarlet Stakato Noble
    21381 -- Assassin Beetle
*/

public class RebornCorpse  extends Quest implements Runnable
{
    public int CNT=4;
    private static final int[] monsters = new int[]{21336,21378,21381};
    public RebornCorpse(int questId, String name, String descr)
    {
        super(questId, name, descr);
        for(final int MobIds  : monsters)
        {
             addKillId(MobIds);
        }
        addSpawn(21336, 119319, 112238, -3695, 9074, false, 0);
        addSpawn(21336, 119247, 112349, -3691, 9438, false, 0);
        addSpawn(21336, 119225, 112176, -3698, 7247, false, 0);
        addSpawn(21336, 119139, 112318, -3690, 6712, false, 0);
    }
    @Override
    public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet)
    {
        CNT=CNT-1;
        if(CNT == 0 && delaySpawnMe == null)
        {
            delaySpawnMe = ThreadPoolManager.getInstance().scheduleAi(new delayedSpawn(npc.getNpcId()), 5000);
        }
        return super.onKill(npc, killer, isPet);
    }
    Future<?> delaySpawnMe;
    public class delayedSpawn implements Runnable
    {
        int nd;
        public delayedSpawn(int npid)
        {
            nd = npid;
        }

        @Override
        public void run()
        {
            switch (nd)
            {
                case 21336:
                    addSpawn(21378, 119319, 112238, -3695, 9074, false, 0);
                    addSpawn(21378, 119247, 112349, -3691, 9438, false, 0);
                    addSpawn(21378, 119225, 112176, -3698, 7247, false, 0);
                    addSpawn(21378, 119139, 112318, -3690, 6712, false, 0);
                    break;
                case 21378:
                    addSpawn(21381, 119319, 112238, -3695, 9074, false, 0);
                    addSpawn(21381, 119247, 112349, -3691, 9438, false, 0);
                    addSpawn(21381, 119225, 112176, -3698, 7247, false, 0);
                    addSpawn(21381, 119139, 112318, -3690, 6712, false, 0);
                    break;
                case 21381:
                    addSpawn(21336, 119319, 112238, -3695, 9074, false, 0);
                    addSpawn(21336, 119247, 112349, -3691, 9438, false, 0);
                    addSpawn(21336, 119225, 112176, -3698, 7247, false, 0);
                    addSpawn(21336, 119139, 112318, -3690, 6712, false, 0);
                    break;
                default:
                {
                    addSpawn(21336, 119319, 112238, -3695, 9074, false, 0);
                    addSpawn(21336, 119247, 112349, -3691, 9438, false, 0);
                    addSpawn(21336, 119225, 112176, -3698, 7247, false, 0);
                    addSpawn(21336, 119139, 112318, -3690, 6712, false, 0);
                }
            }
        }
    }

    @Override
    public void run()
    {
    }
}
[Изображение: ck.gif]
Ответ
#2
А если сделать по принципу миньонов? Будет почти как надо.
Ответ
#3
Array Написал:А если сделать по принципу миньонов? Будет почти как надо.

подскажите, где копать?
[Изображение: ck.gif]
Ответ
#4
Т.е. я так понял, у вас задача ПОСЛЕДОВАТЕЛЬНОЕ появление новой пачки, после убийства предыдущей?
Ответ
#5
да, именно так
[Изображение: ck.gif]
Ответ
#6
ищи АИ в опенах, называются PailakaStenka....., аи делал я когда был нубом, код конечно там печальный но пример как сделать вашу мысль имеется
[Изображение: 2ewe.jpg][Изображение: 1.gif]
Ответ
#7
Ваш счетчик при появлении новой пачки нужно обратно выставлять в 4 в этом случае.
Ответ
#8
И все дружно бросились изобретать лисапед....
Код:
public class RebornCorpse  extends Quest  {
List<L2NpcInstance> _currentMobs = new ArrayList<L2NpcInstance>();
int _activePhase = 0;
public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) {
    _currentMobs.remove(npc);
    if(_currentMobs.isEmpty())
       nextPhase();
    return null;
}
private void nextPhase() {
    _activePhase++;
    if(_activePhase>4) _activePhase = 1;
    switch(_activePhase) {
    case 1: _currentMobs.add(addSpawn(21336, 119319, 112238, -3695, 9074, false, 0));
               _currentMobs.add(addSpawn(21336, 119247, 112349, -3691, 9438, false, 0));
        break;
  }
}
Идею я наисал, реализация - за вами
Ответ
#9
если я делаю так:
Код:
switch (nd)
            {
                case 21336:
                    addSpawn(21378, 119319, 112238, -3695, 9074, false, 0);
                    addSpawn(21378, 119247, 112349, -3691, 9438, false, 0);
                    addSpawn(21378, 119225, 112176, -3698, 7247, false, 0);
                    addSpawn(21378, 119139, 112318, -3690, 6712, false, 0);
                    CNT=4;
                    break;
                case 21378:
                    addSpawn(21381, 119319, 112238, -3695, 9074, false, 0);
                    addSpawn(21381, 119247, 112349, -3691, 9438, false, 0);
                    addSpawn(21381, 119225, 112176, -3698, 7247, false, 0);
                    addSpawn(21381, 119139, 112318, -3690, 6712, false, 0);
                    CNT=4;
                    break;
                case 21381:
                    addSpawn(21336, 119319, 112238, -3695, 9074, false, 0);
                    addSpawn(21336, 119247, 112349, -3691, 9438, false, 0);
                    addSpawn(21336, 119225, 112176, -3698, 7247, false, 0);
                    addSpawn(21336, 119139, 112318, -3690, 6712, false, 0);
                    CNT=4;
                    break;
                default:
                {
                    addSpawn(21336, 119319, 112238, -3695, 9074, false, 0);
                    addSpawn(21336, 119247, 112349, -3691, 9438, false, 0);
                    addSpawn(21336, 119225, 112176, -3698, 7247, false, 0);
                    addSpawn(21336, 119139, 112318, -3690, 6712, false, 0);
                    CNT=4;
                }

то после убивания второй пачки сразу, без таймера появилась вторая. а третья все никак не заработате... блин (
[Изображение: ck.gif]
Ответ
#10
Перестаньте мучать животное! Smile Решение простое и без выпендрежа вам дали
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  java прогер Light87 0 1,939 01-18-2021, 12:15 AM
Последний пост: Light87
  Скрипт для альт+б Jm0t 0 1,828 03-21-2019, 04:18 PM
Последний пост: Jm0t
  Помогите переписать скрипт с Python на Java Virrilis3 0 1,487 03-29-2018, 10:55 PM
Последний пост: Virrilis3
  кто может открыть .u формат скрипт? velterna 1 1,936 01-31-2018, 09:49 PM
Последний пост: PROGRAMMATOR
  Скрипт не срабатывает сразу Froust 4 2,406 09-22-2017, 02:14 PM
Последний пост: Froust
  скрипт на превращение зарича по id v1kt0r 3 2,151 05-07-2017, 10:04 PM
Последний пост: Emperor
  Ищу исполнителя [Java] Abstragetic 3 2,164 02-05-2017, 03:01 AM
Последний пост: Deazer
  альт+G java HiredKiller 10 3,476 12-15-2015, 09:40 AM
Последний пост: HiredKiller
  Servise Manager Lucera 2 Java 8. DiName 8 2,735 12-07-2015, 07:43 AM
Последний пост: Deazer
  Дюп через Kamaloka.java dantest 7 2,346 09-14-2015, 09:01 PM
Последний пост: dantest

Перейти к форуму:


Пользователи, просматривающие эту тему: 5 Гость(ей)