Jump to content

xP3NG3Rx

Honorable Member
  • Posts

    839
  • Joined

  • Days Won

    392
  • Feedback

    100%

Everything posted by xP3NG3Rx

  1. I patched the files manual with 4-5KB/s(32kbps) download speed, so... All in one the last update is 49,9MB, this was not 1-2 minutes
  2. Here is an unpacked patch from official client. There are the new pets by name: Eweriel and Ramblue (lamb_pet) metin2_patch_pet1 >> m2_15.5.5_20224 => Metin2 Download
  3. That is a good idea against the public "python pickup-bot"
  4. These files are coming from last update. metin2_patch_etc metin2_patch_party metin2_patch_pet1 metin2_patch_ramadan_costume Download (Metin2 Download) Password:
  5. Of course because the "dstSlotPos" variable is None in some cases and not int. Replace that line in "def refresh(self,dstSlotPos,srcSlotPos):" with this: try: attrSlot = [player.GetItemAttribute(dstSlotPos, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)] except TypeError: return
  6. ​Yes I have Mega.co.nz - Baby huashin Mega.co.nz - 2 Half moon(red and blue)
  7. The new update is not containing the new pets yet, so no problem Here are the old and the new crclist files, there you can see the modified files: Old New I think the new login packet has got a new data in byte probably(last used slot).
  8. Major Lazer Lean On (feat. M0 & DJ Snake) Feder - Goodbye ft Lyse (Original Mix)
  9. Omi - Cheerleader (Felix Jaehn Remix) Redfoo - New Thang
  10. Here it is: tkmt2-inf-package-old-not-actual.arc - 154 KB This client is sucks xD
  11. @AfterLife, Ol' Dirty Bastard ft. Kelis - Got Your Money Calvin Harris ft. Example - We'll Be Coming Back
  12. The cythonized root are modified. Before cython: def AutoSetItem(self, (invenType, invenPos), itemCount): After cython: def AutoSetItem(self, inven, itemCount): invenType, invenPos = inven
  13. Worakls - Bleu (Original Mix) Bedouin Soundclash - Brutal Hearts (Flic Flac Remix)
  14. ACMD(do_view_equip) { #ifndef ENABLE_VIEW_EQUIP_FOR_PLAYERS if (ch->GetGMLevel() <= GM_PLAYER) return; #endif //[...] ACMD(do_view_equip) { if (ch->GetGMLevel() <= GM_PLAYER && 0 == quest::CQuestManager::instance().GetEventFlag("view_equip_for_players")) return; //[...] Or how do you think?
  15. Can you sell your dragon stones in npc-shop? That root is containing your wolf modifications? I did not know.
  16. M2 Download Center Download Here ( Internal ) Hello everyone, It is a nice day to release my modifications to sell items from dragon soul inventory too So let's go. Serverside: 1) Open input_main.cpp 2.1) Search(CTRL+F) this: case SHOP_SUBHEADER_CG_SELL2: 2.2) Replace that whole case with this: case SHOP_SUBHEADER_CG_SELL2: { if (uiBytes < sizeof(WORD) + sizeof(BYTE) + sizeof(BYTE)) return -1; const WORD wPos = *reinterpret_cast<const WORD*>(c_pData); const BYTE bCount = *(c_pData + sizeof(WORD)); const BYTE bType = *(c_pData + sizeof(WORD) + sizeof(BYTE)); sys_log(0, "INPUT: %s SHOP: SELL2", ch->GetName()); CShopManager::instance().Sell(ch, wPos, bCount, bType); return sizeof(WORD) + sizeof(BYTE) + sizeof(BYTE); } 3) Save and close it, now open shop_manager.h 3.1) And replace this: void Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount = 0); 3.2) With this: void Sell(LPCHARACTER ch, WORD wCell, BYTE bCount = 0, BYTE bType = 0); 4) Save it and close it. 4.1) Next step; open shop_manager.cpp and search this function: void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount) 4.2) Replace the parameters/arguments only with this: LPCHARACTER ch, WORD wCell, BYTE bCount, BYTE bType 4.3) Search this line: LPITEM item = ch->GetInventoryItem(bCell); 4.4) And replace it with this: LPITEM item = ch->GetItem(TItemPos(bType, wCell)); 4.5-Choosable) I added a log function too into the antiflag_sell check against hackers 4.5.1) Replace this: if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_SELL)) return; 4.5.2) With this(as I said, this is choosable, not important change): if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_SELL)) { // In clientside the sell is blocked by python if a player arrive here he's a hacker, maybe. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't sell this item.")); sys_err("[HACKER] Force sell-script used by name [%u]%s.", ch->GetPlayerID(), ch->GetName()); return; } 5) Save and close the file, now you are ready to build your game. Clientside-BIN: 1) Open PythonNetworkStream.h 1.1) Search this: bool SendShopSellPacketNew(BYTE bySlot, BYTE byCount); 1.2) Replace it with this: bool SendShopSellPacketNew(WORD wSlot, BYTE byCount, BYTE byType); 2) Save it, close it. Open PythonNetworkStreamPhaseGameItem.cpp 2.1) Search this function: bool CPythonNetworkStream::SendShopSellPacketNew(BYTE bySlot, BYTE byCount) 2.2) Replace the whole function with this: bool CPythonNetworkStream::SendShopSellPacketNew(WORD wSlot, BYTE byCount, BYTE byType) { if (!__CanActMainInstance()) return true; TPacketCGShop PacketShop; PacketShop.header = HEADER_CG_SHOP; PacketShop.subheader = SHOP_SUBHEADER_CG_SELL2; if (!Send(sizeof(TPacketCGShop), &PacketShop)) { Tracef("SendShopSellPacket Errorn"); return false; } if (!Send(sizeof(WORD), &wSlot)) { Tracef("SendShopAddSellPacket Errorn"); return false; } if (!Send(sizeof(BYTE), &byCount)) { Tracef("SendShopAddSellPacket Errorn"); return false; } if (!Send(sizeof(BYTE), &byType)) { Tracef("SendShopAddSellPacket Errorn"); return false; } Tracef(" SendShopSellPacketNew(wSlot=%d, byCount=%d, byType=%d)n", wSlot, byCount, byType); return SendSequence(); } 3) Save and close. Open PythonNetworkStreamModule.cpp 3.1) Search this function: PyObject* netSendShopSellPacketNew(PyObject* poSelf, PyObject* poArgs) 3.2) And replace it with this: PyObject* netSendShopSellPacketNew(PyObject* poSelf, PyObject* poArgs) { int iSlotNumber; if (!PyTuple_GetInteger(poArgs, 0, &iSlotNumber)) return Py_BuildException(); int iCount; if (!PyTuple_GetInteger(poArgs, 1, &iCount)) return Py_BuildException(); int iType; if (!PyTuple_GetInteger(poArgs, 2, &iType)) return Py_BuildException(); CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance(); rkNetStream.SendShopSellPacketNew(iSlotNumber, iCount, iType); return Py_BuildNone(); } 4) Save, close and build Clientside-Python: Here you have to do it by yourself. The new function of the m2net/net module are called by 3 files uiInventory.py uiDragonSoul.py uiShop.py You have to edit these files if your files are not containing these updates, but thanks to [sA]Con for the newer root package from his release ^^ Here you can download the "new" root package which is containing every changes for this and for wolfman. I do not recomment to replace or overwrite your files with those files! Use a comparer tool like Notepad++ Compare plugin to check the differences at "sell" keyword. Tested and works, but if you found bug/mistake/error please write into this thread a detailed post. So not like this: ps.: I hope you understand everything, and sorry for my poor english:3 ps2: In the official bin this message " SendShopSellPacketNew(bySlot=%d, byCount=%d, byType=%d)" can be found, but I renamed the variable too, hehe :-D. With Regards, P3NG3R
  17. I think you have to need install the latest DirectX9.
  18. I do not know, but this is a good idea to make good videos
  19. No, you have to rename or fill those strings with 0x00's. So PyRun_SimpleString in hex: 50 79 52 75 6E 5F 53 69 6D 70 6C 65 53 74 72 69 6E 67 Replace with this: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 And do same with PyRun_SimpleFile too.
  20. Pitbull ft. Ne-Yo - Time Of Our Lives <3 Fritz Kalkbrenner - Back Home
  21. I have installed 2008PRO+SP1, 2010PRO+SP1, 2012U, 2013U VS and I compile my files in VS2013Ultimate with 2008 toolset. Installed other contents from Microsoft: Microsoft.Windows SDK for Windows 7 and .NET Framework 3.5 Microsoft.Windows SDK for Windows 7 and .NET Framework 4 Microsoft.Windows Server 2008 SDK and .NET Framework 3.5 (If i do not install these SDKs my VS tells me IL mismatch p1 p2 version blabla error message.) Only one problem with 2013VS: Huge RAM-Consuming But if you want to start a server, build your server src on BSD with gcc/g++.
  22. Everyone, but if you want to do it for GMs only, replace the ShowDefaultButton function with this: def ShowDefaultButton(self): self.isShowButton = True self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER]) self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE]) if chr.IsGameMaster(player.GetMainCharacterIndex()): self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT]) self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT]) self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW]) for button in self.showingButtonList: button.Show()
  23. Here is a diff to fix it for your problem(uitarget.py). [Hidden Content]
×
×
  • 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.