Jump to content
Sign in to follow this  
caanmasu

[QUEST] Todos los mapas del server en un anillo

Recommended Posts

Hola mi gente! 

Hoy les traigo una quest elaborada 100% por mí desde la concepción de la idea xD

Dale Me encorazona 😄

Vídeo demostrativo:

Debes iniciar sesión para ver el contenido del enlace en esta publicación.
from
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
on
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
.

 

Descripción en el archivo de la quest

Dale Me encorazona si te gustó 🙂

 

- Es necesario reiniciar el servidor

- El objeto debe ser tipo 18 en el item_proto, o lo que es lo mismo ITEM_QUEST

- Solo se editan las dos rutas que están en la parte del questlib.lua
 

 

Quest go_all_map.quest

--[[
QUEST METIN2
Quest creada por Camilo Martínez
Es un anillo teleport donde se puede acceder
a la totalidad de los mapas del juego.

Especificaciones:
1. Al darle clic al objeto, aparecerán botones de nombres
página #, donde cada página muestra 30 mapas y la última los
restantes mapas.
2. Al seleccionar una de las páginas y luego uno de los mapas,
transportará al personaje a ese mapa en las coordenadas centrales

Notas:
1. Recomendable para solo uso GM, esto es administrativo. Pero igual
pueden usarlo a su antojo, solo es una recomendación :)
2. La cantidad máxima de botones por página es de 30.
3. No olvidar cambiar la ruta por la de tu servidor
4. Se enlistan todas las líneas del index de la carpeta map.
No debe haber ninguna línea vacía en ese archivo. 
Se toma el index y el nombre del mapa (nombre de la carpeta) por aparte.
Luego con el nombre del mapa se va a la ruta del mapa y en Town.txt 
tomará la primera coordenada. Posteriormente se hace un warp_local
donde se le envía el id del mapa y las coordenadas del Town*100
5. Si los separadores son espacio y tabulador, se tomará sin problema
los datos de los archivos. Si hay varios espacios simulando un tabulador,
no se tomará en cuenta. Es decir:
Si tienes en Town.txt las coordenadas 433  542,
habrá un error porque tienes dos espacios.
Lo correcto es que haya un solo espacio o un solo tabulador.
6. Si no te transporta es porque el mapa puede estar mal implementado
7. No olvides poner la parte del questlib.lua
8. Tampoco olvides poner las funciones en quest_functions
xx_coords_town_folder_map
list_folder_maps
7. Cualquier error reportar
8. Que lo disfruten :)
y como siempre, mi Discord:
Camilo#0869
--]]
quest go_all_map begin
	state start begin
		when letter with pc.is_gm() begin
			send_letter("GM: Go All Map")
		end
		when button or info begin
			say_title("Go All Map by Camilo")
			local max_button = 30
			local nombres_mapas, index_mapas = list_folder_maps()
			local cant_pags = math.ceil(table.getn(nombres_mapas)/(max_button-1))
			local tabla_madre, tabla_select = {}, {}
			local tabla_madre_index = {}, {}
			local aux = 1
			for i = 1, cant_pags do
				table.insert(tabla_madre, {})
				table.insert(tabla_madre_index, {})
				table.insert(tabla_select, "Página "..i)
				for j = 1, max_button-1 do
					tabla_madre[i][j] = nombres_mapas[aux]
					tabla_madre_index[i][j] = index_mapas[aux]
					aux = aux + 1
				end
				table.insert(tabla_madre[i], "Cerrar")
			end
			table.insert(tabla_select, "Cerrar")
			local sel1 = select_table(tabla_select)
			if sel1 != table.getn(tabla_select) then
				say_title("Go All Map by Camilo")
				local sel = select_table(tabla_madre[sel1])
				if sel != table.getn(tabla_madre[sel1]) then
					local x, y = xx_coords_town_folder_map(tabla_madre[sel1][sel])
					pc.warp_local(tabla_madre_index[sel1][sel], x*100, y*100)
				end
			end
		end
	end
end

 

 

Parte del questlib.lua

function xx_coords_town_folder_map(map)
	local det, tab, spc = io.open('/usr/game/share/locale/turkey/map/'..map..'/Town.txt'), '	', ' ' --aquí debes cambiar la ruta
	local x, y = 0, 0
	for line in det:lines() do
		if table.getn(split(line, tab)) == 2 then
			x = split(line, tab)[1]
			y = split(line, tab)[2]
			return x, y
		elseif table.getn(split(line, spc)) == 2 then
			x = split(line, spc)[1]
			y = split(line, spc)[2]
			return x, y
		else
			return "ERROR"
		end
	end
end

function list_folder_maps()
	local map, index = {}, {}
	local det, tab, spc = io.open('/usr/game/share/locale/turkey/map/index'), '	', ' ' --aquí debes cambiar la ruta 
	for line in det:lines() do
		if table.getn(split(line, spc)) == 1 then
			table.insert(map, split(line,tab)[2])
			table.insert(index, split(line, tab)[1])
		else
			table.insert(map, split(line,spc)[2])
			table.insert(index, split(line, spc)[1])
		end
	end
	return map, index
end

 

Parte de quest_functions

xx_coords_town_folder_map
list_folder_maps

 

Adjunto actualizado

 

Debes iniciar sesión para ver el contenido del enlace en esta publicación.

Share this post


Link to post
Share on other sites
En 17/5/2019 a las 1:55, caanmasu dijo:

Corregí un pequeño error. Ya compila xD!

Actualicen y arranquen!

Gracias por el aporte, tendrías uno para uso de los usuarios? :3

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...