PDA

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



maikl2111
25.01.2015, 20:02
Здравствуйте, битый час думаю как сделать..


Для удобства мне нужно сделать так:

При вводе команды проверялось есть ли бизнес у игрока или нет, через запрос в базу данных.

else if(strcmp(cmd, "/edit", true) == 0)
{
if(!IsAPersona(playerid, biz)) return send(playerid, COLOR_GREY, "Вы не владеете бизнесом.");
}

Запрос

stock IsAPersona(playerid, biz)
{
mysql_format(connects,str_send[playerid], MAX_STRING,"SELECT `BizID`,`MysqlID` FROM `StaffBiznes` WHERE BizID = '%i' AND `MysqlID` = '%i'",biz, Player[playerid][pMysqlID]);
return mysql_function_query(connects, str_send[playerid], true, "IsAPersona_Mysql","d", playerid);
}

паблик запроса

publics IsAPersona_Mysql(playerid)
{
str_send[playerid][0]=0;
static rows, fields;
cache_get_data(rows, fields);
if(rows) return true;
return false;
}

Код не работает, потому что mysql_function_query возвращает всегда 1.

Каким образом я могу сделать, чтобы у меня возвращало определенное значение, если есть бизнес или нет.
Да я знаю, что нужно делать действие в запросе в (rows), но это запутает только.

Mazzilla
26.01.2015, 10:14
На сколько я знаю, то таким способом вы не добьётесь возвращения в место вызова, придётся использовать вот так:

else if(strcmp(cmd, "/edit", true) == 0)
{
IsAPersona(playerid, biz);
return true;
}

stock IsAPersona(playerid, biz)
{
mysql_format(connects,str_send[playerid], MAX_STRING,"SELECT `BizID`,`MysqlID` FROM `StaffBiznes` WHERE BizID = '%i' AND `MysqlID` = '%i'",biz, Player[playerid][pMysqlID]);
return mysql_function_query(connects, str_send[playerid], true, "IsAPersona_Mysql","d", playerid);
}

publics IsAPersona_Mysql(playerid)
{
str_send[playerid][0]=0;
static rows, fields;
cache_get_data(rows, fields);
if(rows) return true;
return send(playerid, COLOR_GREY, "Вы не владеете бизнесом.");
}

maikl2111
26.01.2015, 21:54
На сколько я знаю, то таким способом вы не добьётесь возвращения в место вызова, придётся использовать вот так:

else if(strcmp(cmd, "/edit", true) == 0)
{
IsAPersona(playerid, biz);
return true;
}

stock IsAPersona(playerid, biz)
{
mysql_format(connects,str_send[playerid], MAX_STRING,"SELECT `BizID`,`MysqlID` FROM `StaffBiznes` WHERE BizID = '%i' AND `MysqlID` = '%i'",biz, Player[playerid][pMysqlID]);
return mysql_function_query(connects, str_send[playerid], true, "IsAPersona_Mysql","d", playerid);
}

publics IsAPersona_Mysql(playerid)
{
str_send[playerid][0]=0;
static rows, fields;
cache_get_data(rows, fields);
if(rows) return true;
return send(playerid, COLOR_GREY, "Вы не владеете бизнесом.");
}


А если после проверки мне нужно выполнить действие, допустим вывести диалог, где будут настройки.

Mazzilla
27.01.2015, 12:40
Вместо
return send(playerid, COLOR_GREY, "Вы не владеете бизнесом."); и будут действия.

maikl2111
27.01.2015, 20:09
Вместо
return send(playerid, COLOR_GREY, "Вы не владеете бизнесом."); и будут действия.

Спасибо, но вы 1 пост читали, мне нужно чтобы все действия были в команде /edit.

MacMailler
29.01.2015, 05:02
Если версия mysql-плагина R33+

stock IsAPersona(playerid, biz) {
mysql_format(connects,str_send[playerid], MAX_STRING,"SELECT `BizID`,`MysqlID` FROM `StaffBiznes` WHERE BizID = '%i' AND `MysqlID` = '%i'",biz, Player[playerid][pMysqlID]);
new Cache:result = mysql_query(connects, str_send[playerid], true);
str_send[playerid] = 0;
new rtrn = cache_get_row_count() > 0 ? (1) : (0);
cache_delete(result);
return rtrn;
}