DescargarInfo()
{
new conteo_datos = 0;
mysql_query(MySQL,"SELECT `idio_nombre`,`idio_key`,`idio_contenido` FROM "TABLA_IDIOMA"");
for(new i;i<cache_num_rows();i++)
{
cache_save_string(i,"idio_key",infIdioma[i][Key]);
cache_save_string(i,"idio_contenido",infIdioma[i][Cadena]);
cache_save_int(i,"idio_nombre",infIdioma[i][Lenguage]);
conteo_datos++;
TOT_CADS = conteo_datos;
}
printf("Informaciуn de idiomas descargada y almacenada.");
printf("R: %d Cadenas de Idioma.",conteo_datos);
printf("Se descargo la informacion desde la base de datos en %d ms.",GetTickCount()-debug_time);
return 1;
}
// esta es la funcion del problema.
stock GetMsgByLangKey(playerid, const langkey[])
{
new tempstr[256],
debug_time=GetTickCount();
for(new i;i<TOT_CADS;i++)
{
if(!strcmp(infIdioma[i][Key],langkey,true))
{
if(infIdioma[i][Lenguage] == infJugador[playerid][Idioma])
{
format(tempstr,sizeof(tempstr),"%s",infIdioma[i][Cadena]);
printf("%s",tempstr);
break;
}
}
}
printf("GetMsgByLangKey | Obtencion de cadena en %d ms.",GetTickCount()-debug_time);
return tempstr;
}
DescargarInfo()
{
new conteo_datos = 0;
mysql_query(MySQL,"SELECT `idio_nombre`,`idio_key`,`idio_contenido` FROM "TABLA_IDIOMA"");
for(new i;i<cache_num_rows();i++)
{
//Te faltaria tener un campo auto increment como id del idioma (un integer)
//Supongamos que se almacenara en la variable infIdioma[i][IdiomaID]
cache_save_string(i,"idio_key",infIdioma[i][Key]);
cache_save_string(i,"idio_contenido",infIdioma[i][Cadena]);
cache_save_int(i,"idio_nombre",infIdioma[i][Lenguage]);
conteo_datos++;
}
TOT_CADS = conteo_datos;
printf("Informaciуn de idiomas descargada y almacenada.");
printf("R: %d Cadenas de Idioma.",conteo_datos);
printf("Se descargo la informacion desde la base de datos en %d ms.",GetTickCount()-debug_time);
return 1;
}
//Al jugador deberia guardarse en su cuenta el ID del idioma
//(no el nombre) y almacenarlo en infJugador[playerid][IdiomaDB_ID]
GetPlayerLangID(playerid) {
for(new i;i<TOT_CADS;i++) {
if(infIdioma[i][IdiomaID] == infJugador[playerid][IdiomaDB_ID]) {
return i;
}
}
return 0; //Cambiar el 0 por el ID de un idioma por default
}
//En el login (necesaria la variable pIdiomaID para el jugador)
infJugador[playerid][pIdiomaID] = GetPlayerLangID(playerid);
//Luego donde se quiera utilizar el idioma
printf("JUGADOR: %d | IDIOMA: %s",playerid,infIdioma[[infJugador[playerid][pIdiomaID]][Ideoma]);
//Para que sea mas entendible
#define GetPlayerLang(%1) infIdioma[[infJugador[%1][pIdiomaID]][Ideoma]
printf("JUGADOR: %d | IDIOMA: %s",playerid,GetPlayerLang(playerid));
La estructura para hacer eso no es la adecuada, hay un mal diseсo en tu base de datos, preferiblemente yo lo harнa de esta manera.
PHP код:
PHP код:
PHP код:
PHP код:
|