Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 9 из 9
  1. #1
    Аватар для DmitriyVasilev
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.01.2019
    Сообщений
    86
    Репутация:
    0 ±

    Глобальные или локальные переменные

    Здравствуйте. я новичок в pawn и хотелось бы узнать, как лучше создавать переменные, например, для команд.
    Пример.
    1. new command[500]; //подскажите как подсчитывать ячейки в глобальных переменных не пойму если у тебя около 90команд
    2. CMD:satiety(playerid)
    3. {
    4. format(command,sizeof(command),"Ваш голод: %i процентов", PI[playerid][p_satiety]);
    5. SendClientMessage(playerid,command);
    6. return 1;
    7. }
    8. CMD:keys(playerid,params[])
    9. {
    10. format(command,sizeof(command), "%i щтук", PI[playerid][p_keys]
    11. SendClientMessage(playerid,command);
    12. }
    13. //ИЛИ ТАК?
    14. CMD:satiety(playerid)
    15. {
    16. new command[128];
    17. format(command,sizeof(command),"Ваш голод: %i процентов", PI[playerid][p_satiety]);
    18. SendClientMessage(playerid,command);
    19. return 1;
    20. }
    21. CMD:keys(playerid,params[])
    22. {
    23. new command[128];
    24. format(command,sizeof(command), "%i штук", PI[playerid][p_keys]
    25. SendClientMessage(playerid,comman/PAWN]d);
    26. }
    Последний раз редактировалось DmitriyVasilev; 03.02.2019 в 13:11.

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Лучше всего так:
    PHP код:
    CMD:satiety(playerid)
    {
        static const
            
    str[] = "Ваш голод: %i процентов";

        static
            
    string[sizeof str 2]; //sizeof str - длина строки, 3 - значение PI[playerid][p_satiety], 2 - удаление спецификатора %i

        
    format(stringsizeof stringstrPI[playerid][p_satiety]);
        
    SendClientMessage(playeridstring);
        return 
    1;
    }
    CMD:keys(playerid,params[])
    {
        static const
            
    str[] = "%i штук";

        static
            
    string[sizeof str 11 2];

        
    format(stringsizeof stringstrPI[playerid][p_keys]);
        
    SendClientMessage(playeridstring);
        return 
    1;


  3. Пользователь сказал cпасибо:
    DmitriyVasilev (03.02.2019)
  4. #3
    Аватар для DmitriyVasilev
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.01.2019
    Сообщений
    86
    Репутация:
    0 ±
    а если хочешь глобальный использовать, то как подсчитать сколько ячеек надо? например у меня 90 команд и во многих стоит формат с диалогами и sendclientmessage, во многих модах стоит переменная глобальная на 1к ячеек, но я не знаю почему

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

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DmitriyVasilev Посмотреть сообщение
    а если хочешь глобальный использовать, то как подсчитать сколько ячеек надо? например у меня 90 команд и во многих стоит формат с диалогами и sendclientmessage, во многих модах стоит переменная глобальная на 1к ячеек, но я не знаю почему
    Если хочешь один массив на все команды, что крайне не рекомендую, то используй массив:
    PHP код:
    new command[145]; //144 - лимит SendClientMessage 

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

    Статус
    Оффлайн
    Регистрация
    01.01.2019
    Сообщений
    86
    Репутация:
    0 ±
    а если используешь этот массив и в диалогах команд и сообщениях то как подсчитать.

  7. #6
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DmitriyVasilev Посмотреть сообщение
    а если используешь этот массив и в диалогах команд и сообщениях то как подсчитать.
    Никак. Должен быть максимальный размер строки указан. Если там и диалоги, то массив выходит на пару тысяч. Это из-за вывода списка кого-то/чего-то.

  8. #7
    Аватар для DmitriyVasilev
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.01.2019
    Сообщений
    86
    Репутация:
    0 ±
    получается у меня в моде стоит new string[1000]; глобальный, то его надо убрать и везде по отдельности создавать?

  9. #8
    Аватар для m1n1vv
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Сообщений
    541
    Репутация:
    78 ±
    Цитата Сообщение от DmitriyVasilev Посмотреть сообщение
    получается у меня в моде стоит new string[1000]; глобальный, то его надо убрать и везде по отдельности создавать?
    Да. Так будет лучше.

  10. #9
    Аватар для DmitriyVasilev
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.01.2019
    Сообщений
    86
    Репутация:
    0 ±
    и еще можно вопрос?
    когда можно просто считать ячейки типа new string[50]; а когда таким способом как написал ты.

 

 

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

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

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

Ваши права

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