Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/25/15 in all areas

  1. M2 Download Center Download Here ( Internal ) Hellow, I want to share my work, I've created 2 year ago, for my old server (Resthea). So, what is it exacly? It's python libraries and code that allow us to have many environment (clouds, light settings, flare and so on) on one map. By default, you can have only one environment for each map. How does it work? Well, once every 30 seconds (you can configure that time) checks our coordinates and compare it to jpg file, which size is the same as map size. Diffrent colors mean diffrent msenv file. What this pack contains? possibility to add up to 16777215 areas with diffrent environment on every map. possibility to add diffrent music on these areas possibility to add random snow on these areas 28 ready skyboxes possibility to choose skyboxes quality possibility to configure the time script refreshes possibility to add special xmas configuration easy configuration via text file code is easy to modify bugfix for night and snow systems Disadvantages: not so optimal solution .jpg format has indirect coloring between two colors, which sometimes could lead to problems xmas song probably doesn't work (I haven't got time to fix it) lots of redundant libraries, because i've uploaded whole Lib folder descriptions how to add this are in polish, you can use google translate , if you wish i can translate it too. Code sample: def __SpecialEnvironmentEnable(self, Env, Resthea, SnowEnable, NightEnable, ConfigTime, ConfigSkybox, XmasEvent): ### START OF ENVIRONMENT MODULE Resthea.eu, qentinios self.Env = Env self.Resthea = Resthea self.SnowEnable = SnowEnable self.NightEnable = NightEnable self.ConfigTime = ConfigTime self.ConfigSkybox = ConfigSkybox self.XmasEvent = XmasEvent czass = str(time.ctime()) sekundy = czass[17:19] bg = background.GetCurrentMapName() if ConfigTime == 0: try: ConfigTime = int(linecache.getline("config.cfg", 2)) except: chat.AppendChat(chat.CHAT_TYPE_INFO, "Error while changing environment") chat.AppendChat(chat.CHAT_TYPE_INFO, "Cannot open file: config.cfg") if ConfigTime == -1: return map = ( "metin2_map_4_wiatry", "metin2_map_krance_swiata", "metin2_map_srodziemie", "metin2_map_resthea", ) if bg in map and sekundy != Env: if ConfigTime == 5 and int(sekundy) in (5,10,15,20,25,30,35,40,45,50,55,00): self.Env = sekundy pass elif ConfigTime == 15 and int(sekundy) in (15,30,45,00): self.Env = sekundy pass elif ConfigTime == 30 and int(sekundy) in (30,00): self.Env = sekundy pass elif ConfigTime == 60 and int(sekundy) == 30: pass else: if ConfigTime not in (-1,5,15,30,60) and int(sekundy) == 30: chat.AppendChat(chat.CHAT_TYPE_INFO, "Error while changing environment") chat.AppendChat(chat.CHAT_TYPE_INFO, "Wrong data: " + ConfigTime + ", config.cfg, line 2") self.Env = sekundy return else: return minuty = czass[14:16] godziny = czass[11:13] czas = int(godziny + minuty) try: im = Image.open("msenv/" + bg + ".jpg") except: chat.AppendChat(chat.CHAT_TYPE_INFO, "Error while changing environment") chat.AppendChat(chat.CHAT_TYPE_INFO, "Cannot open file: " + "msenv/" + bg + ".jpg") return (x, y, z) = player.GetMainCharacterPosition() x = int(x/100) y = int(y/100) try: color = str(im.getpixel((int(x),int(y)))) except: chat.AppendChat(chat.CHAT_TYPE_INFO, "Error while changing environment") chat.AppendChat(chat.CHAT_TYPE_INFO, "Not exist pixel: " + str(x) + ", " + str(y) + "; " + "msenv/" + bg + ".jpg") return #Skybox config if ConfigSkybox == "0": try: ConfigSkybox = linecache.getline("config.cfg", 5) except: ConfigSkybox = "_1k" if ConfigSkybox in ("_512n","_1kn","_1.5kn"): ConfigSkybox = ConfigSkybox[:-1] if ConfigSkybox not in ("_512","_1k","_1.5k"): ConfigSkybox = "_1k" #End of skybox config #Xmas event if XmasEvent == -1: try: XmasEvent = int(linecache.getline("config.cfg", 8)) except: XmasEvent = 0 if XmasEvent == 1: ColorList={ #Color (RGB) 1 : ("(255, 255, 255)", "(241, 255, 158)", "(254, 0, 0)", "(0, 255, 127)", "(158, 255, 248)", "(253, 254, 62)", "(255, 176, 63)", "(222, 255, 0)", "(95, 255, 0)", "(50, 121, 19)", "(95, 192, 35)", "(214, 214, 214)", "(148, 0, 0)", "(142, 142, 142)", "(251, 165, 0)"), #Msenv 2 : ("snowm02", "map_n_desert_01", "fire_low", "white_sky", "default", "rainy", "sand_mountain", "vanilia_white", "trent", "trent02", "vanilia", "snowm02", "fire_low", "default", "desert_cloud"), #Mp3 3 : ("christmas/4w/xmas", "christmas/4w/xmas", "christmas/4w/xmas", "christmas/4w/xmas", "christmas/4w/xmas", "christmas/krance/xmas", "christmas/krance/xmas", "christmas/krance/xmas", "christmas/krance/xmas", "christmas/krance/xmas", "christmas/srodziemie/xmas", "christmas/srodziemie/xmas", "christmas/srodziemie/xmas", "christmas/resthea/xmas", "christmas/resthea/xmas_wyspa"), #Snow 4 : (1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1) } #End of Xmas event else: ColorList={ #Color (RGB) 1 : ("(255, 255, 255)", "(241, 255, 158)", "(254, 0, 0)", "(0, 255, 127)", "(158, 255, 248)", "(253, 254, 62)", "(255, 176, 63)", "(222, 255, 0)", "(95, 255, 0)", "(50, 121, 19)", "(95, 192, 35)", "(214, 214, 214)", "(148, 0, 0)", "(142, 142, 142)", "(251, 165, 0)"), #Msenv 2 : ("snowm02", "map_n_desert_01", "fire_low", "white_sky", "default", "rainy", "sand_mountain", "vanilia_white", "trent", "trent02", "vanilia", "snowm02", "fire_low", "default", "desert_cloud"), #Mp3 3 : ("4w/lodowa", "4w/pustynia", "4w/ognista", "4w/orki", "4w/srodek", "krance/przeklete", "krance/pustynia", "krance/swiatynia", "krance/las", "krance/las2", "srodziemie/trawa", "srodziemie/lodowa", "srodziemie/ognista", "resthea/trawa", "resthea/wyspa"), #Snow 4 : (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0) } i = 0 Colors = ColorList[1] length = len(Colors) for ColorItem in xrange(length): if color == Colors[ColorItem]: #START OF SNOW EFFECT Snow = ColorList[4] if SnowEnable != 1: if Snow[ColorItem] == 1 and int(minuty) in (2,7,12,17,22,27,32,37,42,47,52,57) and int(sekundy) in (00,01,30,31): random = app.GetRandom(1,3) if random == 1: background.EnableSnow(1) else: background.EnableSnow(0) if Snow[ColorItem] == 0: background.EnableSnow(0) #END OF SNOW EFFECT if Resthea == color: break #START OF MUSIC MODULE Music = ColorList[3] if app.IsExistFile("BGM/" + Music[ColorItem] + ".mp3")==1: if musicInfo.fieldMusic != "": snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic) musicInfo.fieldMusic = (Music[ColorItem] + ".mp3") snd.FadeInMusic("BGM/" + musicInfo.fieldMusic) else: if musicInfo.fieldMusic != "": snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic) musicInfo.fieldMusic=musicInfo.METIN2THEMA snd.FadeInMusic("BGM/" + musicInfo.fieldMusic) #END OF MUSIC MODULE Msenv = ColorList[2] if NightEnable == 1 and self.__IsXMasMap(): background.RegisterEnvironmentData(1, constInfo.ENVIRONMENT_NIGHT) background.SetEnvironmentData(1) else: background.RegisterEnvironmentData(1, "d:/ymir work/environment/" + Msenv[ColorItem] + ConfigSkybox + ".msenv") background.SetEnvironmentData(1) self.Resthea = color break else: i = i+1 if i == length: background.SetEnvironmentData(0) snd.FadeOutMusic("BGM/" + musicInfo.fieldMusic) musicInfo.fieldMusic=musicInfo.METIN2THEMA snd.FadeInMusic("BGM/" + musicInfo.fieldMusic) self.Resthea = color ### END OF ENVIRONMENT MODULE Resthea.eu, qentinios Old video with system: [Hidden Content] Download: Without skyboxes: [Hidden Content] With skyboxes: [Hidden Content]
    7 points
  2. WoM2 is searching for an experienced mapper for a permanent position in our team. We require: - A mature and hard working person with passion for game development and at least 3 hours of spare time daily. - Continuous communication with the rest of the team to report on your progress, request help, or just some chit chat! We offer: - Custom map editor that can be modified to your needs - Possibility to buy or create custom 3d objects shall you need them - Monthly salary according to the number of hours you work (paid by Paypal or Bank Transfer) - Stable job in a long running server - Shall you wish to register yourself with the government as freelance (so you declare taxes on income) we will pay the expenses for you Please send samples of your work to [email protected]
    3 points
  3. Hello, today I release two new weapons for you. I have created this by myself. If you want more models, then visit Keyto-Shop.com Currently is a 30% discount on all models. Screenshots: Download:CLICK FOR DOWNLOAD
    2 points
  4. M2 Download Center Download Here ( Internal ) For years now we've relied on various file leaks which were usually in some Asian language, up until 2010 when someone (nico_w?) released the SG database. Even after this date, we continued to use our old file structures and methods, and old bash scripts to manage our servers. In 2013, some files were released which came from a private server that was based off the SG files. This isn't a thread to talk about who's right or wrong, or who did what work or anything like that... just a place to release files. The reason this release is beneficial is we've never really had a full release of "clean" and "untouched" files. Every time someone releases files they have some stupid backdoor added or are heavily modified from the original. The goal of this release is to get the files to be as close as possible to an official server, and remove things like Xtrap which none of us are using anyway. Official files is what all the pservers are based off of, so having the official structure just makes sense. There are several threads online with files that have been modified by some person but I never see threads with the files the way they originally came. These files in the game folder are from July, 2013 and the game/db cores are fully unmodified and straight from YMIR. That includes lack of modification to make them compatible with certain clients or anything like that. Garbage files like old logs are removed and ready to be generated when you launch your server. These are meant to be a "base server" for the one you want to create. For this reason, there are no customized quests or new items and stuff like that. It's only what SG had in 2013 of July. The database structure is the one from this thread: [Hidden Content] The item_proto and mob_proto is the one from SG in July 2013. I've included a tool in the download as well used to dump the server proto to the client. Since the goal is purity of files, but some files had to be slightly modified for simplicity (and so they run at all) here's the list of things changed/removed: - Removed panama folder. - Removed old log files and pid files, etc.. - Removed Xcrap stuff - Removed all traces to the above (Symlinks) from install.sh. - Removed cshybridcrypt files. - Modified CONFIG file to guide you into configuration for your own usage. - The quests are from the leak of pserver files based off SG. Some of these may or may not work fully. - Timebomb fix applied (Updated: March 13th, 2014) Now in order to use these files: 1. Upload and untar the database and server files. "untouched_34083_db.tar.gz" goes in "/var/db". 2. Navigate with PuTTy to the game folder as a root user and run this command: "chown -R metin2 .". 3. Navigate to the game folder as the metin2 user and run install.sh. This will setup all the permissions and symlinks correctly. 4. Restart your database with the command "service mysql-server restart". The server can be started and stopped by executing "run.sh" and "shutdown.sh" and logs can be cleared by executing "clear.sh". All of these are found in the game folder. Make sure to "/shutdown" ingame before using "shutdown.sh" or you may have data loss. Don't be alarmed when running the shutdown script, it's normal for PuTTy to not give you a prompt for a while (you haven't disconnected from SSH). How to convert the database proto to a perfect client-side proto: 1. Grab the following files from the conf folder in the server files: mob_proto.txt mob_names.txt item_proto.txt item_names.txt 2. Put those files in a folder with the "dump_proto.exe" tool and run it. It will automatically generate the protos for your client assuming you have followed the correct structure of the txt files. Download: [Hidden Content] (Updated: March 13th, 2014) - No password (I don't believe in putting passwords on archives released to the public).
    1 point
  5. M2 Download Center Download Here ( Internal ) Hello friends. This is my first topic. So lets do this. I tried to find this in some places and forums but not found it so i edit for my self. Its not to mutch but i hope this help some one. Q_Q All you just need to do is open you char_battle.cpp and search and under add Need look like this: Now search again and add under Need look like this: vualla [Hidden Content] See you soon!
    1 point
  6. 1 point
  7. Hi guys! While i was watching on youtube videos , I saw accidentally noticed the problem in Metin2 videos. The problem for you, I'll help you solve the problem for you both as you know. BUG VİDEO Let's solve the bug! Open exchange.cpp and search; for (i = 0; i < INVENTORY_MAX_NUM / 2; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid1.Put(i, 1, item->GetSize()); } Find this code; for (i = 0; i < INVENTORY_MAX_NUM / 2; ++i) EDİT : bool CExchange::CheckSpace() { static CGrid s_grid1(5, INVENTORY_MAX_NUM / 5 / 4 ); // inven page 1 static CGrid s_grid2(5, INVENTORY_MAX_NUM / 5 / 4); // inven page 2 static CGrid s_grid3(5, INVENTORY_MAX_NUM / 5 / 4); // inven page 3 static CGrid s_grid4(5, INVENTORY_MAX_NUM / 5 / 4); // inven page 4 s_grid1.Clear(); s_grid2.Clear(); s_grid3.Clear(); s_grid4.Clear(); LPCHARACTER victim = GetCompany()->GetOwner(); LPITEM item; int i; /* PAGE SLOT COUNT fixed exchange bug from one item copright -cBaraN- */ int INVENTORY_PAGE_SLOT_COUNT = INVENTORY_MAX_NUM/4; for (i = 0; i < INVENTORY_PAGE_SLOT_COUNT; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid1.Put(i, 1, item->GetSize()); } for (i = INVENTORY_PAGE_SLOT_COUNT; i < INVENTORY_PAGE_SLOT_COUNT*2; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid2.Put(i - INVENTORY_PAGE_SLOT_COUNT, 1, item->GetSize()); } for (i = INVENTORY_PAGE_SLOT_COUNT*2; i < INVENTORY_PAGE_SLOT_COUNT*3; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid3.Put(i - INVENTORY_PAGE_SLOT_COUNT*2, 1, item->GetSize()); } for (i = INVENTORY_PAGE_SLOT_COUNT*3; i < INVENTORY_PAGE_SLOT_COUNT*4; ++i) { if (!(item = victim->GetInventoryItem(i))) continue; s_grid4.Put(i - INVENTORY_PAGE_SLOT_COUNT*3, 1, item->GetSize()); } // ¾Æ... ¹º°¡ °³º´½Å °°Áö¸¸... ¿ëÈ¥¼® Àκ¥À» ³ë¸Ö Àκ¥ º¸°í µû¶ó ¸¸µç ³» À߸øÀÌ´Ù ¤Ğ¤Ğ static std::vector <WORD> s_vDSGrid(DRAGON_SOUL_INVENTORY_MAX_NUM); // ÀÏ´Ü ¿ëÈ¥¼®À» ±³È¯ÇÏÁö ¾ÊÀ» °¡´É¼ºÀÌ Å©¹Ç·Î, ¿ëÈ¥¼® Àκ¥ º¹»ç´Â ¿ëÈ¥¼®ÀÌ ÀÖÀ» ¶§ Çϵµ·Ï ÇÑ´Ù. bool bDSInitialized = false; for (i = 0; i < EXCHANGE_ITEM_MAX_NUM; ++i) { if (!(item = m_apItems[i])) continue; if (item->IsDragonSoul()) { if (!victim->DragonSoul_IsQualified()) { return false; } if (!bDSInitialized) { bDSInitialized = true; victim->CopyDragonSoulItemGrid(s_vDSGrid); } bool bExistEmptySpace = false; WORD wBasePos = DSManager::instance().GetBasePosition(item); if (wBasePos >= DRAGON_SOUL_INVENTORY_MAX_NUM) return false; for (int i = 0; i < DRAGON_SOUL_BOX_SIZE; i++) { WORD wPos = wBasePos + i; if (0 == s_vDSGrid[wBasePos]) { bool bEmpty = true; for (int j = 1; j < item->GetSize(); j++) { if (s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM]) { bEmpty = false; break; } } if (bEmpty) { for (int j = 0; j < item->GetSize(); j++) { s_vDSGrid[wPos + j * DRAGON_SOUL_BOX_COLUMN_NUM] = wPos + 1; } bExistEmptySpace = true; break; } } if (bExistEmptySpace) break; } if (!bExistEmptySpace) return false; } else { int iPos = s_grid1.FindBlank(1, item->GetSize()); if (iPos >= 0) { s_grid1.Put(iPos, 1, item->GetSize()); }else { iPos = s_grid2.FindBlank(1, item->GetSize()); if (iPos >= 0) { s_grid2.Put(iPos, 1, item->GetSize()); }else { iPos = s_grid3.FindBlank(1, item->GetSize()); if (iPos >= 0) { s_grid3.Put(iPos, 1, item->GetSize()); }else { iPos = s_grid4.FindBlank(1, item->GetSize()); if (iPos >= 0) { s_grid4.Put(iPos, 1, item->GetSize()); }else { return false; } } } } } } return true; } Best regards; Can BARAN... Watch this video if you want to thank. :
    1 point
  8. Looks almost good to me: INVENTORY_MAX_NUM /5 / 2 Should be / 5 / 4
    1 point
  9. weapons 6009 6019 6029 6039 6049 6059 6079 6089 6099 armors 21009 21019 21029 21039 21049 21059 21069 21079 21089 21099
    1 point
  10. You can use it like that. Simply, it allows you to have multiple skyboxes/environments on sigle map
    1 point
  11. There was a line I had (before if , thx I like them all
    1 point
  12. English desc: [Hidden Content] or [Hidden Content]
    1 point
  13. post "void CheckClientVersion() " body
    1 point
  14. Still wondering when you will stop using these...
    1 point
  15. well just a question : what system are you tring to complie on ? (x86/x64) (on freebsd use uname -a to get such info)
    1 point
  16. what was the last thing you changed before the last build ??
    1 point
  17. That error alone means nothing. We need all the backtrace to help you figure out what's wrong. Try to make clean just in case you are dragging problems from a previous failed compilation, though.
    1 point
  18. Seems that my Wuala account has been deleted because of inactivity. I'll try to reupload the pack to Mega as soon as possible, but I'm not sure that I can find every item on my pc, so the reuploaded version might be a bit different. I'll try to include more models in it, but it might take a while, sorry for that.
    1 point
  19. add to libdir -L/usr/local/lib/mysql and go to /server/libsql gmake clean gmake
    1 point
  20. SELECT COUNT(*) as count FROM player.player WHERE DATE_SUB(NOW(), INTERVAL 10 MINUTE) < last_play;Omg... I'm using this... in 2009
    1 point
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.