Eso sirve para las threaded queries, que son consultas que a diferencia de versiones anteriores no interrumpen el proceso del servidor hasta que los datos esten listos y puedan ser procesados, este tipo de consultas al tener los datos listos llama una funcion definida en la cual vas a poder trabajar con los datos que pediste en la consulta (SELECT) o cuando la consulta se haya ejecutado con exito(UPDATE, INSERT INTO, DELETE, etc).
connectionHandle es una ID de conexion que te devuelve mysql_connect, generalmente queda en 1 ya que no se usa mas de 1 base de datos.
query iria la consulta, Ejemplo: SELECT * FROM Accounts WHERE ID=1
cache solo usalo en consultas SELECT, esta sirve para que los datos de las consultas sean puestos en la memoria y luego de al terminar la funcion se libera la memoria (mysql_store_result y mysql_free_result no son mas necesarios).
callback es la funcion public donde se va a llamar al tener los datos listos o la consulta se ejecute con exito.
format irian los tipos de variables que son los parametros, parecido al SetTimerEx y sscanf
float irian las variables que se pasan a la funcion, generalmente es la id del jugador, o sea playerid.
Ejemplo:
pawn Код:
public OnPlayerConnect(playerid)
{
new string[32], name[24];
GetPlayerName(playerid, name, 24);
mysql_format(1, string, 128, "SELECT ID FROM Accounts WHERE Username='%e'", name); //este es un format especial en el cual al poner %e haria lo mismo que la funcion mysql_real_escape_string, para evitar SQL Injections
mysql_function_query(1, string, true, "OnPlayerExistsOnDB", "i", playerid);
return 1;
}
//me da paja poner el forward
public OnPlayerExistsOnDB(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
SendClientMessage(playerid, -1, "Esta cuenta existe usa /login contraseсa");
}
else
{
SendClientMessage(playerid, -1 "Esta cuenta no esta registrada, usa /register");
}
return 1;
}