6 mesaje
Administrator Administrator
  • Mesaje: 4448
  • Reacții: 89381
  • Mesaje utile: 44
  • Status: Pe aici.. 🤠
  • Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Contact:
    *Descriere:

    Mareste limita de stack de la obiecte de la 200 -> la cat vrei tu! O:-)

    Cu ajutorul tutorialului de mai jos vei putea sa maresti limita de stack al itemelor din inventar, astfel in loc de standardul de 200 obiecte / stack, vei putea aduna si 10,000 bucati intr-un singur stack.

    Tutorialul este Full si Testat!

    Are adaptare si pentru cei care folosesc serverfiles + sursele de la Martysama! :-*

    *Poze / Video:
    [C++] Mareste limita Stack Iteme (Full) - Mesaj 1 - Imagine 1
    *Link download / Code:
    Deschidem sursa binary si mergem in Packet.h

    Cautam (in typedef struct command_item_drop2):
    Code:
    BYTE count;
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct command_item_move):
    Code:
    BYTE num;
    
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct SShopItemTable):
    Code:
    BYTE count;
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct packet_set_item2):
    Code:
    BYTE count;
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct packet_update_item):
    Code:
    BYTE count;
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct SEquipmentItemSet):
    BYTE count;

    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem PythonNetworkPhaseGame.cpp si mergem in functia -> RecvExchangePacket

    Cautam:
    Code:
    CPythonExchange::Instance().SetItemToSelf(iSlotIndex, exchange_packet.arg1, (BYTE) exchange_packet.arg3);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    CPythonExchange::Instance().SetItemToTarget(iSlotIndex, exchange_packet.arg1, (BYTE) exchange_packet.arg3);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem PythonExchange.cpp: si cautam:
    Code:
    BYTE CPythonExchange::GetItemCountFromTarget(BYTE pos)
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    BYTE CPythonExchange::GetItemCountFromSelf(BYTE pos)
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    void CPythonExchange::SetItemToTarget(DWORD pos, DWORD vnum, BYTE count)
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    void CPythonExchange::SetItemToSelf(DWORD pos, DWORD vnum, BYTE count)
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem PythonExchange.h si cautam:
    Code:
    BYTE GetItemCountFromTarget(BYTE pos);
    BYTE GetItemCountFromSelf(BYTE pos);
    
    void SetItemToTarget(DWORD pos, DWORD vnum, BYTE count);
    void SetItemToSelf(DWORD pos, DWORD vnum, BYTE count);
    
    BYTE item_count[EXCHANGE_ITEM_MAX_NUM];
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem PythonNetworkStreamPhaseGameItem.cpp si cautam:
    Code:
    bool CPythonNetworkStream::SendShopSellPacketNew
    Inlocuim toata functia cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Dupa, cautam:
    Code:
    bool CPythonNetworkStream::SendItemMovePacket(TItemPos pos, TItemPos change_pos, BYTE num)
    bool CPythonNetworkStream::SendSafeBoxItemMovePacket(BYTE bySourcePos, BYTE byTargetPos, BYTE byCount)
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem acum fisierul PythonPlayerModule.cpp si cautam:
    Code:
    PyObject * playerSetItemCount(PyObject* poSelf, PyObject* poArgs)
    Inlocuim toata functia cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Deschidem dupa PythonNetworkStreamModule.cpp si cautam:
    Code:
    PyObject* netSendItemMovePacket(PyObject* poSelf, PyObject* poArgs)
    Inlocuim toata functia cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem acum GameType.h si cautam (in typedef struct packet_item)
    Code:
    BYTE count;
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct packet_shop_item)
    Code:
    BYTE count;
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem dupa AbstractPlayer.h si cautam:
    Code:
    virtual void SetItemCount(TItemPos itemPos, BYTE byCount) = 0;
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Dupa, deschidem PythonPlayer.cpp si cautam:
    Code:
    void CPythonPlayer::SetItemCount(TItemPos Cell, BYTE byCount)
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Mergem in PythonPlayer.h si cautam:
    Code:
    void SetItemCount(TItemPos Cell, BYTE byCount);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem fisierul PythonNetworkStream.h si cautam:
    Code:
    bool SendSafeBoxItemMovePacket(BYTE bySourcePos, BYTE byTargetPos, BYTE byCount);
    bool SendShopSellPacketNew(BYTE bySlot, BYTE byCount);
    bool SendItemMovePacket(TItemPos pos, TItemPos change_pos, BYTE num);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.



    Acum in sursa game, deschidem common/tables.h si cautam:
    Code:
    typedef struct SShopItemTable
    Mai jos gasim:
    Code:
    BYTE count;
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem common/item_lenght.h si aici putem modifica limita de stack cu ce vrem noi: (max ~60k)
    ITEM_MAX_COUNT = 200,

    Deschidem packet.h si cautam (in typedef struct command_item_drop2):
    Code:
    BYTE count;
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct command_item_move):
    Code:
    BYTE count;
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct packet_item_set):
    Code:
    BYTE count;
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct packet_item_update):
    Code:
    BYTE count;
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in struct packet_shop_item):
    Code:
    BYTE count;
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam (in typedef struct pakcet_view_equip):
    Code:
    BYTE count;
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Acum mergem in fisierul input_main.cpp si cautam:
    Code:
    int CInputMain::Shop(LPCHARACTER ch, const char * data, size_t uiBytes)
    Inlocuim toata functia cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Mergem acum in shop_manager.cpp si cautam:
    Code:
    void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem shop.h si cautam (in typedef struct shop_item)
    Code:
    BYTE count;
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem shop_manager.h si cautam:
    Code:
    void Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount=0);
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem fisierul char_item.cpp si cautam:
    Code:
    bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count)
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam mai jos:
    Code:
    count = MIN(200 - item2->GetCount(), count);
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    LPITEM CHARACTER::AutoGiveItem(DWORD dwItemVnum, BYTE bCount, int iRarePct, bool bMsg)
    Modificam cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Mai jos gasim:
    Code:
    BYTE bCount2 = MIN(200 - item->GetCount(), bCount);
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    In functia PickupItem cautam:
    Code:
    BYTE bCount = item->GetCount();
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Tot in functia asta cautam:
    Code:
    BYTE bCount2 = MIN(200 - item2->GetCount(), bCount);
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem char.h si cautam:
    Code:
    bool DropItem(TItemPos Cell, BYTE bCount=0);
    bool MoveItem(TItemPos pos, TItemPos change_pos, BYTE num);
    LPITEM AutoGiveItem(DWORD dwItemVnum, BYTE bCount=1, int iRarePct = -1, bool bMsg = true);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem fisierul item.cpp si mergem la functia -> DWORD CItem::GetCount() unde cautam:
    Code:
    return MIN(m_dwCount, 200);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem safebox.cpp si cautam:
    Code:
    bool CSafebox::MoveItem(BYTE bCell, BYTE bDestCell, BYTE count)
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Mai jos gasim:
    Code:
    count = MIN(200 - item2->GetCount(), count);
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem safebox.h si cautam:
    Code:
    bool MoveItem(BYTE bCell, BYTE bDestCell, BYTE count);
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem oxevent.cpp si cautam:
    Code:
    bool COXEventManager::GiveItemToAttender(DWORD dwItemVnum, BYTE count)
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem OxEvent.h si cautam:
    Code:
    bool GiveItemToAttender(DWORD dwItemVnum, BYTE count);
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Nota! Daca ai Martysama trebuie sa faci si ce e mai jos in Spoiler:

    Modificam fisierul CONFIG din canale:
    Code:
    ITEM_COUNT_LIMIT: 200 in cat va puneti voi
    Deschidem config.h si cautam:
    Code:
    extern BYTE g_bItemCountLimit;
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    In config.cpp cautam:
    Code:
    BYTE g_bItemCountLimit = 5000;
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem char_item.cpp si cautam:
    Code:
    BYTE bCount2 = MIN(200 - item2->GetCount(), bCount);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    BYTE bCount2 = MIN(200 - item2->GetCount(), bCount);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Cautam:
    Code:
    count = MIN(200 - item2->GetCount(), count);
    Inlocuim cu:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Deschidem fisierul item.cpp si cautam:
    Code:
    return MIN(m_dwCount, 200);
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Acum in safebox.cpp cautam:
    Code:
    count = MIN(200 - item2->GetCount(), count);
    Modificam asa:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.

    Nou Cum descarc de pe TeraBox?

    Afișează detalii Ascunde detalii
    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Nou Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele rapid & simplu.

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo
    Te asteptam si pe serverul de Discord :p - aici ne-am strans toata comunitatea de Metin2 din Romania.
    Link: https://discord.gg/jWxeDSf7HP

    Suntem aproape 2000 membri! - Avem chat activ zilnic, support, cereri, resurse. :D :ymcowboy:





    See full signature
    Membru Începător Membru Începător
  • Mesaje: 8
  • Reacții: 5
  • Mesaje utile: 0
  • Regat: Chunjo
  • Medalii

    Avatar utilizator
    Membru Începător
    Membru Începător

    Mesaj de randomuser1321 »

    Este compatibil cu Ikarus V2?
    Administrator Administrator
  • Mesaje: 4448
  • Reacții: 89381
  • Mesaje utile: 44
  • Status: Pe aici.. 🤠
  • Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Contact:
    Avatar utilizator
    Administrator
    Administrator

    Mesaj de [HF]White »

    randomuser1321 scrie: Este compatibil cu Ikarus V2?
    Da, este.
    Te asteptam si pe serverul de Discord :p - aici ne-am strans toata comunitatea de Metin2 din Romania.
    Link: https://discord.gg/jWxeDSf7HP

    Suntem aproape 2000 membri! - Avem chat activ zilnic, support, cereri, resurse. :D :ymcowboy:





    See full signature
    Membru Avansat Membru Avansat
  • Mesaje: 103
  • Reacții: 1036
  • Mesaje utile: 3
  • Server: None
  • Regat: Jinno
  • [ID Discord]
  • Contact:

    Medalii

    Avatar utilizator
    Membru Avansat
    Membru Avansat

    Mesaj de Vlad »

    FIX Boot: shop table size error


    Navicat

    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.
    Membru Ucenic Membru Ucenic
  • Mesaje: 18
  • Reacții: 9
  • Mesaje utile: 0
  • Status: ^.^
  • Server: Trot-OSBD
  • Regat: Chunjo
  • [ID Discord]
  • Contact:

    Medalii

    Avatar utilizator
    Membru Ucenic
    Membru Ucenic

    Mesaj de Desmond97 »

    Eu am 60k, ultima dată când am încercat să modific, nu mai funcționa mai mult de 60k sau 60.500
    Trot-OSBD #Top (2023-2024)
    See full signature
    Membru Începător Membru Începător
  • Mesaje: 1
  • Reacții: 1
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Medalii

    Avatar utilizator
    Membru Începător
    Membru Începător

    Mesaj de erastrau »

    Desmond97 scrie: Eu am 60k, ultima dată când am încercat să modific, nu mai funcționa mai mult de 60k sau 60.500
    Limita maxima la "WORD" este de 65,535, daca vrei mai mult fa tutorialul, dar in loc de WORD foloseste int

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
    Scrie răspuns

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “Îmbunătățiri”

    Informații

    Utilizatori ce navighează pe acest forum: Dintisor, Ene, Florin Mocanu, Kda și 1 vizitator

    Discord ID copiat: