HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 23.09.2015, 16:28
GenCloud
Постоянный
Регистрация: 13.04.2015
Сообщений: 454
С нами: 5834308

Репутация: 2128
По умолчанию

Код:


Код:
/**
*
* @author Visor123
* L2Emu Enterprise Server
*/
public class L2ManagementEventGroupEngine extends L2EventGroupEngine
{
    public L2ManagementEventGroupEngine(String name, String command)
    {
        super(name, command);
    }
 
    @Override
    public boolean useAdminCommand(L2PcInstance player, String command)
    {
        if (Config.ENT_TESTEVENTS)
            _log.info("L2ManagementEventGroupEngine "+getName()+" useAdminCommand player="+player.getName()+" command="+command);
     
        if (command.equalsIgnoreCase(getCommand()))
        {
            showMainPage(player);
        }
        else if (command.startsWith(getCommand()+"_show")
                || command.startsWith(getCommand()+"_status")
                || command.startsWith(getCommand()+"_edit")
                || command.startsWith(getCommand()+"_save")
                || command.startsWith(getCommand()+"_load")
                || command.startsWith(getCommand()+"_schedule")
                || command.startsWith(getCommand()+"_totaliser")
             
                || command.startsWith(getCommand()+"_join")
                || command.startsWith(getCommand()+"_start")
                || command.startsWith(getCommand()+"_teleport")
                || command.startsWith(getCommand()+"_abort")
                || command.startsWith(getCommand()+"_finish")
             
                || command.startsWith(getCommand()+"_auto")
                || command.startsWith(getCommand()+"_sit")
                || command.startsWith(getCommand()+"_stand")
                || command.startsWith(getCommand()+"_kick")
                )
        {
            String eventName = command.substring(getCommand().length()+6);
            if (command.startsWith(getCommand()+"_schedule")
                    || command.startsWith(getCommand()+"_teleport"))
                eventName = command.substring(getCommand().length()+10);
            else if (command.startsWith(getCommand()+"_finish") || command.startsWith(getCommand()+"_status"))
                    eventName = command.substring(getCommand().length()+8);
            else if (command.startsWith(getCommand()+"_start")
                    || command.startsWith(getCommand()+"_abort")
                    || command.startsWith(getCommand()+"_stand"))
                eventName = command.substring(getCommand().length()+7);
            else if (command.startsWith(getCommand()+"_sit"))
                eventName = command.substring(getCommand().length()+5);
            else if (command.startsWith(getCommand()+"_totaliser"))
                eventName = command.substring(getCommand().length()+11);
                 
            try
            {
                String[] params = eventName.split(" ");
                if (Config.ENT_TESTEVENTS)
                    _log.info("L2ManagementEventEngine "+getName()+" show/edit... eventName="+params[0]+" params.length="+params.length);
                if (_eventInstances.containsKey(params[0]))
                    _eventInstances.get(params[0]).useAdminCommand(player, command, params);
                else
                {
                    player.sendMessage("Event instance with name="+params[0]+" not found");
                    showMainPage(player);
                }
                 
                return true;
            }
            catch (Exception e) {
                _log.warn(e.getMessage());
            }
        }
        else if (command.startsWith(getCommand()+"_del"))
        {
            try
            {
                String eventName = command.substring(getCommand().length()+5);
                String[] params = eventName.split(" ");
                if (Config.ENT_TESTEVENTS)
                    _log.info(getName()+" eventName="+params[0]+" params.length="+params.length);
                if (_eventInstances.containsKey(params[0]) && params.length > 1 && params[1].equalsIgnoreCase("y"))
                {
                    L2EventGroupEngineInstance event = _eventInstances.remove(params[0]);
                    event.deleteData();
                    saveData();
                    player.sendMessage(getName()+" data saved to DB");
                }
                else if (params.length  0 && !eventName.contains(" ") && eventName.length()  16)
                    player.sendMessage("Name event need have 1-16 characters");
             
                showMainPage(player);
            }
            catch (Exception e) {
                _log.warn(e.getMessage());
            }
        }
        return super.useAdminCommand(player, command);
    }
 
    protected void showMainPage(L2PcInstance player)
    {
        NpcHtmlMessage adminReply = new NpcHtmlMessage(5);

        TextBuilder replyMSG = new TextBuilder(""+getName()+"");

        replyMSG.append("[ "+getName()+" ]"
                +""
                +"");
        replyMSG.append("
Engine instances");
        replyMSG.append("");
        for (L2EventGroupEngineInstance event : _eventInstances.values())
        {
            replyMSG.append(""+event.getName()+""
                +""
                +""
                +""
                );
        }
        replyMSG.append("");
        replyMSG.append("");
        replyMSG.append("");
        replyMSG.append("");
        replyMSG.append("");

        adminReply.setHtml(replyMSG.toString());
        player.sendPacket(adminReply);
        // Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
        player.sendPacket(ActionFailed.STATIC_PACKET);
    }
}
С точки зрения ява-машины - ничего страшного, но нужно было оставить вторую проверку - выполнение кода не пошло бы хоть так, хоть эдак, никаких потерь по времени

Но с точки зрения написания - ***ец

Чет герычем попахивает, мдам.......

command.substring(getCommand().length()+5); еще меня особенно умиляет)

Берем строку, режем ее, вычленяем остаток - вуаля, команда!
 
Ответить с цитированием

  #2  
Старый 23.09.2015, 16:40
WoWan-SM
Участник форума
Регистрация: 15.09.2015
Сообщений: 119
С нами: 5610336

Репутация: 766
По умолчанию

Я тут, конечно, недавно, но почему на форуме нет раздела куда будут выкладывать говнокоды?

P.S. Скорее всего писал он на Java 6, где не было поддержки switch(String), которая появилась только в Java 7. Но даже так мне не понятно зачем везде вызываются getCommand и почему нельзя было красиво оформить код с использованием enum
 
Ответить с цитированием

  #3  
Старый 23.09.2015, 16:41
GenCloud
Постоянный
Регистрация: 13.04.2015
Сообщений: 454
С нами: 5834308

Репутация: 2128
По умолчанию

Цитата:
Сообщение от WoWan-SM  

Я тут, конечно, недавно, но почему на форуме нет раздела куда будут выкладывать говнокоды?

P.S. Скорее всего писал он на Java 6, где не было поддержки switch(String), которая появилась только в Java 7. Но даже так мне не понятно зачем везде вызываются getCommand и почему нельзя было красиво оформить код с использованием enum
А по вашему это в каком разделе?
 
Ответить с цитированием

  #4  
Старый 23.09.2015, 16:43
L2CCCP
Постоянный
Регистрация: 07.07.2015
Сообщений: 486
С нами: 5710893

Репутация: 0
По умолчанию

Цитата:
Сообщение от WoWan-SM  

Я тут, конечно, недавно, но почему на форуме нет раздела куда будут выкладывать говнокоды?
 
Ответить с цитированием

  #5  
Старый 23.09.2015, 18:04
Mifesto
Постоянный
Регистрация: 22.09.2015
Сообщений: 427
С нами: 5600182

Репутация: 0
По умолчанию

Цитата:
Сообщение от WoWan-SM  

P.S. Но даже так мне не понятно зачем везде вызываются getCommand и почему нельзя было красиво оформить код с использованием enum
Потому что это команды для ивентов(если я не ошибаюсь), а у каждого ивента может быть своя команда.

П.С. Единственное что напрягает, это куча обрезания строк... Нельзя в начале обработки разделить строку по первому пробелу, и вышло бы 1 часть - команда, 2 часть - аргументы?
 
Ответить с цитированием

  #6  
Старый 23.09.2015, 19:55
WoWan-SM
Участник форума
Регистрация: 15.09.2015
Сообщений: 119
С нами: 5610336

Репутация: 766
По умолчанию

Цитата:
Сообщение от Mifesto  

Потому что это команды для ивентов(если я не ошибаюсь), а у каждого ивента может быть своя команда.

П.С. Единственное что напрягает, это куча обрезания строк... Нельзя в начале обработки разделить строку по первому пробелу, и вышло бы 1 часть - команда, 2 часть - аргументы?
И что? Почему сразу переменную не объявить?

Со вторым пунктом согласен. С использованием StringTokenizer было бы лучше переписать.
 
Ответить с цитированием

  #7  
Старый 23.09.2015, 23:15
Visor123
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами: 5732336

Репутация: 0


По умолчанию

Цитата:
Сообщение от WoWan-SM  

Я тут, конечно, недавно, но почему на форуме нет раздела куда будут выкладывать говнокоды?

P.S. Скорее всего писал он на Java 6, где не было поддержки switch(String), которая появилась только в Java 7. Но даже так мне не понятно зачем везде вызываются getCommand и почему нельзя было красиво оформить код с использованием enum
Команда генерится по имени типа эвента, и да писалось это достаточно давно. Еще один момент - компилятор для java классов, я оставил как и был, компилит на старте java (основа не овер, а l2emu project формата 2007 года) работает быстро под 1.6, когда уже 1.7 грузит чуть ли не в 5 раз дольше (хотел обновить как-то). Поэтому и синтаксис я оставил под 1.6.

Код может и кажется несколько "тяжелым", но он прост, понятен и достаточно надежен.

ТС (агрессивный и тупой) критически не понял, что он видит и почему так - и вылез кинуть это в говнокод, но по факту не все так как кажется. Просто в его голове не укладывается, что можно писать в таком ООП-стиле.
 
Ответить с цитированием

  #8  
Старый 23.09.2015, 16:50
Influence
Постоянный
Регистрация: 14.06.2015
Сообщений: 910
С нами: 5744218

Репутация: 1488


По умолчанию

 
Ответить с цитированием

  #9  
Старый 23.09.2015, 21:08
Visor123
Постоянный
Регистрация: 22.06.2015
Сообщений: 766
С нами: 5732336

Репутация: 0


По умолчанию

Цитата:
Сообщение от GenCloud  

Код:


Код:
/**
*
* @author Visor123
* L2Emu Enterprise Server
*/
public class L2ManagementEventGroupEngine extends L2EventGroupEngine
{
    public L2ManagementEventGroupEngine(String name, String command)
    {
        super(name, command);
    }

    @Override
    public boolean useAdminCommand(L2PcInstance player, String command)
    {
        if (Config.ENT_TESTEVENTS)
            _log.info("L2ManagementEventGroupEngine "+getName()+" useAdminCommand player="+player.getName()+" command="+command);
  
        if (command.equalsIgnoreCase(getCommand()))
        {
            showMainPage(player);
        }
        else if (command.startsWith(getCommand()+"_show")
                || command.startsWith(getCommand()+"_status")
                || command.startsWith(getCommand()+"_edit")
                || command.startsWith(getCommand()+"_save")
                || command.startsWith(getCommand()+"_load")
                || command.startsWith(getCommand()+"_schedule")
                || command.startsWith(getCommand()+"_totaliser")
          
                || command.startsWith(getCommand()+"_join")
                || command.startsWith(getCommand()+"_start")
                || command.startsWith(getCommand()+"_teleport")
                || command.startsWith(getCommand()+"_abort")
                || command.startsWith(getCommand()+"_finish")
          
                || command.startsWith(getCommand()+"_auto")
                || command.startsWith(getCommand()+"_sit")
                || command.startsWith(getCommand()+"_stand")
                || command.startsWith(getCommand()+"_kick")
                )
        {
            String eventName = command.substring(getCommand().length()+6);
            if (command.startsWith(getCommand()+"_schedule")
                    || command.startsWith(getCommand()+"_teleport"))
                eventName = command.substring(getCommand().length()+10);
            else if (command.startsWith(getCommand()+"_finish") || command.startsWith(getCommand()+"_status"))
                    eventName = command.substring(getCommand().length()+8);
            else if (command.startsWith(getCommand()+"_start")
                    || command.startsWith(getCommand()+"_abort")
                    || command.startsWith(getCommand()+"_stand"))
                eventName = command.substring(getCommand().length()+7);
            else if (command.startsWith(getCommand()+"_sit"))
                eventName = command.substring(getCommand().length()+5);
            else if (command.startsWith(getCommand()+"_totaliser"))
                eventName = command.substring(getCommand().length()+11);
              
            try
            {
                String[] params = eventName.split(" ");
                if (Config.ENT_TESTEVENTS)
                    _log.info("L2ManagementEventEngine "+getName()+" show/edit... eventName="+params[0]+" params.length="+params.length);
                if (_eventInstances.containsKey(params[0]))
                    _eventInstances.get(params[0]).useAdminCommand(player, command, params);
                else
                {
                    player.sendMessage("Event instance with name="+params[0]+" not found");
                    showMainPage(player);
                }
              
                return true;
            }
            catch (Exception e) {
                _log.warn(e.getMessage());
            }
        }
        else if (command.startsWith(getCommand()+"_del"))
        {
            try
            {
                String eventName = command.substring(getCommand().length()+5);
                String[] params = eventName.split(" ");
                if (Config.ENT_TESTEVENTS)
                    _log.info(getName()+" eventName="+params[0]+" params.length="+params.length);
                if (_eventInstances.containsKey(params[0]) && params.length > 1 && params[1].equalsIgnoreCase("y"))
                {
                    L2EventGroupEngineInstance event = _eventInstances.remove(params[0]);
                    event.deleteData();
                    saveData();
                    player.sendMessage(getName()+" data saved to DB");
                }
                else if (params.length  0 && !eventName.contains(" ") && eventName.length()  16)
                    player.sendMessage("Name event need have 1-16 characters");
          
                showMainPage(player);
            }
            catch (Exception e) {
                _log.warn(e.getMessage());
            }
        }
        return super.useAdminCommand(player, command);
    }

    protected void showMainPage(L2PcInstance player)
    {
        NpcHtmlMessage adminReply = new NpcHtmlMessage(5);

        TextBuilder replyMSG = new TextBuilder(""+getName()+"");

        replyMSG.append("[ "+getName()+" ]"
                +""
                +"");
        replyMSG.append("
Engine instances");
        replyMSG.append("");
        for (L2EventGroupEngineInstance event : _eventInstances.values())
        {
            replyMSG.append(""+event.getName()+""
                +""
                +""
                +""
                );
        }
        replyMSG.append("");
        replyMSG.append("");
        replyMSG.append("");
        replyMSG.append("");
        replyMSG.append("");

        adminReply.setHtml(replyMSG.toString());
        player.sendPacket(adminReply);
        // Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
        player.sendPacket(ActionFailed.STATIC_PACKET);
    }
}
С точки зрения ява-машины - ничего страшного, но нужно было оставить вторую проверку - выполнение кода не пошло бы хоть так, хоть эдак, никаких потерь по времени
Но с точки зрения написания - ***ец
Чет герычем попахивает, мдам.......

command.substring(getCommand().length()+5); еще меня особенно умиляет)
Берем строку, режем ее, вычленяем остаток - вуаля, команда!
Начнем с того, что ты кроме маршалинга тут, я так понимаю, ничего не понял?

Второй интересный вопрос, а ты вообще что-то написал, или ты воздух сам знаешь из чьей попы в попытке создать пук?

Когда ты ответишь на эти простые вопросы, то станет понятно и к чему этот цирк. И тогда мы поищем что там за говно ты написал, а то что оно у тебя говно - так не сомневайся, показывай свой код - мы поржем.

Цитата:
Сообщение от GenCloud  

Код:


Код:
/**
*
* @author Visor123
* L2Emu Enterprise Server
*/
public class L2ManagementEventGroupEngine extends L2EventGroupEngine
{
    public L2ManagementEventGroupEngine(String name, String command)
    {
        super(name, command);
    }

    @Override
    public boolean useAdminCommand(L2PcInstance player, String command)
    {
        if (Config.ENT_TESTEVENTS)
            _log.info("L2ManagementEventGroupEngine "+getName()+" useAdminCommand player="+player.getName()+" command="+command);
 
        if (command.equalsIgnoreCase(getCommand()))
        {
            showMainPage(player);
        }
        else if (command.startsWith(getCommand()+"_show")
                || command.startsWith(getCommand()+"_status")
                || command.startsWith(getCommand()+"_edit")
                || command.startsWith(getCommand()+"_save")
                || command.startsWith(getCommand()+"_load")
                || command.startsWith(getCommand()+"_schedule")
                || command.startsWith(getCommand()+"_totaliser")
         
                || command.startsWith(getCommand()+"_join")
                || command.startsWith(getCommand()+"_start")
                || command.startsWith(getCommand()+"_teleport")
                || command.startsWith(getCommand()+"_abort")
                || command.startsWith(getCommand()+"_finish")
         
                || command.startsWith(getCommand()+"_auto")
                || command.startsWith(getCommand()+"_sit")
                || command.startsWith(getCommand()+"_stand")
                || command.startsWith(getCommand()+"_kick")
                )
        {
            String eventName = command.substring(getCommand().length()+6);
            if (command.startsWith(getCommand()+"_schedule")
                    || command.startsWith(getCommand()+"_teleport"))
                eventName = command.substring(getCommand().length()+10);
            else if (command.startsWith(getCommand()+"_finish") || command.startsWith(getCommand()+"_status"))
                    eventName = command.substring(getCommand().length()+8);
            else if (command.startsWith(getCommand()+"_start")
                    || command.startsWith(getCommand()+"_abort")
                    || command.startsWith(getCommand()+"_stand"))
                eventName = command.substring(getCommand().length()+7);
            else if (command.startsWith(getCommand()+"_sit"))
                eventName = command.substring(getCommand().length()+5);
            else if (command.startsWith(getCommand()+"_totaliser"))
                eventName = command.substring(getCommand().length()+11);
             
            try
            {
                String[] params = eventName.split(" ");
                if (Config.ENT_TESTEVENTS)
                    _log.info("L2ManagementEventEngine "+getName()+" show/edit... eventName="+params[0]+" params.length="+params.length);
                if (_eventInstances.containsKey(params[0]))
                    _eventInstances.get(params[0]).useAdminCommand(player, command, params);
                else
                {
                    player.sendMessage("Event instance with name="+params[0]+" not found");
                    showMainPage(player);
                }
             
                return true;
            }
            catch (Exception e) {
                _log.warn(e.getMessage());
            }
        }
        else if (command.startsWith(getCommand()+"_del"))
        {
            try
            {
                String eventName = command.substring(getCommand().length()+5);
                String[] params = eventName.split(" ");
                if (Config.ENT_TESTEVENTS)
                    _log.info(getName()+" eventName="+params[0]+" params.length="+params.length);
                if (_eventInstances.containsKey(params[0]) && params.length > 1 && params[1].equalsIgnoreCase("y"))
                {
                    L2EventGroupEngineInstance event = _eventInstances.remove(params[0]);
                    event.deleteData();
                    saveData();
                    player.sendMessage(getName()+" data saved to DB");
                }
                else if (params.length  0 && !eventName.contains(" ") && eventName.length()  16)
                    player.sendMessage("Name event need have 1-16 characters");
         
                showMainPage(player);
            }
            catch (Exception e) {
                _log.warn(e.getMessage());
            }
        }
        return super.useAdminCommand(player, command);
    }

    protected void showMainPage(L2PcInstance player)
    {
        NpcHtmlMessage adminReply = new NpcHtmlMessage(5);

        TextBuilder replyMSG = new TextBuilder(""+getName()+"");

        replyMSG.append("[ "+getName()+" ]"
                +""
                +"");
        replyMSG.append("
Engine instances");
        replyMSG.append("");
        for (L2EventGroupEngineInstance event : _eventInstances.values())
        {
            replyMSG.append(""+event.getName()+""
                +""
                +""
                +""
                );
        }
        replyMSG.append("");
        replyMSG.append("");
        replyMSG.append("");
        replyMSG.append("");
        replyMSG.append("");

        adminReply.setHtml(replyMSG.toString());
        player.sendPacket(adminReply);
        // Send a Server->Client ActionFailed to the L2PcInstance in order to avoid that the client wait another packet
        player.sendPacket(ActionFailed.STATIC_PACKET);
    }
}
С точки зрения ява-машины - ничего страшного, но нужно было оставить вторую проверку - выполнение кода не пошло бы хоть так, хоть эдак, никаких потерь по времени
Но с точки зрения написания - ***ец
Чет герычем попахивает, мдам.......

command.substring(getCommand().length()+5); еще меня особенно умиляет)
Берем строку, режем ее, вычленяем остаток - вуаля, команда!
Я смотрю, ты ссыкнул показать свой говнокод. Вывод очевиден - человек ты воздух из попы единорога.

Вопросы? Видимо нет. Нет кода - нет вопросов.

Человек, ты обосрался, сочувствую.

Цитата:
Сообщение от Mifesto  

Потому что это команды для ивентов(если я не ошибаюсь), а у каждого ивента может быть своя команда.

П.С. Единственное что напрягает, это куча обрезания строк... Нельзя в начале обработки разделить строку по первому пробелу, и вышло бы 1 часть - команда, 2 часть - аргументы?
Для оптимизации можно было бы ровнять строки, переделывать в енумы наборы команд - но это ничего не изменит в общем времени нагрузки процессора или работе сервера, но зато заберет мое время. Такое обычно поручают какому-то глуповатому программеру - чтобы при деле был. Поскольку все обычно хватают шары чьих-то команд и если там переписано что-то, кичатся этим, так было с фениксом, овером и лоствордом. Но чья это была заслуга? ТС? Нет конечно, и ни одного из бздо-писателей.

Я не посчитал нужным тратить время на реструктуризации кода и вывод маршалинга некритичных к времени секций. Ничего в этом нет страшного, зато я потратил время на то, что исправил Javolution - а никто этого сделать не смог почему-то, это же так просто.

У всех "просто" разное, кто-то ровняет маршалинг, а кто-то вообще ничего, зато трындит.

Причем ТС настолько тупой, что даже не понял для чего этот класс нужен. И используется ли он вообще в игре.
 
Ответить с цитированием

  #10  
Старый 23.09.2015, 21:25
GenCloud
Постоянный
Регистрация: 13.04.2015
Сообщений: 454
С нами: 5834308

Репутация: 2128
По умолчанию

Цитата:
Сообщение от Visor123  

Начнем с того, что ты кроме маршалинга тут, я так понимаю, ничего не понял?
Второй интересный вопрос, а ты вообще что-то написал, или ты воздух сам знаешь из чьей попы в попытке создать пук?
Когда ты ответишь на эти простые вопросы, то станет понятно и к чему этот цирк. И тогда мы поищем что там за говно ты написал, а то что оно у тебя говно - так не сомневайся, показывай свой код - мы поржем.
1) Я не сторонник расшариваний своих наработок.

2) Может это ты все через жопу вывернул ммм? Чекаем команды: проверка "или" на все команды команд -> следующая такая же проверка команду, лол, пздц, я ору.

Сплит по пробелу, [0] - наша команда... самое клевое дальше ты делает этот сплит по пробелу что бы получить параметры String[] params = eventName.split(" ");

А свое пуканобомбение могешь засунуть себе в очко.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.