[Duda] Sobre las armas y su potencia.
#9

Se los dejo mбs explicitamente;
- Tengo un guardado de datos manejandolo con el clбsico fread, etc; y quй se guardan cuando es llamada OnPlayerDisconnect.
Ejemplo (para guardar un dato):
pawn Код:
//Tomamos el nombre, lo metemos en una variable y despuйs formateamos todo el archivo de esta forma:
format(var, 256, "Variable1=%i\n", OnlineInfo[playerid][Carid]); fwrite(Archivo, var);
Bien, entonces yo me puse a hacer un 'sistema' vнa dialogo, para modificar el archivo del usuario (Quй tiene que estar ON) y a la vez aplicarle la variable IG (Para quй al desconectarse la variable no se vaya a modificar).
El comando lanzarб un dialogo tipo INPUT para insertar el nombre del usuario (Aquн es donde entra OnDialogResponse, quй esta asн:
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    static Cliente[MAX_PLAYER_NAME], Usuario[MAX_PLAYER_NAME + 5], giveplayerid; //El problema en Giveplayerid

    if(dialogid == NombreArchivo)
    {
        if(!response) return SendClientMessage(playerid, COLOR_RED, "Has salido del menu de Tuning"), true;
        if(response)
        {
            if(!strlen(inputtext)) return ShowPlayerDialog(playerid, IncersionCliente, DIALOG_STYLE_INPUT, "|**| Menu de Tuneo |**|"," ЎTienes que insertar el nombre del Dueсo! ", "Seleccionar", "Salir");
            strmid(Cliente,inputtext,false,strlen(inputtext),sizeof(Cliente));
            format(Usuario, sizeof(Usuario), "%s.ini", Cliente);
            giveplayerid = ReturnUser(inputtext);
            if (fexist(Usuario))
            {
                if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_RED, "Error: El usuario debe de estar Online"),true;
                ShowPlayerDialog(playerid, 2, DIALOG_STYLE_LIST,"|**| Datos |**| Cuenta de Usuario", " Aquн las opciones", "Aceptar", "Salir");
            } else if(!fexist(Usuario)) return SendClientMessage(playerid, -1, "Error: Has escrito un nombre erroneo o el Archivo no existe!"), true;
        } return true;
    }
    return true;
}
Como pueden observar ahн, para almacenar la ID del usuario ( Quй es tomada con ReturnUser(inputtext); ) se almacena en la variable llamada 'giveplayerid' (Declarada como variable estбtica).
Bien, hasta aquн todo bien; cuando selecciono otra opciуn de otro dialogo (Por ejemplo, selecciono la opciуn N°1 de la lista) y la modifico asн:
pawn Код:
if(dialogid == 1) {
        if(!response) return SendClientMessage(playerid, -1, "_"), true;
        if(response) {
            switch ( listitem ) {
                case 0: {
                    OnlineInfo[giveplayerid][Carid] = 311;
                                GuardadoCuentas(giveplayerid);
                    PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
                    SendClientMessage(playerid, C_DBlue, "Mensaje bla bla bla");
                }
            }
        }
        return true;
    }
Eso me asigna la variable como yo quiero y guarda el archivo y tal (ESTANDO giveplayerid como variable Estбtica), el problema viene cuando se quieren modificar 2 o mбs cuentas a la vez, ya quй al ser estбtica esta almacena la ID y al acabar de guardar una cuenta, la ID, como queda almacenada; se le guardan los datos de La cuenta que se esta editando y eso me causa el lio.
Quiero ver como sustituir esa variable (giveplayerid) para que deje de ser estбtica y funcione correctamente al editar 2 o mбs cuentas.
Sн sustituyo Giveplayerid por 'new giveplayerid;' se asigna el id del usuario a editar (para verificar si el usuario esta online o no) pero cuando comienzo a modificar las variables, estas se asignan al ID 0, es como sн la variable se vaciara automбticamente....
Ese es el problema, esa fucking variable...
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)