Jump to content

[CONSEJOS] Uso de while


Rose

Recommended Posts

Quisiera pedir algunos consejos a la hora de usar while ya que nunca le he visto utilidad(o, al menos, en mis scripts nunca lo uso).

Ya sé que while es un bucle que se repite mientras X cosa sea verdadero(así lo tengo entendido yo, me corrigen si no es así), sin embargo nunca he llegado al caso de usarlo.

Gracias

Link to comment

Bueno en mta a mi parecer el while esta siendo usado un poco mal, al no tener nosotros una función de Wait() o Pause() como en C++ por ejemplo para poder pausar el while lo hace muy useless ya que le quitamos muchas posibilidades muy buenas como podría ser hacer un simple timer rápido en una función en plan:

 

function textos()
	while true do
		outputChatBox("Esto es un texto")
		Wait(5000)
		outputChatBox("Esto es un texto a los 5 segundos del otro texto")
		Wait(5000)
  	end
end

Lo cual a mi parecer es algo básico y necesario pero bueno no tenemos esa opción, en nuestro caso que es el de MTA es bastante useless esta funcion ya que si se ejecuta muchas veces se lagea al jugador por que claro como dije antes no tiene un Wait

 

pero una de las cosas que se podría hacer No prometo que no lague es un generador de coordenadas básicas algo como:

 

function generateRandom(x, y, distance, minDistance)
	local found = false
	local posX = 0
	local posY = 0
	while not found do
		posX = math.random(-distance, distance)
		posY = math.random(-distance, distance)

		if getDistanceBetweenPoints2D ( x, y, posX + x, posY + x ) > minDistance then
			found = true
		end
	end
	return posX, posY
end

Repito es solo un ejemplo no se ni si funciona pero mas o menos es la idea de sacar una posición a X distancia del centro con un maximo de distancia es decir es como hacer una rosquilla 

 

aNMBGAX.png

 

Digamos que es como este circulo dentro de la parte verde es donde nos daría las coordenadas aleatoriamente, en cambio fuera ya no. Con esto por  ejemplo podríamos hacer un spawner de objetos al lado del jugador pero que no este muy cerca del es decir que no spawne justo en su cara. Que tenga que buscarlos.

 

La conclusión es tanto el while como el repeat son funciones muy poderosas si tuviéramos un Wait en condiciones. Claramente que necesitaríamos que las funciones sean ASYNC y no SYNC como ahora.

 

Espero haberte ayudado con tu duda. Aun así el while te puede servir como if por si no quieres escribir if condición then :-D

 

 

PD: Otra cosa que quiero añadir para aquellos que digan que se puede hacer un Wait con corutines, se perfectamente que se puede en este post solo estoy hablando lo que tiene MTA hecho. No lo que se puede hacer

Edited by Arsilex
  • Thanks 1
Link to comment
7 hours ago, Rose said:

La verdad es que sería muy bueno si se pudiera hacer eso del wait como en el primer ejemplo ;v. 

Gracias @Arsilex, ya más o menos entiendo, aunque creo que aún no usaré el while(por el momento).

Yo solo te digo que después de casi 5 años en MTA como mucho eh usado el while 2 - 3 veces

  • Haha 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...