[RLS] Markierung neu gedroppter Items

  • Guten Abend,


    da LeNnT meint, Teile meines Codes in seinen Produkten, die er verkauft, verwenden zu müssen, habe ich mich nun dazu entschlossen, das ganze zu publizieren.


    Das Release bewirkt, dass Items, welche ihr neu erhaltet, im Inventar markiert werden (wie ein aktivierter Auto-Pott).



    Einbau


    1. Client-Source
    Datei: PythonSlotWindow.h (EterPythonLib)
    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. CAniImageBox * m_pSlotActiveEffect;


    Code
    1. CAniImageBox* m_apSlotActiveEffect[3];


    Datei: PythonSlotWindow.cpp (EterPythonLib)
    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. if (!m_pSlotActiveEffect)


    Code
    1. if (!m_apSlotActiveEffect[0] ||
    2. !m_apSlotActiveEffect[1] ||
    3. !m_apSlotActiveEffect[2])


    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. if (m_pSlotActiveEffect)
    2. m_pSlotActiveEffect->Update();


    Code
    1. for (int i = 0; i < 3; ++i)
    2. if (m_apSlotActiveEffect[i])
    3. m_apSlotActiveEffect[i]->Update();


    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. if (rSlot.bActive)
    2. if (m_pSlotActiveEffect)
    3. {
    4. int ix = m_rect.left + rSlot.ixPosition;
    5. int iy = m_rect.top + rSlot.iyPosition;
    6. m_pSlotActiveEffect->SetPosition(ix, iy);
    7. m_pSlotActiveEffect->Render();
    8. }



    Das 1. suchen und mit dem 2. ersetzen:



    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. if (m_pSlotActiveEffect)
    2. {
    3. delete m_pSlotActiveEffect;
    4. m_pSlotActiveEffect = NULL;
    5. }


    Code
    1. for (int i = 0; i < 3; ++i)
    2. {
    3. if (m_apSlotActiveEffect[i])
    4. {
    5. delete m_apSlotActiveEffect[i];
    6. m_apSlotActiveEffect[i] = NULL;
    7. }
    8. }


    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. m_pSlotActiveEffect = NULL;


    Code
    1. for (int i = 0; i < 3; ++i)
    2. m_apSlotActiveEffect[i] = NULL;



    2. Client
    Datei: interfaceModule.py
    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. def Highligt_Item(self, inven_type, inven_pos):
    2. if player.DRAGON_SOUL_INVENTORY == inven_type:
    3. if app.ENABLE_DRAGON_SOUL_SYSTEM:
    4. self.wndDragonSoul.HighlightSlot(inven_pos)


    Code
    1. def Highligt_Item(self, inven_type, inven_pos):
    2. if player.DRAGON_SOUL_INVENTORY == inven_type:
    3. if app.ENABLE_DRAGON_SOUL_SYSTEM:
    4. self.wndDragonSoul.HighlightSlot(inven_pos)
    5. elif player.SLOT_TYPE_INVENTORY == inven_type:
    6. self.wndInventory.HighlightSlot(inven_pos)


    Datei: uiInventory.py
    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. class InventoryWindow(ui.ScriptWindow):


    Code
    1. class InventoryWindow(ui.ScriptWindow):
    2. liHighlightedItems = []


    Das 1. suchen und mit dem 2. ersetzen:



    Die Methode InventoryWindow.RefreshBagSlotWindow(self) wie folgt anpassen:


    Der Klasse InventoryWindow folgende Methoden hinzufügen:

    Code
    1. def HighlightSlot(self, slot):
    2. if not slot in self.liHighlightedItems:
    3. self.liHighlightedItems.append(slot)
    4. def __RefreshHighlights(self):
    5. for i in xrange(player.INVENTORY_PAGE_SIZE):
    6. slotNumber = self.__InventoryLocalSlotPosToGlobalSlotPos(i)
    7. if slotNumber in self.liHighlightedItems:
    8. self.wndItem.ActivateSlot(i)



    3. Server-Source (Game)
    Datei: char.h
    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. void SetItem(TItemPos Cell, LPITEM item);


    Code
    1. void SetItem(TItemPos Cell, LPITEM item, bool bWereMine = false);


    Datei: char_item.cpp
    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem)


    Code
    1. void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem, bool bWereMine)


    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. pack.highlight = (Cell.window_type == DRAGON_SOUL_INVENTORY);


    Code
    1. pack.highlight = !bWereMine || (Cell.window_type == DRAGON_SOUL_INVENTORY);


    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. SetItem(DestCell, item);


    Code
    1. SetItem(DestCell, item, true);


    Datei: input_db.cpp
    Der Methode CInputDB::ItemLoad(LPDESC d, const char * c_pData) folgendes hinzufügen:


    Datei: item.h
    Das 1. suchen und mit dem 2. ersetzen:

    Code
    1. DWORD GetLastOwnerPID() { return m_dwLastOwnerPID; }


    Code
    1. void SetLastOwnerPID(DWORD pid) { m_dwLastOwnerPID = pid; }
    2. DWORD GetLastOwnerPID() { return m_dwLastOwnerPID; }


    Datei: item.cpp
    Der Methode CItem::AddToCharacter(LPDESC d, const char * c_pData) folgendes hinzufügen:





    Die Dateien (Bitte melden Sie sich an, um diesen Link zu sehen.) in bspw. das ETC Archiv packen in das Verzeichnis D:/ymir work/ui/


    Special Thanks geht hierbei an Souza, da er mich dazu gebracht hat, das ganze zu schreiben.


    RE-Releases erlaubt und ERWÜNSCHT, solange meine Credits bestehen bleiben!


    MfG

  • Dieses Thema enthält 5 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.