Pues como podeis ver en el titulo, a veces hasta los coders con algo de experiencia (yo no es que tenga mucha, pero algo tengo je, je) tenemos problemas a la hora de programar, seguro que no soy el único :P
Bueno, aqui va mi duda:
Estoy intentando usar el Luaplayer HM 8, pero no puedo usar las fuentes convencionales .ttf
Supuestamente el codigo debería de funcionar bien de la siguiente forma:
Font.init() --Inicializa las fuentes ttf en HM8 Font.load("ms0:/PSP/GAME/JUEGO/fuente.ttf",1) --Carga la fuente deseada en un slot entre el 1 y el 5 Font.color(255,255,255,255) --Indica los valores R,G,B y Alfa de la fuente while true do --Comienza el bucle principal screen:clear() System.setHigh() --Pone la PSP a 333Mhz pad = Controls.read() --Obviamente todos sabemos para que sirve esto screen:blit(0,0, instalacion4) --Muestra una imagen cargada previamente Font.print(40, 40,"Texto",Blanco,1) --Muestra texto usando la fuente cargada con aterioridad y el color Funcion() --Ejecuta una funcion creada con anterioridad oldpad = pad screen.flip() --Muestra en pantalla la imagen y el texto end --Fin del bucle Font.term() --Termina el uso de la fuente
El error es el siguiente:
Error: Script.lua1: attempt to index global 'Font' (a nil value)
Press start to restart
¿Alguna sugerencia?
PD: En caso de que no se pueda arreglar el error que comento (ya que he probado miles de cosas) ¿Sería posible cargar los PRX que hay en HM8 desde el HM7 y utilizarlos usando las funciones del HM8?
-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----
Oye no te falta la linea de
Oye no te falta la linea de codigo siguiente?:
Font.unload()
Valiente TONTERÍA has dicho
Desde luego. Sin duda. Tú dirás todo lo que quieras que sabes lo que te haces, bla, bla, bla, pero acabas de soltar un auténtico disparate, y encima ignorando toda la discusión anterior a tu "sonada" intervención. No es mucha muestra de respeto por tu parte que digamos.
Insisto: programar no es jugar a los dados, a ver qué sale. Hay que saber qué se hace uno, por qué lo hace y por qué no hace lo que no hace.
Cualquiera con dos dedos de frente y un mínimo conocimiento de programación (no ya en Lua, en cualquier lenguaje de POO) ya sabe ver que si Font.init() da el error de "Attempt to index XX (a nil value)", Font.unload() dará exactamente el mismo error. Es de cajón.
Así que bueno, tendrás todas las ganas que tengas de que se te vea en el foro de programadores, de soltar lo que se te ocurra y tal... pero esta actitud, aquí, está peor vista -mucho peor- que en las otras partes de la página, donde tampoco es buena idea.
Así que te lo digo claro: si no sabes de qué estás hablando, cállate, porque entonces no estás haciendo más que estorbar; nada de intentar ayudar, nada de aportar, simplemente soltar la parida de turno por el scenebito y para pasearse por "ahí". O sea, estorbar. Y punto.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
jo**r
ZYX3D, que sabemos que tú lo ""sabes todo"", puede que tu sepas por lo que es, pero quizás otras personas no, y por eso preguntan, o puede, que otras respondan creyendo que tienen razón y lo unico que saben es empeorar las cosas, pero tampoco es para decir "cállate" de esa manera, y lo que las dicho, no seas tan arisco leñe! (no e sido el primero en decirtelo y seguro que no el ultimo)
salu2
Perdona pero he de decir
Que en este caso ZYX3D tiene toda la razón y estoy completamente de acuerdo con el. Si mi error está en el Font.init()... ¿Porque demonios debería de añadir una funcion (que por cierto no existe) si me dara justo el mismo error que Font.init()?
Está claro que Ðαrk_Ðrαgøn-βlαck no tiene mucha idea en lo de la programacion.
-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----
Los apoyo
No es por traerla en contra de Ðαrk_Ðrαgøn-βlαck, pero ya van varias veces que comenta "tonterias".
Tutorial: Fabricando nuestro propio micrófono para la PSP.
Exclusivo de PSP.Scenebeta.com
vale,
yo no he dicho que no lleve razon, porque la tiene, pero tampoco es pa decirlo asi ¿no? pero bueno, me callo que siempre yo "y mi libro" llevamos la culpa de todo, y si digo esto, es porque prefiero no montar lo de la ultima vez :P
Bueno, dejemoslo aqui
Que esto ya va siendo off topic.
[OT] Y otros que sólo hablan por hablar.
Y se les nota. Y esos sí estorban. Y a mi modo de ver, a esos NI AGUA. Punto.
Y si crees que me he pasado, ya sabes: márcalo como ofensivo. Como si tú fueras para hacerte mucho caso, por otra parte... Porque ambos sabemos que tú crees que puedes darme lecciones de vida, moral y demás, y yo ya ando tan resabiado (doblándote la edad, así a ojo) que no estoy para "tonterías de patio de colegio", o lo que interpreto como tal, ni para cambiar mi manera de ver la vida por el primer desconocido (o segundo, da igual) que me encuentre por ahí y tenga sus ideas: yo ya tengo las mías...
Así que bueno, tú sabrás. Por mi parte ya te he dicho a ti (y no serás el último) que no pienso hacerte ningún caso, ni echarte ningún cable. Tú sabrás, ya que vas dando lecciones, qué te conviene más... y qué manera de programar, si la "cortés y lo decimos todo con estilo francés del XIX", o la mía de "hay cosas que ni por el forro, y cuanto antes se corte, mejor", sirve: los resultados, a la vista están...
...pero de todos modos, lo dicho, te recuerdo que ya te dije que no iba a dirigirte más la palabra -por lo menos en temas de programación-, ya que mis modos te resultaban tan molestos. Así que espero que tu hilo de dudas se enriquezca con la gente que dice cosas a bulto y tú pierdas el tiempo probando suerte -con exquisita cortesía, eso sí-, y a los que queremos hablar de programación, y qué cosas son una tontería (que las hay, a qué negarlo), y qué cosas no, nos dejen hablarlo en paz.
Así que bueno. Por tu parte, mejor que si no vas a aportar nada al hilo, también te calles -que al fin y al cabo has escrito, únicamente, para meter un offtopic por un encontronazo personal que tuviste con otro-. Y si la gente quisiera las Lecciones Morales de Rubenelportero, ya se comprarían el libro, se harían de la secta, o lo que toque...
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Ok, gracias por tu
Ok, gracias por tu explicacon. Pernonad por la falta de respeto a todos.
attempt to index global
attempt to index global 'Font' (a nil value)
El error deja bien claro que Font tiene un valor nil (nulo) y por lo tanto no se puede manipular de la forma que lo haces.
¿Seguro que el Lua que tienes usa "Font"?. De hacerlo ese "Font" no tendría un valor nulo al entrar en el programa, sería una variable/objeto global.
Yo no se, pero creo que soy el único de aquí al que Lua se le hace más difícil que C. . Con tanto interprete y librería suelta al final no sé qué es válido en cada caso.
Un saludo.
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Tabla rápida
Regla del nueve: si es una clase/tabla con nombre en minúscula, es "core" de Lua, y está en todas sus encarnaciones. Ejemplos: string, io, os, table, math, function (core), Image, Color, Timer, System, Controls... (dependientes de players). Excepción: screen (es una instancia de clase Image, y por tanto, player-dependant). (La lista no es exhaustiva).
Luego: hay unos que llamo "estándares de facto", que se mantienen desde los primeros players de Lua para PSP/PC (sobre el de PSP, como el LuaPlayer Windows) y que cambian nada o casi nada hasta el LPHM 7 (inclusive). Estos serían Image, Color, Timer y Controls. System es más propio de la serie HM, pero puede emularse fácilmente en PC con la tabla os, por ejemplo, ya que System viene básicamente por algo que comenté en un hilo en que creo que estabas (así que no me extiendo; digamos sólo para quien no lo sepa que es que os no funciona bien en PSP, y lo suple con System).
Y los posteriores al HM7 (el HM8, LPHMv2, PGE, creo que tb el Euphoria) cambian mucho/bastante//demasiado en cualquier caso alguna parte crucial de los "de facto" (normalmente, la gráfica) y mandan la retrocompatibilidad a tomar por saco, con lo que si te has tomado la molestia de hacerte tus bibliotecas que funcionan igual bajo Win que bajo PSP, lo más sensato es mandar al australiano a tomar por saco ventral con los canguros, y al fénix que se haga cenizas, que por las cuatro chorradillas que mete (que te puedes hacer tú mismo en Lua, y más que eso... y sigue sin tener soporte digno de fuentes, etc.), tampoco vale la pena tirar tu trabajo previo por la borda.
Luego hay algunos casos un tanto "raros", como los file handlers, que no-son-una-clase-pero-sí-y-tanto-que-lo-son, o ¿para qué necesita nadie un tipo de datos Fecha?, o que... (agárrate, curvas) Lua no tiene ninguna manera global de convertir datos. Sólo algunos casos, como tostring, funcionan coherentemente, pero para los otros puede ser un tanto complicado, según depende.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Cuanta info
Cuanta informacion ^^
Ja, ja manda al australiano a tomar por saco xD
Un saludo.
+5 scenebitos tambien ;)
Muchas gracias por la respuesta
Es muy completa y detallada. Una lástima que algunas partes que quieren ampliar la potencia del proyecto Lua sean tan caóticas. Esperemos que con el tiempo se vuelvan todos más homogeneos y que no intenten "inventar la rueda con otro nombre", sino más innovación respentando la compatiblidad.
+5 Scenebitos
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Revisa Font...
Que el error que te da sea justamente ese, lo que significa es que no existe nada llamado "Font".
Y bueno... Font no es una clase estándar de Lua, es de esos "estándares de facto", como Color, Image, Controls...
Así que supongo que la respuesta al misterio estará por alguna parte de la documentación del HM8. Será que es font y no Font, o hay TTFFont y SysFont o algo...
...pero si te dice ya en la primera línea que "Font" es nil, es que Font no existe ya desde el principio.
En fin, de todas maneras, EMHO el soporte de fuentes para toda la serie de players (desde el 0.20 al HMv2, pasando por los PGE y Euphoria y Blah y demás), es una auténtica cacuela. Ni acentos, ni ordenación como Dios manda, ni nada de eso... lo más que han añadido, esas funciones chorras para darles brillos, que tampoco cuesta tanto hacértelas tú mismo en ¿diez líneas?... a ver cuando dejan esa perspectiva anglocéntrica de una buena vez.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
El problema es que
Yo la funcion de Font.Init() pues no me lo he sacado de la manga sino de un tutorial de Pipagerardo (muy completo por ciert) en el que estas funciones tambien estan...
Bueno como mucho puedo volver al 7, porque solo estaba experimentando con HM8, pero demasiados cambios... Yo prefiero lo clásico :P
-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----
=
Yo igual, pues probé con el hmv2 y me fue de culo... Pregúntale a ZX-3D-. XD
Saludos
Tiene que ser un problema del Lua Player
Tiene que ser un problema del Lua Player HM8 porque no hay otra explicación, al fin y al cabo es una beta.
Pues
Si son errores yo tengo otro, al intentar escribir con fuentes Originales de la PSP (la del XMB) en LuaHM8 solo me mostraba la imagen de fondo per las letras no.
Si funcionaba ya que si presionaba X salia al XMB, por eso creo que es un error.
PD: Al igual que tú saque la información del tutorial de Pipagerardo.
Tutorial: Fabricando nuestro propio micrófono para la PSP.
Exclusivo de PSP.Scenebeta.com
Prueba con IntraFont.init()
Otra cosa no se me ocurre :)
Pero como los tutos de pipagerardo eran para HM<=7, si mal no recuerdo, y Homemister tiene esa manía de sustituir "sin mirar atrás", y las IntraFont eran de los avances cacareados, tiene toda la pinta que Font haya caído y lo haya sustituido IntraFont...
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Si y no
Porque es verdad que sustituyeron las fuentes ttf por las IntraFont, pero por otro lado, segun el tutorial de Pipagerardo si que hay retrocompatibilidad con estas fuentes usando el Font.init().
He pensado lo de usar las IntraFont, pero tendri que cambiar TODO el texto que muestro en mi programa, y no es poco... Por otro aldo tampco se si la RAM soportaría la IntraFont mejor que las fuentes ttf, es decir ¿Cual de ellas pesa mas? No quiero que la velocidad de mi homebrew se vea mas afectada de lo que esta... (aunque nunca lo sabre si no lo pruebo).
PD: ¿Alguien sabe si es posible cargar desde el Lua Player HM7 los .prx que vienen con el HM8 y de este modo poder usar las funciones del HM8 en el HM7? Me interesa lo que bloquear el popup del Home y el hook.
-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----
Creo que es más cuestión de recursos...
Es decir, creo que la cuestión clave no es tanto la RAM (que quieras que no, no será mucha... cuenta unos 128KB, tirando MUY largo), sino los recursos de procesador que se gasta...
Quieras que no, cualquier fuente vectorial (como las TTF) son un meterse a hacer multiplicaciones por cada letra, letra a letra, y si encima le pones un degradado con alpha blending, pues... suena a bastante processor-intensive. Ya la "built-in monospace" era más lenta que el caballo del malo, con las TTF y demás es que no quiero ni imaginarlo :)
Personalmente, viendo lo limitado de todas las implementaciones de las distintas fuentes (problemas, aparatosidad, ¡que todas se comen los acentos y sólo permiten los caracteres hasta ASCII 127!), creo que lo mejor es ninguna de las opciones anteriores...
...¿¿por qué no habrá un soporte para las buenas, viejas, siempre útiles y legibles fuentes bitmap??
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Como ya he dicho antes...
A mí no me iba así, ya que solo mostraba la imagen de fondo per no las letras.
Es algo raro pues el archivo script.lua original del LuaHM8 viene escrito de esa manera y si funciona a a perfección.
Tutorial: Fabricando nuestro propio micrófono para la PSP.
Exclusivo de PSP.Scenebeta.com
¿Pero con Font o IntraFont?
Porque son dos clases distintas, y el error parece ser muy distinto (y no extrapolable)... Si no se ven, entonces no hay ningún problema con indexar una clase inexistente (que es lo que le pasa a Arbër). Si con IntraFont sí se puede llamar al método, pero no se ven, el problema estará por otra parte (hay que inicializar la pantalla antes o después, o tomarse una Foster's Lager, o tatuarse algo maorí en la cara, o algo...), pero la clase será otra.
Eso sí, efectivamente, el propio Homemister ya reconoce que la v8 está poco menos que muerta (especialmente por los bugs) y que para eso mejor te pases a la v2 y tal... pero sigue siendo interesante saber si la clase Font -uno de estos "no propio de Lua pero sí"- sigue o no en los >LPHM7.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Y digo yo de mili...
Realmente leyendote con lo de las fuentes, el tema es más serio de lo que parece. Esto es un auténtico lío!!.
Estoy pensado que una opción sería hacer un wrapper directo del SDL_ttf que se usa en C. Me explico para manejar fuentes a través de SDL en C, se usa esa libería, voy a poner unas pocas funciones:
Yo apenas he tocado las TTF de SDL, más que para mostrar unos simples textos. Pero bueno a lo que iba.
¿No hay en Lua un wrapper basado en el SDL_ttf respetando los nombres de las funciones?, esto supondría un "estándar de facto" y la misma documentacion de las DSL sería útil. Aparte que tendría una optimización bastante buena.
Sería una especie de:
NOTA: Lógicamente no uso el parámetro fuente porque ya está implícito en "Font"
Puede que esté diciendo alguna burrada y que el Lua del que estamos hablando no se base en SDL, en suyo caso me callo .
LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.
Algo huele a podrido en DynaFontia...
No sé si usan la SDL, la verdad; además, en cuanto al cómo hacen sus trucos de magia, los autores de players suelen ser bastante herméticos...
De todas maneras, me huele que debe ser algún "parche" más profundo, y que esto de las fuentes es un síntoma... Lo más llamativo es la cuestión de los acentos (o sea, códigos superiores a 128): no funcionan en ninguna de ninguna fuente. Ni la de sistema de 8 puntos, ni la incrustada, ni las truetype, ni las intrafont. Nin-gu-na.
PERO en cambio... si escribes un archivo con texto "raro", se lee bien (léase: con la codificación Win-1252 en la PSP y Windows -¿o era 1522? La típica de alfabeto latino-centroeuropeo-). No hay una conversión a ASCII ni nada de eso, sino una total identidad del texto. Pero como intentes mostrar en pantalla de la PSP algo "raro", ¡cuadradín al canto!
Y esto, creo, puede ser que tenga algo que ver con que los "locale" no funcionan nada, nada, de nada. Da igual cómo te lo montes con os.setlocale(), no hay puñetera manera. El primer día de la semana seguirá siendo el "Sun", etcétera. Porque, aparte, este problema de los acentos no lo he visto en programas en C, así que debe de haber algo más por el medio, y ser algo propio de Lua...
Y si hay un problema relacionado con la página de carácteres (vía el locale)... me temo que por muchos apaños (o maravillas) que se hagan con las fuentes, el problema va a persistir.
Y bueno, ya supongo que pedir, por ejemplo, no ya que sean con lucecitas o bombillos, sino ajustar kerning (interletraje), interlineado, que se puedan "rotar" las fuentes (para poner la PSP en formato vertical, pongamos) o se "escriba al revés" (como el árabe o el hebreo, que se escriben de derecha a izquierda) ya sería más que pedir peras al olmo... y en C me suena que será bastante posible (más que en Lua tal cual viene, desde luego) :(
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
El__Qat se equivoca
En el script de ejemplo el texto se muestra usando el IntraFont (en todo su explendor :P).
Creo que la funcion Font.init() es una funcion "fantasma", es decir esta mal, deberá de ser un error de Pipagerardo.
-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----
Y yo que he dicho...
Talves no me explique bien pero eso quize decir, que el script.lua de LuaHM8 viene escrito con IntraFont y se ve bien, pero al querer usarlas yo no me va.
Tutorial: Fabricando nuestro propio micrófono para la PSP.
Exclusivo de PSP.Scenebeta.com
Ahh, ok
Entendí que dijiste que venia con la funcion Font.init() Sorry :p
Me pasa..
Con las IntraFont es por eso que uso HMv2.
Fácil..
A la hora de cargar la fuente:
Tutorial: Fabricando nuestro propio micrófono para la PSP.
Exclusivo de PSP.Scenebeta.com
Ok el__QAT, lo he escrito mal en el ejemplo
Pero en el codigo lo tengo con comillas (lo escribi sin copy/paste).
Aunque eso estuviese mal, el error se genera en la linea 1 del codigo, es decir, la linea del Font.init().
-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----
Pues..
No veo nada mal, solo que estes usando un EBOOT.PBP que no sea el de HM8.
Ya me he asegurado
De que el eboot es el correcto... Me parece muy raro, pero bueno...
¿Sabes si se podria hacer lo que dice el hilo en la postdata?
-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----
Te refieres a..
Cargarlos con la función de HM7 para cargar archivos prx, ¿no?
Si con esa misma funcion
Cargar PRX e usar las funciones del HM8 ¿Sabes si es posible?