mira creo que es asi vas a account > account > click derecho > design table
Imagen: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
en caso de que no se vea la imagen que subi buscas los siguentes nombres:
gold_expire, silver_expire, safebox_expire, autoloot_expire, fish_mind_expire, marriage_fast_expire, money_drop_rate_expire y en cada uno aparece default ahi pones una fecha por ejemplo '2020-09-09 12:40:00'
espero que me log
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
-Una vez allà abrimos la tabla item_attr
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
-Esta tabla contiene todas las opciones que pueden salir en cualquier parte del equipo al dopar.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
La modificamos como queramos, teniendo en cuenta que:
-La 1ª columna nos dice que opción es (Fuerza contra demns, HP, fuerza, etc....)
-La columna prob marca la posibilidad de que esa opción salga al dopar.
-lvl1-5, marcan los diferentes grados de la opción, es decir, que no siempre salga una determinada cantidad de esa opción, sino que pueda salir 1, 2 ,10 ,15.... o asÃ. Si queremos que al dopar solo salga 20% de mediohumanos por ejemlo, ponemos 20 en todas las casillas:lvl1,lvl2,lvl3,lvl4 y lvl5.
-Las casillas weapon, body, wrist, foots, neck, head, shield, ears son las que hacen que una opción pueda salir en: un arma, una armadura, un collar, un escudo, un casco.....
-Bien ahora para modificar la 6ª y 7ª opcion de una parte de nuestro equipo vamos a la tabla item_attr_rare que estará debajo de la tabla item_attr. La modificamos igual que la anterior.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.[/hide]
[hide]3ª y 4ª GuÃas:Poner [GM] o cualquier otra cosa entre [] en el nombre de un pj y subir stats a 32k
-Abrimos el navicat, y vamos a la tabla player. Una vez allà abrimos la tabla player, que es la que tiene la lista de todos los jugadores de tu server.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
-Buscamos el jugador al que queremos poner [GM] y en name le ponemos eso en su nombre.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
-Para subirle los stats a 32000 a un pj vamos a la misma tabla y buscamos donde pone:st, ht, dx, iq y le ponemos al pj 32000 en cada una de esas columnas.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
-Tras un reboot el jugador tendrá [GM] en el nombre, si ya era GM tenemos que ir a common, gmlist y añadir el [GM] a su nombre, si no era Gm vamos a esa tabla y ponemos el nombre tal y como es ahora con el [GM][/hide]
[hide]5ªGuÃa:Añadir objetos a una tienda
-Abrimos el Navicat y vamos a la sección de tablas player.
-Una vez allÃ, sabiendo el id del NPC que es la tienda, abrimos la tabla shop. Esa tabla nos indica el número de tienda de cada NPC que es tienda en la primera de sus columnas, vnum. Npc_vnum es la id del NPC que es tienda.
De esta tabla nos quedamos con vnum, en mi ejemplo es el NPC 9007 (traficante de armas) y su vnum es el 5.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
-Ahora abrimos la tabla shop_item, que es la que tiene los objetos que hay en tiendas. Le damos a añadir fila, y la rellenamos con los siguiente datos (en mi ejemplo añado al npc 9007 los objetos de invocar al rey demonio y al rey llama ).
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
+Shop_vnum:vnum de la tabla shop.
+item_vnum:id del objeto que queremos añadir a la tienda.
+count: cantidad de ese objeto que queremos que se venda en la tienda.
-Una vez hecho eso vamos a la tabla item_proto.
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
-Buscamos el id del objeto/s que hemos añadido a la tienda y vamos a la columna gold, en ella ponemos el precio que tendrá ese objeto/s en el server.
Hola,
Llevo años fuera de este mundo y bueno me gustaría empezar a toquetear por mi cuenta, que files me recomendáis que sean lo más básico posible? Y supongo que lo mejor seria 40k
Muchas gracias
1- Mediante el make.sh que viene por defecto en los files de metin2 y que para usarlo para cargar una nueva quest tendreis que hacer lo siguiente:
- Encendeis vuestro servidor hasta despues de logearos.
- Poneis el siguiente comando (o el mismo pero con la ruta en la que este la carpeta quest en vuestros files)
cd /home/game/quest
- Meteis vuestra nueva quest (por ejemplo logeo.quest)
- Ahora abris el archivo locale_list , que puede tener un nombre diferente dependiendo de los files, pero sera algo acabado en (_list).
- Al final del archivo, poneis el nombre de vuestra nueva quest, con el .quest incluido (logeo.quest por ejemplo), LE DAIS UN ENTER AL FINAL DEL ARCHIVO, guardais y cerrais.
- Ahora solo teneis que volver al bsd, y poner:
chmod 777 make.sh && sh make.sh
- Una vez hecho eso ya estara cargada vuestra nueva quest.
- Inconvenientes de este metodo: Cargais la lista entera de quests.
*Si haceis esto con el servidor encendido, poned reload q con vuestro gm y ya estara funcionando la nueva quest.
Hola zoneros, hoy les vengo a traer la quest de las catacumbas del diablo, 100% probada por mi, esta es la quest de BlackYuko. Cuenta con los portales como el oficial, en un máximo de 99% del oficial.
Quest:
--**
--** Script Catacumbas del Diablo.
--** by BlackYuko Skype: manu___88
--**
quest catacombe begin
state start begin
--**
--** Funciones
--**
function GetScriptData(data)
local map_data = {['map_index'] = 15, -- index del mapa de catacumbas
['x'] = 3072, ['y'] = 12032, -- coordenadas X y Y, las del mapa catacumbas
['drop_frequency'] = 1000, -- frecuencia en los mob para que dropeen la llave cristal del alma
['min_lev'] = 100, -- nivel minimo para entrar a catacumbas,
['close_time'] = 60, -- tiempo (minutos) para estar en catacumbas
['testa_ristretta'] = 30320, -- vnum item de entrada que pide
['chiave_anime_cristallo'] = 30311, -- vnum item llave cistal del alma
['totem_smorfia'] = 30312, -- vnum totem
['forziere_azrael'] = 219, -- vnum drop al matar al azrael
['min_drop_lev'] = 100, -- nivel minimo para dropeo de la llave cristal
['max_drop_lev'] = 210} -- nivel maximo para dropeo de la lalve cristal
return rawget(map_data, data)
end
function IsInDungeon(pc_index)
local map_index = catacombe.GetScriptData('map_index')
return (pc.in_dungeon() and pc_index >= map_index*10000 and pc_index < (map_index+1)*10000)
end
function CanDrop(pc_level)
return (pc_level >= catacombe.GetScriptData('min_drop_lev') and pc_level <= catacombe.GetScriptData('max_drop_lev'))
end
--**
--** NPC - Guardian entrada a catacumbas
--**
when 20351.chat."GM: Catacumbas Abrir" with pc.is_gm() begin
say_title("GM: Catacumbas Abrir")
say("¿Quieres abrir las Catacumbas?[ENTER]")
local s = select("Si","No")
if s == 2 then
return
end
say_title("GM: Abrir Catacumbas")
say("Operación Completada.[ENTER]")
game.set_event_flag("catacomb_next_open", 1)
end
when 20351.chat."Entrada a Catacumbas" begin
local mob_race = npc.get_race()
local min_lev = catacombe.GetScriptData('min_lev')
say_title(mob_name(mob_race))
if pc.get_level() < min_lev then
say("Debes tener el mínimo Nivel "..min_lev)
say("Para entrar.[ENTER]")
return
end
if pc.count_item(catacombe.GetScriptData('testa_ristretta')) == 0 then
say("Tienes que tener este Item para")
say("Entrar:[ENTER]")
say_item_vnum(catacombe.GetScriptData('testa_ristretta'))
return
end
if get_time() < game.get_event_flag("catacomb_next_open") then
say("Las Catacumbas están cerradas.[ENTER]")
return
end
say("Hola aventurero. Las catacumbas del diablo")
say("son un lugar muy peligroso.[ENTER]")
local s = select("Entrar","No Entrar")
if s == 2 then
return
end
say_title(mob_name(mob_race))
say("Ok Viajero, ahora será telestrasportado.")
say("Preste mucha atención.[ENTER]")
wait()
pc.warp((catacombe.GetScriptData('x')+80)*100, (catacombe.GetScriptData('y')+60)*100)
end
--**
--** Primer Piso
--**
when login with pc.get_map_index()== catacombe.GetScriptData('map_index') begin
pc.set_warp_location(15, 3152, 12092)
end
when logout with pc.get_map_index()== catacombe.GetScriptData('map_index') begin
pc.delqf("mob_killed")
end
when 2501.kill or 2502.kill or 2503.kill or 2504.kill with pc.get_map_index()== catacombe.GetScriptData('map_index') begin
pc.setqf("mob_killed", pc.getqf("mob_killed")+1)
if math.mod(pc.getqf("mob_killed"), catacombe.GetScriptData('drop_frequency')) == 0 then
game.drop_item_with_ownership(catacombe.GetScriptData('chiave_anime_cristallo'), 1)
end
end
when 30101.take with item.get_vnum() == catacombe.GetScriptData('chiave_anime_cristallo') and pc.get_map_index() == catacombe.GetScriptData('map_index') begin
say_title(mob_name(30101))
if get_time() < game.get_event_flag("catacomb_next_open") then
say("Las Catacumbas están cerradas.[ENTER]")
return
end
if party.is_party() and not party.is_leader() then
say("Sólo arrastra el objeto sobre")
say("El NPC.[ENTER]")
return
end
pc.remove_item(item.get_vnum(), 1)
say("Abrieron el seloo hacia.")
say("El paso a la segunda planta.[ENTER]")
if party.is_party() then
say("Serán llevados, suerte viejeros.[ENTER]")
end
wait()
game.set_event_flag("catacomb_next_open", get_time()+60*catacombe.GetScriptData('close_time'))
pc.setqf("is_master", 1)
timer("enter_floor_2", 2)
end
--**
--** Entrada dungeon y timer
--**
when login with catacombe.IsInDungeon(pc.get_map_index()) begin
pc.set_warp_location(15, 3152, 12092)
if pc.getqf("is_master") == 1 then
timer("start_timer", 2)
end
end
when logout with catacombe.IsInDungeon(pc.get_map_index()) begin
pc.remove_item(catacombe.GetScriptData('totem_smorfia'), pc.count_item(catacombe.GetScriptData('totem_smorfia')))
pc.remove_item(catacombe.GetScriptData('chiave_anime_cristallo'), pc.count_item(catacombe.GetScriptData('chiave_anime_cristallo')))
pc.delqf("is_master")
end
when start_timer.timer begin
d.notice("Les que da "..catacombe.GetScriptData('close_time').." minutos de su tiempo.")
d.notice("para complezar Catacumbas!")
notice_all("Las Catacumbas se cerrarán en "..catacombe.GetScriptData('close_time').." minutos a partir de ahora.")
server_timer("catacomb_open", 60*catacombe.GetScriptData('close_time'), pc.get_map_index())
end
when catacomb_open.server_timer begin
notice_all("Las Catacumbas están abiertas de nuevo.!")
if d.select(get_server_timer_arg()) then
clear_server_timer("catacomb_open", get_server_timer_arg())
d.notice("Tiempo Acabado, serán sacados de Catacumbas.")
d.exit_all()
end
end
--**
--** Segundo piso
--**
when enter_floor_2.timer begin
d.new_jump_all(15, 3617, 12075)
d.regen_file("data/dungeon/catacumbas/dc_regen_ebene2.txt")
d.setf("catacomb_floor", 2)
end
when 30103.take with item.get_vnum() == catacombe.GetScriptData('testa_ristretta') and catacombe.IsInDungeon(pc.get_map_index()) and d.getf("catacomb_floor") == 2 begin
if pc.getqf("is_master") == 1 then
pc.remove_item(item.get_vnum(), 1)
d.notice("Serán llevados a la siguente planta")
timer("enter_floor_3", 3)
else
d.notice("Solo el guerrero fuerte podrá poner el item.")
end
end
--**
--** Tercer piso
--**
when enter_floor_3.timer begin
d.jump_all(3572, 12760)
d.clear_regen()
d.kill_all()
d.regen_file("data/dungeon/catacumbas/dc_regen_ebene3.txt")
d.setf("catacomb_floor", 3)
d.notice("Buscar el metin correcto para avanzar!")
local coord_metin = {{1340,348},{1243,357},{1334,151},{1252,148},{1149,148},{1139,244},{1148,355}}
local right_metin = math.mod(os.time(),table.getn(coord_metin))+1
for i = 1,table.getn(coord_metin) do
if i == right_metin then
local v = d.spawn_mob(8025, coord_metin[i][1], coord_metin[i][2])
d.set_unique("real", v)
--chat(coord_metin[i][1].." "..coord_metin[i][2])
else
d.spawn_mob(8025, coord_metin[i][1], coord_metin[i][2])
end
end
end
when 8025.kill with catacombe.IsInDungeon(pc.get_map_index()) and d.getf("catacomb_floor") == 3 begin
if d.is_unique_dead("real") then
d.notice("El metin destruido es el correcto!")
d.notice("Serán llevados a la siguiente planta.")
timer("enter_floor_4", 3)
else
d.notice("El metin destruido es falso.")
end
end
--**
--** Cuarto Piso
--**
when enter_floor_4.timer begin
d.jump_all(3369, 12354)
d.clear_regen()
d.kill_all()
local map_n = math.mod(os.time(),4)+1
d.regen_file("data/dungeon/catacumbas/piano_4_"..map_n.."_catacombe.txt")
d.setf("catacomb_floor", 4)
d.notice("Encontrar el camino correcto para avanzar!")
end
when 20352.chat."Avanzar a la Sig. Planta" with catacombe.IsInDungeon(pc.get_map_index()) and d.getf("catacomb_floor") == 4 begin
if pc.getqf("is_master") == 1 then
say("Muy bien, has conseguido llegar hasta aquí.")
say("En la siguiente planta te enfrentarás con el")
say("jefe de las catacumbas.[ENTER]")
wait()
setskin(0)
d.notice("Serán llevados a la siguiente planta.")
timer("enter_floor_5", 3)
else
say("Sólo el guerrero del grupo o subida podrá recompensar.[ENTER]")
end
end
--**
--** Quinto Piso
--**
when enter_floor_5.timer begin
d.jump_all(3917, 12431)
d.clear_regen()
d.kill_all()
d.regen_file("data/dungeon/catacumbas/dc_regen_ebene5.txt")
d.setf("catacomb_floor", 5)
d.setf("correct_killed", 0)
d.notice("Encontrar y matar al Tártaro correcto para avanzar!")
local coord_boss = {{848,570},{678,832},{685,632},{1031,637},{1003,856}}
local right_boss = math.mod(os.time(),table.getn(coord_boss))+1
for i = 1,table.getn(coord_boss) do
if i == right_boss then
local v = d.spawn_mob(2591, coord_boss[i][1], coord_boss[i][2])
d.set_unique("real", v)
--chat(coord_boss[i][1].." "..coord_boss[i][2])
else
d.spawn_mob(2591, coord_boss[i][1], coord_boss[i][2])
end
end
end
when 2591.kill with catacombe.IsInDungeon(pc.get_map_index()) and d.getf("catacomb_floor") == 5 begin
if d.is_unique_dead("real") and d.getf("correct_killed") == 0 then
d.setf("correct_killed", 1)
d.notice("El Tártaro correcto fue destruido!")
d.notice("Arrastra el Totém al pilar o NPC!")
game.drop_item_with_ownership(catacombe.GetScriptData('totem_smorfia'), 1)
else
d.notice("El Tártaro es falso, no es el correcto.")
end
end
when 30102.take with item.get_vnum() == catacombe.GetScriptData('totem_smorfia') begin
pc.remove_item(item.get_vnum(), 1)
d.notice("Serán llevados a la siguiente planta!")
timer("enter_floor_6", 3)
end
--**
--** Sexto Piso
--**
when enter_floor_6.timer begin
d.jump_all(4372, 12732)
d.clear_regen()
d.kill_all()
d.regen_file("data/dungeon/catacumbas/dc_regen_ebene6.txt")
d.setf("catacomb_floor", 6)
d.notice("Mata al Caronte para avanzar!")
end
when 2597.kill with catacombe.IsInDungeon(pc.get_map_index()) and d.getf("catacomb_floor") == 6 begin
notice_all(" ".. pc.get_name() .." Ha destruido la Muerte!")
notice_all("Felicitaciones Guerrero.")
d.notice("El Caronte fue destruido!")
d.notice("Serán llevados a la última planta, Suerte!")
timer("enter_floor_7", 3)
end
--**
--** Septimo Piso
--**
when enter_floor_7.timer begin
d.jump_all(3146, 13142)
d.clear_regen()
d.kill_all()
d.regen_file("data/dungeon/catacumbas/dc_regen_ebene7.txt")
d.setf("catacomb_floor", 7)
d.notice("Acaba con Azrael!")
end
when 2598.kill with catacombe.IsInDungeon(pc.get_map_index()) and d.getf("catacomb_floor") == 7 begin
if catacombe.CanDrop(pc.get_level()) then
game.drop_item_with_ownership(catacombe.GetScriptData('forziere_azrael'), 1)
end
notice_all("El Personaje o el Grupo de ".. pc.get_name() .." ha destruido al Azrael!")
d.clear_regen()
d.notice("Han acabado con el Mal del Azrael, FELICITACIONES!")
d.notice("Tienen 20 segundos, y serán sacados de la mazmorra.")
timer("exit_catacomb", 20)
end
when exit_catacomb.timer begin
d.exit_all()
end
end
end
Por general cambian el index del mapa que es 15 (en mi caso), ustedes lo cambian por su número de index, es totalmente editable, cuenta con activación de las catacumbas por un gm.
Poner en quest_functions:
DragonLair.startRaid
GetScriptData(data)
IsInDungeon(pc_index)
CanDrop(pc_level)
catacombe.CanDrop
catacombe.GetScriptData
game.drop_item_with_ownership
os.time
rawget
Introducir en player-->query-->new query: Estos son los portales.
con esta web podremos generar contraseñas mysql para no andar poniendo una web y crear contraseñas aora ya nosotoros las podemos crear tan facil y sinple
Debes iniciar sesión para ver el contenido del enlace en esta publicación.
donde dise pasword ponemos cualñquier contraseña una ves puesta le damos abajo en el botonsito create password
donde se pone en verde copiamos con todo y aterisco y lo pegamos en nuesto password de acoount en esa tabla y ya quedo guardamos y nos loguamos al server