sourceden baslangiç level ve item ayarlama

beheyev783

Üye
Üye
Mesaj
66
Çözümler
1
Beğeni
36
Puan
54
Ticaret Puanı
0
bu zaman kadar çok başlangıç level paylaşıldı hepsinde hp bugu var.
hp bugu nasıl yapılıyor ?
örneğin oyuna 90 level başladın 4300 hp ile başlıyorsun
statü sıfırlama yapınca hp 5500 oluyor.
bu paylaşımda öyle sorun yok.


şuan paylaşacağım sistem sourcede zaten ekli

başlangıç level ve parayı input_login.cpp den ayarlanıyor

configlere
china_event_server: 1
ekle

input_login.cpp

ilgili yere ekle

Kod:
  if (china_event_server)

    {

        table->level = 35;



        for (int i = 1; i < 35; ++i)

        {

            int iHP = number(JobInitialPoints[job].hp_per_lv_begin, JobInitialPoints[job].hp_per_lv_end);

            int iSP = number(JobInitialPoints[job].sp_per_lv_begin, JobInitialPoints[job].sp_per_lv_end);

            table->sRandomHP += iHP;

            table->sRandomSP += iSP;

            table->stat_point += 3;

        }



        table->hp += table->sRandomHP;

        table->sp += table->sRandomSP;



        table->gold = 1000000;

    }


Kod:
bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, BYTE bEmpire)
{
    if (race >= MAIN_RACE_MAX_NUM)
    {
        sys_err("NewPlayerTable2.OUT_OF_RACE_RANGE(%d >= max(%d))\n", race, MAIN_RACE_MAX_NUM);
        return false;
    }

    unsigned job;

    if (!RaceToJob(race, &job))
    {
        sys_err("NewPlayerTable2.RACE_TO_JOB_ERROR(%d)\n", race);
        return false;
    }

    sys_log(0, "NewPlayerTable2(name=%s, race=%d, job=%d)", name, race, job);

    memset(table, 0, sizeof(TPlayerTable));

    strlcpy(table->name, name, sizeof(table->name));

    table->level        = 1;
    table->job            = race;
    table->voice        = 0;
    table->part_base    = shape;

    table->st        = JobInitialPoints[job].st;
    table->dx        = JobInitialPoints[job].dx;
    table->ht        = JobInitialPoints[job].ht;
    table->iq        = JobInitialPoints[job].iq;

    table->hp        = JobInitialPoints[job].max_hp + table->ht * JobInitialPoints[job].hp_per_ht;
    table->sp        = JobInitialPoints[job].max_sp + table->iq * JobInitialPoints[job].sp_per_iq;
    table->stamina    = JobInitialPoints[job].max_stamina;

#if defined(ENABLE_WOLFMAN_CHARACTER) && defined(USE_LYCAN_CREATE_POSITION)
    table->x         = LYCAN_CREATE_START_X(bEmpire, job) + number(-300, 300);
    table->y         = LYCAN_CREATE_START_Y(bEmpire, job) + number(-300, 300);
#else
    table->x        = CREATE_START_X(bEmpire) + number(-300, 300);
    table->y        = CREATE_START_Y(bEmpire) + number(-300, 300);
#endif
    table->z        = 0;
    table->dir        = 0;
    table->playtime = 0;
    table->gold     = 0;

    table->skill_group = 0;
 
    if (china_event_server)
    {
        table->level = 98;

        for (int i = 1; i < 98; ++i)
        {
            int iHP = number(JobInitialPoints[job].hp_per_lv_begin, JobInitialPoints[job].hp_per_lv_end);
            int iSP = number(JobInitialPoints[job].sp_per_lv_begin, JobInitialPoints[job].sp_per_lv_end);
            table->sRandomHP += iHP;
            table->sRandomSP += iSP;
            table->stat_point += 3;
        }

        table->hp += table->sRandomHP;
        table->sp += table->sRandomSP;

        table->gold = 15000000;
    }

burası zaten ekli başlangıç level itemleri burdan düzenleniyor.

input_db.cpp

Kod:
if (china_event_server)
    {
        t.window    = INVENTORY;
        t.count    = 1;
        t.owner    = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;

        struct SInitialItem
        {
            DWORD dwVnum;
            BYTE pos;
        };

        const int MAX_INITIAL_ITEM = 9;

        static SInitialItem initialItems[JOB_MAX_NUM][MAX_INITIAL_ITEM] =
        {
            { {11243,    2}, {12223,    3}, {15103,    4}, {   93,    1}, {16143,    8}, {17103,    9}, { 3083,    0}, {13193,    11}, {14103, 12}, },
            { {11443,    0}, {12363,    3}, {15103,    4}, { 1053,    2}, { 2083,    1}, {16083,    7}, {17083,    8}, {13193,    9}, {14103,    10}, },
            { {11643,    0}, {12503,    2}, {15103,    3}, {   93,    1}, {16123,    4}, {17143,    7}, {13193,    8}, {14103,    9}, {    0,    0}, },
            { {11843,    0}, {12643,    1}, {15103,    2}, { 7083,    3}, { 5053,    4}, {16123,    6}, {17143,    7}, {13193,    8}, {14103,    9}, },
#ifdef ENABLE_WOLFMAN_CHARACTER
            { {21023,    2}, {12223,    3}, {21513,    4}, { 6023,    1}, {16143,    8}, {17103,    9}, { 0,    0}, {13193,    11}, {14103, 12}, },
#endif
        };

        int job = pPacketDB->player.byJob;
        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.vnum    = initialItems[job][i].dwVnum;

            db_clientdesc->DBPacketHeader(HEADER_GD_ITEM_SAVE, 0, sizeof(TPlayerItem));
            db_clientdesc->Packet(&t, sizeof(TPlayerItem));
        }
    }

        table->hp += table->sRandomHP;
        table->sp += table->sRandomSP;

        table->gold = 1000000;
    }

    return true;
}
 
