[REP+]how to make randomcars for each player in race system?
#1

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
Reply
#2

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
Reply
#3

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
Reply
#4

well, the random cars put on top b4 any callbacks
and setup race for player somewhere where isn't callback
Reply
#5

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?
Reply
#6

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.
Reply
#7

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?
Reply
#8

place in that number place how much random cars you have + 1
like i have 6 cars
i need to do:
random(7)
Reply
#9

EDIT: yeah its fixed tytytyty its very nice now and like promised: REP+
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)