Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

sourceden baslangiç level ve item ayarlama

  • Konuyu başlatan Konuyu başlatan apikomt2
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 12
  • Görüntüleme Görüntüleme 2K

apikomt2

Level 6
Uzman
Katılım
11 May 2023
Konular
270
Mesajlar
1,141
Çözüm
2
Online süresi
1mo 25d
Reaksiyon Skoru
744
Altın Konu
1
Başarım Puanı
199
MmoLira
1,170
DevLira
381
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

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;

    }




like
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ını düzenledim

input_db.cpp

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 = 17;

    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},    // Zirh
            {EQUIPMENT,    1,    1,    12269},    // Kafalik
            {EQUIPMENT,    2,    1,    15209}, // Ayakkabi
            {EQUIPMENT,    3,    1,    14209},    // Bilezik
            {EQUIPMENT,    4,    1,    149},    // Silah
            {EQUIPMENT,    5,    1,    16149}, // Kolye
            {EQUIPMENT,    6,    1,    17109}, // Kupe
            {EQUIPMENT,    10,    1,    13069},    // Kalkan

            {INVENTORY,    1,    1,    71051}, //Kadim Efsun
            // {INVENTORY,    2,    1,    72725}, //oto bot hp buyuk extra de?il
            // {INVENTORY,    3,    1,    72729}, //oto bot sp buyuk extra de?il
            {INVENTORY,    4,    1,    40002}, //ı?ınlasnma yuzu?u
            {INVENTORY,    5,    1,    50053}, //at kitabı
           
           
            {INVENTORY,    6,    1,    41774}, //ı?ınlasnma yuzu?u
            {INVENTORY,    7,    1,    41776}, //at kitabı
            {INVENTORY,    8,    1,    45392}, //ı?ınlasnma yuzu?u
            {INVENTORY,    9,    1,    45394}, //at kitabı
            {INVENTORY,    9,    1,    72725}, //at kitabı
            {INVENTORY,    9,    1,    72729}, //at kitabı
           
        },

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

            {INVENTORY,    1,    1,    71051}, //Kadim Efsun
            // {INVENTORY,    2,    1,    72725}, //oto bot hp buyuk extra de?il
            // {INVENTORY,    3,    1,    72729}, //oto bot sp buyuk extra de?il
            {INVENTORY,    4,    1,    40002}, //ı?ınlasnma yuzu?u
            {INVENTORY,    5,    1,    50053}, //at kitabı
           
           
            {INVENTORY,    6,    1,    41774}, //ı?ınlasnma yuzu?u
            {INVENTORY,    7,    1,    41776}, //at kitabı
            {INVENTORY,    8,    1,    45392}, //ı?ınlasnma yuzu?u
            {INVENTORY,    9,    1,    45394}, //at kitabı
           
           
        },

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

            {INVENTORY,    1,    1,    71051}, //Kadim Efsun
            // {INVENTORY,    2,    1,    72725}, //oto bot hp buyuk extra de?il
            // {INVENTORY,    3,    1,    72729}, //oto bot sp buyuk extra de?il
            {INVENTORY,    4,    1,    40002}, //ı?ınlasnma yuzu?u
            {INVENTORY,    5,    1,    50053}, //at kitabı
           
           
            {INVENTORY,    6,    1,    41774}, //ı?ınlasnma yuzu?u
            {INVENTORY,    7,    1,    41776}, //at kitabı
            {INVENTORY,    8,    1,    45392}, //ı?ınlasnma yuzu?u
            {INVENTORY,    9,    1,    45394}, //at kitabı
        },

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

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

            {INVENTORY,    1,    1,    71051}, //Kadim Efsun
            // {INVENTORY,    2,    1,    72725}, //oto bot hp buyuk extra de?il
            // {INVENTORY,    3,    1,    72729}, //oto bot sp buyuk extra de?il
            {INVENTORY,    4,    1,    40002}, //ı?ınlasnma yuzu?u
            {INVENTORY,    5,    1,    50053}, //at kitabı
           
            {INVENTORY,    6,    1,    41774}, //ı?ınlasnma yuzu?u
            {INVENTORY,    7,    1,    41776}, //at kitabı
            {INVENTORY,    8,    1,    45392}, //ı?ınlasnma yuzu?u
            {INVENTORY,    9,    1,    45394}, //at kitabı
        }
#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.window    = initialItems[job][i].window;
        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;



        db_clientdesc->DBPacketHeader(HEADER_GD_ITEM_SAVE, 0, sizeof(TPlayerItem));
        db_clientdesc->Packet(&t, sizeof(TPlayerItem));
    }
    //baslangic item verme bitis

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



Kod:
sss
 
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
 
Paylaşım için teşekkürler.
 
Paylaşım için teşekkürler.
 
Teşekkürler ama böyle bir konu forumda olması lazım
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst