- Katılım
- 6 Kas 2021
- Mesajlar
- 2,868
- Tepkime puanı
- 4,320
- Puanları
- 113
- Yaş
- 31
- Konum
- Türkiye
- Dc
- fatihbulut
AFK Durumu İçin Karakterde Bayrak Ekleyelim (C++)
LPCHARACTER nesnesine bir bool değişken eklemeliyiz
C++:
// character.h
class CHARACTER {
...
bool m_bIsAFK;
public:
void SetAFK(bool flag) { m_bIsAFK = flag; }
bool IsAFK() const { return m_bIsAFK; }
...
};
Başlangıçta m_bIsAFK = false; olsun.
AFK Modunu Açıp Kapatacak Komut (C++)
C++:
// afk_command.cpp
#include "char.h"
#include "desc.h"
#include "command.h"
ACMD(do_afk_toggle)
{
if (!ch)
return;
if (ch->IsAFK()) {
ch->SetAFK(false);
ch->ChatPacket(CHAT_TYPE_INFO, "AFK modundan çıkıldı.");
}
else {
ch->SetAFK(true);
ch->ChatPacket(CHAT_TYPE_INFO, "AFK moduna geçildi. Artık saldırı ve etkileşim engellendi.");
}
}
Komut kayıt kısmına ekle:
C++:
void RegisterCommands()
{
command_info.insert(std::make_pair("afk", do_afk_toggle));
}
Oyuncu oyunda /afk yazarak AFK moduna girip çıkabilir.
AFK Olan Oyuncuya Saldırmayı Engellemek
character.cpp içinde saldırı fonksiyonunu veya hasar almadan önce kontrol ekleyelim:
CoffeeScript:
// attack.cpp veya damage.cpp - Hasar kontrol fonksiyonu
bool CHARACTER::CanBeAttacked() const
{
if (IsAFK())
return false; // AFK ise saldırı engellenir
return true;
}
// Hasar alma fonksiyonunda kontrol et
void CHARACTER::ReceiveDamage(int damage)
{
if (!CanBeAttacked())
return; // Hasar almıyor
// Normal hasar işlemleri...
}
AFK Oyuncunun Hareket ve Eylem Kısıtlaması (İsteğe bağlı)
C++:
bool CHARACTER::CanMove() const
{
if (IsAFK())
return false;
return true;
}
bool CHARACTER::CanAttack() const
{
if (IsAFK())
return false;
return true;
}