Jump to content

[Quest] Summer


Elite™

Mensajes recomendados

Hola buenas de nuevo a la gente de metin2zone, hoy vengo a aportar mi versión del evento de verano de este año.

 

Os dejo el enlace del npc Summer

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

 

¿En que consiste el evento?

 

- Consiste en conseguir distinos objetos que se deben ir entregando al npc Summer.

 

Estos són los objetos que hay que entregar:

  • Cambia 10 Bolas de hielo por una Bolsa de hielo.
  • Cambia 3 Bolsa de hielo por un Cuenco de cristal.
  • Cambia 3 Cuenco de cristal por un Pastel de hielo.
  • Cambia 1 Pastel de hielo por un Arcón helado.
  • Cambia 100 Bolas de hielo por un Sello del Caballo Negro de 7 dias.
  • Cambia 200 Bolas de hielo por un Sello del Caballo Negro de 15 dias.
  • Cambia 300 Bolas de hielo por un Sello del Caballo Negro de 30 dias.
  • Cambia 500 Bolas de hielo por un Sello del Caballo Negro de 60 dias

Aquí os dejo la Quest totalmente funcional con código legible y simplificado

----------------------------------
--    Evento Verano (Summer)
--    Creado por Elite™
----------------------------------
quest summer begin
    state start begin
        
        function getObjeto()
            return (
                {
                    --Nombre,Vnum,Cantidad,Recompensa
                    {"Bolas de hielo", 50279,10,50278},
                    {"Bolsa de hielo", 50278,3,50280},
                    {"Cuenco de cristal",50280,3,50281},
                    {"Pastel de hielo", 50281,1,50282},
                    {"Bolas de hielo", 50279,100,71131},
                    {"Bolas de hielo", 50279,200,71132},
                    {"Bolas de hielo", 50279,300,71133},
                    {"Bolas de hielo", 50279,500,71134}
                }
            )
        end
        
        when 30307.chat."¿Algo para refrescarse?" begin
            say_title(mob_name(30307))
            say("¡Hola, mi sol! Me encanta este árbol, pero ni")
            say("siquiera a su sombra refresca. ¡Daría lo que")
            say("fuera por un helado! ¿Y tú cómo lo llevas?")
            wait()
            say_title(pc.getname()..":")
            say("Genial... ¡y refrescante!")
            wait()
            say_title(mob_name(30307))
            say("Ahora sí: voy a necesitar tu ayuda, porque el")
            say("mejor helado lo tienen los monstruos. ¡Que no, no")
            say("me ha dado ninguna insolación! ¿Podrías ir y")
            say("arrancarles unas cuantas Bolas de hielo?")
            say_item_vnum(50279)
            wait()
            say_title(pc.getname()..":")
            say("Ir a buscar Bolas de hielo y traértelas... ¡Dalo")
            say("por hecho!")
            set_state(refrescante)
        end
    end
    
    state refrescante begin

        when 30307.chat."¿Algo para refrescarse?" begin
            say_title(mob_name(30307))
            say("¡Vaya calor hace hoy! ¿Qué se te ofrece?")
            local opcion=select("Bolsa de hielo","Cuenco de cristal","Pastel de hielo","Arcón helado","Cancelar")
            
            if opcion > 4 then
                return
            end
            
            local objeto = summer.getObjeto()
            local nombre = objeto[opcion][1]
            local vnum = objeto[opcion][2]
            local cantidad_objeto = objeto[opcion][3]
            local recompensa =  objeto[opcion][4]
        
            
            local cantidad =  cantidad_objeto - pc.count_item(vnum)
            
            if pc.count_item(vnum) >= cantidad_objeto then
                say("¡Lo has conseguido! Toma, te has ganado tu parte")
                say("con todas las de la ley. Pero no toques el helado")
                say("de chocolate: eso es todo para mí. Disfruta el")
                say("verano... y vuelve cuando quieras una segunda porción.")
                pc.remove_item(vnum,cantidad_objeto)
                pc.give_item2(recompensa,1)
            else
                say("Falta "..nombre.." Te hacen falta "..cantidad..".")
            end
        end
        
        when 30307.chat."El caballo negro noble" begin
            say_title(mob_name(30307))
            say("Quiero hacer el Pastel de hielo más grande del")
            say("mundo. Para ello voy a necesitar infinidad de")
            say("Bolas de hielo. ¿Te queda alguna? Sabré ")
            say("recompensarte. Cuantas más Bolas de hielo me des,")
            say("más tiempo podrás usar el Caballo negro.")
            local pregunta=select("Sí ","No")
            if  pregunta == 2 then
                return
            end
            local opcion=select("Caballo negro 7 días - 100 Bolas de Hielo","Caballo negro 15 días - 200 Bolas de Hielo","Caballo negro 30 días - 300 Bolas de Hielo","Caballo negro 60 días - 500 Bolas de Hielo","Cancelar")
            if opcion > 8 then
                return
            end
            
            local objeto = summer.getObjeto()
            local nombre = objeto[opcion+4][1]
            local vnum = objeto[opcion+4][2]
            local cantidad_objeto = objeto[opcion+4][3]
            local recompensa =  objeto[opcion+4][4]
        
            
            local cantidad =  cantidad_objeto - pc.count_item(vnum)
            
            if pc.count_item(vnum) >= cantidad_objeto then
                say("¡Lo has conseguido! Toma, te has ganado tu parte")
                say("con todas las de la ley. Pero no toques el helado")
                say("de chocolate: eso es todo para mí. Disfruta el")
                say("verano... y vuelve cuando quieras una segunda porción.")
                pc.remove_item(vnum,cantidad_objeto)
                pc.give_item2(recompensa,1)
            else
                say("Falta "..nombre.." Te hacen falta "..cantidad..".")
            end
        end
    end
