17:13
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Dima-kun  
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » token_by_delim (хорошая функция)
token_by_delim
AlekseyДата: Воскресенье, 10.08.2008, 16:27 | Сообщение # 1
Советчик
Группа: Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
Первая моя статья!
Это очень полезная функция!!!
Она мне помогла сделать кланы из файла!
ПРиступим к описанию:
1. Она вытаскивает Вам из строки символы от начала и до указанново вами символа.
2. Ей можно делать самые разные функции. Допустим:

new colorr[256], index, nameglava[256];//создаём переменные
newf=fopen("clans.txt",io_read);//открываем файл в формате "read"
while(fread(newf,string,256) > 0)//читаем весь файл
{
index = 0;//на всякий случай приравниваем индекс к 0
index = token_by_delim(string,clanforp,'=',index);//берём символы из строки string, до символа "=", и затем засовываем это в clanforp
if(index == (-1)) continue;//если функция удалась то продолжаем
index = token_by_delim(string,colorr,'=',index+1);//берём символы из строки string, до символа "=", и затем засовываем это в colorr(не забываем к indexу прибавить 1!)
if(index == (-1)) continue;//если всё получилось то продолжаем
index = token_by_delim(string,nameglava,';',index+1);//берём символы из строки string, до символа ";", и затем засовываем это в nameglava(не забываем к indexу прибавить 1!)
if(index == (-1)) continue;//это просто так, т.к. дальше продолжать уже некуда, что нам требовалось мы выполнили!
//и теперь можно сделать с этими данными всё что угодно! Допустим присвоить игроку цвет из переменной colorr.
SetPlayerColor(playerid, strval(colorr);
//либо присоединить игрока к клану, записанному в переменной clanforp!
GetPlayerName(playerid, string, 256);
format(string, 256, "%s_%s", clanforp, string);
SetPlayerName(playerid, string);
}//закрываем функцию

3. Сама функция:

token_by_delim(const string[], return_str[], delim, start_index)
{
new x=0;
while(string[start_index] != EOS && string[start_index] != delim) {
return_str[x] = string[start_index];
x++;
start_index++;
}
return_str[x] = EOS;
if(string[start_index] == EOS) start_index = (-1);
return start_index;
}

Надеюсь моя статья кому-нибудь поможет! И я надеюсь профи нашего сайта ещё не видели этой функции :)


вааааааааааййй..// :(0
SpiritДата: Воскресенье, 10.08.2008, 17:10 | Сообщение # 2
Освоившийся
Группа: Продвинутые
Сообщений: 129
Награды: 1
Город: Омск
Репутация: 14
Замечания: 0%
Статус:
думаю профи лепят её самостоятельно когда им это требуется :), но спс, может пригодится


Любиш садизм люби и мазахизм :)
AlekseyДата: Воскресенье, 10.08.2008, 17:41 | Сообщение # 3
Советчик
Группа: Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
:)


вааааааааааййй..// :(0
theAloneДата: Воскресенье, 10.08.2008, 20:24 | Сообщение # 4
Долгожитель
Группа: Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус:
Опередил меня =)

Но всё равно хорошо crazy

AlekseyДата: Понедельник, 11.08.2008, 05:46 | Сообщение # 5
Советчик
Группа: Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
кстати я вначале не мог понять что она делает, когда понял сразу побежал делать кланы crazy


вааааааааааййй..// :(0
OKStyle™Дата: Понедельник, 11.08.2008, 19:19 | Сообщение # 6
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
То же самое, что и strtok, только ищет другой символ wink


Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
AlekseyДата: Вторник, 12.08.2008, 05:24 | Сообщение # 7
Советчик
Группа: Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
хорошо а как он работает? стрток


вааааааааааййй..// :(0
OKStyle™Дата: Вторник, 12.08.2008, 08:31 | Сообщение # 8
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
JIeXa, считывает данные до указанного символа в одну переменну, затем до следующего знака во вторую и т.д. По стандарту это " " (пробел), поэтому и пишут: /heal id hp. Можно указать "$", тогда будут писать: /heal$id$hp.


Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
AlekseyДата: Вторник, 12.08.2008, 11:35 | Сообщение # 9
Советчик
Группа: Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
а где изменять знак?


вааааааааааййй..// :(0
theAloneДата: Вторник, 12.08.2008, 20:21 | Сообщение # 10
Долгожитель
Группа: Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус:
Code
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= [b]' '[/b]))
{
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;
}

Где ' ', например '$'


Сообщение отредактировал [DPS]EvilRiaz - Вторник, 12.08.2008, 20:22
AlekseyДата: Среда, 13.08.2008, 05:18 | Сообщение # 11
Советчик
Группа: Продвинутые
Сообщений: 1028
Награды: 5
Город: Челябинск
Репутация: 41
Замечания: 0%
Статус:
нет...
это я просто тупанул...
вот:
stock strtok(const string[], &index,seperator=' ')
{
new length = strlen(string);
new offset = index;
new result[MAX_STRING];
while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}

result[index - offset] = EOS;
if ((index < length) && (string[index] == seperator))
{
index++;
}
return result;
}
сепаратор изменять


вааааааааааййй..// :(0
LuxurYДата: Пятница, 15.08.2008, 15:44 | Сообщение # 12
Уверенный в себе
Группа: Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус:
хороший код. я бы добавил учет экстра символов типа ("Hello!!!!!!!!world"), идентацию :) и установку значения start_index по дефолту на 0.
и один вопрос. сам делал? crazy



www.gtascript.ru admin
www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
theAloneДата: Пятница, 15.08.2008, 16:12 | Сообщение # 13
Долгожитель
Группа: Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус:
LuxurY, отвечаю за него: Статья его(пример использования) а функция нет(не бейте lol ). Кстати эта функция есть в одном GM(vehicles) из "Беты 0.2.5". Там был пример загрузки тачки из файлов. :)
LuxurYДата: Пятница, 15.08.2008, 17:09 | Сообщение # 14
Уверенный в себе
Группа: Продвинутые
Сообщений: 281
Награды: 1
Город: OZ
Репутация: 45
Замечания: 0%
Статус:
Quote (|DPS|EvilRiaz)
LuxurY, отвечаю за него: Статья его(пример использования) а функция нет(не бейте lol ). Кстати эта функция есть в одном GM(vehicles) из "Беты 0.2.5". Там был пример загрузки тачки из файлов. :)

вот я и думаю что не мог он такого написать. писал кто-нибудь с уровнем знания как у Y_Less'a или ниже. но на самом деле функция очень простая. это уже профессионализм ))



www.gtascript.ru admin
www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
ХоммкоДата: Суббота, 16.08.2008, 11:13 | Сообщение # 15
Новенький
Группа: Продвинутые
Сообщений: 71
Награды: 1
Репутация: 9
Замечания: 0%
Статус:
а по-моему, token_by_delim написан самми кейманом (не факт).

зы не нашел полезности функции в топике.
ззы не по теме, но если у меня в строке ДВА пробела, strtok поймет это? напр. строка /ban id

Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » token_by_delim (хорошая функция)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua