Jump to content

Global Chat V2 System


Recommended Posts

M2 Download Center

This is the hidden content, please
( Internal )

Hello, 

global chat + color empire with chat is by Denis. thx. 

1) Enable global chat

Open input_p2p.cpp
Search : 

 

Quote

 

if (!d->GetCharacter() || (d->GetCharacter()->GetGMLevel() == GM_PLAYER && d->GetEmpire() != m_bEmpire))

Replace with it:
 

Quote

 

if (!d->GetCharacter())

If you use novaline, search:
 

Quote

 

 

        // ADDED GLOBAL SHOUT OPTION
        if (!d->GetCharacter())
            return;
            
        if(!g_bGlobalShoutEnable && (d->GetCharacter()->GetGMLevel() == GM_PLAYER && d->GetEmpire() != m_bEmpire))
            return;

And replace with it:
 

Quote

 

 

if (!d->GetCharacter())
return;


2) Add chat functions

Open input_main.cpp
Search:
 

Quote

 

 

if (pinfo->type == CHAT_TYPE_SHOUT)
    {
        const int SHOUT_LIMIT_LEVEL = 15;

        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)
        {
            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);
            return (iExtraLen);
        }

        if (thecore_heart->pulse - (int) ch->GetLastShoutPulse() < passes_per_sec * 15)
            return (iExtraLen);

        ch->SetLastShoutPulse(thecore_heart->pulse);

        TPacketGGShout p;

        p.bHeader = HEADER_GG_SHOUT;
        p.bEmpire = ch->GetEmpire();
        strlcpy(p.szText, chatbuf, sizeof(p.szText));

        P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));

        SendShout(chatbuf, ch->GetEmpire());

        return (iExtraLen);
    }

Replace with it:
 

Quote

 

 

if (pinfo->type == CHAT_TYPE_SHOUT)
    {
        const int SHOUT_LIMIT_LEVEL = 15;

        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)
        {
            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);
            return (iExtraLen);
        }

        if (thecore_heart->pulse - (int) ch->GetLastShoutPulse() < passes_per_sec * 15)
                return (iExtraLen);

        ch->SetLastShoutPulse(thecore_heart->pulse);

        const char* kingdoms[4] = {"|cFF47DA00|H|h[GameMaster]|cFFA7FFD4|H|h","|cFFff0000|H|h[shinsoo]|cFFA7FFD4|H|h","|cFFFFFF00|H|h[Chunjo]|cFFA7FFD4|H|h","|cFF0080FF|H|h[Jinno]|cFFA7FFD4|H|h"};
        char chatbuf_global[CHAT_MAX_LEN + 1];
        int my_level = ch->GetLevel();
        if (gSpecialShout == 1)
        {
            if (ch->GetGMLevel() != GM_PLAYER)
            {
                if (MasterGhostChat == 1)
                {
                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",kingdoms[0], buf);
                }
                else
                {
                    if ((MasterColorEmpire == 1) and (MasterLevelChat == 0))
                    {
                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);
                    }
                    else if ((MasterColorEmpire == 1) and (MasterLevelChat == 1))
                    {
                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);
                    }
                    else if ((MasterColorEmpire == 0) and (MasterLevelChat == 1))
                    {
                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s [%d] : %s",ch->GetName(), my_level, buf);
                    }
                    else
                    {
                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);
                    }
                }
            }
            else
            {
                if ((PlayerColorEmpire == 1) and (PlayerLevelChat == 0))
                {
                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);
                }
                else if ((PlayerColorEmpire == 1) and (PlayerLevelChat == 1))
                {
                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);
                }
                else if ((PlayerColorEmpire == 0) and (PlayerLevelChat == 1))
                {
                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s [%d] : %s",ch->GetName(), my_level, buf);
                }
                else
                {
                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);
                }
            }
        }
        else
        {
            int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);
        }

        TPacketGGShout p;

        p.bHeader = HEADER_GG_SHOUT;
        p.bEmpire = ch->GetEmpire();
        strlcpy(p.szText, chatbuf_global, sizeof(p.szText));
        P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));

        SendShout(chatbuf_global, ch->GetEmpire());

        return (iExtraLen);
    }


3) Add config function

Open config.cpp
Search:

 

Quote

 

int gShutdownEnable = 0;

 

Add after:
 

Quote

 

 

int gSpecialShout = 0;
int MasterGhostChat = 0;
int MasterColorEmpire = 0;
int MasterLevelChat = 0;
int PlayerColorEmpire = 0;
int PlayerLevelChat = 0;

 

Next search:
 

Quote

 

 

TOKEN("empire_whisper")
        {
            bool b_value = 0;
            str_to_number(b_value, value_string);
            g_bEmpireWhisper = !!b_value;
            continue;
        }

Add after:
 

Quote

 

 

TOKEN("special_shout")
        {
            str_to_number(gSpecialShout, value_string);
            continue;
        }

        TOKEN("gm_ghost_shout")
        {
            str_to_number(MasterGhostChat, value_string);
            continue;
        }

        TOKEN("gm_empire_shout")
        {
            str_to_number(MasterColorEmpire, value_string);
            continue;
        }

        TOKEN("gm_level_shout")
        {
            str_to_number(MasterLevelChat, value_string);
            continue;
        }

        TOKEN("player_empire_shout")
        {
            str_to_number(PlayerColorEmpire, value_string);
            continue;
        }

        TOKEN("player_level_shout")
        {
            str_to_number(PlayerLevelChat, value_string);
            continue;
        }

Now open config.h
Search:
 

Quote

 

extern int gPlayerMaxLevel;

And add before:
 

Quote

 

 

extern int gSpecialShout;
extern int MasterGhostChat;
extern int MasterColorEmpire;
extern int MasterLevelChat;
extern int PlayerColorEmpire;
extern int PlayerLevelChat;


4) Game CONFIG

Open your CONFIG game and add:

 

Quote

 

 

special_shout: 1
gm_ghost_shout: 1
gm_empire_shout: 1
gm_level_shout: 1
player_empire_shout: 1
player_level_shout: 1

=
 

Quote

 

 

special_shout - (0/1 Enable special chat functions) - default 0
gm_ghost_shout - (0/1 Enable GM Ghost chat [GM chat is only [GameMaster] : text]) - default 0
gm_empire_shout - (0/1 Enable GM empire with chat - only if gm_ghost_shout = 0) - default 0
gm_level_shout - (0/1 Enable GM level with chat - only if gm_ghost_shout = 0) - default 0
player_empire_shout - (0/1 Enable empire with player chat) - default 0
player_level_shout - (0/1 Enable level with player chat) - default 0

10645171_752331338157650_556482299165462

That's all, sorry for my bad english 🙂
Thx : Denis, Domco

 

Edited by Metin2 Dev
Core X - External 2 Internal
  • Metin2 Dev 44
  • Eyes 3
  • Dislove 2
  • Not Good 1
  • Sad 1
  • Think 2
  • Confused 1
  • Good 10
  • Love 3
  • Love 43
Link to comment
Share on other sites

  • 2 weeks later...
  • Bronze

I don't have

int gShutdownEnable = 0;

 

in my config.cpp im using mainline , is this for novaline only ?

o.O this killed some devs you know x.x

there isnt a brunch only function (maybe some function were not defined or some variable but not a function that use only basic ymir function) good luck

for eTony nice work and could you use the code function

Link to comment
Share on other sites

 

I don't have

int gShutdownEnable = 0;

 

in my config.cpp im using mainline , is this for novaline only ?

o.O this killed some devs you know x.x

there isnt a brunch only function (maybe some function were not defined or some variable but not a function that use only basic ymir function) good luck

for eTony nice work and could you use the code function

 

 

I meant that this release its for novaline only , its obvious you can do it on mainline.

Link to comment
Share on other sites

  • Bronze

 

 

I don't have

int gShutdownEnable = 0;

 

in my config.cpp im using mainline , is this for novaline only ?

o.O this killed some devs you know x.x

there isnt a brunch only function (maybe some function were not defined or some variable but not a function that use only basic ymir function) good luck

for eTony nice work and could you use the code function

 

 

I meant that this release its for novaline only , its obvious you can do it on mainline.

 

nvm then my head is afk

but ... nvm

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...
  • 3 weeks later...
  • 4 weeks later...
  • 1 month later...
  • 4 weeks later...

Hello, 

global chat + color empire with chat is by Denis. thx. 

1) Enable global chat

Open input_p2p.cpp

Search : 

 

 

if (!d->GetCharacter() || (d->GetCharacter()->GetGMLevel() == GM_PLAYER && d->GetEmpire() != m_bEmpire))

Replace with it:

 

 

if (!d->GetCharacter())

If you use novaline, search:

 

 

 

        // ADDED GLOBAL SHOUT OPTION

        if (!d->GetCharacter())

            return;

            

        if(!g_bGlobalShoutEnable && (d->GetCharacter()->GetGMLevel() == GM_PLAYER && d->GetEmpire() != m_bEmpire))

            return;

And replace with it:

 

 

 

if (!d->GetCharacter())

return;

2) Add chat functions

Open input_main.cpp

Search:

 

 

 

if (pinfo->type == CHAT_TYPE_SHOUT)

    {

        const int SHOUT_LIMIT_LEVEL = 15;

        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)

        {

            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);

            return (iExtraLen);

        }

        if (thecore_heart->pulse - (int) ch->GetLastShoutPulse() < passes_per_sec * 15)

            return (iExtraLen);

        ch->SetLastShoutPulse(thecore_heart->pulse);

        TPacketGGShout p;

        p.bHeader = HEADER_GG_SHOUT;

        p.bEmpire = ch->GetEmpire();

        strlcpy(p.szText, chatbuf, sizeof(p.szText));

        P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));

        SendShout(chatbuf, ch->GetEmpire());

        return (iExtraLen);

    }

Replace with it:

 

 

 

if (pinfo->type == CHAT_TYPE_SHOUT)

    {

        const int SHOUT_LIMIT_LEVEL = 15;

        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)

        {

            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);

            return (iExtraLen);

        }

        if (thecore_heart->pulse - (int) ch->GetLastShoutPulse() < passes_per_sec * 15)

                return (iExtraLen);

        ch->SetLastShoutPulse(thecore_heart->pulse);

        const char* kingdoms[4] = {"|cFF47DA00|H|h[GameMaster]|cFFA7FFD4|H|h","|cFFff0000|H|h[shinsoo]|cFFA7FFD4|H|h","|cFFFFFF00|H|h[Chunjo]|cFFA7FFD4|H|h","|cFF0080FF|H|h[Jinno]|cFFA7FFD4|H|h"};

        char chatbuf_global[CHAT_MAX_LEN + 1];

        int my_level = ch->GetLevel();

        if (gSpecialShout == 1)

        {

            if (ch->GetGMLevel() != GM_PLAYER)

            {

                if (MasterGhostChat == 1)

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",kingdoms[0], buf);

                }

                else

                {

                    if ((MasterColorEmpire == 1) and (MasterLevelChat == 0))

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);

                    }

                    else if ((MasterColorEmpire == 1) and (MasterLevelChat == 1))

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);

                    }

                    else if ((MasterColorEmpire == 0) and (MasterLevelChat == 1))

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s [%d] : %s",ch->GetName(), my_level, buf);

                    }

                    else

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);

                    }

                }

            }

            else

            {

                if ((PlayerColorEmpire == 1) and (PlayerLevelChat == 0))

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);

                }

                else if ((PlayerColorEmpire == 1) and (PlayerLevelChat == 1))

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);

                }

                else if ((PlayerColorEmpire == 0) and (PlayerLevelChat == 1))

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s [%d] : %s",ch->GetName(), my_level, buf);

                }

                else

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);

                }

            }

        }

        else

        {

            int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);

        }

        TPacketGGShout p;

        p.bHeader = HEADER_GG_SHOUT;

        p.bEmpire = ch->GetEmpire();

        strlcpy(p.szText, chatbuf_global, sizeof(p.szText));

        P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));

        SendShout(chatbuf_global, ch->GetEmpire());

        return (iExtraLen);

    }

