12.05.2014, 15:52
Hi again dudes.
Im having issues with my code. The always i spawn, the always i fall throught the ground in blueberry.
Im pretty sure ther is a problem with my coordinates or my SpawnPlayer sentences, but i dont really know where or how.
My code here:
Thanks for your time.
Im having issues with my code. The always i spawn, the always i fall throught the ground in blueberry.
Im pretty sure ther is a problem with my coordinates or my SpawnPlayer sentences, but i dont really know where or how.
My code here:
Код:
#include <a_samp>
#include <a_mysql>
//MySQL ajustes
#define host "localhost"
#define user "root"
#define db "server"
#define pass ""
//Dialogs
#define dregister 6287
#define dlogin 6288
//Variables globales
static
mysql,
Name[MAX_PLAYERS][24],
IP[MAX_PLAYERS][16];
//Enums
enum PDATA
{
ID,
Password[129],
Admin,
VIP,
Money,
Float:Posx,
Float:Posy,
Float:Posz
}
new pInfo[MAX_PLAYERS][PDATA];
main(){}
public OnGameModeInit()
{
mysql_log(LOG_ERROR | LOG_WARNING | LOG_DEBUG);
mysql = mysql_connect(host, user, db, pass);
if(mysql_errno(mysql) != 0) print("No se ha podido conectar a la base de datos.");
}
public OnPlayerConnect(playerid)
{
new query[128];
GetPlayerName(playerid, Name[playerid], 24);
GetPlayerIp(playerid, IP[playerid], 16);
mysql_format(mysql, query, sizeof(query), "SELECT `Password`, `ID` FROM `players` WHERE `Username` = '%e' LIMIT 1", Name[playerid]);
mysql_tquery(mysql, query, "OnAccountCheck", "i", playerid);
return 1;
}
forward OnAccountCheck(playerid);
public OnAccountCheck(playerid)
{
new rows, fields;
cache_get_data(rows, fields, mysql);
if(rows)
{
cache_get_field_content(0, "PASS", pInfo[playerid][Password], mysql, 129);
pInfo[playerid][ID] = cache_get_field_content_int(0, "ID");
printf("%s", pInfo[playerid][Password]);
ShowPlayerDialog(playerid, dlogin, DIALOG_STYLE_INPUT, "Login", "Bienvenido! Porfavor, introduce tu contraseсa para entrar.", "Login", "Salir");
}else
{
ShowPlayerDialog(playerid, dregister, DIALOG_STYLE_INPUT, "Registro", "Bienvenido! Porfavor, introduce una contraseсa para registrarte.", "Registrar", "Salir");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case dlogin:
{
if(!response) Kick(playerid);
new hpass[129];
new query[100];
if(!strcmp(hpass, pInfo[playerid][Password]))
{
mysql_format(mysql, query, sizeof(query), "SELECT * FROM `players` WHERE `username` = %e LIMIT 1", Name[playerid]);
mysql_tquery(mysql, query, "OnAccountLoad", "i", playerid);
SpawnPlayer(playerid);
}
else
{
printf("Contraseсa introducida: %s", inputtext);
ShowPlayerDialog(playerid, dlogin, DIALOG_STYLE_INPUT, "Login", "Contraseсa incorrecta!\nIntentalo de nuevo.", "Login", "Salir");
}
}
case dregister:
{
if(!response) return Kick(playerid);
if(strlen(inputtext) < 6) return ShowPlayerDialog(playerid, dregister, DIALOG_STYLE_INPUT, "Register", "Tu contraseсa es demasiado corta!\nIntroduce una mas larga.", "Registrar", "Salir");
printf("Nueva cuenta registrada. Contraseсa: %s", inputtext);
new query[300];
mysql_format(mysql, query, sizeof(query), "INSERT INTO `players` (`Username`, `Password`, `IP`, `Admin`, `VIP`, `Money`, `posx`, `posy`, `posz`) VALUES ('%e', '%s', '%s', 0, 0, 0, 1643.4510,-2287.4954,-1.197)", Name[playerid], pInfo[playerid][Password], IP[playerid]);
mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid);
SpawnPlayer(playerid);
}
}
return 1;
}
forward OnAccountLoad(playerid);
forward OnAccountRegister(playerid);
public OnAccountLoad(playerid)
{
pInfo[playerid][Admin] = cache_get_field_content_int(0, "Admin");
pInfo[playerid][VIP] = cache_get_field_content_int(0, "VIP");
pInfo[playerid][Money] = cache_get_field_content_int(0, "Money");
pInfo[playerid][Posx] = cache_get_field_content_float(0, "Posx");
pInfo[playerid][Posy] = cache_get_field_content_float(0, "Posy");
pInfo[playerid][Posz] = cache_get_field_content_float(0, "Posz");
SetPlayerPos(playerid, pInfo[playerid][Posx], pInfo[playerid][Posy], pInfo[playerid][Posz]);
GivePlayerMoney(playerid, pInfo[playerid][Money]);
SendClientMessage(playerid, -1, "Datos cargados correctamente");
return 1;
}
public OnAccountRegister(playerid)
{
SetPlayerPos(playerid, pInfo[playerid][Posx], pInfo[playerid][Posy], pInfo[playerid][Posz]);
pInfo[playerid][ID] = cache_insert_id();
printf("Nueva cuenta registrada. ID: %d", pInfo[playerid][ID]);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new query[128], Float:pos[3];
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
mysql_format(mysql, query, sizeof(query), "UPDATE `players` SET `Admin`=%d, `VIP`=%d, `Money`=%d, `posx`=%f, `posy`=%f, `posz`=%f WHERE `ID`=%d", pInfo[playerid][Admin], pInfo[playerid][VIP], pInfo[playerid][Money], pos[0], pos[1], pos[2], pInfo[playerid][ID]);
mysql_tquery(mysql, query, "", "");
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerPos(playerid, pInfo[playerid][Posx], pInfo[playerid][Posy], pInfo[playerid][Posz]);
return 1;
}


