PDA

Просмотр полной версии : [Вопрос] Не выводится текст



vovandolg
24.12.2015, 00:39
if(strcmp(cmdtext, "/ser", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] < 13) return 1;
tmp = strcharsplit(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "::: Ââåäèòå: /ser [id]");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid)) return 1;
new ser[60],sstring[84];
gpci(giveplayerid, ser, sizeof(ser));
format(sstring, sizeof(sstring),"[%d]: {FFFFFF}%s",giveplayerid,ser);
SendMes(playerid,-1,sstring);
//SendClientMessage(playerid,0x6EF83CFF,sstring);
return 1;
}
И тут я не могу понять почему не выводится сериал в чат...
Ячейкам значения больше делал и бестолку...
Если ник выводить, то он выводится, а этот gpci не фурычит!

$continue$
24.12.2015, 01:38
Ознакомьтесь с функцией GetPlayerClientID [gpci] (http://pro-pawn.ru/showthread.php?12530-gpci)
Попробуйте:


if (strcmp(cmdtext, "/ser", true) == 0)
{
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] < 13 || !IsPlayerConnected(giveplayerid)) return 0;
tmp = strcharsplit(cmdtext, idx);

if (!strlen(tmp))
return SendClientMessage(playerid, COLOR_WHITE, "::: Ââåäèòå: /ser [id]");

const LENGHT_BUFFER = 40 + 1;
static const string[] = "[%d]: {FFFFFF}%s";
new str[sizeof(string) - 2 + LENGHT_BUFFER];
gpci(giveplayerid, str);
format(str, sizeof(str), string, giveplayerid, str);
SendClientMessage(playerid,-1, str);
return 1;
}

vovandolg
24.12.2015, 02:23
чу-чуть поменял чтобы не было совпадений


if(strcmp(cmdtext, "/ser", true) == 0)
{
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] < 13 || !IsPlayerConnected(giveplayerid)) return 0;
tmp = strcharsplit(cmdtext, idx);
if (!strlen(tmp))
return SendClientMessage(playerid, COLOR_WHITE, "::: Введите: /ser [id]");
const LENGHT_BUFFER = 40 + 1;
static const stringrr[] = "[%d]: {FFFFFF}%s";
new strff[sizeof(stringrr) - 2 + LENGHT_BUFFER];
gpci(giveplayerid, strff);
format(strff, sizeof(strff), "[%d]: {FFFFFF}%s", giveplayerid, strff);
SendClientMessage(playerid,-1, strff);
return 1;
}

:pleasantry: А тут хлоп и вот это:

warning 202: number of arguments does not match definition
warning 203: symbol is never used: "stringrr"

$continue$
24.12.2015, 02:37
чу-чуть поменял чтобы не было совпадений


if(strcmp(cmdtext, "/ser", true) == 0)
{
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] < 13 || !IsPlayerConnected(giveplayerid)) return 0;
tmp = strcharsplit(cmdtext, idx);
if (!strlen(tmp))
return SendClientMessage(playerid, COLOR_WHITE, "::: Введите: /ser [id]");
const LENGHT_BUFFER = 40 + 1;
static const stringrr[] = "[%d]: {FFFFFF}%s";
new strff[sizeof(stringrr) - 2 + LENGHT_BUFFER];
gpci(giveplayerid, strff);
format(strff, sizeof(strff), "[%d]: {FFFFFF}%s", giveplayerid, strff);
SendClientMessage(playerid,-1, strff);
return 1;
}

:pleasantry: А тут хлоп и вот это:

warning 202: number of arguments does not match definition
warning 203: symbol is never used: "stringrr"

Update last post

vovandolg
24.12.2015, 03:33
Ознакомьтесь с функцией GetPlayerClientID [gpci] (http://pro-pawn.ru/showthread.php?12530-gpci)
Попробуйте:


gpci(giveplayerid, str);




warning 202: number of arguments does not match definition

Daniel_Cortez
24.12.2015, 08:29
warning 202: number of arguments does not match definition

Вы точно объявили функцию так, как показано в той теме?

vovandolg
24.12.2015, 20:14
Вы точно объявили функцию так, как показано в той теме?
Ах вот и ошибка благодарю)
Я из других статей где то давно ещё нашёл эту функцию и там она была вот так объявлена:

