Jump to content
  • 0

pomoc Race Systém


Jakub Kučera

Dotaz

Ahoj, mám problém. Stáhnul jsem si Race Systém od Rider

/*
Release:
» Race System Filterscript

Author:
» » RyDeR «

Last Update:
» 26/04/2010

ChangeLog:
» v0.1a:
- Initial release

» v0.2a:
- Major Bugs fixed!
- Racing in other worlds added (enable/disbable with uncomment/comment-ing the define)
- New Commands added:
- /startautorace: You can enable that the script starts automaticly a race after the previous one is done.
- /stopautorace: You can disable the command above.
- /exitrace: To exit the race safely
- Best Race Times added (Top 5 best time laps; You will see a message when the record is broken).
- Crash while creating a race is fixed.
- Etc..

Bugs:
» No bugs

Version:
» v0.2a

Functions:
» IsPlayerInRace(playerid); >> UseFull in stunt servers to disable speedhack, nitro etc. while racing.

Credits:
» Joker: He knows why 
» Joe Torran C, ModrLicC: For testing.
» DracoBlue: 'Dini' include.
» Y_Less: 'IsOdd' function.
» Seif_: 'function' function.
» ZeeX: 'zcmd' include.
» Switch: InRace Position function.
*/
#include <a_samp>
#include <dini>
#include <zcmd>
#include <cardefines>
#include <nRace>


#define ForEach(%0,%1) \
	for(new %0 = 0; %0 != %1; %0++) if(IsPlayerConnected(%0) && !IsPlayerNPC(%0))

#define Loop(%0,%1) \
	for(new %0 = 0; %0 != %1; %0++)

#define IsOdd(%1) \
	((%1) & 1)

#define ConvertTime(%0,%1,%2,%3,%4) \
	new \
	    Float: %0 = floatdiv(%1, 60000) \
	;\
	%2 = floatround(%0, floatround_tozero); \
	%3 = floatround(floatmul(%0 - %2, 60), floatround_tozero); \
	%4 = floatround(floatmul(floatmul(%0 - %2, 60) - %3, 1000), floatround_tozero)

#define MAX_RACE_CHECKPOINTS_EACH_RACE \
 	120

#define MAX_RACES \
 	100

#define COUNT_DOWN_TILL_RACE_START \
	30 // seconds

#define MAX_RACE_TIME \
	300 // seconds

#define RACE_CHECKPOINT_SIZE \
	12.0

#define DEBUG_RACE \
 	0

#define RACE_IN_OTHER_WORLD // Uncomment to enable

#define GREY \
	0xAFAFAFAA

#define GREEN \
	0x9FFF00FF

#define RED \
	0xE60000FF

#define YELLOW \
	0xFFFF00AA

#define WHITE \
	0xFFFFFFAA
#define red 0xF60000AA
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define COLOR_MESSAGE_YELLOW            0xFFDD00AA
new
	vNames[212][] =
	{
		{"Landstalker"},
		{"Bravura"},
		{"Buffalo"},
		{"Linerunner"},
		{"Perrenial"},
		{"Sentinel"},
		{"Dumper"},
		{"Firetruck"},
		{"Trashmaster"},
		{"Stretch"},
		{"Manana"},
		{"Infernus"},
		{"Voodoo"},
		{"Pony"},
		{"Mule"},
		{"Cheetah"},
		{"Ambulance"},
		{"Leviathan"},
		{"Moonbeam"},
		{"Esperanto"},
		{"Taxi"},
		{"Washington"},
		{"Bobcat"},
		{"Mr Whoopee"},
		{"BF Injection"},
		{"Hunter"},
		{"Premier"},
		{"Enforcer"},
		{"Securicar"},
		{"Banshee"},
		{"Predator"},
		{"Bus"},
		{"Rhino"},
		{"Barracks"},
		{"Hotknife"},
		{"Trailer 1"},
		{"Previon"},
		{"Coach"},
		{"Cabbie"},
		{"Stallion"},
		{"Rumpo"},
		{"RC Bandit"},
		{"Romero"},
		{"Packer"},
		{"Monster"},
		{"Admiral"},
		{"Squalo"},
		{"Seasparrow"},
		{"Pizzaboy"},
		{"Tram"},
		{"Trailer 2"},
		{"Turismo"},
		{"Speeder"},
		{"Reefer"},
		{"Tropic"},
		{"Flatbed"},
		{"Yankee"},
		{"Caddy"},
		{"Solair"},
		{"Berkley's RC Van"},
		{"Skimmer"},
		{"PCJ-600"},
		{"Faggio"},
		{"Freeway"},
		{"RC Baron"},
		{"RC Raider"},
		{"Glendale"},
		{"Oceanic"},
		{"Sanchez"},
		{"Sparrow"},
		{"Patriot"},
		{"Quad"},
		{"Coastguard"},
		{"Dinghy"},
		{"Hermes"},
		{"Sabre"},
		{"Rustler"},
		{"ZR-350"},
		{"Walton"},
		{"Regina"},
		{"Comet"},
		{"BMX"},
		{"Burrito"},
		{"Camper"},
		{"Marquis"},
		{"Baggage"},
		{"Dozer"},
		{"Maverick"},
		{"News Chopper"},
		{"Rancher"},
		{"FBI Rancher"},
		{"Virgo"},
		{"Greenwood"},
		{"Jetmax"},
		{"Hotring"},
		{"Sandking"},
		{"Blista Compact"},
		{"Police Maverick"},
		{"Boxville"},
		{"Benson"},
		{"Mesa"},
		{"RC Goblin"},
		{"Hotring Racer A"},
		{"Hotring Racer B"},
		{"Bloodring Banger"},
		{"Rancher"},
		{"Super GT"},
		{"Elegant"},
		{"Journey"},
		{"Bike"},
		{"Mountain Bike"},
		{"Beagle"},
		{"Cropdust"},
		{"Stunt"},
		{"Tanker"},
		{"Roadtrain"},
		{"Nebula"},
		{"Majestic"},
		{"Buccaneer"},
		{"Shamal"},
		{"Hydra"},
		{"FCR-900"},
		{"NRG-500"},
		{"HPV1000"},
		{"Cement Truck"},
		{"Tow Truck"},
		{"Fortune"},
		{"Cadrona"},
		{"FBI Truck"},
		{"Willard"},
		{"Forklift"},
		{"Tractor"},
		{"Combine"},
		{"Feltzer"},
		{"Remington"},
		{"Slamvan"},
		{"Blade"},
		{"Freight"},
		{"Streak"},
		{"Vortex"},
		{"Vincent"},
		{"Bullet"},
		{"Clover"},
		{"Sadler"},
		{"Firetruck LA"},
		{"Hustler"},
		{"Intruder"},
		{"Primo"},
		{"Cargobob"},
		{"Tampa"},
		{"Sunrise"},
		{"Merit"},
		{"Utility"},
		{"Nevada"},
		{"Yosemite"},
		{"Windsor"},
		{"Monster A"},
		{"Monster B"},
		{"Uranus"},
		{"Jester"},
		{"Sultan"},
		{"Stratum"},
		{"Elegy"},
		{"Raindance"},
		{"RC Tiger"},
		{"Flash"},
		{"Tahoma"},
		{"Savanna"},
		{"Bandito"},
		{"Freight Flat"},
		{"Streak Carriage"},
		{"Kart"},
		{"Mower"},
		{"Duneride"},
		{"Sweeper"},
		{"Broadway"},
		{"Tornado"},
		{"AT-400"},
		{"DFT-30"},
		{"Huntley"},
		{"Stafford"},
		{"BF-400"},
		{"Newsvan"},
		{"Tug"},
		{"Trailer 3"},
		{"Emperor"},
		{"Wayfarer"},
		{"Euros"},
		{"Hotdog"},
		{"Club"},
		{"Freight Carriage"},
		{"Trailer 3"},
		{"Andromada"},
		{"Dodo"},
		{"RC Cam"},
		{"Launch"},
		{"Police Car (LSPD)"},
		{"Police Car (SFPD)"},
		{"Police Car (LVPD)"},
		{"Police Ranger"},
		{"Picador"},
		{"S.W.A.T. Van"},
		{"Alpha"},
		{"Phoenix"},
		{"Glendale"},
		{"Sadler"},
		{"Luggage Trailer A"},
		{"Luggage Trailer B"},
		{"Stair Trailer"},
		{"Boxville"},
		{"Farm Plow"},
		{"Utility Trailer"}
	},
	RandCars[][] =
	{
		{411},
		{451},
		{560},
		{568},
		{424},
		{562},
		{559},
		{555},
		{549},
		{541},
		{534},
		{533},
		{518},
		{506},
		{504},
		{502},
		{503},
		{500},
		{495},
		{494},
		{489},
		{480},
		{477}
	},
	RandBikes[][] =
	{
		{461},
		{468},
		{521},
		{522},
		{463},
		{462},
		{448}
	},
	BikesAndCars[][] =
	{
		{411},
		{451},
		{560},
		{568},
		{424},
		{562},
		{559},
		{555},
		{556},
		{557},
		{549},
		{541},
		{534},
		{533},
		{518},
		{506},
		{504},
		{502},
		{503},
		{500},
		{495},
		{494},
		{489},
		{480},
		{477},
		{461},
		{468},
		{521},
		{522},
		{463},
		{462},
		{448}
	},
	RandMonsters[][] =
	{
	    {444},
	    {556},
	    {557}
	},
	RandBoats[][] =
	{
	    {493},
	    {446},
	    {473},
	    {472},
	    {452},
	    {453},
	    {454},
	    {430},
	    {595}
	},
	RandPlanes[][] =
	{
	    {513},
	    {512},
	    {476},
	    {520}
	},
	BuildRace,
	BuildRaceType,
	BuildVehicle,
	BuildCreatedVehicle,
	BuildModeVID,
	BuildName[30],
	bool: BuildTakeVehPos,
	BuildVehPosCount,
	bool: BuildTakeCheckpoints,
	BuildCheckPointCount,
	RaceBusy = 0x00,
	RaceName[30],
	RaceVehicle,
	RaceType,
	TotalCP,
	Float: RaceVehCoords[2][4],
	Float: CPCoords[MAX_RACE_CHECKPOINTS_EACH_RACE][4],
	CreatedRaceVeh[MAX_PLAYERS],
	Index,
	PlayersCount[2],
	CountTimer,
	CountAmount,
	RaceTick,
	RaceStarted,
	CPProgess[MAX_PLAYERS],
	Position,
	FinishCount,
	JoinCount,
	rCounter,
	RaceTime,
	Text: RaceInfo[MAX_PLAYERS],
	InfoTimer[MAX_PLAYERS],
	RacePosition[MAX_PLAYERS],
	RaceNames[MAX_RACES][128],
 	TotalRaces,
 	bool: AutomaticRace,
 	TimeProgress,
 	RaceMode
