Como se hace un dialog enorme lo mбs optimizado posible?
#1

Hola bueno yo tengo un dialog de /comandos que hice de esta forma:

pawn Код:
if(strcmp("/Comandos", cmdtext, true, 10) == 0)
    {
    new CMDS[2000];
    strcat(CMDS, "{"COLOR_CMDS"}* /Comprar {FFFFFF}- Usted ve las armas disponibles y armaduras.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Autos {FFFFFF}- Usted ve los autos disponibles.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Items {FFFFFF}- Muestra objetos adicionales.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Ir {FFFFFF}- Usted puede ir hacia un jugador (Ir ID).\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Creditos {FFFFFF}- Ver los creditos del servidor.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Reglas {FFFFFF}- Usted conoce las reglas del servidor.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Duda {FFFFFF}- Le envias una consulta a los moderadores online.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Nombre {FFFFFF}- Usted se cambia el nombre sin perder nada.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Pm {FFFFFF}- Usted mada un mensaje privado hacia un jugador.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Modo {FFFFFF}- Usted ve un pequeсo tutorial de informaciуn.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Hola {FFFFFF}- Usted saluda a todos los jugadores.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Adios {FFFFFF}- Se utiliza para enviar una consulta a los administradores.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Song - /MP3 {FFFFFF}- Puedes escuchar musica de distintos generos.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /stop - /StopMP3 {FFFFFF}- Detienes el AudioStream.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /DarDinero {FFFFFF}- Le regalas dinero a un jugador.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /pms {FFFFFF}- Bloqueas / Desbloqueas tus mensajes privados.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Suicidio {FFFFFF}- Usted se mata automaticamente.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Acciones {FFFFFF}- Ver las acciones disponibles.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Lucha - /Pelea {FFFFFF}- Cambias el estilo lucha / pelear.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Laser (color){FFFFFF}- Activa el laser / Cambia de color el laser.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /RVIP {FFFFFF}- Te otorga nivel vip si cuentas con el score requerido.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /XXX {FFFFFF}- XXXXXXXXXXXXXXXXXX.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Pelea {FFFFFF}- Menu para cambiar tu stilo de pelea.\n");
    strcat(CMDS, "{"COLOR_CMDS"}* /Comandos2 {FFFFFF}- Mas comandos disponibles.");
    ShowPlayerDialog(playerid, DIALOG_COMANDOS, DIALOG_STYLE_MSGBOX, "{FFFF00}* [RZ] Comandos: {7A7AFF}Comando {FFFFFF}-{7A7AFF} Descripciуn.", CMDS, "Mas >>", "x");
    return 1;
    }
queria saber si es la manera mбs correcta de hacer un dialog enorme,
Quiero hacer uno de ese tipo de grande para consultar los integrantes de los clanes con MySQL pero esa es otra historia.

Conte los caracteres en contadordecaracteres.com y llegan a 2k
Bueno gracias D:
Reply
#2

pawn Код:
ShowPlayerDialog(playerid, DIALOG_COMANDOS, DIALOG_STYLE_MSGBOX, "{FFFF00}* [RZ] Comandos: {7A7AFF}Comando {FFFFFF}-{7A7AFF} Descripciуn.",
"/comando 1 - hace esto \
\n/comando 2 - hace esto \
\n/comando 3 - hace esto"
, "Aceptar", "Cancelar");
Reply
#3

Esa es la mejor manera, segъn leн una vez.

Tambiйn se puede hacer con \ al final de la linea y hacer un salto de linea pero leн a ****** (si mal no recuerdo) que no era recomendable hacer eso.
Reply
#4

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Esa es la mejor manera, segъn leн una vez.

Tambiйn se puede hacer con \ al final de la linea y hacer un salto de linea pero leн a ****** (si mal no recuerdo) que no era recomendable hacer eso.
Me perdi, la mejor manera es la que publico Adoniiz o la mнa?

Gracias a los 2 C:
Reply
#5

Pero si son datos dinбmicos no vas a usar ninguna de esas vas a usar un bucle e ir aсadiendo cada mimbro con strcat, para dialogs muy grande ponele un boton que diga siguiente y asi lo divides en 2.
Reply
#6

Quote:
Originally Posted by Adoniiz
Посмотреть сообщение
pawn Код:
ShowPlayerDialog(playerid, DIALOG_COMANDOS, DIALOG_STYLE_MSGBOX, "{FFFF00}* [RZ] Comandos: {7A7AFF}Comando {FFFFFF}-{7A7AFF} Descripciуn.",
"/comando 1 - hace esto \
\n/comando 2 - hace esto \
\n/comando 3 - hace esto"
, "Aceptar", "Cancelar");
Esto es correcto, pero en diбlogos muy largos no va a compilar.

En tu caso, es mejor contar la cantidad de caracteres (como estб ahora). De cualquier modo, ese cуdigo no debe causar ningъn tipo de lag en lo absoluto.
Reply
#7

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Esa es la mejor manera, segъn leн una vez.

Tambiйn se puede hacer con \ al final de la linea y hacer un salto de linea pero leн a ****** (si mal no recuerdo) que no era recomendable hacer eso.
Nunca tuve problema, aunque no se puede pasar mas de 2048 caracteres. (el limite pues).
Reply
#8

https://sampforum.blast.hk/showthread.php?tid=295049
Reply
#9

Hola, Gracias a todos, creo que harй lo que dijo admantiz, primero obtendre el nombre de los clanes con MySQL y los colocare en un dialogo en modo de lista, al seleccionar uno utilizare el y_dloag tambiйn, gracias de nuevo :Р
Reply
#10

pawn Код:
new Dialog[][]={
    {"soy un texto"},
    {"soy un texto"},
    {"soy un texto"},
    {"soy un texto"},
    {"soy un texto"}
    /*ETC...*/
};

new CMDS[2000], DATA[144];
for(new index=0; index< sizeof(Dialog); index++){
    format(DATA,sizeof(DATA),"%s\n",Dialog[index]);
    strcat(CMDS, DATA);
}
ShowPlayerDialog(playerid, DIALOG_COMANDOS, DIALOG_STYLE_MSGBOX, "titulo dialog:", CMDS, "Aceptar", "Cancelar");
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)