28.07.2015, 17:51
(
Последний раз редактировалось TheMatius; 28.07.2015 в 20:16.
)
Tengo una duda, tampoco se mucho de mysql, y es algo enredado, pero ese bucle que hiciste cuando termina?, dices que no te abre el dialogo, no estarбs creando un bucle infinito?, o no te estarб entrando al bucle?, reitero, no se mucho de mysql.
EDIT:
Haciendo pruebas a tu cуdigo me encontrй con esto:
Recuerda que si usas MySql es asi en el format: SELECT `Kills`, `Nombre` FROM `topscore` ORDER BY `Kills` DESC LIMIT 10
Pero segъn tu format lo necesitas asн:
Correciуn a tu code:
Haces el formato y ahora tienes que mostrarlo al fuera del loop :
No hagas cadenas tan grandes en el query es necesario pero para el format no:
Concatenando:
Como dije antes, es infito o nunca entra al ciclo, їpor que? Si no haces bien la llamada del query a la base de datos no funcionara:
Uso correcto:
PD: No te organizare el cуdigo, dejare que lo hagas tu, aquн tenes con lo que yo testeo el cуdigo:
їQue te recomiendo?
Hacer pruebas en un new.pwn donde ejecutes tu cуdigo en el main: Asн hice las pruebas:
EDIT:
Haciendo pruebas a tu cуdigo me encontrй con esto:
Recuerda que si usas MySql es asi en el format: SELECT `Kills`, `Nombre` FROM `topscore` ORDER BY `Kills` DESC LIMIT 10
Pero segъn tu format lo necesitas asн:
Код:
"SELECT `Kills`, `Nombre`, `Experiencia` FROM `topscore` ORDER BY `Kills` DESC LIMIT 10"
Код:
format(topstring,sizeof(topstring),"#\tNombre\tScore\tExperiencia\n\%d\t%s\t%d",idx,PlayerName,Score);
Код:
ShowPlayerDialog(playerid, 1234, DIALOG_STYLE_TABLIST_HEADERS, "Top Players", topstring, "Salir", "");
Код:
new topstring[700]; //En este caso si es necesario por que vamos a concatenar, pero el problema es que esto nunca se concatena con el format. new query[720]; //Cuando se guarda informaciуn del usuario (OnPlayerDisconnect)
Код:
new topstring[128], query[256];
Код:
new topstring[128], outtopstring[700]= "#\tNombre\tScore\tExperiencia"; while(idx < cache_num_rows()) { format(topstring, sizeof(topstring), "\n\%d\t%s\t%d\t%d",idx, PlayerName, Score, Exp); strcat(outtopstring, topstring); } ShowPlayerDialog(playerid, 1234, DIALOG_STYLE_TABLIST_HEADERS, "Top Players", outtopstring, "Salir", "");
Код:
while(cache_num_rows())
Код:
SELECT `Kills`, `Nombre`, `Experiencia` FROM `topscore` ORDER BY `Kills` DESC LIMIT 10 //Esto lo puedes testear en el mismo MySql
Код:
while(idx < cache_num_rows()) //Llevas un numero que gesitona la cantidad de usuarios que se debe de mostrar antes del final
їQue te recomiendo?
Hacer pruebas en un new.pwn donde ejecutes tu cуdigo en el main: Asн hice las pruebas:
Код:
main() { new query[256], idx , PlayerName[MAX_PLAYER_NAME], Score, Exp; mysql_format(MYSQL, query, sizeof(query), "SELECT `Kills`, `Nombre`, `Experiencia` FROM `topscore` ORDER BY `Kills` DESC LIMIT 10"); mysql_query(MYSQL, query); printf("Num rows: %d", cache_num_rows()); while(idx < cache_num_rows()) { cache_get_field_content(idx, "Nombre", PlayerName); Score = cache_get_field_content_int(idx, "Kills"); Exp = cache_get_field_content_int(idx, "Experiencia"); idx++; printf("#\tNombre\tScore\tExperiencia\n\%d\t%s\t%d\t%d", idx, PlayerName, Score, Exp); printf("Estoy en en bucle numero: %d, Num rows: %d", idx, cache_num_rows()); } print("Salн del ciclo"); }