[Ayuda] guardar asesinatos y muertes en mysql
#1

bueno, hace poco vi un tutorial de sistema de registro en mysql, intente hacerlo por mi cuenta (agregar kills y deaths), a base de mi poca experiencia de mysql, el problema es que no guarda los datos kills y deaths, pero lo demбs si.

kills y death estбn como valor tipo int con una longitud de 10.

este es el cуdigo que tengo en OnPlayerDeath
PHP код:
    if(killerid != INVALID_PLAYER_ID)
    {
        
Player[killerid][Kills] = Player[killerid][Kills]+1;
        
Player[playerid][Deaths] = Player[playerid][Deaths]+1;
        
SetPlayerScore(killerid,Player[killerid][Kills]);
        
OnAccountSave(playerid);
    } 
Esta es la public que tengo creada para "guardar".
PHP код:
public OnAccountSave(playerid)
{
    new
        
query[150],
        
Float:pos[4];
    
GetPlayerPos(playeridpos[0], pos[1], pos[2]);
    
GetPlayerFacingAngle(playeridpos[3]);
    
mysql_format(mysqlquerysizeof(query), "UPDATE `players` SET `Money` = %d, `PosX` = %f, `PosY` = %f, `PosZ` = %f, `PosA` = %f, `Kills` = %d, `Deaths` = %d WHERE `ID` = %d",
    
GetPlayerMoney(playerid), pos[0], pos[1], pos[2], pos[3], Player[playerid][ID],Player[playerid][Kills],Player[playerid][Deaths]);
    
mysql_tquery(mysqlquery"""");
    return 
true;

y esto para que cargue la cuenta
PHP код:
public OnAccountLoad(playerid)
{
     
Player[playerid][Kills] = cache_get_field_content_int(0"Kills");
    
Player[playerid][Deaths] = cache_get_field_content_int(0"Deaths");
    
Player[playerid][VIP] = cache_get_field_content_int(0"VIP");
    
Player[playerid][Money] = cache_get_field_content_int(0"Money");
    
Player[playerid][posX] = cache_get_field_content_float(0"PosX");
    
Player[playerid][posY] = cache_get_field_content_float(0"PosY");
    
Player[playerid][posZ] = cache_get_field_content_float(0"PosZ");
    
Player[playerid][posA] = cache_get_field_content_float(0"PosA");
    
GivePlayerMoney(playeridPlayer[playerid][Money]);
    
SetPlayerScore(playeridPlayer[playerid][Kills]);
    
SendClientMessage(playerid, -1"Logueaste correctamente, bienvenido.");
    return 
true;

Reply
#2

hazlo asн:
pawn Код:
Player[playerid][Deaths]++;
if(IsPlayerConnected(killerid) && killerid != INVALID_PLAYER_ID && killerid != playerid)
{
    Player[killerid][Kills]++;
    SetPlayerScore(killerid,Player[killerid][Kills]);
}
OnAccountSave(playerid);
revisa el log mysql a ver que sale. Aunque creo que es mejor guardar los datos del jugador cuando se desconecte y no cuando muera, ademбs de que solo haces la funciуn al que muere y no al que mata
Reply
#3

esto me salia, en el log de mysql:

Quote:

[10:39:54] [DEBUG] cache_get_field_content_int - row: 0, field_name: "Kills", connection: 1
[10:39:54] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "Kills", data: "1"
[10:39:54] [DEBUG] cache_get_field_content_int - row: 0, field_name: "Deaths", connection: 1
[10:39:54] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "Deaths", data: "3"

EDIT: no me funciono, aunque algo curioso, eske el score que deberia guardar lo guarda en otra cuenta, o simplemente no lo guarda.
Reply
#4

Mira que en el query de onaccountsave tiene que ir el enum de ID al final, pero lo tienes antes de death y kills.
Reply
#5

Si, eso era, como no me pude fijar .
gracias.
Solucionado.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)