Gangchat?
#3

Think about the steps you need to take to achieve this:

Step 1: Check whether the player has typed a message with a ; in front of it, ie, check the first character of "text" under the OnPlayerText callback:
pawn Код:
public OnPlayerText(playerid, text[])
{
    if(text[0] == ';')
    {
        // player has typed a message starting with ;
    }
    return 1;
}
Step 2: Think about what variables you will need for this. You want to know the player's name, the player's team name, and you will need the original message:
pawn Код:
public OnPlayerText(playerid, text[])
{
    if(text[0] == ';')
    {
        // player has typed a message starting with ;
        new msg[128], pname[MAX_PLAYER_NAME], teamname[MAX_TEAM_NAME];
    }
    return 1;
}
Step 3: Assign the corresponding data to these variables (using the help of a new method - GetTeamName. If you already have your own method like this, just use that one):
pawn Код:
#define MAX_TEAM_NAME 32 // defines the max length of a team name as 32 characters

stock GetTeamName(playerid, tname[], len) // Returns a player's team name depending on their team id (gTeam[playerid])
{
    switch(gTeam[playerid]) // Checks the player's team id
    {
        case 0: format(tname, len, "RedGang"); // teamid 0 has the teamname RedGang
        case 1: format(tname, len, "BlueGang"); // teamid 1 has the teamname BlueGang
        case 2: format(tname, len, "GreenGang"); // teamid 2 has the teamname GreenGang
        case 3: format(tname, len, "YellowGang"); // teamid 3 has the teamname YellowGang

        default: printf("Invalid team name"); // this will only print if there is an error
    }
    return 1;
}

public OnPlayerText(playerid, text[])
{
    if(text[0] == ';')
    {
        // player has typed a message starting with ;
        new msg[128], pname[MAX_PLAYER_NAME], teamname[MAX_TEAM_NAME];

        GetPlayerName(playerid, pname, sizeof(pname)); // gets the player's name
        GetTeamName(playerid, teamname, sizeof(teamname)); // gets the player's teamname
        strmid(msg, text, 1, strlen(text), sizeof(msg)); // saves what the player has typed without the ; at the start
        format(msg, sizeof(msg), "[%s]%s: %s", teamname, pname, msg); // puts all the info together to create the message to send to players on the same team

    }
    return 1;
}
Step 4: Cycle through all players, and print the message to those who are on the same team:
pawn Код:
#define MAX_TEAM_NAME 32

stock GetTeamName(playerid, tname[], len)
{
    switch(gTeam[playerid])
    {
        case 0: format(tname, len, "RedGang");
        case 1: format(tname, len, "BlueGang");
        case 2: format(tname, len, "GreenGang");
        case 3: format(tname, len, "YellowGang");

        default: printf("Invalid team name");
    }
    return 1;
}

public OnPlayerText(playerid, text[])
{
    if(text[0] == ';')
    {
        // player has typed a message starting with ;
        new msg[128], pname[MAX_PLAYER_NAME], teamname[MAX_TEAM_NAME];

        GetPlayerName(playerid, pname, sizeof(pname));
        GetTeamName(playerid, teamname, sizeof(teamname));
        strmid(msg, text, 1, strlen(text), sizeof(msg));
        format(msg, sizeof(msg), "[%s]%s: %s", teamname, pname, msg);

        for(new i=0; i<MAX_PLAYERS; i++) // loops through all players
        {
            if(gTeam[i] == gTeam[playerid]) // checks to see if the current player is on the same team as the player who typed the message
            {
                SendClientMessage(i, -1, msg); // prints the message for the player on the same team
            }
        }
        return 0; // return 0 so that the original message with ; in front of it isn't shown to everybody
    }
    return 1;
}
And voila. It's really not that difficult when you break it down!
Reply


Messages In This Thread
Gangchat? - by Face9000 - 17.12.2010, 21:57
Re: Gangchat? - by blackwave - 17.12.2010, 22:35
Re: Gangchat? - by Benjo - 17.12.2010, 23:02
Re: Gangchat? - by Face9000 - 18.12.2010, 07:48
Re: Gangchat? - by Face9000 - 18.12.2010, 19:07
Re: Gangchat? - by blackwave - 18.12.2010, 19:12
Re: Gangchat? - by Darklom - 18.12.2010, 19:12
Re: Gangchat? - by Face9000 - 18.12.2010, 19:19
Re: Gangchat? - by blackwave - 18.12.2010, 19:36
Re: Gangchat? - by Benjo - 19.12.2010, 00:11

Forum Jump:


Users browsing this thread: 2 Guest(s)