Jump to content

Leaderboard

Popular Content

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

  1. M2 Download Center Download Here ( Internal ) Introduction & Small explaination [Hidden Content] As you can see in the video, this function stores XP amount of the last killed mob. Variable is reseted every time you login into the game (including warps). ##### HowTo ##### ######## Open char.cpp and find ######## ######## Open char_battle.cpp and find ######## ######## Open questlua_pc.cpp and add this function ######## ######## Test Quest ######## (notice that this version isn't the same as showed in the video)
    5 points
  2. Video: DOWNLOAD PASSWORD: www.ratedr203.com RatedR203 © TGC-TEAM
    3 points
  3. Hello guy's, i dont wane writte an roman or something, becuse my english is very very bad. so what you have to do is look my video: That's all, have very fun with the new Tree's maybe anyone can convert the finished Tree's for metin2dev, and tell me for Release. Look pls the complet video, when not >>> so you dont know the passwort of the Winrar file. Ace PS: I have convert much of them, and all work's without wrong's or bug's. PPS: Sorry forget that: An very big thank's go to Shogun for the SpeedTree Program
    2 points
  4. M2 Download Center Download Here ( Internal ) 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/assassin_5_1.dds" Type="3"><![CDATA[pc/assassin/assassin_5_1.dds]]></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.
    1 point
  5. M2 Download Center Download Here ( Internal ) Hey guys... luv u all :3 DOWNLOAD
    1 point
  6. Hello , first off all , if you don't have any ideea what C++ is and you want Wolfman/Lycan full unbugged on your server and other features , you can contact [Hidden Content] I will give you everything to run a test-server with Lycan , but you have to work a lot to make something stable , there are a lot of major bugs. The server files doesn't contains any data , no drops , no npcs , no quests. Only the basic things to make it work. With these , i will give you a fully compatible client in English with everything already installed. The SLN files to recompile your own launcher , and the source files for the server. The compiled DB on the Test Server will run mob_proto & item_proto only from MySQL. Screens: Test account: Username: syron Password: test Download links & Virustotal: NEW FILES : [Hidden Content] Lycan Test Client (EN) - [Hidden Content] Wolfman Source - [Hidden Content] Wolfman Binary SLN - [Hidden Content] Test Server - [Hidden Content] item_proto.sql update in English (only rewrite , don't delete the one from Test Server, thanks to Asta ! ) - [Hidden Content] Start Positions for Lycan Special Map ( thanks to Denis for some informations! ) (compatible with my Test Server) - [Hidden Content] Wolfman Source - [Hidden Content] Wolfman Binary SLN - [Hidden Content] Test Server - [Hidden Content] Start Positions - [Hidden Content]
    1 point
  7. Today I'm gonna show you how to compile the mainline_released client binary. Tools we will need: VS2008,Visual Studio 2008 SP1 We will need to make two folders on our hard drive for example include_stuff and lib_stuff after that we go to srcnovalineSrcsToolsWorldEditorexterninclude and copy all that things into include_stuff next go to srcnovalineSrcsToolsWorldEditorexternlib and copy all that things into lib_stuff next open srcnovalineSrcsToolsRAD Game Toolsgrannycommongranny_common_2_9_12_0_release.zip go to lib then win32 and copy all that into lib_stuff next go to srcnovalineSrcsExternlib and copy all into lib_stuff after this go to srcnovalineSrcsExterninclude and copy all into include_stuff In VS 2008 go to Tools->Options->Project and Solutions->VC++ Directories=>Select Include files and include there your include_stuff folder then select Library files and include there your lib_stuff files. Finally we did it Select to release mode and press ctrl+shift+b Kind Regards, Denic
    1 point
  8. In InstanceBase.h after protected: DWORD m_dwDuelMode; DWORD m_dwEmoticonTime; paste this public: DWORD GetLevel() const { return m_dwLevel; } void SetLevel(DWORD lvl); In InstanceBase.cpp, in the end of the file paste this: void CInstanceBase::SetLevel(DWORD lvl) { m_dwLevel = lvl; } and then on PythonPlayer.cpp near this line: CInstanceBase* pkPlayer = NEW_GetMainActorPtr(); if (pkPlayer) pkPlayer->UpdateTextTailLevel(lValue); add brackets and "pkPlayer->SetLevel(lValue);" inside the if statement, like this: CInstanceBase* pkPlayer = NEW_GetMainActorPtr(); if (pkPlayer) { pkPlayer->UpdateTextTailLevel(lValue); pkPlayer->SetLevel(lValue); }
    1 point
  9. Hello! I've never seen the above tutorial, yet useful! Full application server administrator for help when they have a game.core without doubt that the answer is and precisely. So here, the very easy, the command to type is: gdb. Exemple : gdb /usr/metin2/share/game /usr/metin2/channel1/game.core This command will tell you where does the error through the .core. Or at least it will help you to know or just the problem. IMPORTANT: You must not have a game to strip debug! Good bye
    1 point
  10. 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
  11. Hello guys I'm still newbie with c++ so i'm testing new thing [HOW-TO(C++)]Take Exp after duel ok this HOW-TO will show you how to take or give(change) exp or gold or other point from this list also it'll show you how to create fly (EXP or hp .... etc) from this list PS : I didn't try all of the points types so i don't know if all of them works like this guide PS: the fireworks flys doesn't go to the target --- when you try it you'll know what i mean ok it's sooooooo easy HOW-TO just go to char_battle.cpp search for this or go to line "1304" (not sure about the line number) sys_log(1, "DEAD_BY_PC: %s %p KILLER %s %p", GetName(), this, pkKiller->GetName(), get_pointer(pkKiller)); before it add those lines #1 first the fly line first of all the "CreateFly" function is connected to "TPacketGCCreateFly" packet when this function is called the game send the packet with the "type" of the fly and the "Victim" so as a beginning write CreateFly( now we need a type i'll put EXP and we need the victim .... the victim will be "pkKiller" so the line will be like this CreateFly(FLY_EXP, pkKiller); ok now this is the fly #2 (Change Points) The base form of the Point change is like this PointChange(POINT_TYPE, value); so in this guide i'll write it like this PointChange(POINT_EXP, -5000); but this will only change the points of the player (which is now killed by the other player "pkKiller" so it will take 5k exp point from the loser now to give 5k exp to the killer write it like this pkKiller->PointChange(POINT_EXP, 5000); and DONE now you can also change the killer hp and mp to the max (because he is the winner of course ) i got this idea from metin2us ... we used do it like this --> (after the duel is over the winner says how much hp he still got and the loser must pay the amount of the hp) sorry for bad english Best Regards FlyGun
    1 point
  12. can anyone release the packs for this costumes please ? [Hidden Content]
    1 point
  13. Chek Massages You could send him dw link via pm as well don't you think? Did not know there is a password of the arichve its not my realise xD btw for all others pass is just4metin
    1 point
  14. Hello everyone, today I'll show you how to enable acces to root login via Putty. Yes, I know SSH accesing is better, but there is tut how to enable root login in FreeBSD 10. So first log in to your FreeBSD 10. And write this: vi /etc/ssh/sshd_config Then you should search line like this: #PermitRootLogin no Remove # and replace no to yes, like this: PermitRootLogin yes Final step is to restart your sshd /etc/rc.d/sshd restart And that's it. It's really simply and this tutorial is for real amateur in this biz. But I think it can be useful. Peace, TyWin
    1 point
  15. Try to put BIND_IP in each CONFIG file, without database (including auth).
    1 point
  16. For skills search for something like: case 6: return POINT_SKILL; And edit it to: case 6: case 7: return POINT_SKILL; In char_skill.cpp It exist two times, you must edit it twice.
    1 point
  17. I don't know other people about this but i am selling wolfman files & fixed files too. This is only my point at the moment. It's not need to discuss about this. Thanks Kind Regards Ken
    1 point
  18. Good idea, Ken You can also replace std::auto_ptr<SQLMsg> pMsg(DBManager::Instance().DirectQuery("UPDATE player.player SET title = '%s' WHERE id = %u",c_szRankName,GetPlayerID())); with DBManager::Instance().Query("UPDATE player.player SET title = '%s' WHERE id = %u",c_szRankName,GetPlayerID()); Since you aren't storing the result in a variable. It's better to not use DirectQuery unless you're selecting
    1 point
  19. void CHARACTER::SetTitle(const char * c_szRankName) { if (!*c_szRankName) return; sys_log(0, "CHARACTER::SetTitle %s", c_szRankName); std::auto_ptr<SQLMsg> pMsg(DBManager::Instance().DirectQuery("UPDATE player.player SET title = '%s' WHERE id = %u",c_szRankName,GetPlayerID())); if (pMsg->Get()->uiAffectedRows == 0 || pMsg->Get()->uiAffectedRows == (uint32_t)-1) { sys_err("We can't update this[%s] player's title!",GetName()); return; } } struct colorTable { float r; float g; float b; float a; } ColorTable; typedef TR1_NS::unordered_map<std::string, colorTable> TitleRankColor; TitleRankColor m_map_titleRankColor; How to insert ? colorTable myTable = {}; myTable.r = 0.0f / 255.0f; myTable.g = 255.0f / 255.0f; myTable.b = 255.0f / 255.0f; myTable.a = 1.0f; m_map_titleRankColor.insert(TitleRankColor::value_type("FirstRank",myTable)); bool CHARACTER::IsPublicRank(const char * c_szName); { if (!*c_szName) return false; TitleRankColor::iterator it = m_map_titleRankColor.find(c_szName); if (it == m_map_titleRankColor.end()) return false; return true; } Check if rank is exist in map or not. Command from client ; ACMD (do_new_title_system) { if (!ch) return; char arg1[256]; one_argument(argument, arg1, sizeof(arg1)); if(!*arg1) { ch->ChatPacket(CHAT_TYPE_INFO, "usage new_title_system <rankname>"); return; } if (!ch->IsPublicRank(arg1)) { ch->ChatPacket(CHAT_TYPE_INFO, "This rank is not find!"); return; } ch->SetTitle(arg1); } Rest of them is easy.. #Edit 2 System is checking your query. If it's update or not. Added command. Added class. You must put these things in public like this ; class CMetin2Dev : public singleton<CMetin2Dev> { public: CMetin2Dev(); virtual ~CMetin2Dev(); struct colorTable { float r; float g; float b; float a; } ColorTable; typedef TR1_NS::unordered_map<std::string, colorTable> TitleRankColor; TitleRankColor m_map_titleRankColor; void SetTitle(const char * c_szName) bool IsPublicRank(const char * c_szName); } If you are put these things in private, your map will destroy from your file again and again Kind Regards Ken
    1 point
  20. WTF you says? His question is simply, he asked how to solve socket_tcp_bind: tcp_socket: Can't assign requested address Just open CONFIG of each ch and core and add this line : BIND_IP: XXX.XXXX.XXX.XXX XXX.XXX.XXX.XXX The public ip adress, userd by vbox or host
    1 point
  21. Don't blame him, he's maybe new to this Make sure you get to know your environment. The serverfiles consist of a dbcache, an auth-server and the cores (share directory is not important for this case). db and auth are usually in a folder called "common". The rest is splitted. Normally you have channel-directories like channel1, channel2, channel3, etc... If you just follow them you'll get the structure of your serverfile. Every channel consists of at least one core. Also there's one directory called game99, it's usually outside the channel directories because it's seperated and meant for special instances like wedding or OX. Feel free to experiment with them dbcache uses the db file. The db-file reads conf.txt, so that's not what you're looking for. Every gamefile uses CONFIG to read it's settings. There you go So remember: dbcache uses the db file, everything else is using a gamefile. And every gamefile needs a CONFIG to read it's settings. There just add the BIND_IP and you'd be ready to go
    1 point
  22. open your config i mean the file from /chanel1/core1/config chanel2/core2/ config game99/config
    1 point
  23. Make sure your items has flag 4 if your are using table protos or ITEM_STACKABLE if you are using txt protos As for the problem with icons/name check item_desc.txt and item_list.txt (from locale) and make sure the items are listed there and obviously make sure you have the icons for them
    1 point
  24. try to add that in the end of file # auctionwindow end
    1 point
  25. 1 point
  26. Try this quest quest teleport begin state start begin when login begin local map = pc.get_map_index() cmdchat("Index mapa : "..map) end when info or button begin local i = tonumber(input(cmdchat("Teleport GetInfo"))) if type(i) != "number" then return end local warp = teleport.warp_kords() if warp == nil then return end pc.warp(warp[1],warp[2]) end function warp_kords() return { {459800,953900}, --Dt {459800,953900}, --Tempel {459800,953900}, --Donner {459800,953900}, --Roter Wald {459800,953900}, --Kap {459800,953900}, --AD {459800,953900}, --Lungsam {459800,953900}, --NW {459800,953900}, --Berg Sohan {459800,953900}, --Bakra {459800,953900}, --OT {459800,953900}, --DC {459800,953900}, --Bokjung {459800,953900}, --AD {459800,953900}, --Chunjo {459800,953900}, --Nephritibucht {459800,953900}, --Grotte1 {459800,953900}, --Grotte2 {459800,953900}, --Grotte Boss {459800,953900}, --Sd2 {459800,953900}, --Sd3 {459800,953900}, --Sd Boss {459800,953900}, --Yayang {459800,953900}, --Shinsoo {459800,953900}, --AD {459800,953900}, --Wüste {459800,953900}, --Schlangenfeld {459800,953900}, --Jinno {459800,953900}, --Feuerland {10,10} --Gautamarkliff } end end end
    1 point
  27. The original config (and the modified one too!) uses states to keep track of open connections. The state table however, is by default limited to 10000 entries (FreeBSD 10.1 amd64), which could lead to problems during medium-/large-scale attacks, since new connections will be dropped once the table is full. I usually use the following memory pool limits for PF: set limit { states 100000, frags 20000, src-nodes 100000, table-entries 200000 } Raising the table-entries limit is also a good idea if you have dynamically filled tables of "bad hosts", same goes for src-nodes. It's also recommended to have a few whitelisted static IPs, whose traffic is passed unconditionally and stateless. e.g.: table <ovh> const { 213.186.33.13, 213.186.50.100 } pass in quick on $ext_if from <ovh> to any no state
    1 point
  28. I just answered a question here about how to load up the exp_table from a txt file, but maybe it will be useful for someone else too: Open main.cpp and add this to the top: #include "fstream" Search for this still in main.cpp: PanamaLoad(); Add this under that: // START_OF_EXP_TABLE_LOADING std::string temp_exp_line; std::ifstream exp_table_open("exptable.txt"); if (!exp_table_open.is_open()) return 0; int exp_table_counter = 0; while (!exp_table_open.eof()) { exp_table_open >> temp_exp_line; str_to_number(exp_table_common[exp_table_counter], temp_exp_line.c_str()); exp_table_counter++; } // END_OF_EXP_TABLE_LOADING Open constants.cpp and replace this: const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] = { ... }; With this: DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1]; Open constants.h and replace this: extern const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1]; With this: extern DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1]; exptable.txt example: [Hidden Content]
    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.