18.07.2014, 22:34
Hola estoy haciendo un timer para guardar los datos de los usuarios cada 2 minutos. Hice el timer y la funcion, pero me di cuenta que con el bucle que hice mi funcion la llama la cantidad de slots que tenga el servidor con MAX_PLAYER.
Esto se me ejecuta la cantidad de slots vacios del servidor. Si tengo 5/50 el codigo de abajo se ejecuta 45 veces y 5 veces con los datos de los usuarios...
Esto se me ejecuta la cantidad de slots vacios del servidor. Si tengo 5/50 el codigo de abajo se ejecuta 45 veces y 5 veces con los datos de los usuarios...
Код:
[19:54:39] [DEBUG] mysql_format - connection: 1, len: 2056, format: "UPDATE `usuarios` set Experiencia = '%d', Nivel = '%d', Admin = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', Angulo = '%f', Inte..." [19:54:39] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE `usuarios` set Experiencia = '1', Nivel = '1', Admin = '0", callback: "(null)", format: "(null)"
pawn Код:
SetTimer("T_GuardarJugadorInfo", 120000, false); // 2 minutos
pawn Код:
public T_GuardarJugadorInfo()
{
for (new i = 0; i < MAX_PLAYERS; i++)
{
new string[256];
GuardarJugadorInfo(i);
format(string, sizeof(string), "Guardando datos en MySQL.");
SendClientMessage(i, COLOR_NARANJA, string);
}
return 1;
}
pawn Код:
public GuardarJugadorInfo(playerid)
{
new Float:X, Float:Y, Float:Z, Float:Angle, Float:Health, Float:Armour;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, Angle);
GetPlayerHealth(playerid, Health);
GetPlayerArmour(playerid, Armour);
mysql_format(MySQL, Query, sizeof(Query), "UPDATE `usuarios` set Experiencia = '%d', Nivel = '%d', Admin = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', Angulo = '%f', Interior = '%d', Mundo = '%d', Dinero = '%d', Vida = '%f', Armadura = '%f', Conectado = 0 WHERE Nombre = '%e'",
JugadorInfo[playerid][Experiencia], JugadorInfo[playerid][Nivel], JugadorInfo[playerid][Admin], X, Y, Z, Angle, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), JugadorInfo[playerid][Dinero], Health, Armour, NombreJugador(playerid));
mysql_tquery(MySQL, Query);
return 1;
}