3) Add config function

Open config.cpp

Search:

 

 

int gShutdownEnable = 0;

 

Add after:

 

 

 

int gSpecialShout = 0;

int MasterGhostChat = 0;

int MasterColorEmpire = 0;

int MasterLevelChat = 0;

int PlayerColorEmpire = 0;

int PlayerLevelChat = 0;

 

Next search:

 

 

 

TOKEN("empire_whisper")

        {

            bool b_value = 0;

            str_to_number(b_value, value_string);

            g_bEmpireWhisper = !!b_value;

            continue;

        }

Add after:

 

 

 

TOKEN("special_shout")

        {

            str_to_number(gSpecialShout, value_string);

            continue;

        }

        TOKEN("gm_ghost_shout")

        {

            str_to_number(MasterGhostChat, value_string);

            continue;

        }

        TOKEN("gm_empire_shout")

        {

            str_to_number(MasterColorEmpire, value_string);

            continue;

        }

        TOKEN("gm_level_shout")

        {

            str_to_number(MasterLevelChat, value_string);

            continue;

        }

        TOKEN("player_empire_shout")

        {

            str_to_number(PlayerColorEmpire, value_string);

            continue;

        }

        TOKEN("player_level_shout")

        {

            str_to_number(PlayerLevelChat, value_string);

            continue;

        }

Now open config.h

Search:

 

 

extern int gPlayerMaxLevel;

And add before:

 

 

 

extern int gSpecialShout;

extern int MasterGhostChat;

extern int MasterColorEmpire;

extern int MasterLevelChat;

extern int PlayerColorEmpire;

extern int PlayerLevelChat;

4) Game CONFIG

Open your CONFIG game and add:

 

 

 

special_shout: 1

gm_ghost_shout: 1

gm_empire_shout: 1

gm_level_shout: 1

player_empire_shout: 1

player_level_shout: 1

=

 

 

 

special_shout - (0/1 Enable special chat functions) - default 0

gm_ghost_shout - (0/1 Enable GM Ghost chat [GM chat is only [GameMaster] : text]) - default 0

gm_empire_shout - (0/1 Enable GM empire with chat - only if gm_ghost_shout = 0) - default 0

gm_level_shout - (0/1 Enable GM level with chat - only if gm_ghost_shout = 0) - default 0

player_empire_shout - (0/1 Enable empire with player chat) - default 0

player_level_shout - (0/1 Enable level with player chat) - default 0

10645171_752331338157650_556482299165462

That's all, sorry for my bad english :-)

Thx : Denis, Domco

 

thank you :)

Edited by Metin2 Dev
Core X - External 2 Internal
  • Metin2 Dev 1
Link to comment
Share on other sites

 

Hello, 

global chat + color empire with chat is by Denis. thx. 

1) Enable global chat

Open input_p2p.cpp

Search : 

 

 

if (!d->GetCharacter() || (d->GetCharacter()->GetGMLevel() == GM_PLAYER && d->GetEmpire() != m_bEmpire))

Replace with it:

 

 

if (!d->GetCharacter())

If you use novaline, search:

 

 

 

        // ADDED GLOBAL SHOUT OPTION

        if (!d->GetCharacter())

            return;

            

        if(!g_bGlobalShoutEnable && (d->GetCharacter()->GetGMLevel() == GM_PLAYER && d->GetEmpire() != m_bEmpire))

            return;

And replace with it:

 

 

 

if (!d->GetCharacter())

return;

2) Add chat functions

