Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Задержка выполнения цыкла
#11
Расскажешь потом на каком разе запуска евента у тебя жахнулся сервер , ок ?
Перечитай пост Анзо , повторяю второй раз.
Ответ
#12
Deazer Написал:слипать триды на онлайн игровых серверах , как минимум очень глупо. Если конечно у вас играет не более 1 го человека.
Советую перечитай пост Анзо.

Я тоже об этом думаю, а что ещё можно сделать, каст телепорта идёт 7.5 секунд, в это время мне нужно обездвижить игрока что-бы он не смог убежать с поля боя, затем вернуть ему скорость передвижения.
Консоль GameServer не советует:"Вы настраивайте сервер уже 1 час. Советуем вам немного отдохнуть".
Ответ
#13
Wolfas Написал:Я тоже об этом думаю, а что ещё можно сделать, каст телепорта идёт 7.5 секунд, в это время мне нужно обездвижить игрока что-бы он не смог убежать с поля боя, затем вернуть ему скорость передвижения.
Аборт каст, чарактер блок или аплайнуть скажем тот же Рейд Курс не ?
Ответ
#14
Deazer Написал:Аборт каст, чарактер блок или аплайнуть скажем тот же Рейд Курс не ?

Из всего выше сказанного понял только: «Аборт каст»
Самый подходящий вариант, выразить его работу могу так:

if(player.moves){
каст
return;
}
но понятия не имею как это написать Sad
Консоль GameServer не советует:"Вы настраивайте сервер уже 1 час. Советуем вам немного отдохнуть".
Ответ
#15
Код:
protected ScheduledFuture<?> Task = null;
long interval = 7.5*1000;

Task = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(), interval);

protected class TeleportTask implements Runnable
{
    public void run()
    {
           // Ваш код
     }
}
Ответ
#16
ANZO Написал:
Код:
protected ScheduledFuture<?> Task = null;
long interval = 7.5*1000;

Task = ThreadPoolManager.getInstance().scheduleGeneral(new TeleportTask(), interval);

protected class TeleportTask implements Runnable
{
    public void run()
    {
           // Ваш код
     }
}

Спасибо но у меня не l2, нету у меня ThreadPoolManager

Что думаю может не слипать турн, а установить функцию восстановления скорости которая выполниться с задержкой 7.5 секунды, или это равносильно обычному слипу?
Консоль GameServer не советует:"Вы настраивайте сервер уже 1 час. Советуем вам немного отдохнуть".
Ответ
#17
Тогда делайте на ScheduledThreadPoolExecutor и ThreadPoolExecutor, которые собственно ладвашный ThreadPoolManager и юзает.

Добавлено через 2 часа 34 минуты
Не поленился в AionX залезть сорцы, там аналог ладвашного тредменнеджера обозвали RunnableStatsManager, как я понял.
Ответ
#18
че вы к ThreadPoolManager прицепились, от точно также слипит Триды ( разве есть другие методы сделать отложенный запуск ?).

если нужно слипить и при этом не подвешивать основной Thread игрока
делаем так:
Код:
    public void func ()
    {
        //Допустим это обработчик комманды от игрока
        new delayTask().run();
    }
    
    private class delayTask implements Runnable
    {
        public void run()
        {
            // Действия
            
            try
            {
                Thread.sleep(1000);
            }
            catch (InterruptedException e){}
            
            // Действия действия после задержки            
        }
    }
Ответ
#19
Wolfas Написал:Функция нужна для игрового сервера.

сразу так нельзя было написать?

Добавлено через 2 часа 46 минут
MHard Написал:че вы к ThreadPoolManager прицепились, от точно также слипит Триды ( разве есть другие методы сделать отложенный запуск ?).

если нужно слипить и при этом не подвешивать основной Thread игрока
делаем так:
Код:
    public void func ()
    {
        //Допустим это обработчик комманды от игрока
        new delayTask().run();
    }
    
    private class delayTask implements Runnable
    {
        public void run()
        {
            // Действия
            
            try
            {
                Thread.sleep(1000);
            }
            catch (InterruptedException e){}
            
            // Действия действия после задержки            
        }
    }

MHard не позорься Big Grin, нужно так:

Код:
    public void func ()
    {
        //Допустим это обработчик комманды от игрока
        new delayTask().start();
    }
    
    private class delayTask extends Thread
    {
        public void run()
        {
            // Действия
            try
            {
                Thread.sleep(10000);
            }
            catch (InterruptedException e){}
                
            // Действия действия после задержки
        }
    }
Ответ
#20
http://download.oracle.com/javase/6/docs...imeUnit%29
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  5-сек-я задержка при нажатии на кнопку Dementor 19 5,154 05-29-2013, 07:57 PM
Последний пост: kingzor

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


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