All pastes #205077 Raw Edit

RACE

public c v1 · immutable
#205077 ·published 2006-10-16 14:34 UTC
rendered paste body
#include <a_samp>#define COLOR_GREEN 0x33AA33AA// TIME:#define SECOND 1000#define MINUTE 60000#define HOUR 600000#define TIMERACEALLERT 1500000#define RECORDFILE "grishracetemplatefile.txt"#define RECORDFILE2 "grishracetemplatefile2.txt"#define MAXCP 39#define MAXCP2 32new Float:racestart[8][4] = {{-1559.1503,708.2474,6.6046,90.0},{-1559.1503,709.2474,7.6046,90.0},{-1559.1503,710.2474,8.6046,90.0},{-1559.1503,711.2474,9.6046,90.0},{-1559.1503,712.2474,10.6046,90.0},{-1559.1503,713.2474,11.6046,90.0},{-1559.1503,714.2474,12.6046,90.0},{-1559.1503,715.2474,13.6046,90.0}};new Float:checkpoints[MAXCP][3] = {        {-1557.1720,913.4298,6.6054},        {-1602.5135,1118.2772,6.6054},        {-1844.4310,1351.6093,6.6009},        {-2079.8464,1272.9178,11.6295},        {-2262.8469,1176.7844,55.1499},        {-2260.3962,1012.0422,83.1768},        {-2382.6052,957.6801,44.8325},        {-2385.7439,733.5667,34.5818},        {-2497.6321,707.3870,32.2510},        {-2607.5371,731.9816,28.5625},        {-2605.9036,964.6667,77.6841},        {-2604.2388,1085.6256,59.3463},        {-2592.1790,1157.8811,55.3600},        {-2535.8103,1286.4193,26.5746},        {-2634.2222,1359.3425,6.6838},        {-2710.8501,1381.4888,6.7219},        {-2820.6482,1262.5719,5.0210},        {-2882.0867,1077.7074,30.2150},        {-2810.7952,925.7395,43.4617},        {-2759.2009,807.9506,52.4915},        {-2658.0813,811.3412,49.3931},        {-2517.8540,807.9695,49.3985},        {-2301.2073,808.3007,48.3257},        {-2154.7844,808.6729,68.9847},        {-1993.5045,798.5537,45.0106},        {-1935.2275,798.2739,55.2822},        {-1899.0630,763.1768,44.2799},        {-1898.4320,606.6982,34.5806},        {-1908.2784,511.8835,34.7382},        {-1909.4056,416.5461,34.7382},        {-1905.1587,326.0932,42.4806},        {-1875.8722,290.0139,32.9206},        {-1824.0787,434.0487,17.3025},        {-1771.8665,500.2256,40.3071},        {-1714.3840,555.8719,38.3179},        {-1652.3475,612.8929,24.2222},        {-1607.4950,661.7707,6.7530},        {-1520.7029,699.4978,6.7555},{0.0,0.0,0.0}};new Float:checkpointsRACE2[MAXCP2][3] = {     {-2147.8325,-347.8195,34.8378},     {-2016.0786,-350.6972,35.6351},     {-1881.5635,-298.4046,50.5083},     {-1882.7911,-143.3618,38.2109},     {-1887.9915,27.2732,37.9425},     {-1845.1075,298.8844,38.2941},     {-1718.6028,483.5216,38.0311},     {-1526.8628,680.6560,44.5145},     {-1128.5996,1099.8715,37.9211},     {-1060.7582,1172.2555,38.5142},     {-944.6235,1058.4144,24.5935},     {-847.6355,999.5159,24.3175},     {-825.9467,1076.9325,34.3009},     {-877.6638,1040.3339,34.2810},     {-1048.3295,915.6757,34.3251},     {-1428.2582,638.6948,34.3294},     {-1490.9252,597.7620,34.2837},     {-1510.1848,580.1924,34.2840},     {-1542.7854,551.9789,34.1605},     {-1591.5392,461.4247,6.7357},     {-1717.1329,337.0109,6.7356},     {-1813.5970,375.3296,16.7200},     {-1852.2682,354.9960,18.4686},     {-1896.7186,216.4087,38.6078},     {-1964.2202,190.1717,26.4262},     {-2006.4141,89.0367,27.2434},     {-2006.5265,-101.1823,35.3361},     {-2005.4330,-259.4799,35.1859},     {-2026.9711,-316.9001,34.9268},     {-2129.0125,-361.9762,34.7878},     {-2148.9014,-396.7011,35.0457},     {0.0,      0.0,       0.0}};new playercp[MAXCP];new msg[250];new playerdriving[100]; new playerinrace[100]; new playercheck[100]; new playerposition[100]; new raceneumber = 0;new timestart[100]; new timeend[100]; new Float:timetotal[100]; new minutes[100]; new seconds[100]; new mseconds[100]; new ready = 0; new rcount = 0; new raceon = 0; new trig = 0; new trigg = 0;new triggg = 0;new jointorace[MAX_PLAYERS];new racers = 0; new finished = 0;main(){		print("\n----------------------------------");	print("  ERS");	print("----------------------------------\n");}public OnGameModeInit(){		SetGameModeText("ERS");		AddPlayerClass(0,-1559.1503,708.2474,19.6046,90.00, 0, 0, 0, 0, 0, 0);		AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.0,0,16);	AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.0,0,16);	AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.00,0,16);	AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.0,0,16);	AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.0,0,16);		SetTimer("RaceAllert",TIMERACEALLERT,1);    SetTimer("IsRaceEmpty",SECOND+100,1);    for (new i=0; i<MAXCP; i++)    {    playercp[i] = 999;    }    for (new po=0; po<MAXCP2; po++)    {    playercp[po] = 999;    }	print("GameModeInit()");	return 1;}public OnPlayerRequestClass(playerid, classid){	printf("OnPlayerRequestClass(%d, %d)", playerid, classid);	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);	SetPlayerFacingAngle(playerid,270.0);	SetPlayerCameraPos(playerid, 1961.3783, 1343.1572, 15.3746);	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);	return 1;}public OnGameModeExit(){	print("GameModeExit()");	return 1;}public OnPlayerConnect(playerid){	SendClientMessage(playerid,0x00FF00FF,"type /winner to see who's winning");	printf("OnPlayerConnect(%d)", playerid);	return 1;}public OnPlayerDisconnect(playerid){    playerinrace[playerid] = 0;    playerposition[playerid] = 999;	printf("OnPlayerDisconnect(%d)", playerid);	return 1;}public OnPlayerSpawn(playerid){	SetPlayerInterior(playerid,0);	GivePlayerMoney(playerid,10000);	playerdriving[playerid] = 0;	playerinrace[playerid] = 0;	playercheck[playerid] = 0;	playerposition[playerid] = 999;	printf("OnPlayerSpawn(%d)", playerid);	return 1;}public OnPlayerDeath(playerid, killerid, reason){    playerinrace[playerid] = 0;    playerposition[playerid] = 999;	printf("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason);	return 1;}public OnVehicleSpawn(vehicleid){	printf("OnVehicleSpawn(%d)", vehicleid);	return 1;}public OnVehicleDeath(vehicleid, killerid){	printf("OnVehicleDeath(%d, %d)", vehicleid, killerid);	return 1;}public OnPlayerText(playerid){	printf("OnPlayerText(%d)", playerid);	return 1;}public OnPlayerCommandText(playerid, cmdtext[]){	if (strcmp(cmdtext, "/race-help", true)==0)	{		SendClientMessage(playerid,0x00FF00FF,"type /winner to see who's winning");	SendClientMessage(playerid,0x00FF00FF,"admin command /resetrace for emergency race reset");	return 1;	}	 if (strcmp(cmdtext, "/joinrace", true)==0)	{	jointorace[playerid] = 1;	SendClientMessage(playerid, COLOR_GREEN, "You have joined to race!");	}	return 0;}public OnPlayerInfoChange(playerid){	printf("OnPlayerInfoChange(%d)");	return 1;}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger){	printf("OnPlayerEnterVehicle(%d, %d, %d)", playerid, vehicleid, ispassenger);	return 1;}public OnPlayerExitVehicle(playerid, vehicleid){	printf("OnPlayerExitVehicle(%d, %d)", playerid, vehicleid);	return 1;}public OnPlayerStateChange(playerid, newstate, oldstate){	if (newstate == PLAYER_STATE_DRIVER)	    {	    playerdriving[playerid] = 1;	    }	if (newstate == PLAYER_STATE_ONFOOT)	    {	    playerdriving[playerid] = 0;	    DisablePlayerCheckpoint(playerid);	    if (playerinrace[playerid] == 1)	        {	        playerinrace[playerid] = 0;	        playerposition[playerid] = 999;	        GameTextForPlayer(playerid,"you are out of the race",3000,3);	        }	    }	printf("OnPlayerStateChange(%d, %d, %d)", playerid, newstate, oldstate);	return 1;}public OnPlayerEnterCheckpoint(playerid){   if (raceneumber == 0){		playercheck[playerid] = playercheck[playerid] + 1;	if (playercheck[playerid] >= 1 && playercheck[playerid] <=MAXCP-2)	    {	    DisablePlayerCheckpoint(playerid);	    SetPlayerCheckpoint(playerid,checkpoints[playercheck[playerid]][0],checkpoints[playercheck[playerid]][1],checkpoints[playercheck[playerid]][2],7.0);	    PlayerPlaySound(playerid,1053,checkpoints[playercheck[playerid]][0],checkpoints[playercheck[playerid]][1],checkpoints[playercheck[playerid]][2]);		format(msg,sizeof(msg),"cp %d of %d",playercheck[playerid],MAXCP-1);		GameTextForPlayer(playerid,msg,2000,6);		if (playercp[playercheck[playerid]] == 999)		    {			playercp[playercheck[playerid]] = playerid;		    }	    }	if (playercheck[playerid] == MAXCP-1)	    {	    DisablePlayerCheckpoint(playerid);		timeend[playerid] = tickcount();		timetotal[playerid] = timeend[playerid] - timestart[playerid];		timeconvert(playerid);		PlayerPlaySound(playerid,1132,checkpoints[playercheck[playerid]][0],checkpoints[playercheck[playerid]][1],checkpoints[playercheck[playerid]][2]);		finished = finished + 1;        playerposition[playerid] = finished;   		new pname[MAX_PLAYER_NAME];		GetPlayerName(playerid, pname, MAX_PLAYER_NAME);		new pos[] = "th";		if (playerposition[playerid] == 1 || playerposition[playerid] == 21 || playerposition[playerid] == 31 || playerposition[playerid] == 41 || playerposition[playerid] == 51 || playerposition[playerid] == 61 || playerposition[playerid] == 71 || playerposition[playerid] == 81 || playerposition[playerid] == 91)			{			pos = "st";			}		if (playerposition[playerid] == 2 || playerposition[playerid] == 22 || playerposition[playerid] == 32 || playerposition[playerid] == 42 || playerposition[playerid] == 52 || playerposition[playerid] == 62 || playerposition[playerid] == 72 || playerposition[playerid] == 82 || playerposition[playerid] == 92)			{			pos = "nd";			}		if (playerposition[playerid] == 3 || playerposition[playerid] == 23 || playerposition[playerid] == 33 || playerposition[playerid] == 43 || playerposition[playerid] == 53 || playerposition[playerid] == 63 || playerposition[playerid] == 73 || playerposition[playerid] == 83 || playerposition[playerid] == 93)			{			pos = "rd";			}		format(msg,sizeof(msg),"you finished %d%s in %dmin %d.%dsec",playerposition[playerid],pos,minutes[playerid],seconds[playerid],mseconds[playerid]);		GameTextForPlayer(playerid,msg,3000,3);		format(msg,sizeof(msg),"%s finished %d%s in %dmin %d.%dsec",pname,playerposition[playerid],pos,minutes[playerid],seconds[playerid],mseconds[playerid]);		SendClientMessageToAll(0x00FF00FF,msg);		playerinrace[playerid] = 0;		if (trigg == 0)		{		trigg = 1;		SetTimer("WaitBeforeRaceEnd",2000,0);		}	    }}if (raceneumber == 1){playercheck[playerid] = playercheck[playerid] + 1;	if (playercheck[playerid] >= 1 && playercheck[playerid] <=MAXCP2-2)	    {	    DisablePlayerCheckpoint(playerid);	    SetPlayerCheckpoint(playerid,checkpointsRACE2[playercheck[playerid]][0],checkpointsRACE2[playercheck[playerid]][1],checkpointsRACE2[playercheck[playerid]][2],7.0);	    PlayerPlaySound(playerid,1053,checkpointsRACE2[playercheck[playerid]][0],checkpointsRACE2[playercheck[playerid]][1],checkpointsRACE2[playercheck[playerid]][2]);		format(msg,sizeof(msg),"cp %d of %d",playercheck[playerid],MAXCP2-1);		GameTextForPlayer(playerid,msg,2000,6);		if (playercp[playercheck[playerid]] == 999)		    {			playercp[playercheck[playerid]] = playerid;		    }	    }	if (playercheck[playerid] == MAXCP2-1)	    {	    DisablePlayerCheckpoint(playerid);		timeend[playerid] = tickcount();		timetotal[playerid] = timeend[playerid] - timestart[playerid];		timeconvert(playerid);		PlayerPlaySound(playerid,1132,checkpointsRACE2[playercheck[playerid]][0],checkpointsRACE2[playercheck[playerid]][1],checkpointsRACE2[playercheck[playerid]][2]);		finished = finished + 1;        playerposition[playerid] = finished;   		new pname[MAX_PLAYER_NAME];		GetPlayerName(playerid, pname, MAX_PLAYER_NAME);		new pos[] = "th";		if (playerposition[playerid] == 1 || playerposition[playerid] == 21 || playerposition[playerid] == 31 || playerposition[playerid] == 41 || playerposition[playerid] == 51 || playerposition[playerid] == 61 || playerposition[playerid] == 71 || playerposition[playerid] == 81 || playerposition[playerid] == 91)			{			pos = "st";			}		if (playerposition[playerid] == 2 || playerposition[playerid] == 22 || playerposition[playerid] == 32 || playerposition[playerid] == 42 || playerposition[playerid] == 52 || playerposition[playerid] == 62 || playerposition[playerid] == 72 || playerposition[playerid] == 82 || playerposition[playerid] == 92)			{			pos = "nd";			}		if (playerposition[playerid] == 3 || playerposition[playerid] == 23 || playerposition[playerid] == 33 || playerposition[playerid] == 43 || playerposition[playerid] == 53 || playerposition[playerid] == 63 || playerposition[playerid] == 73 || playerposition[playerid] == 83 || playerposition[playerid] == 93)			{			pos = "rd";			}		format(msg,sizeof(msg),"you finished %d%s in %dmin %d.%dsec",playerposition[playerid],pos,minutes[playerid],seconds[playerid],mseconds[playerid]);		GameTextForPlayer(playerid,msg,3000,3);		format(msg,sizeof(msg),"%s finished %d%s in %dmin %d.%dsec",pname,playerposition[playerid],pos,minutes[playerid],seconds[playerid],mseconds[playerid]);		SendClientMessageToAll(0x00FF00FF,msg);				playerinrace[playerid] = 0;		if (trigg == 0)		{		trigg = 1;		SetTimer("WaitBeforeRaceEnd",2000,0);		}	    }}	printf("OnPlayerEnterCheckpoint(%d)", playerid);	return 1;}public OnPlayerLeaveCheckpoint(playerid){	printf("OnPlayerLeaveCheckpoint(%d)", playerid);	return 1;}public RaceAllert(){new ad;for(ad=0;ad<MAX_PLAYERS;ad++){SetTimer("RaceOn", MINUTE-20000,0);SendClientMessage(ad, COLOR_GREEN, "Race will start in 1 minute press /joinrace to join to it");}}public WaitBeforeRace(){ready = 1;SetTimer("BeginRace",500,0);return 1;}public WaitBeforeRaceEnd(){raceon = 0;rcount = 0;return 1;}public BeginRace(){	if (ready == 1)	    {	    for (new i=0; i<100; i++)	        {	        if (playerinrace[i] == 1 && rcount == 0)		        {		        GameTextForPlayer(i,"race will begin in",1000,3);       	 		}	        if (playerinrace[i] == 1 && rcount == 1)		        {		        GameTextForPlayer(i,"~r~3",1000,6);       	 		}	        if (playerinrace[i] == 1 && rcount == 2)		        {		        GameTextForPlayer(i,"~y~2",1000,6);       	 		}	        if (playerinrace[i] == 1 && rcount == 3)		        {		        GameTextForPlayer(i,"~b~1",1000,6);       	 		}	        if (playerinrace[i] == 1 && rcount == 4)		        {		        GameTextForAll("The race has started",1000,3);		        TogglePlayerControllable(i,1);		        timestart[i] = tickcount();		        if (raceneumber == 0)				   {                   SetPlayerCheckpoint(i,checkpoints[0][0],checkpoints[0][1],checkpoints[0][2],7.0);                   for (new r=0; r<MAXCP; r++)		           {		           playercp[r] = 999;		           }				   }                if (raceneumber == 1)				   {                   SetPlayerCheckpoint(i,checkpointsRACE2[0][0],checkpointsRACE2[0][1],checkpointsRACE2[0][2],7.0);                   raceneumber = 0;                   for (new lp=0; lp<MAXCP2; lp++)		           {		           playercp[lp] = 999;		           }				   }				ready = 0;		        trig = 0;		        trigg = 0;		        triggg = 0;		        raceon = 1;		        racers = 0;		        finished = 0;		        playercheck[i] = 0;       	 		}	        }	        rcount = rcount + 1;		    	    }	return 1;}public IsRaceEmpty(){	new test = 0;	for (new i=0; i<100; i++)	{	if (playerinrace[i] == 1)	    {	    test = 1;	    }	}	if (test == 0 && triggg == 0)	    {	    triggg = 1;	    raceon = 0;	    rcount = 0;		SendClientMessageToAll(0x00FF00FF,"you may now start a new race");		SendClientMessageToAll(0x00FF00FF,"by typing /joinrace");	    }return 1;}public RaceOn(playerid){new s;for(s=0;s<MAX_PLAYERS;s++)      {             if (jointorace[s] == 1)             {if (playerdriving[s] == 1 && playerinrace[s] == 0)	    {	    new vidd = GetPlayerVehicleID(s);    	SetPlayerInterior(s,0);	    SetVehiclePos(vidd,racestart[racers][0],racestart[racers][1],racestart[racers][2]);	    SetVehicleZAngle(vidd,racestart[racers][3]);	    racers = racers + 1;	    SetCameraBehindPlayer(s);	    TogglePlayerControllable(s,0);	    SendClientMessage(s,0x00FF00FF,"You are in the starting grid");	    playerinrace[s] = 1;	    playerposition[s] = 999;		    if (trig == 0)		    {		    trig = 1;		    SetTimer("WaitBeforeRace",20000,0);		    }	    }	if (raceon == 1)	    {	    GameTextForPlayer(playerid,"Race is in progress, please wait",3000,3);	    }	    raceneumber = raceneumber + 1;	}}}timeconvert(playerid){	timetotal[playerid] = floatdiv(timetotal[playerid], 60000);    minutes[playerid] = floatround(timetotal[playerid], floatround_tozero);    seconds[playerid] = floatround(floatmul(timetotal[playerid] - minutes[playerid], 60), floatround_tozero);    mseconds[playerid] = floatround(floatmul(floatmul(timetotal[playerid] - minutes[playerid], 60) - seconds[playerid], 1000), floatround_tozero);}