Veri Tipi Değişimi & Sınırsız Hasar HK. Yardım.

  • Konuyu açan Konuyu açan Elvia
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 7
  • Gösterim Gösterim 351

Elvia

Üye
Üye
Mesaj
38
Çözümler
1
Beğeni
24
Puan
269
Ticaret Puanı
0
Oyunumdaki hasar sınırını +128 & 256 Haneye kadar yükseltebilecek bir arkadaş arıyorum.

- Önüne gelen satıcılar yazmasın.
 
Kısa bir bilgi vereyim bu tarz yüksek damage gibi durumlar için multiprecision kütüphanesi gerekli ve buna uygun veri tipi değişiklikleri gerekli bir başkasına ilerde yardımcı olur umarım bu yazım @Adalet hocamda onaylar diye düşünüyorum
 
Bu kütüphane işini görectir.

Ek olarak: boost-multiprecision'da kullanabilirsin.


Örnek:
Genişlet Daralt Kopyala
void CHARACTER::SendDamagePacket(LPCHARACTER pAttacker, int Damage, BYTE DamageFlag)
{
    if (IsPC() == true || (pAttacker->IsPC() == true && pAttacker->GetTarget() == this))
    {
        TPacketGCDamageInfo damageInfo;
        memset(&damageInfo, 0, sizeof(TPacketGCDamageInfo));

        damageInfo.header = HEADER_GC_DAMAGE_INFO;
        damageInfo.dwVID = (DWORD)GetVID();
        damageInfo.flag = DamageFlag;
        damageInfo.damage = Damage;

        if (GetDesc() != NULL)
        {
            GetDesc()->Packet(&damageInfo, sizeof(TPacketGCDamageInfo));
        }

        if (pAttacker->GetDesc() != NULL)
        {
            pAttacker->GetDesc()->Packet(&damageInfo, sizeof(TPacketGCDamageInfo));
        }
        /*
           if (GetArenaObserverMode() == false && GetArena() != NULL)
           {
           GetArena()->SendPacketToObserver(&damageInfo, sizeof(TPacketGCDamageInfo));
           }
         */     
    }
}










#include <gmpxx.h>

void CHARACTER::SendDamagePacket(LPCHARACTER pAttacker, const mpz_class &Damage, BYTE DamageFlag)
{
    if (IsPC() == true || (pAttacker->IsPC() == true && pAttacker->GetTarget() == this))
    {
        TPacketGCDamageInfo damageInfo;
        memset(&damageInfo, 0, sizeof(TPacketGCDamageInfo));

        damageInfo.header = HEADER_GC_DAMAGE_INFO;
        damageInfo.dwVID  = (DWORD)GetVID();
        damageInfo.flag   = DamageFlag;

        // GMP -> int / DWORD dönüşümü
        damageInfo.damage = Damage.get_ui(); // protokol alanına sığacak şekilde

        if (GetDesc() != NULL)
        {
            GetDesc()->Packet(&damageInfo, sizeof(TPacketGCDamageInfo));
        }

        if (pAttacker->GetDesc() != NULL)
        {
            pAttacker->GetDesc()->Packet(&damageInfo, sizeof(TPacketGCDamageInfo));
        }

        /*
        if (GetArenaObserverMode() == false && GetArena() != NULL)
        {
            GetArena()->SendPacketToObserver(&damageInfo, sizeof(TPacketGCDamageInfo));
        }
        */
    }
}
 
Geri
Üst