Son düzenleme:
not:item vermede bazı karakterlere item vermiyor çözersem paylaşırım.
erkek ninja erkek şaman wolfman
kadın sura
kadın savaşçıya wolfman itemleri gidiyor
 
bu zaman kadar çok başlangıç level paylaşıldı hepsinde hp bugu var.
hp bugu nasıl yapılıyor ?
örneğin oyuna 90 level başladın 4300 hp ile başlıyorsun
statü sıfırlama yapınca hp 5500 oluyor.

Aslında o bir bug değil. Oyuna bilerek eklenmiş bir özellikti. Aynı sınıftan birkaç yeni karakter oluşturun aynı şeyin oluştuğunu fark edeceksiniz. Oyuncular arası eşitliği sağlamak için gerekli bir düzenleme ama. Katkınız için teşekkür ederim.
 
bu durumun yaşanmaamsı adına gerekli düzenlemeyi paylaşabilirmisiniz.
çünkü pvplerde böyle bi özellik ihtiyaç duyulmuyor
 
@Whistle

giyili item olarak düzenleme
üsttekli linkde item vermeyi gelişmiş halini paylaşmışsınız levle vermenin de gelişmiş hali var mı ?

2. sorumda wolfman ekli değil wolfmanı nasıl ekleyebilirim

edit
wolfmanlı ve 3 taşlı hali


