13.07.2014, 01:11
Hola estoy haciendo un registro mediante dialogos y mysql pero no logro que me funcione como quiero.
El problema que tengo es que al mostrar el dialogo de ingreso no me muestra la camara que yo le puse, pero si le doy enter (campo vacio o clave erronea) si me muestra la camara. Tambien me muestra la seleccion de personaje.
El otro problema es que al morir se me queda en OnPlayerRequestClass.
Dejo un video para que vean que sucede y se entienda un poco mejor.
https://www.youtube.com/watch?v=HI7dP-HH6OE
OnPlayerConnect
ComprobarUsuario
El dialogo "DIALOGO_INGRESO" y setea JugadorLogueado en 1 (ademas de hacer las comprobaciones de clave, etc) y llama a la funcion JugadorSpawn.
JugadorSpawn
OnPlayerRequestClass
OnPlayerSpawn
OnPlayerSpawn
El problema que tengo es que al mostrar el dialogo de ingreso no me muestra la camara que yo le puse, pero si le doy enter (campo vacio o clave erronea) si me muestra la camara. Tambien me muestra la seleccion de personaje.
El otro problema es que al morir se me queda en OnPlayerRequestClass.
Dejo un video para que vean que sucede y se entienda un poco mejor.
https://www.youtube.com/watch?v=HI7dP-HH6OE
OnPlayerConnect
pawn Код:
public OnPlayerConnect(playerid)
{
SetPlayerColor(playerid, COLOR_INVISIBLE);
TextDrawShowForPlayer(playerid, Box1);
TextDrawShowForPlayer(playerid, Box2);
mysql_format(MySQL, Query, sizeof(Query), "SELECT * FROM `usuarios` WHERE `Nombre` = '%e' LIMIT 1", NombreJugador(playerid));
mysql_tquery(MySQL, Query, "ComprobarUsuario", "i", playerid);
return 1;
}
pawn Код:
public ComprobarUsuario(playerid)
{
new fila, campo, string[256];
cache_get_data(fila, campo, MySQL);
if (fila)
{
CargarJugadorInfo(playerid);
format(string, sizeof(string), "{FFFFFF}Hola, %s!\n\nBienvenido de nuevo a {D69929}Servidor Roleplay{FFFFFF}.\nPor favor ingrese su clave para ingresar.", NombreLimpio(playerid));
ShowPlayerDialog(playerid, DIALOGO_INGRESAR, DIALOG_STYLE_PASSWORD, "{00C6FF}› Bienvenido, ingrese su clave", string, "Ingresar", "Cancelar");
}
else if (!fila) {
if (!NombreValido(playerid))
{
LimpiarChat(playerid);
SendClientMessage(playerid, COLOR_BLANCO, "Tu nombre no cumple con el formato 'Nombre_Apellido'.");
SendClientMessage(playerid, COLOR_BLANCO, "Has sido kickeado automбticamente.");
KickJugador(playerid);
return 1;
}
format(string, sizeof(string), "{EEEEEE}Antes que nada, deberбs registrar tu nombre de usuario. Para ello,\ndeberбs escoger una contraseсa y recordarla. Sin ella no tendrбs\nacceso a tu cuenta en el futuro.\nIntroduce la contraseсa a continuaciуn:");
ShowPlayerDialog(playerid, DIALOGO_REGISTRO, DIALOG_STYLE_PASSWORD, "{00C6FF}› Registrarse", string, "Continuar", "");
}
return 1;
}
JugadorSpawn
pawn Код:
public JugadorSpawn(playerid)
{
if (JugadorLogueado[playerid] == 1)
{
new string[100];
TextDrawHideForPlayer(playerid, Box1);
TextDrawHideForPlayer(playerid, Box2);
SetPlayerScore(playerid, JugadorInfo[playerid][Nivel]);
SetPlayerVirtualWorld(playerid, JugadorInfo[playerid][Interior]);
SetPlayerInterior(playerid, JugadorInfo[playerid][Mundo]);
SetearDinero(playerid, JugadorInfo[playerid][Dinero]);
SetPlayerHealth(playerid, JugadorInfo[playerid][Vida]);
SetPlayerArmour(playerid, JugadorInfo[playerid][Armadura]);
SetCameraBehindPlayer(playerid);
TogglePlayerControllable(playerid, 1);
format(string, sizeof(string), "SERVIDOR: Bienvenido %s.", NombreLimpio(playerid));
SendClientMessage(playerid, COLOR_BLANCO, string);
SetSpawnInfo(playerid, 0, JugadorInfo[playerid][Skin], JugadorInfo[playerid][PosX], JugadorInfo[playerid][PosY], JugadorInfo[playerid][PosZ], JugadorInfo[playerid][Angulo], 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
return 1;
}
SetPlayerCameraPos(playerid, 1597.3928, -1699.5081, 55.9331);
SetPlayerCameraLookAt(playerid, 1596.5624, -1700.0829, 55.7230);
SetPlayerPos(playerid, -316.776245, 1053.410400, 15.265959);
TogglePlayerControllable(playerid, 0);
return 1;
}
pawn Код:
public OnPlayerRequestClass(playerid, classid)
{
if(IsPlayerNPC(playerid)) return 1;
SetPlayerCameraPos(playerid, 1597.3928, -1699.5081, 55.9331);
SetPlayerCameraLookAt(playerid, 1596.5624, -1700.0829, 55.7230);
SetPlayerPos(playerid, -316.776245, 1053.410400, 15.265959);
TogglePlayerControllable(playerid, 0);
return 0;
}
pawn Код:
public OnPlayerSpawn(playerid)
{
return 1;
}
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);
if(killerid != INVALID_PLAYER_ID)
{
SetPlayerSkin(playerid, JugadorInfo[playerid][Skin]);
SetPlayerPos(playerid, JugadorInfo[playerid][PosX], JugadorInfo[playerid][PosY], JugadorInfo[playerid][PosZ]);
SetPlayerFacingAngle(playerid, JugadorInfo[playerid][Angulo]);
}
return 1;
}