-
Posts
855 -
Joined
-
Days Won
402 -
Feedback
100%
Content Type
Forums
Store
Feature Plan
Release Notes
Docs
Events
Everything posted by xP3NG3Rx
-
The cythonized root are modified. Before cython: def AutoSetItem(self, (invenType, invenPos), itemCount): After cython: def AutoSetItem(self, inven, itemCount): invenType, invenPos = inven
-
Worakls - Bleu (Original Mix) Bedouin Soundclash - Brutal Hearts (Flic Flac Remix)
-
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?
-
Can you sell your dragon stones in npc-shop? That root is containing your wolf modifications? I did not know.
-
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
-
I think you have to need install the latest DirectX9.
-
Granny viewer - change background color
xP3NG3Rx replied to Maslovicz's topic in Community Support - Questions & Answers
I do not know, but this is a good idea to make good videos -
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.
-
Pitbull ft. Ne-Yo - Time Of Our Lives <3 Fritz Kalkbrenner - Back Home
-
[question] ymir untouched source
xP3NG3Rx replied to cosmin24hd's topic in Community Support - Questions & Answers
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++. -
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()
-
Here is a diff to fix it for your problem(uitarget.py). [Hidden Content]
-
Fritz Kalkbrenner - Back Home <3
-
Client develop or something
xP3NG3Rx replied to Aemon's topic in Community Support - Questions & Answers
Compile your binary in Debug mode. -
HELP SKILLS STUFF WOLFMAN
xP3NG3Rx replied to -YC-'s topic in Community Support - Questions & Answers
Like this: ## Wolfman content chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+42, "Bip01", "d:/ymir work/effect/hit/blow_poison/bleeding_loop.mse") chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+43, "Bip01", "d:/ymir work/effect/hit/blow_flame/flame_loop_w.mse") chrmgr.RegisterEffect(chrmgr.EFFECT_AFFECT+44, "", "d:/ymir work/pc3/common/effect/gyeokgongjang_loop_w.mse") ## End of Wolfman content From official. chr.AFFECT_BLEEDING: 42 chr.AFFECT_RED_POSSESSION: 43 chr.AFFECT_BLUE_POSSESSION: 44 -
Here is in xml: [Hidden Content] Syntax: <MobDef Vnum="101" Name="??" LocalizedName="Căo Selvagem" Type="0" Rank="0" BattleType="0" Level="1" Size="0" DropGoldMin="0" DropGoldMax="0" Experience="15" MaxHP="126" RegenCycle="6" RegenPercent="7" Defense="4" AIFlags="0" RaceFlag="1" ImmuneFlag="0" Str="3" Dex="6" Con="5" Int="2" DamageMin="20" DamageMax="24" AttackSpeed="100" MovingSpeed="100" AggressiveHPPct="0" AggressiveSight="2000" AttackRange="175" EnchantCurse="0" EnchantSlow="0" EnchantPoison="0" EnchantStun="0" EnchantCritical="0" EnchantPenetrate="0" ResistSword="0" ResistTwohand="0" ResistDagger="0" ResistBell="0" FesistFan="0" ResistBow="0" ResistFire="0" ResistElect="0" ResistMagic="0" ResistWind="0" ResistPoison="0" ResistBleeding="0" ResurrectionVnum="0" DropItemVnum="0" MountCapacity="0" OnClickType="0" Empire="0" Folder="stray_dog" DamMultiply="1.000000" SummonVnum="0" DrainSP="0" MonsterColor="0" PolymorphItemVnum="0" SkillVnum0="0" SkillLevel0="0" SkillVnum1="0" SkillLevel1="0" SkillVnum2="0" SkillLevel2="0" SkillVnum3="0" SkillLevel3="0" SkillVnum4="0" SkillLevel4="0" BerserkPoint="0" StoneSkinPoint="0" GodSpeedPoint="0" DeathBlowPoint="0" RevivePoint="0" />
-
Cruel: There is my item_proto-table that tells everything. But if someone does not use his brain, I will not help. Anyway, here is my ClientManagerBoot.cpp: [Hidden Content] It is not clean so, be careful what do you do with it! Use a comparer tool to check the differences.
-
Juventa feat. Erica Curran - Move Into Light (Koven Remix) <3
-
With original old skill effects? **_**
-
Melted ore into jewelry
xP3NG3Rx replied to TyWin's topic in Community Support - Questions & Answers
item.cpp -> bool CItem::CanPutInto(LPITEM item) -
You can do it here: def __SetNormalItemTitle(self): self.SetTitle(item.GetItemName()) def __SetSpecialItemTitle(self): self.AppendTextLine(item.GetItemName(), self.SPECIAL_TITLE_COLOR) def __SetItemTitle(self, itemVnum, metinSlot, attrSlot): if localeInfo.IsCANADA(): if 72726 == itemVnum or 72730 == itemVnum: self.AppendTextLine(item.GetItemName(), grp.GenerateColor(1.0, 0.7843, 0.0, 1.0)) return if self.__IsPolymorphItem(itemVnum): self.__SetPolymorphItemTitle(metinSlot[0]) else: if self.__IsAttr(attrSlot): self.__SetSpecialItemTitle() return self.__SetNormalItemTitle()
-
The Equalizer, it was awesome.
-
Hm, it's a good idea, thanks
-
official [Old][Archive] - [Official] Unpacked Updates Metin2.de
xP3NG3Rx replied to Shogun's topic in Guides & HowTo
Impossible. -
Please forget the unnecessary quote(s). If you make a private shop with a stack of packages (ex: with 103pcs) it will not remove every packages, just only one of them. So when you made a private shop, after the opening you will have 102 packages more. Ahh, maybe he want to change the vnum of package.. In this case you can do it on this offset: 58F7A: 18 C4 is in hex form 0xC418 = 50200 00058F79: 3D 18 C4 00 00 18 C4 00 00 this is the VNUM of package.
