[Tutorial] Making a Team System without all the hassle.
#1

I really don't know what to say as a header other then to read the pawn code below for the actual tutorial. I wrote the entire thing in PAWNO, so there may be mistakes somewhere as the green colour messes with my eyes. Don't be afraid to leave some feedback.

What does this tutorial teach me?

It teaches you how to create a simple team system with a built-in Anti Team Kill. The only flaw with this is, you can still be killed on the same team if the 'killerid' (the person stabbing the other person) is using a knife. That's a built in issue, and honestly, you could check OnPlayerTakeDamage and clear their animations or something if they're on the same team and take damage from a knife. <- That's only a theory.

Enjoy.

pawn Код:
#include    <a_samp>

#define     TEAM_ONE        3
            // You can rename 'TEAM_ONE' to anything, of course.
              // '3' is the Team ID used to identify them, you can change this, too!
#define     TEAM_TWO        6

main() { print( "- Team Example by 2KY" ); }
            // Just a simple print.. Don't feel like I have to explain this..

public OnGameModeInit( )
{
    AddPlayerClass( 169, 255.0, 0.0, 10.0, 69.0, 0,0, 0,0, 0,0 ); // TEAM_ONE
    AddPlayerClass( 119, 0.0, 255.0, 10.0, 69.0, 0,0, 0,0, 0,0 ); // TEAM_TWO
   
    // Later on under OnPlayerRequestClass, we are going to assign their teams.
    return true;
}

public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
   
    // Blah, blah, generic new.pwn camera position code.
   
    switch( classid ) // Goes through all of the classid's, this is faster than an if statement!
    {
        case 0: // 'classid' zero is our first class, which is going to be assigned to 'TEAM_ONE'
        {
            SetPlayerTeam( playerid, TEAM_ONE );
            // Since TEAM_ONE is defined as '3', this is the same thing as doing:
             // SetPlayerTeam( playerid, 3 );
        }
       
        case 1: // Let's do the same thing again, but this time, we're assigning it to 'TEAM_TWO'
        {
            SetPlayerTeam( playerid, TEAM_TWO );
            // Once again, this is like doing:
             // SetPlayerTeam( playerid, 6 );
        }
    }
   
    /*
        Alternatively, you could do something with if statements like so:

    if( classid == 0 )
    {
    }
   
        But this method would be slower than using a switch statement.
        Remember switch > if statement, if it's between using multiple if statements or a simple switch statement.

    */

    return 1;
}

public OnPlayerSpawn(playerid)
{
    switch( GetPlayerTeam( playerid ) )
    {
        case TEAM_ONE:
        {
            // They are a member of 'TEAM_ONE'
             // Since we can put two-and-two together, we can also find out that they chose classid zero without
              // needing to create an extra variable!

            SendClientMessage( playerid, -1, GetTeamName( TEAM_ONE ) );
            // GetTeamName is a custom function I created. If you scroll down, you will find more on it.
        }

        case TEAM_TWO:
        {
            // They are a member of 'TEAM_TWO'
             // Like above, they chose classid one!
             
             SendClientMessage( playerid, -1, GetTeamName( TEAM_TWO ) );
        }
    }
    return true;
}
public OnPlayerCommandText( playerid, cmdtext[] )
{
    // Although I recommend the use of ZCMD, I will be using strcmp for this tutorial.
    if( strcmp( "/myteam", cmdtext, true, 7 ) == 0 )
    {
        new
            tStr [ 50 ];
           
        format( tStr, sizeof( tStr ), "* You are currently a %s!", GetTeamName ( GetPlayerTeam( playerid ) ) );
        return SendClientMessage( playerid, -1, tStr );
    }
    return false;
}

stock GetTeamName ( TeamID )
{
    new
        tName [ 64 ];
            // We probably don't even need 64 cells for this, but we will just in case.
           
    switch( TeamID )
    {
        case TEAM_ONE:
        {
            tName = "Attackers";
            // If their Team ID is TEAM_ONE, then GetTeamName will return "Attackers"
        }

        case TEAM_TWO:
        {
            tName = "Defenders";
            // If their Team ID is TEAM_TWO, then GetTeamName will return "Defenders"
        }
       
        default: // Anything but TEAM_ONE or TEAM_TWO.
        {
            tName = "Unknown";
            // If it's unknown ( I'm not sure how this would happen, but I'm sure it's possible.. )
        }
    }
    return tName;
}
Reply
#2

Nice :/ mostly its a copy and paste right ? >if its not sorry< it just seems like it
but nice anyway rep+
Reply
#3

Quote:
Originally Posted by SwiftKidZ
Посмотреть сообщение
Nice :/ mostly its a copy and paste right ? >if its not sorry< it just seems like it
but nice anyway rep+
Wasn't supposed to be made like that. It will function as a copy-paste though, but the reason I made it like that was so I could just explain it in bits of comments next to the code.
Reply
#4

Okay
Reply
#5

I love tutorials with the comments.

More should be made like this.
Reply
#6

Much more helpful when adding comments to the script, then we can actually see where and wht part of the script is what.
Reply
#7

Thanks guys.

Any comments on the tutorial itself? Anything I could elaborate more on?
Reply
#8

Good job 2KY, this will surely help some newbies in starting their own server
Reply
#9

Quote:
Originally Posted by Roperr
Посмотреть сообщение
Good job 2KY, this will surely help some newbies in starting their own server
Yes ! You are right ! I want to start a TDM server but, I didn`t know how to create teams. So here it is Wait for my GM, not far from here
Reply
#10

Quote:
Originally Posted by Roperr
Посмотреть сообщение
Good job 2KY, this will surely help some newbies in starting their own server
That would be the goal.

Quote:
Originally Posted by Spookie98
Посмотреть сообщение
Yes ! You are right ! I want to start a TDM server but, I didn`t know how to create teams. So here it is Wait for my GM, not far from here
Glad to be of assistance.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)