Anuncios Google

Snippets de Lua

De momento LuaDEV no tiene draw.circle, por lo tanto antes de usar cualquier snippet que use draw.circle deberemos poner:

function draw.circle(x,y,r,color)
  local x0, y0 = r, 0
  for i=0,90,9 do
     local x1,y1 = r*math.cos( math.rad( i )), r*math.sin(math.rad( i ));
     draw.line(x+x1,y+y1,x+x0,y+y0,color);
     draw.line(x+x0,y-y0,x+x1,y-y1,color);
     draw.line(x-x0,y+y0,x-x1,y+y1,color);
     draw.line(x-x0,y-y0,x-x1,y-y1,color);
     x0, y0 = x1, y1;
  end
end

Agradecimientos a DeViaNTe por la función.

 

He decido hacer un post para colgar nuestros snippets de Lua, empiezo con un reloj.

  • Reloj de agujas (autor xerpi):

function draw.clock(x,y,rad,colcon,colnum,colsec,colmin,colhour)
sec = os.date("%S")
min = os.date("%M")
hour = os.date("%H")
 
if not colcon then colcon = color.new(255,0,0) end
if not colnum then colnum = color.new(155,0,155) end
if not colsec then colsec = color.new(0,255,0) end
if not colmin then colmin = color.new(155,155,0) end
if not colhour then colhour = color.new(0,0,255) end
 
draw.circle(x,y,rad,colcon)
 
for a=1,12 do
	screen.print(x+math.cos(math.rad(((a+1)*360)/12)-90)*(rad-4)-4,y+math.sin(math.rad(((a+1)*360)/12)-90)*(rad-4)-4,a,0.6,colnum,0x0)
end
 
draw.line(x-math.cos(math.rad(sec*6-90))*rad/5,y-math.sin(math.rad(sec*6-90))*rad/5,x+math.cos(math.rad(sec*6-90))*rad,y+math.sin(math.rad(sec*6-90))*rad,colsec)
draw.line(x,y,x+math.cos(math.rad(min*6-90))*((rad/4)*3),y+math.sin(math.rad(min*6-90))*((rad/4)*3),colmin)
draw.line(x,y,x+math.cos(math.rad(((hour*360)/12)+((min*30)/60)-90))*((rad/5)*3),y+math.sin(math.rad(((hour*360)/12)+((min*30)/60)-90))*((rad/5)*3),colhour)
end

     Uso:

                 draw.clock(coordenada X, coordenada Y,radio[,color contorno][,color números][,color segundos][,color minutos][,color horas])

 

 

  • Texto vertical (autor xerpi):
function screen.print_vert(x,y,texto,tamaño,colorletras,colorsombra,interlineado)
if not tamaño then tamaño = 0.77 end
if not colorletras then colorletras = color.new(255,255,255) end
if not colorsombra then colorsombra = 0x0 end
if not interlineado then interlineado = 12 end
for i = 1, #texto do
	screen.print(x,y+(i-1)*interlineado,string.sub(texto,i,i),tamaño,colorletras,colorsombra)
end
end
Uso: screen.print_vert(x,y,texto,tamaño,colorletras,colorsombra,interlineado)   El interlineado es el espacio entre cada letra.
  • Texto circular (autor xerpi):
