Перейти к содержанию
Авторизация  
emc2

Баг с пропаданием боссов на L2Jfrozen

Рекомендуемые сообщения

Всем ещё раз привет. На сборке l2jfrozen (последние исходы с SVN) присутствует баг с исчезновением боссов (а может и не только). Как работает баг? Ставим Lockrange (тп босса когда его уводят) скажем на 1000. Уводим босса раз 10-15, он тпшится и сначала вроде бы всё хорошо. Но потом он просто появляется и через секунду пропадает. В таргет его не возьмешь, в общем просто исчезает с сервера и всё (в гс иногда выводятся сообщения что. Как я пытался исправить его? Добавил в L2MonsterIsntance метод teleToLocation (тк до этого он вызывался с L2Character) - не помогло. Перебрал сам метод spawnMe в L2Object (сделал идентичным с последними сурсами pwsoft), единственное что осталось от фрозенов это onSpawn. Заметил что в PWSoft этот паблик просто пустой, а в фрозенах у меня он такой:

public void onSpawn()
{
fireEvent(EventType.SPAWN.name, (Object[]) null);
}
собственно , может кто знает как исправить и в какую сторону копать? вот часть кода отвечающая за тп босса если его уводят:
 
[spoiler=code]
	protected void manageMinions()
	{
		_minionList.spawnMinions();
		_minionMaintainTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable()
		{
			@[member='override']
			public void run()
			{
				// teleport raid boss home if it's too far from home location
				L2Spawn bossSpawn = getSpawn();
				
				int rb_lock_range = Config.RBLOCKRAGE;
				if (Config.RBS_SPECIFIC_LOCK_RAGE.get(bossSpawn.getNpcid()) != null)
				{
					rb_lock_range = Config.RBS_SPECIFIC_LOCK_RAGE.get(bossSpawn.getNpcid());
				}
				
				if (rb_lock_range != -1 && !isInsideRadius(bossSpawn.getLocx(), bossSpawn.getLocy(), bossSpawn.getLocz(), rb_lock_range, true, false))
				{
					teleToLocation(bossSpawn.getLocx(), bossSpawn.getLocy(), bossSpawn.getLocz(), true);
					// healFull(); // Prevents minor exploiting with it
				}
				/*
				 * if(!isInsideRadius(bossSpawn.getLocx(), bossSpawn.getLocy(), bossSpawn.getLocz(), 5000, true, false)) { teleToLocation(bossSpawn.getLocx(), bossSpawn.getLocy(), bossSpawn.getLocz(), true); healFull(); // prevents minor exploiting with it }
				 */
				_minionList.maintainMinions();
				bossSpawn = null;
			}
		}, 60000, getMaintenanceInterval());
	}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно миньен лист нужно очистить

у боссов что пропадают нет миньенов. Попробую, но врядли это решит проблему. Тут проблема где то в методах спавна босса. Бывает что сначала после возврата на спавн таргет не работает на босса. Ещё раз мы его тпшим (бьём массухой, тащим подальше) -> респавнится и таргет уже на него работает. 

 

Ещё сервер писал что то про unknown world region for лока_х, лока_у, лока_z и objectid дописывал.

 

Сейчас от RaidBossInstance до последнего onSpawn я перебрал все паблики и тд по аналогии с пвсофтом - проблемы это не решило. Зачем я это сделал? Ну как минимум, поскольку по ядру фрозена он минуя L2MonsterInstance, L2NPCInstance попадал сразу в teletolocation который лежит в L2Character (что для меня остается странным). Кстати ещё не тестил этот баг на пвсофте, но думаю его там нет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хм... почему то сейчас натолкнулся на мысль что возможно эта фигня срабатывает 2 раза из за того что время фиксированное 60 секунд.

На PWSoft (последние сурсы из шары) это реализовано с рандомным таймером до 5 секунд.

 

Added: а почему методы так похожи?) У ПВСофт основа не фрозен случаем или не скория?

    @[member='override']
    protected void manageMinions() {
        _minionList.spawnMinions();
        _minionMaintainTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable() {

            public void run() {
                // teleport raid boss home if it's too far from home location
                L2Spawn bossSpawn = getSpawn();
                if (!isInsideRadius(bossSpawn.getLocx(), bossSpawn.getLocy(), bossSpawn.getLocz(), 5000, true, false)) {
                    teleToLocation(bossSpawn.getLocx(), bossSpawn.getLocy(), bossSpawn.getLocz(), true);
                    healFull(); // prevents minor exploiting with it
                }
                _minionList.maintainMinions();
            }
        }, 60000, getMaintenanceInterval() + Rnd.get(5000));
    }
Изменено пользователем emc2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

добавил Rnd.get(5000) вроде полет нормальный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Хм... почему то сейчас натолкнулся на мысль что возможно эта фигня срабатывает 2 раза из за того что время фиксированное 60 секунд.

На PWSoft (последние сурсы из шары) это реализовано с рандомным таймером до 5 секунд.

 

Added: а почему методы так похожи?) У ПВСофт основа не фрозен случаем или не скория?

    @[member='override']
    protected void manageMinions() {
        _minionList.spawnMinions();
        _minionMaintainTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable() {

            public void run() {
                // teleport raid boss home if it's too far from home location
                L2Spawn bossSpawn = getSpawn();
                if (!isInsideRadius(bossSpawn.getLocx(), bossSpawn.getLocy(), bossSpawn.getLocz(), 5000, true, false)) {
                    teleToLocation(bossSpawn.getLocx(), bossSpawn.getLocy(), bossSpawn.getLocz(), true);
                    healFull(); // prevents minor exploiting with it
                }
                _minionList.maintainMinions();
            }
        }, 60000, getMaintenanceInterval() + Rnd.get(5000));
    }

Потому от l2j идет все. Все у всех все берут :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...