Locking Playerclasses or teams so I can select who uses them?
#1

In my code I have used teams. I want to lock it so I can choose who can use what team/class.

Anybody got any ideas on how to do this?

Here is my code

pawn Код:
#include <a_samp>
#include <YSI\y_ini>
#include <sscanf2>
#include <ranks>
#include <superman>


#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
#define DIALOG_SUCCESS_1 3
#define DIALOG_SUCCESS_2 4

#define PATH "/Users/%s.ini"

#define COL_WHITE "{FFFFFF}"
#define COL_RED "{F81414}"
#define COL_GREEN "{00FF22}"
#define COL_LIGHTBLUE "{00CED1}"


#define GROVE_STREET 1
#define POLICE 2
#define ARMY 3
#define Fbi 4
#define GROVE_STREET_COLOUR 0x00820FAA
#define POLICE_COLOUR 0x003DF5AA
#define COLOR_RED 0xFF0000AA
#define Fbi_COLOUR 0xAFAFAFAA
#define ARMY_COLOUR 0x33AA33AA



enum TeamCars
{
GroveStreet,
Police,
fbi,
army,
army1,
army2,
army3,
army4,
army5,
army6,
}

new Cars[TeamCars];
new gTeam[MAX_PLAYERS];
new Text:screentext;



enum pInfo
{
    pPass,
    pCash,
    pAdmin,
    pKills,
    pDeaths
}
new PlayerInfo[MAX_PLAYERS][pInfo];

forward LoadUser_data(playerid,name[],value[]);
public LoadUser_data(playerid,name[],value[])
{
    INI_Int("Password",PlayerInfo[playerid][pPass]);
    INI_Int("Cash",PlayerInfo[playerid][pCash]);
    INI_Int("Admin",PlayerInfo[playerid][pAdmin]);
    INI_Int("Kills",PlayerInfo[playerid][pKills]);
    INI_Int("Deaths",PlayerInfo[playerid][pDeaths]);
    return 1;
}

stock UserPath(playerid)
{
    new string[128],playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),PATH,playername);
    return string;
}

/*Credits to Dracoblue*/
stock udb_hash(buf[]) {
    new length=strlen(buf);
    new s1 = 1;
    new s2 = 0;
    new n;
    for (n=0; n<length; n++)
    {
       s1 = (s1 + buf[n]) % 65521;
       s2 = (s2 + s1)     % 65521;
    }
    return (s2 << 16) + s1;
}

main()
{
    print("\n----------------------------------");
    print("GTA and Colchester By Alex Harvey");
    print("----------------------------------\n");
}

