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

Тема: Char

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

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±

    Char

    Приведи несколько примеров работы с Char массивом
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    При использовании char мы устанавливаем границы каждой ячейки массива: от 0 и до 255.
    Каждая ячейка может принимать 256 значений.

    А также с помощью char можно уменьшить размер размера ( в 4 раза ).
    Например создали массива из MAX_PLAYERS ячеек ( по умолчанию 500 игроков ), то при использовании мы используем не 2000 байт ( 500 * 4 ( каждая ячейка 4 байта ) ), а уже 500 ( 2000 / 4 = 500 ).

    PHP код:
    new
        
    player_admin_level[MAX_PLAYERS char];
        
    // здесь будет храниться уровень админа 
    Создадим например команду для выдачи админки, также сделаем проверку, чтобы нельзя было поставить меньше 0 и больше 255.

    PHP код:
    CMD:setadmin(playeridparams[])
    {
        if(
    player_admin_level{playerid} < 5)
        
    // для проверки значения из ячейки char-массива,
        // используются не квадратные скобки ( [ и ] ) а ( { и } )
            
    return SendClientMessage(playerid, -1"У вас нет прав на выполнение данной команды.");

        new
            
    targetid,
            
    level;

        if(
    sscanf(params"ii"targetidlevel))
            return 
    SendClientMessage(playerid, -1"Используйте: /setadmin [targetid] [level]");

        if(!(
    <= level <= 255))
        
    // если указанный игроком уровень меньше 0 или больше 255,
        // то не даём ему выдать админку
            
    return SendClientMessage(playerid, -1"Уровень только от 0 и до 255.");

        
    player_admin_level{targetid} = level;
        
    // выдали игроку уровень админки,
        // не забываем указывать фигурные скобки,
        // иначе будут проблемы

        
    return SendClientMessage(playerid, -1"Уровень администратирования выдан.");

    Очень полезно использовать такие массивы, когда значение не достигает предела для char-массивов.
    Например для массива с деньгами уже данный способ не пригодится. Денег может быть очень много, явно больше чем 255.
    Последний раз редактировалось L0ndl3m; 15.12.2014 в 17:12.

  3. 2 пользователя(ей) сказали cпасибо:
    Unreal (16.12.2014) [ForD] (15.12.2014)
  4. #3
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Вот спасибо,большое спасибо!

    - - - Добавлено - - -

    Цитата Сообщение от Londlem Посмотреть сообщение

    При использовании char мы устанавливаем границы каждой ячейки массива: от 0 и до 255.

    А также с помощью char можно уменьшить размер размера ( в 4 раза ).
    Например создали массива из MAX_PLAYERS ячеек ( по умолчанию 500 игроков ), то при использовании мы используем не 2000 байт ( 500 * 4 ( каждая ячейка 4 байта ) ), а уже 500 ( 2000 / 4 = 500 ).
    Немного не понял на счет MAX_PLAYERS,500 игроков как по умолчанию допустим,но char допускает значения от 0 до 255,можно немного подробнее..
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

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

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,366
    Репутация:
    774 ±
    Цитата Сообщение от [ForD] Посмотреть сообщение
    Вот спасибо,большое спасибо!

    - - - Добавлено - - -



    Немного не понял на счет MAX_PLAYERS,500 игроков как по умолчанию допустим,но char допускает значения от 0 до 255,можно немного подробнее..
    Учитывается не размер массива, а значение ячейки массива, например:
    PHP код:
    player_admin_level{405} = 12
    Установили игроку с ID 405 12 уровень администратирования.
    А например так:
    PHP код:
    player_admin_level{405} = 500
    уже нельзя делать, мы указали 500, а максимально: 255.

  6. 2 пользователя(ей) сказали cпасибо:
    Unreal (16.12.2014) [ForD] (16.12.2014)
  7. #5
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Цитата Сообщение от Londlem Посмотреть сообщение
    Учитывается не размер массива, а значение ячейки массива, например:
    PHP код:
    player_admin_level{405} = 12
    Установили игроку с ID 405 12 уровень администратирования.
    А например так:
    PHP код:
    player_admin_level{405} = 500
    уже нельзя делать, мы указали 500, а максимально: 255.
    Спасибо,будем разбираться.
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

 

 

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

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

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

Ваши права

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