;
public OnFilterScriptInit()
{
	print("\n+-----------------------+");
	printf("| Zavod|");
	print("+-------NActen----------+\n");
	LoadRaceNames();
	LoadAutoRace(RaceNames[random(TotalRaces)]);
	AutomaticRace = true;
	return 1;
}
public OnFilterScriptExit()
{
	BuildCreatedVehicle = (BuildCreatedVehicle == 0x01) ? (DestroyVehicle(BuildVehicle), BuildCreatedVehicle = 0x00) : (DestroyVehicle(BuildVehicle), BuildCreatedVehicle = 0x00);
	KillTimer(rCounter);
	KillTimer(CountTimer);
	Loop(i, MAX_PLAYERS)
	{
		DisablePlayerRaceCheckpoint(i);
		TextDrawDestroy(RaceInfo[i]);
		DestroyVehicle(CreatedRaceVeh[i]);
		Joined[i] = false;
		KillTimer(InfoTimer[i]);
	}
	JoinCount = 0;
	FinishCount = 0;
	TimeProgress = 0;
	AutomaticRace = false;
	return 1;
}

CMD:buildrace(playerid, params[])
{
	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED, "<!> Nejsi Admin");
	if(BuildRace != 0) return SendClientMessage(playerid, RED, "<!> Už někdo závod dělá!");
	if(RaceBusy == 0x01) return SendClientMessage(playerid, RED, "<!> Počkej, až závod skončí!");
	if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, RED, "<!> Nejprve opusťvozidlo!");
	BuildRace = playerid+1;
	ShowDialog(playerid, 500);
	return 1;
}
CMD:startrace(playerid, params[])
{
    if(AutomaticRace == true) return SendClientMessage(playerid, RED, "<!> Není možné. Automatický závod je povolen!");
    if(BuildRace != 0) return SendClientMessage(playerid, RED, "<!> Už někdo závod dělá !");
    if(RaceBusy == 0x01 || RaceStarted == 1) return SendClientMessage(playerid, RED, "<!> Závod probíhá, počkej až skončí!");
    if(isnull(params)) return SendClientMessage(playerid, RED, "<!> /startrace [nazev]");
    LoadRace(playerid, params);
    return 1;
}
CMD:stoprace(playerid, params[])
{
   	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED, "<!> Nejsi Admin");
    if(RaceBusy == 0x00 || RaceStarted == 0) return SendClientMessage(playerid, RED, "<!> Žádný závod neprobíhá!");
	SendClientMessageToAll(RED, ">> Administrátor stopnul závod!");
	return StopRace();
}
CMD:race(playerid, params[])
{
	if(RaceStarted == 1) return SendClientMessage(playerid, RED, "<!> Závod již začal! Počkej, až závod skončí!");
	if(RaceBusy == 0x00) return SendClientMessage(playerid, RED, "<!> Neprobíhá žádný závod!");
	if(Joined[playerid] == true) return SendClientMessage(playerid, RED, "<!> Už jsi v závodě!");
	if(IsPlayerInAnyVehicle(playerid)) return SetTimerEx("SetupRaceForPlayer", 2500, 0, "e", playerid), RemovePlayerFromVehicle(playerid), Joined[playerid] = true;
	SetupRaceForPlayer(playerid);
	Joined[playerid] = true;
	return 1;
}
CMD:startautorace(playerid, params[])
{
	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED, "<!> Nejsi Admin");
	if(RaceBusy == 0x01 || RaceStarted == 1) return SendClientMessage(playerid, RED, "<!> Nějaký závod již probíhá. Počkej, až skončí!");
	if(AutomaticRace == true) return SendClientMessage(playerid, RED, "<!> Už je zapnut!");
    LoadRaceNames();
	LoadAutoRace(RaceNames[random(TotalRaces)]);
	AutomaticRace = true;
	SendClientMessage(playerid, GREEN, ">> Zapnul jsi AutoRace. Automaticky se budou vytvářet závody!");
	return 1;
}
CMD:stopautorace(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, RED, "<!> Nejsi Admin");
    if(AutomaticRace == false) return SendClientMessage(playerid, RED, "<!> Už jse vypnut!");
    AutomaticRace = false;
    SendClientMessage(playerid, RED, "Auto Race deaktivován!, Pro aktivaci, použí /startautorace");
    return 1;
}
CMD:exitrace(playerid, params[])
{
    if(Joined[playerid] == true)
    {
		JoinCount--;
		Joined[playerid] = false;
		DestroyVehicle(CreatedRaceVeh[playerid]);
	    DisablePlayerRaceCheckpoint(playerid);
		TextDrawHideForPlayer(playerid, RaceInfo[playerid]);
		CPProgess[playerid] = 0;
		KillTimer(InfoTimer[playerid]);
		TogglePlayerControllable(playerid, true);
		SetCameraBehindPlayer(playerid);
		SpawnPlayer(playerid);
	} else return SendClientMessage(playerid, RED, "<!>  Nejsi v závodě!");
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	if(CPProgess[playerid] == TotalCP -1)
	{
		new
		    TimeStamp,
		    TotalRaceTime,
		    string[256],
		    rFile[256],
		    pName[MAX_PLAYER_NAME],
			rTime[3],
			Prize[2],
			TempTotalTime,
			TempTime[3]
		;
		Position++;
		GetPlayerName(playerid, pName, sizeof(pName));
		TimeStamp = GetTickCount();
		TotalRaceTime = TimeStamp - RaceTick;
		ConvertTime(var, TotalRaceTime, rTime[0], rTime[1], rTime[2]);
		switch(Position)
		{
		    case 1: Prize[0] = (random(random(5000)) + 10000), Prize[1] = 10;
		    case 2: Prize[0] = (random(random(4500)) + 9000), Prize[1] = 9;
		    case 3: Prize[0] = (random(random(4000)) + 8000), Prize[1] = 8;
		    case 4: Prize[0] = (random(random(3500)) + 7000), Prize[1] = 7;
		    case 5: Prize[0] = (random(random(3000)) + 6000), Prize[1] = 6;
		    case 6: Prize[0] = (random(random(2500)) + 5000), Prize[1] = 5;
		    case 7: Prize[0] = (random(random(2000)) + 4000), Prize[1] = 4;
		    case 8: Prize[0] = (random(random(1500)) + 3000), Prize[1] = 3;
		    case 9: Prize[0] = (random(random(1000)) + 2000), Prize[1] = 2;
		    default: Prize[0] = random(random(1000)), Prize[1] = 1;
		}
		format(string, sizeof(string), ">> \"%s\" dokončil závod na pozici \"%d\".", pName, Position);
		SendClientMessageToAll(WHITE, string);
		format(string, sizeof(string), "    - Čas: \"%d:%d.%d\".", rTime[0], rTime[1], rTime[2]);
		SendClientMessageToAll(WHITE, string);
		format(string, sizeof(string), "    - Cena: \"$%d a +%d Skóre\".", Prize[0], Prize[1]);
		SendClientMessageToAll(WHITE, string);

		if(FinishCount <= 5)
		{
			format(rFile, sizeof(rFile), "/rRaceSystem/%s.RRACE", RaceName);
		    format(string, sizeof(string), "BestRacerTime_%d", TimeProgress);
		    TempTotalTime = dini_Int(rFile, string);
		    ConvertTime(var1, TempTotalTime, TempTime[0], TempTime[1], TempTime[2]);
		    if(TotalRaceTime <= dini_Int(rFile, string) || TempTotalTime == 0)
		    {
		        dini_IntSet(rFile, string, TotalRaceTime);
				format(string, sizeof(string), "BestRacer_%d", TimeProgress);
		        if(TempTotalTime != 0) format(string, sizeof(string), ">> \"%s\" překonal rekord \"%s\" s \"%d\" sekundy rychlejší na \"%d\" místo", pName, dini_Get(rFile, string), -(rTime[1] - TempTime[1]), TimeProgress+1);
					else format(string, sizeof(string), ">> \"%s\" překonal rekord na \"%d\" místě!", pName, TimeProgress+1);
                SendClientMessageToAll(GREEN, "  ");
				SendClientMessageToAll(GREEN, string);
				SendClientMessageToAll(GREEN, "  ");
				format(string, sizeof(string), "BestRacer_%d", TimeProgress);
				dini_Set(rFile, string, pName);
				TimeProgress++;
		    }
		}
		FinishCount++;
		GivePlayerMoney(playerid, Prize[0]);
		SetPlayerScore(playerid, GetPlayerScore(playerid) + Prize[1]);
		DisablePlayerRaceCheckpoint(playerid);
		SetCameraBehindPlayer(playerid);
		CPProgess[playerid]++;
		if(FinishCount >= JoinCount) return StopRace();
    }
	else
	{
		CPProgess[playerid]++;
		CPCoords[CPProgess[playerid]][3]++;
		RacePosition[playerid] = floatround(CPCoords[CPProgess[playerid]][3], floatround_floor);
	    SetCP(playerid, CPProgess[playerid], CPProgess[playerid]+1, TotalCP, RaceType);
	    PlayerPlaySound(playerid, 1137, 0.0, 0.0, 0.0);
	}
    return 1;
}

