Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Java (https://forum.zone-game.info/forumdisplay.php?f=126)
-   -   Задержка выполнения цыкла (https://forum.zone-game.info/showthread.php?t=16420)

Deazer 23.10.2011 01:28

Re: Задержка выполнения цыкла
 
Расскажешь потом на каком разе запуска евента у тебя жахнулся сервер , ок ?
Перечитай пост Анзо , повторяю второй раз.

Wolfas 23.10.2011 01:30

Re: Задержка выполнения цыкла
 
Цитата:

Сообщение от Deazer (Сообщение 144740)
слипать триды на онлайн игровых серверах , как минимум очень глупо. Если конечно у вас играет не более 1 го человека.
Советую перечитай пост Анзо.

Я тоже об этом думаю, а что ещё можно сделать, каст телепорта идёт 7.5 секунд, в это время мне нужно обездвижить игрока что-бы он не смог убежать с поля боя, затем вернуть ему скорость передвижения.

Deazer 23.10.2011 01:33

Re: Задержка выполнения цыкла
 
Цитата:

Сообщение от Wolfas (Сообщение 144744)
Я тоже об этом думаю, а что ещё можно сделать, каст телепорта идёт 7.5 секунд, в это время мне нужно обездвижить игрока что-бы он не смог убежать с поля боя, затем вернуть ему скорость передвижения.

Аборт каст, чарактер блок или аплайнуть скажем тот же Рейд Курс не ?

Wolfas 23.10.2011 01:39

Re: Задержка выполнения цыкла
 
Цитата:

Сообщение от Deazer (Сообщение 144745)
Аборт каст, чарактер блок или аплайнуть скажем тот же Рейд Курс не ?

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

if(player.moves){
каст
return;
}
но понятия не имею как это написать :(

ANZO 23.10.2011 01:43

Re: Задержка выполнения цыкла
 
Код:

protected ScheduledFuture<?> Task = null;
long interval = 7.5*1000;

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

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


Wolfas 23.10.2011 01:48

Re: Задержка выполнения цыкла
 
Цитата:

Сообщение от ANZO (Сообщение 144747)
Код:

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 секунды, или это равносильно обычному слипу?

ANZO 23.10.2011 02:39

Re: Задержка выполнения цыкла
 
Тогда делайте на ScheduledThreadPoolExecutor и ThreadPoolExecutor, которые собственно ладвашный ThreadPoolManager и юзает.

Добавлено через 2 часа 34 минуты
Не поленился в AionX залезть сорцы, там аналог ладвашного тредменнеджера обозвали RunnableStatsManager, как я понял.

Smiler 23.10.2011 09:18

Re: Задержка выполнения цыкла
 
че вы к ThreadPoolManager прицепились, от точно также слипит Триды ( разве есть другие методы сделать отложенный запуск ?).

если нужно слипить и при этом не подвешивать основной Thread игрока
делаем так:
Код:

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


hex1r0 23.10.2011 09:36

Re: Задержка выполнения цыкла
 
Цитата:

Сообщение от Wolfas (Сообщение 144739)
Функция нужна для игрового сервера.

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

Добавлено через 2 часа 46 минут
Цитата:

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

если нужно слипить и при этом не подвешивать основной Thread игрока
делаем так:
Код:

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


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

Код:

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


Aquanox 23.10.2011 12:49

Re: Задержка выполнения цыкла
 
http://download.oracle.com/javase/6/...nt.TimeUnit%29


Текущее время: 08:48. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot