[Duda] Mysql
#1

Hola vengo con una duda. Estoy haciendo un GM de 0 en mysql donde estoy haciendo un sistema de inventario el cual facilmente en y_ini puedo colocar en el enum algo como SlotsInventario[11] y con un blucle en y_ini crear y guardar todos esos slots (Y puedo manejarlos mas facil y dinamico de esa forma) Como podria hacer lo mismo en mysql sin necesidad de crear en las tablas tantas columnas como SlotsInventario1 SlotsInventario2 SlotsInventario3 etc.. Y poder hacerlo como en y_ini.
Reply
#2

Lo mas conveniente es hacerlo como: "Slot_1, Slot_2, Slot_3, etc" ya que te permite guardar informacion independientemente. Pero tambien puedes guardar todo en una columna separandolos por comas, y podras usar sscanf o una funcion llamada (split) para determinar cual slot es cual al hacer un query.

Todo sigue igual, puedes usar listas (enums) en MySQL tanto como en Y_INI y en cualquier otro lugar en donde lo quieres usar, nada te impide hacerlo.
Reply
#3

Si pero el sistema que ya tengo echo en otro GM que es y_ini es muy dinamico por ese lado ya que no pasa por cada uno de los 20 slots para guardar/usar si no que va directo (Me ahorre mucho trabajo con eso) Pero muchas gracias vere como me sale como me has dicho. Si no bueno uso Slot_1 , Slot_2 etc.

El problema mayor viene cuando en el sistema de casas tiene sistema de muebles donde los slots son 50 :S
Reply
#4

Por eso se creo el SQL, para manejar una gran cantidad de informacion de una manera rapida.
Reply
#5

Vale lo e pensado por un momento y ya e encontrado formas mas faciles que usando "slots" muchas gracias.
Reply
#6

Un delimitador, SickAttack lo dijo y vendrнa siendo la mejor forma, creas una columna tipo varchar de muchos carбcteres y ahн lo haces delimitando, igual, te ahorrarнa la necesidad de guardar muchas columnas a pasar a guardar todo en una sola.

Para tu sistema de casas crea otra tabla y almacena ahн ->

[Ej.]

El ID de casaEl objetoLa cantidadEl tipo.
42323151
ID de la casa -> [El Id de casa del cual es dependiente la fila] -> El ID no debe ser el que tenga en SA:MP si no la pk id con que se insertу a la DB.
El objeto -> El ID.
El tipo -> Asн podrнas matar dos pбjaros de un tiro y poner que se guarden armas o objetos.

Y al cargar las casas cargas estas filas asн se ponen los datos al ID de la casa, te quitas tambiйn la limitaciуn del mбximo de lo que se puede guardar en ellas.

Para ver cuantos slots ha usado creas un bucle para ver cuantos espacios estбn en dependencia del ID de la casa.

PHP код:
enum ObjetosCasas
{
    
oExist,
    
oHouse,
    
oObject,
    
oAmount,
    
oType /* Puedes aqui situar un ID, ej.
                1 = Objetos
                2 = Armas.
                                        */
};
new 
ObjectHouseInfo[MAX_HOUSE_OBJECTS][ObjetosCasas];
stock AddHouseObject(HouseIDObjectIDAmountType)
{
    new
        
str[128];
    for(new 
i!= MAX_HOUSE_OBJECTSi++)
    {
        if(
ObjectHouseInfo[i][oExist])
            continue;
        
ObjectHouseInfo[i][oExist] = true;
        
ObjectHouseInfo[i][oHouse] = HouseID;
        
ObjectHouseInfo[i][oObject] = ObjectID;
        
ObjectHouseInfo[i][oAmount] = Amount;
        
ObjectHouseInfo[i][oType] = Type;
        
format(strsizeof(str), "INSERT INTO armario_casas (CasaID, ObjetoID, Cantidad, Tipo) VALUES (%d, %d, %d, %d)"HouseIDObjectIDAmountType);
        
mysql_query(Conexionstrtrue); // Insertas en una a una y de esta forma es diferente, asi mismo cargaras una a una.
        
return 1;
    }
    return 
0;

Es solo un ejemplo, si quieres te ayudo.
Reply
#7

Vale muchas gracias Zume, por el ejemplo y el tiempo. Me va a servir muy bien con ese ejemplo es suficiente.

Pense algo mas o menos igual pero como tambien viene las variables x y z y sus rotaciones del objetos supongo que seria mejor una tabla solo para muebles no?. y Ahi guardar el ID de la casa y de esa forma identificar de quien es quien cada mueble y si puede modificarlo o no.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)