Kod:
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;

    #ifdef ENABLE_MOVE_CHANNEL
    if (!CMapLocation::instance().Get(pPacketDB->player.x, pPacketDB->player.y, lIndex, pPacketDB->player.lAddr, pPacketDB->player.wPort, g_bChannel))
    #else
    if (!CMapLocation::instance().Get(pPacketDB->player.x, pPacketDB->player.y, lIndex, pPacketDB->player.lAddr, pPacketDB->player.wPort))
    #endif
    {
        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));

    //baslangic item verme
    t.owner = r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;

    struct SInitialItem
    {
        BYTE    window;
        BYTE    pos;
        DWORD    count;

        DWORD    dwVnum;

        long    socket0;
        long    socket1;
        long    socket2;
        // long    socket3;
        // long    socket4;
        // long    socket5;
    };

    const int MAX_INITIAL_ITEM = 13;

    static SInitialItem initialItems[JOB_MAX_NUM][MAX_INITIAL_ITEM] =
    {
        // {window_type, envanterdeki yeri, adeti, item_vnum, socket0, socket1, socket2, socket3, socket4, socket5, socket6}

        {
            // WARRIOR
            {EQUIPMENT,    0,    1,    12019,    0,    0,    0},    // Zirh
            {EQUIPMENT,    1,    1,    12269,    0,    0,    0},    // Kafalik
            {EQUIPMENT,    2,    1,    15209,    0,    0,    0}, // Ayakkabi
            {EQUIPMENT,    3,    1,    14209,    0,    0,    0},    // Bilezik
            {EQUIPMENT,    4,    1,    149,        0,    0,    0},    // Silah
            {EQUIPMENT,    5,    1,    16149,    0,    0,    0}, // Kolye
            {EQUIPMENT,    6,    1,    17109,    0,    0,    0}, // Kupe
            {EQUIPMENT,    10,    1,    13069,    0,    0,    0},    // Kalkan

            {INVENTORY,    1,    1,    71051,    0,    0,    0}, //Kadim Efsun
            {INVENTORY,    2,    1,    72725,    0,    0,    0}, //oto bot hp buyuk extra de?il
            {INVENTORY,    3,    1,    72729,    0,    0,    0}, //oto bot sp buyuk extra de?il
            {INVENTORY,    4,    1,    40002,    0,    0,    0}, //ı?ınlasnma yuzu?u
            {INVENTORY,    5,    1,    50053,    0,    0,    0}, //at kitabı
        },

        {
            // ASSASSIN
            {EQUIPMENT,    0,    1,    12029,    0,    0,    0},    // Zirh
            {EQUIPMENT,    1,    1,    12399,    0,    0,    0},    // Kafalik
            {EQUIPMENT,    2,    1,    15209,    0,    0,    0}, // Ayakkabi
            {EQUIPMENT,    3,    1,    14209,    0,    0,    0},    // Bilezik
            {EQUIPMENT,    4,    1,    1109,    0,    0,    0},    // Silah
            {EQUIPMENT,    5,    1,    16089,    0,    0,    0}, // Kolye
            {EQUIPMENT,    6,    1,    17169,    0,    0,    0}, // Kupe
            {EQUIPMENT,    10,    1,    13089,    0,    0,    0},    // Kalkan

            {INVENTORY,    1,    1,    71051,    0,    0,    0}, //Kadim Efsun
            {INVENTORY,    2,    1,    72725,    0,    0,    0}, //oto bot hp buyuk extra de?il
            {INVENTORY,    3,    1,    72729,    0,    0,    0}, //oto bot sp buyuk extra de?il
            {INVENTORY,    4,    1,    40002,    0,    0,    0}, //ı?ınlasnma yuzu?u
            {INVENTORY,    5,    1,    50053,    0,    0,    0}, //at kitabı
        },

        {
            // SURA
            {EQUIPMENT,    0,    1,    12039,    0,    0,    0},    // Zirh
            {EQUIPMENT,    1,    1,    12539,    0,    0,    0},    // Kafalik
            {EQUIPMENT,    2,    1,    15209,    0,    0,    0}, // Ayakkabi
            {EQUIPMENT,    3,    1,    14209,    0,    0,    0},    // Bilezik
            {EQUIPMENT,    4,    1,    159,        0,    0,    0},    // Silah
            {EQUIPMENT,    5,    1,    16129,    0,    0,    0}, // Kolye
            {EQUIPMENT,    6,    1,    17209,    0,    0,    0}, // Kupe
            {EQUIPMENT,    10,    1,    13109,    0,    0,    0},    // Kalkan

            {INVENTORY,    1,    1,    71051,    0,    0,    0}, //Kadim Efsun
            {INVENTORY,    2,    1,    72725,    0,    0,    0}, //oto bot hp buyuk extra de?il
            {INVENTORY,    3,    1,    72729,    0,    0,    0}, //oto bot sp buyuk extra de?il
            {INVENTORY,    4,    1,    40002,    0,    0,    0}, //ı?ınlasnma yuzu?u
            {INVENTORY,    5,    1,    50053,    0,    0,    0}, //at kitabı
        },

        {
            // SHAMAN
            {EQUIPMENT,    0,    1,    12049,    0,    0,    0},    // Zirh
            {EQUIPMENT,    1,    1,    12679,    0,    0,    0},    // Kafalik
            {EQUIPMENT,    2,    1,    15209,    0,    0,    0}, // Ayakkabi
            {EQUIPMENT,    3,    1,    14209,    0,    0,    0},    // Bilezik
            {EQUIPMENT,    4,    1,    5109,    0,    0,    0},    // Silah
            {EQUIPMENT,    5,    1,    16129,    0,    0,    0}, // Kolye
            {EQUIPMENT,    6,    1,    17209,    0,    0,    0}, // Kupe
            {EQUIPMENT,    10,    1,    13129,    0,    0,    0},    // Kalkan

            {INVENTORY,    1,    1,    71051,    0,    0,    0}, //Kadim Efsun
            {INVENTORY,    2,    1,    72725,    0,    0,    0}, //oto bot hp buyuk extra de?il
            {INVENTORY,    3,    1,    72729,    0,    0,    0}, //oto bot sp buyuk extra de?il
            {INVENTORY,    4,    1,    40002,    0,    0,    0}, //ı?ınlasnma yuzu?u
            {INVENTORY,    5,    1,    50053,    0,    0,    0}, //at kitabı
        }
#ifdef ENABLE_WOLFMAN_CHARACTER
,
        {
            // Wolfman
            {EQUIPMENT,    0,    1,    21089,    0,    0,    0},    // Zirh
            {EQUIPMENT,    1,    1,    21539,    0,    0,    0},    // Kafalik
            {EQUIPMENT,    2,    1,    15209,    0,    0,    0}, // Ayakkabi
            {EQUIPMENT,    3,    1,    14209,    0,    0,    0},    // Bilezik
            {EQUIPMENT,    4,    1,    6059,    0,    0,    0},    // Silah
            {EQUIPMENT,    5,    1,    16189,    0,    0,    0}, // Kolye
            {EQUIPMENT,    6,    1,    17109,    0,    0,    0}, // Kupe
            {EQUIPMENT,    10,    1,    13169,    0,    0,    0},    // Kalkan

            {INVENTORY,    1,    1,    71051,    0,    0,    0}, //Kadim Efsun
            {INVENTORY,    2,    1,    72725,    0,    0,    0}, //oto bot hp buyuk extra de?il
            {INVENTORY,    3,    1,    72729,    0,    0,    0}, //oto bot sp buyuk extra de?il
            {INVENTORY,    4,    1,    40002,    0,    0,    0}, //ı?ınlasnma yuzu?u
            {INVENTORY,    5,    1,    50053,    0,    0,    0}, //at kitabı
        }
#endif
       
    };
 
Son düzenleme:
Geri
Üst