end
Enlace para comentar
Compartir en otros sitios

Parte Servidor

 

Añado el item_proto.txt

50278    ¾ÆÀ̽ºÅ©¸²    ITEM_USE    USE_SPECIAL    1    ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_MYSHOP    ITEM_STACKABLE    NONE    NONE    0    0    0    0    0    REAL_TIME    2592000    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    1800    10    5    10    0    0    0    0    0
50279    ½ºÄò    ITEM_QUEST    0    1    NONE    ITEM_STACKABLE    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    0    0    0
50280    ¾óÀ½Á¢½Ã    ITEM_QUEST    0    1    NONE    ITEM_STACKABLE    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    0    0    0
50281    ¾ÆÀ̽ºÅ©¸² ÄÉÀÌÅ©    ITEM_QUEST    0    1    NONE    ITEM_STACKABLE    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    0    0    0
50282    ¿©¸§»óÀÚ    ITEM_GIFTBOX    0    1    ANTI_DROP | ANTI_SELL | ANTI_STACK | ANTI_MYSHOP    ITEM_STACKABLE    NONE    NONE    0    0    0    0    0    REAL_TIME    2592000    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    0    0    0    0    0    0    0    0    0
71131    É¦Ø¶Ý’ȯ҇    ITEM_UNIQUE    UNIQUE_SPECIAL_RIDE    1    ANTI_MYSHOP | ANTI_STACK | ANTI_GIVE | ANTI_SELL | ANTI_DROP    LOG | QUEST_USE_MULTIPLE    WEAR_SHIELD    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    10800    0    0    0    0    0    0    0    0
71132    É¦Ø¶Ý’ȯ҇    ITEM_UNIQUE    UNIQUE_SPECIAL_RIDE    1    ANTI_MYSHOP | ANTI_STACK | ANTI_GIVE | ANTI_SELL | ANTI_DROP    LOG | QUEST_USE_MULTIPLE    WEAR_SHIELD    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    21600    0    0    0    0    0    0    0    0
71133    É¦Ø¶Ý’ȯ҇    ITEM_UNIQUE    UNIQUE_SPECIAL_RIDE    1    ANTI_MYSHOP | ANTI_STACK | ANTI_GIVE | ANTI_SELL | ANTI_DROP    LOG | QUEST_USE_MULTIPLE    WEAR_SHIELD    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    43200    0    0    0    0    0    0    0    0
71134    É¦Ø¶Ý’ȯ҇    ITEM_UNIQUE    UNIQUE_SPECIAL_RIDE    1    ANTI_MYSHOP | ANTI_STACK | ANTI_GIVE | ANTI_SELL | ANTI_DROP    LOG | QUEST_USE_MULTIPLE    WEAR_SHIELD    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    86400    0    0    0    0    0    0    0    0

