SA-MP Forums Archive
How to make a team chat? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: How to make a team chat? (/showthread.php?tid=325070)



How to make a team chat? - rangerxxll - 11.03.2012

Hello.
I've had a chat previously, but it got bugged somehow, and I'm still unable to fix it. I decided to script another chat, but apparently "Everyone" in the server can see it. How can I make a new one/edit this one so only Administrators can see it?

pawn Код:
// CHAT ADMIN
CMD:a(playerid, params[])
{
    new text[128];
    if(PlayerInfo[playerid][pAdmin]>=1)
    if(sscanf(params, "s[128]",text)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /a(dmin) [Text]");
    format(text,sizeof(text),"[Admin]%s: %s",GetName(playerid),params);
    foreach(Player, i)
    {
        if(PlayerInfo[playerid][pAdmin]>=1)
        {
            SendClientMessage(i,COLOR_RED,text);
        }
    }
    return 1;
}



Re: How to make a team chat? - AstonDA-G - 11.03.2012

When you loop through the player to see if he is an admin, you are actually just checking if the player who typed the cmd is admin.
Change
pawn Код:
if(PlayerInfo[playerid][pAdmin]>=1)
to
pawn Код:
if(PlayerInfo[i][pAdmin]>=1)
Hope I helped, Aston.


Re: How to make a team chat? - rangerxxll - 11.03.2012

Thanks a ton, the other chats work.
How about this team chat? I've edited in a bit, and other people can still see it.
pawn Код:
CMD:t(playerid, params[])
{
    new text[128];
    if (gTeam[playerid] == TEAM_CT)
    if(sscanf(params, "s[128]",text)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /t(eam) [Text]");
    format(text,sizeof(text),"[TEAM]%s: %s",GetName(playerid),params);
    foreach(Player, i)
    {
        if (gTeam[i] == TEAM_CT)
        {
            SendClientMessage(i,COLOR_LIGHTBLUE,text);
        }
    }
    new text1[128];
    if (gTeam[playerid] == TEAM_TE)
    if(sscanf(params, "s[128]",text1)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /t(eam) [Text]");
    format(text1,sizeof(text1),"[TEAM]%s: %s",GetName(playerid),params);
    foreach(Player, i)
    {
        if (gTeam[i] == TEAM_TE)
        {
            SendClientMessage(i,COLOR_RED,text1);
        }
    }
    return 1;
}



Re: How to make a team chat? - kvsolga - 11.03.2012

Ill give you the one i used to use before i started linking with MySQL, just change the command of Clan accordingly:

Top of your code:
Код:
enum PlayerData{
    InClan
};
Clan Command
Код:
CMD:c(playerid, params[])
{
    format(userfile, 256, "/CLAN/%s.ini", GetName(playerid));

    PlayerInfo[playerid][InClan] = dini_Int(userfile, "InClan");

    if(PlayerInfo[playerid][InClan] < 1) return false;
    if(!strlen(params)) return SendClientMessage(playerid,RED,"Usage: /c [text]");

    new name[24],string[256];

    GetPlayerName(playerid,name,sizeof(name));

    format(string,sizeof(string),"Clan Chat: %s (ID: %d): %s",name,playerid,params);

    SendClanMsg(LIGHTBLUE, string);

    return 1;
}
Stocks goes anywhere in your code
Код:
stock SendClanMsg(color,string[]){
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
            if(IsPlayerConnected(i) == 1 && PlayerInfo[i][InClan] > 0)
            {
                    SendClientMessage(i, color, string);
            }
    }
    return 1;
}
Also if you want a SetClan Member command for rcon admin:
Код:
CMD:setclanmember(playerid, params[])
{
    new player1, string[128], string2[128];

    sscanf(params,"d",player1);

    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED, "You must be RCON admin to set people to the clan!");
    if(sscanf(params,"u",player1)) return SendClientMessage(playerid,RED,"Usage: /setclanmember [PlayerID/PartOfName]");

    format(userfile, 128, "/CLAN/%s.ini", GetName(player1));

    if(dini_Int(userfile, "InClan")==1) return SendClientMessage(playerid,RED,"That player is already in a clan!");
    if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID) return SendClientMessage(playerid,RED,"Invalid ID");

    format(string, sizeof(string), "You are now in the clan!");
    format(string2, sizeof(string2), "%s (ID: %d) is now in the clan!", GetName(player1), player1);

    if(!dini_Exists(userfile))
    {
            SendClientMessage(player1, GREEN, string);
            SendClientMessage(playerid, GREEN, string2);
            dini_Create(userfile);
            dini_IntSet(userfile, "InClan",1);
    }
    return 1;
}
Hope this helps, change it accordingly


Re: How to make a team chat? - AstonDA-G - 11.03.2012

Try adding
pawn Код:
gTeam[playerid] = GetPlayerTeam(playerid);
at the top of your command just underneath your new text[128]; line.
I think you have to redefine gTeam in every different callback/command/whatever


Re: How to make a team chat? - [ABK]Antonio - 11.03.2012

pawn Код:
CMD:t(playerid, params[])
{
    if(!isnull(params))
    {
        new string[128];
        format(string,sizeof(string),"[TEAM]%s: %s",GetName(playerid),params);
        foreach(Player, i)
        {
            if(gTeam[i] == gTeam[playerid]) SendClientMessage(i,COLOR_RED, string);
        }
    }
    else return SendClientMessage(playerid, COLOR_WHITE, "Usage: /t(eam) [Text]");
    return 1;
}



Re: How to make a team chat? - rangerxxll - 11.03.2012

I see. And Kvsolda, come to think of it. Clan's seems like a good idea to add into my Game now. Thanks guy, +rep of course.


Re: How to make a team chat? - [ABK]Antonio - 11.03.2012

Quote:
Originally Posted by AstonDA-G
Посмотреть сообщение
Try adding
pawn Код:
gTeam[playerid] = GetPlayerTeam(playerid);
at the top of your command just underneath your new text[128]; line.
I think you have to redefine gTeam in every different callback/command/whatever
I'm posting again to clarify something for you.


pawn Код:
new gTeam[MAX_PLAYERS];
At the top of your script would make it a global variable, meaning you won't need to redefine it when using it.

pawn Код:
new gTeam[MAX_PLAYERS];
Inside of a function would make it a "local" variable, meaning it won't exist in other functions unless re-defined in them.


Re: How to make a team chat? - kvsolga - 11.03.2012

In order for my command to work make sure you make a "CLAN" folder in your scriptfiles, dont forget