[Ayuda] Como guardar posicion al desloguear (MySQL) -
eseketedigo - 16.11.2011
Buenas.
Me gustaria que me echaran una mano para saber como hago para guardar las posiciones al desloguear, y a poder ser que me orientasen un poco sobre como aсadir mas columnas a la base de datos para guardar mas cosas del server.
El gamemode que estoy haciendo es este:
http://pastebin.com/NHvMBYp5
PD: Al cargar el server la consola me tira un error que pone : Script: [gamemodes\migamemode.amx]: Run time error 20: "Invalid index parameter (bad entry point)". їA que se debe?
PD2: Muchas gracias.
Respuesta: [Ayuda] Como guardar posicion al desloguear (MySQL) -
[J]ulian - 16.11.2011
Para el error de la consola:
Abajo de los includes.
Para agregar mбs datos en las tablas tenйs 2 posibilidades, desde la consola de MySQL o desde phpMyAdmin.
Desde la consola:
pawn Код:
ALTER table nombre_tabla ADD Campo tipo_dato
En el caso tuyo tendrнa que ser:
pawn Код:
ALTER table playerdata ADD pos_x float
ALTER table playerdata ADD pos_y float
ALTER table playerdata ADD pos_z float
Y luego:
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
//Sistema de registro y db MySQL.
if(Logged[playerid] == 1)
{
new score = GetPlayerScore(playerid);
new money = GetPlayerMoney(playerid);
new Float:pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
new query[200], pname[24];
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), "UPDATE playerdata SET score=%d, money=%d, pos_x=%f, pos_y=%f, pos_z=%f WHERE user='%s'", score, money, pos[0], pos[1], pos[2], pname);
mysql_query(query);
}
return 1;
}
Re: [Ayuda] Como guardar posicion al desloguear (MySQL) -
eseketedigo - 16.11.2011
Oh! gracias por la pronta respuesta no uso phpmyadmin uso navicat de todos modos lo de ip money y tal lo crea solo desde el gamemode me gustaria saber como hacer para hacerlo desde ahi.
Re: [Ayuda] Como guardar posicion al desloguear (MySQL) -
dis77urbio - 16.11.2011
Si quieres que te guarde la posicion X Y Z tienes que hacer las columnas en la tabla de la base de datos, el gamemode no te guardara la posicion o talvez al momento si pero cuando te desconectes no, de todos modos en el gamemode seria algo asi:
pawn Код:
enum pInfo
{
Float:pPosX, //posicion x
Float:pPosY, //posicion y
Float:pPosZ, //posicion z
Float:pPosA // angulo
}
new PlayerInfo[MAX_PLAYERS][pInfo];
CMD:guardarpos(playerid, params[])
{
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
PlayerInfo[playerid][pPosX] = x;
PlayerInfo[playerid][pPosY] = y;
PlayerInfo[playerid][pPosZ] = z;
PlayerInfo[playerid][pPosA] = a;
return 1;
}
CMD:irpos(playerid, params[])
{
SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);
return 1;
}
Eso sin crear la columna en la tabla de la base de datos. Bueno no he testeado.
Re: [Ayuda] Como guardar posicion al desloguear (MySQL) -
eseketedigo - 16.11.2011
El plugin mysql tiene una opcion para que cree la columna si no existe, lo que pasa es que el tutorial que segui estaba en ingles y no me entere muy bien... (bastante que anda), me gustaria aprender que es lo que tengo que hacer cada vez que quiera crear una columna para almacenar datos desde el gamemode como lo hace con money,IP,user, etc. Y me seria muy util si es con un ejemplo para que guarde la ultima posicion

