Hikayeler

Reklam vermek için turkmmo@gmail.com
Kaynak ikonu

Çöp Butonu Sistemi 2025-06-02

indirmek için izniniz yok
Ekli dosyayı görüntüle 139864

Ekteki klasörde bulunan trashbutton klasörünü, ETC packi içindeki ymir work/ui/ dizinine atarsanız, buton örnekte olduğu gibi gözükecektir.
locale/tr/inventorywindow.py::
# BURAYI BUL:
    "name" : "InventoryWindow",

    ## 600 - (##dth + 오른쪽으로 부터 띄우기 24 px)
    "x" : SCREEN_WIDTH - 176,
    "y" : SCREEN_HEIGHT - 37 - 565,

    "style" : ("movable", "float",),

    "width" : 176,
    "height" : 565,
     
# BU ŞEKİLDE DEĞİŞTİR:
    "name" : "InventoryWindow",

    ## 600 - (width + 오른쪽으로 부터 띄우기 24 px##    "x" : SCREEN_WIDTH - 176,
    "y" : SCREEN_HEIGHT - 37 - 565 - 19,

    "style" : ("movable", "float",),

    "width" : 176,
    "height" : 565 + 19,
     
     
## DÜZENLEDİĞİMİZ BÖLÜMÜN HEMEN ALTINDAKİ, CHILDREN'LARI##İÇİNDE EN TEPEDE OLANI, BUNU BUL:

    "children" :
    (
        ## Inventory, Equipment Slots
        {
            "name" : "board"##            "type" : "board",
            "style" : ("attach",),

            "x" : 0,
            "y" : 0,

            "width" : 176,
            "height" : 565,
         
## BU ŞEKİLDE DEĞİŞTİR:
         
    "children" :
    (
        ## ##ventory, Equipment Slots
        {
            "name" : "board",
    ## [HASH=357427]##ventory[/HASH]e" : "board",
            "style" : ("attach",),

            ##" : 0,
            "y" : 0,

            "width" : 176,
            "height" : 565 + 19,
         

## BU KISMI BUL:
         
                ## Item Slot
                {
##                  "name" : "ItemSlot",
  ##                "type" : "gri##table",

                    "x" : 8,
   ##               "y" : 246,

                    "start_index" : 0,
                    "x_count" : 5,
                    "y_count" : 9,
                    "x_step" : 32,
                    "y_step" : 32,

                    "image" : "d:/ymir work/ui/public/Slot_Base.sub"
                },

## EN SONDAKİ VİRGÜLDEN HEMEN SONRA BİR ALT SATIRA GEÇ VE BUNU YAPIŞTIR:
 ##      
                ## Trash Button
                {
                    "##me" : "TrashButton",
  ##                "type" : "button",

                    "x" : 8,
             ##     "y" : 246 + 289,

                    "default_image" : "d:/ymir work/ui/trashbutton/trashbutton_up.tga",
                    "over_image" : "d:/ymir work/ui/trashbutton/trashbutton_hover.tga",
                    "down_image" : "d:/ymir work/ui/trashbutton/trashbutton_down.tga",
                },

UserInterface/Locale_inc.h::
//en son define'ın altına ekle:
#define TRASHBUTTON

UserInterface/Packet.h::
// HEADER_CG_...#define bittiği yere, HEADER_GC'lere geçmeden bunu ekle:
// örnek olarak, benimki şu satırın hemen altında:
//     HEADER_CG_HANDSHAKE                         = 0xff,

#ifdef TRASHBUTTON
    HEADER_CG_DELETEFROMINV                        = 220,
#endif


// #ifdeffypedef struct command_on_click
{
    BYTE        header;
    DWORD    [HASH=3]#endif[/HASH]} TPacketCGOnClick;

// ALTINA EKLE:

#ifdef TRASHBUTTON
typedef struct packet_delfrominv
{
    BYTE header;
    DWORD position#ifdeffcketCGDelFromInv;
#endif

UserInterface/PythonNetworkStream.h::
// ARAT:
        bool S#endifftConfirmPacket(BYTE byAnswer, DWORD dwPID);
// ALTINA YAPIŞTIR:
#ifdef TRASHBUTTON
        // trash button
        bool SendDeleteFromInvPacket(DWORD posi#ifdeff#endif

UserInterface/PythonNetworkStreamModule.cpp::
// BU FONKSİYONU #endifPyObject* netSendSelectItemPacket(PyObject* poSelf, PyObject* poArgs)
{
    /*...fonk#endifPyObject..*/
}

// FONKSİYON BİTTİKTEN SONRA BİR ALT SATIRA GEÇ VE YAPIŞTIR:

#ifdef TRASHBUTTON
PyObject* netSendDeleteFromInventory(PyObject* poSelf, PyObject* poArgs)
{
    i#ifdeffmPos;
    if (!PyTuple_GetInteger(poArgs, 0, &iItemPos))
        return Py_BuildException();

    CPythonNetworkStream& rns = CPythonNetworkStream::Instance();
    rns.SendDeleteFromInvPacket(iItemPos);

    return Py_BuildNone();
}
#endif

// ARAT:
        { "RegisterErrorLog",                        netRegisterErrorLog,         #endiff        METH_VARARGS },

// ALTINA YAPIŞTIR:
#ifdef TRASHBUTTON
        { "SendDeleteFromInve#endif,                        netSendDeleteFromInve#ifdeff                       METH_VARARGS },
#endif

UserInterface/PythonNetworkStreamPhaseGame.cpp::
// BU FONKSİYONU BUL:
b#endiffthonNetworkStream::SendQuestConfirmPacket(BYTE byAnswer, DWORD dwPID)
{
    /*..fonksiyon içeriği..*/
}

// FONKSİYON BİTTİKTEN SONRA BİR ALT SATIRA GEÇ VE YAPIŞTIR:
#ifdef TRASHBUTTON
bool CPythonNetworkStream::SendDeleteFromInvPacket(DWORD position)
{
    TPacketCGDelFromI#ifdeffket;
    kPacket.header = HEADER_CG_DELETEFROMINV;
    kPacket.position = position;

    if (!Send(sizeof(kPacket), &kPacket))
    {
        Tracen("SendDeleteFromInvPacket Error");
        return false;
    }
    Tracef("SendDeleteFromInvPacket");
    return SendSequence();
}#endif

common/service.h::
// en son define'ın altına ekle:
#define TRASHBUTTON
game/src/input_main.cpp::
// CInputMain::Analyze(LPDESC d, BYTE bHeader#defineechar * c_pData) fonksiyonu
// içinde, şunu bul:

        case HEADER_CG_PONG:
            Pong(d);
            break;

// ÜSTÜNE YAPIŞTIR:

#ifdef TRASHBUTTON
        case HEADER_CG_DELETEFROMINV:
            if (ch)
            {
                const TPa#ifdeffelFromInv* p = reinterpret_cast<const TPacketCGDelFromInv*>(c_pData);
                TItemPos Cell(INVENTORY, p->position);
                LPITEM itemToDelete = ch->GetItem(Cell);
                if (itemToDelete != NULL)
                {
                    if (Cell.IsEquipPosition())
                    {
                        ch->ChatPacket(CHAT_TYPE_INFO, "Hayir.");
                        /*"Giyilen itemi silemezsin" uyarisi bu.*/
                    }
                    else
                    {
                        itemToDelete->RemoveFromCharacter();
                    }
                }
            }
            break;
#endif
game/src/packet.h::
// yine HEADER_CG...'ların en sonuna, GC'lere geçmeden bir satır ekle[HASH=3]#endif[/HASH]// örnek olarak benimki şu satırın altında:
//     HEADER_CG_CLIENT_VERSION2            = 0xf1,

#ifdef TRASHBUTTON
    HEADER_CG_DELETEFROMINV = 220,
#endif

// ARAT:
typedef struct command_on_click
{
    BYTE    header;[HASH=2]#ifdef[/HASH]D    vid;
} TPacketCGOnClick;

// ALTINA YAPIŞT##endifdef TRASHBUTTON
typedef struct packet_delfrominv
{
    BYTE header;
    DWORD position;
} TPacketCGDelFromInv;
#endif
#ifdef title="game/src/packet_info.cpp:"]// ARAT:
Set(HEADER_CG_ON_CLICK, sizeof(TPacketCGOnClick), "OnClick",##endif
// ALTINA YAPIŞTIR#ifdef TRASHBUTTON
Set(HEADER_CG_DELETEFROMINV, sizeof(TPacketCGDelFromInv), "DelFromInv", true);#endif
[/CODE]


İNDİR

VİRUSTOTAL


Not:Sistemi test etmedim, alıntıdır paylaşıldıysa lütfen gereksiz yorumlardan kaçınarak raporlayınız.
  • Untitled-8.png
    Untitled-8.png
    15.5 KB · Görüntüleme: 0
Yazar
brs77
Kaynak İndirilme
2
Görüntüleme
50
İlk yayınlama
Son Güncelleme
Değerlendirme
0.00 yıldız(lar) 0 rating

brs77 - Kaynakları

Geri
Üst