AddPlayerClass - switchting random!
#1

Hi everybody! I've got a question:

How can I switch the random spawn-positions from each team? I've got the "AddPlayerClass"-es, but now I don't know, how to set a player's position for each spawn randomly...Of course only for each team. What shall I show you?
Reply
#2

Lol, thank you for this little guide! But what should I do now with aaaaaallll of these "AddPlayerClasses"? I've got about 40 under "OnGameModeInit"...
Reply
#3

Take the coordinates from AddPlayerClasses and add them to the array, like in the "Declaring The Data" part.

These are the coordinates:

pawn Код:
{213.55, 347.37, 37.58},
{458.63, 348.58, 57.38},
{753.39, 375.73, 83.75},
{753.58, 375.38, 38.38}

EDIT:

Let's say you have this AddPlayerClass part:

pawn Код:
AddPlayerClass(7, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
So you have to copy the x, y and z coordinates. That would be x=1958.3783, y=1343.1572 and z=15.3746.
Now to add them to the array:

pawn Код:
{1958.3783, 1343.1572, 15.3746},
Understand it ?
Reply
#4

It's scripted with "OnPlayerRequestClass"! Different teams a player can choose, one admin-class included! So one more question: If I'll take out the co-ordinates, what about the weapons and the skin-ID into the "AddPlayerClasses"?
Reply
#5

My spawnpoints are like this:

pawn Код:
1974.4895,-1157.0608,20.9505,95.6222
They're for 4 co-ords, not for 3....Shall I change the 3 in the array to 4?
Reply
#6

The forth coordinate is actually the angle. You don't really need that one, so you can leave only the other 3 (X, Y and Z).
Reply
#7

Ermm, failed, lol:

Код:
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(316) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(316) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(316) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(316) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(317) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(317) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(317) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(317) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(318) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(318) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(318) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(318) : warning 213: tag mismatch
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(321) : error 001: expected token: "}", but found "{"
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(329) : error 055: start of function body without function header
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(335) : error 055: start of function body without function header
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(342) : error 055: start of function body without function header
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(354) : error 055: start of function body without function header
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(2106) : warning 202: number of arguments does not match definition
D:\Program Files\GTA San Andreas\SAMP_Server\gamemodes\deathmatch.pwn(2106) : error 032: array index out of bounds (variable "aTeamSpawnData")
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


6 Errors.
Here's the code, probably I've done something wrong...

pawn Код:
#define MAX_TEAMS        6
#define MAX_SPAWN_POSITIONS 9
new aTeamSpawnData[MAX_TEAMS][MAX_SPAWN_POSITIONS][4] =
{
    {
        {1974.4895,-1157.0608,20.9505,95.6222}, //error
        {1976.7120,-1183.5504,26.0188,98.0542}, //error
        {2092.0271,-1166.3419,26.5859,89.4869} //error
    }
   
    { //error
        {2516.3430,-1674.3085,13.9348,81.6422},
        {2495.4890,-1688.2717,13.7022,5.9233},
        {2451.6484,-1642.4531,13.7357,182.6713},
        {2413.7170,-1647.2096,14.0119,174.8622},
        {2408.6982,-1674.0126,13.6037,356.5973}
    }
   
    { //error
        {2579.8118,-1033.3663,69.5799,181.62759},
        {2547.4160,-1032.1406,72.7143,176.0107},
        {2576.4817,-1071.2097,69.8322,62.3656}
    }
   
    { //error
        {1674.8583,-2121.5229,13.9369,300.8057},
        {1695.9087,-2124.7395,13.8101,4.7263},
        {1711.3071,-2102.7495,13.8033,192.7047},
        {1762.8004,-2102.5989,13.8570,181.4246}
    }
   
    { //error
        {1543.4990,-1630.5468,13.3828,353.8011},
        {1579.8405,-1634.1257,13.5624,1.1036},
        {1506.0997,-1624.6141,16.5902,263.1253},
        {1486.5725,-1768.1907,18.7958,359.6797},
        {1472.0604,-1768.4747,18.7958,2.8131},
        {1544.4415,-1679.3961,13.5584,98.7968},
        {1545.3390,-1671.9905,13.5602,86.8900},
        {1552.2197,-1681.1012,14.4420,83.4668},
        {1551.9014,-1669.9812,14.4420,81.2735}
    }
   
    { //error
        {1121.1489,-1490.4775,22.7690,269.6610},
        {1223.3407,-1499.0483,10.0469,2.2804},
        {1280.4026,-1472.7299,10.0469,171.7327},
        {1128.8010,-1494.2787,22.7690,177.5648},
        {1126.4438,-1385.4064,13.7292,175.0332}
    }
}
pawn Код:
public OnPlayerSpawn(playerid)
    {

new
iRandSpawn = random(MAX_SPAWN_POSITIONS),
iPlayerTeam = gTeam[playerid];
SetPlayerPos(playerid, aTeamSpawnData[iPlayerTeam][iRandSpawn][0], aTeamSpawnData[iPlayerTeam][iRandSpawn][1], aTeamSpawnData[iPlayerTeam][iRandSpawn][2], aTeamSpawnData[iPlayerTeam][iRandSpawn][3], aTeamSpawnData[iPlayerTeam][iRandSpawn][4], aTeamSpawnData[iPlayerTeam][iRandSpawn][5]); //error
Also, how to make that hilarious array-line shorter?
Reply
#8

Even though the array length is 4 ([4]), the count starts from 0. So it's like:

pawn Код:
aTeamSpawnData[iPlayerTeam][iRandSpawn][0],
aTeamSpawnData[iPlayerTeam][iRandSpawn][1],
aTeamSpawnData[iPlayerTeam][iRandSpawn][2],
aTeamSpawnData[iPlayerTeam][iRandSpawn][3]
That's 4. You can't use [4].

So basically:
pawn Код:
SetPlayerPos(playerid, aTeamSpawnData[iPlayerTeam][iRandSpawn][0], aTeamSpawnData[iPlayerTeam][iRandSpawn][1], aTeamSpawnData[iPlayerTeam][iRandSpawn][2]);
And of course, for the facing angle, use:
pawn Код:
SetPlayerFacingAngle(playerid, aTeamSpawnData[iPlayerTeam][iRandSpawn][3]);
Reply
#9

PHP код:
public OnPlayerSpawn(playerid)
{
new 
playerName[MAX_PLAYER_NAME], RandomSpawn random(8);
GetPlayerName(playeridplayerNameMAX_PLAYER_NAME);
if (
RandomSpawn == 0)
{
SetPlayerPos(playerid1699.657836, -2398.54394513.554687);
SetPlayerFacingAngle(playerid207.884277);//lsair
}
if (
RandomSpawn == 1)
{
SetPlayerPos(playerid486.0672602607.68603562.243885);
SetPlayerFacingAngle(playerid124.997482);//aa
}
if (
RandomSpawn == 2)
{
SetPlayerPos(playerid, -2323.567626, -1615.611694483.717834);
SetPlayerFacingAngle(playerid233.441726);//chill
}
if (
RandomSpawn == 3)
{
SetPlayerPos(playerid, -1255.36181629.31097714.148437);
SetPlayerFacingAngle(playerid141.581024);//sfair
}
if (
RandomSpawn == 4)
{
SetPlayerPos(playerid1699.657836, -2398.54394513.554687);
SetPlayerFacingAngle(playerid207.884277);//lsair
}
if (
RandomSpawn == 5)
{
SetPlayerPos(playerid486.0672602607.68603562.243885);
SetPlayerFacingAngle(playerid124.997482);//aa
}
if (
RandomSpawn == 6)
{
SetPlayerPos(playerid, -2323.567626, -1615.611694483.717834);
SetPlayerFacingAngle(playerid233.441726);//chill
}
if (
RandomSpawn == 7)
{
SetPlayerPos(playerid, -1255.36181629.31097714.148437);
SetPlayerFacingAngle(playerid141.581024);//sfair
}
return 
1;

Rep+++
Reply
#10

Quote:
Originally Posted by Aloushi
Посмотреть сообщение
Rep+++
Why would he rep that...


I suppose if you really want to do the 3 dimensional you can do this.
pawn Код:
new Float:TeamSpawns[MAX_TEAMS][MAX_SPAWNS][4] = {
    {//Team 1
        {x,y,z,angle}, //Spawn 1
        {x,y,z,angle}, //Spawn 2
        {x,y,z,angle} //Spawn 3
    },
   
    {//Team 2
        {x,y,z,angle}, //Spawn 1
        {x,y,z,angle}, //Spawn 2
        {x,y,z,angle} //Spawn 3
    },
   
    {//Team 3
        {x,y,z,angle}, //Spawn 1
        {x,y,z,angle}, //Spawn 2
        {x,y,z,angle} //Spawn 3
    }

    //etc
};

public OnPlayerSpawn(playerid)
{
    new Team = gTeam[playerid]; //We create the Team variable just for easier reading
    new rand = random(MAX_SPAWNS); //Create our random that will go through max spawns
    SetPlayerPos(playerid, TeamSpawns[Team][rand][0],TeamSpawns[Team][rand][1],TeamSpawns[Team][rand][2]); //set their pos depending on the team & the random
    SetPlayerFacingAngle(playerid, TeamSpawns[Team][rand][3]); //set their angle to their team random spawn
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)