Neler yeni

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Kod Metin2’ye Uygun Basit AFK Sistemi

Fatih Bulut

Süper Üye
Katılım
6 Kas 2021
Mesajlar
2,867
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;
}
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar