Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 06/30/14 in all areas

  1. Hey guys :3 I just tried some new things with photoshop... here is the result: It's also scripted (big thx to poccix). Download: KLICK ME Download of the psd: [Hidden Content]
    2 points
  2. Hi guys. Here is a new release of mine , Archbishop NPC . ENJOY ! Download: MEGA VIRUS TOTAL The password for extracting archive is metin2dev.org . Have fun and enjoy this release . More to come , stay tuned .
    2 points
  3. M2 Download Center Download Here ( Internal ) Hi everyone, Today I bring you a collection of maps made by Ymir that were included at some point in an official client but were never used. The maps are: GM Guild Building Field Dungeon Ginseng Valley (b2) - Second version of Dragon Valley (Orcs area) Heavenly Valley (c2) - Third version of Dragon Valley (Orcs area) Dragon Timeattack 1 - Dungeon possibly used in Korea, used by SG for Dragon Timeattack event Dragon Timeattack 2 Dragon Timeattack 3 Test map - Actually a town EW02 - ? Guild Inside - Supposed to be the inside of a guild house Milgyo Pass & Sungzi - A collection of alternative maps for Nation War. Requires editing forked_road.txt in order to add them to this event. Siege - Three maps one for each kingdom, for a kingdom event You might also be interested in the Metin2 Korea Naga map available here
    1 point
  4. Hi, In this thread I'm going to show you how to make a game-client or client-game communication with packets, instead of using the old quest-client, client-quest communication. Lets start with the game-client, in this example I will send 1 variable to the client. First start with the HEADER, open your binary source and navigate to UserInterface/Packet.h. Now you will see many headers, create a new one, but search for an empty number. I will use 57, because its not used. GC means it's used for Game -> Client packet, it's just a prefix. HEADER_GC_METIN2DEV Now add the structure for the packet, this is most important part. Structure is the "body" of the packet, it contains the HEADER as BYTE and the other optional variables. As I said I just want to send one int type to the client, so add it. typedef struct command_metin2dev_packet { BYTE bHeader; int M2int; } TPacketGCMetin2Dev; Now navigate to UserInterface/PythonNetworkStream.cpp and add your header to the CMainPacketHeaderMap class. The first parameter of the Set is the HEADER, second is the size of the structure. We will use just static size packets in this tutorial, but the third argument can be dynamic size too. Set(HEADER_GC_METIN2DEV, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCMetin2Dev), STATIC_SIZE_PACKET)); Now navigate to UserInterface/PythonNtworkStreamPhaseGame.cpp and add the function to the switch. case HEADER_GC_METIN2DEV: ret = RecvM2DevPacket(); break; The name of the function will be RecvM2DevPacket: Now declarate the function, navigate to UserInterface/PythonNetworkStream.h and add it as public: bool RecvM2DevPacket(); Now add the receiver part of the code. Recv "picks" out xy bytes from the buffer and the return type of it is false if there was no data in the buffer by that size otherwise true, which means it was successful. xy = size of the structure bool CPythonNetworkStream::RecvM2DevPacket() { TPacketGCMetin2Dev Metin2DevGC; if (!Recv(sizeof(TPacketGCMetin2Dev), &Metin2DevGC)) { Tracen("Recv Metin2DevGC Packet Error"); return false; } } Now we are calling the BINARY_M2DEV_Test function in game.py and passing the received data. PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_M2DEV_Test", Py_BuildValue("(i)", Metin2DevGC.M2int)); This was the client-side of the game-client communication, lets start the server-side: First of all we need to add the header again, navigate to game/packet.h and add this: And the structure: typedef struct packet_metin2dev_packet { BYTE byHeader; int M2int; } TPacketGCMetin2Dev; Now navigate to game/char.cpp and create a function which sends the packet. void CHARACTER::SendMetin2DevPacket() { } Declare it in the game/char.h: void SendMetin2DevPacket(); Now lets add the content of the function. Create a new instance of the structure, set the values of it and send it to the client. void CHARACTER::SendMetin2DevPacket() { if (!GetDesc()) { return; } TPacketGCMetin2Dev Metin2DevGC; Metin2DevGC.byHeader = HEADER_GC_METIN2DEV; Metin2DevGC.M2int = GetPlayerID(); GetDesc()->Packet(&Metin2DevGC, sizeof(TPacketGCMetin2Dev)); } Now add the last function to game.py, this will be called by the binary: def BINARY_M2DEV_Test(self, M2int): import dbg dbg.LogBox(str(M2int)) Finally, lets check how it works: If you have any question or suggestion, please just reply to this topic. Kind Regards, Sanchez
    1 point
  5. M2 Download Center Download Here ( Internal ) I would like to present you our new website made 100% by darkdev.eu, it's an old version but the most stable and clean on the internet at the moment. This is a free version wich includes basic functions and some added. The premium version includes : vote reward, refferal system, website included devilium itemshop, view deposit, cached menu`s and much more. We need to asure that full script and design made by darkdev.eu , only thing that is from others is the daten.inc for the bonuses and crap like that Size: 2.530 MB Language : Romanian ( sorry, but it`s easy to translate it ) Facilities : It has alot more functions but i will let u guys find out about them. In present it is used by over 200 servers romanian and other. If you use it please keep de copyrights , and change so : Mady by darkdev.eu for SERVER NAME Also we are taking request for custom designs and scripts : Portfolio [Hidden Content]
    1 point
  6. VIDEO: [Hidden Content] DOWNLOAD PASSWORD: RatedR203 © TGC-TEAM
    1 point
  7. M2 Download Center Download Here ( Internal ) A very good evening, Today I present you the Samurai weapons I've made The Grips fit well Icon's are included. Alpha channel included to prevent the heavy shining Weapons were exported perfectly. Packed as Eix/Epk file Video : [Hidden Content] Download : [Hidden Content]
    1 point
  8. Hello metin2dev, Vanilla project is a project where I'm going to modify the source code just to enhance the capabilities of the gamecore, add small new stuff, bugfixing and making it more comfortable to use. Some of the goals are more performance and lesser dependencies on dif-files. This project reached a level where it's easy to use and offers tons of new features. Many bugs and exploits are fixed. Additionally, this gamefile is the only one released for everyone that's having so much features and still allows you to customize them to your needs! There are a lot of CONFIG-options where you can enable/disable systems and even tune them to your needs. You won't need difs anymore, you can just configure the gamefile as you want! It's the only gamefile released that's compiled with newer libraries and gcc 4.9.1 with even more optimization to enhance the speed and lower the file size of the gamefile. Also this game has the package-system disabled by default and lets you run the dbcache from mysql tables by default instead of txt-files! That allows you to easily upgrade your current gamefile without the need to create new directories or convert your proto's to txt! You just have to download the package I provided, extract it and to read the install instructions! I promise you there isn't much to read! Since the source code is written by YMIR and I respect their work I won't release the source code or give any peeks into it. current version: 2.4.1 Developed version: 2.5 Download: See second post! *FEATURE LIST* + removed the license functions so the server won't connect to a license server nor check if your server is valid + removed the time limitation so it won't even check the time limit. This crash issue is completely fixed. + merged all the exp tables to the "exp_table_common" which will be used by ANY locale. You can change the needed exp for 200 levels there. + Max_level can be raised in the CONFIG file to a maximum of 255. + status points will be given at any level. It depends now on Max_level so if you set max_level to 120 you'll get status points until level 120! + fixed vampirism effects so you won't loose hp when you make an overkill (suras may embrace this change) + exp bonus now works comulutative instead of just making a chance to get double exp. If you have 20% exp bonus in your items you'll get 20% more exp at any time. + Rewrote the version check. You can now set your server version in your CONFIG-file and let it check with the client version. If serverversion != clientversion the server will print a message and kick the player out + Raised the gold limit up to 999.999.999.999 + membuf-errors fixed! Now you have a optimized buffer length so it won't consume much RAM but still have enough to not kick players out. + you can now give priv_empire (or other priv's) up to 2000% at any time. + a lot of new quest functions, when triggers and CONFIG-options + more stability and performance especially since it's compiled with a newer gcc version + Optimization flags and linker optimization enabled + ip's beginning with 5. and 25. are now allowed by the internal ip-check + Items can now be sold for 0 gold + 6/7 bonus are now working + name-change works with every locale + gold overflow: Now resets the gold to the maximum value to fight against gold overflow + horse-table has new entries for up to level 51. Raising the level extends the horse-stats. + New error handling for bonus overflow. Now the bonus will be set to the maximum generating a warning in your syserr + player movement speed will be observerd by the server now and set down to the maximum value if it's too high. + Skills can now apply new bonuses! You can e. g. raise your int-attribute + Dbcache can now start without txt-files + If you're warped into a non-existing map or non-existing coordinates your coordinates will be resetted to map1 of your village; You won't need unstuckers anymore + adminpage_ip set to localhost by default so it'll only listen to itself to prevent attackings from API tool. Additionally it's disabled by default and you can enable it with a CONFIG-option. Say good bye to the API tool! + Tons of bug fixes even YMIR had! + Completely rebuild of the source with gcc4.9, cryptopp 5.6.2 and boost 1.55; new optimizations flags and C++11 are enabled to make the core much more faster and more stable! + Advanced spam protection installed! + Unknown packet headers will no longer lead to a disconnect though they'll get dropped + Second binary compiled with 4 inventory pages! + Added the new skill flags so they can use FIRE, ICE, ELEC and DARK + Anti-Exp in the game source + reload q corrected. Note! Still not recommended. But if it's crashing, it'll now notice you. *Gameplay changes* + HP/MP overflow fixed + yang limit raised to unsigned long long int! + Fixed a huge load of format errors that'd actually crash the core! + Speedhack limit fixed so you won't get teleported back when riding + item.remove() won't remove stacks anymore! It'll just reduce the amount of the stack by 1. It there's only one left, the item will be removed. + Bypass to createa guild under level 40 fixed! + Guild wars won't crash the core anymore! + immune bug fixed (completely!!!) + Anti-Overflow mechanism prevents people from receiving too much gold + prisma glass system enabled and fixed + 6/7 bonuses work + polymorph bug fixed + invisibility bug fixed + empire exploit fixed + belt system and dragon soul system enabled + level size raised up to a normal int + You can put items for 0 gold in a shop + Exp can go higher than long int. It's now unsigned long long int (which makes higher exp requirements possible) *New CONFIG-options* MAX_LEVEL_STATUS: unsigned int Forces a maximum level. If you level up higher than this, you'll receive no status points anymore. MAX_STATUS: unsigned int Sets a maximum of distributed status points. If you e. g. set it to 20, you can only raise your stat's by 20 each status. SERVER_CHECK: 1/0 Checks if the client version and the server version are the same. If not, the server will send a message to the client and kick him out after a few seconds. SERVER_VERSION: unsigned int There you can set the version of your server for the SERVER_CHECK. MAX_HT: unsigned int It's the same option than MAX_STATUS but only for the con-attribute. MAX_IQ: unsigned int It's the same option than MAX_STATUS but only for the int-attribute. MAX_ST: unsigned int It's the same option than MAX_STATUS but only for the str-attribute. MAX_DX: unsigned int It's the same option than MAX_STATUS but only for the dex-attribute. ATTR_ALWAYS_ADD: 1/0 If enabled you'll get 100% chance to add new attributes to you equipment. ATTR_ALWAYS_5_ADD: 1/0 If enabled you'll get 100% chance to add new attributes to you equipment. Counts only for 5th Bonus (blessing marble). ATTR_CHANGE_LIMIT: int You can set a limit time to change your attributes again. It's changed to seconds (set it to 1 to let the users switch only once per second their attributes). GUILD_MAX_LEVEL: int Sets the maximum guild level. You can raise it up to 50 since the exp-table is extended to handle up to 50. ITEM_OWNERSHIP_TIME: int If you drop an item, this option sets how long the item will be flagged as yours. MIN_ADDON_FKS: int Sets the minimum ability bonus dmg you can have. MAX_ADDON_FKS: int Sets the maximum ability bonus dmg you can have. MIN_ADDON_DSS: int Sets the minimum normal hit bonus dmg you can have. MIN_ADDON_DSS: int Sets the maximum normal hit bonus dmg you can have. SKILLBOOK_DELAY: int Sets the time limit for reading a book (e. g. if you read skill books you'll have to wait x seconds until you can read the same skill book again). SKILLBOOK_NEED_EXP: int Sets the exp you need for reading a book. SKILLBOOK_ALWAYS_BOOK: 1/0 Sets if every book will be handled as you'd have used a skillbook chance amplifier. GOLD_DROP_TIME_INTERVAL: int Sets how long you have to wait until you can drop gold again. SEQUENCE_CHECK: 1/0 Enables a check if the sequence table is the same than the client's one. SKILLBOOK_STEP_LEVELING: 1/0 Enables the need of more books for raising a skill (e. g. you need 2 books from m2 to m3). RAISE_EMPIRE_PRICES: 1/0 Enables the raise of prices if you buy items in another empire. HORSE_MAX_LEVEL: int Sets the maximum level of your horse (you still need to write quests or something like that to allow players to achieve the higher horse-levels). MARRIAGE_MAX_PERCENT: int Sets the maximum allowed percent of love points. Warning! If love points > 100 it'd lead into bugs with breaking the marriage. PC_MAX_MOVEMENT_SPEED: int Sets the maximum movement speed for players. PC_MAX_ATTACK_SPEED: int Sets the maximum attack speed for players. MOB_MAX_MOVEMENT_SPEED: int Sets the maximum movement speed for mobs. MOB_MAX_ATTACK_SPEED: int Sets the maximum attack speed for mobs. TAXES: int From 0 to 100. Sets the % how much taxes you have to pay while shopping. DYE_LEVEL: int Sets how many levels you have to get after you can change your hair color again. YANG_MAX: long long Sets the maximum gold you can carry. You can change it up to 999.999.999.999 gold. package_enable: 0/1 1 = enabled. Disabled by default. Enable to use the package-feature. log_level: 0/1/2 Sets the logging level. 0 means to logs will be entered in your database. 1 means that the most important tables (hack-logs for example) will be used 2 means that all logging tables will be used new_test_server: 0/1 Protects your test-server so the gamecore will check if accounts are written into gmlist before granting them implementor-privileges. new_gm_host_check: 1/0 Checks the gmhost and gmlist for the right ip before granting privileges. Disabled by default. adminpage_enable: 1/0 Enables the adminpage-features. Disabled by default (say bye bye to API tools) adminpage_no_localhost: 1/0 Disables the security feature which inserts localhost into your adminpage_ip so it'll only listen to localhost. item_floor_time: int Set the time how long a dropped item will be lying on the ground (by monsters) max_rank_points: long int Set the maximum rank points movement_speed: int Set the initial movement speed for players. belt_all_allow_items: 0/1 Allow Players to store every item in their belt inventory attr_rare_enable: 0/1 Allow the using of rare attributes (6th and 7th attributes). Default: ON. GOLD_DROP_TIME: int Sets the time how long dropped gold will lay on the ground until it's purged. ITEM_DROP_TIME: int Sets how long dropped items will lay on the ground intil it's purged. BELT_FORCE_SLOTS: int Forces to open up the given amount of slots in your belt inventory. If this value is higher than the grade of your belt, it'll open the given amount of slots. If it's lower, the amount your belt provides will be used. For example: You set 10. You've got a belt that opens 5 slots. 10 will be opened. Now you set 4 and still have the same belt. This time 5 slots will be opened. This does also work when no belts are weared. But be careful: Since there's also a clientside part the slots may appear to be locked but you can still put items into them trade_effect: 1/0 Enables a effect that'll occur when people are traing stuff. Enabled by default. ban_force_reason: 1/0 This lets the ban-command only work when you're giving a reason. Disabled by default. start_gold: long int Let's players start with a custom amount of gold. Default: 0. view_equip_for_all: 1/0 Let's player view equip of others! Disabled by default. view_equip_sp_cost: int Sets the cost of using view_equip. This is in % so if you type in 30 then it'll cost 30% of the players maximum sp. Default: 0. glass_enable: 1/0 Enables the prisma glass-system to print your items in the chat. Disabled by default. glass_needed: 1/0 Sets if you need a glass for using the prisma glass-system or not. Enabled by default. trade_effect_exchange_threshold: int Sets the threshold to create another effect when making an exchange. Default: 500000. This means, that every 500000 gold traded away there'll be another fly effect created trade_effect_shop_threshold: int Same as trade_effect_exchange_threshold; This points to buying items in shops. Default: 100000000. VERSIONCHECK_KICK_DELAY: int Default is 10. Sets the time until the player is kicked when a version mismatch is occured. Takes only effect if the versioncheck is enabled. EMOTION_WITHOUT_MASK: 1/0 Default is 0. Lets you define if you won't need a mask to use emotions. EMOTION_SAME_GENDER: 1/0 Default is 0. Lets you define if people will be able to use emotions on the same gender. Notice: This'd possibly look awkward because the animations doesn't match CHECK_SPEEDHACK_ENABLE: 1/0 Default is 1. Lets you define if you want to use the speedhack/synchack check. Warning! Make sure you only use this for debugging purpose! You can fine-tune the variables for the speedhack in your CONFIG, so this should normally not be touched! QUEST_TRIGGER_ENABLE: 1/0 Default is 1. Lets you define if you want to use the new execute-trigger. EXP_NEED_THRESHOLD: unsigned long long int Allows you to set the exp needed if your level is higher than the maximum level of the exp table SKILL_MASTER_UPGRADE: int Sets the minimum level when your skill can jump to master. If it's set to 1 for example, then it'd happen that your skill jumps to m1 at any level. SKILL_FORCE_MASTER: 1/0 Lets you define if your skill will definitely raise to m1 if it hits the minimum level for jumping. So if you're enabling this, then your skill will definitely (unless you set SKILL_MASTER_UPGRADE) raise to m1 when hitting 17. BUGFIX_SURA_MANASHIELD: 1/0 Default is disabled. Fixes the sura manashield so it'll now scale with the proper value instead of always removing a third of the damage. Warning! When activating, you'd nerf the skill! Otherwise people with over 100 iq could prevent every incoming damage and even heal themselves or cause crashes! *New questfunctions* item.get_attr_type(int index) item.get_attr_value(int index) item.set_attr(int ApplyType, int ApplyValue[, int index]) npc.get_level() game.mysql_real_escape_string(string query) game.mysql_query(string query) game.mysql_update_query(string query) pc.delayed_disconnect(int zeit) pc.get_mount_vnum() pc.set_level(int level) pc.send_effect(int id) pc.block_exp() pc.unblock_exp() item.equip() npc.select() pet.is_mine() pc.get_id() *New conf.txt options* TXT_STARTUP = 0/1 1 = enabled. Disabled by default. Enable to boot with txt-files instead of sql *New quest trigger* OnBuy (triggers on buying a item from players or npc's) OnDie (triggers on dying) *commands* /ban playername reason /unban playername full list of all allowed bonuses for skills: MAX_HP MAX_SP HP_REGEN SP_REGEN BLOCK HP SP ATT_GRADE DEF_GRADE MAGIC_ATT_GRADE MAGIC_DEF_GRADE BOW_DISTANCE MOV_SPEED ATT_SPEED POISON_PCT RESIST_RANGE CASTING_SPEED REFLECT_MELEE ATT_BONUS DEF_BONUS RESIST_NORMAL DODGE KILL_HP_RECOVER KILL_SP_RECOVER HIT_HP_RECOVER HIT_SP_RECOVER CRITICAL MANASHIELD SKILL_DAMAGE_BONUS NORMAL_HIT_DAMAGE_BONUS HT IQ ST DX STUN_PCT SLOW_PCT PENETRATE_PCT ATTBONUS_HUMAN STEAL_HP STEAL_SP MANA_BURN_PCT DAMAGE_SP_RECOVER RESIST_SWORD RESIST_TWOHAND RESIST_DAGGER RESIST_BELL RESIST_FAN RESIST_BOW RESIST_FIRE RESIST_ELEC RESIST_MAGIC RESIST_WIND REFLECT_CURSE POISON_REDUCE EXP_DOUBLE_BONUS GOLD_DOUBLE_BONUS ITEM_DROP_BONUS POTION_BONUS IMMUNE_STUN IMMUNE_SLOW IMMUNE_FALL CURSE_PCT STA ATTBONUS_WARRIOR ATTBONUS_ASSASSIN ATTBONUS_SURA ATTBONUS_SHAMAN ATTBONUS_MONSTER MAX_HP_PCT MAX_SP_PCT SKILL_DEFEND_BONUS NORMAL_HIT_DEFEND_BONUS RESIST_WARRIOR RESIST_ASSASSIN RESIST_SURA RESIST_SHAMAN ENERGY RESIST_CRITICAL RESIST_PENETRATE Thanks to: xP3NG3Rx for some quest functions Sphinx² & lollo_9_1 for the mysql-functions Lefloyd for the 2 new quest triggers .InyaProduction for some new quest functions Tim for the suggestion to include libs from a special path MartPwnS for helping with the src code on gcc48/gcc49 And especially thanks to you!
    1 point
  9. Gorgeous <3 Perfect mount for a monarch. Thanks for this nice release
    1 point
  10. I think they didn't surpassed the 8th episode, but it was superb season finale nevertheless. Until the new season comes out, I'll read out the Feast for Crows too, so I'm curious how the TV episodes will affect me after having got to know the story.
    1 point
  11. Using npc.get_vid() (if you use 2089M core or 34083, you should search for a difference file).
    1 point
  12. 1 point
  13. That is the horriblest way to do the duel system i ever seen. 1) You are setting: pc.setqf("asesinatos", pc.getqf("asesinatos")+1) Is it usefull for something? Do you use any check on it? 2) After the Ultrakill the system count return 0 and start again.. If you are doing a long series of kill you ll do multiple pentakill wtf? 3) There isn't any delay to check the time between kills.In this way i can collect my pentakill in for example 20 day.. 4)Quest didn't check if the player is killed during his killing spree. 5)No sounds or any control for the killed player. Finally i want belive that you describe it as duel kill like to the video one..
    1 point
  14. Vanilla can you make for 2.5 a system like the LibGameSDK from iMer for your gamefile? Because I think the Source of your projekt will be nevere release. So I ask you "Can you make a system that we can expand the gamefile with functions and that very easy?" As functions I meen Features that the Server make it more unique. I hope you understand my bad English
    1 point
  15. M2 Download Center Download Here ( Internal ) A beautiful good day, Today I present you my 2 objects for the disposal of boredom I 've created for you. -HD Texturen -Right export Download : Here Virustotal : Here
    1 point
  16. usually the 9th episode is the "biggest" episode of a season but this time I guess there will be happening alot in the last episode aswell. Arya and Sansa (dont know how to writer her) will maybe meet or if they are unlucky will pass them again and we will find out what will happen to Tyrion. After the final episode the waiting for season 5 will kill me ._.
    1 point
  17. I go add my client. Thanks for share!
    1 point
  18. Hi everyone, I forgot to wrote the Client-Game communication last week, but here it is now: First start again with the HEADER, the name of mine would be HEADER_CG_METIN2DEVORG. Navigate to UserInterface/Packet.h and add this: HEADER_CG_METIN2DEVORG = 58, I will send the VID of the player to the server with one int variable: typedef struct command_metin2dev_send_packet { BYTE byHeader; int data; } TPacketCGMetin2DevOrg; Now navigate to UserInterface/PythonNetworkStreamModule.cpp and add this: PyObject* netCallM2DevPacket(PyObject* poSelf, PyObject* poArgs) { int iData; if (!PyArg_ParseTuple(poArgs, "i", &iData)) { return Py_BuildException(); } if (iData < 0) { return Py_BuildNone(); } CPythonNetworkStream& rns = CPythonNetworkStream::Instance(); rns.SendMetin2DevOrgPacket(iData); return Py_BuildNone(); } Open UserInterface/PythonNetworkStream.h and search for this: bool RecvMallOpenPacket(); Add this over that: bool SendMetin2DevOrgPacket(int data); Open PythonNetworkStreamPhaseGame.cpp and the fill the content of the send function: bool CPythonNetworkStream::SendMetin2DevOrgPacket(int data) { TPacketCGMetin2DevOrg M2DevPacket; M2DevPacket.byHeader = HEADER_CG_METIN2DEVORG; M2DevPacket.data = data; if (!Send(sizeof(M2DevPacket), &M2DevPacket)) return false; return SendSequence(); } Now add the latest codes on the client side, navigate to UserInterface/PythonNetworkStreamModule.cpp and add this: // M2DEV { "SendM2DevPacket", netCallM2DevPacket, METH_VARARGS }, Lets continue with the server-side, first start again with the HEADER in game/packet.h: HEADER_CG_METIN2DEVORG = 58, And with the structure: typedef struct command_metin2dev_send_packet { BYTE byHeader; int data; } TPacketCGMetin2DevOrg; The first argument of Set is HEADER, second is the size of the structure, third is an optional string and the fourth is a boolean. Nearly the most important part of the function is the boolean, we can decide here, do we want to use sequence check? In this case I want, so set it to true. Open game/packet_info.cpp and add this to the CPacketInfoCG::CPacketInfoCG(): Set(HEADER_CG_METIN2DEVORG, sizeof(TPacketCGMetin2DevOrg), "Metin2Dev", true); Now navigate to game/input_main.cpp and add this to the switch at the end of the file: case HEADER_CG_METIN2DEVORG: Metin2DevReceivePacket(ch, c_pData); break; Create the function for the Metin2DevReceivePacket still in game/input_main.cpp: void CInputMain::Metin2DevReceivePacket(LPCHARACTER ch, const char* c_pData) { } Now add declaration of the Metin2DevReceivePacket to the CInputMain class in game/input.h: void Metin2DevReceivePacket(LPCHARACTER ch, const char* c_pData); Fill the content of the function: TPacketCGMetin2DevOrg* p = (TPacketCGMetin2DevOrg*)c_pData; sys_log(0, "PLAYER ID: %i", p->data); Thats all, now just make a simple button in the game to call this function: net.SendM2DevPacket(player.GetTargetVID()) Example: def Button1_Event(self): net.SendM2DevPacket(player.GetTargetVID()) Finally, check how it works: Kind Regards, Sanchez
    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.