PDA

View Full Version : Script Linux (bash) para buscar NPCs


x7iBiT
06-23-2007, 01:17 AM
Gracias a otro hilo, conseguí de la página de regnumZg.com.ar un archivo de texto con la base de datos de todos los NPCs del juego. Tras abrirlo y ver lo sencillo que era enseguida se me ocurrió hacer un script para buscar en él de forma sencilla a través del terminal de nuestro Linux. Para empezar, he cogido la base de datos y la he partido en tres (un archivo por reino). También he quitado los acentos para que la búsqueda sea más sencilla. Los archivos son los siguientes:
npca.txt -> Reino de Alsius
npci.txt -> Reino de Ignis
npcs.txt -> Reino de Syrtis

Luego he creado un sencillo script para bash que lo que hace es volcar el contenido del archivo con el camando cat, ponerlo por columnas con el comando awk, y finalmente filtrarlo (aquí es donde entra en acción la búsqueda) con el comando grep:

#!/bin/bash
file=npcs.txt
for i in $*; do
if [[ $i == $1 ]]; then
srch="$i"
else
srch="$srch $i"
fi
done
if (( $# == 0 )); then
cat $file | awk -F : '{printf "%-27s %-23s %-24s %4s:%4s\n",$1,$2,$3,$4,$5}'
else
cat $file | awk -F : '{printf "%-27s %-23s %-24s %4s:%4s\n",$1,$2,$3,$4,$5}' | grep --color -i "$srch"
fi
exit

Para bajar tanto las bases de datos como el script:
http://www.mediafire.com/?9wi11gbgigl

El funcionamiento es muy sencillo, lo primero es descomprimirlo (por si acaso, no useis el directorio del juego, hacerlo mejor en otro directorio), y editar el script npc.bash (podeis usar vi, nano, gedit, etc.) y cambiar donde pone pone "file=npcs.txt" y poner la base de datos de vuestro reino (ver más arriba). Como se habrán dado cuenta, viene por defecto con el reino de Syrtis (es el mío, jeeje) por lo que si sois de Syrtis no hay que cambiar nada. Luego hay que comprobar que el script tenga permisos de ejecución y en el caso de que no los tenga cambiarlos con chmod +x npc.bash. Finalmente ejecutar el script. Así por ejemplo:
Poniendo ./npc.bash (a secas) listará todos los NPCs de vuestro reino
Poniendo ./npc.bash korsum listará todos los NPCs del pueblo de Korsum
Poniendo ./npc.bash guardia elite listará todos los Guardias Elites de vuestro reino
Poniendo ./npc.bash caballero listará todos los entrenadores de caballero de vuestro reino
Poniendo ./npc.bash nombre, en donde nombre es el nombre del NPC a buscar, sólo aparecerá dicho personaje.

Por cierto, para hacer la búsqueda más sencilla, no hace falta poner acentos, ni respetar las mayúsculas/minúsculas.

Luego también podemos incluso copiar el script a un directorio que esté en el PATH (por ejemplo /usr/local/bin) para no tener que ir hasta el directorio en el que esté cada vez que queramos ejecutarlo. Lo único es que si hacemos esto, en donde pone file= hay que poner la ruta completa del archivo de la base de datos. Por ejemplo yo lo tengo así:
file=/home/xzibit/Misc/Regnum/npcs.txt

Cualquier duda que tengan, no duden en preguntarla. También agradecería cualquier otro comentario, sugerencia o "bug" que hayan podido encontrar.

Un Saludo ;)

x7iBiT
06-26-2007, 06:14 PM
¿Alguien lo ha probado? ¿Que tal?

arlick
06-26-2007, 06:19 PM
¿Alguien lo ha probado? ¿Que tal?

te iba a contestar que estaba liado y no podia probarlo pero en 5 minutos te cuento XD, ya me lo estoy descargando

arlick
06-26-2007, 06:27 PM
funciona!!! esta genial!!!

tengo que aprender a hacer estos scrips :biggrin:

ArcticWolf
06-26-2007, 09:36 PM
¿Alguien lo ha probado? ¿Que tal?

Nosotros hicimos un programa en java que se encarga de lo mismo y costó 2000 líneas, vos lo hiciste con un script y es igual de efectivo :rale:


ES GENIAL!!!!!!!!!! :D

Daggy
06-26-2007, 11:38 PM
Nosotros hicimos un programa en java que se encarga de lo mismo y costó 2000 líneas, vos lo hiciste con un script y es igual de efectivo :rale:


ES GENIAL!!!!!!!!!! :D

jajajajajajajaj

cosas que pasan :biggrin:

sunos
06-27-2007, 01:51 AM
conste que te dije, hagamos un cat db | grep npc xD

ArcticWolf
06-27-2007, 03:10 AM
conste que te dije, hagamos un cat db | grep npc xD


Pero no es multiplataforma... :sifflote:

sunos
06-27-2007, 04:28 AM
y bue, pero desde windows se pueden instalar cygwin ^^ y los que usan BeOS que se jodan xD no creo que les corra el RO ademas :-P
un scrip de bash podria andar en cualquier *nix

sunos
06-27-2007, 04:29 AM
correra el RO en un freeBSD con la capa de compatibilidad linux?

ArcticWolf
06-27-2007, 05:22 AM
correra el RO en un freeBSD con la capa de compatibilidad linux?

En el clan Praetore teníamos a Minerve que jugaba en FreeBSD... Así que supongo que funciona (a no ser que tenga linux instalado y no lo haya dicho ¬¬)

sunos
06-27-2007, 06:03 AM
o sea, freeBSD tiene drivers para nvidia y puede ejecutar binarios linux, asi que en teoria deberia funcionar (pena que no hay drivers de nvidia para freeBSD a 64) es mas en teoria se podria correr sobre Solaris, probe la capa de compatibilad y es excelente, le tiras una vaca muerta y anda

x7iBiT
06-29-2007, 03:09 PM
Me alegro de que os haya gustado el script!! :biggrin: :biggrin: :smile:

conste que te dije, hagamos un cat db | grep npc xD

Básicamente el script es eso, lo único es que el grep le pongo la opción -i para que no haga distinción entre mayúsculas y minúsuculas y --color para resaltar en color la cadena buscada (una mariconada, jeje). Luego con el potente comando awk, con la opción -F : para que cambie el separador por defecto (espacios) por los dos puntos, imprimirlo por pantalla en columnas alineadas.

EDITO: Una buena guía de introducción para hacer scripts en bash:
http://xinfo.sourceforge.net/documentos/bash-scripting/bash-script-2.0.html

ArcticWolf
06-29-2007, 03:54 PM
o sea, freeBSD tiene drivers para nvidia y puede ejecutar binarios linux, asi que en teoria deberia funcionar (pena que no hay drivers de nvidia para freeBSD a 64) es mas en teoria se podria correr sobre Solaris, probe la capa de compatibilad y es excelente, le tiras una vaca muerta y anda

Tengo una Debian que no estoy usando por ahora ya que puedo mantener todo con un solo equipo, así que voy a probar de usar el disco duro de dicha máquina para instalar OpenSolaris y probar a ver si al menos arranca...

...Todo eso después de los exámenes...


...Y después de que instale wifislax al disco duro.

arlick
06-29-2007, 03:57 PM
...Y después de que instale wifislax al disco duro.

si consigues hacer lo que hay que hacer con ese disco avisame please :superpusso:

sunos
06-29-2007, 04:04 PM
snif snif Solaris no me anda =(, tengo ganas de probar un belenix, cuando me aburra del openSuse 64 quizas me lo cargue ^^

ArcticWolf
06-29-2007, 04:06 PM
snif snif Solaris no me anda =(, tengo ganas de probar un belenix, cuando me aburra del openSuse 64 quizas me lo cargue ^^

Te mandaría una copia de los dos DVD's que tengo, pero es capaz que el correo se queda con ellos. :fury:

sunos
06-29-2007, 04:08 PM
Solaris no soporta mi controladora SATA y muere cuando reconoce que esta, para que arranque tengo que desactivar la controladora sata y es muy poco practico

arlick
06-29-2007, 04:12 PM
Solaris no soporta mi controladora SATA y muere cuando reconoce que esta, para que arranque tengo que desactivar la controladora sata y es muy poco practico

ahora que lo decis, me puedes ir avisando de con que distros has tenido problemas que no te reconocian el disco SATA? tengo dos de esto, asi que si tengo problemas con ello poco hago :S

sunos
06-29-2007, 05:47 PM
mmm.. distros linux? cualquiera con k 2.4.x tenes muchas posibilidades de dolor de cabeza, con SO''s probe muy poco, freeBSD no tiene historia net tampoco y open tampoco, y bue Solaris si >.<

ArcticWolf
06-29-2007, 05:52 PM
mmm.. distros linux? cualquiera con k 2.4.x tenes muchas posibilidades de dolor de cabeza, con SO''s probe muy poco, freeBSD no tiene historia net tampoco y open tampoco, y bue Solaris si >.<

Por algo te llamás SunOS

sunos
06-29-2007, 05:53 PM
Por algo te llamás SunOS
podes creer y encima Solaris no me anda >.<

ArcticWolf
06-29-2007, 05:55 PM
podes creer y encima Solaris no me anda >.<
Suele suceder, a mi me falló la instalación 32000000 de veces.

sunos
06-29-2007, 05:56 PM
Suele suceder, a mi me falló la instalación 32000000 de veces.
porq estamos hablando de esto aca? pobre flaco le re desvirtuamos el post =(

ArcticWolf
06-29-2007, 06:43 PM
porq estamos hablando de esto aca? pobre flaco le re desvirtuamos el post =(

Perdón!!!!!

(Vos empezaste)

Muy bueno ese manual para hacer scripts simples :beerchug:

sunos
06-29-2007, 06:51 PM
http://lugro.org.ar/biblioteca/cursos/edt5.html <-- eso tambien es copado si alguien quiere aprender un poco sobre el shell y muy util para hacer los scrips ^^

arlick
06-29-2007, 06:52 PM
http://lugro.org.ar/biblioteca/cursos/edt5.html <-- eso tambien es copado si alguien quiere aprender un poco sobre el shell y muy util para hacer los scrips ^^

uff, esta curioso pero de momento ya tengo entretenimiento por un tiempo de las vacaciones de verano (para mi empezaron hoy XD), aprender c++ :sifflote:

y a esto suma estudiar para aprobar de 4 a 7 asignaturas en septiembre... :S

sunos
06-29-2007, 07:10 PM
uff, esta curioso pero de momento ya tengo entretenimiento por un tiempo de las vacaciones de verano (para mi empezaron hoy XD), aprender c++ :sifflote:

y a esto suma estudiar para aprobar de 4 a 7 asignaturas en septiembre... :S
estas jugadisimo, podenete a estudiar ^^

arlick
06-29-2007, 07:12 PM
estas jugadisimo, podenete a estudiar ^^

que pocas ganas de estudiar..., entre otras tengo una sobre interfaces de usuario xD
y otra que si me gusto de hacer un minikernel y un sistema de archivos, suspendi la teoria y tengo que repetirlo :fury:

mister28
10-07-2007, 10:00 AM
Vaya faena le hicisteis al que escribio un post tan currao:ohill: desvirtuado total del hilo. Bueno supongo que son cosas q pasan :p

X7iBit, el enlace se caduco, parece. Podrias colgar el archivo de nuevo??

Muchas gracias.

arlick
10-07-2007, 11:48 AM
Vaya faena le hicisteis al que escribio un post tan currao:ohill: desvirtuado total del hilo. Bueno supongo que son cosas q pasan :p

X7iBit, el enlace se caduco, parece. Podrias colgar el archivo de nuevo??

Muchas gracias.

holas, tuviste suerte, me lo baje hace tiempo y no lo borré.

aca te lo puedes descargar.

PD: debes quitar la extensión .zip, no me dejaba subirlo de otra forma. El nombre debe acabar siendo: npc.tar.gz

mister28
10-08-2007, 12:40 AM
Agradecido ya lo tengo:clapclap:
Mañana lo probare.

kofran
10-10-2007, 05:52 PM
¿Alguien lo ha probado? ¿Que tal?


excelente script:thumb_up:

franco@franco-desktop:~/Desktop/npc$ ./npc.bash vasolleno
Oddi Vasolleno Montsognir Armero 1009:1295
franco@franco-desktop:~/Desktop/npc$

mister28
10-12-2007, 12:37 AM
excelente script:thumb_up:
Probado, excelente y practico:clapclap: :clapclap:
Gracias otra vez.

Con cosas como estas es por lo que me estoy aficionando de verdad a este maravilloso sistema operativo que es LINUX.

Angelwinged_Devil
10-12-2007, 10:30 AM
es en genial muchos gracias

x7iBiT
11-02-2007, 04:11 AM
Gracias Arlick por volverlo a subir!!!

Efectivamente el link del Mediafire caducó :ohill: