How to get a random value from a multidimensional array?
#1

Hi, I have this:

PHP код:
new Float:TeamSpawns[][4][4] = {
{
    {
1090.1176,1915.2543,10.8203,359.0264},
    {
1093.6993,1905.3907,16.4873,2.1364},
    {
1116.3743,1891.2225,10.8203,167.8679},
    {
1092.0170,1892.6232,10.8203,182.2814}
},
{
    {-
799.3118,1570.1510,27.0807,87.2953},
    {-
819.4633,1499.2266,19.7184,179.7295},
    {-
767.4883,1520.2850,26.7911,270.9103},
    {-
721.7050,1538.5356,40.4757,93.5855}
}
}; 
I have this function:
PHP код:
stock SetPlayerRandTeamPos(playeridteam)
{
    new 
rand random(sizeof(TeamSpawns[team]));
    
SetPlayerPos(playeridTeamSpawns[team][rand][0], TeamSpawns[team][rand][1], TeamSpawns[team][rand][2]);
    
SetPlayerFacingAngle(playeridTeamSpawns[team][rand][3]);
    return 
1;

I get an error here:
PHP код:
new rand random(sizeof(TeamSpawns[team])); 
Reply
#2

pawn Код:
new Float:TeamSpawns[][] =
{
    {1090.1176,1915.2543,10.8203,359.0264},
    {1093.6993,1905.3907,16.4873,2.1364},
    {1116.3743,1891.2225,10.8203,167.8679},
    {1092.0170,1892.6232,10.8203,182.2814}
    {-799.3118,1570.1510,27.0807,87.2953},
    {-819.4633,1499.2266,19.7184,179.7295},
    {-767.4883,1520.2850,26.7911,270.9103},
    {-721.7050,1538.5356,40.4757,93.5855}
};

stock SetPlayerRandomPos(playerid)
{
    new rand = random(sizeof(TeamSpawns));
    SetPlayerPos(playerid, TeamSpawns[rand][0], TeamSpawns[rand][1], TeamSpawns[rand][2]);
    SetPlayerFacingAngle(playerid, TeamSpawns[rand][3]);
    return 1;
}
Reply
#3

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
pawn Код:
new Float:TeamSpawns[][] =
{
    {1090.1176,1915.2543,10.8203,359.0264},
    {1093.6993,1905.3907,16.4873,2.1364},
    {1116.3743,1891.2225,10.8203,167.8679},
    {1092.0170,1892.6232,10.8203,182.2814}
    {-799.3118,1570.1510,27.0807,87.2953},
    {-819.4633,1499.2266,19.7184,179.7295},
    {-767.4883,1520.2850,26.7911,270.9103},
    {-721.7050,1538.5356,40.4757,93.5855}
};

stock SetPlayerRandomPos(playerid)
{
    new rand = random(sizeof(TeamSpawns));
    SetPlayerPos(playerid, TeamSpawns[rand][0], TeamSpawns[rand][1], TeamSpawns[rand][2]);
    SetPlayerFacingAngle(playerid, TeamSpawns[rand][3]);
    return 1;
}
That's not right, I have a three dimentional array.
Reply
#4

Quote:
Originally Posted by Magic_Time
Посмотреть сообщение
That's not right, I have a three dimentional array.
Yeah, but I made a two dimensional array.

I recommend that you create an array for each team, it will require less checking and looping through the information than everything in a single array.
Reply
#5

I think you can't use sizeof on a multidimensional array.

You should do something like this:

pawn Код:
new Float: TeamASpawns[][4] = {
    {1090.1176,1915.2543,10.8203,359.0264},
    {1093.6993,1905.3907,16.4873,2.1364},
    {1116.3743,1891.2225,10.8203,167.8679},
    {1092.0170,1892.6232,10.8203,182.2814}
};

new Float: TeamBSpawns[][4] = {
    {-799.3118,1570.1510,27.0807,87.2953},
    {-819.4633,1499.2266,19.7184,179.7295},
    {-767.4883,1520.2850,26.7911,270.9103},
    {-721.7050,1538.5356,40.4757,93.5855}
};
Then use @SickAttack's example code.
Reply
#6

Quote:
Originally Posted by paulommu
Посмотреть сообщение
I think you can't use sizeof on a multidimensional array.

You should do something like this:

pawn Код:
new Float: TeamASpawns[][4] = {
    {1090.1176,1915.2543,10.8203,359.0264},
    {1093.6993,1905.3907,16.4873,2.1364},
    {1116.3743,1891.2225,10.8203,167.8679},
    {1092.0170,1892.6232,10.8203,182.2814}
};

new Float: TeamBSpawns[][4] = {
    {-799.3118,1570.1510,27.0807,87.2953},
    {-819.4633,1499.2266,19.7184,179.7295},
    {-767.4883,1520.2850,26.7911,270.9103},
    {-721.7050,1538.5356,40.4757,93.5855}
};
Then use @SickAttack's example code.
Yeah, I discovered how.
PHP код:
new rand random(sizeof(TeamSpawns[])); 
Reply
#7

Quote:
Originally Posted by Magic_Time
Посмотреть сообщение
Yeah, I discovered how.
PHP код:
new rand random(sizeof(TeamSpawns[])); 
You can, but you don't need the brackets "[]".
Reply
#8

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
You can, but you don't need the brackets "[]".
You don't understand what I want, you would if you'd look carefully at my array.

Here's something for you to understand.
PHP код:
sizeof(array) // First dimension
sizeof(array[]) // second dimension THIS IS MY CASE
sizeof(array[][]) // third dimension 
I discovered how to fix my problem. Thanks for trying to help.
Reply
#9

Quote:
Originally Posted by Magic_Time
Посмотреть сообщение
You don't understand what I want, you would if you'd look carefully at my array.

Here's something for you to understand.
PHP код:
sizeof(array) // First dimension
sizeof(array[]) // second dimension THIS IS MY CASE
sizeof(array[][]) // third dimension 
I discovered how to fix my problem. Thanks for trying to help.
I already know but how do you expect me to know what you want if you don't even explain anything?

Quote:

Here's my code. Problem -> this.

Be more specific next time.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)