PDA

Просмотр полной версии : [Вопрос] Строка strcat



BadPawn
14.04.2016, 06:47
здрасти. давненько ничего не писал. )))



CMD:admins(playerid)
{
static const str[] = "Администратор ";

new buff[2 + sizeof str + MAX_PLAYER_NAME], count = 1;

foreach(new i: Player)
{
if(1 >= aInfo[i][aAdmin] <= 5)
{
SendClientMessage(playerid, -1, "* Админы онлайн:");
strcat(buff, str);
strcat(buff, pInfo[i][pName]);
SendClientMessage(playerid, -1, buff);
}
else return SendClientMessage(playerid, -1, "* Нет админов онлайн.");
}
return 1;
}

функция strcat вставляет текст в окончание строки, а можно поместить его в начало каким-нибудь неизвестным мне образом?

До 'Администратор'.

$continue$
14.04.2016, 08:19
Используйте strins (http://wiki.sa-mp.com/wiki/Strins)

BadPawn
14.04.2016, 08:42
Так.

Далее. До 'Администратор' будут порядковые числа, зависящие от кол-ва админов онлайн. Первое значение 1, далее по сканированию +1. Создал глобальную переменную с значением 1, но strins используется так:

string(1var, "текст", 0);

у меня же,

new count = 1;
в str нужно в начало занести значение переменной count. можно как-то обойтись без формата строки?

Иван Бубнов
14.04.2016, 16:14
COMMAND:admins(playerid, params[])
{
new
buff[17 + (-2 + MAX_PLAYER_NAME) + 1],
count;

foreach(new i: Player)
{
if(aInfo[i][aAdmin] == 0) continue;
count ++;
if(count == 1)
SendClientMessage(playerid, -1, "* Админы онлайн:");
buff = "Администратор ";
strcat(buff, pInfo[i][pName]);
}

if(count == 0)
SendClientMessage(playerid, -1, "Нет админов в сети!");

return 1;
}

BadPawn
14.04.2016, 17:37
не пацан, ты не вкурил. :)

count - количество найденных админов из онлайновых, по коду. с энглишем не очень, поэтому не страшно.
нашло 3 админа, к примеру, значит:

1. Администратор Вася Пупкин
2. Администратор Дима Грач
3. Администратор Енот Орехович

В конец строки добавлю имя с помощью strcat, все ровно. Как записать полученное число с переменной count в начало строки, тобишь у первого будет вначале Единица, у второго Двойка и у третьего Тройка?

Иван Бубнов
14.04.2016, 17:52
format(str, sizeof(str), "%i. Администратор %s [ID: %d] [AFK: Нет]", count, pInfo[i][pName], i);

L0ndl3m
14.04.2016, 20:09
CMD:admins(playerid, params[]) {
new
buffer[128],
count;

SendClientMessage(playerid, -1, "* Админы онлайн:");
foreach (new i : Player) {
if (1 <= aInfo[i][aAdmin] <= 5) {
format(buffer, sizeof(buffer), "%i. Администратор %s", ++count, pInfo[i][pName]);
SendClientMessage(playerid, -1, buffer);
}
}
if (0 == count) {
SendClientMessage(playerid, -1, "* Нет админов онлайн.");
}
return 1;
}

BadPawn
14.04.2016, 20:18
Всем спасибо.

С помощью форматирования ясно дело как делается, а других способов не знаю.

DeimoS
14.04.2016, 20:47
new string[30] = "Администратор";
strins(string, "1. ", 0);
strcat(string, " Вася Пупкин");
Но это полное извращение