SpawnPlayer(playerid) no es llamado
#1

Bueno, como dice el titulo, la funcion SpawnPlayer(playerid) no se llama cuando respondo un dialogo.
Yo tengo que cuando el jugador se conecte con un registro de dialogo, que si la pass que puso es correcta que carge los datos y espawnee y le puse SpawnPlayer, pero no hace nada :S

Yo a la funcion del dialogo y verificar la tengo asi, en on dialog response
El dialog id 2 (case 2 es el dialogo del login, no uso ningun dialogo mas en FS o en otro script externo...

pawn Код:
case 2:
        {
            if(strlen(dini_Get(Arch, "Contra")) == strlen(inputtext)) CargarCuenta(playerid);
            else ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"{FFFFFF}Left {FF0000}8 {FFFFFF}Dead","Contraseсa Incorrecta.\n\nIntentelo nuevamente.","Login","");
        }

Y el carga cuenta...

pawn Код:
CargarCuenta(playerid)
{
    format(Arch, sizeof(Arch), "L4D/%s.ini", NombreEx(playerid));
    Cuenta[playerid][Nivel] = dini_Int(Arch, "Nivel");
    Cuenta[playerid][Admin] = dini_Int(Arch, "Admin");
    Cuenta[playerid][Asesinatos] = dini_Int(Arch, "Asesinatos");
    Cuenta[playerid][Muertes] = dini_Int(Arch, "Muertes");
    Cuenta[playerid][MedK] = dini_Int(Arch, "MedK");
    Cuenta[playerid][Pil] = dini_Int(Arch, "Pildoras");
    SpawnPlayer(playerid);
}
Las variables si se cargan correctamente pero el spawn no lo hace y me mada a la seleccion de skin
Espero que me ayuden
Reply
#2

creo que estas confundiendo las funciones
if(strlen(dini_Get(Arch, "Contra")) == strlen(inputtext)) CargarCuenta(playerid);
GuardarCuenta(playerid)
{
//blabla
SpawnPlayer(playerid);
}
pawn Код:
//pero por que usas strlen para saber si la contraseсa es la misma
no seria mejor asi?
if(strcmp(dini_Get(Arch, "Contra"),inputtext,true) == 0) CargarCuenta(playerid);
Reply
#3

Usa un print arriba y abajo del spawnplayer, a ver si llega hasta ahн o no.
Reply
#4

strlen retorna la lengitud de una cadena, como dice Daniel-92, por lo tanto si un jugador introduce como contraseсa cualquier cosa pero lo que introduciу es de la misma longitud que la contraseсa real le va a dejar entrar.

Por ejemplo:
Introduzco contraseсa 'pepe57878'
Pero la contraseсa correcta es 'jeje88137'

De todas maneras me va a dejar entrar asн porque son del mismo tamaсo.

Tambien revisa que tus funciones que retornan uno estйn al final, esto es algo que me ha ocurrido antes:
pawn Код:
stock Funcion()
{
    new Hora;
    Hora = 10;
   
    if (Hora == 10)
    {
        ActualizarHora(10);
    }
   
    printf("Hora: %d", Hora);
    return 1;
}

stock ActualizarHora(Hora)
{
    SetWorldTime(Hora);
    return 1;
}
Como ActualizarHora returna algo, el cуdigo se detiene cuando es llamada la funciуn.
Reply
#5

Lo que puse en GuardarCuenta, me equivoque yo xD, es cargar cuenta solo que me confundi y puse otro codigo..
Lo del print si probe tambien y si llega pero el onplayerspawn no se llama.

Lo de la longitud me acabo de dar cuenta y pudo hacer sido un bug importante xD gracias. pero ese no era el problema xD gracias igualmente por ese error que tube.
Lo del return no croe uqe sea porque el de guardar y otras funciones que no tiene return andan bien...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)