SA-MP Forums Archive
[Ayuda] Guardado de armas - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Ayuda] Guardado de armas (/showthread.php?tid=394519)



[Ayuda] Guardado de armas - oOFotherOo - 22.11.2012

Buenas amigos de SAMP quisiera saber si me podeis ayudar con este pequeсo problema y es que estoy tratando de guardar las armas y no se guardan las armas.

Codigo:

pawn Код:
stock GuardarCuenta(playerid)
{
    static query[350], Float:pos[4], Float:vida, Float:chaleco;
    GetPlayerPos(playerid, posArr{pos});
    GetPlayerFacingAngle(playerid, pos[3]);
    GetPlayerHealth(playerid, vida);
    GetPlayerArmour(playerid, chaleco);
    new weapons[13][2];
    for(new i; i < 13; ++i)
    {
         GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);

        mysql_format(g_Handle, query, "UPDATE `Usuarios` SET Vida = %.1f, Chaleco = %.1f, X = %.2f, Y = %.2f, Z = %.1f, A = %.2f, Interior = %d, VW = %d, Skin = %d, Dinero = %d, Nivel = %d, Arma_%i = %i, Municion_%i = %i WHERE `ID` = %d",
           vida,
           chaleco,
           posArrEx{pos},
           GetPlayerInterior(playerid),
           GetPlayerVirtualWorld(playerid),
           GetPlayerSkin(playerid),
           GetPlayerMoney(playerid),
           GetPlayerScore(playerid),
           g_PlayerInfo[playerid][pArma][i],
           g_PlayerInfo[playerid][pMunicion][i],
           g_PlayerInfo[playerid][pSQLid]
        );
        mysql_function_query(g_Handle, query, false, "SendQuery", "");
    }
    return 1;
}
Muchas gracias.

Un saludo.


Respuesta: [Ayuda] Guardado de armas - Parka - 22.11.2012

creo que no estas uniendo la variable weapons con la variable parma intenta asi

