Доступ к архиву

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

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

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

[Урок 2] Работа со строками

Статус
В этой теме нельзя размещать новые ответы.

Folk

Дебютант
Сейчас я вам расскажу как правильно использовать строки, ну что же, начнем:

strlen:

Возвращает кол-во символов в строке, думаю на примере все поймете:

PHP:
if(strcmp(cmd, "/test", true) == 0)
{
new test[256];
test = strtok(cmdtext, idx);
if(!strlen(test)) return SendClientMessage(playerid, C_RED, "Используйте /test [playerid]");
}
if(!strlen(test)) - если в строке 0 символов выводится сообщение. ! - значит не было выполнено действие

strval:
Конвертирует строковой тип в числовой, пример:

PHP:
new test[4] = "555";
new test2 = strval(test); // Теперь переменная test2 равна 250
strtok:
Отделяет пробел между командой и параметром, пример:

PHP:
public OnPlayerCommandText(playerid, cmdtext[])
{
     new cmd[128], idx;
     cmd = strtok(cmdtext, idx);
         
     if(strcmp(cmd, "/kick", true) == 0)
     {
      new tmp[128];
      tmp = strtok(cmdtext, idx);
         
      if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Юзайте: /kick [playerid]");
         
      Kick(strval(tmp));
      return 1;
     }
     return 0;
}
В данном случае мы проверим было ли введено /kick playerid вместе /kick.

strdel:
Удаляет подстрочку из строки, пример:

PHP:
new test[64] = "Данная переменная используется для...";
strdel(test, 0, 17); // У нас останется  используется для...
Учтите что пробел тоже идет как символ и его тоже надо учитывать, а теперь объясню параметры:
test - массив из которого удаляем
0 - символ с которого начинаем(по счету)
17 - кол-во удаляемых символов

strmid:
Извлекает определенный диапазон из переменной, увидите на примере:

PHP:
strmid(test, "American Psycho", 10, 15); // Мы извлекли Psycho
Параметры:
test - массив из которого извлекаем
American Psycho - текст откуда извлекаем
10, 15 - символы от которого и до которого извлекаем

strpack:
Упаковывает в переменную определенный последовательность

PHP:
if(strcmp(cmdtext, "/strpack", true) == 0)
{
new message[128];
strpack(message, "Здарова чувак!");
SendClientMessage(playerid, COLOR_GREY, message);
return 1;
}
И когда мы в игре введем /strpack у нас высветится: "здарова чувак"
Параметры:
message - переменная в который пакуем
"Здарова чувак" - то, что мы пакуем

strfind:

Ищет последовательность в другой последовательности.

PHP:
strfind("Первая последовательность, в которой ищем", "в которой ищем");
Параметры:
"" - последовательность в которой ищем
"" - то, что мы ищем

strcmp:
Сравнивает две последовательности. Даже простая команда, вы не задумывались об ее значении? Сейчас резберем.

PHP:
if(strcmp(cmdtext, "/test", true) == 0)
Параметры:
cmdtext - первая последовательность
"/test" - вторая последовательность
true/false - если true то регистр не имеет значение, если false то имеет

strcat:
Связывает несколько последовательностей в переменную:

PHP:
new teststring[64];
strcat(teststring, "First string\n");
strcat(teststring, "Second string\n");
strcat(teststring, "Third string);
SendClientMessage(playerid, COLO_RED, teststring);
И у нас в чат выведется 3 строки
Параметры:
teststring - переменная в которую связываем последовательности
"" - то, что мы связываем в переменную

Так как функция strtok не стандартная, то вот она вам:

PHP:
strtok(const string[], &index)
{
         new length = strlen(string);
         while ((index < length) && (string[index] <= ' '))
         {
             index++;
         }

         new offset = index;
         new result[20];
         while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
         {
             result[index - offset] = string[index];
             index++;
         }
         result[index - offset] = EOS;
         return result;
}
Автор: Folk
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу