PDA

Просмотр полной версии : [Вопрос] Как убрать "_" в никнейме, при отправке сообщения в чат?



Dragunovsky
31.07.2017, 19:08
Как убрать "_" в никнейме, при отправке сообщения в чат?

VVWVV
31.07.2017, 20:33
Необходимо создать буфер для хранения изменённых данных. После чего записать действующий никнейм с помощью функции GetPlayerName, а после, высчитав позицию знака '_', заменить значение в ячейке. Если знаков больше чем один, то необходимо, соответственно, использовать цикл.

pochemkr
08.08.2017, 17:29
Как создать такую переменную, чтобы ее значение было разным в зависимости от уровня игрока. Например, если бы у игрока был бы 1 уровень, то значение переменной одно, а если к примеру 5 уровень - другое. Можно какую-нибудь примерную конструкцию? Я в этом деле новичок

wAx
08.08.2017, 17:37
Как создать такую переменную, чтобы ее значение было разным в зависимости от уровня игрока. Например, если бы у игрока был бы 1 уровень, то значение переменной одно, а если к примеру 5 уровень - другое. Можно какую-нибудь примерную конструкцию? Я в этом деле новичок
это же основы языка

new PlayerLevel[MAX_PLAYERS]; // объявление переменной
PlayerLevel[playerid] = GetPlayerScore(playerid); // присвоение значения

умельцы уже накатали множество тем с заголовками "pawn с нуля", "pawn для новичков", загляни обязательно.

ORLADOK
09.08.2017, 23:24
Не могу знать точно, стоит ли это выкладывать в сеть:

CMD:name(playerid, params[]){
new nickname[MAX_PLAYER_NAME], name[20], surname[20];
GetPlayerName(playerid, nickname, MAX_PLAYER_NAME);

sscanf(nickname, "p<_>s[20]s[20]", name, surname);
printf("%s %s", name, surname);

print("\n\n"); // Другая версия

for(new i = 0; i < sizeof(nickname); i++){
nickname[i] = nickname[i] == '_' ? ' ' : nickname[i];
}
print(nickname);
}

Batka1337
10.08.2017, 00:02
Можно использовать Sparam


new str[10];
new str1[10];
sparam(str, sizeof(str), name, '_', 0);
sparam(str1, sizeof(str1), name, '_', 1);
//str первая часть ника
//str1 вторая

ORLADOK
10.08.2017, 00:46
Можно использовать Sparam


new str[10];
new str1[10];
sparam(str, sizeof(str), name, '_', 0);
sparam(str1, sizeof(str1), name, '_', 1);
//str первая часть ника
//str1 вторая

Еще больше мазахизма)))
sscanf(nickname, "p<_>a<s[20]>[2]", string);
printf("%s %s", string[0], string[1]);

Fallen A.
10.08.2017, 01:32
Еще больше мазахизма)))
sscanf(nickname, "p<_>a<s[20]>[2]", string);
printf("%s %s", string[0], string[1]);

И где ж тут мазахизм?

ORLADOK
10.08.2017, 02:04
то же самое, что я писал выше, только теперь использую массив на 2 значения (по мне это мазахизм) =)

Fallen A.
10.08.2017, 10:01
то же самое, что я писал выше, только теперь использую массив на 2 значения (по мне это мазахизм) =)

Ничего особенного. В том же c# это было бы больше похоже на обычную практику.

$continue$
10.08.2017, 12:53
А можно ещё регексами (https://regex101.com/r/BkXJLG/1)

Redsan
10.08.2017, 13:18
/dell, индусский код

VVWVV
10.08.2017, 13:23
Мой вариант:


...
strdel(nickname, underscore, underscore+1);
strins(nickname, " ", underscore);
...


Зачем все это, ведь можно просто записать значение в ячейку..

Redsan
10.08.2017, 13:26
Зачем все это, ведь можно просто записать значение в ячейку..

Верно, как же я так :dash2:

ziggi
10.08.2017, 16:06
Еще можно разрешить пробельный символ в нике с помощью YSF и заменить символ в нике с помощью SetPlayerName. Тогда в TAB ник тоже будет разделен.
Правда я это не тестировал, но предполагаю, что это сработает.