public OnPlayerDisconnect(playerid)
{
	if(Joined[playerid] == true)
    {
		JoinCount--;
		Joined[playerid] = false;
		DestroyVehicle(CreatedRaceVeh[playerid]);
		DisablePlayerRaceCheckpoint(playerid);
		TextDrawHideForPlayer(playerid, RaceInfo[playerid]);
		CPProgess[playerid] = 0;
		KillTimer(InfoTimer[playerid]);
	}
	TextDrawDestroy(RaceInfo[playerid]);
	if(BuildRace == playerid+1) BuildRace = 0;
	return 1;
}

public OnPlayerConnect(playerid)
{
	RaceInfo[playerid] = TextDrawCreate(633.000000, 348.000000, " ");
	TextDrawAlignment(RaceInfo[playerid], 3);
	TextDrawBackgroundColor(RaceInfo[playerid], 255);
	TextDrawFont(RaceInfo[playerid], 1);
	TextDrawLetterSize(RaceInfo[playerid], 0.240000, 1.100000);
	TextDrawColor(RaceInfo[playerid], -687931137);
	TextDrawSetOutline(RaceInfo[playerid], 0);
	TextDrawSetProportional(RaceInfo[playerid], 1);
	TextDrawSetShadow(RaceInfo[playerid], 1);
	return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}