public OnGameModeInit()
{
    SetGameModeText("Blank Script");
    AddPlayerClass(106,207.0750,-138.5691,1003.5078,269.9999,0,0,0,0,0,0);
    AddPlayerClass(282,1607.0870,1815.6981,10.8203,193.8336,3,0,24,200,29,200);
    AddPlayerClass(287,1607.0870,1815.6981,10.8203,193.8336,31,200,0,0,0,0);
    AddPlayerClass(286,-1722.3170,1018.0255,17.5859,88.8758,3,1,22,50,29,500); // fbi
    AddPlayerClass(61,1607.0870,1815.6981,10.8203,193.8336,31,200,0,0,0,0); //navy
    AddPlayerClass(162,2193.5884,2007.4149,12.2894,355.9373,0,0,0,0,0,0); // noob (zombie dude)
    AddPlayerClass(249,2193.7366,2007.4865,12.2894,358.2378,15,1,15,500,28,500); //Pimp skin
    AddPlayerClass(137,2193.5884,2007.4149,12.2894,355.9373,0,0,0,0,0,0); // Box on head Hobo guy

   
    Cars[Police] = AddStaticVehicle(597,396.8186,2545.9746,16.3004,324.9353,0,1); // SpawnCOPCAR
   
    AddStaticVehicle(401,394.4543,2437.2505,16.2806,3.0255,0,0); // carspawn Bruvaura
    AddStaticVehicle(401,397.1897,2437.3953,16.2809,1.4208,0,50); // carspawn Bruvaura
    AddStaticVehicle(401,399.7729,2437.3606,16.2793,0.6210,0,0); // carspawn Bruvaura
    AddStaticVehicle(401,391.8264,2437.0684,16.2795,2.6242,0,0); // carspawn Bruvaura
    AddStaticVehicle(476,325.6848,2538.4536,17.5205,178.8570,7,6); // SpawnPlaneww2
    AddStaticVehicle(593,289.7745,2539.5269,17.2783,180.0343,58,8); // SpawnPlanedodo
    Cars[army1] = AddStaticVehicle(548,364.8880,2537.6274,18.3325,195.9212,1,1); // SpawnCargobob
    Cars[army2] = AddStaticVehicle(433,357.7811,2553.2898,16.9148,269.2940,43,0); // Spawnarmytruck
    Cars[army3] = AddStaticVehicle(433,367.2657,2553.0474,16.9053,269.0898,43,0); // Spawnarmytruck
    Cars[army4] = AddStaticVehicle(470,404.5092,2527.4897,16.5424,89.2533,43,0); // Spawnarmyhummer
    Cars[army5] = AddStaticVehicle(470,378.7224,2527.3914,16.6021,91.0272,43,0); // Spawnarmyhummer
    Cars[army6] = AddStaticVehicle(470,373.4854,2527.3884,16.5965,90.3360,43,0); // Spawnarmyhummer
    AddStaticVehicle(416,384.2811,2551.5471,16.5833,87.1797,1,3); // SpawnMedic
    AddStaticVehicle(416,376.8029,2551.9158,16.5917,88.3846,1,3); // SpawnMedic
    Cars[fbi] = AddStaticVehicle(490,339.2541,2539.2632,16.9213,179.9669,0,0); // SpawnFBI
    AddStaticVehicle(519,404.5300,2457.5430,17.4219,358.4160,1,1); // SpawnLearjet
    AddStaticVehicle(522,424.1198,2460.3652,16.0705,87.1464,3,8); // Spawnracebike
    AddStaticVehicle(522,423.8329,2458.9072,16.0680,88.1236,7,79); // Spawnracebike
    AddStaticVehicle(522,423.9775,2459.6089,16.0701,88.5518,6,25); // Spawnracebike
    AddStaticVehicle(409,424.2143,2442.5706,16.2999,358.5166,1,1); // spawnlimo
   
   
    AddStaticVehicle(520,-1400.5963,510.1976,18.9502,271.5123,0,0); // Airforce Hydra
    AddStaticVehicle(548,-1419.6694,495.2425,19.8004,269.0417,1,1); // Airforce Cargobob
    AddStaticVehicle(520,-1432.3453,510.7588,18.9592,272.4252,0,0); // Airforce Hydra
    AddStaticVehicle(593,-1295.1147,495.4142,18.6936,271.4355,68,8); // Airforce Trainer
    AddStaticVehicle(425,-1311.0289,495.6122,18.7982,314.7953,43,0); // Airforce Hunter
    AddStaticVehicle(497,-1411.2788,518.8583,18.4201,91.2497,0,1); // Airforce Maverick
    AddStaticVehicle(476,-1269.9635,493.0234,18.9462,306.9293,1,6); // Airforce WW2

   
   
   
    screentext = TextDrawCreate(479.000000, 267.000000, "By Alex Harvey");
    TextDrawBackgroundColor(screentext, 255);
    TextDrawFont(screentext, 3);
    TextDrawLetterSize(screentext, 0.500000, 1.700000);
    TextDrawColor(screentext, -65281);
    TextDrawSetOutline(screentext, 0);
    TextDrawSetProportional(screentext, 1);
    TextDrawSetShadow(screentext, 1);
   
   
   
    return 1;
}

public OnGameModeExit()
{
    TextDrawHideForAll(screentext);
    return 1;
}

SetupPlayerForClassSelection(playerid)
{
    SetPlayerInterior(playerid,14);
    SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
    SetPlayerFacingAngle(playerid, 270.0);
    SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);
    SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
}

