SA-MP Forums Archive
[Include] y_races - Finally ported, More races, Less memory. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Filterscripts (https://sampforum.blast.hk/forumdisplay.php?fid=17)
+---- Forum: Includes (https://sampforum.blast.hk/forumdisplay.php?fid=83)
+---- Thread: [Include] y_races - Finally ported, More races, Less memory. (/showthread.php?tid=426109)

Pages: 1 2


y_races - Finally ported, More races, Less memory. - Y_Less - 27.03.2013

y_races
Introduction

The races system in YSI is one of the very first bits of code I wrote for it, back before it was even called YSI. The main "OnPlayerEnterCheckpoint" code remained almost identical to its original version from "San Andreas:Underground" 7 years ago until today when I made some updates (but the main structure is STILL the same).

This library fairly obviously provides functions for defining and running races. You can have (by default) up to 16 races running in parallel, with 1024 checkpoints between them. The old system was set to 256 checkpoints per race - this new version doesn't restrict the number per-race but globally instead, so you can have one with 1 checkpoint (a drag-race perhaps) and another with 1023 (some sort of ridiculous Le-Mans length tour).

Use

Using the basic system is very simple, but as with all of YSI there are many options that can be changed by advanced users:

pawn Code:
#include <YSI\y_races>

new
    gRace;

public OnScriptInit()
{
    // Declare a new race.
    gRace = Race_Create();
    // Set it to have 0 laps.
    Race_SetLaps(gRace, 0);
    // Set the price to join the race to $200.
    // Note that if you want, you can set this to 0 and create your own payment system.
    Race_SetEntry(gRace, 200);
}
That code creates and initialises a race. The function "Race_Create" also has several optional parameters so you can write the code above as:

pawn Code:
public OnScriptInit()
{
    gRace = Race_Create(.laps = 0, .entry = 200);
}
Now this race is very boring - it doesn't have any starting points or any checkpoints, so let's add some:

pawn Code:
// Add some points to the starting grid.
// This is a drag race between two cars along the LV airstrip.
// X, Y, Z, Angle.
Race_AddStart(gRace, 425.0, 2488.0, 16.2, 90.0);
Race_AddStart(gRace, 425.0, 2512.0, 16.2, 90.0);
// Add two checkpoints - its a drag race there and back!
// No angle this time.  Arrows and chequred flags are done automatically.
Race_AddCheckpoint(gRace, -78.5, 2500.0, 16.1);
Race_AddCheckpoint(gRace, 434.0, 2500.0, 16.1);
Finally, we need some players:

pawn Code:
YCMD:join(playerid, params[], help)
{
    #pragma unused params
    if (help)
    {
        SendClientMessage(playerid, 0xFF0000AA, "Adds you to the race.");
    }
    else
    {
        Race_PlayerJoin(playerid, gRace);
    }
    return 1;
}
And the very last thing, once everyone has been added to the race. Start it:

pawn Code:
YCMD:start(playerid, params[], help)
{
    #pragma unused params
    if (help)
    {
        SendClientMessage(playerid, 0xFF0000AA, "Begin the race.");
    }
    else
    {
        Race_Start(gRace);
    }
    return 1;
}
Callbacks

This include adds several callbacks that can be used:

pawn Code:
// Called when a player finishes the race.
forward OnPlayerFinishRace(playerid, race, position, prize, time);

// Called when a player drops out of the race.
forward OnPlayerExitRace(playerid, race);

// Called when the race is over.
forward OnRaceEnd(race);
Note that currently none of these are forwarded, nor are they handled by y_hooks.

Race_Create

As mentioned above, this function has a number of optional parameters. They are:
Note that all of these options also have equivalent "Race_SetXXX" functions that can be called instead.

Position

This include also has experimental code to get a player's position in the race. Simply call:

pawn Code:
Race_GetPlayerPosition(playerid);
As often as you want to update any indication of their position. Note that the information is only updated once every 500 ms (half a second - load balanced).

Download

This is part of YSI:

https://sampforum.blast.hk/showthread.php?tid=194480


Re: y_races - Finally ported, More races, Less memory. - newbienoob - 28.03.2013

Why there are no checkpoints appear? And race didn't start :/

pawn Code:
//top
new race1;
//gminit
    race1 = Race_Create(.countdown=5);
    Race_AddStart(race1, 425.0, 2488.0, 16.2, 90.0);
    Race_AddStart(race1, 425.0, 2512.0, 16.2, 90.0);
    Race_AddCheckpoint(race1, -78.5, 2500.0, 16.1);
    Race_AddCheckpoint(race1, 434.0, 2500.0, 16.1);

CMD:join(playerid)
{
    Race_PlayerJoin(race1, playerid);
    return 1;
}

CMD:start(playerid)
{
    Race_Start(race1);
    return 1;
}

//PS: I use your script ;d



Re: y_races - Finally ported, More races, Less memory. - Y_Less - 28.03.2013

pawn Code:
Race_PlayerJoin(playerid, race1);
I've fixed this in the first post too - thanks. I need to add tags to "Race:" variables so the compiler gets things like this. This is confusing as it is backwards to almost every other function in YSI!


Re: y_races - Finally ported, More races, Less memory. - newbienoob - 28.03.2013

So.. I need to re-download it?


Re: y_races - Finally ported, More races, Less memory. - Y_Less - 28.03.2013

No, just swap the parameter order.


Respuesta: y_races - Finally ported, More races, Less memory. - adri1 - 28.03.2013

Quote:
Originally Posted by SA-MP Wiki
Race_PlayerJoin
This function add a player to the race.
This should be used before Race_Start or you're going to have a very boring race with no-one taking part.
https://sampwiki.blast.hk/wiki/YSI:Races

First Race_PlayerJoin, and then Race_Start, no?
But I have bugs, when race has been finish, I can't start the same race again.


Re: y_races - Finally ported, More races, Less memory. - Y_Less - 28.03.2013

Yes - I've explained THAT in the first post too! I don't write these things for the fun of it...

Anyway, I've added in master system and groups support now.


Re: y_races - Finally ported, More races, Less memory. - Black Wolf - 28.03.2013

Ok i downloaded the YSI package again and now i am getting this error on compilation.
Code:
C:\Users\Bhupesh-PC\Desktop\pawno 3x\pawno\include\YSI\y_iterate.inc(203) : fatal error 111: user error: "Old foreach.inc files are no longer compatible with YSI."



Re: y_races - Finally ported, More races, Less memory. - Y_Less - 28.03.2013

Delete foreach.inc or upgrade it.


Re: y_races - Finally ported, More races, Less memory. - Edvin - 28.03.2013

It's possible to create air races ?


Re: y_races - Finally ported, More races, Less memory. - Y_Less - 28.03.2013

Yes, as documented in the first post...

Edit: OK, there was a typo - I wrote "places" instead of "planes", so I'll assume you did read the post and this was just my bad!


AW: y_races - Finally ported, More races, Less memory. - Artus - 08.07.2013

I defined, that the race could be started again.

But if it starts a second time the Checkpoint won't be showed. Why?


AW: y_races - Finally ported, More races, Less memory. - Mellnik - 23.08.2013

What is the difference between Race_SetPlayer(race, playerid, true) and Race_PlayerJoin ?


Re: y_races - Finally ported, More races, Less memory. - Y_Less - 23.08.2013

Nothing. "Race_PlayerJoin" is the old version, "Race_SetPlayer" is the new version required by the "y_groups" API, but either can be used in user code.


AW: y_races - Finally ported, More races, Less memory. - Mellnik - 23.08.2013

Ah ok and is there any way to get the players vehicle id?


Re: y_races - Finally ported, More races, Less memory. - Y_Less - 23.08.2013

GetPlayerVehicleID?


AW: y_races - Finally ported, More races, Less memory. - Mellnik - 23.08.2013

Gosh sorry i was confused.


Re: y_races - Finally ported, More races, Less memory. - Unknown1234 - 02.11.2013

just havin a problem of ... i started race #1 .... when i start race #2... both race gets destroyed... any idea?


AW: y_races - Finally ported, More races, Less memory. - Skimmer - 02.11.2013

Just amazing! Nice one Y_Less


Respuesta: y_races - Finally ported, More races, Less memory. - Swedky - 01.02.2014

Excuse to me the idea of re-living through the topic.

The include is late very much in to compile, is very slow...