Leaderboard


Popular Content

Showing most liked content since 12/20/2016 in all areas

  1. Happy new year (and a big thank you)! Do you guys remember 'the good old times'? I think of this time the forum had only 385 members. It was the time everything started - back in 2014. And now - approx. 3 years later - we're still there! We're still... THERE! Yes, you are right! We're still here! Now with 11.111 members - okay, maybe a bit more now, but we had these members at 16:32 GMT+1 today - we'll soon switch to year 2017. As a big 'Thank you!' to all of you and a New Year present we want to do a giveaway with all our members which were here in the last 3 years. Okay.. Also the newer ones will get their chance, but not everyone might be chosen for this... We will give away 11x VIP rank on this forum - all you need to do is to enter the giveaway on our small giveaway page. But please don't be upset if you don't understand the requirements - it's a mystery for us, too. We want to thank all of you for your confidence in us, for your loyalty, for your effort to make this a great place to be. We also want to wish all of you a Happy New Year and we hope we still see you in the next 3 years. This giveaway will be open until the 31th January 2017. You can take part on this page. Sincerely, metin2dev.org Administration ... and always remember: We are a community!
    13 likes
  2. It's really long time i released some mobs, so today i will share with you my naga pack. It including 4 mobs with effects + 1 boss. I didn't make sound files, i have no time for it, maybe i make it during christmas. I will have a little free time then. You can use it how u want. You need granny 2.8+! I don't support old granny anymore. Download here
    11 likes
  3. [How-To] Notepad++ Syntax Highlighting Metin2 Quests Lua After a while, I found back my modded notepad++ langs.xml containing all the old metin2 lua functions in there. It's dated 2012 (I've added the recent langs.xml lua tags few hours ago for lua 5.2 as well), but I'll update it soon with the 40k functions and mine as well. (on github) How to "install" it? Well, open %appdata%\Notepad++\langs.xml and replace the <Language name="lua" ...> section with this: (it doesn't allow me to use <!-- --> comments though) http://pastebin.com/raw/kn759bYZ After that, restart notepad++, and it's done. Result: Enjoy your Christmas Abione. Note: Some people should already have tried to do so in the past, but this is the nicest way I like.
    10 likes
  4. Installation files http://www9.zippyshare.com/v/qr8C83pd/file.html Source https://github.com/mq1n/BetaShield
    8 likes
  5. Hello everyone, this is the Xmas Gift from me which includes Thunder&Guatama maps in another version. They are from old project so I thought I could share them with you. Guatama Cliff: Mt Thunder: Download World Editor Pictures: http://share.pho.to/AZOLR Kind Regards, Sonitex
    7 likes
  6. http://www95.zippyshare.com/v/RWBnSUSQ/file.html
    6 likes
  7. __________________________________________________________________________________________________________ DownloaD https://mega.nz/#!gBZ0VBBZ!X9iwy2w7tUIzevlf8WqgjFUznINDHpDnbhiDK5EjFUE ScaN https://www.virustotal.com/pl/file/024143cfcc003c3b944afabac2bd817da96a4464746587704a06fecfa6aab203/analysis/1484224075/
    5 likes
  8. __________________________________________________________________________________________________________ DownloaD https://mega.nz/#!lEwEQQTC!oxpbafnREClOWYula2MWCfYZvSgsa4kvUaunInkaPUY ScaN https://www.virustotal.com/pl/file/3871bf1c7fdf52d047be2beb9b56c3c1c1aad1afec89b4c0ba53fdf285a120ce/analysis/1484219366/
    4 likes
  9. It is time to forget the past and celebrate a new beginning. Happy New Year guys!
    4 likes
  10. Merry Christmas to all, have a happy holiday and I thank you very much to the members of this community who have helped the newest ones
    4 likes
  11. Hey guys, I'm back in the business after 2 years of silence, I wanna see the hottest contents what I skipped, including new models, maps, features, quests, etc. I think searching won't help me much at this point, and I might miss the best features of this very long time. If you guys can link me some hot, clean and professional works that had been published in the past 2 years, I would be very grateful for you all.
    2 likes
  12. 2 likes
  13. Read above post. Recompile source. Upload game. Test if works.
    2 likes
  14. char_item.cpp Inside: void CHARACTER::ReceiveItem (LPCHARACTER from, LPITEM item) Look for: case DEVILTOWER_BLACKSMITH_WEAPON_MOB: case DEVILTOWER_BLACKSMITH_ARMOR_MOB: case DEVILTOWER_BLACKSMITH_ACCESSORY_MOB: if (item->GetRefinedVnum() != 0 && item->GetRefineSet() != 0 && item->GetRefineSet() < 500) { from->SetRefineNPC (this); from->RefineInformation (item->GetCell(), REFINE_TYPE_MONEY_ONLY); } else { from->ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("ÀÌ ¾ÆÀÌÅÛÀº °³·®ÇÒ ¼ö ¾ø½À´Ï´Ù.")); } break; change REFINE_TYPE_MONEY_ONLY into REFINE_TYPE_MUSIN I dont remember if it was musin, i cant test it now. Check item_lenght.h for all types or: REFINE_TYPE_NORMAL REFINE_TYPE_SCROLL REFINE_TYPE_HYUNIRON REFINE_TYPE_MONEY_ONLY REFINE_TYPE_MUSIN REFINE_TYPE_BDRAGON
    2 likes
  15. Story: Over time I learned that the SetEvent function can cause weird problems in Metin2, maybe you have this bug or maybe not, I actually encountered this problem and found the fix. How to trigger the bug: 1. Use this quest for a test: quest test begin state start begin when 9003.chat."quest test" begin say("Hey we are doing a test here") local o = select("option 1","option 2") if o == 1 then return elseif o == 2 then return end end end end 2. Now you click on the NPC, choose "quest test" option and don't click on any option(1,2) 3. /transfer your_character with another GM account 4. The character who clicked on "quest test" option and didn't choose any of the sub-options (1 or 2 ) will now have an invisible stucked window on the center and can't click on the ground or click the area in the center of the screen(where the quest ui was before teleportation) How to fix it: 1. Go to uiQuest.py 2. In def MakeQuestion find the SetEvent functions and edit them as below: def MakeQuestion(self, n): global entire_questbutton_number global entire_questpage_number global cur_questpage_number entire_questpage_number = ((n-2)/7)+1 entire_questbutton_number = n if not self.board: return self.btnAnswer = [self.MakeEachButton(i) for i in xrange (n)] import localeInfo self.prevbutton = self.MakeNextPrevPageButton() self.prevbutton.SetPosition(self.sx+self.board.GetWidth()/2-164, self.board.GetHeight()/2-16) self.prevbutton.SetText(localeInfo.UI_PREVPAGE) #self.prevbutton.SetEvent(self.PrevQuestPageEvent, 1, n) # buggy self.prevbutton.SAFE_SetEvent(self.PrevQuestPageEvent, 1, n) # unbuggy self.nextbutton = self.MakeNextPrevPageButton() self.nextbutton.SetPosition(self.sx+self.board.GetWidth()/2+112, self.board.GetHeight()/2-16) self.nextbutton.SetText(localeInfo.UI_NEXTPAGE) #self.nextbutton.SetEvent(self.NextQuestPageEvent, 1, n) # buggy self.nextbutton.SAFE_SetEvent(self.NextQuestPageEvent, 1, n) # unbuggy if cur_questpage_number != 1: cur_questpage_number = 1 Note: After that you should check for other SetEvent functions (comment them and see if the bug still happens) Info: The bug has something to do with the function arguments Other locations where this bug caused problems: intrologin.py - can cause the arrow keys,enter,esc to not work in the select character phase
    2 likes
  16. Pictures: https://www.assetstore.unity3d.com/en/#!/content/30892 Link: https://mega.nz/#!9p1U1YZC!GQ9qwf7nmMoPqJ0u7mB76dmbR9pN24oaV3IJuFD3reg
    2 likes
  17. maybe if you would properly speak english someone could help you
    2 likes
  18. use setraceflag in mob_proto with some unused bonus or just add them in the source
    2 likes
  19. personally, i've modified my say_title function this way. say_title = function(name, width, height) setdelay(0); say(color256(255, 230, 186)..string.format("%s[WINDOW_SIZE width;%d|height;%d]", name or "", width or 350, height or 300)..color256(196, 196, 196)); end -- function and my quests run at the speed of light, the setdelay(0) is sufficient and does its work perfectly.
    2 likes
  20. @metin2-factory spoon feeding doesnt make people learn, only makes them copy-paste.
    2 likes
  21. Hello, I saw lot of people having This bug so I decided to create a simple fix in order to help them ! Let's go ! Open uiinventory.py and search : def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos): Then replace the whole function by : def DetachMetinFromItem(self, scrollSlotPos, targetSlotPos): ## Resetting Sash Stats Fix - Galet - 11/11/2015 - 17h45 - Tribute to the victims of the war scrollIndex = player.GetItemIndex(scrollSlotPos) targetIndex = player.GetItemIndex(targetSlotPos) for i in xrange(player.INVENTORY_PAGE_SIZE*2): slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i) getItemVNum=player.GetItemIndex itemVnum = getItemVNum(slotNumber) if 85009 == itemVnum: item.SelectItem(targetIndex) if item.GetItemSubType() == item.COSTUME_TYPE_ACCE: if self.GetAcceAttribute(targetSlotPos) == 0: return self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText("Would you like to reset your sash shoulder stats?") self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog)) self.questionDialog.Open() self.questionDialog.sourcePos = scrollSlotPos self.questionDialog.targetPos = targetSlotPos else: return else: if not player.CanDetach(scrollIndex, targetSlotPos): chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.REFINE_FAILURE_METIN_INSEPARABLE_ITEM) return self.questionDialog = uiCommon.QuestionDialog() self.questionDialog.SetText(localeInfo.REFINE_DO_YOU_SEPARATE_METIN) self.questionDialog.SetAcceptEvent(ui.__mem_func__(self.OnDetachMetinFromItem)) self.questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog)) self.questionDialog.Open() self.questionDialog.sourcePos = scrollSlotPos self.questionDialog.targetPos = targetSlotPos If you want it on pastebin, here you go : http://pastebin.com/UG4Tvkv6 WARNING : This fix is only for people who have 2 inventory pages, maybe it's working with more but as it is untested I prefer to precise this, even if I'm pretty sure that the fix are completely working with the actual code, regardless on how many pages you got : If you got more than 2 pages, you must replace (player.INVENTORY_PAGE_SIZE*2)With (player.INVENTORY_PAGE_SIZE*NUMBEROFPAGES)"NUMBEROFPAGES" is simply the number of the inventory pages you got, so 4 for 4, 9 for 9, 2147483647 for 2147483647 It is probably not the best way to fix it but should works like a charm ! If you got any problems I can provide you the help needed on Metin2Dev in English and on Skype in English, German, French and Spanish Have a nice day all
    2 likes
  22. 2 likes
  23. I want you to give me a tutorial for private message of the global chat for the source.
    2 likes
  24. 2 likes
  25. 2 likes
  26. I shoved, i did just like there but when i click on name, it will not open
    2 likes
  27. It's just on python on the internet, i want on source
    2 likes
  28. And you're back. Dont you get tired? For real. Having a job will get you more money then keeping to try sell the same crap over and over again, think about it.
    2 likes
  29. 2 likes
  30. Find this line. #define IS_NO_CLEAR_ON_DEATH_AFFECT(type) ((type) == AFFECT_BLOCK_CHAT || ((type) >= 500 && (type) < 600)) Replace with. #define IS_NO_CLEAR_ON_DEATH_AFFECT(type) \ ((type) == AFFECT_BLOCK_CHAT || \ ((type) >= 500 && (type) < 600)) || \ ((type) >= ALIGNMENT_BONUS_1 && (type) <= ALIGNMENT_BONUS_5))
    2 likes
  31. « Out of range value » part_main` smallint(6) NOT NULL DEFAULT '0', __ smallint max value: 32.767 the query part_main value: 679.845.925 __ part_main max length structure: 6 the query part_main max length structure: 9 Fix: On structure, change max length to 20 for example. Change type to bigint.
    2 likes
  32. 2 likes
  33. I want directly the system because I don't know exactly what I have to take from it, and I need something from client too, I give 5e paypal anyone who helps me with the system.
    2 likes
  34. change it to: if (pkItemScroll->GetValue(0) == YONGSIN_SCROLL) { success_prob = MIN(100, success_prob + 10); } And also to: LPITEM itemScroll = GetInventoryItem(iAdditionalCell); if(!itemScroll){} else{ if (itemScroll->GetValue(0) == YONGSIN_SCROLL) { p.prob = MIN(100, prt->prob+10); } }
    2 likes
  35. Give it to me if you find it.
    2 likes
  36. Community thanks you for this pack, and for the snakes boobs too.
    2 likes
  37. 2 likes
  38. Attached proto to .xml dumper. ProtoTool_m2_16.1.4_20752.exe
    2 likes
  39. Ok after much searching I found a work around for when a person logs into your server and they select a character and then gets returned to the selection screen. I was using a Loopback Adapter to resolve this but you had to use portmap to make it work fully. Here is a semi fix "but working" You do not have to add anything in your Config files just change this in your source and compile and no need for portmap. Credit go to rawn3cr0 for this fix In desc_client.cpp: if (!bSentBoot) { bSentBoot = true; TPacketGDBoot p; p.dwItemIDRange[0] = 0; p.dwItemIDRange[1] = 0; memcpy(p.szIP, g_szPublicIP, 16); DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p)); } } TEMP_BUFFER buf; TPacketGDSetup p; memset(&p, 0, sizeof(p)); strlcpy(p.szPublicIP, g_szPublicIP, sizeof(p.szPublicIP)); Change in: if (!bSentBoot) { bSentBoot = true; TPacketGDBoot p; p.dwItemIDRange[0] = 0; p.dwItemIDRange[1] = 0; memcpy(p.szIP, "External IP", 16); DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p)); } } TEMP_BUFFER buf; TPacketGDSetup p; memset(&p, 0, sizeof(p)); strlcpy(p.szPublicIP, "External IP", sizeof(p.szPublicIP)); Where the External IP, modified with your external IP address if (!bSentBoot) { bSentBoot = true; TPacketGDBoot p; p.dwItemIDRange[0] = 0; p.dwItemIDRange[1] = 0; memcpy(p.szIP, "109.197.24.321", 16); DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p)); } } TEMP_BUFFER buf; TPacketGDSetup p; memset(&p, 0, sizeof(p)); strlcpy(p.szPublicIP, "109.197.24.321", sizeof(p.szPublicIP));
    1 like
  40. Dude, sell your own work, I mean, no offense, really, and good job, but it was already released, you only need to fill some gaps while correcting minor issues, I don't think this is "correct" to sell it, furthermore it was coded by Wom2 team from scratch, or from "semi-aborted system" already present in sources, even the ui come from them However nice system as we said together and goob job already
    1 like
  41. This is an example of what you have. UPDATE account SET password=PASSWORD('x'); there's no where statement. a badly coded homepage could do such thing.
    1 like
  42. Hello ,i share you today a free sura armor from : ridack3d.jimdo.com -Screen : For download it go in : https://ridack3d.jimdo.com/free-stuff/
    1 like
  43. UserInterface.cpp #ifdef _DISTRIBUTE Tracef("알림: 팩 모드입니다.\n"); //if (0 == strPackType.compare("FILE")) //{ // bPackFirst = FALSE; // Tracef("알림: 파일 모드입니다.\n"); //} //else //{ // Tracef("알림: 팩 모드입니다.\n"); //} #else bPackFirst = FALSE; Tracef("알림: 파일 모드입니다.\n"); #endif
    1 like
  44. SQL for easier to modify and performance (Just a bit, this tables will be put in memory when server start)
    1 like
  45. This is discrimination dude :-/ Your opinion is totally wrong . Im RO but i living in Germany . Not all ro are scammers. Yes , Vegas,Optimus,Tiger are trustable and yet few people . I'm not proud to be Romanian but im proud to be a good guy :-j Yes , in RO are manny scammers but scammers are everywhere .
    1 like
  46. Hello devs Today I would like to present you a new solution that can make you feel more safe with your GMs. This is my first release and it's very simple to do, I'm just posting it here for the newbies and those who don't know how to start searching and other shit like that WHAT IS THIS SYSTEM? This system is a number of preventions for GameMaster characters about certain interractions with normal players in the game. The functions you are about to see are blocking GMs from: Trading items with normal players (and the opposite) Invite normal players to parties (and the opposite) Invite normal players to guilds (and the opposite) Adding normal players as friend contacts (I would say and the opposite but it already exists by default ) Drop items to the ground Build their own private shops with the Bundle item Buy items from a private shop Block a GM from buffing normal players Using the commands /set, /a and /setskillother to normal players WHO IS THIS SYSTEM FOR? I believe we can all agree that trust in partnership is a rare thing these days. This system is released from me for the Admins out there that cannot trust their GMs (and many times their self) so much. Imagine having a server and your GM just gives away items for free to everyone. Bad huh? I thought so... So with this system you are sure that your GMs will do their job properly and won't violate any game rules behind your backs. Your server has rules (as all games out there) and if you wanted people to have some items for free you can easily put those items for sale into the town vendors. People who do this kind of things behind your backs are not authorized by you to do it but I believe that it happened (if not happening yet) to the best of you guys, that's why I'm releasing it. It's time to set some things right in your servers, GMs exist to answer questions and not helping players cheat without any authorization from the administrators, so without further ado, let's get started. SORRY AGAIN, ONE MORE THING I BELIEVE THIS QUESTION IS IN THE MIND OF A DEVELOPER WHO READS THIS GUIDE: MIND RAPIST, WHY DO YOU USE THE IsGM() BOOLEAN TO CHECK IF A PLAYER IS A GM AND NOT USE THE TRADITIONAL CHECK GetGMLevel() > GM_PLAYER? In this tutorial, we will be using the bool IsGM() instead of the usual check because some of the guys who see this may have added @Alina's GM Elevation system. In that case, GetGMLevel() won't work before the character elevates, so our GMs will be able to bypass the check and just create a perfect item, relog and give it away before they elevate. We don't want that don't we? So who ever wants to use GetGMLevel() > GM_PLAYER instead of IsGM() there is no difference you can do that guys, except if you did the elevation system, then you need to use my function in order to work. So let's get the party started. PARTY INVITATION BLOCK In char.cpp search for the function "void CHARACTER::PartyInvite(LPCHARACTER pchInvitee)" and under add this: Done with party block, let's continue BUNDLE USAGE BLOCK FOR CREATING PRIVATE SHOPS In char_item.cpp search for the function "bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)" and under add this: Done, let's continue ITEM DROP BLOCK Still in char_item.cpp search for the function "bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)" and under add this: Done with that one, you can close char_item.cpp. Let's move on BUFF BLOCK In char_skill.cpp find this: and paste this under it: Done with that, next! /SET COMMAND BLOCK FOR PLAYERS In cmd_gm.cpp search for the function "ACMD(do_set)" and under add this: Done, but do not close, we have more commands to block! /A COMMAND BLOCK FOR PLAYERS Still in cmd_gm.cpp, search for the function "ACMD(do_advance)" and under add this: Do not close that file yet, one more command left to block /SETSKILLOTHER COMMAND BLOCK FOR PLAYERS Still in this file, search for the function "ACMD(do_setskillother)" and under add this: Done with the commands, you may close cmd_gm.cpp and move on EXCHANGE BLOCK In exchange.cpp search for the function "bool CHARACTER::ExchangeStart(LPCHARACTER victim)" and under (if you have sash system in your source, the top line may be "if ( IsOpenSafebox() || GetShopOwner() || GetMyShop() || IsCubeOpen() || IsAcceOpen() )") add this: Done with the exchange, moving on! GUILD INVITATION BLOCK In guild.cpp search for the function "void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )" and under add this: Here goes the guild invitation, let's move forward FRIEND LIST BLOCK In input_main.cpp search for the function "int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)" and find this line: change it like this: Still in the same function, find this line in "case MESSENGER_SUBHEADER_CG_ADD_BY_NAME:": and add this: Friends are done. Let's move on to the last one! BUYING ITEMS FROM PRIVATE SHOPS BLOCK In shop_manager.cpp search for the function "void CShopManager::Buy(LPCHARACTER ch, BYTE pos)" and under add this: Done It's not something hard to do, I just gathered everything in one place, you can now sleep at night knowing that your GMs cannot fraud you. I would like to give special thanks to @VegaS who wrote the blocks for buffs, party and guild invitation, thanks so much buddy Note: These will block any interraction between a GM and a normal player, but a GM will be able to interract with another GM (example trade GM with GM). And before someone asks yes I thought about a safebox block for GMs but there is no need for that since you can login to his account and create 3 players, then logout and delete them directly from their database, leaving 3 warriors with Level 0 that cannot login to the game. Let the poor GMs have their safebox it's the only thing left to them after that I think xD So I hope I helped some folks here the tutorial is done Kind regards ~ Mind Rapist
    1 like
  47. socket_accept: accept: Software caused connection abort (fd 12) . your server have to much lagg. it could be cause low ram or ddos
    1 like
  48. Search, everything u want is already in this topic. Don't be lazy and search.
    1 like
  49. Sorry I have backup https://mega.nz/#!r5lSEbTb!Mn5Lofty53_o_eTpe4qHBXFaJ-eWqB3P_w9bSOOUT8E
    1 like
  50. First open playersttingmodule.py and search: [codesyntax]net.RegisterEmoticonString("(fish)")[/codesyntax] below add: [codesyntax]chrmgr.RegisterEffect(chrmgr.EFFECT_EMOTICON+12, "", "rinnegan/carcel.mse") net.RegisterEmoticonString("(carcel)")[/codesyntax] Open game.py and and eventually add: [codesyntax]def __carcel(self): net.SendChatPacket("(carcel)")[/codesyntax] Now search: [codesyntax]def __ServerCommand_Build(self):[/codesyntax] and below add: [codesyntax]#carcel 'carcel' : self.__Carcel, #end carcel[/codesyntax] Textures Link https://mega.co.nz/#!c8MijYQQ!uKFNefvo0WEyoKvSMnp7En8tHUwwGW_AXvl8r-9RgT0 Client/Server Side http://www.mediafire.com/download/2efob3cimov2vtb/Carcel.zip by Metin2Area
    1 like