• Content count

  • Joined

  • Last visited

Everything posted by Shogun

  1. Since a new Ymir pack came out and there is no appropiate forum for this I open this thread so we can post the newest releases from our dear Ymir.
  2. You can post your favourite websites for design resources here. Textures CGTextures I will start with a great site for realistic textures which is CGTextures ( which contains thousands of different surfaces and decals in very high resolutions, exhaustively sorted by categories. The textures up to 700x700 are free, for higher sizes you have to pay a small subscription free. Probably the biggest resource for seamless textures in the internet. Tools Paint.NET A great tool for simple image editing tasks. It's free and there are hundreds of plugins available for extending its features. Texture Maker 3 Advanced texture creation and editing tool. I found the Resampler tool in this program most useful for Metin2 textures as this allows you to convert a highly detailed texture into a less detailed ("zoomed out") texture. For example you can take a single flower texture with grass background and resample it into a full field of flowers. Download: UI Elements UICloud - UI Elements
  3. This thread is intended for requests of files which are not published in this forum already, with the exception of the official packs which have their own thread. Make sure you have used the search function before making your request and do not post your request twice.
  4. Hi guys, Today I'm going to show you something very simple and effective that not many people do. By default, Metin2 graphics are like this. Notice the blurriness increasing as you move the camera position down: Close the game and open your graphics card control panel and in 3D Settings choose Anisotropic Filtering and 16x or whatever your card admits as maximum. You can lower it later if you suffer slow down: Blurriness is gone!
  5. Today I release two small quests made by me a long time ago. Goddess Doll The first is an anti-experience ring that prevents you from gaining exp from mobs when used. Using it again disables the effect. Be aware that the quest substracts the gained exp after it has been received so if the exp from a mob is enough to reach the next level, you will level up! quest exp_curse begin state start begin when 70210.use begin pc.setqf("lastexp",pc.get_exp()) syschat("You are under the curse of the goddess. You will gain no experience.") set_state(use) end end state use begin when 70210.use begin syschat("You lifted the curse of the goddess. You gain experience again.") set_state(start) end when login begin syschat("You are currently under the curse of the goddess and gain no experience.") end when kill or party_kill begin local current = pc.get_exp() local doll = pc.count_item(70210) if doll == 0 then syschat("The curse of the Goddess has lifted. You will gain Experience again.") set_state(start) end if current < pc.getqf("lastexp") then pc.setqf("lastexp",current) end if not npc.is_pc() then local dif = pc.get_exp()-pc.getqf("lastexp") pc.give_exp2(-dif) end end end end Voodoo Armband The Voodoo Armband is a fun item which lets you convert players into an ugly creature for a few minutes. quest polyplayer begin state start begin when 70111.use begin local start_count = pc.count_item(item.get_vnum()) -- to prevent usage of bugs only say_title("Voodoo Armband:") say("") say("Enter the name of the player you want to curse:") say("") local name = input() local vid = find_pc_by_name(name) if name == "" then return elseif name == pc.get_name() then say_title("Ring of Curse:") say("") say("You can not curse yourself.") say("") return elseif vid == 0 then say_title("Ring of Curse:") say("") say("This player is not online or does not exist.") say("") return elseif not pc.is_near_vid(vid, 50) then say_title("Ring of Curse:") say("") say("The player is too far away.") say("") return end if pc.count_item(item.get_vnum()) != start_count then return end local myvid = vnums = {2101, 20016, 20002, 11000, 5001, 992, 1301, 1303, 2191, 5161, 5162, 5163} i = number(1,12) pc.polymorph(vnums[i], 5*60) syschat("You have been cursed.") local victim = pc.get_name() say_title("Voodoo Armband:") say("") say("The player "..victim.." is now cursed for 5 minutes.") say("") item.remove() end end end These items should be normally present in your client yet unused. If anybody needs I can post the item_proto entries etc.
  6. Today I bring you another exclusive release from Tim. This time is the granny.dll compatible with Granny 2.8 models and new binaries. Included for completeness is the already public granny DLL for the old binaries, and the bulkconverter.exe tool. What can I do with this? You can use granny models from any Granny version up to 2.8 in your client. How do I use this? Just replace the original dll in your client. Please note, it only works on original, packed client binaries. A tool (bulkconverter.exe) is provided so you can easily convert your current models to 2.8 for best performance. Usage: bulkconverter foldername Will convert all the gr2 files found inside foldername to v2.8 Granny format. Regards
  7. In this forum you can find some of the biggest experts in Metin2 around the world. However, they don't work for you, so please be patient and don't bump your threads for an answer. They also didn't become experts by being spoonfed answers, so spend your time investigating your problem before asking others to do it. If you need extensive help, such as a quest written to your specs, you can find trustable paid services in the Services forum. State your problem as clearly as possible, include all related logs and error messages, and make sure you have searched in the forum and/or Google for an answer before opening a post.
  8. Hi guys, Since people are asking for a 34k client I have decided to release the World of Metin2 beta client from early last year. Many people have contributed to this release, namely the whole WoM team which as you may know is pretty big, but particularly Tim who created most of the scripts and the compiling stuff. Contents The package includes: bin folder: this is where you actually run the client. The client includes tim's granny 2.8 DLL and a .mix file that allows attacking on mounts made by Paylasici (DynamicPatcher.mix). Warning: metin2.bin may be identified by your antivirus as a threat. It's just packed with Themida. Why packed? because otherwise Tim's dll doesn't work. You will need to create the epk files first. A patch maker/uploader script is also included in this folder. data folder: the contents of the Eterpack archives, unpacked. Includes batch files to create the packs, an automatic XML generator (, configurable through make_xml.xml) and root/uiscript/locale pyc compiler. The data folders contain every official file (costumes pets etc) up to March 2013, and a few of our own. tools: includes FileArchiver, Tim's lz, and python22 (used by the compiling scripts). launcher: includes everything necessary to create your own official launcher Installation Unpack wherever you want Install Python2.7(if you don't have it already) and add your Python27 installation folder to the System Path Add the tools folder to the System Path Usage Edit the client to your liking and then run the appropiate make_*.bat file to compile the pack into the bin/pack folder. When done, make a copy of metin2.bin called metin2client.exe so you can test the client locally. Patch maker There is an official patch maker included under bin/ configurable through Patch_config.txt, it will read an online crclist and a list of files / archives and create a zip file containing the updated archives (lz'ed) and the updated crclist. Syntax [-f filename] [-a packname] [-p patch (see PatchConfig.txt)] Example python -f pack/Index -a root -a uiscript -p patch_test Then you just need to upload this zip file to your patch root and unzip it. Regards World of Metin2 Client for - Base.7z 95.9 MB!WhpiVDBI!ipa7YoFKoo5Qnft7calTquWczM_WCScnyC3VQctUhNk World of Metin2 Client for - Extra.7z 486.2 MB!nhAV3RjY!e8ACrA-IwgwNk49vBAMBqa0ULf2tOZl5v8vcdLEpYZU
  9. Dear community, Today I'd like to introduce a new toplist designed with the needs of the Metin2 server owners in mind: was created by a group of members of some of the biggest private servers and independent programmers and features an easily configurable language filter which lets you select up to 3 languages. English and your local language (if available) will be selected by default based on your IP geographical location. Another important feature which sets us appart from established contenders is Nocaptcha, the revolutionary recaptcha replacement which simplifies voting to the maximum. The ranked servers' websites are checked periodically to verify they are actually online (no more clicking on offline servers!). And last but not least, expert SEO techniques to drive the maximum traffic to your server. Of course, also features a Vote4Coins API and active admins who analyze the vote traffic to prevent abuse. But unlike other toplist projects which failed to make an impact in recent years, puts traffic first: Of course, the project counts also with admins which will control the vote flow to prevent abusing and answer any questions you have. Whether you have an upcoming project or an already established server, topmetin can help you gain new users. Sign up, set up a vote button or integrate our API: the choice is yours and all of them will increase your server's exposure. Schedule 19th February: advertised for the spanish community in metin2zone 27th Februray: advertised to the international community in metin2dev 1st March: advertised to the romanian community in freakplay 2nd March: advertised to the romanian community in just4metin Coming up: advertisement to the german, italian, polish community. Other countries will follow as we plan to support a good number of languages. There is no plan to monetize the toplist at the moment. Therefore there are no ads or premium accounts of any kind.
  10. My latest ripped texture packs from TES: Oblivion. 512x512 size and ready to use in DDS format. Download!d9hSELhT!30GtvVtMXv_epkgXLSmD_TZFAgU6mU-oPOdaW-tksRs
  11. Hi everyone, I am starting soon a new hosting business with a couple of friends called Eterhost. Our idea is to sell ddos protected, managed vps for game servers and particularly Metin2 at an affordable price for The basic plan will offer: 1 core (AMD Opteron 4386) 4 GB RAM 150 GB Local Storage 20 GB Backup Storage 1 Gbps Bandwidth (Shared) VAC Pro DOS protection 2 IP addresses We can add to the features support which is familiar with both FreeBSD and Metin2. To get a better picture of the potential customers, I would like to ask you the following questions. I would appreciate if you spend a minute to answer them Are you considering changing your hosting provider at the moment? How much would you pay for such a system? Which payment methods do you prefer? Would you like to see any additional services offered? (Patch server for example) Thank you in advance!
  12. Today I have some more goodies for mappers / modellers Speedtree is the software used by Metin2 to render trees and other kinds of vegetation. Many games such as Oblivion, Ragnarok 2, Gran Theft Auto IV... use Speedtree 4, while Metin2 uses the older Speedtree 3. It's possible to import Speedtree 4 models for Metin2 by loading and saving them with SpeedtreeCAD 3. A pic of the tool: In this pack you can find Speedtree CAD Lite 3 and Speedtree CAD 4 and their respective plugins for 3DSMAX. CAD Plugins
  13. Hey all, Today I will explain to you how to use different designs for your quest scrolls like WoM. Setting up the system 1) Copy your scroll designs to ui/game/quest/questicon in the client. I have attached the WoM scrolls as example. 2) Open and insert the code that appears between comments: if questCount > quest.QUEST_MAX_NUM: self.questScrollBar.Show() else: self.questScrollBar.Hide() for i in questRange[:questCount]: (questName, questIcon, questCounterName, questCounterValue) = quest.GetQuestData(self.questShowingStartIndex+i) # start colored scrolls if questName[0] == '*': questName = questName[1:] elif questName[0] == '&': questName = questName[1:] elif questName[0] == '~': questName = questName[1:] elif questName[0] == '+': questName = questName[1:] # end colored scrolls self.questNameList[i].SetText(questName) self.questNameList[i].Show() self.questLastCountList[i].Show() self.questLastTimeList[i].Show()3) Open Replace this part: if locale.IsEUROPE(): btn.SetUpVisual(locale.GetLetterCloseImageName()) btn.SetOverVisual(locale.GetLetterOpenImageName()) btn.SetDownVisual(locale.GetLetterOpenImageName()) else: btn.SetUpVisual(buttonImageFileName) btn.SetOverVisual(buttonImageFileName) btn.SetDownVisual(buttonImageFileName) btn.Flash() # END_OF_QUEST_LETTER_IMAGE with this: if locale.IsSINGAPORE() or locale.IsEUROPE(): if name[0] == '*': btn.SetUpVisual("d:/ymir work/ui/game/quest/questicon/scroll_close_blue.tga") btn.SetOverVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_blue.tga") btn.SetDownVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_blue.tga") name = name[1:] elif name[0] == '~': btn.SetUpVisual("d:/ymir work/ui/game/quest/questicon/scroll_close_golden.tga") btn.SetOverVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_golden.tga") btn.SetDownVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_golden.tga") name = name[1:] elif name[0] == '&': btn.SetUpVisual("d:/ymir work/ui/game/quest/questicon/scroll_close_green.tga") btn.SetOverVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_green.tga") btn.SetDownVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_green.tga") name = name[1:] elif name[0] == '+': btn.SetUpVisual("d:/ymir work/ui/game/quest/questicon/scroll_close_purple.tga") btn.SetOverVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_purple.tga") btn.SetDownVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_purple.tga") name = name[1:] else: btn.SetUpVisual(locale.GetLetterCloseImageName()) btn.SetOverVisual(locale.GetLetterOpenImageName()) btn.SetDownVisual(locale.GetLetterOpenImageName()) else: btn.SetUpVisual(buttonImageFileName) btn.SetOverVisual(buttonImageFileName) btn.SetDownVisual(buttonImageFileName) btn.Flash() # END_OF_QUEST_LETTER_IMAGEUsage After you modified your client, there will be 4 color codes that you can use at the start of your quest's title to enable the colored scroll: Blue (*), Golden (~), Green (&) and Purple (+). You also have to add the q.set_icon function containing the filename of the scroll picture. Here is an example of how to make a quest scroll blue: when login with game.get_event_flag("worldbookday") == 1 begin send_letter("*World Book Day") q.set_icon("scroll_open_blue.tga") local v=find_npc_by_vnum(20023) if v!=0 then target.vid("__TARGET__", v, "Soon") end endAnd it looks like this: That's all you can also add new codes easily or use your own quest scroll designs. Enjoy!
  14. For those who are looking for a 2089 client:!TtB2EaCa!Oo3_sS4KQdo6vfAhqVqbvP6MLGUCmSfuKjGenWx_cqA Enjoy.
  15. The World of Metin2 Monarch System is composed of two parts. For the system to work fully you need to use db core 33820 or a compiled db where this bug is solved (look dif part at the end. If anybody wants to create difs for other revisions, you are welcome to do so.) Monarch Election Authors: Musicinstructor and me (Shogun) Usage: the election has 3 stages: Candidacy, Election and Crowning. All the stages can be started sucessively from the Archer Guardian NPC in town. - During Candidacy phase, all players over level 65 can apply for election by paying some Yang. Up to 8 players can apply per kingdom. - During Election phase, players will drop an item called Certificate of Loyalty (60004) which allows them to cast a vote. - Finally, you can finish the election, which will announce the winners automatically. The new King / Queen will receive a new Hwang Armor on login and the Angel's Blessing item. For the quest to work you need the following preparation: 1) Create an empty file share/data/monarch_election in your server with the touch command. 2) Fill the table player.monarch with some random values (use the PID of your GM for example). You can also use this table: DROP TABLE IF EXISTS `monarch`; CREATE TABLE `monarch` ( `empire` int(10) unsigned NOT NULL DEFAULT '0', `pid` int(10) unsigned DEFAULT NULL, `windate` datetime DEFAULT NULL, `money` bigint(20) unsigned DEFAULT NULL, PRIMARY KEY (`empire`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of monarch -- ---------------------------- INSERT INTO `monarch` VALUES ('1', '266', '2014-02-04 04:36:55', '0'); INSERT INTO `monarch` VALUES ('2', '188', '2013-11-07 20:10:00', '0'); INSERT INTO `monarch` VALUES ('3', '170', '2013-09-16 22:12:06', '0');3) Make sure 60004 exists in item proto and has a suitable icon for it. The quest Add this to locale.lua Add this also to questlib.lua Items for item_list.txt 60004 ETC icon/item/60002.tgaitem_proto.txt entries for the certificate, blessing and armors 60004 loyalty_certificate ITEM_UNIQUE UNIQUE_NONE 1 ANTI_GET | ANTI_DROP | ANTI_SELL | ANTI_SAVE | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX LOG NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 604800 0 1 0 0 0 0 0 0 70021 ±ºÁÖÀÇ ÁõÇ¥ ITEM_QUEST 0 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE 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 11971 Ȳ»óÀü°© ITEM_ARMOR ARMOR_BODY 2 ANTI_ASSASSIN | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP ITEM_TUNABLE WEAR_BODY NONE 0 0 0 0 0 LEVEL 50 LIMIT_NONE 0 APPLY_MOV_SPEED 10 APPLY_RESIST_MAGIC 20 APPLY_ATTBONUS_HUMAN 15 0 350 0 24 0 100 100 3 0 11972 ȲÀÇ ITEM_ARMOR ARMOR_BODY 2 ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_TUNABLE WEAR_BODY NONE 0 0 0 0 0 LEVEL 50 LIMIT_NONE 0 APPLY_MOV_SPEED 10 APPLY_RESIST_MAGIC 20 APPLY_ATTBONUS_HUMAN 15 0 350 0 24 0 100 100 3 0 11973 ÁøȲ»ó°© ITEM_ARMOR ARMOR_BODY 2 ANTI_MUSA | ANTI_ASSASSIN | ANTI_MUDANG | ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_TUNABLE WEAR_BODY NONE 0 0 0 0 0 LEVEL 50 LIMIT_NONE 0 APPLY_MOV_SPEED 10 APPLY_RESIST_MAGIC 20 APPLY_ATTBONUS_HUMAN 15 0 350 0 24 0 100 100 3 0 11974 Ȳ»óÀÇ ITEM_ARMOR ARMOR_BODY 2 ANTI_MUSA | ANTI_ASSASSIN | ANTI_SURA | ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_TUNABLE WEAR_BODY NONE 0 0 0 0 0 LEVEL 50 LIMIT_NONE 0 APPLY_MOV_SPEED 10 APPLY_RESIST_MAGIC 20 APPLY_ATTBONUS_HUMAN 15 0 350 0 24 0 100 100 3 0 Angel's Blessing Quest written by me and loosely based in the official quest used by Metin2 US. This is the item the Monarch can use to cast his powers, such as healing and attacking buffs which affect all the players from his kingdom in the same map; or summoning of different bosses and Guardians which only attack players from enemy kingdoms. It's an original YMIR item and the vnum is 70021. Instructions are included in the quest for the rookie kings/queens. Preparation: 1) Set MonarchHealGold event flag to an appropiate value (this is the cost of a monarch buff that heals everyone on the map) 2) Edit the list of bosses and their cost to your desires The quest: The function oh.takemonarchmoney() used in the angel's blessing quest is bugged on all official db cores. This is fixed in Vanilla Core 2.2+. For db 33820 here is a dif made by Paylasici: [UNSTRIPPED] db_r33820_32 000A30DD: 3B 20For db 40146 here's another dif made by PACIFICADOR db_r40146 000A5015: 3B 20 It is possible that something is missing in that case let me know here your answers are appreciated
  16. Hi all, there are many different hosters around the world so I think it would be a good idea if we share our experiences hosting our servers or websites with them. I will start with my own reviews: Softlayer: Best support, expensive, they respond to DMCA requests and null route for 4 h on attack. Leaseweb: Cheap, average support, they don't null route you if you are attacked but they have general host failures constantly. No FreeBSD-aware staff. Worldstream: Cheap and reliable hardware, decent support, they null route you for 24 hours in the event of an attack. Check out their specials for extremely cheap dedicated servers.
  17. This is my version of an official event from Metin2 Brazil known as "Guerra da Tocha" (Torch War) there: Requirements Game 407 or higher, the three Castle maps, and fire Signal NPCs. This is part of official client but I can upload it if someone needs it. Most of the stuff is actually done by the siege command, I just made it more user friendly for both player & GM. Best used with my Monarch System Instructions To start the event, talk to the guardian with the bow in town. One of the three kingdoms will become under siege and must defend the Fire Signals on their castle. Players from the defending kingdom can join their castle using the teleporter in town or the Transport Gates found in common maps. Players from other kingdoms can join only from Transport Gates. Once in the castle map you will find a number of beacons or Fire Signals which can be destroyed by the attacking kingdoms. Defenders should prevent this from happening. Fire Signals can drop valuable items (in the official version, 66 armors, 75 weapons and Treasure Chest boxes) If after 30 minutes there is any Fire Signal remaining, the defenders will be able to attack it as well. The event ends when there are no more Signals and the winner is the kingdom which manages to destroy more of them. A video from the event: -- Siege War quest -- (c) by Shogun 2013-2014 quest siege begin state start begin when login with game.get_event_flag("siege_war") > 0 begin send_letter("Siege War") end when letter begin if game.get_event_flag("siege_war") > 0 then local empire = pc.get_empire() send_letter("Siege War") if game.get_event_flag("siege_war") != 4 and pc.get_level() > 59 then local gate_vnum = 20096 + empire local v=find_npc_by_vnum(gate_vnum) if v != 0 then target.vid("__TARGET2__", v, mob_name(gate_vnum)) elseif game.get_event_flag("siege_war") == empire and (pc.get_map_index() < 181 or pc.get_map_index() > 183) then local w=find_npc_by_vnum(9012) if w != 0 then target.vid("__TARGET__", w, mob_name(9012)) end end end else set_state(start) end end when or"To the Castle! Quick" with game.get_event_flag("siege_war") == pc.get_empire() begin target.delete("__TARGET__") if pc.get_level() > 59 then local name, pid, date, money = mgmt.monarch_state(pc.get_empire()) ----"123456789012345678901234567890123456789012345678901234567890"| say_title("Teleporter:") say("") say("Our monarch "" has given instructions to take") say("every citizen of age to the Castle.") say("") say("Are you ready for the battle then?") say("") local main_set = select("Yes","No") if main_set == 2 then say_title("Teleporter:") say("") say("Then go pick up your weapons and hurry up.") say("") say(locale.empire_names[pc.get_empire()].." needs you.") say("") else local empire_castle = { {975200, 133000}, {977200, 185000}, {923900, 183600}, } pc.warp(empire_castle[pc.get_empire()][1], empire_castle[pc.get_empire()][2]) end else say_title("Teleporter:") say("") say("You are not strong enough for this battle.") say("") say("Come back when you reach level 60.") say("") end end when button or info begin addimage(20, 12, "siegewar.tga") say("") say("") say("") say_title("") if game.get_event_flag("siege_war") > 0 then if game.get_event_flag("siege_war") == 4 then ----"123456789012345678901234567890123456789012345678901234567890"| say("Hear me, "..locale.empire_names[pc.get_empire()].."s! One of the three castles") say("will soon fall under siege.") say("") say("When the time is ripe, the castle to be attacked will") say("be announced. Get your weapons ready!") elseif game.get_event_flag("siege_war") == pc.get_empire() then say(locale.empire_names[pc.get_empire()].."ns! Our castle is being attacked!") say("") say("Head to the Teleporter inmediately and help defend the Fire") say("Signals. After 30 minutes, we will be allowed to destroy") say("them ourselves. This is our only chance to win!") else say(locale.empire_names[pc.get_empire()].."s! Head inmediately to the "..locale.empire_names[game.get_event_flag("siege_war")].."n castle") say("and lay siege to it!") say("") say("You can access enemy castles from the Teleport Gates found") say("in every common map. Our objective is to destroy more Fire") say("Signals than our enemies.") end say("") say_reward("The winning kingdom will obtain a bonus.") say("") else say("Siege War has already ended.") say("") end end when"GM: Siege War" or"GM: Siege War" or"GM: Siege War" with pc.is_gm() begin say_title("Siege War:") say("") if game.get_event_flag("siege_war") == 4 then say("Currently the Siege War is being announced.") say("") say_reward("IMPORTANT: only start this event from ch99") say("") local s = select("Start Siege War","Exit this screen") if s == 1 then local kingdom = 1 local signals = 5 say_title("Siege War:") say("") say("Please select the number of beacons to spawn") say("") local s = select("Random","Select manually","Exit") if s == 1 then signals = number(5,10) elseif s == 2 then say_title("Siege War:") say("") say("Please enter a number from 5 to 10") say("") signals = input() if signals < 5 or signals > 10 then return end else return end say_title("Siege War:") say("") say("Please select which Castle will be the scenario") say("of the event.") say("") local s = select("Random","Select manually","Exit") if s == 1 then kingdom = number(1,3) elseif s == 2 then say_title("Siege War:") say("") say("Please select the kingdom") say("") kingdom = select("Shinsoo","Chunjo","Jinno","Exit") if kingdom == 4 then return end else return end command("siege "..kingdom.." "..signals) game.set_event_flag("siege_war",kingdom) end elseif game.get_event_flag("siege_war") > 0 then say("Currently "..locale.empire_names[pc.get_empire()].." is under siege.") say("") local s = select("Abort event","Remove scroll","Exit this screen") if s == 1 then syschat("Siege War has finished.") command("siege") game.set_event_flag("siege_war",0) elseif s == 2 then game.set_event_flag("siege_war",0) end else say("Siege War is not active at the moment.") say("") local s = select("Start Announcing","Exit this screen") if s == 1 then game.set_event_flag("siege_war",4) say_title("Siege War:") say("") say("Announce scroll for Siege War is now ON") say("") end end end -- w end --s end --q
  18. Here are the event flags available up to Ymir's game 34083. Usage: /e eventflag value mob_dam [value] Set mobs damage (default 100) mob_gold, mob_gold_buyer [value] Set gold drop rate for free and premium* user (default 100) mob_gold_pct, mob_gold_pct_buyer [value] Set yang bomb drop rate for free and premium* user (default 100) mob_exp, mob_exp_buyer [value] Set experience rate for free and premium* user (default 100) mob_item, mob_item_buyer [value] Set item drop rate for free and premium* user arena_potion_limit [bool] Enable limit of potions that you can use in Musician's Yu-Hwan duel arena (thanks to TÜRK) arena_potion_limit_count [value] Number of potions that can be used if arena_potion_limit is true (thanks to TÜRK) eclipse [bool] Enable and disable night mode. gold_drop_limit_time [sec] Time in seconds before Yang can be dropped again (anti drop bot measure) guild_disband_delay [bool] Set a 24 hours waiting time after a guild is disbanded, for the members to join another guild. (Default: 1) (thanks to pedr0caz) guild_withdraw_delay [bool] Set a 24 hours waiting time after being kicked from a guild, for the player to join another guild. (Default: 1) (thanks to pedr0caz) hivalue_item_sell [bool] Value 1 enables sale of Blessing Marble and Perpetual Iron in shops. MonarchHealGold [yang] Amount of kingdom Yang required to cast Monarch Heal buff. personal_shop [tax %] Place a tax on private shop sales. The Yang goes to the Kingdom vault. 2006_drop [drop rate 1/x] Enable drop of Chinese New Year 2006 - Hexagonal Box (vnum 50037) 2007_drop [drop rate 1/x] Enable drop of Chinese New Year 2007 - Hexagonal Box (vnum 50043) dragon_boat_festival_drop [?] Enable drop of 50085 drop_moon [bool] Enable drop of moonlight boxes. Drop rate can NOT be changed! easter_drop [?] Enable/set drop of item 50160 to 50179 - Easter Egg (Thanks to miguelmig) football_drop [?] Enable/set drop of 50096 - Football Ball (World Cup GF event) (thanks to miguelmig) halloween_drop [?] Enable/set drop of 50095 - Pumpkin (thanks to miguelmig) hc_drop [drop rate 1/x] Drop rate of item 30178 - Gameforge event for the opening of Grotto of Exile (thanks to miguelmig) horse_skill_book_drop [drop rate 1/x] Set drop rate of Horse Skill books. kids_day_drop [drop rate 1/x] Drop rate of Puzzle box (50034) for low level players. kids_day_drop_high [drop rate 1/x] Drop rate of Puzzle Box (50034) for high level players. lotto_drop [drop rate 1/x] Enables drop of Lottery Tickets with unique numbers. The dropped ticket numbers can be found in player.lotto_list table for further processing. lotto_round [value] Choose a number to mark the lottery tickets with. This is useful if you want to run different Lottery events and make sure a ticket is not used twice. mars_drop [drop rate 1/x] Enable global drop of Perpetual Iron. newyear_fire [?] Enable drop of Chinese Fire Crackers (Chinese New Year event) newyear_mob [bool] Randomly spawns Hae-Tae in City 2 (Chinese New Year event) newyear_moon [?] Moon Paste event, enables drop of vnums 50016~50017~50018~50019 (Chinese New Year event) new_xmas_event [bool] Spawns the new christmas tree design in town. ramadan_drop [drop rate 1/x] Enable drop of bread (30315) for Gameforge Ramadan event. three_skill_item [drop rate 1/x] Set drop rate of Soulstones (from metins and bosses only) threeway_war_boss_count [value] Number of Elite Nine Tails that will be summoned for the winning Kingdom in Nation War. threeway_war_pass_idx [mapidx] Map index of Nation War pass map. This is filled automatically with a random map from the list in share/locale/whatever/forkedmapindex.txt; do not edit this event flag but change the txt file instead. threeway_war_sungzi_idx [mapidx] Map index of Nation War Sungzi map. This is filled automatically with a random map from the list in share/locale/whatever/forkedmapindex.txt; do not edit this event flag but change the txt file instead. valentine_drop [bool?] Enable drop of Chocolate and Roses whiteday_drop [?] Enable drop of items 50031 - 50032 xmas_boom [bool] Enable night mode, firework sound, and Event Helper (NPC selling fireworks) xmas_snow [bool] Enable snow. xmas_sock [drop rate 1/x] Enable drop of Christmas socks. xmas_song [bool] Play Christmas song everywhere. xmas_tree [0-3] Enable the original Christmas Tree NPC. 3 models available (1,2,3) * a premium user has an active exp/yang/drop bonus set through the account table (for noobs: the blue squares in the top left corner of the client) Note: "bool" means that it only accepts "false" (0) or "true" (any other number) as parameters. Yet unknown: fish_miss_pct gold_trade_cycle gold_trade_enable indepence_day japan_regen medal_part_drop user_dam user_dam_buyer crcdisconnect pre_event_hc refine_box guild_invite_limit refine_box_drop refine_box_low refine_box_mid refine_box_high drop_char_stone drop_char_stone.level_range dropevent.drop_char_stone drop_char_stone.percent_lv01_10 drop_char_stone.percent_lv11_30 drop_char_stone.percent_lv31_MX independence_day spawn_block_log threeway_war_choice threeway_war_kill_count threeway_war_dead_count xmas_santa guild_invite_limit manwoo fishevent poly update_refine_time If anybody knows their effect, or other event flags not listed here, please post and I will add it here
  19. Since I noticed that most people don´t know it's possible to make your client and game unusable for others, here is a little explanation. I have also written a tool to help your create a new sequence table. The new sequence table is random and a sequences.bin file will be generated that you can use to patch your client and game binary later on. Technical blabber The client sends with each packet a byte from the table and checks that the response matches. When it doesn't, a SEQUENCE error will appear, a very known issue. For this reason, it's important that you patch both your client and server binaries! Download SequencePatcher.7z password: yolopvp Disclaimer This post and the tool are written by Tyrar @ epvp. I just translated it into english, except the more technical stuff where my knowledge of german isn't enough. For the original thread, refer to:
  20. File Name: FileArchiver File Submitter: Shogun File Submitted: 03 Feb 2014 File Category: Tools I am proud to release exclusively for metin2dev -with the blessing from its author Tim Niederhausen- the latest version of the original FileArchiver command line tool, which is now divided into two Windows executables: FileArchiver_Eterpack (r3869) This command line tool can pack and unpack EterPack (epk) files. Types 0, 1, 2 and 3 are supported for the packing function. Parameters are configured through xml files: FileArchiver_Eterpack.exe rootpack.xml Optionally you can drag and drop the xml file over FileArchiver_Eterpack.exe in Windows Vista and higher. Unpacking Example XML: unpack root.epk to the folder root_unpacked. ArchivePath is the path to the packed file (without extension) and OutputPath is the folder where files should be written. <ScriptFile> <ExtractEterPack ArchivePath="root" OutputPath="root_unpacked/" CreateXml="No" /> </ScriptFile> Example XML: unpack a series of epk files, creating a xml file that we can use to pack them back later with FA. CreateXml and XmlPath elements are self explanatory here. <ScriptFile> <ExtractEterPack ArchivePath="yt2/pack/uiloading" OutputPath="yt2_unpacked/" CreateXml="Yes" XmlPath="uiloading_pack.xml" /> <ExtractEterPack ArchivePath="yt2/pack/etc" OutputPath="yt2_unpacked/" CreateXml="Yes" XmlPath="etc_pack.xml" /> <ExtractEterPack ArchivePath="yt2/pack/uiscript" OutputPath="yt2_unpacked/" CreateXml="Yes" XmlPath="uiscript_pack.xml" /> </ScriptFile> Packing Example XML: Create uiloading.epk with Type 2 (LZO packed and XTEA key); note how ArchivePath is the path to write the packed file, ArchivedPath is the absolute path of each file in the Metin2 virtual filesystem, while CDATA is the actual location of the file in our PC (relative or absolute) <ScriptFile> <CreateEterPack ArchivePath="../bin/pack/uiloading"> <File ArchivedPath="d:/ymir work/uiloading/loading0.jpg" Type="2"><![CDATA[uiloading/loading0.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading1.jpg" Type="2"><![CDATA[uiloading/loading1.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading2.jpg" Type="2"><![CDATA[uiloading/loading2.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading3.jpg" Type="2"><![CDATA[uiloading/loading3.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading4.jpg" Type="2"><![CDATA[uiloading/loading4.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading5.jpg" Type="2"><![CDATA[uiloading/loading5.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading6.jpg" Type="2"><![CDATA[uiloading/loading6.jpg]]></File> <File ArchivedPath="d:/ymir work/uiloading/loading7.jpg" Type="2"><![CDATA[uiloading/loading7.jpg]]></File> </CreateEterPack> </ScriptFile> Example XML: Create a Type 3 (Panama) file. IvPath contains the path to a 32 byte file that will be used as key. Obviously, you should not share this file. This encryption requires a server part which is explained below. <ScriptFile> <CreateEterPack ArchivePath="../bin/pack/metin2_mypatch" IvPath="iv/mypatch.iv"> <File ArchivedPath="d:/ymir work/pc/assassin/assassin_5_1.gr2" Type="3"><![CDATA[pc/assassin/assassin_5_1.gr2]]></File> <File ArchivedPath="d:/ymir work/pc/assassin/" Type="3"><![CDATA[pc/assassin/]]></File> <File ArchivedPath="d:/ymir work/pc/assassin/assassin_5_1_lod_01.gr2" Type="3"><![CDATA[pc/assassin/assassin_5_1_lod_01.gr2]]></File> <File ArchivedPath="d:/ymir work/pc/assassin/assassin_5_1_lod_02.gr2" Type="3"><![CDATA[pc/assassin/assassin_5_1_lod_02.gr2]]></File> <File ArchivedPath="d:/ymir work/pc/assassin/assassin_5_1_lod_03.gr2" Type="3"><![CDATA[pc/assassin/assassin_5_1_lod_03.gr2]]></File> </CreateEterPack> </ScriptFile> Panama encryption: serverside setup Once you have your Panama encrypted packs, you need to upload the keys to auth/panama along with a text file called panama.lst containing a list of files to be decrypted with their respective key file, separated by tabs. Example panama.lst file: pack/mypatch mypatch.iv pack/terrainmaps terrainmaps.iv pack/tree tree.iv Caveats: you can not encrypt the root with panama. Also, if a pack encrypted with panama contains armors or hairstyles, these may not appear in the character selection screen. FileArchiver_Proto (r2806) This tool also takes an xml file as parameter and is intended to read and write clientside item_proto and mob_proto files. Example XML: Read a clientside, packed item_proto and write it to to a xml file <ScriptFile> <ReadItemProto ItemProtoPath="item_proto" OutputPath="item_proto.xml" /> </ScriptFile> Example XML: Write back, once edited, our XML file as a packed item_proto file. <ScriptFile> <WriteItemProto ItemProtoPath="item_proto" InputPath="item_proto.xml" /> </ScriptFile> Now for the mob_proto (Only use the Proto archiver for this one!!!): To extract it from the client use this XML <ScriptFile> <mob_proto_extract path="mob_proto" output="mob_proto.xml" /> </ScriptFile> To pack it back use this one: <ScriptFile> <mob_proto_create path="mob_proto.xml" output="mob_proto_edited" /> </ScriptFile> For questions and comments, you can post in this same thread. Click here to download this file
  21. Hi community, Since we have a new presentation now, we decided to release the PSD (Photoshop Data file) of our old one made by the former WoM2 Game Designer, ZuLee. Here's how it looks: Download:!kcdHjLZA!_Vr1R49s5SEy4TqjUi61n1szav9cw4DYgvGE_1T1TlE Enjoy!
  22. Hi guys, I thought it would be a good idea to take some surveys about the current trends in metin2 servers and I will start today asking about the game core you are using for your local or dedicated server If you choose one not listed here you can tell us in the thread which one and why. For those who don't know their game version it's very easy to find out. Just navigate to where your game file is located in the server and run this command: cat VERSION.txt
  23. To get the ball rolling on this forum, here is a real oldschool release, the original Metin2 client for the chinese Beta in 2004. download:!IkZzDYhS!KXsSgEExVlcUzPF7bU03U7xrlXH1VPUMpGszXW1EJok
  24. If I recall correctly there is an infected binary in the archive uploaded by Kraizy... packmaker if I'm not mistaken.But that's all.
  25. I can't imagine a professional game developer implementing backdoors on the code, and it's definately not Ymir's style. The only protection against unauthorized use of the files that Ymir implemented is the expiration date.