Çözüldü Başlangıç İtemlerini Source İle Verme

  • Konuyu açan Konuyu açan cosion
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 8
  • Gösterim Gösterim 850
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.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

cosion

Üye
Üye
Mesaj
127
Çözümler
12
Beğeni
23
Puan
469
Ticaret Puanı
0
Başlıktan da anlaşılacağı gibi, oyuna başlayanların itemlerini envanterine vermek istiyorum. MMOTutkunları Altyapı fileste bu kullanım ile itemleri vermiştim, fakat turkmmo v3 altyapı filesine geçiş yaptım, orada ise bir türlü çalıştıramadım. input_db.cpp ' de yaptığım değişiklikler.
En üste ekledim,
C++:
Genişlet Daralt Kopyala
extern bool RaceToJob(unsigned race, unsigned* ret_job);
PlayerCreateSuccess içeriğide bu ,
C++:
Genişlet Daralt Kopyala
void CInputDB::PlayerCreateSuccess(LPDESC d, const char* data)
{
    if (!d)
        return;

    TPacketDGCreateSuccess* pPacketDB = (TPacketDGCreateSuccess*)data;

    if (pPacketDB->bAccountCharacterIndex >= PLAYER_PER_ACCOUNT)
    {
        d->Packet(encode_byte(HEADER_GC_CHARACTER_CREATE_FAILURE), 1);
        return;
    }

    long lIndex = 0;

    if (!CMapLocation::instance().Get(pPacketDB->player.x,
        pPacketDB->player.y,
        lIndex,
        pPacketDB->player.lAddr,
        pPacketDB->player.wPort))
    {
        sys_err("InputDB::PlayerCreateSuccess: cannot find server for mapindex %d %d x %d (name %s)",
            lIndex,
            pPacketDB->player.x,
            pPacketDB->player.y,
            pPacketDB->player.szName);
    }

    TAccountTable& r_Tab = d->GetAccountTable();
    r_Tab.players[pPacketDB->bAccountCharacterIndex] = pPacketDB->player;

    TPacketGCPlayerCreateSuccess pack;

    pack.header = HEADER_GC_CHARACTER_CREATE_SUCCESS;
    pack.bAccountCharacterIndex = pPacketDB->bAccountCharacterIndex;
    pack.player = pPacketDB->player;
#ifdef ENABLE_NEWSTUFF
    if (!g_stProxyIP.empty())
        pack.player.lAddr = inet_addr(g_stProxyIP.c_str());
#endif
    d->Packet(&pack, sizeof(TPacketGCPlayerCreateSuccess));

    TPlayerItem t;
    memset(&t, 0, sizeof(t));
 
 
    t.window = INVENTORY;
    t.count = 1;
    t.owner = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;

    struct SInitialItem
    {
     
        BYTE pos;

        DWORD dwVnum;
        DWORD count;
    };

    const int MAX_INITIAL_ITEM = 10;

    static SInitialItem initialItems[JOB_MAX_NUM][MAX_INITIAL_ITEM] =
    {
        {
            {0,    11279,    0,    0,    0,    1,3000, 53,50, 23,10, 9,20, 39,15},    // Zirh Savaşçı
            {1,    12249,    0,    0,    0,    21,20, 18,20, 22,20, 12,8, 7,8},    // Kafalik
            {2,    15209,    0,    0,    0,    1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
            {3,    14209,    0,    0,    0,    1,3000, 16,10, 23,10, 21,20, 22,20},    // Bilezik
            {4,    299,      0,    0,    0,    72,45, 5,12, 6,12, 15,10, 16,10},    // Silah
            {5,    16209,    0,    0,    0,    1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
            {6,    17109,    0,    0,    0,    8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
            {10,   13049,    0,    0,    0,    5,12, 6,12, 43,20, 44,20, 17,10},    // Kalkan
        },
        {
            {0,    11479,    0,    0,    0,    1,3000, 53,50, 23,10, 9,20, 39,15},    // Zirh    Ninja
            {1,    12389,    0,    0,    0,    21,20, 18,20, 22,20, 12,8, 7,8},    // Kafalik
            {2,    15209,    0,    0,    0,    1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
            {3,    14209,    0,    0,    0,    1,3000, 16,10, 23,10, 21,20, 22,20},    // Bilezik
            {4,    1179,     0,    0,    0,    72,45, 5,12, 6,12, 15,10, 16,10},    // Silah
            {5,    16209,    0,    0,    0,    1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
            {6,    17109,    0,    0,    0,    8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
            {10,   13049,    0,    0,    0,    5,12, 6,12, 43,20, 44,20, 17,10},    // Kalkan
        },    
        {
            {0,    11679,    0,    0,    0,    1,3000, 53,50, 23,10, 9,20, 39,15},    // Zirh Sura
            {1,    12529,    0,    0,    0,    21,20, 18,20, 22,20, 12,8, 7,8},    // Kafalik
            {2,    15209,    0,    0,    0,    1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
            {3,    14209,    0,    0,    0,    1,3000, 16,10, 23,10, 21,20, 22,20},    // Bilezik
            {4,    299,      0,    0,    0,    72,45, 5,12, 6,12, 15,10, 16,10},    // Silah
            {5,    16209,    0,    0,    0,    1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
            {6,    17109,    0,    0,    0,    8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
            {10,   13049,    0,    0,    0,    5,12, 6,12, 43,20, 44,20, 17,10},    // Kalkan
        },    
        {
            {0,    11879,    0,    0,    0,    1,3000, 53,50, 23,10, 9,20, 39,15},    // Zirh Şaman
            {1,    12669,    0,    0,    0,    21,20, 18,20, 22,20, 12,8, 7,8},    // Kafalik
            {2,    15209,    0,    0,    0,    1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
            {3,    14209,    0,    0,    0,    1,3000, 16,10, 23,10, 21,20, 22,20},    // Bilezik
            {4,    5119,     0,    0,    0,    72,45, 5,12, 6,12, 15,10, 16,10},    // Silah
            {5,,   16209,    0,    0,    0,    1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
            {6,    17109,    0,    0,    0,    8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
            {10,   13049,    0,    0,    0,    5,12, 6,12, 43,20, 44,20, 17,10},    // Kalkan
        },        // Şaman
#ifdef ENABLE_WOLFMAN_CHARACTER
        {
            {0,    21059,    0,    0,    0,    1,3000, 53,50, 23,10, 9,20, 39,15},    // Zirh Lycan
            {1,    21529,    0,    0,    0,    21,20, 18,20, 22,20, 12,8, 7,8},    // Kafalik
            {2,    15209,    0,    0,    0,    1,3000, 15,10, 7,8, 43,20, 44,20}, // Ayakkabi
            {3,    14209,    0,    0,    0,    1,3000, 16,10, 23,10, 21,20, 22,20},    // Bilezik
            {4,    6019,     0,    0,    0,    72,45, 5,12, 6,12, 15,10, 16,10},    // Silah
            {5,    16209,    0,    0,    0,    1,3000, 15,10, 10,30, 43,20, 44,20}, // Kolye
            {6,    17109,    0,    0,    0,    8,20, 17,10, 45,20, 21,20, 22,20}, // Küpe
            {10,   13049,    0,    0,    0,    5,12, 6,12, 43,20, 44,20, 17,10},    // Kalkan
        },    // Lycan
#endif
    };

    unsigned job = pPacketDB->player.byJob;
    RaceToJob(job, &job);
    for (int i = 0; i < MAX_INITIAL_ITEM; i++)
    {
        if (initialItems[job][i].dwVnum == 0)
            continue;

        t.id = ITEM_MANAGER::instance().GetNewID();
        t.pos = initialItems[job][i].pos;
        t.count = initialItems[job][i].count;
        t.vnum = initialItems[job][i].dwVnum;

        t.alSockets[0] = initialItems[job][i].socket0;
        t.alSockets[1] = initialItems[job][i].socket1;
        t.alSockets[2] = initialItems[job][i].socket2;

        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;




        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());
}
 
Son düzenleme:
Çözüm
Build edilen game ve db dosyalarını linklemediği için hep sabit game ve db dosyasıyla oyuna bağlandığı için yaptığı güncellemeler gözükmüyormuş bin içerisine game ve db linkledim problem düzeldi.
C++:
Genişlet Daralt Kopyala
-    RaceToJob(job, &job);
+    //RaceToJob(job, &job);
Şu şekilde değiştir.
 
Bu kodları başka bir yerden felan mı aldın biraz garip duruyor Çözüldü - Başlangıç itemlerini Source üzerinden ayarlamak bu konudakini kullanabilirsin. Build sırasında RaceToJob kısmı hata verirse yukarıdakini yap
C++:
Genişlet Daralt Kopyala
extern bool RaceToJob(unsigned race, unsigned *ret_job);
bunu eklediğimiz için onu kaldırıyoruz.
 
Bu kodları başka bir yerden felan mı aldın biraz garip duruyor Çözüldü - Başlangıç itemlerini Source üzerinden ayarlamak bu konudakini kullanabilirsin. Build sırasında RaceToJob kısmı hata verirse yukarıdakini yap
Kod:
Genişlet Daralt Kopyala
extern bool RaceToJob(unsigned race, unsigned *ret_job);
bunu eklediğimiz için onu kaldırıyoruz.
t.window ve , t.count değerleri hepsinde aynı olduğu için yukarda tanımladım. O daha önceden sizin verdiğiniz linkteki gibiydi. Sonradan böyle tanımladım ama dediğim gibi sonuç değişmiyor. Acaba başka bir dosya ile alakası mı var ? server üzerinde build edip reboot atıyorum. Yapmam gereken başka bir şey var mı ?
 
t.window ve , t.count değerleri hepsinde aynı olduğu için yukarda tanımladım. O daha önceden sizin verdiğiniz linkteki gibiydi. Sonradan böyle tanımladım ama dediğim gibi sonuç değişmiyor. Acaba başka bir dosya ile alakası mı var ? server üzerinde build edip reboot atıyorum. Yapmam gereken başka bir şey var mı ?
build ettiğin game ve db dosyası ile oyunu çalıştırıyorsan bir sorun olmaması gerek.
 
bana discord üzerinden ulaşırsan inceleyebiliriz. MEKA#3706
 
Build edilen game ve db dosyalarını linklemediği için hep sabit game ve db dosyasıyla oyuna bağlandığı için yaptığı güncellemeler gözükmüyormuş bin içerisine game ve db linkledim problem düzeldi.
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst