ShadowFon 1
ShadowFon
bikral 1
bikral
-TuRKuaZ- 1
-TuRKuaZ-
SLyFeLLowTR 1
SLyFeLLowTR
TGamesZeus 1
TGamesZeus
Best Studio 1
Best Studio
berkmenoo 1
berkmenoo
InfernoShade 1
InfernoShade
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
Hikaye Ekle

Cevaplanmadı Yeni Bonus Türü Ekleme Yardımı

  • Konuyu başlatan Konuyu başlatan cinepol123
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 1
  • Görüntüleme Görüntüleme 111

cinepol123

Level 4
TM Üye
Üye
Katılım
24 May 2011
Konular
58
Mesajlar
260
Çözüm
4
Online süresi
2mo 10h
Reaksiyon Skoru
57
Altın Konu
0
TM Yaşı
15 Yıl 25 Gün
Başarım Puanı
135
MmoLira
7,817
DevLira
6
Ticaret - 0%
0   0   0

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Yeni bonus türü eklemek istiyorum. fakat eklediğimde çalışmıyor. yaptıklarım;

constants.cpp
#if defin#if__ITEM_APPLY_RANDOM__)
{ POINT_NONE, }, // APPLY_RANDOM, // 122
#endif de#endif { POINT_ATTBONUS_DRAGON, },
{ POINT_ATTBONUS_MYSTERY, },

batlle.cpp

iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_TREE)) / 100; ' DEN SONRA
-----------------------------------------------------------------------------------------------------------------------
if (pkVictim->IsRaceFlag(RACE_FLAG_DRAGON))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_DRAGON)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_MYSTERY))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_MYSTERY)) / 100;


Char.cpp
case POINT_RESIST_SHAMAN: dan sonra
case POINT_ATTBONUS_DRAGON:
case POINT_ATTBONUS_MYSTERY:
#if defin#if__CONQUEROR_LEVEL__)
case APPLY_SUNGMA_STR: // 118
case APPLY_SUNGMA_HP: // 119
case APPLY_SUNGMA_MOVE: // 120
case APPLY_SUNGMA_IMMUNE: // 121
#endif
--#endif------------------------------------------------------------------
case APPLY_ATTBONUS_DRAGON:
case APPLY_ATTBONUS_MYSTERY:

Char.h
#if defin#if__GEM_SYSTEM__)
POINT_GEM = 242,
#endif
--#endif------------------------------------------------------------------
POINT_ATTBONUS_DRAGON = 243,
POINT_ATTBONUS_MYSTERY = 244,

leght.h

#if defin#if__ITEM_APPLY_RANDOM__)
APPLY_RANDOM, // 122
#endif

[#endifOR=rgb(184, 49, 47)]---------------------------------------------------------------------[/COLOR][/B]
APPLY_ATTBONUS_DRAGON,
APPLY_ATTBONUS_MYSTERY,

MAX_APPLY_NUM,

#if defin#if__ELEMENT_SYSTEM__)
RACE_FLAG_ZODIAC = (1 << 17),
#endif
--#endif------------------------------------------------------------------
RACE_FLAG_DRAGON = (1 << 18),
RACE_FLAG_MYSTERY = (1 << 19),

denemek için server taraflı yaptım sadece quest ile hasarım artmıyor. ayrıca client taraflı da yaptım yine işe yaramadı.

quest deneme begin
state start begin
when 50049.use begin
affect.add_collect(apply.ATTBONUS_DRAGON, 100, 60 * 10)
syschat("10 dakika boyunca Ejderhalara karşı %100 güçlendin!")
end
end
end

sorun ne olabilir yardımınızı bekliyorum.
 
Son düzenleme:
Yeni bonus türü eklemek istiyorum. fakat eklediğimde çalışmıyor. yaptıklarım;

constants.cpp
#if defin#if__ITEM_APPLY_RANDOM__)
{ POINT_NONE, }, // APPLY_RANDOM, // 122
#endif de#endif { POINT_ATTBONUS_DRAGON, },
{ POINT_ATTBONUS_MYSTERY, },

batlle.cpp

iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_TREE)) / 100; ' DEN SONRA
-----------------------------------------------------------------------------------------------------------------------
if (pkVictim->IsRaceFlag(RACE_FLAG_DRAGON))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_DRAGON)) / 100;
if (pkVictim->IsRaceFlag(RACE_FLAG_MYSTERY))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_MYSTERY)) / 100;


Char.cpp
case POINT_RESIST_SHAMAN: dan sonra
case POINT_ATTBONUS_DRAGON:
case POINT_ATTBONUS_MYSTERY:
#if defin#if__CONQUEROR_LEVEL__)
case APPLY_SUNGMA_STR: // 118
case APPLY_SUNGMA_HP: // 119
case APPLY_SUNGMA_MOVE: // 120
case APPLY_SUNGMA_IMMUNE: // 121
#endif
--#endif------------------------------------------------------------------
case APPLY_ATTBONUS_DRAGON:
case APPLY_ATTBONUS_MYSTERY:

Char.h
#if defin#if__GEM_SYSTEM__)
POINT_GEM = 242,
#endif
--#endif------------------------------------------------------------------
POINT_ATTBONUS_DRAGON = 243,
POINT_ATTBONUS_MYSTERY = 244,

leght.h

#if defin#if__ITEM_APPLY_RANDOM__)
APPLY_RANDOM, // 122
#endif

[#endifOR=rgb(184, 49, 47)]---------------------------------------------------------------------[/COLOR][/B]
APPLY_ATTBONUS_DRAGON,
APPLY_ATTBONUS_MYSTERY,

MAX_APPLY_NUM,

#if defin#if__ELEMENT_SYSTEM__)
RACE_FLAG_ZODIAC = (1 << 17),
#endif
--#endif------------------------------------------------------------------
RACE_FLAG_DRAGON = (1 << 18),
RACE_FLAG_MYSTERY = (1 << 19),

denemek için server taraflı yaptım sadece quest ile hasarım artmıyor. ayrıca client taraflı da yaptım yine işe yaramadı.

quest deneme begin
state start begin
when 50049.use begin
affect.add_collect(apply.ATTBONUS_DRAGON, 100, 60 * 10)
syschat("10 dakika boyunca Ejderhalara karşı %100 güçlendin!")
end
end
end

sorun ne olabilir yardımınızı bekliyorum.

MERHABA HOCAM BÖYLE BİR BİLGİYE ULAŞTIM İŞİNİ GÖRÜR BELKİ



✅ 1. char.h – POINT_ Tanımları (DOĞRU GİBİ)​



POINT_ATTBONUS_DRAGON = 243,
POINT_ATTBONUS_MYSTERY = 244,


Burada bir sorun görünmüyor. Ama POINT_MAX_NUM'un bu değerlerden daha büyük olduğundan emin ol. Yoksa SetPoint ve GetPoint hatalı çalışır.




✅ 2. char.cpp – switch-case İçine Ekleme (DOĞRU)​



case POINT_ATTBONUS_DRAGON:
case POINT_ATTBONUS_MYSTERY:


Bu da doğru. Ama switch-case'in hangi fonksiyon içinde olduğunu kontrol et:


  • CCharacter::GetPoint
  • CCharacter::ApplyPoint
  • CCharacter::ComputeBattlePoints gibi yerlerde tam işlendiğinden emin ol.



✅ 3. battle.cpp – Hasara Etki (DOĞRU YAZILMIŞ)​



if (pkVictim->IsRaceFlag(RACE_FLAG_DRAGON))
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_DRAGON)) / 100;


Burada sorun yok. Ama IsRaceFlag fonksiyonu düzgün çalışıyor mu? Bak:




⚠️ 4. race_flag Doğru Tanımlı Mı?​


length.h içinde:​



RACE_FLAG_DRAGON = (1 << 18),
RACE_FLAG_MYSTERY = (1 << 19),


Bu tamam. Ama mob_proto dosyanda veya moblarda bu flag'ler atanmış mı?


✅ Kontrol et:​


  • mob_proto içindeki race_flag kolonuna dragon veya mystery yazdın mı?
  • Eğer orada RACE_FLAG_DRAGON yoksa IsRaceFlag sonucu false olur ve iAtk artmaz.

🛠️ mob_proto'da race_flag sütununa:



dragon


veya



dragon | aggressive


gibi yazmalısın.




⚠️ 5. quest ile Eklenen Bonus İşlemiyor​


Şu kısmı yazmışsın:​



affect.add_collect(apply.ATTBONUS_DRAGON, 100, 60 * 10)


Ancak bu sadece çalışır eğer apply.ATTBONUS_DRAGON hem server hem client tarafında tanımlıysa ve düzgün index verilmişse.




✅ 6. utils.cpp veya item_attribute.cpp içinde APPLY_ maplemeleri var mı?​


Server tarafında: ApplyTypeToPointType gibi bir fonksiyon olabilir. Bu fonksiyonda APPLY_ATTBONUS_DRAGON için POINT_ATTBONUS_DRAGON dönüşü gerekiyor.


Örnek:​



int ApplyTypeToPointType(BYTE applyType)
{
switch (applyType)
{
// ...
case APPLY_ATTBONUS_DRAGON:
return POINT_ATTBONUS_DRAGON;
// ...
}
}


Eğer bu yoksa apply tipi POINT'e dönüşmez ve SetPoint işe yaramaz.




⚠️ 7. Client Tarafında Tanımlamalar​


Eğer APPLY_ATTBONUS_DRAGON client'ta tanımlı değilse, quest ile verdiğin bonus görünse bile etki etmez.


Tanımlaman gereken yerler:​


  • PythonCharacterManager.cpp – APPLY_ index eşleme.
  • locale_game.txt – Adı ve açıklaması.
  • game.py veya benzeri – APPLY_ dizisinde yer almalı.



✅ 8. Son Adım – Test için Loglama Kullan​


battle.cpp içine geçici olarak log ekle:



if (pkVictim->IsRaceFlag(RACE_FLAG_DRAGON)) {
sys_log(0, "DRAGON BONUS DEVREDE: %d", pkAttacker->GetPoint(POINT_ATTBONUS_DRAGON));
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_DRAGON)) / 100;
}


Böylece bonus gerçekten devreye giriyor mu terminalden/logdan görürsün.
 

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

Geri
Üst