public OnPlayerDeath(playerid)
{
    if(Joined[playerid] == true)
    {
		JoinCount--;
		Joined[playerid] = false;
		DestroyVehicle(CreatedRaceVeh[playerid]);
		DisablePlayerRaceCheckpoint(playerid);
		TextDrawHideForPlayer(playerid, RaceInfo[playerid]);
		CPProgess[playerid] = 0;
		KillTimer(InfoTimer[playerid]);
	}
	if(BuildRace == playerid+1) BuildRace = 0;
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	switch(dialogid)
    {
        case 500:
        {
            switch(listitem)
            {
                case 0: // bike race
                {
                   	BuildRaceType = 0;
			        RaceMode = 5;
			        RaceType = 0;

                }
                case 1: // car race
                {
                    BuildRaceType = 0;
			        RaceMode = 6;
			        RaceType = 0;
                }
                case 2: // bike and car race
                {
                    BuildRaceType = 0;
			        RaceMode = 7;
			        RaceType = 0;
                }
                case 3: // monster race
                {
                    BuildRaceType = 0;
                    RaceMode = 8;
                    RaceType = 0;
				}
				case 4: // boat race
				{
				    BuildRaceType = 0;
				    RaceMode = 9;
				    RaceType = 0;
				}
				case 5: // plane race
				{
				    BuildRaceType = 3;
				    RaceMode = 10;
				    RaceType = 0;
				}
            }
            ShowDialog(playerid, 600);
        }
	    case 600..601:
	    {
	        if(!response) return ShowDialog(playerid, 599);
	        if(!strlen(inputtext)) return ShowDialog(playerid, 601);
	        if(strlen(inputtext) < 1 || strlen(inputtext) > 20) return ShowDialog(playerid, 601);
	        strmid(BuildName, inputtext, 0, strlen(inputtext), sizeof(BuildName));
	        ShowDialog(playerid, 602);
	    }
	    case 602..603:
	    {
	        if(!response) return ShowDialog(playerid, 600);
	        if(!strlen(inputtext)) return ShowDialog(playerid, 603);
	        if(isNumeric(inputtext))
	        {

	            if(!IsValidVehicle(strval(inputtext))) return ShowDialog(playerid, 603);
				new
	                Float: pPos[4]
				;
				GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
				GetPlayerFacingAngle(playerid, pPos[3]);
				BuildModeVID = strval(inputtext);
				BuildCreatedVehicle = (BuildCreatedVehicle == 0x01) ? (DestroyVehicle(BuildVehicle), BuildCreatedVehicle = 0x00) : (DestroyVehicle(BuildVehicle), BuildCreatedVehicle = 0x00);
	            BuildVehicle = CreateVehicle(strval(inputtext), pPos[0], pPos[1], pPos[2], pPos[3], random(126), random(126), (60 * 60));
	            PutPlayerInVehicle(playerid, BuildVehicle, 0);
				BuildCreatedVehicle = 0x01;
				ShowDialog(playerid, 604);
			}
	        else
	        {
	            if(!IsValidVehicle(ReturnVehicleID(inputtext))) return ShowDialog(playerid, 603);
				new
	                Float: pPos[4]
				;
				GetPlayerPos(playerid, pPos[0], pPos[1], pPos[2]);
				GetPlayerFacingAngle(playerid, pPos[3]);
				BuildModeVID = ReturnVehicleID(inputtext);
				BuildCreatedVehicle = (BuildCreatedVehicle == 0x01) ? (DestroyVehicle(BuildVehicle), BuildCreatedVehicle = 0x00) : (DestroyVehicle(BuildVehicle), BuildCreatedVehicle = 0x00);
	            BuildVehicle = CreateVehicle(ReturnVehicleID(inputtext), pPos[0], pPos[1], pPos[2], pPos[3], random(126), random(126), (60 * 60));
	            PutPlayerInVehicle(playerid, BuildVehicle, 0);
				BuildCreatedVehicle = 0x01;
				ShowDialog(playerid, 604);
	        }
	    }
	    case 604:
	    {
	        if(!response) return ShowDialog(playerid, 602);
			SendClientMessage(playerid, GREEN, ">> Jdi na startovní lajnu a stiskni 'Tlačítko Střílet' a to samé udělej i pro druhé vozidlo.");
			SendClientMessage(playerid, GREEN, "   - Až budeš hotov, zobrazí se ti dialog.");
			BuildVehPosCount = 0;
	        BuildTakeVehPos = true;
	    }
	    case 605:
	    {
	        if(!response) return ShowDialog(playerid, 604);
	        SendClientMessage(playerid, GREEN, ">> Vytvářej Checkpointy stisknutím 'Tlačítko Střílet'.");
	        SendClientMessage(playerid, GREEN, "   - Důležité: Zmačkni 'ENTER' až budeš hotov! Bacha, nesmíš ho zmačknout víckrát (Pád hry).");
	        BuildCheckPointCount = 0;
	        BuildTakeCheckpoints = true;
	    }
	    case 606:
	    {
	        if(!response) return ShowDialog(playerid, 606);
	        BuildRace = 0;
	        BuildCheckPointCount = 0;
	        BuildVehPosCount = 0;
	        BuildTakeCheckpoints = false;
	        BuildTakeVehPos = false;
	        BuildCreatedVehicle = (BuildCreatedVehicle == 0x01) ? (DestroyVehicle(BuildVehicle), BuildCreatedVehicle = 0x00) : (DestroyVehicle(BuildVehicle), BuildCreatedVehicle = 0x00);
	    }
	}
	return 0;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	new
 		string[256],
 		rNameFile[256],
   		rFile[256],
     	Float: vPos[4]
	;
	if(newkeys & KEY_FIRE)
	{
	    if(BuildRace == playerid+1)
	    {
		    if(BuildTakeVehPos == true)
		    {
		    	if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, RED, ">> Musíš být v autě");
				GetVehiclePos(GetPlayerVehicleID(playerid), vPos[0], vPos[1], vPos[2]);
				GetVehicleZAngle(GetPlayerVehicleID(playerid), vPos[3]);
				format(rFile, sizeof(rFile), "/rRaceSystem/%s.RRACE", BuildName);
		        dini_Create(rFile);
				dini_IntSet(rFile, "vModel", BuildModeVID);
				dini_IntSet(rFile, "rType", BuildRaceType);
				dini_IntSet(rFile, "RaceMode", RaceMode);
		        format(string, sizeof(string), "vPosX_%d", BuildVehPosCount), dini_FloatSet(rFile, string, vPos[0]);
		        format(string, sizeof(string), "vPosY_%d", BuildVehPosCount), dini_FloatSet(rFile, string, vPos[1]);
		        format(string, sizeof(string), "vPosZ_%d", BuildVehPosCount), dini_FloatSet(rFile, string, vPos[2]);
		        format(string, sizeof(string), "vAngle_%d", BuildVehPosCount), dini_FloatSet(rFile, string, vPos[3]);
		        format(string, sizeof(string), ">> Pozice vozidla '%d' nastavena.", BuildVehPosCount+1);
		        SendClientMessage(playerid, YELLOW, string);
				BuildVehPosCount++;
			}
   			if(BuildVehPosCount >= 2)
		    {
		        BuildVehPosCount = 0;
		        BuildTakeVehPos = false;
		        ShowDialog(playerid, 605);
		    }
			if(BuildTakeCheckpoints == true)
			{
			    if(BuildCheckPointCount > MAX_RACE_CHECKPOINTS_EACH_RACE) return SendClientMessage(playerid, RED, ">> Překročil jsi maximum checkpointu!");
			    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, RED, ">> Musíš být ve vozidle");
				format(rFile, sizeof(rFile), "/rRaceSystem/%s.RRACE", BuildName);
				GetVehiclePos(GetPlayerVehicleID(playerid), vPos[0], vPos[1], vPos[2]);
				format(string, sizeof(string), "CP_%d_PosX", BuildCheckPointCount), dini_FloatSet(rFile, string, vPos[0]);
				format(string, sizeof(string), "CP_%d_PosY", BuildCheckPointCount), dini_FloatSet(rFile, string, vPos[1]);
				format(string, sizeof(string), "CP_%d_PosZ", BuildCheckPointCount), dini_FloatSet(rFile, string, vPos[2]);
    			format(string, sizeof(string), ">> Checkpoint '%d' nastaven!", BuildCheckPointCount+1);
		        SendClientMessage(playerid, YELLOW, string);
				BuildCheckPointCount++;
			}
		}
	}
	if(newkeys & KEY_SECONDARY_ATTACK)
	{
	    if(BuildTakeCheckpoints == true)
	    {
	        ShowDialog(playerid, 606);
			format(rNameFile, sizeof(rNameFile), "/rRaceSystem/RaceNames/RaceNames.txt");
			TotalRaces = dini_Int(rNameFile, "TotalRaces");
			TotalRaces++;
			dini_IntSet(rNameFile, "TotalRaces", TotalRaces);
			format(string, sizeof(string), "Race_%d", TotalRaces-1);
			format(rFile, sizeof(rFile), "/rRaceSystem/%s.RRACE", BuildName);
			dini_Set(rNameFile, string, BuildName);
			dini_IntSet(rFile, "TotalCP", BuildCheckPointCount);
			Loop(x, 5)
			{
				format(string, sizeof(string), "BestRacerTime_%d", x);
				dini_Set(rFile, string, "0");
				format(string, sizeof(string), "BestRacer_%d", x);
				dini_Set(rFile, string, "noone");
			}
	    }
	}
	/*if (PRESSED(KEY_FIRE))
	{
		new
			vehicleid = GetPlayerVehicleID(playerid);
		if (vehicleid)
		{
			AddVehicleComponent(vehicleid, 1010);
		}
	}
	if(newkeys & KEY_FIRE && IsPlayerInAnyVehicle(playerid))
	{
		if(!IsNosVehicle(GetPlayerVehicleID(playerid))) return
		AddVehicleComponent(GetPlayerVehicleID(playerid), 1010);
		PlayerPlaySound(playerid, 1133 ,0, 0, 0);
	}
	if(newkeys & KEY_SUBMISSION && IsPlayerInAnyVehicle(playerid))
    {
	  		if(IsPlayerInAnyVehicle(playerid))
			{
	  			new Float:x, Float:y, Float:z;
				GetVehicleVelocity(GetPlayerVehicleID(playerid), x, y, z);
				SetVehicleVelocity(GetPlayerVehicleID(playerid) ,x ,y ,z+0.3);
			}
    }
	if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	{
	    if(!IsPlayerInRace(playerid))
	    {
			if (newkeys & KEY_FIRE)
			{
			    new Float:vx, Float:vy, Float:vz;
			    GetVehicleVelocity(GetPlayerVehicleID(playerid), vx, vy, vz);

			    if (floatabs(vx) < 3 && floatabs(vy) < 3 && floatabs(vz) < 3)
			    {
			    	SetVehicleVelocity(GetPlayerVehicleID(playerid), vx * SpeedBoostMultiplier[playerid], vy * SpeedBoostMultiplier[playerid], vz * SpeedBoostMultiplier[playerid]);
			    }
			    return 1;
			}
		}
	}*/
	/*if(newkeys == KEY_NO)
	{
		if(!IsPlayerInRace(playerid))
		{
            if(IsPlayerInAnyVehicle(playerid))
			{
                    new
        				vehicleid = GetPlayerVehicleID(playerid)
    				;
				    if(vehicleid)
					{
				        new
				            Float: x,
				            Float: y,
				            Float: z,
				            Float: a
				        ;
				        GetVehicleZAngle(vehicleid, a);
				        GetVehiclePos(vehicleid, x, y, z);
				        switch(IsTransFormed[playerid]++)
						{
				            case 0: (_: a) = CreateVehicle(infernus, x, y, z, a, -1, -1, -1);
				            case 1: (_: a) = CreateVehicle(rancher, x, y, z, a, -1, -1, -1);
				            case 2: (_: a) = CreateVehicle(roadtrain, x, y, z, a, -1, -1, -1);
				            case 3: (_: a) = CreateVehicle(linerunner, x, y, z, a, -1, -1, -1);
				            case 4: (_: a) = CreateVehicle(bandito, x, y, z, a, -1, -1, -1);
				            case 5: (_: a) = CreateVehicle(hydra, x, y, z, a, -1, -1, -1);
				            case 6: (_: a) = CreateVehicle(hotringracer, x, y, z, a, -1, -1, -1);
				            case 7: (_: a) = CreateVehicle(hotknife, x, y, z, a, -1, -1, -1);
				            case 8: (_: a) = CreateVehicle(monster, x, y, z, a, -1, -1, -1);
				            case 9: (_: a) = CreateVehicle(turismo, x, y, z, a, -1, -1, -1);
				            case 10: (_: a) = CreateVehicle(sanchez, x, y, z, a, -1, -1, -1);
				            case 11: (_: a) = CreateVehicle(nrg500, x, y, z, a, -1, -1, -1);
				            case 12: (_: a) = CreateVehicle(mesa, x, y, z, a, -1, -1, -1);
				            case 13: (_: a) = CreateVehicle(supergt, x, y, z, a, -1, -1, -1);
				            case 14: (_: a) = CreateVehicle(banshee, x, y, z, a, -1, -1, -1);
				            case 15: (_: a) = CreateVehicle(caddy, x, y, z, a, -1, -1, -1);
				            case 16: (_: a) = CreateVehicle(quad, x, y, z, a, -1, -1, -1);
				            case 17: (_: a) = CreateVehicle(comet, x, y, z, a, -1, -1, -1);
				            case 18: (_: a) = CreateVehicle(bullet, x, y, z, a, -1, -1, -1);
            				default:
							{
                				(_: a) = CreateVehicle(hotringracer, x, y, z, a, -1, -1, -1);
				                IsTransFormed[playerid] = 0;
							}
			        	}
				        GetVehicleVelocity(vehicleid, x, y, z);
				        TransForm = SetTimerEx("PutPlayerInTransVehicle", 0, false, "iifff", playerid, _: a, x, y, z);
				        SendClientMessage(playerid, GREEN, "Vehicle Transformed!");
				        DestroyVehicle(vehicleid);
		   		}
			}
		}
		else if(IsPlayerInRace(playerid)) return SendClientMessage(playerid, RED, "ERROR: you can't transform your vehicle when in racing!");
    }*/
	return 1;
}
forward PutPlayerInTransVehicle(playerid, vehicleid, Float: x, Float: y, Float: z);
public PutPlayerInTransVehicle(playerid, vehicleid, Float: x, Float: y, Float: z)
{
    PutPlayerInVehicle(playerid, vehicleid, 0);
    SetVehicleVelocity(vehicleid, x, y, z);
}
function LoadRaceNames()
{
	new
	    rNameFile[64],
	    string[64]
	;
	format(rNameFile, sizeof(rNameFile), "/rRaceSystem/RaceNames/RaceNames.txt");
	TotalRaces = dini_Int(rNameFile, "TotalRaces");
	Loop(x, TotalRaces)
	{
	    format(string, sizeof(string), "Race_%d", x), strmid(RaceNames[x], dini_Get(rNameFile, string), 0, 20, sizeof(RaceNames));
	    printf(">> Nactene zavody: %s", RaceNames[x]);
	}
	return 1;
}

function LoadAutoRace(rName[])
{
	new
		rFile[256],
		string[256]
	;
	format(rFile, sizeof(rFile), "/rRaceSystem/%s.RRACE", rName);
	if(!dini_Exists(rFile)) return printf("Zavod \"%s\" neexistuje!", rName);
	strmid(RaceName, rName, 0, strlen(rName), sizeof(RaceName));
	RaceVehicle = dini_Int(rFile, "vModel");
	RaceType = dini_Int(rFile, "rType");
	TotalCP = dini_Int(rFile, "TotalCP");
	RaceMode = dini_Int(rFile, "RaceMode");

	#if DEBUG_RACE == 1
	printf("Vozidlo: %d", RaceVehicle);
	printf("Typ_Zavodu: %d", RaceType);
	printf("Mod_Zavodu: %d", RaceMode);
	printf("Celkem_Checkpointu: %d", TotalCP);
	#endif

	Loop(x, 2)
	{
		format(string, sizeof(string), "vPosX_%d", x), RaceVehCoords[x][0] = dini_Float(rFile, string);
		format(string, sizeof(string), "vPosY_%d", x), RaceVehCoords[x][1] = dini_Float(rFile, string);
		format(string, sizeof(string), "vPosZ_%d", x), RaceVehCoords[x][2] = dini_Float(rFile, string);
		format(string, sizeof(string), "vAngle_%d", x), RaceVehCoords[x][3] = dini_Float(rFile, string);
		#if DEBUG_RACE == 1
		printf("VehiclePos %d: %f, %f, %f, %f", x, RaceVehCoords[x][0], RaceVehCoords[x][1], RaceVehCoords[x][2], RaceVehCoords[x][3]);
		#endif
	}
	Loop(x, TotalCP)
	{
 		format(string, sizeof(string), "CP_%d_PosX", x), CPCoords[x][0] = dini_Float(rFile, string);
 		format(string, sizeof(string), "CP_%d_PosY", x), CPCoords[x][1] = dini_Float(rFile, string);
 		format(string, sizeof(string), "CP_%d_PosZ", x), CPCoords[x][2] = dini_Float(rFile, string);
 		#if DEBUG_RACE == 1
 		printf("RaceCheckPoint %d: %f, %f, %f", x, CPCoords[x][0], CPCoords[x][1], CPCoords[x][2]);
 		#endif
	}
	Position = 0;
	FinishCount = 0;
	JoinCount = 0;
	Loop(x, 2) PlayersCount[x] = 0;
	CountAmount = COUNT_DOWN_TILL_RACE_START;
	RaceTime = MAX_RACE_TIME;
	RaceBusy = 0x01;
	CountTimer = SetTimer("CountTillRace", 999, 1);
	TimeProgress = 0;
	return 1;
}

function LoadRace(playerid, rName[])
{
	new
		rFile[256],
		string[256]
	;
	format(rFile, sizeof(rFile), "/rRaceSystem/%s.RRACE", rName);
	if(!dini_Exists(rFile)) return SendClientMessage(playerid, RED, "<!> Závod neexistuje!"), printf("Zavod \"%s\" neexistuje!", rName);
	strmid(RaceName, rName, 0, strlen(rName), sizeof(RaceName));
	RaceVehicle = dini_Int(rFile, "vModel");
	RaceType = dini_Int(rFile, "rType");
	RaceMode = dini_Int(rFile, "RaceMode");
	TotalCP = dini_Int(rFile, "TotalCP");
	printf("Vozidlo: %d", RaceVehicle);
	#if DEBUG_RACE == 1
	printf("Typ_Zavodu: %d", RaceType);
	printf("Mod_Zavodu: %d", RaceMode);
	printf("Celkem_Checkpointu: %d", TotalCP);
	#endif

	Loop(x, 2)
	{
		format(string, sizeof(string), "vPosX_%d", x), RaceVehCoords[x][0] = dini_Float(rFile, string);
		format(string, sizeof(string), "vPosY_%d", x), RaceVehCoords[x][1] = dini_Float(rFile, string);
		format(string, sizeof(string), "vPosZ_%d", x), RaceVehCoords[x][2] = dini_Float(rFile, string);
		format(string, sizeof(string), "vAngle_%d", x), RaceVehCoords[x][3] = dini_Float(rFile, string);
		#if DEBUG_RACE == 1
		printf("VehiclePos %d: %f, %f, %f, %f", x, RaceVehCoords[x][0], RaceVehCoords[x][1], RaceVehCoords[x][2], RaceVehCoords[x][3]);
		#endif
	}
	Loop(x, TotalCP)
	{
 		format(string, sizeof(string), "CP_%d_PosX", x), CPCoords[x][0] = dini_Float(rFile, string);
 		format(string, sizeof(string), "CP_%d_PosY", x), CPCoords[x][1] = dini_Float(rFile, string);
 		format(string, sizeof(string), "CP_%d_PosZ", x), CPCoords[x][2] = dini_Float(rFile, string);
 		#if DEBUG_RACE == 1
 		printf("RaceCheckPoint %d: %f, %f, %f", x, CPCoords[x][0], CPCoords[x][1], CPCoords[x][2]);
 		#endif
	}
	Position = 0;
	FinishCount = 0;
	JoinCount = 0;
	Loop(x, 2) PlayersCount[x] = 0;
	Joined[playerid] = true;
	CountAmount = COUNT_DOWN_TILL_RACE_START;
	RaceTime = MAX_RACE_TIME;
	RaceBusy = 0x01;
	TimeProgress = 0;
	SetupRaceForPlayer(playerid);
	CountTimer = SetTimer("CountTillRace", 999, 1);
	return 1;
}
stock isNumeric(const string[]) {
	new length=strlen(string);
	if (length==0) return false;
	for (new i = 0; i < length; i++) {
		if (
		(string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+') // Not a number,'+' or '-'
		|| (string[i]=='-' && i!=0)                                             // A '-' but not at first.
		|| (string[i]=='+' && i!=0)                                             // A '+' but not at first.
		) return false;
	}
	if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
	return true;
}
function SetCP(playerid, PrevCP, NextCP, MaxCP, Type)
{
	if(Type == 0)
	{
		if(NextCP == MaxCP) SetPlayerRaceCheckpoint(playerid, 1, CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], RACE_CHECKPOINT_SIZE);
			else SetPlayerRaceCheckpoint(playerid, 0, CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], RACE_CHECKPOINT_SIZE);
	}
	else if(Type == 3)
	{
		if(NextCP == MaxCP) SetPlayerRaceCheckpoint(playerid, 4, CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], RACE_CHECKPOINT_SIZE);
			else SetPlayerRaceCheckpoint(playerid, 3, CPCoords[PrevCP][0], CPCoords[PrevCP][1], CPCoords[PrevCP][2], CPCoords[NextCP][0], CPCoords[NextCP][1], CPCoords[NextCP][2], RACE_CHECKPOINT_SIZE);
	}
	return 1;
}

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;
	new rFile[256];
    format(rFile, sizeof(rFile), "/rRaceSystem/%s.RRACE", RaceName);
	if(!dini_Exists(rFile)) return printf("Závod \"%s\" neexistuje!", RaceName);
	RaceMode = dini_Int(rFile, "RaceMode");
	switch(Index)
	{
		case 0:
		{
		    if(PlayersCount[0] == 1)
		    {
			        if(RaceMode == 5) // bike race
			        {
				        new carcount = 0;
		       			new id = random(carcount+6); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandBikes[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 6) // car race
			        {
				        new carcount = 0;
		       			new id = random(carcount+24); // 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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 7) // bike and car race
			        {
				        new carcount = 0;
		       			new id = random(carcount+27); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(BikesAndCars[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 8) // monster race
					{
						new carcount = 0;
		       			new id = random(carcount+2); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandMonsters[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 9) // boat race
					{
						new carcount = 0;
		       			new id = random(carcount+8); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandBoats[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 10)
					{
						new carcount = 0;
		       			new id = random(carcount+3); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandPlanes[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						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)
 		    {
	 		        if(RaceMode == 5) // bike race
	 		        {
		        		new carcount = 0;
				    	new id = random(carcount+6); // should return number
						RaceVehCoords[1][0] -= (6 * floatsin(-RaceVehCoords[1][3], degrees));
				 		RaceVehCoords[1][1] -= (6 * floatcos(-RaceVehCoords[1][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandBikes[id][carcount], RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2, RaceVehCoords[0][3], random(126), random(126), (60 * 60));
						SetPlayerPos(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
						SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
					}
					if(RaceMode == 6) // car race
	 		        {
		        		new carcount = 0;
				    	new id = random(carcount+24); // 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[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2, RaceVehCoords[0][3], random(126), random(126), (60 * 60));
						SetPlayerPos(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
						SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
					}
					if(RaceMode == 7) // bike and car race
	 		        {
		        		new carcount = 0;
				    	new id = random(carcount+27); // should return number
						RaceVehCoords[1][0] -= (6 * floatsin(-RaceVehCoords[1][3], degrees));
				 		RaceVehCoords[1][1] -= (6 * floatcos(-RaceVehCoords[1][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(BikesAndCars[id][carcount], RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2, RaceVehCoords[0][3], random(126), random(126), (60 * 60));
						SetPlayerPos(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
						SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
					}
					if(RaceMode == 8) // monster race
					{
						new carcount = 0;
		       			new id = random(carcount+2); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandMonsters[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 9) // boat race
					{
						new carcount = 0;
		       			new id = random(carcount+8); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandBoats[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 10)
					{
						new carcount = 0;
		       			new id = random(carcount+3); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandPlanes[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
			}
 		}
	}
	switch(Index)
	{
	    case 0:
		{
			if(PlayersCount[0] != 1)
			{
				    if(RaceMode == 5) // bike race
				    {
		    			new carcount = 0;
				    	new id = random(carcount+6); // should return number
						CreatedRaceVeh[playerid] = CreateVehicle(RandBikes[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					    PlayersCount[0] = 1;
					}
					if(RaceMode == 6) // car race
				    {
		    			new carcount = 0;
				    	new id = random(carcount+24); // 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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					    PlayersCount[0] = 1;
					}
					if(RaceMode == 7) // bike and car race
				    {
		    			new carcount = 0;
				    	new id = random(carcount+27); // should return number
						CreatedRaceVeh[playerid] = CreateVehicle(BikesAndCars[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					    PlayersCount[0] = 1;
					}
					if(RaceMode == 8) // monster race
					{
						new carcount = 0;
		       			new id = random(carcount+2); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandMonsters[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 9) // boat race
					{
						new carcount = 0;
		       			new id = random(carcount+8); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandBoats[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 10)
					{
						new carcount = 0;
		       			new id = random(carcount+3); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandPlanes[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						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)
			{
				    if(RaceMode == 5) // bike race
				    {
		    			new carcount = 0;
				    	new id = random(carcount+6); // should return number
						CreatedRaceVeh[playerid] = CreateVehicle(RandBikes[id][carcount], RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2, RaceVehCoords[0][3], random(126), random(126), (60 * 60));
						SetPlayerPos(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
						SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
						PlayersCount[1] = 1;
					}
					if(RaceMode == 6) // car race
				    {
		    			new carcount = 0;
				    	new id = random(carcount+24); // 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[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
						SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
						PlayersCount[1] = 1;
					}
					if(RaceMode == 7) // bike and car race
				    {
		    			new carcount = 0;
				    	new id = random(carcount+27); // should return number
						CreatedRaceVeh[playerid] = CreateVehicle(BikesAndCars[id][carcount], RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2]+2, RaceVehCoords[0][3], random(126), random(126), (60 * 60));
						SetPlayerPos(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2]+2);
						SetPlayerFacingAngle(playerid, RaceVehCoords[1][3]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[1][0], RaceVehCoords[1][1], RaceVehCoords[1][2], RaceVehCoords[1][3], 20);
						PlayersCount[1] = 1;
					}
					if(RaceMode == 8) // monster race
					{
						new carcount = 0;
		       			new id = random(carcount+2); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandMonsters[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 9) // boat race
					{
						new carcount = 0;
		       			new id = random(carcount+8); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandBoats[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
					if(RaceMode == 10)
					{
						new carcount = 0;
		       			new id = random(carcount+3); // should return number
						RaceVehCoords[0][0] -= (6 * floatsin(-RaceVehCoords[0][3], degrees));
				 		RaceVehCoords[0][1] -= (6 * floatcos(-RaceVehCoords[0][3], degrees));
						CreatedRaceVeh[playerid] = CreateVehicle(RandPlanes[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]);
						#if defined RACE_IN_OTHER_WORLD
						SetVehicleVirtualWorld(CreatedRaceVeh[playerid], 10);
						#endif
						PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);
						Camera(playerid, RaceVehCoords[0][0], RaceVehCoords[0][1], RaceVehCoords[0][2], RaceVehCoords[0][3], 20);
					}
			}
   		}
	}
	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), "Zavod: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~Cas: ~w~%s~n~~y~Pozice: ~w~1/1~n~ ", RaceName, CPProgess[playerid], TotalCP, TimeConvert(RaceTime));
		else format(string, sizeof(string), "Zavod: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~Cas: ~w~%s~n~~y~Pozice: ~w~%d/%d~n~ ", RaceName, CPProgess[playerid], TotalCP, TimeConvert(RaceTime), RacePosition[playerid], JoinCount);
	TextDrawSetString(RaceInfo[playerid], string);
	TextDrawShowForPlayer(playerid, RaceInfo[playerid]);
	JoinCount++;
	return 1;
}

function CountTillRace()
{
	switch(CountAmount)
	{
 		case 0:
	    {
			ForEach(i, MAX_PLAYERS)
			{
			    if(Joined[i] == false)
			    {
			        new
			            string[128]
					;
					format(string, sizeof(string), ">> Nemůžeš se připojit do \"%s\". Čas na připojení už vypršel!", RaceName);
					SendClientMessage(i, RED, string);
				}
			}
			StartRace();
	    }
	    case 1..5:
	    {
	        new
	            string[10]
			;
			format(string, sizeof(string), "~b~%d", CountAmount);
			ForEach(i, MAX_PLAYERS)
			{
			    if(Joined[i] == true)
			    {
			    	GameTextForPlayer(i, string, 999, 5);
			    	PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
			    }
			}
	    }
	    case 60, 50, 40, 30, 20, 10:
	    {
	        new
	            string[128]
			;
			format(string, sizeof(string), ">> \"%d\" sekund do \"%s\" začátku! Použij \"/race\" pro připojení.", CountAmount, RaceName);
			SendClientMessageToAll(GREEN, string);
	    }
	}
	return CountAmount--;
}

function StartRace()
{
	ForEach(i, MAX_PLAYERS)
	{
	    if(Joined[i] == true)
	    {
	        TogglePlayerControllable(i, true);
	        PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  			GameTextForPlayer(i, "~g~Jed jed jed", 2000, 5);
			SetCameraBehindPlayer(i);
	    }
	}
	rCounter = SetTimer("RaceCounter", 900, 1);
	RaceTick = GetTickCount();
	RaceStarted = 1;
	KillTimer(CountTimer);
	return 1;
}

function StopRace()
{
	KillTimer(rCounter);
	RaceStarted = 0;
	RaceTick = 0;
	RaceBusy = 0x00;
	JoinCount = 0;
	FinishCount = 0;
    TimeProgress = 0;

	ForEach(i, MAX_PLAYERS)
	{
	    if(Joined[i] == true)
	    {
	    	DisablePlayerRaceCheckpoint(i);
	    	DestroyVehicle(CreatedRaceVeh[i]);
	    	Joined[i] = false;
	    	SpawnPlayer(i);
	    	SetCameraBehindPlayer(i);
			TextDrawHideForPlayer(i, RaceInfo[i]);
			CPProgess[i] = 0;
			KillTimer(InfoTimer[i]);
		}
	}
	SendClientMessageToAll(YELLOW, ">> Čas závodu skončil!");
	if(AutomaticRace == true) LoadRaceNames(), LoadAutoRace(RaceNames[random(TotalRaces)]);
	return 1;
}

function RaceCounter()
{
	if(RaceStarted == 1)
	{
		RaceTime--;
		if(JoinCount <= 0)
		{
			StopRace();
			SendClientMessageToAll(RED, ">> Závod skončil!");
		}
	}
	if(RaceTime <= 0)
	{
	    StopRace();
	}
	return 1;
}

function TextInfo(playerid)
{
	new
	    string[128]
	;
	if(JoinCount == 1) format(string, sizeof(string), "Zavod: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~ZCas: ~w~%s~n~~y~Pozice: ~w~1/1~n~", RaceName, CPProgess[playerid], TotalCP, TimeConvert(RaceTime));
		else format(string, sizeof(string), "Zavod: ~w~%s~n~~p~~h~Checkpoint: ~w~%d/%d~n~~b~~h~Cas: ~w~%s~n~~y~Pozice: ~w~%d/%d~n~", RaceName, CPProgess[playerid], TotalCP, TimeConvert(RaceTime), RacePosition[playerid], JoinCount);
	TextDrawSetString(RaceInfo[playerid], string);
	TextDrawShowForPlayer(playerid, RaceInfo[playerid]);
}

function Camera(playerid, Float:X, Float:Y, Float:Z, Float:A, Mul)
{
	SetPlayerCameraLookAt(playerid, X, Y, Z);
	SetPlayerCameraPos(playerid, X + (Mul * floatsin(-A, degrees)), Y + (Mul * floatcos(-A, degrees)), Z+6);
}
/*function IsPlayerInRace(playerid)
{
	if(Joined[playerid] == true) return true;
	    else return false;
}*/
function ShowDialog(playerid, dialogid)
{
	switch(dialogid)
	{
		case 500: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, CreateCaption("Vytvořit závod"), "\
		Motorky\nAuta\nAuta a Motorky\nMonster Trucky\nLodě\nLetadla", "Další", "Zavřít");

	    case 600: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, CreateCaption("Vytvořit závod (Část 1/4)"), "\
		Část 1:\n\
		********\n\
 		Vítejte v stavbě závodu.\n\
		Dříve, než začnete budovat závod, zadejte název trati.\n\n\
		>> Zadejte název trati níže a zmačkněte 'Další' pro postup.", "Další", "Zpět");

	    case 601: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, CreateCaption("Vytvořit závod (Část 1/4)"), "\
	    Chyba: Moc dlouhé nebo krátké! (min. 1 - max. 20)\n\n\n\
		Část 1:\n\
		********\n\
 	    Vítejte v stavbě závodu.\n\
		Dříve, než začnete budovat závod, zadejte název trati.\n\n\
		>> Zadejte název trati níže a zmačkněte 'Další' pro postup.", "Další", "Zpět");


		case 602: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, CreateCaption("Vytvořit závod (Část 2/4)"), "\
		Část 2:\n\
		********\n\
		Zadejte ID nebo název vozidla, s čím se bude závodit.\n\n\
		>> Zadejte ID nebo název vozidla a zmačněte 'Další' pro pokračování. 'Zpět' pokud chcete něco změnit.", "Další", "Zpět");

		case 603: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, CreateCaption("Vytvořit závod (Část 2/4)"), "\
		Chyba: Špatný název nebo ID\n\n\n\
		Část 2:\n\
		********\n\
		Zadejte ID nebo název vozidla, s čím se bude závodit.\n\n\
		>> Zadejte ID nebo název vozidla a zmačněte 'Další' pro pokračování. 'Zpět' pokud chcete něco změnit.", "Další", "Zpět");

		case 604: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, CreateCaption("Vytvořit závod (Část 3/4)"),
		"\
		Část 3:\n\
		********\n\
		Už je skoro hotovo! Jdi na místo, kde budou začínat 1. a 2. auta.\n\
		Poznámka: Až kliknete 'OK' budete volní. Použijte 'Tlačítko Střelba' pro nastavení pozice.\n\
		Poznámka: Až zadáte první souřadnice, objeví se znovu dialog.\n\n\
		>> Zmáčkmi 'OK' pro pokračování. 'Zpět' pokud chcete něco změnit.", "OK", "Zpět");

		case 605: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, CreateCaption("Vytvořit závod (Část 4/4)"),
		"\
		Část 4:\n\
		********\n\
		Vítejte v poslední části. V této části uděláte Checkpointy, kliknutím na 'OK' je budete moc vytvářet.\n\
		Checkpoint vytvoříš 'Tlačítko Střelba'. Automaticky se sami uloží.\n\
		Až stiskneš 'ENTER', dokončí stavbu Checkpointu. Závod bude skoro dostupný!\n\n\
		>> Zmáčkmi 'OK' pro pokračování. 'Zpět' pokud chcete něco změnit.", "OK", "Zpět");

		case 606: ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, CreateCaption("Vytvořit"),
		"\
		Nyní jste vytvořil závod a je je nyní dostupný.\n\n\
		>> Zmačkni 'Dokončit' pro dokončení", "Dokončit", "");
	}
	return 1;
}

CreateCaption(arguments[])
{
	new
	    string[128 char]
	;
	format(string, sizeof(string), "System závodů - %s", arguments);
	return string;
}

stock IsValidVehicle(vehicleid)
{
	if(vehicleid < 400 || vehicleid > 611) return false;
	    else return true;
}

ReturnVehicleID(vName[])
{
	Loop(x, 211)
	{
	    if(strfind(vNames[x], vName, true) != -1)
		return x + 400;
	}
	return -1;
}

TimeConvert(seconds)
{
	new tmp[16];
 	new minutes = floatround(seconds/60);
  	seconds -= minutes*60;
   	format(tmp, sizeof(tmp), "%d:%02d", minutes, seconds);
   	return tmp;
}
/*IsNosVehicle(vehicleid)
{
	#define NO_NOS_VEHICLES 52

	new InvalidNosVehicles[NO_NOS_VEHICLES] =
	{
		581,523,462,521,463,522,461,448,468,586,417,425,469,487,512,520,563,593,
		509,481,510,472,473,493,520,595,484,430,453,432,476,497,513,533,577,
		452,446,447,454,590,569,537,538,570,449,519,460,488,511,519,548,592
	};

	for(new i = 0; i < NO_NOS_VEHICLES; i++)
	{
		if(GetVehicleModel(vehicleid) == InvalidNosVehicles[i])
		{
			return false;
		}
	}
	return true;
}*/
// -----------------------------------------------------------------------------
a include nRace.inc

#define function%0(%1) \
	forward%0(%1); public%0(%1)

new bool: Joined[MAX_PLAYERS];

function IsPlayerInRace(playerid)
{
	if(Joined[playerid] == true) return true;
	    else return false;
}
A je tam ji funkce autoracestart, ale když ji zapnu jako Rcon, tam se mi závody nenačítají a píšou mi do logu : 

[17:46:25] | Zavod|
[17:46:25] +-------Nacten----------+

[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] >> Nactene zavody: 
[17:46:25] Závod "" neexistuje!
Takže nechápu v čem je problém, protože soubory nahrané pro závod mám ve ScriptFiles. Můžete mi poradit?
Link to comment
Share on other sites

4 odpovědí na tuto otázku

Recommended Posts

  • 0
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam eleifend lobortis sapien in sollicitudin. Proin convallis ornare leo a lacinia. Nunc venenatis tristique augue, ornare sodales nunc pellentesque eget. Nunc laoreet, velit ac ultrices bibendum, urna erat lacinia lorem, vel venenatis dui nulla eget enim. Integer et semper velit. Donec id tortor vel mi placerat tristique. Fusce mollis pulvinar facilisis. Ut facilisis mauris a suscipit egestas.
Vivamus eget dapibus neque. In non lectus at turpis tempus tempus. Vestibulum condimentum ultricies dignissim. Nam ut nisl quis diam vulputate tempor quis a leo. Ut eleifend urna erat, a sagittis quam faucibus vitae. Quisque neque nunc, varius quis cursus vel, sollicitudin ut erat. Sed pretium enim porta nisl fringilla suscipit. Phasellus varius sapien urna, vitae mollis velit gravida id. Proin convallis orci a urna pharetra consectetur. Proin sollicitudin, lacus et facilisis elementum, elit metus convallis dolor, sit amet bibendum sem justo non lacus. Phasellus id urna sit amet est viverra consectetur sit amet non lorem.
Nullam luctus purus quam, at sollicitudin ante sagittis non. Donec vehicula leo velit, nec tincidunt nulla gravida id. Vestibulum pulvinar ipsum sed lacus semper, eget bibendum turpis convallis. Integer fermentum pharetra mi, eu imperdiet neque faucibus ac. Praesent semper neque in dictum tempus. Cras convallis mi et velit ullamcorper, quis ullamcorper lorem hendrerit. Morbi non massa ut sem malesuada convallis. Sed libero est, luctus sed vehicula eu, interdum non eros. Quisque elementum arcu non euismod pharetra. Quisque in accumsan ipsum.
Cras a porta neque, placerat pellentesque sapien. Mauris sit amet lacinia neque. Phasellus pharetra massa ut ligula rutrum, eget cursus neque luctus. Curabitur risus libero, elementum quis mauris quis, tempus interdum nibh. In vitae varius lectus, sit amet dictum arcu. Morbi ultrices suscipit est ac vulputate. Suspendisse sodales ut nibh quis hendrerit.
Suspendisse id blandit felis. Aenean molestie lobortis nisi, id aliquet nisl cursus a. Duis malesuada odio ut leo cursus laoreet. Suspendisse potenti. Nulla sed vestibulum metus, eu dapibus sapien. Donec vulputate purus at urna molestie, quis posuere nisi consequat. Nunc tortor est, volutpat ac ultricies at, tempor sed erat. Donec consequat pulvinar purus, id pretium ante laoreet eu.
Vestibulum sed purus nulla. Praesent eget nibh eget urna rhoncus vulputate. Cras turpis risus, lobortis ornare dolor in, sagittis ultrices libero. Morbi et odio id augue dapibus mattis vel aliquam enim. Donec congue, orci in pretium faucibus, lectus nunc ultricies tortor, ac aliquam metus dolor non arcu. Vivamus venenatis nibh nec ligula tempus congue. Praesent rutrum consequat ultrices. Nam at mauris tempus, elementum lacus auctor, convallis ligula. Fusce mollis vestibulum libero vel semper. Donec eget nunc fringilla, blandit justo id, auctor neque. Nam id sem interdum, pharetra felis ac, interdum ipsum.
In hac habitasse platea dictumst. In turpis purus, semper in nunc eget, tincidunt egestas metus. Quisque volutpat diam libero, a mollis nisi dapibus non. Mauris congue lectus vel tellus fermentum, eget mollis turpis porttitor. Proin feugiat et metus eu tincidunt. Nunc eleifend, tellus ut condimentum tincidunt, erat leo accumsan dui, vel dignissim urna lectus quis leo. Fusce orci sem, ullamcorper eget neque eget, mattis congue odio. Aenean suscipit turpis ac molestie congue. Phasellus id semper velit, a aliquet enim. Morbi imperdiet mauris id lorem dictum sollicitudin. Cras sed lacus risus. Sed pharetra semper nisi, vitae rhoncus mauris luctus ut. Aenean suscipit justo id tempor pharetra. Aliquam erat volutpat. Donec eu accumsan dolor. Aenean tempus dolor neque, sed gravida urna lobortis non.
Ut condimentum blandit turpis, sed porttitor lorem cursus quis. Donec neque augue, luctus in aliquet et, laoreet ac felis. Ut quis ante aliquet, accumsan arcu eu, commodo magna. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer rhoncus felis eget justo volutpat ultricies. Cras ullamcorper non mauris tincidunt varius. Aenean sit amet venenatis nisi. Donec eget ullamcorper orci. Aenean dui erat, euismod eget accumsan eu, feugiat eu tellus.
Proin faucibus, lectus a convallis gravida, nisi nisl mollis nibh, ac semper massa diam malesuada elit. Donec vel consequat turpis. Aenean pulvinar neque tortor, eget luctus ante pretium at. Nam et massa varius libero elementum rutrum. Etiam vestibulum dignissim ligula in facilisis. Praesent nec lobortis nunc. Suspendisse potenti. Aenean auctor lacus vitae nisi pharetra, eget sollicitudin lectus posuere. Duis sit amet massa placerat, posuere metus ut, sodales dui. Pellentesque varius urna molestie purus faucibus, et sagittis felis aliquet. Duis varius ipsum tellus, id malesuada lacus posuere mattis. Mauris scelerisque tincidunt eros, et auctor diam bibendum non. Cras ut metus varius, convallis arcu quis, placerat risus. Praesent congue euismod sodales. Ut sit amet justo vulputate, facilisis dui id, sodales felis.
Fusce condimentum, justo eget consequat vestibulum, magna leo fringilla turpis, sed viverra enim nisi vestibulum est. Phasellus aliquet dapibus nibh, nec gravida nunc pulvinar in. Proin feugiat tristique urna, sit amet scelerisque erat pellentesque at. Sed viverra feugiat metus nec mollis. Curabitur ornare semper euismod. Nullam luctus a nibh sed tincidunt. Quisque erat sapien, tincidunt in eleifend ac, faucibus et lectus. Aenean quis condimentum lacus. Donec feugiat elit convallis sem aliquet, quis gravida risus ullamcorper. Suspendisse dignissim mattis dolor, eget mollis turpis. Maecenas imperdiet, ante quis consectetur varius, mauris est malesuada massa, vitae tempor mi sapien rutrum nunc. Praesent fermentum sit amet enim nec semper.
Mauris accumsan augue leo, ut aliquet mauris luctus in. Nunc vulputate lorem a odio dapibus, vitae tincidunt ligula commodo. Sed imperdiet elit tincidunt sapien eleifend, sed bibendum nulla faucibus. Sed volutpat et odio nec adipiscing. Nulla scelerisque lectus diam, nec molestie est feugiat quis. Quisque vehicula ligula sed dui porttitor, commodo consectetur lacus egestas. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur in sem orci. Ut rutrum nunc urna, eget rhoncus est luctus quis. Nullam quis odio placerat, sollicitudin dolor in, imperdiet nibh. Sed dictum congue nunc, id ultricies erat posuere in. Quisque euismod, mauris vel feugiat ornare, erat elit ultrices velit, porttitor convallis turpis nunc non erat. Duis volutpat, tellus et laoreet faucibus, arcu tortor sodales nulla, ac ullamcorper ligula massa eu augue.
Nunc et mattis ante, sit amet pulvinar dui. Nunc nec leo nisl. Integer ac urna quam. Donec eleifend, eros eu facilisis molestie, enim justo ornare urna, a pharetra diam enim sed est. Cras nibh arcu, varius a elit quis, viverra volutpat ligula. Donec sagittis ullamcorper magna ac eleifend. Nulla dignissim mi eu nisi aliquam, at venenatis nisl auctor. Praesent quis eleifend neque. Suspendisse lacinia nisi eget neque lacinia, eu tempor purus convallis. Donec at elit vitae nulla ultricies lobortis. Morbi ultrices, leo eu auctor auctor, ligula erat sodales quam, vitae lacinia tortor dolor a ante. In iaculis sapien ut elit tincidunt, quis ullamcorper velit adipiscing. Sed metus enim, dignissim fringilla pulvinar sed, eleifend sit amet mauris. Phasellus nibh dolor, blandit sed erat sit amet, mollis bibendum velit.
Maecenas malesuada urna at quam porttitor, eget ornare lacus vulputate. Maecenas auctor molestie lectus at volutpat. Nam mollis massa eget lacus sagittis, vel rhoncus nibh consectetur. Aliquam ut tortor vel lacus euismod venenatis at imperdiet odio. Aenean sed dolor nisl. Nullam consectetur diam a interdum tincidunt. Quisque egestas bibendum ipsum eu facilisis. Curabitur et suscipit urna. In porta ipsum orci. Praesent lobortis eros eu lectus faucibus, sit amet vulputate urna euismod. Curabitur sagittis odio eros, ut blandit quam tincidunt eget. Suspendisse potenti. Nulla sodales enim ac fringilla placerat. Nullam vulputate turpis vitae est hendrerit semper vitae sit amet turpis. Proin a massa eget nunc tincidunt tristique.
Integer faucibus magna a mi vehicula mollis. Suspendisse dignissim, risus in ultrices pretium, tortor mauris pretium odio, a sodales leo ligula eget nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum volutpat nec lorem vel pretium. Donec laoreet ipsum pharetra malesuada imperdiet. Sed facilisis, dolor a venenatis rhoncus, enim elit iaculis nisl, nec elementum arcu enim at dui. Quisque convallis, felis vel pulvinar dapibus, quam urna sodales leo, quis mollis orci ante ac lectus. Phasellus nec ante eget nisl cursus suscipit eu ac mauris. Mauris pulvinar non massa id aliquam.
Donec ac est accumsan, pretium felis sed, ullamcorper nibh. Donec pretium interdum justo, auctor vulputate tortor tempus et. Donec venenatis, lectus eget malesuada condimentum, diam nisl hendrerit nisi, at mattis purus dolor ac sem. In egestas, neque vel bibendum suscipit, magna massa pellentesque est, et laoreet sapien diam id lectus. Cras gravida vulputate velit eu aliquet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec tempor quam quis elit commodo, sed semper ipsum consectetur. Phasellus vehicula ultricies lorem ultricies cursus. Donec quis orci dictum, auctor urna nec, malesuada augue. Donec in tortor ornare, facilisis leo in, dignissim felis.
Donec placerat tristique lacus eget aliquam. Vestibulum ornare augue et varius porttitor. Duis condimentum hendrerit dignissim. Nulla id diam ac nulla feugiat placerat id eu mauris. In laoreet condimentum mauris at pretium. Ut id sapien et est blandit euismod. Duis posuere mattis orci, eu eleifend eros varius in. Sed suscipit lectus sit amet gravida vehicula. Cras eleifend eget odio nec lacinia. Pellentesque ultricies et tellus at ornare. Nam sed vulputate mauris. Aenean vitae augue elit. Interdum et malesuada fames ac ante ipsum primis in faucibus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Maecenas turpis nulla, adipiscing eu placerat sodales, dictum et erat.
Vivamus rutrum arcu quis ipsum facilisis bibendum. Praesent semper mauris quis gravida volutpat. Duis convallis erat vel ligula commodo, a posuere ligula lobortis. Proin placerat sapien quam, quis iaculis sem interdum id. Praesent id facilisis lorem, et vulputate nunc. Duis condimentum odio quis congue bibendum. Phasellus eget sapien non erat tempus dignissim. Curabitur non varius neque, vel bibendum mi. Integer id orci gravida, volutpat lorem ut, sodales dolor. Suspendisse mauris metus, pulvinar non est in, feugiat ornare mauris. Suspendisse at scelerisque sem. Nam non dignissim sem. Nulla dignissim non massa eu sagittis. Ut eget imperdiet massa.
Fusce vitae rhoncus magna. Mauris facilisis ligula nec vestibulum tincidunt. Pellentesque lacinia dapibus imperdiet. Sed laoreet nulla molestie eros blandit, nec facilisis lorem facilisis. Donec venenatis varius felis, eu eleifend velit bibendum et. Proin sed sapien ut mauris iaculis luctus a vitae libero. Integer consequat ac mauris non aliquam.
Vivamus molestie lacinia purus ut egestas. Pellentesque condimentum consequat enim. In nec placerat nulla. Vivamus lorem sem, tincidunt eu massa a, semper dictum tellus. Curabitur ac cursus purus, ac auctor l

vela vieme :) + ten kód.. Pozri si hlavne či si spravne dal mapy :)

Link to comment
Share on other sites

  • 0

Problém vyřešen, ale může mi ještě někdo poradit? Mám problém, i když je v kódu : PutPlayerInVehicle(playerid, CreatedRaceVeh[playerid], 0);

, tak mi to stejně hráče do auta nedá.. Nevíte proč?

Link to comment
Share on other sites

  • 0
  • Globální moderátor

3 možnosti

1. auto není vytvořené

2. proměná obsahuje špatné ID vozidla

3. auto je ve virtualworld 10 a hráč jinde

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...