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

Тема: bool und const

  1. #1
    Аватар для ALIT13
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.05.2014
    Сообщений
    346
    Репутация:
    2 ±

    bool und const

    Помогите решить проблему
    в учебнике pro-pawn написано Логический (bool) - истина/ложь (true/false)
    нашёл пример
    PHP код:
    new Logged[MAX_PLAYERS]; 
    То есть игрок залогинился true/falso
    Добавляю
    PHP код:
    new bool:Logged[MAX_PLAYERS]; 
    ошибки
    PHP код:
    warning 213tag mismatch 
    И также константа
    PHP код:
    Правила задания имён у констант те жечто и у переменныхза исключением одного необязательного
    Имя константы должно записываться в верхнем регистре (все буквы большие), чтобы было легче отличить его от имён переменных и функций
    Примеры имён константMAX_PLAYERSMAX_VEHICLESMAX_PLAYER_NAME
    создал
    PHP код:
    const SpeedTimer[MAX_PLAYERS]; 
    PHP код:
    error 028invalid subscript (not an array or too many subscripts): "SpeedTimer" 

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

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    731
    Репутация:
    353 ±
    1. Возможно, что вы указываете значение не логического типа, например, цифра нуль.

    2. Лучше сделать так:
    PHP код:
    static const SpeedTimer[MAX_PLAYERS]; 

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от ALIT13 Посмотреть сообщение
    Помогите решить проблему
    в учебнике pro-pawn написано Логический (bool) - истина/ложь (true/false)
    нашёл пример
    PHP код:
    new Logged[MAX_PLAYERS]; 
    То есть игрок залогинился true/falso
    Добавляю
    PHP код:
    new bool:Logged[MAX_PLAYERS]; 
    ошибки
    PHP код:
    warning 213tag mismatch 
    В массив из bool нужно записывать true/false вместо 1/0.


    Цитата Сообщение от ALIT13 Посмотреть сообщение
    И также константа
    PHP код:
    Правила задания имён у констант те жечто и у переменныхза исключением одного необязательного
    Имя константы должно записываться в верхнем регистре (все буквы большие), чтобы было легче отличить его от имён переменных и функций
    Примеры имён константMAX_PLAYERSMAX_VEHICLESMAX_PLAYER_NAME
    создал
    PHP код:
    const SpeedTimer[MAX_PLAYERS]; 
    PHP код:
    error 028invalid subscript (not an array or too many subscripts): "SpeedTimer" 
    В массивах недостаточно одного лишь ключевого слова const, перед ним должно быть либо new, либо static.
    PHP код:
    new const SpeedTimer[MAX_PLAYERS]; 
    UPD: Вот только в чём логика делать такой массив константным? Судя по названию, вы будете записывать туда ID таймеров, но компилятор не позволит модифицировать констаный массив.
    Последний раз редактировалось Daniel_Cortez; 30.12.2015 в 19:44. Причина: -
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  4. #4
    Аватар для L0ndl3m
    Пользователь

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Это такая новая шутка: прикручивать массиву константу...

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Это такая новая шутка: прикручивать массиву константу...
    В редких случаях неизменяемые массивы могут пригодиться.
    Например, можно сделать кэширование никнеймов игроков.
    PHP код:
    new const player_names[MAX_PLAYERS][MAX_PLAYER_NAME 1]; 
    При заходе игрока на сервер его никнейм заносится в массив. Причём довольно интересным образом заносится, т.к. массив объявлен, как неизменяемый.
    PHP код:
    native GetPlayerName(playerid, const name[], len); 
    Параметр name по ошибке объявлен с атрибутом const, поэтому функция может сохранять ник в константные массивы. Куй вряд ли исправит этот баг, т.к. он не мешает играть и не крашит сервер, а значит им вполне можно воспользоваться в своих целях.
    Таким образом, получаем массив никнеймов, который можно использовать для чтения, но нельзя изменить его содержимое. Этакая защита от дурака.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

 

 

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

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

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

Ваши права

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