[C++] Renewal For GM's /level & /a Commands

MT2Dev

Cplusplus
Katılım
30 Ocak 2020
Konular
50
Mesajlar
812
Online süresi
26g 54000s
Reaksiyon Skoru
735
Altın Konu
1
Başarım Puanı
184
TM Yaşı
6 Yıl 2 Ay 21 Gün
MmoLira
8,731
DevLira
123

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

GİRİŞ & PROBLEM

Merhaba, GM kodlarında canımı sıkan ufak tefek şeyleri düzeltirken bununla alakalı da bir değişiklik yapmıştım fakat paylaşmaya vakit olmamıştı, detaylara önem verenler için işe yarayabilir o yüzden paylaşmak istedim.

NEDEN ?

Fonksiyonlar içerisinde gerekli kontroller ve bilgilendirme/hata mesajları eksikti, gereken her şey eklenerek kodlar yenilendi.

ÇÖZÜM

Öncelikle "cmd_gm.cpp" dosyası açılır.

cmd_gm.cpp:
// BULUNUR;
ACMD (do_advance)

// KOMPLE DEĞİŞTİRİLİR;
ACMD (do_advance) // DevFix 53
{
       char arg1[256], arg2[256];
    two_arguments (argument, arg1, sizeof (arg1), arg2, sizeof (arg2));
    if (!*arg1 || !*arg2)
    {
        ch->ChatPacket (CHAT_TYPE_INFO, "Syntax: /a <player name> <level>");
        return;
    }

    LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC (arg1);
    if (!tch)
    {
        ch->ChatPacket (CHAT_TYPE_INFO, "<GM> %s does not exist!", arg1);
        return;
    }

    unsigned char old_level = tch->GetLevel(); // DevFix 122
    unsigned char new_level = 0;               // DevFix 122
    str_to_number (new_level, arg2);
    new_level = MINMAX (1, new_level, PLAYER_MAX_LEVEL_CONST);

    if (new_level == old_level)
    {
        ch->ChatPacket (CHAT_TYPE_INFO, "<GM Control> The specified level is the SAME as the player's current level!");
        return;
    }

    tch->ResetPoint (new_level);

    if (new_level < old_level)
    {
        //tch->ClearSkill();     // If you want to clear players current skills after the level downgrade, uncomment this line. - [MT2Dev Note]
        tch->ChatPacket (CHAT_TYPE_INFO, "<GM> Your level downgrade to %u", new_level);
    }
    else if (new_level > old_level)
    {
        tch->ChatPacket (CHAT_TYPE_INFO, "<GM> Your level increased to %u", new_level);
    }

    if (new_level < 50 && old_level >= 50) // Hard-coding for subskills, 50 because of the combo and horse skills.. - [MT2Dev Note]
    {
        tch->ClearSubSkill();  // If you don't want to clear players current subskills after the level downgrade under 50, comment this line. - [MT2Dev Note]
    }
}


// BULUNUR;
ACMD (do_level)

// KOMPLE DEĞİŞTİRİLİR;
ACMD (do_level) // DevFix 53
{
       char arg1[256];
    one_argument (argument, arg1, sizeof (arg1));
    if (!*arg1)
    {
        ch->ChatPacket (CHAT_TYPE_INFO, "Syntax: /level <level>");
        return;
    }

    unsigned char old_level = ch->GetLevel(); // DevFix 122
    unsigned char new_level = 0;              // DevFix 122
    str_to_number (new_level, arg1);
    new_level = MINMAX (1, new_level, PLAYER_MAX_LEVEL_CONST);

    if (new_level == old_level)
    {
        ch->ChatPacket (CHAT_TYPE_INFO, "<GM Control> The specified level is the SAME as the your current level!");
        return;
    }

    // This code use only allowed for GM chars, so we don't need to check or reset skills and subskills.. - [MT2Dev Note]
    ch->ChatPacket (CHAT_TYPE_INFO, "<GM> Your level set to %u", new_level);
    ch->ResetPoint (new_level);
}
 

En Çok Reaksiyon Alan Mesajlar

Paylaşım için teşekkürler, eline sağlık.
 
Paylaşim İçin Teşeküler İyi Forumlar.
 
Paylaşım için teşekkürler.
 
paylaşım için teşekkürler
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)