Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Restart

  1. #1
    Аватар для untonyst
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    663
    Репутация:
    234 ±

    Restart

    Команда позволяет перезапустить ваш сервер любым удобным вам вариантом: в определенное время и немедленно! Вы можете установить авто-рестарт на определенный момент времени вплоть до секунд и можете изменить это время. Все данные сохраняются в файл '../scriptfilse/restart.ini'. Если вы забыли на какое время установлен авто-рестарт, то можете это узнать (не открывая файл '../scriptfilse/restart.ini' или можете там :3). Если вам понадобится отменить рестарт, то пожалуйста.

    Автор: Untonyst

     Открыть/закрыть
    PHP код:
    #include <dc_cmd>  
    #include <sscanf2>  
    #include <mxINI>  

    new 
        
    restart_hourrestart_minuterestart_second,  
        
    restart_timer;  

    const 
    DEFAULT_RESTART_HOUR 00DEFAULT_RESTART_MINUTE 00DEFAULT_RESTART_SECOND     00;  

    enum  
    {  
        
    DLG_RESTART_INPUT_OR_NOT 1,  
        
    DLG_RESTART_INPUT_INFO  
    };  

    COMMAND:restart(playeridparams[])  
    {  
        if(
    sscanf(params"i"params[0]))  
        {  
            
    SendClientMessage(playerid0xAAC5E3FF"{FFFFFF}Введите /restart <тип>");  
            
    SendClientMessage(playerid0xAAC5E3FF"{FFFACD}Типы{FFFFFF}:");  
            
    SendClientMessage(playerid0xAAC5E3FF"{FFFACD}| {FFFFFF}0 {FFFACD}- узнать время на рестарт");  
            
    SendClientMessage(playerid0xAAC5E3FF"{FFFACD}| {FFFFFF}1 {FFFACD}- установить новое время");  
            
    SendClientMessage(playerid0xAAC5E3FF"{FFFACD}| {FFFFFF}2 {FFFACD}- загрузить последние изменения");  
            
    SendClientMessage(playerid0xAAC5E3FF"{FFFACD}| {FFFFFF}3 {FFFACD}- перезапустить сервер сейчас");  
            
    SendClientMessage(playerid0xAAC5E3FF"{FFFACD}| {FFFFFF}4 {FFFACD}- отменить рестарт");  
            return 
    0;  
        }  
        switch(
    params[0])  
        {  
            case 
    0:  
            {  
                static const 
    format_message[] = "{FFFACD}Рестарт произойдет в {FFFFFF}%i:%i:%i {FFFACD}!";  
                new 
    send_message[sizeof(format_message) + (-6) + 1];    
                
    format(send_messagesizeof(send_message), format_messagerestart_hourrestart_minuterestart_second);  
                
    SendClientMessage(playerid0xAAC5E3FFsend_message);  
                return 
    1;  
            }  
            case 
    1:  
            {
                return 
    ShowPlayerDialog(playeridDLG_RESTART_INPUT_OR_NOTDIALOG_STYLE_MSGBOX"Установка времени на рестарт:""{FFFFFF}Вы действительно хотите обновить время на рестарт сервера?""Да""Нет");  
            }
            case 
    2:  
            {  
                if(!
    fexist("restart.ini"))  
                {  
                    
    SendClientMessage(playerid0xAAC5E3FF"{FF6347}Невозможно совершить выбранное действие!");  
                    return 
    0;  
                }            
                new 
    restart_file ini_openFile("restart.ini");  
                
    ini_getInteger(restart_file"hour"restart_hour);  
                
    ini_getInteger(restart_file"minute"restart_minute);  
                
    ini_getInteger(restart_file"second"restart_second);  
                
    ini_closeFile(restart_file);  
                
    restart_timer SetTimer("ServerRestart"500false);     
                
    SendClientMessage(playerid0xAAC5E3FF"{32CD32}Данные успешно загруженны!");  
                return 
    1;  
            }  
            case 
    3:  
            {  
                
    SendClientMessageToAll(0xAAC5E3FF"{FF6347}Происходит рестарт сервера!");  
                
    GameModeExit();  
                return 
    1;  
            }      
            case 
    4:  
            {  
                
    SendClientMessageToAll(0xAAC5E3FF"{FF6347}Рестарт был отменен!");  
                
    KillTimer(restart_timer);  
                return 
    1;  
            }  
            default: 
            {        
                
    SendClientMessageToAll(0xAAC5E3FF"{FF6347}Указан не верный тип рестарта!");  
            }
        }  
        return 
    1;  
    }  

    forward ServerRestart();  
    public 
    ServerRestart()  
    {  
        new 
    hourminutesecond;  
        
    gettime(hourminutesecond);   
        
        if(
    hour == restart_hour && minute == restart_minute && second == restart_second)  
        {  
            
    SendClientMessageToAll(0xAAC5E3FF"{FF6347}Происходит рестарт сервера!");  
            
    GameModeExit();  
            return 
    1;  
        }   
        
    restart_timer SetTimer("ServerRestart"500false);  
        return 
    1;  
    }  

    public 
    OnDialogResponse(playeriddialogidresponselistiteminputtext[])  
    {  

        switch(
    dialogid)  
        {  
            case 
    DLG_RESTART_INPUT_OR_NOT:  
            {  
                if(!
    response)  
                    return 
    0;  
                
    ShowPlayerDialog(playeridDLG_RESTART_INPUT_INFODIALOG_STYLE_INPUT"Установка времени на рестарт:""{FFFFFF}Введите время на рестарт, разделяя часы, минуты и секунды запятыми!""Ввести""Отмена");  
            }  
            case 
    DLG_RESTART_INPUT_INFO:  
            {  
                if(!
    response)  
                    return 
    0;  
                
                if(!
    strlen(inputtext))  
                    return 
    0;  

                if(
    strlen(inputtext) < && strlen(inputtext) > 6)  
                    return 
    0;  

                for(new 
    strlen(inputtext) - 1!= -1i--)  
                    if ((
    inputtext[i] >= '0' && inputtext[i] <= '9') ||
                        (
    inputtext[i] == ',')) continue;  
                    else  
                        return 
    0;  

                
    sscanf(inputtext"p<,>iii"restart_hourrestart_minuterestart_second);  

                if(!(
    <= restart_hour <= 23) || !(<= restart_minute <= 59) || !(<= restart_second <= 59))  
                    return 
    0;  

                new 
    restart_file ini_openFile("restart.ini");  
                  
    ini_setInteger(restart_file"hour"restart_hour);  
                
    ini_setInteger(restart_file"minute"restart_minute);  
                
    ini_setInteger(restart_file"second"restart_second);  
                
    ini_closeFile(restart_file);  
                  
                static const 
    format_message[] = "{FFFACD}Время на рестарт обновленно на %i:%i:%i";  
                new 
    send_message[sizeof(format_message) + (-6) + 1];  
                
    format(send_messagesizeof(send_message), format_messagerestart_hourrestart_minuterestart_second);  
                
    SendClientMessage(playerid0xAAC5E3FFsend_message);  
            }  
        }
        return 
    1;  



    Копирование данной темы без разрешения автора запрещено!
    Последний раз редактировалось untonyst; 08.02.2016 в 22:40. Причина: Просто переоформил
    Младший сержант Стяжкин | ЧСВ группа в ВКонтакте NEW

  2. Пользователь сказал cпасибо:
    Processing (23.01.2016)
  3. #2
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,441
    Репутация:
    261 ±
    А, где логика то? Осталась с теми пользователями (с которыми ты общаешься) на ПИ?
    В чем кайф проверить подключен ли sscanf? Ну а если он не подключен, то опять использовать функции sscanf...
    Да и кстати, isnull есть не только в sscanf, он есть и в MySQL (плагин от BlueG), DC_CMD, etc.
    Цитата Сообщение от Untonyst Посмотреть сообщение
    PHP код:
    #if !defined sscanf
        
    if(isnull(params))
            return 
    SendClientMessage(playerid, -1"Введите /restart [время(сек.)]");
    #else
        
    if(sscanf(params"i"params[0]))
            return 
    SendClientMessage(playerid, -1"Введите /restart [время(сек.)]");
    #endif 
    Почему нельзя объявить константу? Например:
      Открыть/закрыть

    PHP код:
    const MAX_RESTART_TIME 60;
    if(
    params[0] > MAX_RESTART_TIME)
    {
        
    SendClientMessage(playerid, -1"Вы отложили слишком много времени до рестарта!");
        
    SendClientMessage(playerid, -1"{FF6347}Максимальное отложенное время - это 60 секунд.");
        return 
    1;


    Цитата Сообщение от Untonyst Посмотреть сообщение
    PHP код:
    if(params[0] > 60)
    {
        
    SendClientMessage(playerid, -1"Вы отложили слишком много времени до рестарта!");
        
    SendClientMessage(playerid, -1"{FF6347}Максимальное отложенное время - это 60 секунд.");
        return 
    1;

    Для общей информации:
      Открыть/закрыть

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Дополнение к пункту 8. Символ "@" обязательно должен стоять вначале, а вот какие символы будут дальше - разницы нет (естественно, в пределах возможностей Pawn). То бишь, подобные функции можно отделять, например, так:
    PHP код:
    @__FuncName();
    @
    __FuncName() print("Прошла 1 секунда с момента запуска мода");
    public 
    OnGameModeInit()
    {
       
    SetTimer("@__FuncName"1000false);


    Цитата Сообщение от Untonyst Посмотреть сообщение
    PHP код:
    forward @__server_restart(time);
    public @
    __server_restart(time
    Полный фейл. Вернуть везде единицу.
    Магическое_число_(программирование)
    Цитата Сообщение от Untonyst Посмотреть сообщение
    PHP код:
    if((time 60) || (time <= -2))
        return 
    1
    Ну и так не по теме:
      Открыть/закрыть



    Цитата Сообщение от Untonyst Посмотреть сообщение
    PHP код:
    static const string[] = "~r~%i";
    new 
    format_string[sizeof(string)];
    format(format_stringsizeof(format_string), stringtime+1); 
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  4. #3
    Аватар для untonyst
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    663
    Репутация:
    234 ±

    • Цитата Сообщение от $continue$ Посмотреть сообщение
      А, где логика то? Осталась с теми пользователями (с которыми ты общаешься) на ПИ?
      В чем кайф проверить подключен ли sscanf? Ну а если он не подключен, то опять использовать функции sscanf...
      Да и кстати, isnull есть не только в sscanf, он есть и в MySQL (плагин от BlueG), DC_CMD, etc.
      Ты не понял как работаю условия?
      PHP код:
      #если sscanf НЕ подключен
          
      <используем возможности dc_cmd>
      #если подключен
          
      <используем возможности sscanf>
      #конец 
      Ты попробуй скомпилировать команду с sscanf и без него. Все скомпилируется без ошибок.

    • Цитата Сообщение от $continue$ Посмотреть сообщение
      Почему нельзя объявить константу? Например:
        Открыть/закрыть

      PHP код:
      const MAX_RESTART_TIME 60;
      if(
      params[0] > MAX_RESTART_TIME)
      {
          
      SendClientMessage(playerid, -1"Вы отложили слишком много времени до рестарта!");
          
      SendClientMessage(playerid, -1"{FF6347}Максимальное отложенное время - это 60 секунд.");
          return 
      1;

      А смысл в создании константы, которую мы будем использовать один раз -_-.

    • Цитата Сообщение от $continue$ Посмотреть сообщение
      Для общей информации:
        Открыть/закрыть

      // бла бла бла :D
      Если разницы нет, то в чем проблема?

    • Цитата Сообщение от $continue$ Посмотреть сообщение
      Полный фейл. Вернуть везде единицу.
      Магическое_число_(программирование)
      Ну даже не знаю, тут, скорее я соглашусь, но это не "полный фейл" ("ду ю спик инглиш ...")
    • А здесь я просто культурно промолчу ...
    Младший сержант Стяжкин | ЧСВ группа в ВКонтакте NEW

  5. #4
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,662
    Репутация:
    2145 ±
    1. Максимальное время рестарта можно вынести в макрос: #define в начале функции и #undef в конце.
    Тогда его можно будет использовать и в сообщении:
    PHP код:
    SendClientMessage(playerid, -1"Максимальное отложенное время - " #MAX_RESTART_TIME " секунд."); 
    Btw, для чего нужно было ставить "{FF6347}" в начало сообщение, когда можно было указать этот цвет вместо "-1"?

    2. Команда вообще тестировалась без sscanf2?
    PHP код:
    #if !defined sscanf
        
    if(isnull(params))
            return 
    SendClientMessage(playerid, -1"Введите /restart [время(сек.)]");
    #else 
    Проверка - это, конечно, хорошо, но где преобразование из строки в число?
    Да и вообще, зачем усложнять команду, когда sscanf2 уже используется во всех более-менее нормальных модах, в которых используются ZCMD или DC_CMD?

    3. Вот этот отрывок надолго заставил меня задуматься:
    PHP код:
    forward @__server_restart(time);
    public @
    __server_restart(time)

    Во-первых, в чём смысл задавать названию префикс "@__", когда она уже имеет атрибут public.
    Или наоборот, зачем ставить forward/public, когда уже есть "@__"? Либо одно, либо другое, определись уже.
    Во-вторых, что помешало назвать функцию в стиле CamelCase, как другие функции?
    В-третьих, вместо аргумента time прще было бы сделать глобальную переменную, разве что задав ей более сложное имя.
    Заодно, так будет проще обрабатывать ситуации, когда команда /restart вводилась несколько раз - в этом случае можно сделать вывод сообщение о том, что таймер уже запущен.

    4.
    PHP код:
            static const string[] = "~r~%i";
            new 
    format_string[sizeof(string)]; 
    Сразу видно, что принцип расчёта размера массива для форматируемой строки не осознан до конца.
    Подсчёт размера выполнен неправильно (твоё везение, что код будет работать, числа больше 99 отображались бы некорректно), названия массивов для форматной строки и форматного буфера перепутаны местами.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  6. #5
    Аватар для untonyst
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    663
    Репутация:
    234 ±
    • Если честно, то я не вижу смысла в этом. Да, это все хорошо, и для дальнейшей разработки идеально просто, но зачем? Планировать рестарт за более минуту - бред же.
    • В принципе да, сейчас использование sscanf своего рода обязанность.
      > убрал условие
    • Что ж вас так напрягает это место. Ладно, исправлю, но все равно оставлю в under_score.
      PS. надеюсь, вас не напрягают функции у pBlueG типа mysql_function_query
    • Не совсем :)
      PHP код:
      main()
      {
          
      #define EXAMPLE (228)
          
      static const string[] = "~r~%i";
          new 
      format_string[sizeof(string)+2];
          
      format(format_stringsizeof(format_string), stringEXAMPLE);
          print(
      format_string); // >.<

    Младший сержант Стяжкин | ЧСВ группа в ВКонтакте NEW

  7. #6
    Аватар для untonyst
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    663
    Репутация:
    234 ±
    Вроде, что что вы хотели, учел. Плюс решил добавить обратно вариант без sscanf, ну мало ли :)
    Младший сержант Стяжкин | ЧСВ группа в ВКонтакте NEW

  8. #7
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,662
    Репутация:
    2145 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Если честно, то я не вижу смысла в этом. Да, это все хорошо, и для дальнейшей разработки идеально просто, но зачем? Планировать рестарт за более минуту - бред же.
    Универсальность. Представь себя администратором на каком-нибудь сервере. В твои обязанности входит делать рестарт сервера каждый день в 0:00 по МСК. Но после трудного дня ты устал и очень хочешь спать. Сейчас 23:30 и ты мог бы поставить таймер рестарта на 30 минут (1800 секунд) - НО ТЫ НЕ МОЖЕШЬ, потому что автор команды посчитал, что никому не пригодится ставить таймер больше, чем на 1 минуту.


    Цитата Сообщение от Untonyst Посмотреть сообщение
    Что ж вас так напрягает это место.
    Использовать "@" в названии функции, которая уже объявлена, как public - это как масло масляное.
    Не то, чтобы я собираюсь пользоваться этим кодом (скажу даже больше, я уже давно не работаю ни над какими серьёзными проектами на Pawn), но мне не всё равно, что постят на Pro-Pawn.


    Цитата Сообщение от Untonyst Посмотреть сообщение
    PS. надеюсь, вас не напрягают функции у pBlueG типа mysql_function_query
    Исключение только подтверждает наличие правила. Функции MySQL (и SQLite в стандартной поставке сервера) названы в нижнем регистре только потому, что они названы так в оригинальном коде на C/C++.
    Само же правило строится на том, в каком стиле названо большинство функций в SA:MP - а они названы в стиле CamelCase. Именно поэтому я выбрал тот стиль в своей статье с рекомендациями.


    Цитата Сообщение от Untonyst Посмотреть сообщение
    PHP код:
    main()
    {
        
    #define EXAMPLE (228)
        
    static const string[] = "~r~%i";
        new 
    format_string[sizeof(string)+2];
        
    format(format_stringsizeof(format_string), stringEXAMPLE);
        print(
    format_string); // >.<

    Назначение названий string и format_string всё ещё перепутано.
    Откуда взята формула "sizeof(string)+2"?
    И да, макрос EXAMPLE так и продолжит работать за пределами функции.


    Цитата Сообщение от Untonyst Посмотреть сообщение
    Вроде, что что вы хотели, учел. Плюс решил добавить обратно вариант без sscanf, ну мало ли :)
    Только нагромождение излишним функционалом. Мало того, команда никак не отреагирует, если игрок вместо числа введёт какой-нибудь текст (strval вернёт 0).
    Кстати, чуть не забыл, отрицательное число тоже логично было бы считать, как неправильный аргумент (для немедленного рестарта можно ввести 0).
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  9. #8
    Аватар для untonyst
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    663
    Репутация:
    234 ±
    • Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
      Универсальность. Представь себя администратором на каком-нибудь сервере. В твои обязанности входит делать рестарт сервера каждый день в 0:00 по МСК. Но после трудного дня ты устал и очень хочешь спать. Сейчас 23:30 и ты мог бы поставить таймер рестарта на 30 минут (1800 секунд) - НО ТЫ НЕ МОЖЕШЬ, потому что автор команды посчитал, что никому не пригодится ставить таймер больше, чем на 1 минуту.
      Для подобный плановых случаев на сервере должен быть авторестарт. Моя же команда - установка не планового рестарта.
    • Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
      Использовать "@" в названии функции, которая уже объявлена, как public - это как масло масляное.
      Не то, чтобы я собираюсь пользоваться этим кодом (скажу даже больше, я уже давно не работаю ни над какими серьёзными проектами на Pawn), но мне не всё равно, что постят на Pro-Pawn.
      Лучше напихаю во всем моде кучу констант, которые я буду использовать один раз, ЗАТО ПОНЯТНО ЖЕ ВСЕ!
       )00))
    • Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
      Исключение только подтверждает наличие правила. Функции MySQL (и SQLite в стандартной поставке сервера) названы в нижнем регистре только потому, что они названы так в оригинальном коде на C/C++.
      Ладно, твой стандарт есть стандарт, стандарт как никак (правда, который был принят тобой, а ты дискриминировал стандарт вики с CamelCase и стараешься всем приманить under_core в плане названия переменных ). Но все же, это не так уж затруднит понимание код следующим программистом.
    • Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
      Назначение названий string и format_string всё ещё перепутано.
      Откуда взята формула "sizeof(string)+2"?
      И да, макрос EXAMPLE так и продолжит работать за пределами функции.
      Это просто как вариант, того что, добавив две ячейки три цифры пройдут.
    • Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
      Только нагромождение излишним функционалом. Мало того, команда никак не отреагирует, если игрок вместо числа введёт какой-нибудь текст (strval вернёт 0).
      Кстати, чуть не забыл, отрицательное число тоже логично было бы считать, как неправильный аргумент (для немедленного рестарта можно ввести 0).
      Как никак моментальный рестарт тоже нужен, мало ли что может случиться. Если время на 0, то игрокам оповещение о рестарте все равно придет, так как я указал его появление при -1. А ввод отрицательных чисел надо исправить.
    Младший сержант Стяжкин | ЧСВ группа в ВКонтакте NEW

  10. #9
    Аватар для Daniel_Cortez
    new fuck_logic[0] = EOS;

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    1,662
    Репутация:
    2145 ±
    Цитата Сообщение от Untonyst Посмотреть сообщение
    Для подобный плановых случаев на сервере должен быть авторестарт. Моя же команда - установка не планового рестарта.
    Кроме этого могут быть другие случаи. Например, гл. админ залил мод на хостинг и поручил своему заму предупредить всех игроков и сделать рестарт через полчаса. Такие примеры можно придумывать до бесконечности.


    Цитата Сообщение от Untonyst Посмотреть сообщение
    Лучше напихаю во всем моде кучу констант, которые я буду использовать один раз, ЗАТО ПОНЯТНО ЖЕ ВСЕ!
     )00))
    Не совсем пойму, о чём ты. Равно, как и о сути картинки.


    Цитата Сообщение от Untonyst Посмотреть сообщение
    Это просто как вариант, того что, добавив две ячейки три цифры пройдут.
    Логики в расчёте всё равно не видно. По идее сначала должно быть отнятие длины спецификатора ("%d" - 2 символа), а затем добавление длины форматируемого числа (в данном случае 2-3, но для простоты настройки можно добавить 11, на случай, если максимальное время рестарта будет установлено в cellmax - вряд ли будет что-то плохое от 8 ячеек).


    Цитата Сообщение от Untonyst Посмотреть сообщение
    Как никак моментальный рестарт тоже нужен, мало ли что может случиться. Если время на 0, то игрокам оповещение о рестарте все равно придет, так как я указал его появление при -1. А ввод отрицательных чисел надо исправить.
    Именно об этом и была речь.


    Цитата Сообщение от Untonyst Посмотреть сообщение
    Ладно, твой стандарт есть стандарт, стандарт как никак (правда, который был принят тобой, а ты дискриминировал стандарт вики с CamelCase и стараешься всем приманить under_core в плане названия переменных ).
    Ты так говоришь, как будто в этом есть что-то плохое.
    Идентификаторы в стиле lowerCamelCase легче перепутать с названиями функций в UpperCamelCase. К тому же, во многих других языках принято записывать в lowerCamelCase именно названия функций, что только усиливает путаницу при освоении этих языков после Pawn.
    Поэтому вполне логично использовать стиль snake_case для обозначения переменных, ведь так их сложнее спутать с функциями при беглом просмотре кода. Ну уж всяко лучше, чем заставлять задерживаться (пусть и на очень короткое время) на каждой строке.
    Это во-первых.

    Во-вторых, в SA:MP wiki нет и никогда не было оговорено никакого единого стандарта. Более того, этот факт уже обсуждался между нами ранее.

    В-третьих, не я придумывал все те правила из стандарта (моей инициативой были только названия переменных - и я уже объяснил почему).
    Почти все правила были взяты либо из стиля кодинга в стандартных инклудах SA:MP (константы и "константоподобные" макросы - в ALL_CAPS, функции - в UpperCamelCase, etc.), либо из других популярных стандартов по C/C++.
    И да, мне приходится требовать их соблюдения со стороны тех, кто выкладывает здесь работы. В конце концов, если использовать в своём моде сразу несколько чужих работ из паблика, то может выйти такая ситуация, когда в одной работе функции названы в стиле snake_case, а в другой - в UpperCamelCase, в одной переменные названы в lowerCamelCase, в другой - в lowercase (без разделяющих подчёркиваний). Это будет всё равно, что собирать Франкенштейна из совершенно разных кусков плоти.
    Поэтому самовыражение самовыражением, но допустить беспорядка в выкладываемых на p-p работах я не могу.


    Цитата Сообщение от Untonyst Посмотреть сообщение
    Но все же, это не так уж затруднит понимание код следующим программистом.
    Наоборот, можно даже упростить понимание кода, если читатель привык видеть все работы на портале выполненными в одном стиле.
    Собственно, это ещё одна причина, по которой составлялся стандарт.
    Индивидуально в PM и Skype по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
    SA-MP 0.4 is a lie

  11. Пользователь сказал cпасибо:
    untonyst (14.11.2015)
  12. #10
    Аватар для untonyst
    Младший сержант

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    663
    Репутация:
    234 ±
    Daniel_Cortez, здесь и нет ничего плохого, просто на вики встречаются большинство примеров с UpperCamelCase, собственно поэтому я и написал то что написал))
    PS. исправил
    Младший сержант Стяжкин | ЧСВ группа в ВКонтакте NEW

 

 
Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

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

Ваши права

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