|
Отделение стандартного тега от ника
|
|
|
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]);// При разделении теряется делимитер, поэтому мы дописываем его в данном примере Ну вот как то так Ну это конечно грубый пример, и вообще split не в этой области используется) Но если норм проверки на ник поставишь, то все бует оки
Сообщение отредактировал 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 была еще давным давно, и ошибиться я немог) так как не я ее писал ты можнт непонял работу этой функции?
|
| |
| |
|
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
| Я ее копирнул из своего мода, а доэтого копирнул из гф. Она отлично работает. Ошибок невозникало, так что скорее всего ты что то намудрил
|
| |
| |