public OnPlayerRequestClass(playerid, classid)
{
    SetupPlayerForClassSelection(playerid);
    SetPlayerTeamFromClass(playerid, classid);
   
    switch (classid)
    {
        case 0:
        {
            GameTextForPlayer(playerid, "~b~NORMAL~n~~w~NOOB", 3000, 5);
        }
        case 1:
        {
            GameTextForPlayer(playerid, "~b~POLICE OFFICER~n~~w~OFFICER", 3000, 5);
        }
        case 3:
        {
            GameTextForPlayer(playerid, "~b~AGENT~n~~w~FBI", 3000, 5);
        }
        case 2:
        {
            GameTextForPlayer(playerid, "~p~SF ARMY~n~~w~MARINE", 3000, 5);
        }
        case 4:
        {
            GameTextForPlayer(playerid, "~b~NAVY~n~~w~PILOT", 3000, 5);
        }
        case 5:
        {
            GameTextForPlayer(playerid, "~b~NORMAL~n~~w~NOOB", 3000, 5);
        }
    }
    return 1;
}



public OnPlayerConnect(playerid)
{
    if(fexist(UserPath(playerid)))
    {
        INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_WHITE"Type your password below to login.","Login","Quit");
    }
    else
    {
        ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT,""COL_WHITE"Registering...",""COL_WHITE"Type your password below to register a new account.","Register","Quit");
       
        TextDrawShowForPlayer(playerid, screentext);
    }
    InitFly(playerid);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new INI:File = INI_Open(UserPath(playerid));
    INI_SetTag(File,"data");
    INI_WriteInt(File,"Cash",GetPlayerMoney(playerid));
    INI_WriteInt(File,"Admin",PlayerInfo[playerid][pAdmin]);
    INI_WriteInt(File,"Kills",PlayerInfo[playerid][pKills]);
    INI_WriteInt(File,"Deaths",PlayerInfo[playerid][pDeaths]);
    INI_Close(File);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid,383.0134,2538.8259,16.5391);
    SetPlayerFacingAngle(playerid,96.1577);
    SetPlayerToTeamColour(playerid);
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    PlayerInfo[killerid][pKills]++;
    PlayerInfo[playerid][pDeaths]++;
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!IsPlayerAdmin(playerid)) return 0;
    if (strcmp("/music bloodsugar", cmdtext, true, 10) == 0)
    for(new i = 0; i < MAX_PLAYERS; i++)
{
    PlayAudioStreamForPlayer(i, "http://dl.dropbox.com/u/60570065/01%20Blood%20Sugar.ogg");
}
    if(!IsPlayerAdmin(playerid)) return 0;
    if (strcmp("/music greyhound", cmdtext, true, 10) == 0)
    for(new i = 0; i < MAX_PLAYERS; i++)
{
    PlayAudioStreamForPlayer(i, "http://dl.dropbox.com/u/60570065/20%20Swedish%20House%20Mafia%20-%20Greyhound.mp3");
}
    if(!IsPlayerAdmin(playerid)) return 0;
    if (strcmp("/muisc willthe", cmdtext, true, 10) == 0)
    for(new i = 0; i < MAX_PLAYERS; i++)
{
    PlayAudioStreamForPlayer(i, "http://dl.dropbox.com/u/60570065/01%20T.H.E%20%28The%20Hardest%20Ever%29%20%5Bfeat.%20M.mp3");
}
    if(!IsPlayerAdmin(playerid)) return 0;
    if (strcmp("/music saviour", cmdtext, true, 10) == 0)
    for(new i = 0; i < MAX_PLAYERS; i++)
{
    PlayAudioStreamForPlayer(i, "http://dl.dropbox.com/u/60570065/Savior.MP3");
}
    if(!IsPlayerAdmin(playerid)) return 0;
    if (strcmp("/music stop", cmdtext, true, 10) == 0)
    for(new i = 0; i < MAX_PLAYERS; i++)
{
    StopAudioStreamForPlayer(i);
}
    if(!IsPlayerAdmin(playerid)) return 0;
    if (strcmp("/fly", cmdtext, true, 10) == 0)
{
    StartFly(playerid);
}
    if(!IsPlayerAdmin(playerid)) return 0;
    if (strcmp("/stopfly", cmdtext, true, 10) == 0)
{
    StopFly(playerid);
}
    return 0;
}


public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
    return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 1;
}

public OnRconCommand(cmd[])
{
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    return 1;
}

public OnObjectMoved(objectid)
{
    return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
    return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
    return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
    return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
    return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
    return 1;
}

public OnPlayerExitedMenu(playerid)
{
    return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
    return 1;
}

public OnPlayerUpdate(playerid)
{
    return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
    return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
    return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
    return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch( dialogid )
    {
        case DIALOG_REGISTER:
        {
            if (!response) return Kick(playerid);
            if(response)
            {
                if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, ""COL_WHITE"Registering...",""COL_RED"You have entered an invalid password.\n"COL_WHITE"Type your password below to register a new account.","Register","Quit");
                new INI:File = INI_Open(UserPath(playerid));
                INI_SetTag(File,"data");
                INI_WriteInt(File,"Password",udb_hash(inputtext));
                INI_WriteInt(File,"Cash",0);
                INI_WriteInt(File,"Admin",0);
                INI_WriteInt(File,"Kills",0);
                INI_WriteInt(File,"Deaths",0);
                INI_Close(File);

                SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
                SpawnPlayer(playerid);
                ShowPlayerDialog(playerid, DIALOG_SUCCESS_1, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"Great! Your Y_INI system works perfectly. Relog to save your stats!","Ok","");
            }
        }

        case DIALOG_LOGIN:
        {
            if ( !response ) return Kick ( playerid );
            if( response )
            {
                if(udb_hash(inputtext) == PlayerInfo[playerid][pPass])
                {
                    INI_ParseFile(UserPath(playerid), "LoadUser_%s", .bExtra = true, .extra = playerid);
                    GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
                    ShowPlayerDialog(playerid, DIALOG_SUCCESS_2, DIALOG_STYLE_MSGBOX,""COL_WHITE"Success!",""COL_GREEN"You have successfully logged in!","Ok","");
                }
                else
                {
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_INPUT,""COL_WHITE"Login",""COL_RED"You have entered an incorrect password.\n"COL_WHITE"Type your password below to login.","Login","Quit");
                }
                return 1;
            }
        }
    }
    return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 1;
}

SetPlayerTeamFromClass(playerid, classid)
{
    if(classid == 0)
    {
        gTeam[playerid] = GROVE_STREET;
    }
    if(classid == 1)
    {
        gTeam[playerid] = POLICE;
    }
    if(classid == 2)
    {
        gTeam[playerid] = ARMY;
    }
    if(classid == 3)
    {
        gTeam[playerid] = Fbi;
    }
}