PHP код:
stock GuardarCuenta(playerid)
{
    static 
query[350], Float:pos[4], Float:vidaFloat:chaleco;
    
GetPlayerPos(playeridposArr{pos});
    
GetPlayerFacingAngle(playeridpos[3]);
    
GetPlayerHealth(playeridvida);
    
GetPlayerArmour(playeridchaleco);
    new 
weapons[13][2];
    for(new 
i13; ++i)
    {
         
GetPlayerWeaponData(playeridig_PlayerInfo[playerid][pArma][i], g_PlayerInfo[playerid][pMunicion][i]);

        
mysql_format(g_Handlequery"UPDATE `Usuarios` SET Vida = %.1f, Chaleco = %.1f, X = %.2f, Y = %.2f, Z = %.1f, A = %.2f, Interior = %d, VW = %d, Skin = %d, Dinero = %d, Nivel = %d, Arma_%i = %i, Municion_%i = %i WHERE `ID` = %d",
           
vida,
           
chaleco,
           
posArrEx{pos},
           
GetPlayerInterior(playerid),
           
GetPlayerVirtualWorld(playerid),
           
GetPlayerSkin(playerid),
           
GetPlayerMoney(playerid),
           
GetPlayerScore(playerid),
           
g_PlayerInfo[playerid][pArma][i],
           
g_PlayerInfo[playerid][pMunicion][i],
           
g_PlayerInfo[playerid][pSQLid]
        );
        
mysql_function_query(g_Handlequeryfalse"SendQuery""");
    }
    return 
1;

PD: Deberia funcionar


Respuesta: [Ayuda] Guardado de armas - oOFotherOo - 22.11.2012

Quote:
Originally Posted by cesar_******
Посмотреть сообщение
creo que no estas uniendo la variable weapons con la variable parma intenta asi

PHP код:
stock GuardarCuenta(playerid)
{
    static 
query[350], Float:pos[4], Float:vidaFloat:chaleco;
    
GetPlayerPos(playeridposArr{pos});
    
GetPlayerFacingAngle(playeridpos[3]);
    
GetPlayerHealth(playeridvida);
    
GetPlayerArmour(playeridchaleco);
    new 
weapons[13][2];
    for(new 
i13; ++i)
    {
         
GetPlayerWeaponData(playeridig_PlayerInfo[playerid][pArma][i], g_PlayerInfo[playerid][pMunicion][i]);
        
mysql_format(g_Handlequery"UPDATE `Usuarios` SET Vida = %.1f, Chaleco = %.1f, X = %.2f, Y = %.2f, Z = %.1f, A = %.2f, Interior = %d, VW = %d, Skin = %d, Dinero = %d, Nivel = %d, Arma_%i = %i, Municion_%i = %i WHERE `ID` = %d",
           
vida,
           
chaleco,
           
posArrEx{pos},
           
GetPlayerInterior(playerid),
           
GetPlayerVirtualWorld(playerid),
           
GetPlayerSkin(playerid),
           
GetPlayerMoney(playerid),
           
GetPlayerScore(playerid),
           
g_PlayerInfo[playerid][pArma][i],
           
g_PlayerInfo[playerid][pMunicion][i],
           
g_PlayerInfo[playerid][pSQLid]
        );
        
mysql_function_query(g_Handlequeryfalse"SendQuery""");
    }
    return 
1;

PD: Deberia funcionar
Muchas gracias pero hay un problema y es que envia 3 consultas y con errores:

pawn Код:
[20:32:12] Error ID: 1064
[20:32:12] Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%i WHERE `ID` = %d' at line 1
[20:32:12] Callback: SendQuery    Query: UPDATE `Usuarios` SET Vida = 100.0, Chaleco = 100.0, X = 1854.59, Y = -1387.45, Z = 14.4, A = 111.94, Interior = 0, VW = 0, Skin = 0, Dinero = 0, Nivel = 0, Arma_0 = 73, Municion_1 = %i WHERE `ID` = %d
[20:32:12] Error ID: 1064
[20:32:12] Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%i WHERE `ID` = %d' at line 1
[20:32:12] Callback: SendQuery    Query: UPDATE `Usuarios` SET Vida = 100.0, Chaleco = 100.0, X = 1854.59, Y = -1387.45, Z = 14.4, A = 111.94, Interior = 0, VW = 0, Skin = 0, Dinero = 0, Nivel = 0, Arma_0 = 0, Municion_1 = %i WHERE `ID` = %d
[20:32:12] Error ID: 1064
[20:32:12] Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%i WHERE `ID` = %d' at line 1
[20:32:12] Callback: SendQuery    Query: UPDATE `Usuarios` SET Vida = 100.0, Chaleco = 100.0, X = 1854.59, Y = -1387.45, Z = 14.4, A = 111.94, Interior = 0, VW = 0, Skin = 0, Dinero = 0, Nivel = 0, Arma_24 = 89, Municion_1 = %i WHERE `ID` = %d
Muchas gracias.

Un saludo.


Respuesta: [Ayuda] Guardado de armas - WCrimson - 22.11.2012

Prueba cambiando el especificador '%d' por '%i'.
- No dejes espacios entre el ъltimo campo a actualizar y valor a introducir.
- Ejecuta 2 consultas, 1 cada para actualizar las armas ( cada que corra el bucle ) y la 2 fuera del bucle para el resto de campos, ya que es totalmente innecesario actualizarlos tantas veces.

EDIT: Cierto, se me escapу el detalle que dejo Julian.


Respuesta: [Ayuda] Guardado de armas - [J]ulian - 22.11.2012

Fijate asн:
pawn Код:
i, // slot
g_PlayerInfo[playerid][pArma][i], // arma
i, // slot
g_PlayerInfo[playerid][pMunicion][i], // balas
Y creo lo mismo, que es innecesario ejecutar todo 13 veces por lo de las armas. Quizбs sea mejor ejecutarlo en sentencias distintas (lo de las armas separado del resto).


Respuesta: [Ayuda] Guardado de armas - oOFotherOo - 23.11.2012

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Fijate asн:
pawn Код:
i, // slot
g_PlayerInfo[playerid][pArma][i], // arma
i, // slot
g_PlayerInfo[playerid][pMunicion][i], // balas
Y creo lo mismo, que es innecesario ejecutar todo 13 veces por lo de las armas. Quizбs sea mejor ejecutarlo en sentencias distintas (lo de las armas separado del resto).
Gracias me sirvio, no me gusta hacerlo asi ya que envia 3 consultas innecesariamente, trate de hacerlo con GetPlayerWeapon y GetPlayerAmmo pero no funciona.

Codigo:
pawn Код:
stock GuardarCuenta(playerid)
{
    static query[350], Float:pos[4], Float:vida, Float:chaleco;
    GetPlayerPos(playerid, posArr{pos});
    GetPlayerFacingAngle(playerid, pos[3]);
    GetPlayerHealth(playerid, vida);
    GetPlayerArmour(playerid, chaleco);
    mysql_format(g_Handle, query, "UPDATE `Usuarios` SET Vida = %.1f, Chaleco = %.1f, X = %.2f, Y = %.2f, Z = %.1f, A = %.2f, \
    Interior = %d, VW = %d, Skin = %d, Dinero = %d, Nivel = %d, Arma_0 = %d, Municion_0 = %d , Arma_1 = %d, Municion_1 = %d, Arma_2 = %d, Municion_2 = %d WHERE `ID` = %d"
,
        vida,
        chaleco,
        posArrEx{pos},
        GetPlayerInterior(playerid),
        GetPlayerVirtualWorld(playerid),
        GetPlayerSkin(playerid),
        GetPlayerMoney(playerid),
            GetPlayerScore(playerid),
            GetPlayerWeapon(playerid),
        GetPlayerAmmo(playerid),
            GetPlayerWeapon(playerid),
        GetPlayerAmmo(playerid),
            GetPlayerWeapon(playerid),
        GetPlayerAmmo(playerid),
        g_PlayerInfo[playerid][pSQLid]
    );
    mysql_function_query(g_Handle, query, false, "SendQuery", "");
    return 1;
}
PD: Solo es para guardar 3 armas ya que tengo un sistema de armas maximas las cuales son 3 por PJ.

Muchas gracias un saludo.


Respuesta: [Ayuda] Guardado de armas - [J]ulian - 23.11.2012

Asн tengas 3 armas, tenes que recorrer los 13 slots.

Asн estбs modificando 10 datos 13 veces innecesariamente xD, no se que sea mas efectivo pero creo que es mejor 13 sentencias que modificar 130 datos xD

PD: GetPlayerWeapon te devuelve el arma de la mano, no te sirve como lo hiciste.


Respuesta: [Ayuda] Guardado de armas - oOFotherOo - 23.11.2012

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Asн tengas 3 armas, tenes que recorrer los 13 slots.

Asн estбs modificando 10 datos 13 veces innecesariamente xD, no se que sea mas efectivo pero creo que es mejor 13 sentencias que modificar 130 datos xD

PD: GetPlayerWeapon te devuelve el arma de la mano, no te sirve como lo hiciste.
No hay alguna otra forma para realizar el guardado de las armas sin tener que enviar tantas consultas?

PD: Antes guardaba 1 sola arma con GetPlayerWeapon y GetPlayerAmmo pero por lo que veo solo 1.

Muchas gracias.

Un saludo.


Respuesta: [Ayuda] Guardado de armas - [J]ulian - 23.11.2012

Quote:
Originally Posted by oOFotherOo
Посмотреть сообщение
No hay alguna otra forma para realizar el guardado de las armas sin tener que enviar tantas consultas?

PD: Antes guardaba 1 sola arma con GetPlayerWeapon y GetPlayerAmmo pero por lo que veo solo 1.

Muchas gracias.

Un saludo.
Si, poniendo "Arma_0", "Arma_1" todo asн hasta 13 pero a mano.