Çözüldü Süreli Başlangıç itemini sourceden verdirmek

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.

Metin2University

Metin2 Files Hizmetleri
Gold Üye
Geliştirici
MT Üye
Mesaj
418
Çözümler
8
Beğeni
334
Puan
839
Ticaret Puanı
0
Herkese merhabalar mevcut kodumda başlangıç itemlerini alabiliyorum sorun yok ancak rüzgarın ayakkabısı gibi binek gibi süreli itemleri verdiremedim bu konuda yardımcı olabilir misiniz. Kullanmak isteyenler bu şekilde kullanabilir efsunlu ve giyili bir şekilde geliyor itemelr

Bu 2 item binek ve rüzgarın ayakkabısı 7. ve 8. slota gelmesi gerekiyordu.
{INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},<br>
{INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},<br>


input_db.cpp:
Genişlet Daralt Kopyala
    TPlayerItem t;
    memset(&t, 0, sizeof(TPlayerItem));

    t.window = INVENTORY;
    t.owner = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;
    t.count = 1;

    struct SInitialItem
    {
        BYTE window;     // EQUIPMENT / INVENTORY
        short pos;       // WEAR_* veya inventory slot
        DWORD count;
        DWORD dwVnum;
   
        long socket0;
        long socket1;
        long socket2;
        long socket3;
   
        BYTE attr_type0; short attr_value0;
        BYTE attr_type1; short attr_value1;
        BYTE attr_type2; short attr_value2;
        BYTE attr_type3; short attr_value3;
        BYTE attr_type4; short attr_value4;
    };



    const int MAX_INITIAL_ITEM = 17;
   
    static SInitialItem initialItems[JOB_MAX_NUM][MAX_INITIAL_ITEM] =
    {
        // WARRIOR
        {////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
            {EQUIPMENT, WEAR_BODY,   1, 9001,  0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_HEAD,   1, 12209, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_FOOTS,  1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WRIST,  1, 14009, 0,0,0,0, 1,2000,0,0,0,0,0,0},
            {EQUIPMENT, WEAR_WEAPON, 1, 19,    0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_NECK,   1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_EAR,    1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
            {INVENTORY, 0,           1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},

        },
        // ASSASSIN
        {////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
            {EQUIPMENT, WEAR_BODY,   1, 9002,  0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_HEAD,   1, 12349, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_FOOTS,  1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WRIST,  1, 14009, 0,0,0,0, 1,2000,0,0,0,0,0,0},
            {EQUIPMENT, WEAR_WEAPON, 1, 1009,  0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_NECK,   1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_EAR,    1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
            {INVENTORY, 0,           1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},
        },
        // SURA
        {////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
            {EQUIPMENT, WEAR_BODY,   1, 9003,  0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_HEAD,   1, 12489, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_FOOTS,  1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WRIST,  1, 14009, 0,0,0,0, 1,2000,0,0,0,0,0,0},
            {EQUIPMENT, WEAR_WEAPON, 1, 19,    0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_NECK,   1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_EAR,    1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
            {INVENTORY, 0,           1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},
        },
        // SHAMAN
        {////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
            {EQUIPMENT, WEAR_BODY,   1, 9004,  0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_HEAD,   1, 12629, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_FOOTS,  1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WRIST,  1, 14009, 0,0,0,0, 1,2000,0,0,0,0,0,0},
            {EQUIPMENT, WEAR_WEAPON, 1, 7009,  0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_NECK,   1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_EAR,    1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
            {INVENTORY, 0,           1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 7, 1, 52045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 8, 1, 72702, 0,0,0,0, 0,0,0,0,0,0,0,0},
        },
    };

    unsigned job = pPacketDB->player.byJob;
    RaceToJob(job, &job);

    for (int i = 0; i < MAX_INITIAL_ITEM; ++i)
    {
        if (initialItems[job][i].dwVnum == 0)
            continue;
   
        memset(&t, 0, sizeof(TPlayerItem));
   
        t.id     = ITEM_MANAGER::instance().GetNewID();
        t.owner  = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;
        t.window = initialItems[job][i].window;
        t.vnum   = initialItems[job][i].dwVnum;
        t.count  = initialItems[job][i].count;
       
        // ?? HEM EQUIPMENT HEM INVENTORY AYNI MANTIK
        t.pos = initialItems[job][i].pos;
        // SOCKET
        t.alSockets[0] = initialItems[job][i].socket0;
        t.alSockets[1] = initialItems[job][i].socket1;
        t.alSockets[2] = initialItems[job][i].socket2;
        t.alSockets[3] = initialItems[job][i].socket3;
    // SONRA REAL_TIME override
        const TItemTable* proto = ITEM_MANAGER::instance().GetTable(t.vnum);
       
        if (proto)
        {
            for (int l = 0; l < ITEM_LIMIT_MAX_NUM; ++l)
            {
                if (proto->aLimits[l].bType == LIMIT_REAL_TIME)
                {
                    // socket3 = expire time (DAHA GUVENL?)
                    t.alSockets[3] = time(0) + proto->aLimits[l].lValue;
                    break;
                }
            }
        }

       
        // ATTR (efsunu BOZMADIK)
        t.aAttr[0].bType = initialItems[job][i].attr_type0;
        t.aAttr[0].sValue = initialItems[job][i].attr_value0;
        t.aAttr[1].bType = initialItems[job][i].attr_type1;
        t.aAttr[1].sValue = initialItems[job][i].attr_value1;
        t.aAttr[2].bType = initialItems[job][i].attr_type2;
        t.aAttr[2].sValue = initialItems[job][i].attr_value2;
        t.aAttr[3].bType = initialItems[job][i].attr_type3;
        t.aAttr[3].sValue = initialItems[job][i].attr_value3;
        t.aAttr[4].bType = initialItems[job][i].attr_type4;
        t.aAttr[4].sValue = initialItems[job][i].attr_value4;
   
    if ((t.window == INVENTORY && t.pos >= 0 && t.pos < INVENTORY_MAX_NUM) ||
        (t.window == EQUIPMENT))
    {
        db_clientdesc->DBPacketHeader(HEADER_GD_ITEM_SAVE, 0, sizeof(TPlayerItem));
        db_clientdesc->Packet(&t, sizeof(TPlayerItem));
    }

    }
    LogManager::instance().CharLog(pack.player.dwID, 0, 0, 0, "CREATE PLAYER", "", d->GetHostName());
}


Ekran görüntüsü 2026-02-07 224747.webp
 
başlangıçta verilen süreli itemlerde süre bilgisi socket’e yazılmadığı için itemin envantere girer girmez süresinin bitmiş sayılıp silinmesiydi; çözüm olarak başlangıç item tablosuna duration alanı eklenip, bu değer varsa time(0) + duration hesaplanarak itemin expire zamanı socket’e yazıldı, böylece süreli itemler düzgün şekilde envantere gelmeye başladı


güncel hali:
Genişlet Daralt Kopyala
    TPlayerItem t;
    memset(&t, 0, sizeof(TPlayerItem));

    t.window = INVENTORY;
    t.owner = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;
    t.count = 1;

    struct SInitialItem
    {
        BYTE window;     // EQUIPMENT / INVENTORY
        short pos;       // WEAR_* veya inventory slot
        DWORD count;
        DWORD dwVnum;
        DWORD duration;
   
        long socket0;
        long socket1;
        long socket2;
        long socket3;
   
        BYTE attr_type0; short attr_value0;
        BYTE attr_type1; short attr_value1;
        BYTE attr_type2; short attr_value2;
        BYTE attr_type3; short attr_value3;
        BYTE attr_type4; short attr_value4;
    };

    const int MAX_INITIAL_ITEM = 17;
   
    static SInitialItem initialItems[JOB_MAX_NUM][MAX_INITIAL_ITEM] =
    {
        // WARRIOR
        {////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
            {EQUIPMENT, WEAR_BODY,   1, 9001,  0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_HEAD,   1, 12209, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_FOOTS,  1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WRIST, 1, 14009, 0, 0,0,0,0, 1,2000, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WEAPON, 1, 19,    0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_NECK,   1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_EAR,    1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
            {INVENTORY, 0,           1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 7, 1, 52045, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
            {INVENTORY, 8, 1, 72702, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
        },
        // ASSASSIN
        {////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
            {EQUIPMENT, WEAR_BODY,   1, 9002,  0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_HEAD,   1, 12349, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_FOOTS,  1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WRIST, 1, 14009, 0, 0,0,0,0, 1,2000, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WEAPON, 1, 1009,  0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_NECK,   1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_EAR,    1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
            {INVENTORY, 0,           1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 7, 1, 52045, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
            {INVENTORY, 8, 1, 72702, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
        },
        // SURA
        {////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
            {EQUIPMENT, WEAR_BODY,   1, 9003,  0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_HEAD,   1, 12489, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_FOOTS,  1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WRIST, 1, 14009, 0, 0,0,0,0, 1,2000, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WEAPON, 1, 19,    0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_NECK,   1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_EAR,    1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
            {INVENTORY, 0,           1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 7, 1, 52045, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
            {INVENTORY, 8, 1, 72702, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
        },
        // SHAMAN
        {////////////// ?TEM T?P? //// ?TEM VNUM //// EFSUN VNUM VE ORANLARI ////
            {EQUIPMENT, WEAR_BODY,   1, 9004,  0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_HEAD,   1, 12629, 0,0,0,0, 7,8, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_FOOTS,  1, 15009, 0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WRIST, 1, 14009, 0, 0,0,0,0, 1,2000, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_WEAPON, 1, 7009,  0,0,0,0, 15,10,0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_NECK,   1, 16009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_EAR,    1, 17009, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {EQUIPMENT, WEAR_SHIELD, 1, 13009, 0,0,0,0, 6,0, 0,0,0,0,0,0},
            {INVENTORY, 0,           1, 27053, 0,0,0,0, 0,0, 0,0, 0,0, 0,0},
            {INVENTORY, 1, 1, 71044, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 2, 1, 71045, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 3, 1, 72031, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 4, 1, 72034, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 5, 1, 72037, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 6, 1, 72040, 0,0,0,0, 0,0,0,0,0,0,0,0},
            {INVENTORY, 7, 1, 52045, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
            {INVENTORY, 8, 1, 72702, 60*60*24*7, 0,0,0,0, 0,0,0,0,0,0,0},
        },
    };

    unsigned job = pPacketDB->player.byJob;
    RaceToJob(job, &job);

    for (int i = 0; i < MAX_INITIAL_ITEM; ++i)
    {
        if (initialItems[job][i].dwVnum == 0)
            continue;
   
        memset(&t, 0, sizeof(TPlayerItem));
   
        t.id     = ITEM_MANAGER::instance().GetNewID();
        t.owner  = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;
        t.window = initialItems[job][i].window;
        t.vnum   = initialItems[job][i].dwVnum;
        t.count  = initialItems[job][i].count;
       
        // ?? HEM EQUIPMENT HEM INVENTORY AYNI MANTIK
        t.pos = initialItems[job][i].pos;
        // SOCKET
        t.alSockets[0] = initialItems[job][i].socket0;
        t.alSockets[1] = initialItems[job][i].socket1;
        t.alSockets[2] = initialItems[job][i].socket2;
        t.alSockets[3] = initialItems[job][i].socket3;

        if (initialItems[job][i].duration > 0)
        {
            // Güvenli expire socket
            t.alSockets[0] = time(0) + initialItems[job][i].duration;
        }


        // ATTR (efsunu BOZMADIK)
        t.aAttr[0].bType = initialItems[job][i].attr_type0;
        t.aAttr[0].sValue = initialItems[job][i].attr_value0;
        t.aAttr[1].bType = initialItems[job][i].attr_type1;
        t.aAttr[1].sValue = initialItems[job][i].attr_value1;
        t.aAttr[2].bType = initialItems[job][i].attr_type2;
        t.aAttr[2].sValue = initialItems[job][i].attr_value2;
        t.aAttr[3].bType = initialItems[job][i].attr_type3;
        t.aAttr[3].sValue = initialItems[job][i].attr_value3;
        t.aAttr[4].bType = initialItems[job][i].attr_type4;
        t.aAttr[4].sValue = initialItems[job][i].attr_value4;
   
    if ((t.window == INVENTORY && t.pos >= 0 && t.pos < INVENTORY_MAX_NUM) ||
        (t.window == EQUIPMENT))
    {
        db_clientdesc->DBPacketHeader(HEADER_GD_ITEM_SAVE, 0, sizeof(TPlayerItem));
        db_clientdesc->Packet(&t, sizeof(TPlayerItem));
    }

    }
    LogManager::instance().CharLog(pack.player.dwID, 0, 0, 0, "CREATE PLAYER", "", d->GetHostName());
}

Ekran görüntüsü 2026-02-08 005735.webp
 
Geri
Üst