SetPlayerToTeamColour(playerid)
{
    if(gTeam[playerid] == GROVE_STREET)
    {
        SetPlayerColor(playerid,GROVE_STREET_COLOUR); //Green
    }
    if(gTeam[playerid] == POLICE)
    {
        SetPlayerColor(playerid,POLICE_COLOUR); // Blue
    }
    if(gTeam[playerid] == Fbi)
    {
        SetPlayerColor(playerid,Fbi_COLOUR); // grey
    }
    if(gTeam[playerid] == ARMY)
    {
        SetPlayerColor(playerid,ARMY_COLOUR); // Light Green
    }
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == 2)
    {
        new CarCheck = GetPlayerVehicleID(playerid);
        if(CarCheck == Cars[GroveStreet] )
        {
            if(gTeam[playerid] != 1)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "You Don't have the keys for this car!");
                return 1;
            }
        }
        if(CarCheck == Cars[fbi] )
        {
            if(gTeam[playerid] != 4)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "Your not part of the FBI!");
                return 1;
            }
        }
        if(CarCheck == Cars[army] )
        {
            if(gTeam[playerid] != 3)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "Your not part of the army!");
                return 1;
            }
        }
        if(CarCheck == Cars[army1] )
        {
            if(gTeam[playerid] != 3)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "Your not part of the army!");
                return 1;
            }
        }
        if(CarCheck == Cars[army2] )
        {
            if(gTeam[playerid] != 3)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "Your not part of the army!");
                return 1;
            }
        }
        if(CarCheck == Cars[army3] )
        {
            if(gTeam[playerid] != 3)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "Your not part of the army!");
                return 1;
            }
        }
        if(CarCheck == Cars[army4] )
        {
            if(gTeam[playerid] != 3)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "Your not part of the army!");
                return 1;
            }
        }
        if(CarCheck == Cars[army5] )
        {
            if(gTeam[playerid] != 3)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "Your not part of the army!");
                return 1;
            }
        }
        if(CarCheck == Cars[army6] )
        {
            if(gTeam[playerid] != 3)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "Your not part of the army!");
                return 1;
            }
        }

        if(CarCheck == Cars[Police] )
        {
            if(gTeam[playerid] != 2)
            {
                RemovePlayerFromVehicle(playerid);
                SendClientMessage(playerid, COLOR_RED, "You are not part of the Police force! Run before they catch you!");
                return 1;
            }
        }
        return 1;
    }
    return 1;
}
Reply
#2

PHP код:
#define GROVE_STREET 1
#define POLICE 2
#define ARMY 3
#define Fbi 4
public OnPlayerRequestClass(playeridclassid)
{
    
SetupPlayerForClassSelection(playerid);
    
SetPlayerTeamFromClass(playeridclassid);
    
    switch (
classid)
    {
        case 
0:
        {
            if(
gTeam[playerid] == GROVE_STREET)
            {
            
GameTextForPlayer(playerid"~b~NORMAL~n~~w~NOOB"30005);
            }
        else return 
SendClientMessage(playerid,COLOR_RED,"You must be Grove Street to use this skin!");
        }
    
//Else
    
return 1;

I dont get your logic, if player connects, he wont be able to use any skin cause he is not any team!
Maybe if you make dialog to pick team on login, i dont know but here's an example!

PHP код:
public OnPlayerConnect(playerid)
{
    
ShowPlayerDialog(playerid4321DIALOG_STYLE_LIST,"Pick one team before spawn!","Grove Street\nPolice\nArmy\nFBI","Pick","Exit");
        return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
if(
dialogid == 353)
        {
                if(
response == 0)
                {
                   
SendClientMessage(playerid0xFF0000FF"You Must Pick One Option!");
                   
Kick(playerid);
                   }
                if(
response == 1)
                {
                   if(
listitem == 0)
                        {
                           
gTeam[playerid] = GROVE_STREET;
                           
SendClientMessage(playeridCOLOR_GREEN,"You have picked team Grove Street!");
                           }
                           }
                   if(
listitem == 1)
                           {
                           
gTeam[playerid] = POLICE;
                           
SendClientMessage(playeridCOLOR_GREEN,"You have picked team Police!");
                           }
                         }
                   if(
listitem == 2)
                         {
                           
gTeam[playerid] = ARMY;
                           
SendClientMessage(playeridCOLOR_GREEN,"You have picked team Army!");
                           }
                         }
                   if(
listitem == 3)
                               {
                           
gTeam[playerid] = Fbi;
                           
SendClientMessage(playeridCOLOR_GREEN,"You have picked team FBI!");
                               }
                                }
                            }
}
return 
1;

Reply
#3

Quote:
Originally Posted by ******
Посмотреть сообщение
Get y_classes - it allows you to exactly select who can and can't SEE classes, thus who can select them.
Okay so Ive looked into Y_classes and Y_groups.

Now what I want to do with my code is have it so you spawn as a noob skin when you first enter the game but then I can make a character a cop ect so when they log back in they are a cop. No class selection screen involved. Could you give me an example script for this please?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)