Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 109 из 133 ПерваяПервая ... 9 59 99 107 108 109 110 111 119 ... ПоследняяПоследняя
Показано с 1,081 по 1,090 из 1325
  1. #1081
    Аватар для Elrmrnt-Kritik
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.11.2017
    Сообщений
    136
    Репутация:
    10 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Это не функции, а операторы
    Мне интересна работа и функций)) Была. В частности, strlen, о которой уже узнал месяц назад случайно. В общем, принцип работы того же switch досконально найти не получится?
    Последний раз редактировалось Elrmrnt-Kritik; 29.05.2018 в 23:54.

  2. #1082
    Аватар для VVWVV
    ?

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    Цитата Сообщение от Elrmrnt-Kritik Посмотреть сообщение
    Мне интересна работа и функций)) Была. В частности, strlen, о которой уже узнал месяц назад случайно.
    Они, как и операторы, переводятся из исходного кода в байт-код. Тем не менее, под каждую функцию уходит stack frame, который позволяет передавать и хранить переменные внутри функции, в пределах одного блока (скобок { и }).

  3. Пользователь сказал cпасибо:
    Elrmrnt-Kritik (30.05.2018)
  4. #1083
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от Elrmrnt-Kritik Посмотреть сообщение
    Мне интересна работа и функций)) Была. В частности, strlen, о которой уже узнал месяц назад случайно.
    А что в ней непонятного? Функция просто берёт массив, ищет в нём первое попавшееся нулевое значение (оно же символ завершения строки '\0') и возвращает индекс, по которому нашла это значение - это и будет длина строки. Например, строку "abc" в виде массива можно представить как { 'a', 'b', 'c', '\0' } - strlen() найдёт '\0' на 3-й позиции, что будет означать, что в строке 3 символа.

    Цитата Сообщение от Elrmrnt-Kritik Посмотреть сообщение
    В общем, принцип работы того же switch досконально найти не получится?
    Это подробно объяснено в Pawn Implementer's Guide. Если вкратце, то компилятор генерирует для switch таблицу записей типа "значение - адрес перехода". Интерпретатор берёт значение, переданное в switch, и сравнивает его со значениями из таблицы, если находит - переходит по соответствующему адресу и выполняет код из соответствующего case, не находит - переходит на адрес, соответствующий метке default:, либо просто выходит из switch, если той метки нет.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  5. Пользователь сказал cпасибо:
    Elrmrnt-Kritik (30.05.2018)
  6. #1084
    Аватар для Sambook
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.08.2017
    Сообщений
    4
    Репутация:
    0 ±
    INVALID_PLAYER_ID сработает, если проверять на нике или эта проверка подходит только к id?

  7. #1085
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Sambook Посмотреть сообщение
    INVALID_PLAYER_ID сработает, если проверять на нике или эта проверка подходит только к id?
    Эмм, INVALID_PLAYER_ID - это не проверка, а макрос, который содержит значение 65535. Само по себе это значение не означает ровным счётом ничего, но ряд функций, взаимодействующих с игроком, возвращают это значение, когда тот самый игрок не найден. Именно поэтому результат ряда функций и сравнивается с этим значением (не потому что макрос называется "INVALID_PLAYER_ID" и это наделяет макрос какими-то особыми свойствами, а потому что в самих функциях прописан возврат определённого значения, которое сделали во всех функциях идентичным и потом обозначили как макрос). Это во-первых.

    Во-вторых, сформулируй конкретнее свой вопрос. Что ты подразумеваешь под фразой "проверять на нике"?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  8. Пользователь сказал cпасибо:
    Sambook (31.05.2018)
  9. #1086
    Аватар для Sambook
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.08.2017
    Сообщений
    4
    Репутация:
    0 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Эмм, INVALID_PLAYER_ID - это не проверка, а макрос, который содержит значение 65535. Само по себе это значение не означает ровным счётом ничего, но ряд функций, взаимодействующих с игроком, возвращают это значение, когда тот самый игрок не найден. Именно поэтому результат ряда функций и сравнивается с этим значением (не потому что макрос называется "INVALID_PLAYER_ID" и это наделяет макрос какими-то особыми свойствами, а потому что в самих функциях прописан возврат определённого значения, которое сделали во всех функциях идентичным и потом обозначили как макрос). Это во-первых.

    Во-вторых, сформулируй конкретнее свой вопрос. Что ты подразумеваешь под фразой "проверять на нике"?

    Ну вот, например, взял из мануала. В случае использования в команде никнейма(вместо id) игрока, который есть в сети, второе условие(targetid == INVALID_PLAYER_ID) выполнится или нет? Почти уверен, что нет, но не в первой команде такое уже вижу и появляются сомнения =\
    PHP код:
     CMD:ban(playeridparams[])
    {
    //    if(!IsPlayerAdmin(playerid)) return 1;
        
        
    new
            
    targetid,
            
    days,
            
    days_string[4+1],
            
    targetid_name[MAX_PLAYER_NAME+1],
            
    playerid_name[MAX_PLAYER_NAME+1];
        
        if(
    sscanf(params, !"uds[120]"targetiddaysparams[0]))
            return 
    SendClientMessage(playerid, -1, !"Использование: /ban [ID/Ник] [Кол-во дней] [Причина]");
        if(
    targetid == INVALID_PLAYER_ID)
            return 
    SendClientMessage(playerid, -1, !"Игрок не найден.");
           

    Последний раз редактировалось Sambook; 30.05.2018 в 21:46.

  10. #1087
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Sambook Посмотреть сообщение
    Ну вот, например, взял из мануала. В случае использования в команде никнейма(вместо id) игрока, который есть в сети, второе условие(targetid == INVALID_PLAYER_ID) выполнится или нет? Почти уверен, что нет, но не в первой команде такое уже вижу и появляются сомнения =\
    PHP код:
     CMD:ban(playeridparams[])
    {
    //    if(!IsPlayerAdmin(playerid)) return 1;
        
        
    new
            
    targetid,
            
    days,
            
    days_string[4+1],
            
    targetid_name[MAX_PLAYER_NAME+1],
            
    playerid_name[MAX_PLAYER_NAME+1];
        
        if(
    sscanf(params, !"uds[120]"targetiddaysparams[0]))
            return 
    SendClientMessage(playerid, -1, !"Использование: /ban [ID/Ник] [Кол-во дней] [Причина]");
        if(
    targetid == INVALID_PLAYER_ID)
            return 
    SendClientMessage(playerid, -1, !"Игрок не найден.");
           

    Так там используется спецификатор "u" в sscanf. Этот спецификатор помимо того, что позволяет писать как ник, так и ID игрока, сразу проверяет, находится ли указанный игрок в сети и если не находится, вернёт "INVALID_PLAYER_ID". Именно благодаря этому спецификатору и тому, что в sscanf для него вшита проверка на онлайн, проверка "if(targetid == INVALID_PLAYER_ID)" сработает как надо
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  11. Пользователь сказал cпасибо:
    Sambook (31.05.2018)
  12. #1088
    Аватар для pawnoholic
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.01.2018
    Сообщений
    128
    Репутация:
    15 ±
    PHP код:
    %.%ds 
    Так наверное невозможно, верно ведь?

  13. #1089
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от pawnoholic Посмотреть сообщение
    PHP код:
    %.%ds 
    Так наверное невозможно, верно ведь?
    Что это вообще такое?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  14. #1090
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Что это вообще такое?
    Как я понимаю, он говорит про подобное
    PHP код:
    printf("%.3s""123456"); 
    То бишь, указание того, сколько символов может "принять" спецификатор. Только он хочет сделать "интерактивный" вариант, в котором и количество символов можно будет менять на ходу.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 109 из 133 ПерваяПервая ... 9 59 99 107 108 109 110 111 119 ... ПоследняяПоследняя

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

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

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

Ваши права

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