Bvural41 1
Bvural41
romegames 1
romegames
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Best Studio 1
Best Studio
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
InfernoShade 1
InfernoShade
BlackFullMoon 1
BlackFullMoon
Agora Metin2 1
Agora Metin2
PrimeAC 1
PrimeAC
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

[C++] Yeni Eğitim Bonusu

  • Konuyu başlatan Konuyu başlatan Okan Çakın
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 10
  • Görüntüleme Görüntüleme 3K

Okan Çakın

Level 4
TM Üye
Katılım
30 May 2023
Konular
38
Mesajlar
456
Çözüm
6
Online süresi
1mo 15d
Reaksiyon Skoru
354
Altın Konu
0
Başarım Puanı
103
MmoLira
11,847
DevLira
90
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!

Öğretmene Gittiğinizde Yeni Eğitim Aldığınızda Eğitim Bonusu Olarak 1 Saatliğine +25 Hareket Hızı Kazanırsınız.

Bonusu, Bonus Değerini ve Verilen Süreyi Dilediğiniz Gibi Değiştirebilirsiniz.

İşte Kodlarımız:


Char_Skill.cpp Aç ve Arat:


Kod:
void CHARACTER::SetSkillGroup(BYTE bSkillGroup)
{
    if (bSkillGroup > 2)
        return;

    if (GetLevel() < 5)
        return;

Altına Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
    SetTrainingBonus(bSkillGroup);
#endif

Tekrar Arat:

Kod:
void CHARACTER::SetSkillGroup(BYTE bSkillGroup)

Üstüne Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
void CHARACTER::SetTrainingBonus(BYTE bSkillGroup)
{
    /* v0 = AFFECT_TRAINING_BONUS = Affect Type */
    /* v1 = POINT_MOV_SPEED = Bonus Type */
    /* v2 = SPEED_BONUS_VALUE = Bonus Value */
    /* v3 = AFFECT_TIME = Affect Time */

    DWORD v0 = AFFECT_TRAINING_BONUS;
    BYTE v1 = POINT_MOV_SPEED;
    const long v2 = 25;
    const long v3 = 3600;

    if (bSkillGroup)
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have selected %d skill sets."), bSkillGroup);

    CAffect* pAffect = FindAffect(AFFECT_TRAINING_BONUS);
    if (!pAffect)
    {
        AddAffect(v0, v1, v2, AFF_NONE, v3, 0, true, false);
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully completed the training. You gain 25 movement speed for 1 hour."));
    }
}
#endif

Char.h Aç ve Arat:

Kod:
};

ESex GET_SEX(LPCHARACTER ch);

#endif

Üstüne Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
    public:
        void SetTrainingBonus(BYTE bSkillGroup);
#endif

Affect.h Aç ve Arat:

Kod:
    AFFECT_QUEST_START_IDX                    = 1000

Üstüne Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
    AFFECT_TRAINING_BONUS                     = 724,
#endif

Makroyu Dahil Etmeyi Unutmayın.

Kanıt:


quest.png


Bonusu Almadan Önceki Hareket Hızım

move_speed.png


Bonusu Aldıktan Sonraki Hareket Hızım

bonus_speed.png


Affect Tablosu

affect_tablo.png


Sistemi Dilediğiniz Gibi Değiştirip Kullanabilirsiniz. Herhangi Bir Hata veya Eksik Kodlama İle Karşılaşırsanız Lütfen Konuya Dahil Ediniz.


Teşekkür Ederim.




 

En Çok Reaksiyon Alan Mesajlar

Üstüne Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
void CHARACTER::SetTrainingBonus(BYTE bSkillGroup)
{
/* v0 = AFFECT_TRAINING_BONUS = Affect Type */
/* v1 = POINT_MOV_SPEED = Bonus Type */
/* v2 = SPEED_BONUS_VALUE = Bonus Value */
/* v3 = AFFECT_TIME = Affect Time */

DWORD v0 = AFFECT_TRAINING_BONUS;
BYTE v1 = POINT_MOV_SPEED;
const long v2 = 25;
const long v3 = 3600;

if (bSkillGroup)
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have selected %d skill sets."), bSkillGroup);

CAffect* pAffect = FindAffect(AFFECT_TRAINING_BONUS);
if (!pAffect)
{
AddAffect(v0, v1, v2, AFF_NONE, v3, 0, true, false);
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully completed the training. You gain 25 movement speed for 1 hour."));
}
}
#endif
bunun yerine bu nasıl fikir? 2 karakter sınırı olmadığı için değişkenlere istediğimiz ismi verebiliyoruz. 😅

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
void CHARACTER::SetTrainingBonus(BYTE bSkillGroup)
{
    if (bSkillGroup)
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have selected %d skill sets."), bSkillGroup);

    CAffect* pAffect = FindAffect(AFFECT_TRAINING_BONUS);
    if (!pAffect)
    {
        constexpr long lValue = 25;
        constexpr long lDuration = 3600;
        AddAffect(AFFECT_TRAINING_BONUS, POINT_MOV_SPEED, lValue, AFF_NONE, lDuration, 0, true, false);
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully completed the training. You gain %d movement speed for %d seconds."), lValue, lDuration);
    }
}
#endif
Üstüne Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
void CHARACTER::SetTrainingBonus(BYTE bSkillGroup)
{
/* v0 = AFFECT_TRAINING_BONUS = Affect Type */
/* v1 = POINT_MOV_SPEED = Bonus Type */
/* v2 = SPEED_BONUS_VALUE = Bonus Value */
/* v3 = AFFECT_TIME = Affect Time */

DWORD v0 = AFFECT_TRAINING_BONUS;
BYTE v1 = POINT_MOV_SPEED;
const long v2 = 25;
const long v3 = 3600;

if (bSkillGroup)
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have selected %d skill sets."), bSkillGroup);

CAffect* pAffect = FindAffect(AFFECT_TRAINING_BONUS);
if (!pAffect)
{
AddAffect(v0, v1, v2, AFF_NONE, v3, 0, true, false);
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully completed the training. You gain 25 movement speed for 1 hour."));
}
}
#endif
bunun yerine bu nasıl fikir? 2 karakter sınırı olmadığı için değişkenlere istediğimiz ismi verebiliyoruz. 😅

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
void CHARACTER::SetTrainingBonus(BYTE bSkillGroup)
{
    if (bSkillGroup)
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have selected %d skill sets."), bSkillGroup);

    CAffect* pAffect = FindAffect(AFFECT_TRAINING_BONUS);
    if (!pAffect)
    {
        constexpr long lValue = 25;
        constexpr long lDuration = 3600;
        AddAffect(AFFECT_TRAINING_BONUS, POINT_MOV_SPEED, lValue, AFF_NONE, lDuration, 0, true, false);
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully completed the training. You gain %d movement speed for %d seconds."), lValue, lDuration);
    }
}
#endif
 
Öğretmene Gittiğinizde Yeni Eğitim Aldığınızda Eğitim Bonusu Olarak 1 Saatliğine +25 Hareket Hızı Kazanırsınız.

Bonusu, Bonus Değerini ve Verilen Süreyi Dilediğiniz Gibi Değiştirebilirsiniz.

İşte Kodlarımız:


Char_Skill.cpp Aç ve Arat:


Kod:
void CHARACTER::SetSkillGroup(BYTE bSkillGroup)
{
    if (bSkillGroup > 2)
        return;

    if (GetLevel() < 5)
        return;

Altına Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
    SetTrainingBonus(bSkillGroup);
#endif

Tekrar Arat:

Kod:
void CHARACTER::SetSkillGroup(BYTE bSkillGroup)

Üstüne Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
void CHARACTER::SetTrainingBonus(BYTE bSkillGroup)
{
    /* v0 = AFFECT_TRAINING_BONUS = Affect Type */
    /* v1 = POINT_MOV_SPEED = Bonus Type */
    /* v2 = SPEED_BONUS_VALUE = Bonus Value */
    /* v3 = AFFECT_TIME = Affect Time */

    DWORD v0 = AFFECT_TRAINING_BONUS;
    BYTE v1 = POINT_MOV_SPEED;
    const long v2 = 25;
    const long v3 = 3600;

    if (bSkillGroup)
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have selected %d skill sets."), bSkillGroup);

    CAffect* pAffect = FindAffect(AFFECT_TRAINING_BONUS);
    if (!pAffect)
    {
        AddAffect(v0, v1, v2, AFF_NONE, v3, 0, true, false);
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully completed the training. You gain 25 movement speed for 1 hour."));
    }
}
#endif

Char.h Aç ve Arat:

Kod:
};

ESex GET_SEX(LPCHARACTER ch);

#endif

Üstüne Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
    public:
        void SetTrainingBonus(BYTE bSkillGroup);
#endif

Affect.h Aç ve Arat:

Kod:
    AFFECT_QUEST_START_IDX                    = 1000

Üstüne Ekle:

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
    AFFECT_TRAINING_BONUS                     = 724,
#endif

Makroyu Dahil Etmeyi Unutmayın.

Kanıt:


Ekli dosyayı görüntüle 103487

Bonusu Almadan Önceki Hareket Hızım

Ekli dosyayı görüntüle 103488

Bonusu Aldıktan Sonraki Hareket Hızım

Ekli dosyayı görüntüle 103489


Affect Tablosu

Ekli dosyayı görüntüle 103490

Sistemi Dilediğiniz Gibi Değiştirip Kullanabilirsiniz. Herhangi Bir Hata veya Eksik Kodlama İle Karşılaşırsanız Lütfen Konuya Dahil Ediniz.


Teşekkür Ederim.



Paylaşım için teşekkürler.
 
bunun yerine bu nasıl fikir? 2 karakter sınırı olmadığı için değişkenlere istediğimiz ismi verebiliyoruz. 😅

Kod:
#ifdef ENABLE_NEW_TRAINING_BONUS
void CHARACTER::SetTrainingBonus(BYTE bSkillGroup)
{
    if (bSkillGroup)
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have selected %d skill sets."), bSkillGroup);

    CAffect* pAffect = FindAffect(AFFECT_TRAINING_BONUS);
    if (!pAffect)
    {
        constexpr long lValue = 25;
        constexpr long lDuration = 3600;
        AddAffect(AFFECT_TRAINING_BONUS, POINT_MOV_SPEED, lValue, AFF_NONE, lDuration, 0, true, false);
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully completed the training. You gain %d movement speed for %d seconds."), lValue, lDuration);
    }
}
#endif
Bunun karakter sınırıyla alakası yok. Oyunda 2 den fazla skill grup yok. Oyuncu herhangi bi skill grubunu aldığında zaten yeni beceri almış demektir. Bende bu verilen skill grup fonksiyonun içine Fonksiyon ismini verip yeni fonksiyon içine tüm çalışacak kodları ekledim. Anlamayanlar için ise değişken yapıp ekledim. Yorum satırı olarakta ne işe yaradıklarını ekledim. Değişkenlerin boyutlarını ise AddAffectin argümanlarının aldığı boyut kadar verdim. Sorun yaratacak birşey yok dileyen dilediği gibi kullanır.
 
Son düzenleme:
Eline sağlık güzel düşünülmüş.
 

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

Geri
Üst