What's new
What's new

New messages New topics Systems Serverfiles 3D Models Web Scripting

Metin2Resources

👋 Welcome to Metin2 Resources — your hub for professional Metin2 server development.

Create a free account to access advanced systems, serverfiles, tutorials and connect with other developers.

🚀 Join today and start building better.

ITJA - GM System That Grants Announcement Authority to the Player They Want (PROVEN)

ITJA

Member
📜 Messages 18
👍 Reactions 0
🏆 Points 25
🌐 Website ugurkaya.work
1. char.h
private:
bool m_bBroadcastPermission; // /b komutu yetkisi

public:
void SetBroadcastPermission(bool b) { m_bBroadcastPermission = b; }
bool HasBroadcastPermission() const { return m_bBroadcastPermission; }



2.char.cpp
CHARACTER::Initialize() fonksiyonu içinde bir yere şunu ekle:


m_bBroadcastPermission = false;

3. cmd_general.cpp

Dosyanın sonuna Ekle:

ACMD(do_set_bchat)
{
if (ch->GetGMLevel() < GM_HIGH_WIZARD) {
ch->ChatPacket(CHAT_TYPE_INFO, "Bu komutu kullanamazsınız.");
return;
}

char arg1[256], arg2[256];
two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));

if (!*arg1 || !*arg2) {
ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /set_bchat <oyuncu> [on/off]");
return;
}

LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(arg1);
if (!tch) {
ch->ChatPacket(CHAT_TYPE_INFO, "Oyuncu bulunamadı.");
return;
}

if (!strcmp(arg2, "on")) {
tch->SetBroadcastPermission(true);
tch->ChatPacket(CHAT_TYPE_INFO, "Artık /b komutunu kullanabilirsiniz.");
ch->ChatPacket(CHAT_TYPE_INFO, "%s kullanıcısına yetki verildi.", tch->GetName());
} else if (!strcmp(arg2, "off")) {
tch->SetBroadcastPermission(false);
tch->ChatPacket(CHAT_TYPE_INFO, "Artık /b komutunu kullanamazsınız.");
ch->ChatPacket(CHAT_TYPE_INFO, "%s kullanıcısından yetki alındı.", tch->GetName());
} else {
ch->ChatPacket(CHAT_TYPE_INFO, "on ya da off yazılmalı.");
}
}

ACMD(do_broadcast)
{
if (!ch->HasBroadcastPermission()) {
ch->ChatPacket(CHAT_TYPE_INFO, "Bu komutu kullanma yetkiniz yok.");
return;
}

if (!*argument) {
ch->ChatPacket(CHAT_TYPE_INFO, "Kullanım: /b <mesaj>");
return;
}

char buf[512];
snprintf(buf, sizeof(buf), "[DUYURU] %s: %s", ch->GetName(), argument);
BroadcastNotice(buf);
}

4. cmd.cpp
ACMD listesine ekle:

ACMD(do_set_bchat);
ACMD(do_broadcast);

cmd_info[] dizisine ekle

{ "set_bchat", do_set_bchat, 0, POS_DEAD, GM_HIGH_WIZARD },
{ "bchat", do_broadcast, 0, POS_DEAD, GM_PLAYER },


desc_client.cpp

En alta ekle (yoksa)

void BroadcastNotice(const char* msg)
{
DESC_MANAGER::instance().BroadcastNotice(msg);
}

Yetki vermek için:

/set_bchat ITJA on

Yetki almak için:

/set_bchat OyuncuAdi off

Yetki alan oyuncu şu komutu kullanabilir:

/bchat Etkinlik başlıyor!



KANIT:

 
Back
Top Bottom