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 337

Elvia

Üye
Üye
Mesaj
36
Çözümler
1
Beğeni
21
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