Профиль
Информация Управление
Здравствуйте, уважаемый посетитель. К сожалению, Вы не были распознаны форумом, как зарегистрированный пользователь. Для полноценного использования возможностей нашего форума вам необходимо зарегистрироваться. Если вы уже зарегистрированы на форуме, то вам необходимо пройти авторизацию, используя Ваш логин и пароль. Зарегистрированные пользователи получают возможность возможность общения на нашем форуме.


[Новые сообщения · Правила форума · RSS ]
  • Страница 1 из 1
  • 1
Отделение стандартного тега от ника
WiX Дата: Пятница, 25.02.2011, 21:28 | Сообщение # 1
Рядовой
Группа: Проверенные
Зарегистрирован: 24.02.2011
Сообщений: 4
Репутация: 0
Статус: Offline
Вообщем нужно получить ник игрока и записать в новую переменную ник без тега [...]

Как не пытался, но результат неудовлетворительный: либо в переменной вообще ничего нет, либо убран только первый символ.

Code
new name[24], lenght, pos;
    new str[128];
    GetPlayerName(playerid,name,24);
    lenght = strlen(name);
    for(new offset = 0; offset < lenght; offset++)
    {
    if(!strcmp(name[offset],"]",true)) {pos = offset;}
    }
    for(new i=0;i<21;i++)
    {
    str[0+i]=name[pos+1+i];
    }

В этом случае выдает pos=0 чего по идее быть не должно

Code

    new name[24], lenght, pos;
    new str[128];
    GetPlayerName(playerid,name,24);
    lenght = strlen(name);
    for(new offset = 0; offset < lenght; offset++)
    {
    if(name[offset]==']') {pos = offset;}
    }
    for(new i=0;i<21;i++)
    {
    str[0+i]=name[pos+1+i];
    }

А в этом случае в переменную str вообще ничего не записывается.

Сообщение отредактировал WiX - Пятница, 25.02.2011, 22:37
 
SlootLite Дата: Суббота, 26.02.2011, 14:52 | Сообщение # 2
Рядовой
Группа: Проверенные
Зарегистрирован: 24.02.2011
Сообщений: 14
Репутация: 0
Статус: Offline
Этот метод подойдет, если ты уверен где расположен тег, ну и есть ли он вообще))) (это можно проверить циклом из strfind)
Допустим ник [Pawno]SlootLite
Функция вот:
Code
forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
   new i, li;
   new aNum;
   new len;
   while(i <= strlen(strsrc)){
       if(strsrc[i]==delimiter || i==strlen(strsrc)){
           len = strmid(strdest[aNum], strsrc, li, i, 128);
           strdest[aNum][len] = 0;
           li = i+1;
           aNum++;
    }
    i++;
   }
   return 1;
}

Сейчас попробуем разделить:
Code

new splits[2][24];
new string[128];
split("[Pawno]Slootlite", splits, ']');// (То что делим, Куда делим, Что является делиметром)
format(string,128,"Тег: %s] Ник: %s", splits[0], splits[1]);// При разделении теряется делимитер, поэтому мы дописываем его в данном примере

Ну вот как то так smile Ну это конечно грубый пример, и вообще split не в этой области используется) Но если норм проверки на ник поставишь, то все бует оки smile


Сообщение отредактировал SlootLite - Суббота, 26.02.2011, 15:06
 
OKStyle Дата: Суббота, 26.02.2011, 15:02 | Сообщение # 3
Архивариус
Группа: Администраторы
Зарегистрирован: 19.02.2011
Сообщений: 125
Репутация: 8
Статус: Offline
Где-то был вариант, но навскидку могу так предложить:

Code
new name[24], pos, tag[30];
GetPlayerName(playerid,name,24);
for(new offset; offset < strlen(name); offset++)
{
  if(strfind(name[offset],"]",true) != -1)
  {
   pos = offset;
  }
}
strins(tag,name,1,pos-1);


 
WiX Дата: Воскресенье, 27.02.2011, 01:53 | Сообщение # 4
Рядовой
Группа: Проверенные
Зарегистрирован: 24.02.2011
Сообщений: 4
Репутация: 0
Статус: Offline
Отлично, SlootLite, твой способ работает, спасибо большое, ps но ты где-то ошибся в самой функции split.
OKStyle, компилер ругается на строчку
Code
if(strfind(name[offset],"]",true) != -1)


Сообщение отредактировал WiX - Воскресенье, 27.02.2011, 01:53
 
OKStyle Дата: Воскресенье, 27.02.2011, 02:17 | Сообщение # 5
Архивариус
Группа: Администраторы
Зарегистрирован: 19.02.2011
Сообщений: 125
Репутация: 8
Статус: Offline
Замени её на:

Code
if(strcmp(name[offset],"]",true) == 0)


 
SlootLite Дата: Воскресенье, 27.02.2011, 02:34 | Сообщение # 6
Рядовой
Группа: Проверенные
Зарегистрирован: 24.02.2011
Сообщений: 14
Репутация: 0
Статус: Offline
ну вообщето сама функция split была еще давным давно, и ошибиться я немог) так как не я ее писал smile ты можнт непонял работу этой функции?
 
WiX Дата: Воскресенье, 27.02.2011, 15:17 | Сообщение # 7
Рядовой
Группа: Проверенные
Зарегистрирован: 24.02.2011
Сообщений: 4
Репутация: 0
Статус: Offline
Ну ты просто либо скопировал что-то не правильно, потому что когда я ее взял с вики ерроры исчезли
Ну или я что-то не так сделал


Сообщение отредактировал WiX - Воскресенье, 27.02.2011, 15:18
 
SlootLite Дата: Воскресенье, 27.02.2011, 19:06 | Сообщение # 8
Рядовой
Группа: Проверенные
Зарегистрирован: 24.02.2011
Сообщений: 14
Репутация: 0
Статус: Offline
Я ее копирнул из своего мода, а доэтого копирнул из гф. Она отлично работает. Ошибок невозникало, так что скорее всего ты что то намудрил
 
  • Страница 1 из 1
  • 1
Поиск:

Сайт управляется системой uCoz