• Страница 1 из 1
  • 1
Модератор форума: admin, TweIk  
[Lesson 2]STRs
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
  • Страница 1 из 1
  • 1
Поиск:
Загрузка страницы, займет меньше минуты...
Загрузка...

Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
Система телефонов поломалась
Не в себе
фильм скалайн
Трансформеры 3
форсаж 6
Ищу [FS]Для админок на сервер
нужны координаты карты для отметки зон...
Помогите найти мод
pawno урок автоматические ворота
обращение к скриптерам.
Вопросы по скриптингу
Ваши ошибки при компиляции GM/FS

Вопросы по скриптингу

(1081)

Считаем до 1000

(274)

Ваши ошибки при компиляция gm

(260)

Набор в команду

(80)

Ваши ошибки при компиляции GM/FS

(71)

вопроосы по скриптингу от 22.04.2013

(64)

Баннеробмен

(64)

несколько команд на samp 0.3 c

(64)

Оценки сайта samp-pawno.ru

(55)

Заказ хостинга

(51)

Набор в команду(форум)

(45)

Урок №61 по созданию системы авто для GodFather

(45)

admin

(3869)

[east_side]_trane

(443)

TWiX

(316)

valych

(501)

drifter-dron

(477)

danik_rok

(317)

Dimka_71rus

(360)

Drifter96

(300)

MaNb9K

(220)

[MTA]MaPeR5518

(181)

Dima_Tkach

(107)

Nik_Ull

(184)

system32xzxz

(Четверг 09:25:24)

torbin169

(Суббота 23:09:29)

kuchuk_00

(Суббота 17:10:14)

artem_boyko_3

(Суббота 15:57:37)

greggelbak

(Среда 18:29:37)

vladisvlavs

(Среда 13:51:57)

add02102002

(Понедельник 22:37:15)

Диман221

(Понедельник 18:12:45)

almas051004

(Воскресенье 11:05:32)

megasuccessms

(Суббота 14:15:36)

nawe

(Пятница 22:25:23)

swoysb

(Пятница 14:55:29)

Вверх
22:17:27
ОбновитьСмайлыУправление мини-чатом
ЧАТ-PAWNO
2010-2025

vkontakte :samp-pawno.ru: