Jump to content

Karbust

Management
  • Posts

    1161
  • Joined

  • Days Won

    10
  • Feedback

    100%

Everything posted by Karbust

  1. I already have it, it works with weapons and armors, but not every mount, like I showed on the video...
  2. Hey, did you manage to fix the effects? It is working but not on everything, somehow some mounts don't get the effect:
  3. You could also probably try using JetBrains's CLion with Qt, or only Qt (C++). CLion CMake's projects are also detected by Windows Defender, but the final executable isn't. For C#, you could try JetBrains's Rider. It doesn't require Visual Studio installed, only .NET.
  4. After all, it's getting detected. I haven't used this patcher in almost 2 years. I made a fresh compilation just in case. [Hidden Content] I'm currently using the patcher I made in Electron, it isn't being detected. [Hidden Content]
  5. I've also used this patcher as a base for years and never had any problem with antiviruses...
  6. I also followed this topic. It indeed looks interesting.
  7. I keep getting this error in Debug mode: std::shared_ptr<CGrannyMotion> CGraphicThing::GetMotionPointer(int iMotion) { assert(CheckMotionIndex(iMotion)); //line 131 if (iMotion >= m_pgrnFileInfo->AnimationCount) return NULL; if (m_motions.empty()) return NULL; return m_motions.at(iMotion); } Any idea? Thank you
  8. Well, actually didn't try that option, tried others and none worked so, made a new one. I though the SelectItem only worked with items in the inventory/safebox/etc., based on the code I saw, so I didn't even test it. Thanks for your input as always
  9. Sup bois I needed a way to get the value3 on hair costumes to be used on render target: But, I needed to get the value3 with the change look system, for which there wasn't a function already. Open UserInterface -> PythonItemModule.cpp, and after: PyObject* itemLoadItemTable(PyObject* poSelf, PyObject* poArgs) Add: PyObject* itemGetValueByVnum(PyObject* poSelf, PyObject* poArgs) { int iValueIndex; if (!PyTuple_GetInteger(poArgs, 0, &iValueIndex)) return Py_BadArgument(); int iVnum; if (!PyTuple_GetInteger(poArgs, 1, &iVnum)) return Py_BadArgument(); CItemData* pItemData; CItemManager::Instance().GetItemDataPointer(iVnum, &pItemData); if (!pItemData) return Py_BuildException("Not yet select item data"); return Py_BuildValue("i", pItemData->GetValue(iValueIndex)); } Then, after: { "LoadItemTable", itemLoadItemTable, METH_VARARGS }, Add: { "GetValueByVnum", itemGetValueByVnum, METH_VARARGS }, How to use it? On uitooltip.py elif itemSubType == item.COSTUME_TYPE_HAIR: #Hair if self.__ItemGetRace() == player.GetRace(): itemVnum_prv = itemVnum if app.ENABLE_CHANGE_LOOK_SYSTEM and getChangelookVnum: itemVnum_prv = getChangelookVnum self.__ModelPreview(item.GetValueByVnum(3, itemVnum_prv), 1, player.GetRace()) else: self.__ModelPreview(item.GetValue(3), 1, player.GetRace()) Result:
  10. You can find in that topic all the updates from metin2 official. It also includes the protos.
  11. Use like this: PUBLIC_IP: internal ip PROXY_IP: external ip Like I said, I use this both on cloud (AWS) and localhost, when I want friends to join. About the mysql, check the logs (/var/db/mysql) for errors.
  12. Ignore my define, I usually disable it on localhost, unless I have friends joining in. void DESC::SendLoginSuccessPacket() { TAccountTable & rTable = GetAccountTable(); TPacketGCLoginSuccess p; p.bHeader = HEADER_GC_LOGIN_SUCCESS_NEWSLOT; p.handle = GetHandle(); p.random_key = DESC_MANAGER::instance().MakeRandomKey(GetHandle()); // FOR MARK thecore_memcpy(p.players, rTable.players, sizeof(rTable.players)); for (int i = 0; i < PLAYER_PER_ACCOUNT; ++i) { #ifdef ENABLE_PROXY_IP if (!g_stProxyIP.empty()) rTable.players[i].lAddr=inet_addr(g_stProxyIP.c_str()); #endif CGuild* g = CGuildManager::instance().GetLinkedGuild(rTable.players[i].dwID); if (g) { p.guild_id[i] = g->GetID(); strlcpy(p.guild_name[i], g->GetName(), sizeof(p.guild_name[i])); } else { p.guild_id[i] = 0; p.guild_name[i][0] = '\0'; } } Packet(&p, sizeof(TPacketGCLoginSuccess)); }
  13. On Google cloud and AWS, you need to use this: [Hidden Content]
  14. I already have it like this: def OnKeyDown(self, key): if self.interface.wndWeb and self.interface.wndWeb.IsShow(): return if key == app.DIK_ESC: self.RequestDropItem(FALSE) constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0) try: self.onPressKeyDict[key]() except KeyError: pass except: raise return TRUE It happens with ESC and clicking Cancel... EDIT: Solved. Thanks @PACI On game.py, on RequestDropItem function, at the end was SET_ITEM_DROP_QUESTION_DIALOG_STATUS, but on uidragonsoul.py it was checking for GET_ITEM_QUESTION_DIALOG_STATUS...
  15. Yes I added dbg on the RequestDropItem function def RequestDropItem(self, answer): dbg.LogBox("Got here") if not self.itemDropQuestionDialog: dbg.LogBox("Got here 2") return if answer: dropType = self.itemDropQuestionDialog.dropType dropCount = self.itemDropQuestionDialog.dropCount dropNumber = self.itemDropQuestionDialog.dropNumber if player.SLOT_TYPE_INVENTORY == dropType or\ (player.SLOT_TYPE_SKILL_BOOK_INVENTORY == dropType or\ player.SLOT_TYPE_UPGRADE_ITEMS_INVENTORY == dropType or\ player.SLOT_TYPE_STONE_INVENTORY == dropType or\ player.SLOT_TYPE_GIFT_BOX_INVENTORY == dropType or\ player.SLOT_TYPE_CHANGERS_INVENTORY == dropType and app.ENABLE_SPECIAL_INVENTORY_SYSTEM): if dropNumber == player.ITEM_MONEY: net.SendGoldDropPacketNew(dropCount) snd.PlaySound("sound/ui/money.wav") else: # PRIVATESHOP_DISABLE_ITEM_DROP self.__SendDropItemPacket(dropNumber, dropCount) # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP elif player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == dropType: # PRIVATESHOP_DISABLE_ITEM_DROP self.__SendDropItemPacket(dropNumber, dropCount, player.DRAGON_SOUL_INVENTORY) # END_OF_PRIVATESHOP_DISABLE_ITEM_DROP self.itemDropQuestionDialog.Close() self.itemDropQuestionDialog = None dbg.LogBox("Got here 3") constInfo.SET_ITEM_DROP_QUESTION_DIALOG_STATUS(0) It's reaching "Got here" and "Got here 3"
  16. Hello Any idea on how to solve this bug? In case the video isn't enough, after I try to drop a dragon soul gem, I can't do anything else on the window until I close and re-open the client.
  17. Those are git changes, not sure what website "reverses" them. You can easily apply the changes by hand. Where you find a "-" it's the line that got removed/edit. Where you find a "+" it's the new line.
  18. Actually, I did not, but from the calculations I just did, that string is well bellow the 512 max size, and that function works fine (when the db doesn't crash while loading another character). But thank you anyway.
  19. Well, I don't know what to tell you. I've search all "socket" occurrences on db and I can't find any problem...
  20. GetItemCache already returns NULL in case it doesn't find the item... CItemCache * CClientManager::GetItemCache(DWORD id) { TItemCacheMap::iterator it = m_map_itemCache.find(id); if (it == m_map_itemCache.end()) return NULL; return it->second; } In here: CItemCache * c; if (!pNew) return; c = GetItemCache(pNew->id); // 아이템 새로 생성 if (!c) { if (g_log) sys_log(0, "ITEM_CACHE: PutItemCache ==> New CItemCache id%d vnum%d new owner%d", pNew->id, pNew->vnum, pNew->owner); c = new CItemCache; m_map_itemCache.insert(TItemCacheMap::value_type(pNew->id, c)); } Declares "c", then if GetItemCache doesn't return an object of type CItemCache, it will return a NULL value, then it's the if... Doing "!c" or "c == NULL" it's the same thing. The problem is why the "new CItemCache" crashes the db, and only when the 6 slots are enabled, otherwise it runs without any problem...
  21. That's the complete opposite of the previous instruction... Obviously it will crash on the else when it tries to access anything inside and find nothing...
  22. I recently noticed that the client closes after the character levels up, but not always, but almost always. On the client syserr I get different packets, like this: Unknown packet header: 194, last: 17 75 Unknown packet header: 235, last: 17 75 Nothing reported on the server side syserr. packet.h typedef struct packet_point_change { int header; DWORD dwVID; BYTE type; long long amount; long long value; } TPacketGCPointChange; char.h typedef struct character_point { long long points[POINT_MAX_NUM]; BYTE job; BYTE voice; int level; DWORD exp; long long gold; long hp; int sp; long iRandomHP; int iRandomSP; int stamina; BYTE skill_group; } CHARACTER_POINT; I used this: Any idea? Like I said, it doesn't happen every time, but it happens more times than it doesn't.
  23. What? My extern folder only has cryptopp self-compiled, nothing else, all other libraries are through installed packages...
  24. Tried without the -j flag, same error. Also without the -j flag, tried c++17 and c++14, nothing. My clang version: # clang++ -v FreeBSD clang version 11.0.1 ([email protected]:llvm/llvm-project.git llvmorg-11.0.1-0-g43ff75f2c3fe) Target: i386-unknown-freebsd13.0 Thread model: posix InstalledDir: /usr/bin Without using the 6 slots it works completely, that PutItemCache function isn't something new, so I wasn't expecting changes to make it work
×
×
  • 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.