Jump to content

Chitra

Active+ Member
  • Posts

    31
  • Joined

  • Last visited

  • Days Won

    1
  • Feedback

    100%

Chitra last won the day on August 28

Chitra had the most liked content!

4 Followers

About Chitra

Informations

  • Gender
    Male
  • Country
    Romania

Recent Profile Visitors

2333 profile views

Chitra's Achievements

Rising Star

Rising Star (9/16)

  • Collaborator Rare
  • Very Popular Rare
  • Dedicated
  • Reacting Well
  • First Post

Recent Badges

906

Reputation

  1. Download Preview individual interface elements from .sub files without opening the game. Simply open or drag and drop your .sub, DDS, or TGA files to view the selected element, inspect its position in the full image, and export the preview as a PNG file. Preview:
      • 2
      • Metin2 Dev
      • Love
  2. An extension for the Metin Queue system that allows players to quickly select multiple Metin Stones directly from the game world. Instead of adding each stone individually, players can draw a selection area with the mouse, similar to the selection box on a Windows desktop. Every visible Metin Stone within that area is automatically detected and added to the queue.
  3. Added a fully controllable camera shake system for Python. - Adjustable duration - Adjustable intensity Example: app.SetShakeCamera(3.0, 5) GitHub README included with full documentation. Download Alternative download links → GitHub or Alternate_2 or Alternate_3
      • 17
      • Metin2 Dev
      • Love
      • Good
  4. In that case, you most likely don't have that system. Which will make it impossible for you to implement that part.
  5. If you don't have "MarkUnusableInvenSlotOnTopWnd" then there is another system that uses in uiiinventory.py the function "def RefreshMarkSlots(self, localIndex=None):" if you have this part you can add it: elif onTopWnd == player.ON_TOP_WND_QUICK_SELL: if player.IsAntiFlagBySlot(slotNumber, item.ITEM_ANTIFLAG_SELL): self.wndItem.SetUnusableSlotOnTopWnd(localIndex) else: self.wndItem.SetUsableSlotOnTopWnd(localIndex)
  6. with the update was put restriction on moving objects in the inventory when the window is open. [USE ANOTHER IMAGE HOSTING]
  7. ## UPDATE 1.When the sales window appears, items that cannot be sold will be displayed in white. 2.While the window is open, items can no longer be moved to the inventory. 3.The selling prices of the items will appear in the tooltip when the window is open. 4.A log has been added to the interface, allowing you to see the names of the items you want to sell. Files such as add-ons and button images have been added to the repository.
  8. Hi, I found this issue only for the Diamond Dragon (Raw) inventory and noticed that the original code doesn't manage the free slots properly. Attached below are the before and after GIFs. The GIFs demonstrating the issue are also attached. [Hidden Content] or [Hidden Content]
      • 82
      • Metin2 Dev
      • Good
      • Flame
      • Love
      • Love
  9. The update was made to no longer display text for equipped items. Changes: Search in uitooltip.py : self.AppendQuckSellItem() Change with : self.AppendQuckSellItem(slotIndex) Search: if app.QUICK_SELL_SYSTEM: def AppendQuckSellItem(self): Change all with: if app.QUICK_SELL_SYSTEM: def AppendQuckSellItem(self,slotIndex): if player.IsEquipmentSlot(slotIndex): return if item.IsAntiFlag(item.ITEM_ANTIFLAG_SELL): return else: self.AppendSpace(5) self.AppendTextLine(localeInfo.QUICK_SELL_TOOLTIP, self.NORMAL_COLOR)
  10. Update has been made to hide the window when a quest is opened and to close it when you change the character/logout The update has been uploaded to git Changes: Delete from def Close(self): if app.QUICK_SELL_SYSTEM: self.__MakeQuickSell() Search def Close(self) and add: if app.QUICK_SELL_SYSTEM: if self.wndQuickSell: self.wndQuickSell.Hide() Search def HideAllWindows(self) and add: if app.QUICK_SELL_SYSTEM: if self.wndQuickSell: self.wndQuickSell.Hide()
  11. Hello, Thank you for the code posted. I encountered a few issues with it, including a memory leak, so I've optimized and fixed it. Example: Code: ACMD(do_drop) { char arg1[256], arg2[256]; two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2)); if (!*arg1 || !*arg2) { ch->ChatPacket(CHAT_TYPE_INFO, "Syntax: drop_simul <mob vnum> <count>"); return; } DWORD vnum = 0, loopCount = 0; str_to_number(vnum, arg1); str_to_number(loopCount, arg2); std::unordered_map<DWORD, long long> givenItems; LPCHARACTER pkAttacker = CHARACTER_MANAGER::instance().SpawnMobRandomPosition(vnum, ch->GetMapIndex()); if (!pkAttacker) return; for (DWORD count = 0; count < loopCount; ++count) { std::vector<LPITEM> vecItems; if (ITEM_MANAGER::instance().CreateDropItem(pkAttacker, ch, vecItems)) { for (LPITEM item : vecItems) { if (!item) { sys_err("item null in vector"); continue; } givenItems[item->GetVnum()] += item->GetCount(); sys_log(0, "DROP_ITEM_SIMULATE: %s by %s", item->GetName(), ch->GetName()); } } } ch->ChatPacket(CHAT_TYPE_PARTY, "############### |cFF6d8cf2|H|h%dx %s|h|r DROP SIMULATION ###############", loopCount, pkAttacker->GetName()); for (const auto& info : givenItems) { DWORD dwItemVnum = info.first; long long itemCount = info.second; LPITEM pItem = ITEM_MANAGER::instance().CreateItem(dwItemVnum, itemCount, 0, true); if (pItem) { const char* color = (pItem->GetVnum() == quest::CQuestManager::instance().GetEventFlag("high_item")) ? "|cFFf77f77" : "|cFFf5ef78"; ch->ChatPacket(CHAT_TYPE_PARTY, "Simulated item %s|H|h%s|h|r, %d pieces", color, pItem->GetName(), itemCount); M2_DESTROY_ITEM(pItem); } } M2_DESTROY_CHARACTER(pkAttacker); }
  12. Hi, [Hidden Content] [Hidden Content] This quest is responsible for granting basic costumes to players when they reach certain levels in the game. The quest is triggered when a player logs in or levels up in the game. It checks the player's level and grants various cosmetic items if certain conditions are met. Basic Costume: Players receive a basic costume based on their gender. Basic Hairstyle: Players receive a basic hairstyle and an additional cosmetic item. Basic Pet: Players receive a basic pet at a certain level. Basic Weapon: Players receive a basic weapon based on their class. Basic Mount: Players receive a basic mount at a certain level.
  13. You need to adapt the system to the server you have. @tw1x1responded well about your emoji. The okay and close buttons are from the transmutation system. If you don't have them, you can replace them with the classic okay and close buttons. Or you can download them from the internet.
  14. Sorry, I forgot to attach that function. The github has been updated with the missing file. def NumberToDecimalStringQuickSell(n): return "%s" % ('.'.join([i - 3 < 0 and str(n / 5)[:i] or str(n / 5)[i - 3:i] for i in range(len(str(n / 5)) % 3, len(str(n / 5)) + 1, 3) if i]))
  15. Add in your ui.py before def MakeImageBox def MakeBoardWithTitleBar(parent, flag, title, closeEvent, width, height): board = BoardWithTitleBar() board.SetParent(parent) board.SetSize(width, height) board.AddFlag(flag) board.SetTitleName(title) board.SetCloseEvent(closeEvent) board.Show() return board
×
×
  • 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.