PD:Error de consola solucionado gracias
PD2:Este es el tutorial
https://sampforum.blast.hk/showthread.php?tid=159785
Respuesta: [Ayuda] Como guardar posicion al desloguear (MySQL) -
[J]ulian - 16.11.2011
Cambiб:
pawn Код:
mysql_query("CREATE TABLE IF NOT EXISTS playerdata(user VARCHAR(24), password VARCHAR(40), score INT(20), money INT(20), IP VARCHAR(16) )");
Por
pawn Код:
mysql_query("CREATE TABLE IF NOT EXISTS playerdata(user VARCHAR(24), password VARCHAR(40), score INT(20), money INT(20), IP VARCHAR(16), pos_x FLOAT, pos_y FLOAT, pos_z FLOAT)");
Y fijate.
Re: [Ayuda] Como guardar posicion al desloguear (MySQL) -
eseketedigo - 16.11.2011
Hola de nuevo.
Tube un pequeсo problema y es que no me creaba las columnas nuevas (Solucionado borrando la auntigua tabla).
Bien ahora me guarda las cordenadas pero no spawnea donde estaba, їcomo hago para eso?
pawn Код:
public OnPlayerSpawn(playerid)
{
//Sistema de registro y db MySQL.
if(MoneyGiven[playerid] != -1)
{
GivePlayerMoney(playerid, MoneyGiven[playerid]);
MoneyGiven[playerid] = -1;
}
return 1;
}
їQue debo de escribir aqui?
Muchas gracias al menos ya aprendi como hacer que cree la tabla con las columnas nuevas que necesite.
PD:їLa funcion GivePlayerMoney es para que me de el dinero que tenia antes de desconectar o para que?
Respuesta: [Ayuda] Como guardar posicion al desloguear (MySQL) -
[J]ulian - 16.11.2011
pawn Код:
enum sInfo
{
Float:x,
Float:y,
Float:z,
EsMuerte
};
new SpawnInfo[MAX_PLAYERS][sInfo]; // Esto arriba de todo.
//Y de acб para abajo remplazб:
stock MySQL_Login(playerid)
{
new query[300], pname[24], savingstring[20];
GetPlayerName(playerid, pname, 24);
format(query, sizeof(query), "SELECT * FROM playerdata WHERE user = '%s'", pname);
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format(query,"|"))
{
mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring));
mysql_fetch_field_row(savingstring, "money"); MoneyGiven[playerid] = strval(savingstring);
mysql_fetch_field_row(savingstring, "pos_x"); SpawnInfo[playerid][x] = strval(savingstring);
mysql_fetch_field_row(savingstring, "pos_y"); SpawnInfo[playerid][y] = strval(savingstring);
mysql_fetch_field_row(savingstring, "pos_z"); SpawnInfo[playerid][z] = strval(savingstring);
}
}
public OnPlayerSpawn(playerid)
{
if(SpawnInfo[playerid][EsMuerte]) SetPlayerPos(playerid, SpawnInfo[playerid][x], SpawnInfo[playerid][y], SpawnInfo[playerid][z]);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(SpawnInfo[playerid][EsMuerte] != 0)
{
SpawnInfo[playerid][EsMuerte] = 1;
}
return 1;
}
Re: [Ayuda] Como guardar posicion al desloguear (MySQL) -
eseketedigo - 16.11.2011
Tengo una duda en
pawn Код:
public OnPlayerSpawn(playerid)
{
//Sistema de registro y db MySQL.
if(MoneyGiven[playerid] != -1)
{
GivePlayerMoney(playerid, MoneyGiven[playerid]);
MoneyGiven[playerid] = -1;
}
return 1;
}
Dejo solo lo que tu me has puesto?? No perdere entonces la opcion de que guarde el dinero?? O simplemente aсado esta linea??
pawn Код:
if(SpawnInfo[playerid][EsMuerte]) SetPlayerPos(playerid, SpawnInfo[playerid][x], SpawnInfo[playerid][y], SpawnInfo[playerid][z]);
Respuesta: [Ayuda] Como guardar posicion al desloguear (MySQL) -
[J]ulian - 16.11.2011
Aсadi esa linea. Asн:
pawn Код:
public OnPlayerSpawn(playerid)
{
linea esa
lo que siga...
}