Open input_main.cpp

Search:

 

 

 

if (pinfo->type == CHAT_TYPE_SHOUT)

    {

        const int SHOUT_LIMIT_LEVEL = 15;

        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)

        {

            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);

            return (iExtraLen);

        }

        if (thecore_heart->pulse - (int) ch->GetLastShoutPulse() < passes_per_sec * 15)

            return (iExtraLen);

        ch->SetLastShoutPulse(thecore_heart->pulse);

        TPacketGGShout p;

        p.bHeader = HEADER_GG_SHOUT;

        p.bEmpire = ch->GetEmpire();

        strlcpy(p.szText, chatbuf, sizeof(p.szText));

        P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));

        SendShout(chatbuf, ch->GetEmpire());

        return (iExtraLen);

    }

Replace with it:

 

 

 

if (pinfo->type == CHAT_TYPE_SHOUT)

    {

        const int SHOUT_LIMIT_LEVEL = 15;

        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)

        {

            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);

            return (iExtraLen);

        }

        if (thecore_heart->pulse - (int) ch->GetLastShoutPulse() < passes_per_sec * 15)

                return (iExtraLen);

        ch->SetLastShoutPulse(thecore_heart->pulse);

        const char* kingdoms[4] = {"|cFF47DA00|H|h[GameMaster]|cFFA7FFD4|H|h","|cFFff0000|H|h[shinsoo]|cFFA7FFD4|H|h","|cFFFFFF00|H|h[Chunjo]|cFFA7FFD4|H|h","|cFF0080FF|H|h[Jinno]|cFFA7FFD4|H|h"};

        char chatbuf_global[CHAT_MAX_LEN + 1];

        int my_level = ch->GetLevel();

        if (gSpecialShout == 1)

        {

            if (ch->GetGMLevel() != GM_PLAYER)

            {

                if (MasterGhostChat == 1)

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",kingdoms[0], buf);

                }

                else

                {

                    if ((MasterColorEmpire == 1) and (MasterLevelChat == 0))

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);

                    }

                    else if ((MasterColorEmpire == 1) and (MasterLevelChat == 1))

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);

                    }

                    else if ((MasterColorEmpire == 0) and (MasterLevelChat == 1))

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s [%d] : %s",ch->GetName(), my_level, buf);

                    }

                    else

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);

                    }

                }

            }

            else

            {

                if ((PlayerColorEmpire == 1) and (PlayerLevelChat == 0))

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);

                }

                else if ((PlayerColorEmpire == 1) and (PlayerLevelChat == 1))

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);

                }

                else if ((PlayerColorEmpire == 0) and (PlayerLevelChat == 1))

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s [%d] : %s",ch->GetName(), my_level, buf);

                }

                else

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);

                }

            }

        }

        else

        {

            int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);

        }

        TPacketGGShout p;

        p.bHeader = HEADER_GG_SHOUT;

        p.bEmpire = ch->GetEmpire();

        strlcpy(p.szText, chatbuf_global, sizeof(p.szText));

        P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));

        SendShout(chatbuf_global, ch->GetEmpire());

        return (iExtraLen);

    }

3) Add config function

Open config.cpp

Search:

 

 

int gShutdownEnable = 0;

 

Add after:

 

 

 

int gSpecialShout = 0;

int MasterGhostChat = 0;

int MasterColorEmpire = 0;

int MasterLevelChat = 0;

int PlayerColorEmpire = 0;

int PlayerLevelChat = 0;

 

Next search:

 

 

 

TOKEN("empire_whisper")

        {

            bool b_value = 0;

            str_to_number(b_value, value_string);

            g_bEmpireWhisper = !!b_value;

            continue;

        }

Add after:

 

 

 

TOKEN("special_shout")

        {

            str_to_number(gSpecialShout, value_string);

            continue;

        }

        TOKEN("gm_ghost_shout")

        {

            str_to_number(MasterGhostChat, value_string);

            continue;

        }

        TOKEN("gm_empire_shout")

        {

            str_to_number(MasterColorEmpire, value_string);

            continue;

        }

        TOKEN("gm_level_shout")

        {

            str_to_number(MasterLevelChat, value_string);

            continue;

        }

        TOKEN("player_empire_shout")

        {

            str_to_number(PlayerColorEmpire, value_string);

            continue;

        }

        TOKEN("player_level_shout")

        {

            str_to_number(PlayerLevelChat, value_string);

            continue;

        }

Now open config.h

Search:

 

 

extern int gPlayerMaxLevel;

And add before:

 

 

 

extern int gSpecialShout;

extern int MasterGhostChat;

extern int MasterColorEmpire;

extern int MasterLevelChat;

extern int PlayerColorEmpire;

extern int PlayerLevelChat;

4) Game CONFIG

Open your CONFIG game and add:

 

 

 

special_shout: 1

gm_ghost_shout: 1

gm_empire_shout: 1

gm_level_shout: 1

player_empire_shout: 1

player_level_shout: 1

=

 

 

 

special_shout - (0/1 Enable special chat functions) - default 0

gm_ghost_shout - (0/1 Enable GM Ghost chat [GM chat is only [GameMaster] : text]) - default 0

gm_empire_shout - (0/1 Enable GM empire with chat - only if gm_ghost_shout = 0) - default 0

gm_level_shout - (0/1 Enable GM level with chat - only if gm_ghost_shout = 0) - default 0

player_empire_shout - (0/1 Enable empire with player chat) - default 0

player_level_shout - (0/1 Enable level with player chat) - default 0

10645171_752331338157650_556482299165462

That's all, sorry for my bad english :-)

Thx : Denis, Domco

 

thank you :)

np... :-)

Edited by Metin2 Dev
Core X - External 2 Internal
  • Metin2 Dev 1
  • Love 1
Link to comment
Share on other sites

 

 

Hello, 

global chat + color empire with chat is by Denis. thx. 

1) Enable global chat

Open input_p2p.cpp

Search : 

 

 

if (!d->GetCharacter() || (d->GetCharacter()->GetGMLevel() == GM_PLAYER && d->GetEmpire() != m_bEmpire))

Replace with it:

 

 

if (!d->GetCharacter())

If you use novaline, search:

 

 

 

        // ADDED GLOBAL SHOUT OPTION

        if (!d->GetCharacter())

            return;

            

        if(!g_bGlobalShoutEnable && (d->GetCharacter()->GetGMLevel() == GM_PLAYER && d->GetEmpire() != m_bEmpire))

            return;

And replace with it:

 

 

 

if (!d->GetCharacter())

return;

2) Add chat functions

Open input_main.cpp

Search:

 

 

 

if (pinfo->type == CHAT_TYPE_SHOUT)

    {

        const int SHOUT_LIMIT_LEVEL = 15;

        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)

        {

            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);

            return (iExtraLen);

        }

        if (thecore_heart->pulse - (int) ch->GetLastShoutPulse() < passes_per_sec * 15)

            return (iExtraLen);

        ch->SetLastShoutPulse(thecore_heart->pulse);

        TPacketGGShout p;

        p.bHeader = HEADER_GG_SHOUT;

        p.bEmpire = ch->GetEmpire();

        strlcpy(p.szText, chatbuf, sizeof(p.szText));

        P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));

        SendShout(chatbuf, ch->GetEmpire());

        return (iExtraLen);

    }

Replace with it:

 

 

 

if (pinfo->type == CHAT_TYPE_SHOUT)

    {

        const int SHOUT_LIMIT_LEVEL = 15;

        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)

        {

            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);

            return (iExtraLen);

        }

        if (thecore_heart->pulse - (int) ch->GetLastShoutPulse() < passes_per_sec * 15)

                return (iExtraLen);

        ch->SetLastShoutPulse(thecore_heart->pulse);

        const char* kingdoms[4] = {"|cFF47DA00|H|h[GameMaster]|cFFA7FFD4|H|h","|cFFff0000|H|h[shinsoo]|cFFA7FFD4|H|h","|cFFFFFF00|H|h[Chunjo]|cFFA7FFD4|H|h","|cFF0080FF|H|h[Jinno]|cFFA7FFD4|H|h"};

        char chatbuf_global[CHAT_MAX_LEN + 1];

        int my_level = ch->GetLevel();

        if (gSpecialShout == 1)

        {

            if (ch->GetGMLevel() != GM_PLAYER)

            {

                if (MasterGhostChat == 1)

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",kingdoms[0], buf);

                }

                else

                {

                    if ((MasterColorEmpire == 1) and (MasterLevelChat == 0))

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);

                    }

                    else if ((MasterColorEmpire == 1) and (MasterLevelChat == 1))

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);

                    }

                    else if ((MasterColorEmpire == 0) and (MasterLevelChat == 1))

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s [%d] : %s",ch->GetName(), my_level, buf);

                    }

                    else

                    {

                        int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);

                    }

                }

            }

            else

            {

                if ((PlayerColorEmpire == 1) and (PlayerLevelChat == 0))

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);

                }

                else if ((PlayerColorEmpire == 1) and (PlayerLevelChat == 1))

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);

                }

                else if ((PlayerColorEmpire == 0) and (PlayerLevelChat == 1))

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s [%d] : %s",ch->GetName(), my_level, buf);

                }

                else

                {

                    int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);

                }

            }

        }

        else

        {

            int len_global = snprintf(chatbuf_global, sizeof(chatbuf_global), "%s : %s",ch->GetName(), buf);

        }

        TPacketGGShout p;

        p.bHeader = HEADER_GG_SHOUT;

        p.bEmpire = ch->GetEmpire();

        strlcpy(p.szText, chatbuf_global, sizeof(p.szText));

        P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));

        SendShout(chatbuf_global, ch->GetEmpire());

        return (iExtraLen);

    }

3) Add config function

Open config.cpp

Search:

 

 

int gShutdownEnable = 0;

 

Add after:

 

 

 

int gSpecialShout = 0;

int MasterGhostChat = 0;

int MasterColorEmpire = 0;

int MasterLevelChat = 0;

int PlayerColorEmpire = 0;

int PlayerLevelChat = 0;

 

Next search:

 

 

 

TOKEN("empire_whisper")

        {

            bool b_value = 0;

            str_to_number(b_value, value_string);

            g_bEmpireWhisper = !!b_value;

            continue;

        }

Add after:

 

 

 

TOKEN("special_shout")

        {

            str_to_number(gSpecialShout, value_string);

            continue;

        }

        TOKEN("gm_ghost_shout")

        {

            str_to_number(MasterGhostChat, value_string);

            continue;

        }

        TOKEN("gm_empire_shout")

        {

            str_to_number(MasterColorEmpire, value_string);

            continue;

        }

        TOKEN("gm_level_shout")

        {

            str_to_number(MasterLevelChat, value_string);

            continue;

        }

        TOKEN("player_empire_shout")

        {

            str_to_number(PlayerColorEmpire, value_string);

            continue;

        }

        TOKEN("player_level_shout")

        {

            str_to_number(PlayerLevelChat, value_string);

            continue;

        }

Now open config.h

Search:

 

 

extern int gPlayerMaxLevel;

And add before:

 

 

 

extern int gSpecialShout;

extern int MasterGhostChat;

extern int MasterColorEmpire;

extern int MasterLevelChat;

extern int PlayerColorEmpire;

extern int PlayerLevelChat;

4) Game CONFIG

Open your CONFIG game and add:

 

 

 

special_shout: 1

gm_ghost_shout: 1

gm_empire_shout: 1

gm_level_shout: 1

player_empire_shout: 1

player_level_shout: 1

=

 

 

 

special_shout - (0/1 Enable special chat functions) - default 0

gm_ghost_shout - (0/1 Enable GM Ghost chat [GM chat is only [GameMaster] : text]) - default 0

gm_empire_shout - (0/1 Enable GM empire with chat - only if gm_ghost_shout = 0) - default 0

gm_level_shout - (0/1 Enable GM level with chat - only if gm_ghost_shout = 0) - default 0

player_empire_shout - (0/1 Enable empire with player chat) - default 0

player_level_shout - (0/1 Enable level with player chat) - default 0

10645171_752331338157650_556482299165462

That's all, sorry for my bad english :-)

Thx : Denis, Domco

 

thank you :)

np... :-)

 

14kcjz6.jpg

 

 it's gonna be like that ?

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

With this is more fine :D

 

if (pinfo->type == CHAT_TYPE_SHOUT)
    {
        const int SHOUT_LIMIT_LEVEL = 15;


        if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)
        {
            ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("외치기는 레벨 %d 이상만 사용 가능 합니다."), SHOUT_LIMIT_LEVEL);
            return (iExtraLen);
        }


        if (thecore_heart->pulse - (int) ch->GetLastShoutPulse() < passes_per_sec * 15)
                return (iExtraLen);


        ch->SetLastShoutPulse(thecore_heart->pulse);


        const char* kingdoms[4] = {"|cFF47DA00|H|h[GameMaster]|cFFA7FFD4|H|h","|cFFff0000|H|h[Shinsoo]|cFFA7FFD4|H|h","|cFFFFFF00|H|h[Chunjo]|cFFA7FFD4|H|h","|cFF0080FF|H|h[Jinno]|cFFA7FFD4|H|h"};
        int my_level = ch->GetLevel();
        if (gSpecialShout)
        {
            if (ch->GetGMLevel() != GM_PLAYER)
            {
                if (MasterGhostChat)
                {
                    len_global = snprintf(chatbuf, sizeof(chatbuf), "%s : %s",kingdoms[0], buf);
                }
                else
                {
                    if ((MasterColorEmpire) && (!MasterLevelChat))
                    {
                        len_global = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);
                    }
                    else if ((MasterColorEmpire) && (MasterLevelChat))
                    {
                        len_global = snprintf(chatbuf, sizeof(chatbuf), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);
                    }
                    else if ((!MasterColorEmpire) && (MasterLevelChat))
                    {
                        len_global = snprintf(chatbuf, sizeof(chatbuf), "%s [%d] : %s",ch->GetName(), my_level, buf);
                    }
                    else
                    {
                        len_global = snprintf(chatbuf, sizeof(chatbuf), "%s : %s",ch->GetName(), buf);
                    }
                }
            }
            else
            {
                if ((PlayerColorEmpire) && (!PlayerLevelChat))
                {
                    len_global = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s",ch->GetName(), kingdoms[ch->GetEmpire()], buf);
                }
                else if ((PlayerColorEmpire) && (PlayerLevelChat))
                {
                    len_global = snprintf(chatbuf, sizeof(chatbuf), "%s %s [%d] : %s",ch->GetName(), kingdoms[ch->GetEmpire()], my_level, buf);
                }
                else if ((!PlayerColorEmpire) && (PlayerLevelChat))
                {
                    len_global = snprintf(chatbuf, sizeof(chatbuf), "%s [%d] : %s",ch->GetName(), my_level, buf);
                }
                else
                {
                    len_global = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf);
                }
            }
        }
        else
        {
            len_global = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf);
        }


        TPacketGGShout p;


        p.bHeader = HEADER_GG_SHOUT;
        p.bEmpire = ch->GetEmpire();
        strlcpy(p.szText, chatbuf, sizeof(p.szText));
        P2P_MANAGER::instance().Send(&p, sizeof(TPacketGGShout));


        SendShout(chatbuf, ch->GetEmpire());


        return (iExtraLen);
    }

 

P.S.: Change int with bool. :D

Link to comment
Share on other sites

  • 3 months later...
  • 6 years later...
  • 10 months later...

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.