Hikayeler

Reklam vermek için turkmmo@gmail.com

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

MT2Dev

Cplusplus
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
Fahri Üye
TM Üye
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)

Geri
Üst