Çözüldü Kod bloğunu sadece bir kez çalıştırmak istiyorum c++

  • Konuyu açan Konuyu açan asilords
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 6
  • Gösterim Gösterim 82
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ı.

asilords

Üye
Üye
Mesaj
231
Çözümler
8
Beğeni
55
Puan
704
Ticaret Puanı
0
c:
Genişlet Daralt Kopyala
    SECTREE * sectree = GetSectree();
    if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK))
    {
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("güvenli alana girdiniz"));                                   
    }

Karekter hareket ettiğinde güvenli alana girerse "güvenli alana girdiniz" uyarısı verecek ancak normal olarak güvenli alanda her adım attığında ard arda "güvenli alana girdiniz" yazıyor bu uyarıyı nasıl bir kez yazdırabilirim?
 
Çözüm
char.h içinde:
C++:
Genişlet Daralt Kopyala
SetAggressive();

üstüne ekle:
C++:
Genişlet Daralt Kopyala
bool                safeArea;

verdiğin kodu aşağıdaki ile değiştir.:
C++:
Genişlet Daralt Kopyala
    SECTREE * sectree = GetSectree();
    if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK) && !safeArea)
    {
        safeArea = true;
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("güvenli alana girdiniz"));                                
    }


oyuna girişlerde ve ışınlanmalarda sıfırlamak için input_login.cpp içine ekle(en sona):
C++:
Genişlet Daralt Kopyala
void CInputLogin::Entergame(LPDESC d, const char * data)
{
    [...]
    [...]
    [...]
    [...]
    [...]
    ch->safeArea = false;
}

Eğer güvenli alandan çıktığında da false olmasını istiyorsan else ekleyip tekrar false'a çevirebilirsin.
char.h içinde:
C++:
Genişlet Daralt Kopyala
SetAggressive();

üstüne ekle:
C++:
Genişlet Daralt Kopyala
bool                safeArea;

verdiğin kodu aşağıdaki ile değiştir.:
C++:
Genişlet Daralt Kopyala
    SECTREE * sectree = GetSectree();
    if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK) && !safeArea)
    {
        safeArea = true;
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("güvenli alana girdiniz"));                                
    }


oyuna girişlerde ve ışınlanmalarda sıfırlamak için input_login.cpp içine ekle(en sona):
C++:
Genişlet Daralt Kopyala
void CInputLogin::Entergame(LPDESC d, const char * data)
{
    [...]
    [...]
    [...]
    [...]
    [...]
    ch->safeArea = false;
}

Eğer güvenli alandan çıktığında da false olmasını istiyorsan else ekleyip tekrar false'a çevirebilirsin.
 
Çözüm
char.h içinde:
C++:
Genişlet Daralt Kopyala
SetAggressive();

üstüne ekle:
C++:
Genişlet Daralt Kopyala
bool                safeArea;

verdiğin kodu aşağıdaki ile değiştir.:
C++:
Genişlet Daralt Kopyala
    SECTREE * sectree = GetSectree();
    if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK) && !safeArea)
    {
        safeArea = true;
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("güvenli alana girdiniz"));                              
    }


oyuna girişlerde ve ışınlanmalarda sıfırlamak için input_login.cpp içine ekle(en sona):
C++:
Genişlet Daralt Kopyala
void CInputLogin::Entergame(LPDESC d, const char * data)
{
    [...]
    [...]
    [...]
    [...]
    [...]
    ch->safeArea = false;
}

Eğer güvenli alandan çıktığında da false olmasını istiyorsan else ekleyip tekrar false'a çevirebilirsin.
1:
Genişlet Daralt Kopyala
    SECTREE * sectree = GetSectree();
    if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK))
    {
        safeArea = true;
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("guvenli bolgeye girdin"));
    }
    else
    {
        safeArea = false;
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("savas bölgesine girdin"));
    }

char.h
bool safeArea;

Dediğiniz gibi yaptım sonuc aynı :(
 

Dosya Eklentileri

  • Ekran görüntüsü 2024-10-07 135958.webp
    Ekran görüntüsü 2024-10-07 135958.webp
    87 KB · Gösterim: 13
1:
Genişlet Daralt Kopyala
    SECTREE * sectree = GetSectree();
    if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK))
    {
        safeArea = true;
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("guvenli bolgeye girdin"));
    }
    else
    {
        safeArea = false;
        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("savas bölgesine girdin"));
    }

char.h
bool safeArea;

Dediğiniz gibi yaptım sonuc aynı :(
if satırını gösterdiğim gibi güncellememişsin.

if (sectree && sectree->IsAttr(GetX(), GetY(), ATTR_BANPK) && !safeArea)
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst