Soru Metin2 Efsun

  • Konuyu açan Konuyu açan chylnoth
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 7
  • Gösterim Gösterim 98
Herhangi bir konuda danışmak istediğiniz soru varsa bu öneki seçebilirsiniz.
Çözüm
Başta mantığını kavramaya çalışsanız daha iyi olur bence,

Örnek olarak baz hasarınız 100, %20 metin ve %20 canavar bonusunuz var.

ilk önce metini hesaplıyorsunuz 100 olan hasarınız 120 oluyor.
if (!pkVictim->IsStone())
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BOSS)) / 100;
100+= (100 * 20) / 100; = 120

Sonrasında 120 üzerinden canavarı hesaplıyorsunuz 120 olan hasarınız 144 oluyor.
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_MONSTER)) / 100;
120+= (120* 20) / 100; = 144

Gördüğün gibi 20 metin hasarı 20 arttırırken 20 canavar hasarı 24 arttırmış oldu.

Aşağıdaki gibi yaparsanız her 1 metin efsunu 50 hasar arttırır:
if (pkVictim->IsStone())
iAtk...
yok yani şöyle metinlere karşı güç efsunu %500 veriyorum normal haliyle 100 vuruyor metine şuan 20k 30k vuruyor yani oransız ben istiyorumki metinlere karşı güç %500 40k vurdursun
Şöyle bir olay vardı sanırım mysqldan metinlere ve ya bosslara hangi efsunlarin işlediğini seçebiliyordun eger gerekli konuyu bulursam ö.m den yollarim size
 
Şöyle bir olay vardı sanırım mysqldan metinlere ve ya bosslara hangi efsunlarin işlediğini seçebiliyordun eger gerekli konuyu bulursam ö.m den yollarim size
yanlış anladın işliyor zaten ama mesela örnek

500 metinlere karşı güç efsunu = 30k hasar vuruyorsa ben bunu
500 metinlere karşı güç efsunu = 20k hasar vursun istiyorum
 
Son düzenleme:
battle.cpp

Aşağıdaki şekilde hasarı arttırıyor:
if (pkVictim->IsStone())
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_METIN)) / 100;

Aşağıdaki gibi 2 ile çarparsanız değeri örneğin 20 metin bonusuyla 12k vurmak yerine hesap 14k vurur:
if (pkVictim->IsStone())
iAtk += (iAtk * 2*pkAttacker->GetPoint(POINT_ATTBONUS_METIN)) / 100;

Ne kadar mantıklı tabi tartışmaya açık, teknik borç bırakıyor olacaksınız bu şekilde ileride başkası baktığında çok arar sebebini ve zor bulur :)
 
battle.cpp

Aşağıdaki şekilde hasarı arttırıyor:
if (pkVictim->IsStone())
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_METIN)) / 100;

Aşağıdaki gibi 2 ile çarparsanız değeri örneğin 20 metin bonusuyla 12k vurmak yerine hesap 14k vurur:
if (pkVictim->IsStone())
iAtk += (iAtk * 2*pkAttacker->GetPoint(POINT_ATTBONUS_METIN)) / 100;

Ne kadar mantıklı tabi tartışmaya açık, teknik borç bırakıyor olacaksınız bu şekilde ileride başkası baktığında çok arar sebebini ve zor bulur :)
yani mesela 1 metinlere karşı güç = 50 damage vursun gibi birşey yapılmıyormu çarpı yerine?
 
Başta mantığını kavramaya çalışsanız daha iyi olur bence,

Örnek olarak baz hasarınız 100, %20 metin ve %20 canavar bonusunuz var.

ilk önce metini hesaplıyorsunuz 100 olan hasarınız 120 oluyor.
if (!pkVictim->IsStone())
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BOSS)) / 100;
100+= (100 * 20) / 100; = 120

Sonrasında 120 üzerinden canavarı hesaplıyorsunuz 120 olan hasarınız 144 oluyor.
iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_MONSTER)) / 100;
120+= (120* 20) / 100; = 144

Gördüğün gibi 20 metin hasarı 20 arttırırken 20 canavar hasarı 24 arttırmış oldu.

Aşağıdaki gibi yaparsanız her 1 metin efsunu 50 hasar arttırır:
if (pkVictim->IsStone())
iAtk +=50*pkAttacker->GetPoint(POINT_ATTBONUS_METIN);

Ama bundan sonra farklı sırayla eklediğiniz efsunlar varsa onlar bunun üzerine hasarı arttırıyor olacaktır bu yüzden böyle bir şey yapıyorsanız ya en son metin bonusunu hesaplayın yada diğer bonusları da bu şekilde güncelleyin.
 
Çözüm
Üst