[REP+]how to make randomcars for each player in race system? -
niels44 - 19.04.2012
hey guys,
i have downloaded this race system:
http://forum.sa-mp.com/showthread.ph...ighlight=rrace
i use v0.2a but now i found out that you can only use 1 car for each race... so every player who joins a race gets the same car, but how can i make it that 1 player gets a infernus the other player a turismo the other a sultan etc...
i already thought of making a new RandCars[][] =
{
blablabla
};
but i dont think that will work and even IF it works i dont know how to move on to make it that at each race it will spawn a random car for each player...
someone knows how to do that?
REP+ for the ones who help me
pls i really want this cuz i LOVE it XDD
greets niels
Re: [REP+]how to make randomcars for each player in race system? -
[WSF]ThA_Devil - 19.04.2012
pawn Код:
Like this:
new RandCars[]
{elegy},
{sultan},
{etc.}
On function where cars spawned:
pawn Код:
for(new i=0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnect(playerid))
{
new id = random(carcount+1); // should return number
CreateVehicle(RandCars[id],x,y,z,r);
}
}
Warning, Instead of car names use their actual IDS
Re: [REP+]how to make randomcars for each player in race system? -
niels44 - 19.04.2012
eehm yes but wut you mean with: // should return a number?
and eehm with where cars spawned you mean this?:
the cmd for joining:
pawn Код:
CMD:joinrace(playerid, params[])
{
if(RaceStarted == 1) return SendClientMessage(playerid, RED, "<!> Race already started! Wait first till race ends!");
if(RaceBusy == 0x00) return SendClientMessage(playerid, RED, "<!> There's no race to join!");
if(Joined[playerid] == true) return SendClientMessage(playerid, RED, "<!> You already joined a race!");
if(IsPlayerInAnyVehicle(playerid)) return SetTimerEx("SetupRaceForPlayer", 2500, 0, "e", playerid), RemovePlayerFromVehicle(playerid), Joined[playerid] = true;
SetupRaceForPlayer(playerid);
Joined[playerid] = true;
return 1;
}
and the SetupRaceForPlayer function:
pawn Код:
function SetupRaceForPlayer(playerid)
{
CPProgess[playerid] = 0;
TogglePlayerControllable(playerid, false);
CPCoords[playerid][3] = 0;
SetCP(playerid, CPProgess[playerid], CPProgess[playerid]+1, TotalCP, RaceType);
if(IsOdd(playerid)) Index = 1;
else Index = 0;
switch(Index)
{
case 0:
{
if(PlayersCount[0] == 1)
{
RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
CreatedRaceVeh[playerid] = CreateVehicle(RaceVehicle, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2, RaceVehCoords[0][3], random(126), random(126), (60 * 60));
SetPlayerPos(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2);
SetPlayerFacingAngle(playerid, RaceVehCoords[0][3]);
PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
}
}
case 1:
{
if(PlayersCount[1] == 1)
{
RaceVehCoords[1][0] -= (6 * floatsin(-RaceVehCoords[1][3], degrees));
RaceVehCoords[1][1] -= (6 * floatcos(-RaceVehCoords[1][3], degrees));
CreatedRaceVeh[playerid] = CreateVehicle(RaceVehicle, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2, RaceVehCoords[1][3], random(126), random(126), (60 * 60));
SetPlayerPos(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
}
}
}
switch(Index)
{
case 0:
{
if(PlayersCount[0] != 1)
{
CreatedRaceVeh[playerid] = CreateVehicle(RaceVehicle, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2, RaceVehCoords[0][3], random(126), random(126), (60 * 60));
SetPlayerPos(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2);
SetPlayerFacingAngle(playerid, RaceVehCoords[0][3]);
PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
PlayersCount[0] = 1;
}
}
case 1:
{
if(PlayersCount[1] != 1)
{
CreatedRaceVeh[playerid] = CreateVehicle(RaceVehicle, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2, RaceVehCoords[1][3], random(126), random(126), (60 * 60));
SetPlayerPos(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
PlayersCount[1] = 1;
}
}
}
new
string[128]
;
#if defined RACE_IN_OTHER_WORLD
SetPlayerVirtualWorld(playerid, 10);
#endif
InfoTimer[playerid] = SetTimerEx("TextInfo", 500, 1, "e", playerid);
if(JoinCount == 1) format(string, sizeof(string), "RaceName: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~RaceTime: ~w~%s~n~~y~RacePosition: ~w~1/1~n~ ", RaceName, CPProgess[playerid], TotalCP, TimeConvert(RaceTime));
else format(string, sizeof(string), "RaceName: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~RaceTime: ~w~%s~n~~y~RacePosition: ~w~%d/%d~n~ ", RaceName, CPProgess[playerid], TotalCP, TimeConvert(RaceTime), RacePosition[playerid], JoinCount);
TextDrawSetString(RaceInfo[playerid], string);
TextDrawShowForPlayer(playerid, RaceInfo[playerid]);
JoinCount++;
return 1;
}
where should i add the stuff you made? and for that new i made something like that
pawn Код:
new RandCars[] =
{
{411},
{451},
{560},
{568},
{424},
{562},
{559},
{555},
{556},
{557},
{549},
{541},
{534},
{533},
{522},
{521},
{518},
{506},
{504},
{502},
{503},
{500},
{495},
{494},
{489},
{480},
{477},
{461}
};
where to put this all? could you tell me or put it at right place for me?
ty
Re: [REP+]how to make randomcars for each player in race system? -
[WSF]ThA_Devil - 19.04.2012
well, the random cars put on top b4 any callbacks
and setup race for player somewhere where isn't callback
Re: [REP+]how to make randomcars for each player in race system? -
niels44 - 19.04.2012
yeah i understand that but where to put yhe stuff you told.... and wut you mean with // should return number? do i just have to put there a 1? or 2? or soemthing?
Re: [REP+]how to make randomcars for each player in race system? -
[WSF]ThA_Devil - 19.04.2012
inside yes, it should return a number random from 0 to that number...
and put it in there where player ready's up for race...
he gets a car and automaticly put in.
Re: [REP+]how to make randomcars for each player in race system? -
niels44 - 19.04.2012
eehm i think i get it with that car thingy but i dont get it with that number... so i just place there a 0? i dont understand
EDIT: hmm yeah it works now i have made this:
pawn Код:
function SetupRaceForPlayer(playerid)
{
CPProgess[playerid] = 0;
TogglePlayerControllable(playerid, false);
CPCoords[playerid][3] = 0;
SetCP(playerid, CPProgess[playerid], CPProgess[playerid]+1, TotalCP, RaceType);
if(IsOdd(playerid)) Index = 1;
else Index = 0;
switch(Index)
{
case 0:
{
if(PlayersCount[0] == 1)
{
new carcount = 0;
new id = random(carcount+1); // should return number
RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
CreatedRaceVeh[playerid] = CreateVehicle(RandCars[id][carcount], RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2, RaceVehCoords[0][3], random(126), random(126), (60 * 60));
SetPlayerPos(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2);
SetPlayerFacingAngle(playerid, RaceVehCoords[0][3]);
PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
}
}
case 1:
{
if(PlayersCount[1] == 1)
{
new carcount = 0;
new id = random(carcount+1); // should return number
RaceVehCoords[1][0] -= (6 * floatsin(-RaceVehCoords[1][3], degrees));
RaceVehCoords[1][1] -= (6 * floatcos(-RaceVehCoords[1][3], degrees));
CreatedRaceVeh[playerid] = CreateVehicle(RandCars[id][carcount], RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2, RaceVehCoords[1][3], random(126), random(126), (60 * 60));
SetPlayerPos(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
}
}
}
switch(Index)
{
case 0:
{
if(PlayersCount[0] != 1)
{
new carcount = 0;
new id = random(carcount+1); // should return number
CreatedRaceVeh[playerid] = CreateVehicle(RandCars[id][carcount], RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2, RaceVehCoords[0][3], random(126), random(126), (60 * 60));
SetPlayerPos(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2);
SetPlayerFacingAngle(playerid, RaceVehCoords[0][3]);
PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
PlayersCount[0] = 1;
}
}
case 1:
{
if(PlayersCount[1] != 1)
{
new carcount = 0;
new id = random(carcount+1); // should return number
CreatedRaceVeh[playerid] = CreateVehicle(RandCars[id][carcount], RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2, RaceVehCoords[1][3], random(126), random(126), (60 * 60));
SetPlayerPos(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
PlayersCount[1] = 1;
}
}
}
new
string[128]
;
#if defined RACE_IN_OTHER_WORLD
SetPlayerVirtualWorld(playerid, 10);
#endif
InfoTimer[playerid] = SetTimerEx("TextInfo", 500, 1, "e", playerid);
if(JoinCount == 1) format(string, sizeof(string), "RaceName: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~RaceTime: ~w~%s~n~~y~RacePosition: ~w~1/1~n~ ", RaceName, CPProgess[playerid], TotalCP, TimeConvert(RaceTime));
else format(string, sizeof(string), "RaceName: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~RaceTime: ~w~%s~n~~y~RacePosition: ~w~%d/%d~n~ ", RaceName, CPProgess[playerid], TotalCP, TimeConvert(RaceTime), RacePosition[playerid], JoinCount);
TextDrawSetString(RaceInfo[playerid], string);
TextDrawShowForPlayer(playerid, RaceInfo[playerid]);
JoinCount++;
return 1;
}
but there is a problem... it doesnt chooses the cars randomly... it always chooses the first car i have in my new variable... the infernus id 411... not randomly i tried it with 4 races and all 4 races i got a infernus... you know wuts wrong in here?
Re: [REP+]how to make randomcars for each player in race system? -
[WSF]ThA_Devil - 19.04.2012
place in that number place how much random cars you have + 1
like i have 6 cars
i need to do:
random(7)
Re: [REP+]how to make randomcars for each player in race system? -
niels44 - 19.04.2012
EDIT: yeah its fixed



tytytyty its very nice now and like promised: REP+