admin Дата: Среда, 18.05.2011, 15:45:20 | Сообщение # 1
Группа: Администраторы
Сообщений: 3869
Сейчас я вам расскажу как правильно использовать str, ну что же, начнем: strlen: Возвращает кол-во символов в строке, думаю на примере все поймете:
Code
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: Конвертирует строковой тип в числовой, пример:
Code
new test[4] = "555"; new test2 = strval(test); // Теперь переменная test2 равна 250
strtok: Отделяет пробел между командой и параметром, пример:
Code
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: Удаляет подстрочку из строки, пример:
Code
new test[64] = "Данная переменная используется для..."; strdel(test, 0, 17); // У нас останется используется для... Учтите что пробел тоже идет как символ и его тоже надо учитывать, а теперь объясню параметры: test - массив из которого удаляем 0 - символ с которого начинаем(по счету) 17 - кол-во удаляемых символов
strmid: Извлекает определенный диапазон из переменной, увидите на примере:
Code
strmid(test, "American Psycho", 10, 15); // Мы извлекли Psycho Параметры: test - массив из которого извлекаем American Psycho - текст откуда извлекаем 10, 15 - символы от которого и до которого извлекаем
strpack: Упаковывает в переменную определенный последовательность
Code
if(strcmp(cmdtext, "/strpack", true) == 0) { new message[128]; strpack(message, "Здарова чувак!"); SendClientMessage(playerid, COLOR_GREY, message); return 1; }
И когда мы в игре введем /strpack у нас высветится: "здарова чувак" Параметры: Code
message - переменная в который пакуем "Здарова чувак" - то, что мы пакуем
strfind: Ищет последовательность в другой последовательности.
Code
strfind("Первая последовательность, в которой ищем", "в которой ищем"); Параметры: "" - последовательность в которой ищем "" - то, что мы ищем
strcmp: Сравнивает две последовательности. Даже простая команда, вы не задумывались об ее значении? Сейчас резберем.
Code
if(strcmp(cmdtext, "/test", true) == 0)
Параметры: Code
cmdtext - первая последовательность "/test" - вторая последовательность true/false - если true то регистр не имеет значение, если false то имеет
strcat: Связывает несколько последовательностей в переменную:
Code
new teststring[128]; strcat(teststring, "First string\n"); strcat(teststring, "Second string\n"); strcat(teststring, "Third string); SendClientMessage(playerid, COLO_RED, teststring);
И у нас в чат выведется 3 строки Параметры: Code
teststring - переменная в которую связываем последовательности "" - то, что мы связываем в переменную
Так как функция strtok не стандартная, то вот она вам:
Code
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 известный вам как L[E]O Информация частично взята с wiki.sa-mp.com, заметьте частично, где то 15-20%
zm-jail.ru Разработка сайта samp-pawno.ru
Сообщение Сейчас я вам расскажу как правильно использовать str, ну что же, начнем: strlen: Возвращает кол-во символов в строке, думаю на примере все поймете:
Code
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: Конвертирует строковой тип в числовой, пример:
Code
new test[4] = "555"; new test2 = strval(test); // Теперь переменная test2 равна 250
strtok: Отделяет пробел между командой и параметром, пример:
Code
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: Удаляет подстрочку из строки, пример:
Code
new test[64] = "Данная переменная используется для..."; strdel(test, 0, 17); // У нас останется используется для... Учтите что пробел тоже идет как символ и его тоже надо учитывать, а теперь объясню параметры: test - массив из которого удаляем 0 - символ с которого начинаем(по счету) 17 - кол-во удаляемых символов
strmid: Извлекает определенный диапазон из переменной, увидите на примере:
Code
strmid(test, "American Psycho", 10, 15); // Мы извлекли Psycho Параметры: test - массив из которого извлекаем American Psycho - текст откуда извлекаем 10, 15 - символы от которого и до которого извлекаем
strpack: Упаковывает в переменную определенный последовательность
Code
if(strcmp(cmdtext, "/strpack", true) == 0) { new message[128]; strpack(message, "Здарова чувак!"); SendClientMessage(playerid, COLOR_GREY, message); return 1; }
И когда мы в игре введем /strpack у нас высветится: "здарова чувак" Параметры: Code
message - переменная в который пакуем "Здарова чувак" - то, что мы пакуем
strfind: Ищет последовательность в другой последовательности.
Code
strfind("Первая последовательность, в которой ищем", "в которой ищем"); Параметры: "" - последовательность в которой ищем "" - то, что мы ищем
strcmp: Сравнивает две последовательности. Даже простая команда, вы не задумывались об ее значении? Сейчас резберем.
Code
if(strcmp(cmdtext, "/test", true) == 0)
Параметры: Code
cmdtext - первая последовательность "/test" - вторая последовательность true/false - если true то регистр не имеет значение, если false то имеет
strcat: Связывает несколько последовательностей в переменную:
Code
new teststring[128]; strcat(teststring, "First string\n"); strcat(teststring, "Second string\n"); strcat(teststring, "Third string); SendClientMessage(playerid, COLO_RED, teststring);
И у нас в чат выведется 3 строки Параметры: Code
teststring - переменная в которую связываем последовательности "" - то, что мы связываем в переменную
Так как функция strtok не стандартная, то вот она вам:
Code
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 известный вам как L[E]O Информация частично взята с wiki.sa-mp.com, заметьте частично, где то 15-20% Автор - admin Дата добавления - 18.05.2011 в 15:45:20