[DEV]AB 1
[DEV]AB
metin2008 1
metin2008
kaptanmikro1 1
kaptanmikro1
Scarlet 1
Scarlet
emirhanHCL 1
emirhanHCL
R 1
Roksam
farkmt2official 1
farkmt2official
TuZaKK 1
TuZaKK
sermin 1
sermin
berkmenoo 1
berkmenoo
mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
Hikaye Ekle

[C++] Başlangıç Levelini Ayarlama

  • Konuyu başlatan Konuyu başlatan recep7878
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 4
  • Görüntüleme Görüntüleme 3K
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

Direk questten değilde kaynak dosyalarından başlangıç levelini ayarlamayı göstericeğim​

Farkı ne diye soran olursa Oyuna 1 level değilde direk level almadan yazılan levelden başlanmasını ve bir nebzede olsa level başlandığı gibi level atlayıp oyundaki kaliteyi düşürücek şeyin bir nebze önüne geçmeye yarıyacaktır.


Açılıcak dosya: input_login.cpp


Aratılıcak kod bloğu:
Kod:
bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, BYTE bEmpire)[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]

Çıkan Fonksiyon :
Kod:
bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, BYTE bEmpire)[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]{[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]if (race >= MAIN_RACE_MAX_NUM)[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]{[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]sys_err("NewPlayerTable2.OUT_OF_RACE_RANGE(%d >= max(%d))\n", race, MAIN_RACE_MAX_NUM);[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]return false;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]}[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]unsigned job;[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]if (!RaceToJob(race, &job))[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]{ [/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]sys_err("NewPlayerTable2.RACE_TO_JOB_ERROR(%d)\n", race);[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]return false;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]}[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]sys_log(0, "NewPlayerTable2(name=%s, race=%d, job=%d)", name, race, job);[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]memset(table, 0, sizeof(TPlayerTable));[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]strlcpy(table->name, name, sizeof(table->name));[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]table->level = 1;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->job = race; // Á÷¾÷´ë½Å Á¾Á·À» ³Ö´Â´Ù[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->voice = 0;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->part_base = shape;[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]table->st = JobInitialPoints[job].st;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->dx = JobInitialPoints[job].dx;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->ht = JobInitialPoints[job].ht;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->iq = JobInitialPoints[job].iq;[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]table->hp = JobInitialPoints[job].max_hp + table->ht * JobInitialPoints[job].hp_per_ht;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->sp = JobInitialPoints[job].max_sp + table->iq * JobInitialPoints[job].sp_per_iq;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->stamina = JobInitialPoints[job].max_stamina;[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]table->x = CREATE_START_X(bEmpire) + number(-300, 300);[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->y = CREATE_START_Y(bEmpire) + number(-300, 300);[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->z = 0;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->dir = 0;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->playtime = 0;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]table->gold = 0;[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]table->skill_group = 0;[/FONT][/COLOR]

[COLOR=#BB0000][FONT=Verdana]return true;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]}


Değişilicek kod:

Kod:
 table->level = 1;[/FONT][/COLOR]
[COLOR=#BB0000][FONT=Verdana]

İyi forumlar
 
Moderatör tarafında düzenlendi:
Direk questten değilde kaynak dosyalarından başlangıç levelini ayarlamayı göstericeğim
Farkı ne diye soran olursa Oyuna 1 level değilde direk level almadan yazılan levelden başlanmasını ve bir nebzede olsa level başlandığı gibi level atlayıp oyundaki kaliteyi düşürücek şeyin bir nebze önüne geçmeye yarıyacaktır.


Açılıcak dosya: input_login.cpp


Aratılıcak kod bloğu:
Kod:
bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, BYTE bEmpire)

Çıkan Fonksiyon :
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;

    table->x        = CREATE_START_X(bEmpire) + number(-300, 300);
    table->y        = CREATE_START_Y(bEmpire) + number(-300, 300);
    table->z        = 0;
    table->dir        = 0;
    table->playtime = 0;
    table->gold     = 0;

    table->skill_group = 0;

    return true;
}


Değişilicek kod:

Kod:
    table->level        = 1;

İyi forumlar​
Teşekkürler, Recep Bunu Configden Çektiricem Çok Daha Güzel Olucak..
 
Paylaşım için teşekkürler lakin exp veya statü değerlerinde hata olabilir, 1 olduğunda sorun olmaz ama 50 veya 70 felan yapıldığında sorun yaşanabilir.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

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

Geri
Üst