Extract String from enum -
randomkid88 - 02.10.2010
How would you go about extracting strings from an enum?
For example, we have a system where only certain users have access. Each time we add a command, we have to use strcmp(pName, ...) to check if it is an authorized person.
I have seen it before, but I can't remember how it was done. I would like to create an enum with the list of authorized people, and have it check this list each time instead of using strcmp to check names.
Thanks in advance
Re: Extract String from enum -
Gamer_Z - 02.10.2010
new MyAccessList[MAX_PLAYERS][32];
stock HasAccess(playerid){
new xS[32];
for(new x; a < MAX_PLAYERS; x++){
GetPlayerName(playerid,xS,32);
if(strcmp...){
return 1;// and owned.. wqe still use strcmp.
}
}
return 0;
}
well this is a basic example, it can be expanded with many more features,.
Re: Extract String from enum -
Memoryz - 02.10.2010
CAn't you do like:
PlayerEnumInfo[playerid][Authorized]
So:
if(PlayerEnumInfo[playerid][Authorized] == 1)
{
//Is authorized
}
else
{
//Not authorized.
}
Re: Extract String from enum -
randomkid88 - 02.10.2010
Should it be x< MAX_PLAYERS, or is the "a" intended?
And there is not any other information stored per player that would need an enum, and I don't necessarily want to use this per player.
so for example
pawn Код:
enum Authorized
{
Player_a,
Player_b,
Player_c
}
and then see if the player's name is on that list for a command.
Re: Extract String from enum -
Mauzen - 03.10.2010
You do not really need an enum for that, a string array would do the job too
pawn Код:
new Names[][MAX_PLAYER_NAME] =
{
name_1,
name_2,
...
};
//To check if a name is in the list:
for(new i = 0; i < sizeof(Names); i ++)
{
if(!strcmp(playername, Names[i], false))
{
//It is on the list
//...your code...
break;
}
}
Re: Extract String from enum -
randomkid88 - 03.10.2010
Thanks, thats what I needed!
Re: Extract String from enum -
randomkid88 - 05.10.2010
Ok, it compiles fine now, but things aren't name-locked. This is what I have:
pawn Код:
forward IsAuthorized(playerid);
new Names[][MAX_PLAYER_NAME] =
{
"John_Doe",
// More names
};
public IsAuthorized(playerid)
{
for(new i = 0; i < sizeof(Names); i ++)
{
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
if(!strcmp(playername, Names[i], false)) {}
}
return 1;
}
Everyone can use the commands if I do if(IsAuthorized(playerid)) as a conditional. Can anyone spot an error?
Thanks again