Jump to content

Metin2 Dev

Bot
  • Posts

    2151
  • Joined

  • Last visited

  • Feedback

    100%

Everything posted by Metin2 Dev

  1. What compiler do you use for compiling the db, what freebsd for compiling and what freebsd for runing, also do you compile with -j ?
  2. Subliminal message : BAC ?
  3. Hello, Most of you maybe know the exploit in combination with inventory sorting and channel changer, but it's also possible with a small script and no other systems involved. Thanks to Fliegex3 / Colossus. [Hidden Content] char_item.cpp in bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, WORD count) find if (!IsValidItemPosition(DestCell)) { return false; } add if (Cell.cell == DestCell.cell) return false;
  4. That variable it's always 1 for the mall window, my advice is to compare all the code from function CClientManager::RESULT_SAFEBOX_LOAD with a clasic one and solve the bug with the addresses I told you about.
  5. For the mall the grid is placed on the db, check ClientManager.cpp bellow this line: CGrid grid(5, MAX(1, pi->pSafebox->bSize) * 9); Also try this (a common bug in metin2 source): In ClientManagerBoot.cpp search: sort(m_vec_itemTable.begin(), m_vec_itemTable.end(), FCompareVnum()); And move it before the iterator is initialized like this: m_map_itemTableByVnum.clear(); // Now it's here sort(m_vec_itemTable.begin(), m_vec_itemTable.end(), FCompareVnum()); itertype(m_vec_itemTable) it = m_vec_itemTable.begin(); while (it != m_vec_itemTable.end()) { TItemTable * item_table = &(*(it++)); sys_log(1, "ITEM: #%-5lu %-24s %-24s VAL: %ld %ld %ld %ld %ld %ld WEAR %lu ANTI %lu IMMUNE %lu REFINE %lu REFINE_SET %u MAGIC_PCT %u", item_table->dwVnum, item_table->szName, item_table->szLocaleName, item_table->alValues[0], item_table->alValues[1], item_table->alValues[2], item_table->alValues[3], item_table->alValues[4], item_table->alValues[5], item_table->dwWearFlags, item_table->dwAntiFlags, item_table->dwImmuneFlag, item_table->dwRefinedVnum, item_table->wRefineSet, item_table->bAlterToMagicItemPct); // Also you can insert these values after the sort but because we // already looping through the list of items once (for the syslog), it's better to // move the sort function above (the complexity is half this way) m_map_itemTableByVnum.insert(std::map<DWORD, TItemTable *>::value_type(item_table->dwVnum, item_table)); } // It was here return true;
  6. Or you can call the accept button event like this: def OnIMEReturn(self): if self.acceptButton: self.acceptButton.CallEvent() return True
  7. Right, uiPrivateShopBuilder.py -> class PrivateShopAdvertisementBoard(ui.ThinBoard): add these:
  8. ? The code you posted can be explained like this: When I get a sash (mostly with /item command) I will get (1,2,3 or 4) absortion based on sash type (wtf???) and with that discrete_distribution I have a change to get +abs. Example: I have a small change to get a type 1 sash with 6 absortion ? Please don't copy code from other files if you don't know what it does. Rubinum used discrete_distribution when you combine two level 4 sashes for the +abs PS: the code you posted is from item.cpp not char_item.cpp
  9. Take this: [Hidden Content] Compare the folders and copy the changes in your root source. PS: you might already have interface binded
  10. Yes. Save them in a file inside the folder of the client and hash them somehow with a unique identifier (like mac address, or something like that) so only that computer can acces them in case of stolen.
  11. Dear Metin2Dev Community, Is there anyway to store the account details without administration rights?
  12. It get's random stuff from the memory but because it's a gm command don't stress about it. But if you really want that gone try a lenght check: ACMD(do_notice) { if(strlen(argument) < 2) return; BroadcastNotice(argument + 1); }
  13. ACMD(do_notice) { BroadcastNotice(argument + 1); } Be careful though, that +1 should not be done without a size check.
  14. The name of that sword (name from item_proto.txt) might start with a number. The method that loads the mob_drop_item.txt search first for the item name not vnum. Example: 50028 24k 금반지 ITEM_SPECIAL If I try to add an item with vnum 24 to mob_drop_item.txt I will drop item with vnum 50028 Easy fix for this is to add it like 0024 ? Also check the file ori_to_new_table.txt.
  15. Yeah, I see what you talking about. The Dead method is called so fast now and it removes the stun flag so the check for the skill is not working anymore. Try this: // char_skill.cpp // Replace: if (!pkChrVictim->Damage(m_pkChr, iDam, dt) && !pkChrVictim->IsStun()) // With: if (!pkChrVictim->Damage(m_pkChr, iDam, dt) && !pkChrVictim->IsStun() && !pkChrVictim->IsDead())
  16. I don't see you having some exp bonus so there are three posibilities (or maybe more) : 1. You have a premium exp (those columns from account table) 2. You have double exp directly from the source (I saw some people doing that) 3. You have priv but the messages are not shown somehow
  17. Use /state on the character you get double exp and post a screenshot of the output.
  18. They (ymir) used Stun because it does more stuff beside locking the character. Also they checked some stuff with the IsStun so I recommend you keep using it. Try this and tell me if it's ok: // char.h // Replace: void Stun(); // With: void Stun(bool bJustDie = false); // char_battle.cpp // Replace: void CHARACTER::Stun() { ... } // With: void CHARACTER::Stun(bool bJustDie) { if (IsStun()) return; if (IsDead()) return; if (!IsPC() && m_pkParty) { m_pkParty->SendMessage(this, PM_ATTACKED_BY, 0, 0); } sys_log(1, "%s: Stun %p", GetName(), this); PointChange(POINT_HP_RECOVERY, -GetPoint(POINT_HP_RECOVERY)); PointChange(POINT_SP_RECOVERY, -GetPoint(POINT_SP_RECOVERY)); CloseMyShop(); event_cancel(&m_pkRecoveryEvent); // 회복 이벤트를 죽인다. if(bJustDie) { SET_BIT(m_pointsInstant.instant_flag, INSTANT_FLAG_STUN); Dead(); } else { TPacketGCStun pack; pack.header = HEADER_GC_STUN; pack.vid = m_vid; PacketAround(&pack, sizeof(pack)); SET_BIT(m_pointsInstant.instant_flag, INSTANT_FLAG_STUN); if (m_pkStunEvent) return; char_event_info* info = AllocEventInfo<char_event_info>(); info->ch = this; m_pkStunEvent = event_create(StunEvent, info, PASSES_PER_SEC(3)); } } // Inside: bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // Replace: if (GetHP() <= 0) { Stun(); if (pAttacker && !pAttacker->IsNPC()) m_dwKillerPID = pAttacker->GetPlayerID(); else m_dwKillerPID = 0; } // With: if (GetHP() <= 0) { if (pAttacker && !pAttacker->IsNPC()) m_dwKillerPID = pAttacker->GetPlayerID(); else m_dwKillerPID = 0; Stun(true); }
  19. The entire fix is just to add that line ?
  20. The tutorial is very old ? New tutorial: // PythonApplicationProcedure.cpp // After: if (m_isWindowFullScreenEnable) { __MinimizeFullScreenWindow(hWnd, m_dwWidth, m_dwHeight); } // Just add: OnMouseMiddleButtonUp(0, 0); That's all! ?
  21. If you buy the system from @VegaS™ contact @VegaS™.
  22. I tested the script several times in real time without any problems
  23. Hello community, I decided to create a script for local and remote backups, I left the code as organized and clean as possible. Requirements -sshpass Install sshpass cd /usr/ports/security/sshpass/ && make install clean pkg install sshpass Script [Hidden Content] Best regards, Papix
  24. drag the game file over Sequence Table Patcher and done
×
×
  • 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.