Añado item_names.txt

50278	Bolsa de hielo
50279	Bolas de hielo
50280	Cuenco de cristal
50281	Pastel de hielo
50282	Arcón helado
71131   Sello del Caballo Negro
71132   Sello del Caballo Negro
71133   Sello del Caballo Negro
71134   Sello del Caballo Negro

Añado mob_proto.txt

30307	¿©¸§ NPC	KING	NPC	MELEE	1	100		NOMOVE	0		STUN,SLOW,TERROR	2	0	0	0	0	0	0	0	0	120	3	1	0	0	10	4	100	100	0	2000	150	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0		0.0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0

Añado mob_names.txt

30307	Summer

Parte Cliente

Añado Item_proto.xml

	<ItemDef Vnum="50278" Name="¾ÆÀ̽ºÅ©¸²" LocalizedName="Bolsa de hielo" Type="3" SubType="10" Weight="0" Size="1" AntiFlags="98688" Flags="4" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="7" LimitValue0="2592000" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="1800" Value1="10" Value2="5" Value3="10" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" />
	<ItemDef Vnum="50279" Name="½ºÄò" LocalizedName="Bolas de hielo" Type="18" SubType="0" Weight="0" Size="1" AntiFlags="0" Flags="4" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" />
	<ItemDef Vnum="50280" Name="¾óÀ½Á¢½Ã" LocalizedName="Cuenco de cristal" Type="18" SubType="0" Weight="0" Size="1" AntiFlags="0" Flags="4" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" />
	<ItemDef Vnum="50281" Name="¾ÆÀ̽ºÅ©¸² ÄÉÀÌÅ©" LocalizedName="Pastel de hielo" Type="18" SubType="0" Weight="0" Size="1" AntiFlags="0" Flags="4" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" />
	<ItemDef Vnum="50282" Name="¿©¸§»óÀÚ" LocalizedName="Arcón helado" Type="23" SubType="0" Weight="0" Size="1" AntiFlags="98688" Flags="4" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="7" LimitValue0="2592000" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" />
	<ItemDef Vnum="71131" Name="È渶¼Òȯ±Ç" LocalizedName="Sello del caballo negro" Type="28" SubType="2" Weight="0" Size="1" AntiFlags="106880" Flags="9216" WearFlags="128" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="10080" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" />
	<ItemDef Vnum="71132" Name="È渶¼Òȯ±Ç" LocalizedName="Sello del caballo negro" Type="28" SubType="2" Weight="0" Size="1" AntiFlags="106880" Flags="9216" WearFlags="128" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="21600" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" />
	<ItemDef Vnum="71133" Name="È渶¼Òȯ±Ç" LocalizedName="Sello del caballo negro" Type="28" SubType="2" Weight="0" Size="1" AntiFlags="106880" Flags="9216" WearFlags="128" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="43200" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" />
	<ItemDef Vnum="71134" Name="È渶¼Òȯ±Ç" LocalizedName="Sello del caballo negro" Type="28" SubType="2" Weight="0" Size="1" AntiFlags="106880" Flags="9216" WearFlags="128" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="86400" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" />

