[DUDA] Mysql
#1

No se como traer informacion de jugadores q no estan conectados. Por ejemplo noc poner en un msgbox todos los nombres de los usuarios que tengan encendedor no importa si estan o no conectados. Yo se que en mysql seria algo de SELECT nombres FROM usuarios WHERE encendedor = 1. Pero como hago para tomar esos nombres y ponerlos en un msgbox?

No pido un script completo ni nada de eso, solo si me pueden poner un ejempo o dar una idea porque la verdad no tengo la menor idea de como hacer eso
Reply
#2

Suponiendo que utilizas la version R7+ del plugin MySQL de BlueG y tienes alguna idea de como utilizar las funciones de cache correctamente, eso serнa mas o menos algo asi:

pawn Код:
//En alguna parte del cуdigo...
mysql_function_query(conexion, "SELECT `nombre` FROM `usuarios` WHERE `encendedor` =  '1' LIMIT 0, 1", true, "EnlistarJugadoresConEncendedor", "i", playerid);
//...

public EnlistarJugadoresConEncendedor(playerid)
{
    new rowCount, fieldCount, playersName[MAX_PLAYER_NAME], string[1000];
    cache_get_data(rowCount, fieldCount, conexion);

    if(!rowCount)
    {
        return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Error", "No hay jugadores con el encendedor activado.", "Cerrar", "");
    }

    for(new rowIndex; rowIndex < rowCount; rowIndex++)
    {
        new string2[30];
        cache_get_row(rowIndex, 0, playersName, conexion);
        format(string2, sizeof(string2), "%s\n", playersName);
        strcat(string, string2);
    }

    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Jugadores con encendedor", string, "Cerrar", "");
    return 1;
}
Reply
#3

https://sampwiki.blast.hk/wiki/MySQL
https://sampforum.blast.hk/showthread.php?tid=318578
Reply
#4

Aqui un poco mбs optimizado el script y en estilo de lista.

pawn Код:
CMD:prueba(playerid, params[])
{
  mysql_function_query(conexion, "SELECT `nombre` FROM `usuarios` WHERE `encendedor` =  '1' LIMIT 0, 1",   true, "EnlistarJugadoresConEncendedor", "i", playerid);
  return 1;
}

public EnlistarJugadoresConEncendedor(playerid)
{
    new rowCount, fieldCount, playersName[MAX_PLAYER_NAME];
    cache_get_data(rowCount, fieldCount, conexion);
    if(!rowCount) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Error", "No hay jugadores con el encendedor activado.", "Cerrar", "");
    for(new rowIndex; rowIndex < rowCount; ++rowIndex)
    {
         new string2[30] = EOS;
         cache_get_row(rowIndex, 0, playersName, conexion);
         format(string2, sizeof(string2), "%s%s\n", string2, playersName);
    }  
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST, "Jugadores con encendedor", string, "Cerrar", "");
    return 1;
}
Un saludo.
Reply
#5

Es justo lo que necesitaba! pero yo tengo el plugin de G-sTyLeZzZ viejo (el que venia con sf-rp de trenico) aunq por las coincidencias del nombre parece ser q G-sTyLeZzZ es Blue G , digo por la g, si ese es el caso al remplazar el plugin no tendria que cambiar todas las funciones no? siguen con el mismo nombre? osea, podria cambiar el plugin sin modificar los sistemas en mysql?

EDIT: Acabo de ver que el es G-sTyLeZzZ por el primer comentario en su publicacion jajaaj, bueno, podria actualizar el plugin sin tener q modificar script?
Reply
#6

Quote:
Originally Posted by ValenRatti
Посмотреть сообщение
Es justo lo que necesitaba! pero yo tengo el plugin de G-sTyLeZzZ viejo (el que venia con sf-rp de trenico) aunq por las coincidencias del nombre parece ser q G-sTyLeZzZ es Blue G , digo por la g, si ese es el caso al remplazar el plugin no tendria que cambiar todas las funciones no? siguen con el mismo nombre? osea, podria cambiar el plugin sin modificar los sistemas en mysql?

EDIT: Acabo de ver que el es G-sTyLeZzZ por el primer comentario en su publicacion jajaaj, bueno, podria actualizar el plugin sin tener q modificar script?
Seсor el plugin MySQL R7+ de BlueG(G-sTyLeZzZ) es orientado a rosca y los anteriores no lo son, por lo tanto deberб cambiar mucho cуdigo MySQL ya que en la versiуn R7 y superiores se reemplaza la funciуn mysql_query por mysql_function_query.

PD: Si usted necesita convertir este cуdigo para utilizarlo en la versiуn R6 y anteriores utilize mysql_num_rows en el loop y remueva toda la funciуn de cache.

Un saludo.
Reply
#7

Como puedo cambiar mysql_query por mysql_function_query, la funcion cambio mucho como hago? Mi codigo usa mysql_query muy facilmente mysql_query(query); (usando format antes) pero si solo cambio el nombre por mysql_function_query me da error argument type mismatch (argument match)

Como lo cambio?
Reply
#8

Quote:
Originally Posted by ValenRatti
Посмотреть сообщение
Como puedo cambiar mysql_query por mysql_function_query, la funcion cambio mucho como hago? Mi codigo usa mysql_query muy facilmente mysql_query(query); (usando format antes) pero si solo cambio el nombre por mysql_function_query me da error argument type mismatch (argument match)

Como lo cambio?
Aqui un Tutorial hay usted entenderб mбs como utilizar el MySQL R7.

Ejemplo:

pawn Код:
static conexion; // Variable que obtendrб un valor true o false verificando si el servidor estб conectado al servidor MySQL.
public OnGameModeInit()
{
    conexion = mysql_connect(HOST, USER, DB, PASS);
    return 1;
}
mysql_function_query(conexion, "Consulta", true, "Callback, "Tipos de parametros del callback", parametros);
Modo de uso:

pawn Код:
CMD:prueba(playerid, params[])
{
    static query[128] = EOS, Nombre[24] = EOS;
    GetPlayerName(playerid, Nombre, 24);
    mysql_format(conexion, query, "`UPDATE Usuarios` SET Dinero = '%i' WHERE Nombre = '%s'", GetPlayerMoney(playerid), Nombre);
    mysql_function_query(conexion, query, false, "CallBack", "i", playerid); // i es el tipo de parametro del callback y playerid es el valor a enviar al parametro del CallBack, pongo false ya que no voy a obtener informaciуn de las tablas, se pone true cuando se va obtener informaciуn de la tabla.
    return 1;
}
public CallBack(playerid)
{
   SendClientMessage(playerid, -1, "Usted ha realizado una consulta MySQL.");
   return 1;
}
Le sugiero leerse el tutorial que le he pasado para que entienda mejor como utilizar las cache.

Un saludo.
Reply
#9

Fother llenar el cуdigo de variables estбticas no es optimizarlo xD, mбs bien estбs consumiendo memoria sin necesidad por que el bloque de memoria no se libera.
Reply
#10

Quote:
Originally Posted by Jupit3r
Посмотреть сообщение
Fother llenar el cуdigo de variables estбticas no es optimizarlo xD, mбs bien estбs consumiendo memoria sin necesidad por que el bloque de memoria no se libera.
No sabia eso, igualmente yo utilizo variables globales las cuales siempre estбn ocupando un lugar en la memoria y hay si logro optimizaciуn de cуdigo ya que estas procesan mбs rбpido que un new.

Muchas gracias por la informaciуn.

Un saludo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)