native gpci(playerid, serial[], len);
Попозже протестирую, скажу чего как..

- - - Добавлено - - -

Вот ещё вопрос как её в БД записать?
А то я смотрю с ней не всё так просто.

vovandolg
25.12.2015, 05:57
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] < 13 || !IsPlayerConnected(giveplayerid)) return 0;
tmp = strcharsplit(cmdtext, idx);

if (!strlen(tmp))
return SendClientMessage(playerid, COLOR_WHITE, "::: Ââåäèòå: /ser [id]");



Всё думаю почему ты такую последовательность задал если по сути надо сразу проверку делать админ или приконнектился, а потом всю уже и команду + у меня с tmp все команды идут в такой последовательности:

tmp = strcharsplit(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "::: Ââåäèòå: /ser [id]");
giveplayerid = ReturnUser(tmp);
Ну да чёрт с ним выровнял, но результата не какого, мессейж высвечивается, а вот если уже айди задать то вообще не какого результата...
Уже всё сделал как подобающе...

Daniel_Cortez
25.12.2015, 15:05
Если указанный игрок не подключен, команда вместо вывода сообщения об ошибке просто втихаря завершит работу. Так и было задумано?
Логируйте значения, которые возвращают функции ReturnUser и gpci. Или просто вставляйте между строками кода что-нибудь типа "print("1")", "print("2")", что угодно - главное узнать, до какого момента выполняется код и почему прекращается выполнение.

vovandolg
26.12.2015, 03:32
if(strcmp(cmdtext, "/ser", true) == 0)
{
print("1");
tmp = strcharsplit(cmdtext, idx);
print("2");
if(!strlen(tmp))
return SendClientMessage(playerid, COLOR_WHITE, "::: Ââåäèòå: /ser [id]");
print("3");
giveplayerid = ReturnUser(tmp);
print("4");
const LENGHT_BUFFER = 40 + 1;
print("5");
static const stringrr[] = "[%d]: {FFFFFF}%s";
print("6");
new strff[sizeof(stringrr) - 2 + LENGHT_BUFFER];
print("7");
gpci(giveplayerid, strff);
print("8");
format(strff, sizeof(strff), stringrr, giveplayerid, strff);
print("9");
SendClientMessage(playerid,-1, strff);
print("10");
return 1;
}
Если ввести без айди то
1
2
Если ввести с чьим то айди(он онлайн при этом авторизован зарегался)
то не чего нету, глухо как в пещере

L0ndl3m
26.12.2015, 04:01
Попробуйте:

if(strcmp(cmdtext, "/ser", true) == 0)
заменить на

if(strcmp(cmdtext, "/ser", true, 4) == 0)

vovandolg
26.12.2015, 05:06
, 4
Что это даёт хотелось бы знать, ибо я ещё не особо умён...

Вопрос решён благодаря этой цифре!
Хотелось бы ещё узнать каким способом в БД записать gpci и возможно ли это?

vovandolg
26.12.2015, 19:51
Была команда до того как native подредактировал:


if(strcmp(cmdtext, "/aserials", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 11)
{
if(!fexist("SerialBans.txt")) return SendClientMessage(playerid, 0x6EF83CFF, "[Ëîã åù¸ íå ñîçäàí] Íà ñåðâåðå íåò çàáàíåííûõ {FFFFFF}Serial ID");
new banstr[512], File:file = fopen("SerialBans.txt", io_read);
SendClientMessage(playerid, -1, "{6EF83C}Ñïèñîê çàáàíåíûõ ñåðèéíûõ íîìåðîâ:");
if(file)
{
fread(file, banstr);
fclose(file);
if(strlen(banstr) < 2) return SendClientMessage(playerid, 0xFFFFFFFF, "Ñïèñîê ïóñò");
file = fopen("SerialBans.txt", io_read);
while(fread(file, banstr)) SendClientMessage(playerid, 0xFFFFFFFF, banstr);
fclose(file);
}
return 1;
}
}

Я там держал все serial's, сегодня случайно решил проверить и обнаружил что список не выводит больше!
Работает так когбудто выше разобранная, помогите до конца решить:to_take_umbrage:

vovandolg
27.12.2015, 01:38
Тему можно считать решёной в общем! :wizard:
Спасибо всем кто помог!