-
Posts
855 -
Joined
-
Days Won
402 -
Feedback
100%
Content Type
Forums
Store
Feature Plan
Release Notes
Docs
Events
Everything posted by xP3NG3Rx
-
Neighbors
-
Ehh, the "g_iItemStackCount" is mine global config-variable you have to replace to your max count of item stackage. And the "g_iItemOwnershipTime" is the maximal ownership time also config-variable. And awhhh #include "refine.h" into questlua_item.cpp, sorry for that .
-
Yeah, I forgot that :3 Why? It is working for me O.o Have you got any error or only empty results? (Did you replace the name?^^)
-
I never got problem like that, so I don't know. Maybe you missed out something.
-
Tomcraft - "Like A Roller" The Isley Brothers - "Fight The Power (Part 1 & 2) (1975)" | [The Heat]
-
LoadLocaleData - LoadMobProto(locale/fr/mob_proto) Error You failed your mob_proto.
-
The multiple-opening was a problem but already not Check the first post to fix it.
-
I checked the files and there is no fault in them. Me works perfectly with Test Client für 40250 too:
-
@TheSLZ: There is no syntax error in the files. Maybe check again what did you do.
-
M2 Download Center Download Here ( Internal ) Hi devs! The original equipment viewer is not updated for the new equipments I am thinking of costumes + rings + belt Here is the extended version. Here are my modified files to root and uiscript package, the .py files: uiEquipDialog.py Pastebin ~ MEGA UIScriptEquipmentDialog.py Pastebin ~ MEGA UIScriptCostumeEquipmentDialog.py Pastebin ~ MEGA Ehm yeah this was the easiest part of this, now comin' the serverside and binary parts. Server: 1.) Open gamepacket.h than search for: "typedef struct pakcet_view_equip" and replace all structure with this: typedef struct pakcet_view_equip { BYTE header; DWORD vid; struct { DWORD vnum; BYTE count; long alSockets[ITEM_SOCKET_MAX_NUM]; TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM]; } equips[16]; } TPacketViewEquip; PS: lel "pakcet" xD nevermind Save&Close 2.) Open char.cpp and search for this: "void CHARACTER::SendEquipment(LPCHARACTER ch)" and replace the event with this(Thanks ATAG): void CHARACTER::SendEquipment(LPCHARACTER ch) { TPacketViewEquip p; p.header = HEADER_GC_VIEW_EQUIP; p.vid = GetVID(); int pos[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 20, 21, 22, 23 }; for (int i = 0; i < 16; i++) { LPITEM item = GetWear(pos[i]); if (item) { p.equips[i].vnum = item->GetVnum(); p.equips[i].count = item->GetCount(); thecore_memcpy(p.equips[i].alSockets, item->GetSockets(), sizeof(p.equips[i].alSockets)); thecore_memcpy(p.equips[i].aAttr, item->GetAttributes(), sizeof(p.equips[i].aAttr)); } else { p.equips[i].vnum = 0; } } ch->GetDesc()->Packet(&p, sizeof(p)); } Serverside done! - Build! Binary: 1.) Open UserInterfacePacket.h than search for this: "typedef struct pakcet_view_equip" and replace with this: typedef struct pakcet_view_equip { BYTE header; DWORD dwVID; TEquipmentItemSet equips[16]; } TPacketGCViewEquip; PS: we met again with pakcet xD, Save&Close. 2.) Open UserInterfacePythonNetworkStreamPhaseGame.cpp than search for this: "bool CPythonNetworkStream::RecvViewEquipPacket()" and replace with this: bool CPythonNetworkStream::RecvViewEquipPacket() { TPacketGCViewEquip kViewEquipPacket; if (!Recv(sizeof(kViewEquipPacket), &kViewEquipPacket)) return false; PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "OpenEquipmentDialog", Py_BuildValue("(i)", kViewEquipPacket.dwVID)); for (int i = 0; i < 16; ++i) { TEquipmentItemSet & rItemSet = kViewEquipPacket.equips[i]; PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogItem", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, rItemSet.vnum, rItemSet.count)); for (int j = 0; j < ITEM_SOCKET_SLOT_MAX_NUM; ++j) PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogSocket", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, j, rItemSet.alSockets[j])); for (int k = 0; k < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++k) PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogAttr", Py_BuildValue("(iiiii)", kViewEquipPacket.dwVID, i, k, rItemSet.aAttr[k].bType, rItemSet.aAttr[k].sValue)); } return true; } Binaryside done! - Build! ---Edit---- Multiple opening bugfix: Open interFaceModule.py and search for this: "def OpenEquipmentDialog(self, vid):" if you found it replace that function with this: def OpenEquipmentDialog(self, vid): if self.equipmentDialogDict.has_key(vid): self.equipmentDialogDict[vid].Destroy() self.CloseEquipmentDialog(vid) dlg = uiEquipmentDialog.EquipmentDialog() dlg.SetItemToolTip(self.tooltipItem) dlg.SetCloseEvent(ui.__mem_func__(self.CloseEquipmentDialog)) dlg.Open(vid) self.equipmentDialogDict[vid] = dlg Show the "View equip" button on the targetbar: Open uitarget.py and check this diff to fix it for yourself: [Hidden Content] ( ----EndEdit---- Ohh I almost forgot, here are the bgs ^^-> ui.7z - MEGA All done, press escape to exit... :')
- 68 replies
-
- 297
-
-
-
-
-
-
-
-
-
-
Benny Benassi Vs Sean Paul - Satisfaction (Extended Remix) David Guetta - Raise Your Hands (ft. Miguel)
-
I do not know, If I have an item into the belt inventory I can't change belt.
-
inventory viewer bug
xP3NG3Rx replied to brianman's topic in Community Support - Questions & Answers
I thought so that the problem will be the unused wear positions, anyway thanks! Finished ^^ -
inventory viewer bug
xP3NG3Rx replied to brianman's topic in Community Support - Questions & Answers
Interesting O.o I'm trying to extend the ViewEquipment with costumes, rings and belt, but I get packet error when I call it. Phase Game does not handle this header (header: 204, last: 99, 204) wtf? HEADER_GC_HS_REQUEST = 204, The window opens and fill up the slots with items without rings and belt and than I get that packet header error. Okay, challenge accepted . -
Could you explain it? Because -> link (Slow internet 32kbps T_T) I know this bug, and I fixxed this 4 month ago Prewritten txt with pictures: ds fix.7z But the problem is the SItemPos struct in common/length.h. Here is the fixxed: typedef struct SItemPos { BYTE window_type; WORD cell; SItemPos () { window_type = INVENTORY; cell = WORD_MAX; } SItemPos (BYTE _window_type, WORD _cell) { window_type = _window_type; cell = _cell; } bool IsValidItemPosition() const { switch (window_type) { case RESERVED_WINDOW: return false; case INVENTORY: case EQUIPMENT: case BELT_INVENTORY: return cell < INVENTORY_AND_EQUIP_SLOT_MAX; case DRAGON_SOUL_INVENTORY: return cell < (DRAGON_SOUL_INVENTORY_MAX_NUM); // µżŔűŔ¸·Î Ĺ©±â°ˇ Á¤ÇŘÁö´Â window´Â valid ĂĽĹ©¸¦ ÇŇ Ľö°ˇ ľř´Ů. case SAFEBOX: case MALL: return false; default: return false; } return false; } bool IsEquipPosition() const { return (IsDefaultInventoryEquipPosition() || IsDragonSoulEquipPosition()); } bool IsDefaultInventoryEquipPosition() const { return ((INVENTORY == window_type || EQUIPMENT == window_type) && cell >= INVENTORY_MAX_NUM && cell < INVENTORY_MAX_NUM + WEAR_MAX_NUM); } bool IsDragonSoulEquipPosition() const { return ((INVENTORY == window_type || EQUIPMENT == window_type) && cell >= DRAGON_SOUL_EQUIP_SLOT_START && cell < DRAGON_SOUL_EQUIP_SLOT_END); } bool IsBeltInventoryPosition() const { return ((INVENTORY == window_type) && cell >= BELT_INVENTORY_SLOT_START && cell < BELT_INVENTORY_SLOT_END); } bool IsDefaultInventoryPosition() const { return ((INVENTORY == window_type) && cell < INVENTORY_MAX_NUM); } bool operator==(const struct SItemPos& rhs) const { return (window_type == rhs.window_type) && (cell == rhs.cell); } bool operator<(const struct SItemPos& rhs) const { return (window_type < rhs.window_type) || ((window_type == rhs.window_type) && (cell < rhs.cell)); } } TItemPos; Me works
-
With the original exchange.cpp file will not show "succes" when the target's inventory is full.
-
Yuri Alexeev - Requiem For A Dream (Original Mix) ~ This is my ringtone too :3 David Correy feat. Chris Johnson - Live Your Life
-
The source of problem is a function which check the exchanging ppl empty spaces in the inventory. bool CExchange::CheckSpace()
-
inventory viewer bug
xP3NG3Rx replied to brianman's topic in Community Support - Questions & Answers
View-Equipment? That is not bug, just not implemented. -
Your converted protos are crap. Why? Simple: // vnum ą× vnum range Ŕбâ. { std::string s(csvTable.AsStringByIndex(0)); int pos = s.find("~"); // vnum Çʵ忡 '~'°ˇ ľř´Ů¸é ĆĐ˝ş if (std::string::npos == pos) { itemTable->dwVnum = dataArray[0]; itemTable->dwVnumRange = 0; } else { std::string s_start_vnum (s.substr(0, pos)); std::string s_end_vnum (s.substr(pos +1 )); int start_vnum = atoi(s_start_vnum.c_str()); int end_vnum = atoi(s_end_vnum.c_str()); if (0 == start_vnum || (0 != end_vnum && end_vnum < start_vnum)) { sys_err ("INVALID VNUM %s", s.c_str()); return false; } itemTable->dwVnum = start_vnum; itemTable->dwVnumRange = end_vnum - start_vnum; // HERE YOUR TXT FAIL } } Thanks Sanchez.
-
Jesus Christ. AppendTextLine is a method of uiTooltip.Tooltip() class object. You can use two methods of TextLine to make a colored line: class TextLine(Window): def SetFontColor(self, red, green, blue): wndMgr.SetFontColor(self.hWnd, red, green, blue) def SetPackedFontColor(self, color): wndMgr.SetFontColor(self.hWnd, color) The packed color is that what the grp module can generate to you with the GenerateColor method. For example(lightgreen): packed_color = grp.GenerateColor(105./255, 1., 75./255, 1.) Usage: text = ui.TextLine() #text.SetParent(self) text.SetDefaultFontName() text.SetPosition(16, 77) text.SetPackedFontColor(grp.GenerateColor(105./255, 1., 75./255, 1.)) #text.SetFontColor(105/255., 255./255, 75./255) text.SetText("This is a green message") text.Show()
-
Doesn't work for me :S First start Second start It pisses me off when I restart my PC I can start the db again by once. It's works! I forgot to save the AsyncSQL.cpp file changes in Notepad++ x'Đ
-
official [Old][Archive] - [Official] Unpacked Updates Metin2.de
xP3NG3Rx replied to Shogun's topic in Guides & HowTo
I think the capoeira costumes is not a new "product" of ymir 'coz the filenames of hairstyles are hair_12.gr2, anyway here are the official icons of capoeira costumes + item_proto.txt: [Hidden Content] ps.: I have not the tooltip images of hairstyles :S (icon/hair/*.sub ;*.tga)
