Neler yeni

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Kod Sourceden başlangıç level ve item ayarlama

Fatih Bulut

Süper Üye
Katılım
6 Kas 2021
Mesajlar
2,434
Tepkime puanı
3,676
Puanları
113
Yaş
30
Konum
Türkiye
Dc
fatihbulut
Konu Alıntıdır
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.


Şu an 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 = 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;
        }



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

input_db.cpp

[CODE]    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;
}
 
  Benzer konular Forum Tarih
Python / C++/ C# 0 113

Benzer konular

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar