Jump to content

ratcham

Members
  • Posts

    5
  • Joined

  • Last visited

Profile Information

  • Gender
    Male
  • Location
    españa

Recent Profile Visitors

1122 profile views

ratcham's Achievements

Poring

Poring (1/15)

0

Reputation

  1. pero, si, veo tu propuesta, pero lo que yo digo es crear un fichero de texto en el que estén absolutamente todos los dialogos de los npc,s con un código. Tu propuesta es para construir cada npc con varios idiomas, pero mi propuesta es crear un unico npc, que no contemple el idioma, sino que este venga definido según el fichero txt que uses. Al igual que se usa const.txt y se dan por validas esas constantes para usarlas en los npc,s, digo de crear un fichero dialog.txt que según el idioma de cada uno pues lo tendra adaptado y verá todos los npc,s en su idioma. Y si tengo un dialog.txt en ingles, pues tan solo tengo que meterlo en un traductor y ya lo tengo listo para el idioma que a mi me apetezca.
  2. Hola a todos. Mi nivel de C es bastante bajo, y espero que alguien me guie para poder hacer lo que pretendo o me indique si ya está hecho. Mi idea es que se pueden usar en los scripts alguna herramienta que permita usar las cadenas que esten almacenadas en un fichero .txt. La cosa es crear un fichero, por ejemplo: dialog.txt, en el que haya constantes del tipo cadena de caracteres. Esto serviría para hacer npc,s que pudieran usar estas constantes para los diálogos. Usando una forma de escribir los dialogos, ésta simplemente la evalue y si concuerda con la norma, pues que la cambie por una frase almacenada en el dialog.txt. Pongo lo que hasta ahora he hecho. He creado el fichero dialog.txt. El formato del fichero dialog.txt es el siguiente: nombre [tab] cadena de texto ** El nombre consta de _._ + 'Nombre del npc' + número de orden. (todo esto sin usar espacios, solo usar guion bajo _ como separador de palabras) ** En vez de [space] tambien puede usarse otro tipo de separador más adecuado si así se determinara. Aunque este formato lo traduce muy bien muchos traductores de texto como por ejemplo el traductor de google que interpreta _._kafra_001 como algo que no debe cambiar. Este es un ejemplo: en el fichero dialog.txt: ... _._kafra_001 [space] Hola, buenos dias. _._kafra_002 [space] ¿Necesitas mi ayuda? _._kafra_003 [space] Nos vemos, chao. ... luego en el script pondría: ... mes "_._kafra_001"; next; mes "_._kafra_002"; next; mes "_._kafra_003"; close; ... y al hablar con el npc, no saldria "_._kafra_001" sino "Hola, buenos dias.": Y todo esto para que?. Pues para que cuando haga un npc con diálogos, use este formato para que con tan solo cambiar o traducir el fichero dialog.txt, tenga todos los diálogos en el idioma que yo quiera. Que he hecho hasta ahora?. En el source, en la función 'mes' evaluaría las 3 primeras letras de la cadena y si coinciden con '_._' se supone que es un texto que debe ser cambiado por el que esté en el fichero dialog.txt. Supongo que usando la funcion strncmp() se puede comparar los 3 primeros dígitos de la cadena, pero luego lo que no se hacer es leer el fichero dialog.txt y buscar la que coincida y reemplazarla. Solicito ayuda en esto, en un cambio de la función mes para que si el formato de texto coincide con un estandar, lo cambie. Muchas gracias. Tembién he pensado en que podría haber problemas de multiacceso al fichero, como no entiendo muy bien como funciona esto de leer directamente en un fichero del server, pues no se que inconvenientes podrían surjir. He pensado en que también se podría crear un fichero en el propio cliente dentro de la carpeta /data/ y así no habría este problema de multiacceso. Se podrán ir haciendo revisiones de este fichero para saber si se tienen todos los npc,s dentro del dialog.txt y además una actulizacion desde el propio server del juego, cuando se haya implementado nuevos npc,s con este formato. ********************************************************************************* Disculpen los moderadores, me confundi al colgarlo, no se si este tema es tan generico que debería estar aquí o trasladarlo al sitio de proyectos. Muchas gracias y perdonen el error. ********************************************************************************* Esta es la función para el uso de 'mes' dentro de un script: (esta en el source clif.c) void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes) { int fd = sd->fd; // he modificado esto: // supongo que strncmp() trabaja de esta manera, si me he equivocado les ruego me ayuden a cambiarlo. if (strncmp( *mes, "_._" , 3 ) == 0) // coinciden los 3 primeros caracteres con "_._" { *mes = read_dialogtxt(*mes); // sustituyo las cadenas si esta en dialog.txt } // read_dialogtxt() es la función que no se hacer. // La cual evalua y busca *mes dentro del fichero dialog.txt // Si la encuentra devuelve el valor nuevo, y si no, devuelve la misma cadena *mes // La función deberá evaluar si existe algún duplicado y si la cadena a devolver está en una sola linea o en mas. // El fichero dialog.txt igual debería estar en el cliente/data/dialog.txt para evitar posibles multiaccesos a un solo fichero en el server. // Todo lo demás seguiría igual... int slen = strlen(mes) + 9; WFIFOHEAD(fd, slen); WFIFOW(fd,0)=0xb4; WFIFOW(fd,2)=slen; WFIFOL(fd,4)=npcid; memcpy((char*)WFIFOP(fd,8), mes, slen-8); WFIFOSET(fd,WFIFOW(fd,2)); }
  3. usa esta funcion que cree yo, donde se le envian varios argumentos. el getarg(0), son los puntos actuales de un player. el getarg(1), es el nombre del pj. Puedes llamar a esta funcion cada vez que un player consiga un punto de esta manera: callfunc ("RankPuntTop",K_punt,strcharinfo(0)); //K_punt es la variable donde se el player guarda los puntos function script RankPuntTop { set @mtotal, getarg(0); set @nomb$, getarg(1); set @reem,0; for (set .@c, 0; .@c <= getarraysize($top_rank); set .@c, .@c + 1) { if (@nomb$ == $topN_rank$[.@c]) //comprobacion de que ya esta en el ranking, si lo esta le damos su nuevo valor { set @reem,1; set $top_rank[.@c],@mtotal; } } set .@c,.@c - 1; //si no esta, preparamos e incluimos este nuevo registro al final del ranking if (@reem == 0) { set $top_rank[.@c],@mtotal; set $topN_rank$[.@c],@nomb$; } // hasta aqui inclusion de datos // reorganizacion de array // se va haciendo comparaciones hasta que el ranking queda ordenado set .@t,(getarraysize($top_rank)-1); for (set .@d,.@t;.@d > 0; set .@d, .@d - 1) { set .@actualran,$top_rank[.@d]; set .@siguiran,$top_rank[(.@d - 1)]; set .@plaactual$,$topN_rank$[.@d]; set .@plasigui$,$topN_rank$[(.@d - 1)]; if (.@actualran > .@siguiran) { set $top_rank[(.@d-1)],.@actualran; set $topN_rank$[(.@d-1)],.@plaactual$; set $top_rank[.@d],.@siguiran; set $topN_rank$[.@d],.@plasigui$; } } //eliminacion de los que no deben estar en el top deletearray $top_rank[10],.@t; deletearray $topN_rank$[10],.@t; return; } // End function dentro de esos dos arrays tienes los nombres y los puntos desde $top_rank[0] a $top_rank[9] y en $topN_rank$
  4. Encantado de que me envies los txt para conformarlos... aun no se como unirme al grupo a traves de github... Supongo que tendreis que enviarme una invitación.
  5. Yo me uno a vuestro grupo de traductores, los puestos que me gustaría llevar, seria el de revisión ortográfica y argumentativa del texto, y revisión de funcionamiento de scripts, mejora de la estructura y metodología de estos. Domino bastante bien el manejo de cualquier script. Mi usuario en github.com es gitcham os agradeceria que me unieseis al grupo y me enviaráis tareas para hacer. un gran abrazo.
×
×
  • Create New...