Jump to content
Sign in to follow this  
caanmasu

[QUEST] Misión diaria

Recommended Posts

Hola a todos de nuevo!

 

He visitado varios foros buscando cómo volver las misiones diarias. Se veían muy enredadas y no probé ninguna, así que no sé si funcionaban.

He creado mi propia manera de convertir una misión que se hace una vez por pj, a esa misma misión que se haga una vez al día.

E incluso algo más interesante, una cantidad limitada de veces!

Nota: las misiones se reinician a las 00:00 hora del servidor. Es necesario cambiar pj para poder hacer la misión de nuevo.

 

La estructura de las misiones normales es más o menos así:

quest mision begin
	state start begin
		when login begin
			set_state(run)
		end
	end
	state run begin
		when letter begin
			send_letter("Misión")
		end
		when button or info begin
			say("Información de la misión")
		end
		when kill begin
			pc.setqf("qf1", 1)
			pc.setqf("qf2", 1)
			set_state(__COMPLETE__)
		end
	end
	state __COMPLETE__ begin
	end
end

 

Y la estructura de mi misión diaria es así:

-- Discord: Camilo#0869
quest mision_diaria begin
	state start begin
		when login begin
			CANTIDAD_MAXIMA = 1
			local fecha_actual = tonumber(os.date("%d%m%y"))
			if pc.getqf("fecha_guardada") != fecha_actual then
				pc.delqf("cant_hechas")
			end
			if pc.getqf("cant_hechas") < CANTIDAD_MAXIMA then
				pc.setqf("fecha_guardada", fecha_actual)
				-- Aquí reinicio todos los qf de la misión
				pc.delqf("qf_a_reiniciar1")
				pc.delqf("qf_a_reiniciar2")
				------------------------------------------
				set_state(run)
			end
		end
	end
	state run begin
		when letter begin
			send_letter("Misión diaria")
		end
		when button or info begin
			say("Información de la misión")
		end
		when kill begin
			pc.setqf("qf_a_reiniciar1", 1)
			pc.setqf("qf_a_reiniciar2", 1)
			pc.setqf("cant_hechas", pc.getqf("cant_hechas")+1)
			syschat("Terminaste la misión. Hoy ya la has hecho "..pc.getqf("cant_hechas").." veces")
			set_state(start) -- Aquí termina la misión
		end
	end
end

 

Simplemente debes agregarle este contenido a tu when login del state start:

			CANTIDAD_MAXIMA = 1
			local fecha_actual = tonumber(os.date("%d%m%y"))
			if pc.getqf("fecha_guardada") != fecha_actual then
				pc.delqf("cant_hechas")
			end
			if pc.getqf("cant_hechas") < CANTIDAD_MAXIMA then
				pc.setqf("fecha_guardada", fecha_actual)
				-- Aquí reinicio todos los qf de la misión
				pc.delqf("qf_a_reiniciar1")
				pc.delqf("qf_a_reiniciar2")
				------------------------------------------
				set_state(run)
			end

En donde dice CANTIDAD_MAXIMA puse 1, o sea, que la misión solo se puede hacer una vez en el día. Tú puedes poner ahí el número que quieras.

En donde dice lo de los reinicios debes agregar cada qf de la quest, así como se muestra en el código.

 

Luego debemos agregar el reinicio de la quest, así:

			pc.setqf("cant_hechas", pc.getqf("cant_hechas")+1)
			syschat("Terminaste la misión. Hoy ya la has hecho "..pc.getqf("cant_hechas").." veces")
			set_state(start) -- Aquí termina la misión

Esto se pone al final cuando ya se da la recompensa. Esto se reemplaza por el set_state(__COMPLETE__) típico de las misiones normales.

 

¿Cómo funciona?

Calculo la fecha del servidor con os.date() cuando termino por primera vez la misión. Luego vuelvo a primer state y se genera una nueva fecha. Si las fechas coinciden, quiere decir que el día es el mismo, así que verifica el qf cant_hechas para ver si todavía puede hacer más misiones. Luego entra a la misión de nuevo.

Cuando la fecha cambia y el pj se logea, entra a comparar las fechas y se da cuenta que son diferentes; así que reinicia el qf cant_hechas para que el pj pueda volver a hacer las misiones.

 

Eso es todo amigos, éxitos!

Share this post


Link to post
Share on other sites

una forma sencilla pero funcional para misiones diarias pero esto seria algo mas estilo basico.
pero da la base para que los demas puedan hacer algo mas currado

Share this post


Link to post
Share on other sites
hace 21 horas, Meruem dijo:

una forma sencilla pero funcional para misiones diarias pero esto seria algo mas estilo basico.
pero da la base para que los demas puedan hacer algo mas currado

Yeah! la idea al final de todo es entretener. Las misiones diarias siempre hacen que los jugadores se queden más tiempo conectados y hagan más cosas. Además con la creatividad puedes cambiar muchas cosas y llegar más lejos.

 

hace 9 horas, Dilong dijo:

Si es que lo hacen. Aprender Lua ya es algo básico como meter armas y armaduras, pero la mayoría lo deja (Pereza <.<)

Cualquier cosa es básica cuando aprendes lo básico, hasta el C++. La diferencia está en el nivel que le pongas. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...