[JAVA] маленький скрипт - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 04.11.2011, 11:13   #1
Пользователь

Автор темы (Топик Стартер) [JAVA] маленький скрипт

добрый день, в общем есть скрипт, он реализовует поочередное появление пачек мобов (одиннаковых, 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()
    {
    }
}
__________________
mego4el вне форума Ответить с цитированием
Непрочитано 04.11.2011, 12:10   #2
Аватар для Array
Супергерой

По умолчанию Re: [JAVA] маленький скрипт

А если сделать по принципу миньонов? Будет почти как надо.
Array вне форума Ответить с цитированием
Непрочитано 04.11.2011, 13:16   #3
Пользователь

Автор темы (Топик Стартер) Re: [JAVA] маленький скрипт

Цитата:
Сообщение от Array Посмотреть сообщение
А если сделать по принципу миньонов? Будет почти как надо.
подскажите, где копать?
__________________
mego4el вне форума Ответить с цитированием
Непрочитано 04.11.2011, 13:20   #4
Аватар для Azagthtot
Эксперт

По умолчанию Re: [JAVA] маленький скрипт

Т.е. я так понял, у вас задача ПОСЛЕДОВАТЕЛЬНОЕ появление новой пачки, после убийства предыдущей?
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 04.11.2011, 13:54   #5
Пользователь

Автор темы (Топик Стартер) Re: [JAVA] маленький скрипт

да, именно так
__________________
mego4el вне форума Ответить с цитированием
Непрочитано 04.11.2011, 16:27   #6
Пользователь

По умолчанию Re: [JAVA] маленький скрипт

ищи АИ в опенах, называются PailakaStenka....., аи делал я когда был нубом, код конечно там печальный но пример как сделать вашу мысль имеется
__________________
PaInKiLlEr вне форума Отправить сообщение для PaInKiLlEr с помощью ICQ Ответить с цитированием
Непрочитано 04.11.2011, 17:02   #7
Аватар для ANZO
Разработчик BDO Emu

По умолчанию Re: [JAVA] маленький скрипт

Ваш счетчик при появлении новой пачки нужно обратно выставлять в 4 в этом случае.
ANZO вне форума Отправить сообщение для ANZO с помощью ICQ Отправить сообщение для ANZO с помощью Skype™ Ответить с цитированием
Непрочитано 04.11.2011, 17:03   #8
Аватар для Azagthtot
Эксперт

По умолчанию Re: [JAVA] маленький скрипт

И все дружно бросились изобретать лисапед....
Код:
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;
  }
 }
Идею я наисал, реализация - за вами
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Непрочитано 04.11.2011, 17:05   #9
Пользователь

Автор темы (Топик Стартер) Re: [JAVA] маленький скрипт

если я делаю так:
Код:
            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;
                }
то после убивания второй пачки сразу, без таймера появилась вторая. а третья все никак не заработате... блин (
__________________
mego4el вне форума Ответить с цитированием
Непрочитано 04.11.2011, 17:12   #10
Аватар для Azagthtot
Эксперт

По умолчанию Re: [JAVA] маленький скрипт

Перестаньте мучать животное! Решение простое и без выпендрежа вам дали
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Продам] Скрипт l2top, LK java Kellgen Рынок / Marketplace 3 28.01.2011 18:36
Скрипт топ 100 aspalt Курилка / Yak floor 1 05.12.2010 02:05
AI скрипт nikitawasa Работа со скриптами 2 22.08.2010 20:36
Скрипт ТОП 10 FA для l2 java cAleks PHP 3 13.11.2009 01:10


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 00:47. Часовой пояс GMT +3.

Вверх