Añado mob_proto.xml

	<MobDef Vnum="30307" Name="¿©¸§ NPC" LocalizedName="Summer" Type="1" Rank="5" BattleType="0" Level="1" ScalePct="100" Size="0" DropGoldMin="0" DropGoldMax="0" Experience="10" MaxHP="120" RegenCycle="3" RegenPercent="1" Defense="4" AIFlags="2" RaceFlag="0" ImmuneFlag="35" Str="0" Dex="0" Con="0" Int="0" DamageMin="0" DamageMax="0" AttackSpeed="100" MovingSpeed="100" AggressiveHPPct="0" AggressiveSight="2000" AttackRange="150" EnchantCurse="0" EnchantSlow="0" EnchantPoison="0" EnchantStun="0" EnchantCritical="0" EnchantPenetrate="0" ResistSword="0" ResistTwohand="0" ResistDagger="0" ResistBell="0" FesistFan="0" ResistBow="0" ResistFire="0" ResistElect="0" ResistMagic="0" ResistWind="0" ResistPoison="0" ResistBleeding="0" ResistClaw="0" ResurrectionVnum="0" DropItemVnum="0" MountCapacity="0" OnClickType="2" Empire="0" Folder="" DamMultiply="0.000000" SummonVnum="0" DrainSP="0" MonsterColor="0" PolymorphItemVnum="0" SkillVnum0="0" SkillLevel0="0" SkillVnum1="0" SkillLevel1="0" SkillVnum2="0" SkillLevel2="0" SkillVnum3="0" SkillLevel3="0" SkillVnum4="0" SkillLevel4="0" BerserkPoint="0" StoneSkinPoint="0" GodSpeedPoint="0" DeathBlowPoint="0" RevivePoint="0" Unknown1="0" Unknown2="0" Unknown3="0" Unknown4="0" />

Añado itemdesc.txt

50278	Bolsa de hielo	Esta Bolsa de hielo tiene un efecto especial: velocidad de movimiento +10%, daño +5%, experiencia +10%. Tiene una duración de 30 minutos. Consúmela o canjea una vez al día 3 Bolsas de hielo por un Cuenco de cristal.
50279	Bolas de hielo	Reúne Bolas de hielo para Summer. Necesita 10 Bolas de hielo para una Bolsa de hielo.
50280	Cuenco de cristal	Este exclusivo Cuenco de hielo te ofrece muchas posibilidades para presentar tus creaciones de hielo de manera creativa. Ve a la ciudad a ver a Summer para canjear 3 Cuencos de cristal por un Pastel de hielo.
50281	Pastel de hielo	Ve a pedirle a Summer una bolsa de frío para tu Pastel de hielo.
50282	Arcón helado	¡Este Arcón helado no es cualquier cosa! Ábrelo y extrae uno de los codiciados objetos.
71131	Sello del caballo negro	Un sello para un caballo de pura raza.
71132	Sello del caballo negro	Un sello para un caballo de pura raza.
71133	Sello del caballo negro	Un sello para un caballo de pura raza.
71134	Sello del caballo negro	Un sello para un caballo de pura raza.

Añado item_list.txt

50278	ETC	icon/item/50278.tga
50279	ETC	icon/item/50279.tga
50280	ETC	icon/item/50280.tga
50281	ETC	icon/item/50281.tga
50282	ETC	icon/item/50282.tga
71131	ETC	icon/item/71131.tga
71132	ETC	icon/item/71131.tga
71133	ETC	icon/item/71131.tga
71134	ETC	icon/item/71131.tga

...

 

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.

Enlace para comentar
Compartir en otros sitios

Esta muy bien, pero solo un par de cosillas:

  1. Puedes utilizar la funcion item_name(itemVnum) para los nombres de los objetos, no hay necesidad de añadir ese dato a la tabla.
  2. También es posible utilizar la función npc.get_race() para obtener el vnum del NPC seleccionado, de este modo no se necesita cambiarlo en el mob_name().
Enlace para comentar
Compartir en otros sitios

Unirse a la conversación

Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, regístrate para publicar con su cuenta.

Guest
Responder a este tema...

×   Has pegado contenido con formato .   Eliminar formato

  Only 75 emoji are allowed.

×   Tu enlace se ha incorporado automáticamente.   Mostrar un enlace en su lugar

×   Se ha restaurado el contenido anterior. .   Borrar editor

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

  • Recientemente navegando por este tema   0 miembros

    • No hay usuarios registrados visitando esta página.
×
×
  • Crear nuevo...