Jump to content

Elite™

Miembro
  • Contador contenido

    45
  • Ingreso

  • Última visita

  • Días ganados

    8

Mensajes publicados por Elite™

  1. quest anillo_vetas begin
        state start begin  
            when login or enter with pc.get_map_index() == 105 begin
                if pc.getqf("usado") == 1 and pc.getqf("primero") == 0 then
                    pc.setqf("primero",1)
                    pc.setqf("duracion_en_mapa",get_time()+60*10)
                elseif pc.getqf("usado") == 1 and  pc.getqf("primero") > 0 then
                    if get_time() > pc.getqf("duracion_en_mapa") then
                        warp_to_village()
                    else
                        local tiempo = pc.getqf("duracion_en_mapa")-get_time()
                        local minutos = math.floor(tiempo/60)
                        if minutos > 0 then
                            syschat(string.format("Te quedan: %s minutos(s)", minutos))
                        else
                            syschat(string.format("Te quedan: %s segundos(s)", tiempo))
                        end
                        timer("salir",tiempo)
                    end
                else
                    syschat("")
                end
            end
            
            when 30201.use begin
                say_title("Anillo vetas:")
                say("Este anillo te lleva al mapa")
                say("de minas por 10 minutos")
                say("Seras teleportado al Mapa.")
                say_reward("¿El Anillo desaparecera, quieres continuar?")
                local continua = select("Si", "No")
                if continua == 1 then
                    say("Vas al Mapa.")
                    say("Por un tiempo limite")
                    say("")
                    say_reward("Tienes 10 Minutos .")
                    pc.warp(6400, 100)
                    pc.remove_item(30201, 1)
                    pc.setqf("usado",1)
                    pc.setqf("primero",0)
                end
            end
            
            when salir.timer begin
                warp_to_village()
            end
        end
    end
    

    PD: El objeto tiene que tener el tipo 18 para que pueda ser usado desde la quest

  2.  

     

     

     

     

    local monstruos = {101, 102, 103, ..., 114}
    local menu = {}
    
    for _, vnum in ipairs(monstruos) do
        table.insert(menu, mob_name(vnum))
    end
    table.insert(menu, "Cancelar")
    
    (...)
    
    pc.polymorph(monstruos[escoge])

    pc.level y pc.gold no son seguros. Recomiendo pc.get_level() y pc.get_gold().

    Buen apunte, podria haberlo simplificado de esa forma pero creo que es mas visible a la hora de ver para una persona que no entienda apenas de lua. Gracias por la recomendacion de esos metodos.

     

    Un Saludo

  3. Te dejo esta versión que he realizado asi rapido

    ----------------------------------
    --    Pedido Metin2Zone
    --     Creado por Elite™
    ----------------------------------
    quest miquest begin
        state start begin
            -- En idnpc pon el id
            when idnpc.chat."Transformarme" begin
                say_title(npc.get_race())
                --Yang a pagar
                local yang = 10000
                --Nivel minimo
                local nivel = 100
                if pc.level < nivel and pc.gold < yang then
                    say("Para transformate necesitas ser almenos nivel 100")
                    say("ademas de tener "..yang.." Yang.")
                else
                     local monstruos = { -- Tabla con los Mobs
                        {101,"Perro Salvaje"},
                        {102,"Lobo"},
                        {103,"Lobo Alfa"},
                        {104,"Lobo Azul"},
                        {105,"Lobo Alfa Azul"},
                        {106,"Lobo Gris"},
                        {107,"Lobo Alfa Gris"},
                        {108,"Jabali"},
                        {109,"Jabali Rojo"},
                        {110,"Oso"},
                        {111,"Oso Pardo"},
                        {112,"Oso Negro"},
                        {113,"Oso Marron"},
                        {114,"Tigre"},
                    }
                    local menu = {}
                    say("En que mostruo quieres transformate")
                     for id,valor in ipairs(monstruos) do
                        table.insert(menu, valor[2])
                     end
                    table.insert(menu, "Cancelar")
                    local escoge = select_table(menu)
                    if escoge != table.getn(menu) then
                        --En tiempo ponerlo en segundos
                        pc.polymorph(monstruos[escoge][1],tiempo)
                        pc.changegold(-yang)
                    end
                end
            end    
        end
    end
    

    En la tabla debes añadir todos los mobs que quieras, asi el usuario elegira por el nombre y asi no debe saberse el id del monstruo

  4. como puedo hacer una quest para que cada nivel que subas se anuncie?

    Esta no es la sección correcta pero voy a intentar resolver tu petición

    quest level_up begin
    	state start begin
    		when login or kill begin
    			local nivel = pc.get_level()
    			local experiencia_actual = pc.get_exp()
    			local tabla_experiencia = {
    				[1] = {300},
    				[2] = {800},
    				[3] = {1500},
    				[4] = {2500},
    				[5] = {4300},
    				[6] = {7200},
    				[7] = {11000},
    				[8] = {17000},
    				[9] = {24000},
    				[10] = {33000},
    				[11] = {43000},
    				[12] = {58000},
    				[13] = {76000},
    				[14] = {100000},
    				[15] = {130000},
    				[16] = {169000},
    				[17] = {219000},
    				[18] = {283000},
    				[19] = {365000},
    				[20] = {472000},
    				[21] = {610000},
    				[22] = {705000},
    				[23] = {813000},
    				[24] = {937000},
    				[25] = {1077000},
    				[26] = {1237000},
    				[27] = {1418000},
    				[28] = {1624000},
    				[29] = {1857000},
    				[30] = {2122000},
    				[31] = {2421000},
    				[32] = {2761000},
    				[33] = {3145000},
    				[34] = {3580000},
    				[35] = {4073000},
    				[36] = {4632000},
    				[37] = {5194000},
    				[38] = {5717000},
    				[39] = {6264000},
    				[40] = {6837000},
    				[41] = {7600000},
    				[42] = {8274000},
    				[43] = {8990000},
    				[44] = {9753000},
    				[45] = {10560000},
    				[46] = {11410000},
    				[47] = {12320000},
    				[48] = {13270000},
    				[49] = {14280000},
    				[50] = {15340000},
    				[51] = {16870000},
    				[52] = {18960000},
    				[53] = {19980000},
    				[54] = {21420000},
    				[55] = {22930000},
    				[56] = {24530000},
    				[57] = {26200000},
    				[58] = {27960000},
    				[59] = {29800000},
    				[60] = {32780000},
    				[61] = {36060000},
    				[62] = {39670000},
    				[63] = {43640000},
    				[64] = {48000000},
    				[65] = {52800000},
    				[66] = {58080000},
    				[67] = {63890000},
    				[68] = {70280000},
    				[69] = {77310000},
    				[70] = {85040000},
    				[71] = {93540000},
    				[72] = {102900000},
    				[73] = {113200000},
    				[74] = {124500000},
    				[75] = {137000000},
    				[76] = {150700000},
    				[77] = {165700000},
    				[78] = {236990000},
    				[79] = {260650000},
    				[80] = {286780000},
    				[81] = {315380000},
    				[82] = {346970000},
    				[83] = {381680000},
    				[84] = {419770000},
    				[85] = {461760000},
    				[86] = {508040000},
    				[87] = {558740000},
    				[88] = {614640000},
    				[89] = {676130000},
    				[90] = {743730000},
    				[91] = {1041222000},
    				[92] = {1145344200},
    				[93] = {1259878620},
    				[94] = {1385866482},
    				[95] = {1524453130},
    				[96] = {1676898443},
    				[97] = {1844588288},
    				[98] = {2029047116},
    				[99] = {2050000000},
    				[100] = {2150000000},
    				[101] = {2210000000},
    				[102] = {2250000000},
    				[103] = {2280000000},
    				[104] = {2310000000},
    				[105] = {2330000000},
    				[106] = {2350000000},
    				[107] = {2370000000},
    				[108] = {2390000000},
    				[109] = {2400000000},
    				[110] = {2410000000},
    				[111] = {2420000000},
    				[112] = {2430000000},
    				[113] = {2440000000},
    				[114] = {2450000000},
    				[115] = {2460000000},
    				[116] = {2470000000},
    				[117] = {2480000000},
    				[118] = {2490000000},
    				[119] = {2490000000},
    				[120] = {2500000000}
    			}
    
    			if experiencia_actual == tabla_experiencia[nivel][1] then
    				notice("Has subido al nivel "..nivel)
    			end
    		end
    	end
    end
    
    

    La he hecho rápido y no he tenido tiempo a probarla pero deberia funcionarte.

  5. En java hay dos tipos de datos primitivos(se encriben en minusculas) y objetos (La primera letra se escribe en mayuscula)

     

    Tipos Primitivos:

    • byte
    • short
    • int
    • long
    • float
    • double
    • char
    • boolean

    Tipos Objetos:

    • String (cadenas)
    • ArrayList
    • TreeSet
    • Scaner
    • Arrays
    • Objetos creados por el usuario
    • ...

    Public,Private,Protected son modificadores de acceso que determina quién puede acceder a las clases o propiedades y métodos de una clase.

     

    public static void main(String[] args) define una función, o método, pública y estática denominada main(). La palabra reservada static se utiliza para definir las propiedades o los métodos que pertenecen a una clase. El tipo de dato void se usa para indicar a la función, o método, que no devuelva parámetros. Todo programa en Java necesita una función, o método, denominada main() para establecer el inicio del programa. El contenido de dicha función, String[] args, define un vector de cadenas de caracteres donde recogerá los argumentos pasados en la ejecución de tu programa.

     

    Si a un método,clase o constructor no le añades nigun modificador de acceso lo contara como public

     

    System.out.println es tal cual dices en la postdata te muestra la salida por la consola

     

    Pd: Si quieres aprenderte bien toda la teoria te recomiendo que te bajes el siguiente libro en pdf: Programación orientada a objetos con Java usando BlueJ

     

  6. Con esto te deberia valer

    quest bienvenida begin
        state start begin
    	when login with pc.get_level() == 1  begin --Solo se hara cuando entres al servidor y seas nivel 1
    		while pc.get_level() < 75 do -- Mientras no seas nivel 75 te seguira dando experiencia
    			local exp = pc.get_next_exp()
    			pc.give_exp2(exp)
    		end
    		horse.set_level(30) -- Caballo al Nivel 30
                    horse.ride()  -- Te monta en el Caballo
    		pc.give_item2(50053) -- Te da el libro militar
    	end
        end
    end
    
  7. 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.

  8. 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
    
  9. Buenas a todos de metin2zone llevo un monton de tiempo fuera del mundillo del metin2 y el otro dio me dio la venada de hacer algo relacionado con el y se me ocurrio hacer un editor de quest desde JAVA, no es gran cosa de momento con el tiempo espero poder ir perfercionandolo bien,lo unico que hace es colorear en tiempo real las palabras clave, tipo notepad ++ con el lenguage quest.

     

    Aqui os dejo una imagen del editor y el .jar para si alguien quiere probarlo jeje

     

    2ngbsys.jpg

     

    Para ejecutarlo se puede hacer con la consola de java desde la interfaz grafica o desde la consola de comandos de windows con el comando java -jar EditorQuest.jar

     

    Saludos a Todos!!!

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

  10. Buenas gente de Metin2Zone hace bastante tiempo quise hacer la quest para teletransportarte al nuevo mapa y este es el resultado

    quest capedragon begin    state start begin        when 9012.chat."Peñasco del Dragón Oscuro" with pc.get_level() >= 90 begin            say_title("Telentrasportador:")            say("Hace poco se descubrió una isla misteriosa a la que")            say("llaman el Peñasco del Dragón Oscuro.")            say("Quien quiera sobrevivir en ese lugar necesita tener")            say("la experiencia suficiente. Por eso solamente")            say("llevo allí a luchadores a partir de nivel 90.")            say("¿Te atreves a emprender este viaje?")            local a= select("Sí ","No")            if 1==a then                local level = pc.get_level()                local cost = math.floor(level / 5) * 1000                say_title("Telentrasportador:")                say("Solamente se puedé acceder a la isla en barco y")                say("la travesía es larga y agotadora. Cuanto mayor sea")                say("tu nivel, más riguroso resultará el viaje.")                say("Por eso tengo que ofrecerte una tarifa más alta.")                say_reward(string.format("El viaje te costará %d Yang.", cost))                local b= select("Sí ","No")                if 1==b then                    if pc.gold < cost then                        say_title("Teletransportador:")                        say("No te puedo teletransportar.")                        say("Tengo una gran familia y necesito dinero")                        say("para alimentarles.")                    else                        pc.warp(1104300,1788500)                        pc.changegold(-cost)                    end                end            end        end            endend

    Aunque ya han sido publicado los archivos de gameforge dejo este pequeño aporte funcional y simple jeje

     

    Creditos:

    Elite™(Crear la quest)

    Noa en el foro

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    (Por su pequeña ayuda)

  11. Buenas gente de metin2zone me ha apetecido hacer la subquest de nivel 47 tal y como la del oficial y os la dejo aqui publicada para que la podais probar ya que yo no he tengo tiempo para probarla espero que os funcione si veis algun error que algun corrector especialista la repare :)

     

    La dejo adjunta por si la quereis descargar.

    ---------------------------------------------------- SUB QUEST-- LV  50-- Decifrando el cryptograma----------------------------------------------------quest subquest_47  begin    state start begin		when login or levelup with pc.level >= 50  and pc.level <= 52 begin			set_state( information )        end    end    state information begin        when letter begin			local v=find_npc_by_vnum(20355)            if 0==v then            else				target.vid("__TARGET__", v, "Capitán")            end        end        when __TARGET__.target.click or			20355.chat."Sobre el código secreto..." with  pc.level >= 50 begin            target.delete("__TARGET__")			say_title("Capitán:")			say("¡FIRMES! Ah, eres tú. Tengo información de")			say("Yu-Hwan. Están, como siempre, codificadas. No es")			say("fácil descifrarlo, pero quizá debamos actuar")			say("rápido. La última vez fuistes más bien rápido")			say("descrifrando el código. ¿Podrías ayudarme de")			say("nuevo? Por favor, sería estupendo.")			local r=select("Aceptar", "No, es un trabajo sin importancia.")			if 2==r then				say("¿Quieres abandonar la misión?")				local a=select("Sí " ,"No")				if 2==a then					say_title("Capitán:")					say("Pero... la última vez, lo hiciste.")					say("¿Por qué estás dudando? Por favor, replantéatelo.")					return				end				say_title("Capitán:")				say("Yo sé lo que quieres decir.")                say("Por lo que veo no quieres ayudarnos,")				say("Pues una verdadera vergüenza.")				set_state(__GIVEUP__)				return			end			say_title("Capitán:")			say("¡Oh! ¡Eres mi salvador! Mira, este es el código")			say("¡Míralo bien!")			wait()					say_title("Capitán:")			say("GMEIENSO")			say("STIVOS")			say("NE")			say("OHZENORIT")			say("¿Puedes descifrarlo?")			wait()			say_title("Capitán:")			say("Así pues, ¿cómo va? ¿Alguna pista?")			local s=select("¡Ah! Ya está.","No lo sé.","Enséñamelo otra vez.")            if 2==s then				say("¿Quieres abandonar la misión?")				local a=select("Sí ","No")				if  2==a then					say_title("Capitán:")					say("Piénsalo de nuevo y vuelve más tarde. ¡Pero no se")					say("lo cuentes a nadie!")					return				end					say_title("Capitán:")				say("¡Dios mío! ¿Que difícil?")                say("¿Quién sabe descifrar eso?")                say("Tú eras mi última esperanza.")				set_state(__GIVEUP__)				return			end			if 3==s then				say_title("Capitán:")				say("Bien, pero rápido. De otro modo alquien")				say("sospechará...")				say("GMEIENSO")				say("STIVOS")				say("NE")				say("OHZENORIT")				wait()			end			say_title("Capitán:")			say("¿Y? ¿Qué significa este código?")						local answer=select("Amigos vistos en horizonte","La verdad hace enemigos","Enemigos vistos en horizonte","Enemigo visto en horizonte","No lo sé")            			if answer=="Amigos vistos en horizonte" or "La verdad hace enemigos" or "Enemigo visto en horizonte" then                say_title("Capitán:")                say("Hmm, eso no significa nada para mí. Qué quiso")                say("decir con eso. No creo que esté bien. Piénsalo")                say("otra vez.")				local a=select("Probaré de nuevo","Abandonar")                if 2==a then                    say_title("Capitán:")					say("¡Oh, cielo! ¿Tan difícil es? Eras mi última")					say("esperanza... ¿Quién va a descifrarlo ahora?")					set_state(__GIVEUP__)                    return                end                				say("Entonces, ¿qué significa?")				local answer=select("Amigos vistos en horizonte","La verdad hace enemigos","Enemigos vistos en horizonte","Enemigo visto en horizonte","No lo sé")				if answer=="Amigos vistos en horizonte" or "La verdad hace enemigos" or "Enemigo visto en horizonte" then					say_title("Capitán:")                    say("Lo averiguarás. ¡Vuelve cuando estés listo!")				elseif answer=="No lo sé" then					say_title("Capitán:")					say("¿Por qué estás tan callado? ¿No lo entiendes?")					local a=select("Tengo que pensar","Abandono.")					if 2==a then						say_title("Capitán:")						say("¡Oh, cielo! ¿Tan difícil es? Eras mi última")						say("esperanza... ¿Quién va a descifrarlo ahora?")						return					end					say("Entonces, ¿qué significa el mensaje?")					local answer=select("Amigos vistos en horizonte","La verdad hace enemigos","Enemigos vistos en horizonte","Enemigo visto en horizonte","No lo sé")					if answer=="Amigos vistos en horizonte" or "La verdad hace enemigos" or "Enemigo visto en horizonte" or "No lo sé" then						say_title("Capitán:")						say("Lo averiguarás. ¡Vuelve cuando estés listo!")						end					say_title("Capitán:")					say("Sí ¡tienes razón! Ahora también lo entiendo.")					say("Estoy orgulloso de ti. ¡Eres uno de nuestros")					say("mejores soldados! Esta frase es una contraseña")					say("concertada. Significa que Yu-Hwan ha descubierto")					say("a los espías enemigos y hemos tomado acciones")					say("contra ellos. Daré las órdenes necesarias")					say("inmediatamente.")					say_reward("Recibes 1.300.000 puntos de experiencia.")					pc.give_exp2(1300000)                    clear_letter()                    set_state(__COMPLETE__)				end			elseif answer=="No lo sé" then				say_title("Capitán:")				say("¿Por qué estás tan callado? ¿No lo entiendes?")				local a=select("Tengo que pensar","Abandono.")				if 2==a then					say_title("Capitán:")					say("¡Oh, cielo! ¿Tan difícil es? Eras mi última")					say("esperanza... ¿Quién va a descifrarlo ahora?")					return				end				say("Entonces, ¿qué significa el mensaje?")				local answer=select("Amigos vistos en horizonte","La verdad hace enemigos","Enemigos vistos en horizonte","Enemigo visto en horizonte","No lo sé")				if answer=="Amigos vistos en horizonte" or "La verdad hace enemigos" or "Enemigo visto en horizonte" or "No lo sé" then					say_title("Capitán:")					say("Lo averiguarás. ¡Vuelve cuando estés listo!")					end				say_title("Capitán:")				say("Sí ¡tienes razón! Ahora también lo entiendo.")				say("Estoy orgulloso de ti. ¡Eres uno de nuestros")				say("mejores soldados! Esta frase es una contraseña")				say("concertada. Significa que Yu-Hwan ha descubierto")				say("a los espías enemigos y hemos tomado acciones")				say("contra ellos. Daré las órdenes necesarias")				say("inmediatamente.")				say_reward("Recibes 1.300.000 puntos de experiencia.")				pc.give_exp2(1300000)				clear_letter()                set_state(__COMPLETE__)			elseif answer=="Enemigos vistos en horizonte" then				say_title("Capitán:")				say("Sí ¡tienes razón! Ahora también lo entiendo.")				say("Estoy orgulloso de ti. ¡Eres uno de nuestros")				say("mejores soldados! Esta frase es una contraseña")				say("concertada. Significa que Yu-Hwan ha descubierto")				say("a los espías enemigos y hemos tomado acciones")				say("contra ellos. Daré las órdenes necesarias")				say("inmediatamente.")				say_reward("Recibes 1.300.000 puntos de experiencia.")				pc.give_exp2(1300000)				clear_letter()				set_state(__COMPLETE__)					end					end	end	state __COMPLETE__ begin		when enter begin			q.done()        end    end	state __GIVEUP__ begin    endend

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

  12. quest buy_fishrod begin	state start begin		when 9009.chat."Descuento en la caña de pescar" with pc.level>=7 and pc.level<=17 begin			say_title("Pescador:")			say("¡Un precio increíble!¡Una caña de pescar con una")			say("empuñadura fantástica!¡Y con esta caña vienen")			say("100 gomas y 20 gusanos gratis! Nosotros, 'los")			say("vendedores de las mejores cañas de pesca',")			say("ofrecemos a nuestros clientes un Paquete de Caña")			say("de Pesca 3 en 1 por 3980 Yangs")			say("¿Quieres comprar el Paquete de Pesca?")			say("")			local b=select("Comprarlo", "No,gracias")			if 1==b then				if pc.money>=3980 then					pc.changemoney(-3980)					say_title("Pescador:")					say("Has comprado el Paquete de Pesca 3 en 1. ¡Que te")					say("diviertas! Y no olvides poner atención a la nota")					say("sobre el concurso de pesca. ¡Hasta pronto!")					pc.give_item2(27400)					pc.give_item2(27800, 100)					pc.give_item2(27801, 20)					setstate(notify_event)				else					say_title("Pescador:")					say("Lo siento, no tienes suficiente Yang por favor,")					say("espera a la siguiente ganga especial.")				end			elseif 2==b then			else				say("UNKNOWN BUTTON ["..b.."]")			end		end	end	state notify_event begin		when letter begin			setskin(NOWINDOW)			makequestbutton("Nota de la Competición de Pesca")			q.set_title("Nota de la Competición de Pesca")			q.start()		end		when button or info begin			say_title("Nota:")			say("Gracias por comprar el paquete de la caña de")			say("pescar. Mi tienda no sólo ofrece ofertas")			say("especiales, sino también concursos de pesca para")			say("principiantes. El primer premio es deseados por")			say("todos los aventureros... ¡un arma")			say("de principiante +3! Si llevas 5 Luciopercas")			say("muertos al pescador, obtendrás tu premio")			say("inmediatamente.")			say("¡Este es una oportunidad poco usual! ¡Así que,")			say("acepta este reto!")			local b=select("Participar", "Ignorar")			if 1==b then				setstate(play_event)			elseif 2==b then				setstate(__COMPLETE__)				q.done()			else				say("UNKNOWN BUTTON ["..b.."]")			end			end	end	state play_event begin		when letter begin			setskin(NOWINDOW)			makequestbutton("Competición de Pesca")			q.set_title("Competición de Pesca")			q.start()		end		when button or info begin			say_title("Pescador")			say("Pesca una Carpa Cruciana y mátala haciendo click")			say("sobre ella. Llévale 5 Carpas Crucianas Muertas al")			say("Pescador y serás recompensado.")		end      		when 9009.chat."Retirar premio" with pc.countitem(27833)>=5 begin			say_title("Pescador:")			say("¿Has traído los 5 Luciopercas Muertos?")			say("¡Maravilloso! Como prometido, aquí tienes el arma")			say("de principiante +3. ¡Te deseo mucha diversión y")			say("vuelve pronto!")			pc.removeitem(27833,5)			setstate(reward)		end		when 9009.chat."Retirar premio" with pc.countitem(27833)<5 begin			say_title("Pescador:")			say("Lo siento, pero sólo puedo darte el premio si me")			say("traes 5 Luciopercas Muertos. ¡Inténtalo de nuevo!")		end	end	state reward begin		when letter begin			setskin(NOWINDOW)			makequestbutton("Premio de la Competición")			q.set_title("Premio de la Competición")			q.start()		end		when button begin			say_title("Información:")			say("Has participado en el concurso de pesca y")			say("le has entregado 5 Luciopercas Muertos al")			say("pescador. ¡Como premio obtienes una caja")			say("maravillosa!")			say("En la caja está el arma de principiante +3.")			if pc.job==0 then			       pc.give_item2(3210, 1)			elseif pc.job==1 then			       pc.give_item2(2150, 1)			elseif pc.job==2 then			       pc.give_item2(290, 1)			elseif pc.job==3 then			       pc.give_item2(5110, 1)			end			setstate(__COMPLETE__)			q.done()		end	end	state __COMPLETE__ begin		when enter begin			q.done()		end	endend
  13. No entendi , explicame más

    Nose como explicarme pero te voy a poner un ejemplo en el post que creo Keko sobre los arrays puso uno que es el siguiente.

     

    say("Te voi a dar un arma aleatoria")say("")local items = {{160,2},{161,1},{162,3}}local arma = select ("OK" , "Cerrar")if arma == 2 then return endpc.give_item2(items[math.random(1,table.getn(items))][1],items[math.random(1,table.getn(items))][2])Bien, ahora en este caaso el juego nos va a dar un arma aleatoria, porque hemos incluido la funcion math.random dentro del array. Tal y como la hemos puesto:[math.random(1,table.getn(items))]Nos dara un resultado que puede estar entre 1 y el numero de subcategorias que tiene la tabla items.-----------------------------------------------------------------------------------------------------------------------------------------------------------------(table.getn(nombretabla)) es una función muy útil que devuelve el número maximo de elementos que tiene una tabla simple o de subcategorias de una compuesta)-----------------------------------------------------------------------------------------------------------------------------------------------------------------Por lo tanto tal y como esta configurada la quest buscara primero la subcategoría, que sera el número aleatorio, y después irá a la posicion dentro de ella que le hemos dicho (1 para la id y 2 para la cantidad)

     

    Lo que quiero es hacer lo mismo para los puntos de experiencia y yang. Y que sean aleatorios con la funcion math.random

  14. Buenas a todos llevo bastante tiempo sin aportar nada y hace bastante yo hice la quest de la medalla de heroe apartir de las capturas del oficial y hoy os quiero dejar la misión original con su texto indentico al metin2.es

    ---------------------------------------------------- 2012 Medalla del Héroe-- Traducida por Elite™----------------------------------------------------quest olympic_badge begin	state start begin		function has_it()			local a = pc.count_item(30265)			local b = pc.count_item(30266)			local c = pc.count_item(30267)			local d = pc.count_item(30268)			local e = pc.count_item(30269)			local perfect = a > 0 and b > 0 and  c > 0 and d > 0 and e > 0 			local notyet = a >0 or b > 0 or  c > 0 or d > 0 or  e > 0 			if perfect then 				return 1			elseif notyet  then				return 0			end		end		when login with game.get_event_flag("medal_part_drop") >= 1  begin			set_state(information)		end	end	state information begin		when letter begin			local v = find_npc_by_vnum(20017)			if 0 != v then				target.vid("__TARGET__", v, "")			end			send_letter("Medalla del Héroe")			end		when info or button begin			say("Yu-Hwan necesita tu ayuda. ¡Ve a verlo!")			say("Lo encontrarás en el segundo poblado.")		end		when __TARGET__.target.click or 20017.chat."Medalla del Héroe" with  game.get_event_flag("medal_part_drop") >= 1 and pc.get_level() >= 30 begin			target.delete("__TARGET__")			say_title(mob_name(20017))			say("¡Ayuda!")			say("Miserable hatajo de ladrones...")			say("¡Ayer por la noche me entrarron en casa!")			say("Se llevaron la Medalla del Héroe. Un antepasado")			say("mío la recibió en su momento tras correr")			say("42195 quilómetros desde el campo de batalla")			say("hasta donde estaba su monarca para comunicarle")			say("la victoria.")			say("¡Y ahora ha desaparecido!")			wait()			say_title(mob_name(20017))			say("Diantres... para mi familia es de un")			say("valor incalculable. ¿Qué hago ahora?")			say("¿Me ayudarás?")			local s = select("Si","No")			if 2 == s then				say("¿De verdad quieres rechazar este encargo?")				say("Si ahora escoges ´Sí´ no podrás volver a")				say("tomarlo.")				local a = select("Si", "No")				if 2 == a then					say_title("Yu-Hwan")					say("Entiendo que ahora no tengas tiempo.")					say("Vuelve cuando tengas bien. ¡Pero")					say("no me hagas esperar mucho!")					return				end				say_title(mob_name(20017))				say_title("Yu-Hwan")				say("Me temo que has venido demasiado tarde")				say("y ya no puedes ayudarme. ¡Te deseo") 				say("todo lo mejor para tu camino!")				set_state(__GIVEUP__)				return			end							say_title(mob_name(20017))			say("¡De caza a los monstruos que me robaron! Pero")			say("ten cuidado: eram muy fuerte, como mínimo de")			say("nivel 30. ¡Si me traes de vuelta la Medalla del")			say("Héroe te recompensaré como es debido!")			set_state(step1)		end		end	state step1 begin		when letter begin			send_letter("Medalla del Héroe")		end		when info or button begin			say("Encuentra la Medalla del Héroe y llévasela a")			say("Yu-Hwan.")		end		when 20017.chat."Medalla del Héroe" with  game.get_event_flag("medal_part_drop") >= 1 and pc.get_level() >= 30 begin			say_title(mob_name(20017))			say("¡Por fin! ¡Has vuelto!")			say("¿Has encontrado la Medalla del Héroe?")			wait()			if  count_item_range(30265,30269)== 0  then				say("¡Has encontrado mi Medalla!")				say("Pero espera... esto es solo un pedazo. ¡Qué")				say("infamia, la han partido en cinco!")				say("¡Por favor, tráeme todos los fragmentos! Quizás")				say("pueda recomponerla!")				return			elseif olympic_badge.has_it() ==0  then				say("¡Has encontrado mi Medalla!")				say("Pero espera... esto es solo un pedazo. ¡Qué")				say("infamia, la han partido en cinco!")				say("¡Por favor, tráeme todos los fragmentos! Quizás")				say("pueda recomponerla!")				return			else 				say_title(mob_name(20017))				say("¡Estos malditos ladrones han destrozado mi")				say("valiosa herencia!")				say("Muchas gracias por haber encontrado todos")				say("los fragmentos. Ahora puedo volver")				say("a unirlos todos.")				wait()					say(mob_name(20017))				say("¡Mil gracias! Has restablecido el")				say("honor de mi familia.")				say("Tu esfuerzos no habrán sido en")				say("vano. ¡Aquí tienes tu merecida")				say("recompensa!")				pc.remove_item(30265)				pc.remove_item(30266) 				pc.remove_item(30267) 				pc.remove_item(30268) 				pc.remove_item(30269) 				if pc.getqf ("medal_done") == 0 then 					say_item_vnum(71158)					pc.give_item2(71158)					if 0== pc.get_sex() then						pc.give_item2(71159)					else						pc.give_item2(71160)					end					pc.setqf("medal_done", 1)					return				end   --if 				pc.give_item2(50249)			end    --if 		end	   --when 		end   --state	state __GIVEUP__ begin	endend  --quest
  15. Usage: m2ft <.dat file>

     

    unpack:

    unpack|pack_name|out_folder|out_dat_name

    pack:

    pack|pack_name

    file_name|file_path|file_type

    comment:

    start line whit "--"

    Press a key to continue...

     

    Ese ejecutable tienes que dejarlo en el escritorio.

     

    Te recomiendo que crees una carpeta en la que crearas un archivo .dat por ejemplo para "root" root.dat con esta información

    unpack|root|D:\Descompilar|root_pack.dat
    

    Información:

    unpack|nombre del archivo epk,eix|Ruta|Nombre del archivo que va a generar.dat

    Al Descompilarlo nos debera salir todos los archivos descompilados y el .dat

     

    pack|root
    20110915_ymir_item_proto|D:\Descompilar\20110915_ymir_item_proto|1
    936mob_proto|D:\Descompilar\936mob_proto|1
    936skilldesc.txt|D:\Descompilar\936skilldesc.txt|1
    936skilltable.txt|D:\Descompilar\936skilltable.txt|1
    assassin_m.msm|D:\Descompilar\assassin_m.msm|1
    assassin_w.msm|D:\Descompilar\assassin_w.msm|1
    atlasinfo.txt|D:\Descompilar\atlasinfo.txt|1
    colorinfo.py|D:\Descompilar\colorinfo.py|1
    consolemodule.py|D:\Descompilar\consolemodule.py|1
    constinfo.py|D:\Descompilar\constinfo.py|1
    debuginfo.py|D:\Descompilar\debuginfo.py|1
    emotion.py|D:\Descompilar\emotion.py|1
    exception.py|D:\Descompilar\exception.py|1
    game.py|D:\Descompilar\game.py|1
    grpblk.txt|D:\Descompilar\grpblk.txt|1
    interfacemodule.py|D:\Descompilar\interfacemodule.py|1
    introcreate.py|D:\Descompilar\introcreate.py|1
    introempire.py|D:\Descompilar\introempire.py|1
    introloading.py|D:\Descompilar\introloading.py|1
    intrologin.py|D:\Descompilar\intrologin.py|1
    introselect.py|D:\Descompilar\introselect.py|1
    locale.py|D:\Descompilar\locale.py|1
    mousemodule.py|D:\Descompilar\mousemodule.py|1
    musicinfo.py|D:\Descompilar\musicinfo.py|1
    networkmodule.py|D:\Descompilar\networkmodule.py|1
    npclist.txt|D:\Descompilar\npclist.txt|1
    playersettingmodule.py|D:\Descompilar\playersettingmodule.py|1
    prototype.py|D:\Descompilar\prototype.py|1
    servercommandparser.py|D:\Descompilar\servercommandparser.py|1
    serverinfo.py|D:\Descompilar\serverinfo.py|1
    shaman_m.msm|D:\Descompilar\shaman_m.msm|1
    shaman_w.msm|D:\Descompilar\shaman_w.msm|1
    stringcommander.py|D:\Descompilar\stringcommander.py|1
    sura_m.msm|D:\Descompilar\sura_m.msm|1
    sura_w.msm|D:\Descompilar\sura_w.msm|1
    system.py|D:\Descompilar\system.py|1
    test_affect.py|D:\Descompilar\test_affect.py|1
    ui.py|D:\Descompilar\ui.py|1
    uiaffectshower.py|D:\Descompilar\uiaffectshower.py|1
    uiattachmetin.py|D:\Descompilar\uiattachmetin.py|1
    uiauction.py|D:\Descompilar\uiauction.py|1
    uiautoban.py|D:\Descompilar\uiautoban.py|1
    uicandidate.py|D:\Descompilar\uicandidate.py|1
    uicharacter.py|D:\Descompilar\uicharacter.py|1
    uichat.py|D:\Descompilar\uichat.py|1
    uicommon.py|D:\Descompilar\uicommon.py|1
    uicube.py|D:\Descompilar\uicube.py|1
    uiequipmentdialog.py|D:\Descompilar\uiequipmentdialog.py|1
    uiex.py|D:\Descompilar\uiex.py|1
    uiexchange.py|D:\Descompilar\uiexchange.py|1
    uigamebutton.py|D:\Descompilar\uigamebutton.py|1
    uigameoption.py|D:\Descompilar\uigameoption.py|1
    uiguild.py|D:\Descompilar\uiguild.py|1
    uihelp.py|D:\Descompilar\uihelp.py|1
    uiinventory.py|D:\Descompilar\uiinventory.py|1
    uimapnameshower.py|D:\Descompilar\uimapnameshower.py|1
    uimessenger.py|D:\Descompilar\uimessenger.py|1
    uiminimap.py|D:\Descompilar\uiminimap.py|1
    uioption.py|D:\Descompilar\uioption.py|1
    uiparty.py|D:\Descompilar\uiparty.py|1
    uiphasecurtain.py|D:\Descompilar\uiphasecurtain.py|1
    uipickmoney.py|D:\Descompilar\uipickmoney.py|1
    uiplayergauge.py|D:\Descompilar\uiplayergauge.py|1
    uipointreset.py|D:\Descompilar\uipointreset.py|1
    uiprivateshopbuilder.py|D:\Descompilar\uiprivateshopbuilder.py|1
    uiquest.py|D:\Descompilar\uiquest.py|1
    uirefine.py|D:\Descompilar\uirefine.py|1
    uirestart.py|D:\Descompilar\uirestart.py|1
    uisafebox.py|D:\Descompilar\uisafebox.py|1
    uiscriptlocale.py|D:\Descompilar\uiscriptlocale.py|1
    uiselectitem.py|D:\Descompilar\uiselectitem.py|1
    uiselectmusic.py|D:\Descompilar\uiselectmusic.py|1
    uishop.py|D:\Descompilar\uishop.py|1
    uisystem.py|D:\Descompilar\uisystem.py|1
    uisystemoption.py|D:\Descompilar\uisystemoption.py|1
    uitarget.py|D:\Descompilar\uitarget.py|1
    uitaskbar.py|D:\Descompilar\uitaskbar.py|1
    uitip.py|D:\Descompilar\uitip.py|1
    uitooltip.py|D:\Descompilar\uitooltip.py|1
    uiuploadmark.py|D:\Descompilar\uiuploadmark.py|1
    uiweb.py|D:\Descompilar\uiweb.py|1
    uiwhisper.py|D:\Descompilar\uiwhisper.py|1
    warrior_m.msm|D:\Descompilar\warrior_m.msm|1
    warrior_w.msm|D:\Descompilar\warrior_w.msm|1
    

    Como Descompilar el archivo

    Para descompilar el archivo es tan facil como arrastrar el *.dat sobre el ejecutable que esta en el escritorio y directamente te lo creara en la ruta que le hayas especificado en el *.dat pero antes de eso tienes que estar el .eix y el .epk dentro de esa carpeta.

     

    Como Compilar el archivo

    Para descompilarl el archivo seria coger el archivo .dat que nos genero al descompilarlo y arrrastrarlo hasta el ejecutable del escritorio.

     

    Descargar

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

  16. Contiene:

     

    Todos los peinados normales

    Peinados Afro

    Peinados Fez

    Peinados Bandana

    Peinados Calabaza

    Peinados de Boxeo

    Peinados de Esgrima

    Peinados de Fútbol

    Peinados especiales

    Peinados de vestuario

    Peinados mosquetero

    Peinados camarera

    Peinados Salsa

    Peinados de Navidad de cada color

    Peinados reno

    Peinados Elfo. (Sólo mujeres, normal.)

    Peinados Pascua Negro

    Peinados Pascua Azul

    Peinados Pascua Verde

    Peinados Pascua Rosa

    Etc..

     

    Descargar:

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

     

    Creditos:

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

  17. Pruebalo asi deberia funcionar

    Fallos te a faltado algun end y habia un state mal colocado

     

    quest elegir_mascota begin
       state start begin
           when login begin
               set_state(information)
           end
       end
    
       state information begin
           when letter begin
               local v = find_npc_by_vnum(20355)
               if v != 0 then
                   target.vid("__TARGET__", v, "Habla con el Npc 20355")
               end
               send_letter("Regalo de Bienvenida")
           end
    
           when button or info begin
               say_title("Regalo de Bienvenida")
               say("El Capitan te quiere dar la bienvenida,")
               say("ve a hablar con el.")
           end
    
           when 20355.chat."Bienvenido a Metin2Neocon" begin
               say_title("Bienvenido a Metin2Neocon")
               say("Como regalo de bienvenida te queremos")
               say("dar una mascota que te seguira")
               say("allá donde vayas, ayudandote en todo")
               say("Las mascotas son estas:")
               say_title("Mini Azrael")
               say_title("León")
               say_title("Tigre")
               say_title("Cerdito")
               say_title("Perro")
               say_reward("Ven a hablar conmigo cuando tengas")
               say_reward("la mascota que deseas.")
               set_state(eleccion)
           end
       end
    
       state eleccion begin
           when 20355.chat."Ya lo tengo decidido!" begin
               local regalo = select("Azrael","León","Tigre","Cerdito","Perro")
               if regalo == 1 then
                   pc.give_item(50621, 1)
                   set_state(terminado)
               elseif regalo == 2 then
                   pc.give_item(50621, 1)
                   set_state(terminado)
               elseif regalo == 3 then
                   pc.give_item(50621, 1)
                   set_state(terminado)
               elseif regalo == 4 then
                   pc.give_item(50621, 1)
                   set_state(terminado)
               elseif regalo == 5 then
                   pc.give_item(50621, 1)
                   set_state(terminado)
               end
           end
       end
    
       state terminado begin
       end
    end
    
    

  18. Información:

    Ve al Guardián de la Ciudad y luego ve al Guardián que está en e l centro de la plaza, él le Pide que Valla a la Tienda General Para comprarle unas
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    . Luego de regresar al Guardián para entregar las Pociones Rojas(P).

    quest find_squareguard begin
    	state start begin
    	end
    
    	state run begin
    			when login with pc.level<=5 begin
    					set_state(find)
    			end
    	end
    	state find begin
    			when letter begin
    					local find_npc_vnum = 0
    					if pc.get_empire()==1 then
    							find_npc_vnum = 11000
    					elseif pc.get_empire()==2 then
    							find_npc_vnum = 11002
    					elseif pc.get_empire()==3 then
    							find_npc_vnum = 11004
    					end
    
    					local v=find_npc_by_vnum(find_npc_vnum)
    					if 0==v then
    					else
    							target.vid("__TARGET__1", v, "El Guardián")
    					end
    			end
    			when letter begin
    					send_letter("El guardián")
    			end
    			when button or info begin
    					say_title("Información:")
    					say("Ve a la aldea y habla con el Guardián. él te")
    					say("asignará tu primera misión. él se encuentra en el")
    					say("centro de la aldea.")
    			end
    			when __TARGET__1.target.click begin
    					target.delete("__TARGET__1")
    					say_title("Guardián:")
    					say("¡Bievenido a nuestra aldea aventurero! Espero")
    					say("que pueda llevar a cabo una tarea para mí. Si te")
    					say("doy 200 yang. ¿Puedes ir al almacén general y")
    					say("comprar una pocion roja para mí?")
    					say("Desafortunadamente, debo permanecer aquí, Usa tu")
    					say("mini mapa para localizar el almacén general,")
    					say("usando el punto rojo que parpadea.")
    					local b=select("Bien")
    					if 1==b then
    							say_title("Información:")
    							say_reward("Has recibido 200 yang del guardián. Ve al almacén")
    							say_reward("general y compra una pocion roja. Puedes usar el")
    							say_reward("yang para comprar objetos y servicios de varios")
    							say_reward("aldeanos.")
    							pc.changemoney(200)
    							set_state(buy)
    					elseif 2==b then
    					else
    							say("UNBEKANNTE TASTE ["..b.."]")
    					end
    			end
    	end
    	state buy begin
    			when letter begin
    					send_letter("Compra una poción roja")
    
    					local v=find_npc_by_vnum(9003)
    					if 0==v then
    					else
    							target.vid("__TARGET__", v, "")
    					end
    
    			end
    			when button or info begin
    					say_title("Información:")
    					say("Compra una poción roja en el almacén general y")
    					say("vuelve con el guardián.")
    			end
    			when 11000.chat."¿Dónde puedo comprar una poción roja?" or
    					11002.chat."¿Dónde puedo comprar una poción roja?" or
    					11004.chat."¿Dónde puedo comprar una poción roja?" begin
    					say_title("El guardián:")
    					say("Puedes adquirir la Poción Roja de la Vendedora de")
    					say("la Tienda General. Ella está allí. Si no la")
    			   	 say("puedes ver, dirígete hacia el círculo")
    					say("intermitente en el mapa grande o hacia el punto")
    					say("rojo intermitente en el mini mapa.")
    			end
    			when __TARGET__.target.click  begin
    					target.delete("__TARGET__")
    					say_title("Vendedora del almacén general:")
    					say("¡Bievenido, aventurero!")
    	   			 say("Oh, ¿así que te envía el guardián? ¿Necesita una")
    	   			 say("Poción Roja? Te daré cinco.")
    					say("Toma, aquí la tienes. Sirven para regenerar la")
    	   			 say("vitalidad y además saben bien.")
    					wait()
    					say_title("Vendedora del almacén general:")
    					say("Puede que seas nuevo, pero estoy segura que")
    					say("pronto serás un cliente habitual. Por eso te doy")
    					say("gratis estas pociones. Por favor, vuelve otra")
    					say("vez.")
    					wait()
    					say_title("Información:")
    					say_reward("Has recibido 5 pociones rojas del almacén")
    					say_reward("general.")
    					say_reward("Las pociones rojas sirven para regenerar los")
    					say_reward("puntos de salud (HP).")
    					pc.give_item2(27001,5)
    					setstate(deliver)
    			end
    	end
    	state deliver begin
    			when letter begin
    					local find_npc_vnum = 0
    					if pc.get_empire()==1 then
    							find_npc_vnum = 11000
    					elseif pc.get_empire()==2 then
    							find_npc_vnum = 11002
    					elseif pc.get_empire()==3 then
    							find_npc_vnum = 11004
    					end
    
    					local v=find_npc_by_vnum(find_npc_vnum)
    					if 0==v then
    					else
    							target.vid("__TARGET__", v, "")
    					end
    			end
    			when letter begin
    					send_letter("Vuelve con el guardián")
    			end
    			when button or info begin
    					say_title("Información:")
    					say("Vuelve con el guardián y dale su poción.")
    			end
    			when __TARGET__.target.click with pc.countitem("27001")<1 begin
    					target.delete("__TARGET__")
    					say_title("Guardián:")
    					----"12345678901234567890123456789012345678901234567890"|
    					say("¡Gracias por traer la poción! Bien, ahora estoy")
    					say("mejor preparado para realizar mi función en la")
    					say("aldea.")
    					say("¿Quieres saber cuál es mi función? No soy solo el")
    					say("guardián de la aldea, también una valiosa fuente")
    					say("de información. Anuncio información útil que todo")
    					say("el mundo tiene que leer. También ofrezco mi ayuda")
    					say("y protección a aquellos que la necesitan. Y soy")
    					say("el responsable de los asuntos del gremio. Si,")
    					say("algún día, estás interesado en fundar tu propio")
    					say("gremio, ven conmigo.")
    					clear_letter()
    					set_state(__COMPLETE__)
    			end
    			when __TARGET__.target.click with pc.countitem("27001")>=1 begin
    					target.delete("__TARGET__")
    					say_title("Guardian:")
    					say("Por cierto, los intructores han preguntado por!")
    					say("tí. Les gustaría conocerte.")
    					say("Oh, ¡casi lo olvido! Como muestra de mi aprecio,")
    					say("puedes quedarte el cambio de la poción. Nos vemos.")
    					if pc.countitem("27001")>=1 then
    							pc.removeitem("27001", 1)
    							local r=number(1, 3)
    							if r==1 then
    									pc.give_item2("14000", 1)
    							elseif r==2 then
    									pc.give_item2("16000", 1)
    							elseif r==3 then
    									pc.give_item2("17000", 1)
    							end
    					end
    					clear_letter()
    					set_state(__COMPLETE__)
    			end
    	end
    	state __COMPLETE__ begin
    	end
    end
    

×
×
  • Crear nuevo...