Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Использование глобального стринга

Sashadisa

Ученик
Всех приветствую!
Сегодня мы поговорим о том как правильно использовать глобальный стринг и не будет ли он путатся при большом онлайне.

Для чего это нужно:
Это нужно для того чтобы не создавать постоянно переменные тем самым загружать стэк, чтобы не создавать большие стринги в одном стоке


​
1 - Для начала создаем глобальный стринг в начале мода:
new string_global[4096];
(4096 так как это ограничение сампа, больше ставить нет смысла)

2 - Используем стринг, пример:

//Пример 1 где НЕ нужно очищать стринг, так как format сам переписывает стринг (В некоторых случаях нужно очищать, показано в примере 2 - 3)
Код:
CMD:test(playerid)
{
    format(string_global, 144, "Тестовый вывод | Ваш ID:", PlayerInfo[playerid][pID]); //144 Так как в чат не отправляется больше чем 144 символа, нет смысла ставить больше.
    SendClientMessage(playerid, -1, string_global);
    return 1;
}

//Пример 2 где нужно очищать стринг
CMD:test(playerid)
{
    new string[144]; //Не нужно мне писать что я не высчитывал строки и так далее, 144 размер это для примера.
    format(string, sizeof(string), "Nick: %s",Nick(playerid))

    string_global[0] = EOS; //Обнуляем стринг

    strcat(string_global, "Ник игрока"); //strcat дополняет стринг
    strcat(string_global, string);
    ShowPlayerDialog(playerid, 0, 0, "Ник", string_global, "Выход", "");
    return 1;
}

//Пример 3 где так же нужно очищать стринг
CMD:test(playerid)
{
    string_global[0] = EOS;
    for(new i; i < 12; i++)//Тестовый цикл
    {
        format(string_global, 244, "%sПовтор цикла: %d\n", string_global, i);
    }
    ShowPlayerDialog(playerid, 0, 0, "Повтор", string_global, "Выход", "");
}
3 - Может ли путаться стринг при одновременном использовании нескольких человек/функций:
Нет, он не может путаться так как Pawn однопоточный, он не выполняет второй функции пока используется первая, даже если вы будете использовать цикл на 1000 изменений string_global, он все равно не будет путаться если игрок использует глобальный стринг во время выполнения цикла.
Подробнее об этом вы можете узнать в видео: ​

Так же потом будет отдельная тема насчет static.

Автор темы: - Sanya -
При копировании на другие источники указать автора!

​
 
Последнее редактирование:
Сверху Снизу