Лотерея

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
почему в конце второй раз ник?
Потому что у тебя нет того же нулевого символа в строке, которую создали. В неё, похоже, попадает машинный мусор, как c decl, в данном случае - никнейм, ведь он и сохранялся последним (первый буфер).
Тебе же нужно 4 символа? Так и ограничивай в конце:
PHP:
char fourchars[5]; fourchars[4] = '\0';
Как раз и останется dill. Сейчас у тебя массив мал, нужно 5. Оффтоп
 

diller110

Добрая душа
Сообщения
353
Реакции
278
Вот наверно самый работоспособный вариант:
PHP:
public Action Cmd_FourChars(int client, int args){
	char nickname[64], fourchars[5]; fourchars[4] = '\0';
	GetClientName(client, nickname, 64);
	int length = strlen(nickname), fourcharscount = 0;
	for (int i = 0; i < length, fourcharscount<4; i++)
		if(IsCharAlpha(nickname[i])) fourchars[fourcharscount++] = nickname[i];
	PrintToServer("%N %s ", client, fourchars);
	return Plugin_Handled;
}
Но в целом от идеи отказался, на практике она не так эффектна как представлялось.
Насчет
Вообще, смутный код.
Всегда рад конструктивной критике.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Всегда рад конструктивной критике
Тогда, твой вариант в лучшем виде:
PHP:
public Action Cmd_FourChars(int client, int args){
    char nickname[MAX_NAME_LENGTH];
    GetClientName(client, nickname, MAX_NAME_LENGTH);
	int fourcharscount = 0;
    for (int i = 0, length = strlen(nickname); i < length; i++)
        if(IsCharAlpha(nickname[i])){
			nickname[fourcharscount] = nickname[i];
			if(++fourcharscount == 4) break;
		}
	nickname[fourcharscount] = '\0';
    PrintToServer("%N %s ", client, nickname);
    return Plugin_Handled;
}
Здесь учитывается, что длина никнейма может составить даже 1 букву (или 0, если всё - в символах). Русский конечно не поддерживает.
 
Сверху Снизу