function screen.print_incircle(x,y,radio,sentido,texto,tamaño,colorletras,colorsombra)
if not tamaño then tamaño = 0.77 end
if not colorletras then colorletras = color.new(255,255,255) end
if not colorsombra then colorsombra = 0x0 end
for i = 1, #texto do
	if sentido == "right" then
		screen.print(x+math.cos(math.rad((360/#texto)*(i-1)-90))*radio,y+math.sin(math.rad((360/#texto)*(i-1)-90))*radio,string.sub(texto,i,i),tamaño,colorletras,colorsombra)
	elseif sentido == "left" then
		screen.print(x+math.cos(-math.rad((360/#texto)*(i-1)+90))*radio,y+math.sin(-math.rad((360/#texto)*(i-1)+90))*radio,string.sub(texto,i,i),tamaño,colorletras,colorsombra)
	end
end
end
Uso: screen.print_incircle(x,y,radio,sentido,texto,tamaño,colorletras,colorsombra) Sentido puede ser "right" o "left".
  • Trigonometría ulta rápida (autor DeViaNTe):
function devtrigo()
  local oldsin = math.sin;
  local sinval = { };
  for i=1,360 do table.insert(sinval,math.sin(math.rad(i))); end
  math.sin = function (x) return sinval[math.ceil(math.deg(x))]; end
  untrigo = function() math.sin = oldsin; end
end
Uso:
Se prepara con devtrigo(), y se quita con untrigo(). Lo que hace es precachear todos los valores del seno, y cambiar la funcion seno, por una lectura de tabla.
  • CAPTURAS:
Reloj:

 


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de jorge_97

El otro día estuve haciendo

El otro día estuve haciendo un jueguecito con tiles y necesitaba hacer una función que devolviera el numero que más se aproximase.

Por ejemplo:

math.ceil(5.4) devolvería 6

math.floor(5.4) devolveria 5

Lo que yo queria es que devolveria el numero más aproximado, en este caso 5.

Aqui la dejo por si a alguien le sirve:

function math.estimate(num)
 
max=math.ceil(num)
min=math.floor(num)
if (num-min)>=0.5 then return max else return min end
 
end

Un saludo a todos


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Imagen de NEKERAFA

Mmm...

Pues LuaDEV dispone de una función, llamada math.round() que lo que hace es redondear por aproximación.

P.D: Un apunte, math.ceil()  aproxima por exceso y math.floor()  aproxima por defecto.


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de jorge_97

B

Uhm no conocia la existencia de math.round()

Creo que no está documentada

Salu2

Imagen de DeViaNTe

Jej, buena lo del bt.

Jej, buena lo del bt. xDDDD

ahi va algo, va...:

--- Trigonometría ultra rápida:
 
function devtrigo()
  local oldsin = math.sin;
  local sinval = { };
  for i=1,360 do table.insert(sinval,math.sin(math.rad(i))); end
  math.sin = function (x) return sinval[math.ceil(math.deg(x))]; end
  untrigo = function() math.sin = oldsin; end
end

Se prepara con devtrigo(), y se quita con untrigo(). Lo que hace es precachear todos los valores del seno, y cambiar la funcion seno, por una lectura de tabla. Una solución interesante para los que se pueden permitir ese pequeño lujo de la aproximación...


Actualmente desarrollando nuestra web y UXCode : http://www.gcrew.es

No sé si ya te lo había

No sé si ya te lo había enseñado, pero me dió por hacer un tester de botones. Al final me ha quedado de 6 líneas, aquí el code:

messages = { "Select","","","Start","D-Pad Arriba","D-Pad Derecha","D-Pad Abajo","D-Pad Izquierda","Gatillo L","Gatillo R","","","Triángulo","Círculo","Cruz","Cuadrado","","Hold"}
	while true do
		controls.read()
			screen.print(50,50,"Presionaste "..messages[controls.waitforkey()])
				screen.flip()
	end

Disfrútenlo xD

Imagen de pspgorrister

quítale una linea xDDDDD

messages = { "Select","","","Start","D-Pad Arriba","D-Pad Derecha","D-Pad Abajo","D-Pad Izquierda","Gatillo L","Gatillo R","","","Triángulo","Círculo","Cruz","Cuadrado","","Hold"}
   while true do
      controls.read()
	screen.print(50,50,"Presionaste "..messages[controls.waitforkey()])
	screen.flip()
end


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de Chimecho

quitémosle otra xD

messages = { "Select","","","Start","D-Pad Arriba","D-Pad Derecha","D-Pad Abajo","D-Pad Izquierda","Gatillo L","Gatillo R","","","Triángulo","Círculo","Cruz","Cuadrado","","Hold"}
while true do
	screen.print(50,50,"Presionaste "..messages[controls.waitforkey()])
	screen.flip()
end

Que el waitforkey ya hace un read internamente jaj



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de pspgorrister

Otra más

Yo también pensé lo del control.read, pero creía que era necesario :(. En ese caso, se puede recortar más.

 

messages = { "Select","","","Start","D-Pad Arriba","D-Pad Derecha","D-Pad Abajo","D-Pad Izquierda","Gatillo L","Gatillo R","","","Triángulo","Círculo","Cruz","Cuadrado","","Hold"}
while screen.print(50,50,"Presionaste "..messages[controls.waitforkey()]) or true do
	screen.flip()
end

NOTA: Si da error de nil (no puedo comprobarlo ahora), se puede comparar screen.print(...) == nil or true y se evita el error

EDITADO: Esto *creo* que funciona, aunque no estoy 100% seguro.

messages
 = { "Select","","","Start","D-Pad Arriba","D-Pad Derecha","D-Pad 
Abajo","D-Pad Izquierda","Gatillo L","Gatillo 
R","","","Triángulo","Círculo","Cruz","Cuadrado","","Hold"}
while (screen.print(50,50,"Presionaste 
"..messages[controls.waitforkey()]) or true) and  screen.flip() ~= 33 do
end

PD: Puedo poner el "messages" en el while, pero es ya de risa, más vale una linea más y que quede menos "gorrino" :D


Editado: Crear hilos y comentarios duplicados incumple las Normas de la Comunidad, si necesita cambiar su comentario puede usar la opción de Editar. Antes de volver a postear por favor revise las Normas.| Rober Galarga


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de Chimecho

bueh....

ya que insistes xD

while (screen.print(50,50,"Presionaste "..({"Select","","","Start","D-Pad Arriba","D-Pad Derecha","D-Pad Abajo","D-Pad Izquierda","Gatillo L","Gatillo R","","","Triángulo","Círculo","Cruz","Cuadrado","","Hold"})[controls.waitforkey()]) or true) and not screen.flip() do end

ale, BT en una línea xD

Gusto en verte por aquí de nuevo jajajaja



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Aver es que todavia no paro

Aver es que todavia no paro de reirme xD hahaha xD

Imagen de NauTiluS1

Aver el qué lo haga más

Aver el qué lo haga más simplificado en una linea ahora xD PD:Buen post

Creo que ya nos divertimos

Creo que ya nos divertimos bastante... se acabó el off topic :P

PD. El de chime ya está en una línea.

Imagen de Chimecho

sep xD

Creo que el dice en una línea mismo, pero más corto, si que se puede, agrupando algo asi: while not (print or flip) do end, poniendo la coordenada de un dígito y acortando los nombres de los botones... pero naa, ya no tiene gracia =(



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de NauTiluS1

WTF? xD

WTF? xD

Imagen de Samuelfrm

xD

jajajaja no manches, nunca antes visto un BT en one linea, jajaja sos grandioso chime

Saludos.

Imagen de --Gomasz--

xD

Quitemos otra naa xD esto ya parece concurso de quien hace el menor codigo jaja.

Saludos--;)

Si, y gorrister ha ganado xD

Si, y gorrister ha ganado xD

Imagen de pspgorrister

Madre mía, hacia tiempo que

Madre mía, hacia tiempo que no me reía tanto con un código, esto de los button tester es la leche.

 

Gracias por las risas ^^

Un saludo.


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Muy cierto... ahora edito el

Muy cierto... ahora edito el código...

EDITO: Hecho. Gracias por la observación ;)

Saludos

Imagen de barney77

Ese codigo, deberias de hasta

Ese codigo, deberias de hasta postearlo en tu firma..

Imagen de pspgorrister

Algo más

No pongo el código porque ya está posteados

Creo que tengo algo más por ahí, pero ahora mismo no me acuerdo.


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

creo que hay un error aqui

es en este codigo mmmmm

function screen.print_vert(x,y,texto,tamaño,colorletras,colorsombra,interlineado)
if not tamaño then tamaño = 0.77 end
if not colorletras then colorletras = color.new(255,255,255) end
if not colorsombra then colorsombra = 0x0 end
if not interlineado then interlineado = 12 end
for i = 1, #texto do
	screen.print(x,y+(i-1)*interlineado,string.sub(texto,i,i),tamaño,colorletras,colorsombra)
end

Es en if not tamaño then tamaño = 0.77 end porque la variable tamaño podria cojer el valor de colorletras, deverias ponerlo al final o hacer una funcion que verifique los argumentos o mejor asi

function screen.print_incircle(x,y,radio,sentido,texto,tamaño,colorletras,colorsombra)
if 
type(x)==number and //si no es un numero
type(y)==number and //si no es un numero
type(sentido)=="que es esto?? numero string boleano o que?" and
type(texto)==string and //si no es un string
type(tamaño)==number // si no es un numero
type(colorletras)==?? //no recuerdo ahora que devuelve el modulo color creo que es userdata
and
type(colorsombra)==userdata then 
 
for i = 1, #texto do
	if sentido == "right" then
		screen.print(x+math.cos(math.rad((360/#texto)*(i-1)-90))*radio,y+math.sin(math.rad((360/#texto)*(i-1)-90))*radio,string.sub(texto,i,i),tamaño,colorletras,colorsombra)
	elseif sentido == "left" then
		screen.print(x+math.cos(-math.rad((360/#texto)*(i-1)+90))*radio,y+math.sin(-math.rad((360/#texto)*(i-1)+90))*radio,string.sub(texto,i,i),tamaño,colorletras,colorsombra)
	end
 
else
 
tamaño = 0.77
colorletras = color.new(255,255,255) 
colorsombra = 0x0 
interlineado = 12
for i = 1, #texto do
	screen.print(x,y+(i-1)*interlineado,string.sub(texto,i,i),tamaño,colorletras,colorsombra)
end
end

 

Hay solo se identifican los tipos de datos que se pasaron en cada variable

 

P.D. hise los comentarios como en c xD



Imagen de Chimecho

por cierto

type(var) devuelve string, asi que seria "number" "string" "userdata" etc..

Saludos!

si es que lo hice rapido xD y

si es que lo hice rapido xD y ahora que lo respondistes no puedo editarlo hahah xD

Imagen de Chimecho

um...

esto:

draw.clock(coordenada X, coordenada Y,radio[,color contorno][,color números][,color segundos][,color minutos][,color horas])

más bien sería algo así:

draw.clock(coordenada X, coordenada Y,radio[,color contorno[,color números[,color segundos[,color minutos[,color horas]]]]])

Y hay otra forma de hacerlo, sin necesidad de hacer siempre el os.date, luego veré si lo pongo :)

Saludos!



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Imagen de NauTiluS1

Nose si este sea un snippets.

Este es un crédito que se moverá de abajo hacia arriba.

negro = color.new(0,0,0)
blanco = color.new(255,255,255)
while true do
controls.read()
		for i = 280,-220,-1 do
			screen.print(180,0+i,"Autor:",1,negro,blanco)
			screen.print(180,25+i,"N",1,negro,blanco)
			screen.print(180,50+i,"A: ",1,negro,blanco)
			screen.print(180,75+i,"U",1,negro,blanco)
			screen.print(180,100+i,"T",1,negro,blanco)
			screen.print(180,125+i,"I",1,negro,blanco)
			screen.print(180,150+i,"I",1,negro,blanco)
			screen.flip()
			if i == -220 then
			os.message("acabo")
		end
	end
 
screen.flip()
end
-- negro y blanco son variables como ya sabrán
-- while true do
-- controls.read para activar botones
-- for es un "para" en español, nah, es un bucle for
-- i es la variable de nuestro for 
-- = es el signo de igual 
-- 280 es la posicion donde se iniciara "Autor" osea se bliteara en la coordenada 280 Y
-- -220 es la coordenada a la cual va a llegar
-- -1 es la velocidad a la cuál subirá
--screen es pantalla
--print es pintar
--180 es la coordenada X
-- 0 es la Y
-- +i quiere decir que le vamos a sumar el "i" a nuestro print, osea el movimiento
--"Autor" Soy yo xD
--"1" es el tamaño de la fuente
"negro" es la variable del color negro
"blanco" es la variable del color blanco
-- "screen.flip()" es cambio de pantalla para el for
-- if i xxx, eso quiere decir que cuando nuestro credito llegue a la parte final pues pase mi os.message
-- os.message es un modulo os
-- end es para acabar
--


Follow me twitter nautilus1_jmccu!!
Sony, ya a nadie le interesa tus UMD si alguien compra una psp es por nosotros los coders. Madura y has un FW que haga la diferencia y anime a las personas en comprar un PSP

Está bueno, luego lo mejoraré

Está bueno, luego lo mejoraré y lo aré al estilo: credits.blit() 

Imagen de NauTiluS1

Uh, que linda imagen aver si

Uh, que linda imagen aver si en vez de un reloj lo convierto en un millero de autos

Imagen de barney77

Que son?

Que son snippets?

Los snippets son fragmentos

Los snippets son fragmentos de código.

Imagen de barney77

Ok

Ok, gracias.

Imagen de NauTiluS1

Muy bueno xerpi, lastima qué

Muy bueno xerpi, lastima qué no poseo ningun trozo.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.