Çözüldü Offical Efsunlar Hakkında

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

zodiac160

Üye
Üye
Mesaj
80
Çözümler
3
Beğeni
32
Puan
419
Ticaret Puanı
0
Officale gelen bazı 6. ve 7. efsunları yapmak istiyordum örneğin mesela POINT_ATTBONUS_PER_ANIMAL toplam hayvanlara karşı güçlü değerinin % 5i gibi mesela bunun kodlamasını battle.cpp ye böyle kodlamasını yaparsam sizce uygun olur mu
C++:
if (pkAttacker->GetPoint(POINT_ATTBONUS_PER_ANIMAL) > 0 )
    {
    const int total_per_animal = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;
    iAtk += (iAtk * total_per_animal) / 100;
    }
 
Çözüm
Evet onu anladım. Benim demek istediğim şu.
C++:
if (pkVictim->IsNPC())
    {
        if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
Bu şekilde bir kontrol yapılıyor. Sende kodlarını şu şekilde yaparsan daha uygun olmaz mı?
C++:
if (pkVictim->IsNPC())
    {
        if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
        {
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
            if (pkAttacker->GetPoint(POINT_ATTBONUS_PER_ANIMAL) > 0 )
            {
                const int total_per_animal = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;
                iAtk += (iAtk * total_per_animal) / 100;
            }
        }
slotun flag ınıda kontrol etmen lazım değilmi. Bu şekilde yaparsan ANIMAL olmayan slot lardada işler diye düşünüyorum.
 
tun flag ınıda kontrol etmen lazım değilmi. Bu şekilde yaparsan ANIMAL olmayan slot lardada işler diye düşünüyorum
Kanka zaten hayvanlara karşı güçlü diye efsun var hayvanlara işleyen bi efsun var trde 6. 7. efsunlarda toplam hayvanlara karşı güçlü değerinin %5 gibi bi efsun var hani itemlerdeki toplam hayvanlara karşlı güçlü *= toplam değerin %5i yani 100 hayvan varsa %5i 5 hayvan yapar yani 8 tane iteme getirdiğinde +40 hayvanlara karşı güç demek değil mi yani toplam %140 gibi bir değer oluşuyor örnek vericek olursak
 
Evet onu anladım. Benim demek istediğim şu.
C++:
if (pkVictim->IsNPC())
    {
        if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
Bu şekilde bir kontrol yapılıyor. Sende kodlarını şu şekilde yaparsan daha uygun olmaz mı?
C++:
if (pkVictim->IsNPC())
    {
        if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
        {
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
            if (pkAttacker->GetPoint(POINT_ATTBONUS_PER_ANIMAL) > 0 )
            {
                const int total_per_animal = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;
                iAtk += (iAtk * total_per_animal) / 100;
            }
        }
 
Çözüm
Evet onu anladım. Benim demek istediğim şu.
C++:
if (pkVictim->IsNPC())
    {
        if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
Bu şekilde bir kontrol yapılıyor. Sende kodlarını şu şekilde yaparsan daha uygun olmaz mı?
C++:
if (pkVictim->IsNPC())
    {
        if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
        {
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
            if (pkAttacker->GetPoint(POINT_ATTBONUS_PER_ANIMAL) > 0 )
            {
                const int total_per_animal = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;
                iAtk += (iAtk * total_per_animal) / 100;
            }
        }
ama zaten POINT_ATTBONUS_PER_ANIMAL bir farklı efsun değeri taşıyor yani POINT_ATTBONUS_PER_ANIMAL burda bi efsun senin yaptığın gibi olursa + point değeri hesaplamasında yanlışlığıa sebebiyet vermesin. Olmadı ikimizin dediğinide test edip offical tabloda bütün gelicek itemlere hayvanlara karşı güçlü getirip 6. ve 7. efsun ilede benim dediğim şekilde getirip tabloda toplam değeri görüp kontrol etmeliyiz.
 
C++:
if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
Buradaki sorgu eğer saldırdığın canavar animal ise bu efsunu kontrol et diyor. Mesela hayvan işleyen slotlara vurduğun zaman havanlara karşı güç efsunu var ise saldırıyı arttıracak ardından POINT_ATTBONUS_PER_ANIMAL var ise onun değerini hesaplayıp saldırı değerine ekleyecek.
 
Peki böyle yapsak peki daha iyi olmaz mı hayvanlara karşı güçlü * toplam hayvanlara karşı güçlünün %5i olarak. Kusura bakma uğraşıtırıyorum gibi oluyor amacım öğrenmek offical files hazırlıyorumda. Amacım şu örneğin 100 hayvanlara karşı güçlü varsa ve toplam değerin %5 efsunu yaparsam toplam 8 itemde %5lik efsundan toplam %40 değer demek yani toplam hayvanlara karşı güçlü efsunu %140 oranını elde etmek
C++:
if (pkVictim->IsNPC())
    {
        if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
        {
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
            if (pkAttacker->GetPoint(POINT_ATTBONUS_PER_ANIMAL) > 0 )
            {
                POINT_ATTBONUS_ANIMAL *= POINT_ATTBONUS_PER_ANIMAL / 100;
                iAtk += (iAtk * POINT_ATTBONUS_ANIMAL) / 100;
            }
        }
 
C++:
POINT_ATTBONUS_ANIMAL *= POINT_ATTBONUS_PER_ANIMAL / 100;
Buradaki POINT_ATTBONUS_ANIMAL değiştirilebilir bir değer değildir. Bu şekilde yapamazsın.
C++:
int total_per_animal = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;
Bu şekilde yaparsan doğru olur.
 
int total_per_animal = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;
Burada bi hesap hatası yaptım gibi hissediyorum böyle anca yüzdesini bulmuş oluyoruz.
C++:
int total_per_animal = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;

fakat şöyle düzeltirsem olur galiba
C++:
int hesaplama = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;
int total_per_animal = POINT_ATTBONUS_ANIMAL + hesaplama;

böyle doğru oldu matematik hesaplaması çok teşekkür ederim bunları bi yere not ediyorum
 
Kafam yandı benim ya matematiğim kötü :D Ama biz burada yanlşlık yaptık gibi.
 
Kafam yandı benim ya matematiğim kötü :D Ama biz burada yanlşlık yaptık gibi.
en son hali böyle oluyo işte :D eğer yanlış hesaplamadıysak :D bi yanlış yaparız köpeklere 1T atarız :D
C++:
        if (pkVictim->IsRaceFlag(RACE_FLAG_ANIMAL))
        {
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL)) / 100;
            if (pkAttacker->GetPoint(POINT_ATTBONUS_PER_ANIMAL) > 0 )
            {
                int per_animal = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;
                int total_per_animal = POINT_ATTBONUS_ANIMAL + per_animal;
                iAtk += (iAtk * total_per_animal) / 100;
            }
        }
 
C++:
int per_animal = (POINT_ATTBONUS_PER_ANIMAL * POINT_ATTBONUS_ANIMAL) / 100;
int total_per_animal = POINT_ATTBONUS_ANIMAL + per_animal;
// Bu kısım şöyle olucak.
int per_animal = (pkAttacker->GetPoint(POINT_ATTBONUS_PER_ANIMAL) * pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL) / 100;
int total_per_animal = pkAttacker->GetPoint(POINT_ATTBONUS_ANIMAL) + per_animal;

Lisede fln bu matematik hayatımızda ne işe yarayacak diyorduk bulduk. :D Hayatın her yeri matematik miş meğer.
 
Sorun çözüldü işaretlendiğinden dolayı konu kilitlenmiştir.
İyi Forumlar dilerim.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst