Sorry @M4D, this will always return 1.
@OP:
Let's think for a second of threaded queries handling like dialog handling. Only change is that you specify your own callback, and not use the OnDialogResponse and determine what to run depending on dialogid.
Using y_inline can simplyfy callbacks a lot, but this function can't be directly ported. Let's say you want to fetch usernames of all admins in database.
Standard way:
pawn Код:
enum E_USER_TYPE {
E_USER,
E_ADMIN
}
ShowAdminUsernames(playerid)
{
new
query[64]
;
mysql_format(dbhandle, query, sizeof query, "SELECT username FROM users WHERE type = %d", _:E_ADMIN);
mysql_tquery(dbhandle, query, "ShowUsernames", "d", playerid);
SendClientMessage(playerid, 0xBADA55AA, "Loading database admins");
return 1;
}
forward ShowUsernames(playerid);
public ShowUsernames(playerid)
{
new
results = cache_get_row_count(),
tmp[MAX_PLAYER_NAME + 1]
;
if (!results) {
return SendClientMessage(playerid, 0xBADA55AA, "No admins in database");
}
for (new idx = 0; idx != results; ++idx) {
cache_get_field_content(idx, "username", tmp, dbhandle);
SendClientMessage(playerid, 0xBADA55AA, tmp);
}
return 1;
}
Simple as that. With y_inline you can keep your logic together
pawn Код:
enum E_USER_TYPE {
E_USER,
E_ADMIN
}
ShowAdminUsernames(playerid)
{
new
query[64]
;
mysql_format(dbhandle, query, sizeof query, "SELECT username FROM users WHERE type = %d", _:E_ADMIN);
inline ShowUsernames()
{
new
results = cache_get_row_count(),
tmp[MAX_PLAYER_NAME + 1]
;
//As you can see playerid is available here, scope doesn't change!
if (!results) {
return SendClientMessage(playerid, 0xBADA55AA, "No admins in database");
}
for (new idx = 0; idx != results; ++idx) {
cache_get_field_content(idx, "username", tmp, dbhandle);
SendClientMessage(playerid, 0xBADA55AA, tmp);
}
}
mysql_tquery_inline(dbhandle, query, using inline ShowUsernames, "");
SendClientMessage(playerid, 0xBADA55AA, "Loading database admins");
return 1;
}
Even easier! y_dialogs supports y_inline as well so you don't have to jump between your code and OnDialogResponse callback.