Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Дерби гонка

Статус
В этой теме нельзя размещать новые ответы.

Smile

Специалист
Такого манула еще не видел, так-что выкладываю =)

Автор: Я =)
GO:

Ко всем forward's
PHP:
forward DerbiGonkaWinner(playerid);
forward DerbiGonkaEnded();
forward DerbiStartGonka();
forward DerbiStartGonkatwo();
forward DerbiStartGonka1
forward DerbiStartGonka2
forward DerbiStartGonka3
Ко всем new's
PHP:
new derbichet[MAX_PLAYERS];
new winner[MAX_PLAYERS];
new derbirace[3];
new EndingderbiRound = 1;
new DerbiPlayers = 0;
new Playerderbi[MAX_PLAYERS];
// спавн машин на дерби
new Float:DerbiSpawns[20][4] = {
{-1355.2977,934.0847,1036.1278,7.2270}, // дерби 1
{-1337.1343,938.5261,1036.1738,20.2087}, // дерби 2
{-1317.5848,946.4304,1036.2747,31.0840}, // дерби 3
{-1302.5338,955.1391,1036.3922,41.4171}, // дерби 4
{-1293.2971,964.3026,1036.5234,48.0448}, // дерби 5
{-1283.1465,976.3253,1036.7102,58.6772}, // дерби 6
{-1278.4069,991.7879,1036.9587,86.2603}, // дерби 7
{-1281.2871,1008.8069,1037.2496,91.4685}, // дерби 8
{-1289.2437,1024.4241,1037.5256,101.2547}, // дерби 9
{-1307.4032,1039.3407,1037.8066,127.2879}, // дерби 10
{-1336.4865,1052.3142,1038.0741,148.9551}, // дерби 11
{-1357.8706,1057.1317,1038.1882,159.1849}, // дерби 12
{-1377.9399,1058.0959,1038.2426,172.7466}, // дерби 13
{-1398.3962,1057.6173,1038.2660,171.3333}, // дерби 14
{-1428.6929,1058.1292,1038.3252,178.7059}, // дерби 15
{-1457.7089,1053.6016,1038.3070,192.3742}, // дерби 16
{-1486.4302,1041.4038,1038.1542,208.0230}, // дерби 17
{-1508.5839,1020.3392,1037.8357,234.8889}, // дерби 18
{-1516.5342,989.7833,1037.3513,270.3085}, // дерби 19
{-1506.7659,965.2000,1036.9224,293.0279} // дерби 20
};
//рандомное авто
new derbi[] = {494,502,503,504};

Создаем паблики:

PHP:
public DerbiStartGonkatwo()
{
new string[100];
format(string, sizeof(string), "::: Внимание! Начало Дерби - Гонок через 2 минуты. Трасса: Стадион Сан Фиерро. Регистрация на месте :::");
OOCOff(0x00B95CAA,string);
EndingderbiRound = 0;
SetTimer("DerbiStartGonka1", 120000, 0);
return 1;
}
public DerbiStartGonka1()
{
new string[100];
EndingderbiRound = 1;
for(new i = 0; i < MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i))
	    {
	        if(Playerderbi[i] != 0)
	        {
	       		 new rands = random(sizeof(derbi));
				format(string, sizeof(string), "1");
				GameTextForPlayer(i, string, 1000, 3);
				new rand;
				rand = random(sizeof(DerbiSpawns));
				new carid = CreateVehicle(derbi[rands], DerbiSpawns[rand][0],DerbiSpawns[rand][1],DerbiSpawns[rand][2],DerbiSpawns[rand][3], 3, 3, 60000);
				PutPlayerInVehicle(i, carid, 0);
				CreatedCars[CreatedCar] = carid;
             	TogglePlayerControllable(i, 0);
	            SetPlayerInterior(i,15);
	            LinkVehicleToInterior(carid, 15);
	        }
	    }
	}
	SetTimer("DerbiStartGonka2", 1000, 0);
	return 1;
}
public DerbiStartGonka2()
{
new string[100];
EndingderbiRound = 1;
		for(new i = 0; i < MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i))
	    {
	        if(Playerderbi[i] != 0)
	        {
				format(string, sizeof(string), "2");
 				GameTextForPlayer(i, string, 1000, 3);
	        }
	    }
	}
	SetTimer("DerbiStartGonka3", 1000, 0);
	return 1;
}
public DerbiStartGonka3()
{
new string[100];
EndingderbiRound = 1;
		for(new i = 0; i < MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i))
	    {
	        if(Playerderbi[i] != 0)
	        {
				format(string, sizeof(string), "3");
    			GameTextForPlayer(i, string, 1000, 3);
	        }
	    }
	}
	SetTimer("DerbiStartGonka", 1000, 0);
	return 1;
}
public DerbiStartGonka()
{
	new string[100];
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
	  if(DerbiPlayers < 2)
	{
 		format(string, sizeof(string), "::: Дерби - Гонка отменена из-за не достаточного колличества участников! :::");
		OOCOff(0x00B95CAA,string);
	    EndingderbiRound = 1;
	    Playerderbi[i] = 0;
	    TogglePlayerControllable(i, 1);
   		DerbiPlayers = 0;
 	    DisablePlayerRaceCheckpoint(i);
		if(Playerderbi[i] != 0)
	    {
	    SetPlayerInterior(i, 1);
		SetPlayerPos(i,-2159.0461,640.3610,1052.3817);
		SetPlayerFacingAngle(i, 76.4112);
		DestroyVehicle(GetPlayerVehicleID(i));
		}
	   	return 1;
	}
	    if(IsPlayerConnected(i))
	    {
	        if(Playerderbi[i] != 0)
	     	   {
	     	    GameTextForPlayer(i, "~r~GO! GO! GO!", 5000, 3);
	            PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
	            TogglePlayerControllable(i, 1);
	            Playerderbi[i] = 1;
	            SetVehicleParamsEx(GetPlayerVehicleID(i) ,VEHICLE_PARAMS_ON,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective);
 	        }
	    }
	}
	format(string, sizeof(string),"::: Внимание! Дерби - Гонка началась. Трасса: Стадион Сан Фиерро :::");
	OOCOff(0x00B95CAA,string);
	SetTimer("DerbiGonkaEnded", 300000, 0);
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
	if(Playerderbi[i] != 0)
	{
	winner[i] = SetTimerEx("DerbiGonkaWinner", 10000, 1,"d",i);
	}
	}
	EndingderbiRound = 1;
	return 1;
}

public DerbiGonkaEnded()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i))
	    {
	    new string[100];
	    DisablePlayerCheckpoint(i);
		format(string, sizeof(string),"::: Дерби - Гонка завершенa! Победители получили свои призы :::");
		OOCOff(0x00B95CAA,string);
		if(Playerderbi[i] != 0)
	     {
  		  DestroyVehicle(GetPlayerVehicleID(i));
			}
			Playerderbi[i] = 0;
  			EndingderbiRound = 1;
  			DerbiPlayers = 0;
  			return 1;
		}
	}
	return 1;
}

public DerbiGonkaWinner(playerid)
{
      if(Playerderbi[playerid] != 0)
	     {
              if(DerbiPlayers <= 1)
              {
	   SendClientMessage(playerid, 0x6495EDFF, "Поздравляем вы победитель! Вы выйграли 20 000 вирт!");
  	    PlayerInfo[playerid][pCash] +=20000;
               Playerderbi[playerid] = 0;
         	    EndingderbiRound = 1;
         	    Playerderbi[playerid] = 0;
  	    DerbiPlayers = 0;
         	    //
         	    derbichet[playerid] = 0;
         	    TogglePlayerControllable(playerid, 1);
           	    SetPlayerInterior(playerid, 0);
         	    SetPlayerPos(playerid,-2113.5208,-442.3560,38.2776);
	    SetPlayerFacingAngle(playerid, 76.4112);
  	    Playerderbi[playerid] = 0;
	    KillTimer(winner[playerid]);
	     //
              }
          }
}

В public OnPlayerCommandText

PHP:
else if (strcmp(cmd, "/drace", true) == 0)
	{
 	if(IsPlayerAdmin(playerid)|| PlayerInfo[playerid][pAdmin] >= 5)
 	    {
     	if(EndingderbiRound == 0) return SendClientMessage(playerid,COLOR_WHITE,"::: Дерби Гонка уже начата!");
    			format(string, sizeof(string), "::: Внимание! Начало Дерби - Гонок через 5 минут. Трасса: Стадион Сан Фиерро. Регистрация на месте :::");
				OOCOff(0x00B95CAA,string);
	        	EndingderbiRound = 0;
	        	SetTimer("DerbiStartGonkatwo", 180000, 0);

		}
	return 1;
}
В public OnPlayerStateChange

PHP:
if(Playerderbi[playerid] != 0)
	{
  	SendClientMessage(playerid, COLOR_NEWS, "Вы были дисквалифицированы!");
	DisablePlayerRaceCheckpoint(playerid);
           derbichet[playerid] = 0;
  	DerbiPlayers -= 1;
  	TogglePlayerControllable(playerid, 1);
  	SetPlayerInterior(playerid, 1);
	SetPlayerPos(playerid,-2159.0461,640.3610,1052.3817);
	SetPlayerFacingAngle(playerid, 76.4112);
  	Playerderbi[playerid] = 0;
	 return 1;
	}

Если нету паблика OnVehicleDamageStatusUpdate то добавляем.

PHP:
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
new Float: carhp;
GetVehicleHealth(vehicleid, carhp);
else if(carhp > 50 && carhp <= 250) // дымит
	{
	           if(Playerderbi[playerid] != 0)
	           {
  		SendClientMessage(playerid, COLOR_NEWS, "Вы проиграли!");
		DisablePlayerRaceCheckpoint(playerid);
  		derbichet[playerid] = 0;
  		DerbiPlayers -= 1;
  		TogglePlayerControllable(playerid, 1);
  		SetPlayerInterior(playerid, 0);
		SetPlayerPos(playerid,-2113.5208,-442.3560,38.2776);
		SetPlayerFacingAngle(playerid, 76.4112);
  		Playerderbi[playerid] = 0;
	           return 1;
	           }
	            //
	}
}
в public OnPlayerDisconnect

PHP:
if(Playerderbi[playerid] != 0)
	 {
	 DerbiPlayers -= 1;
	 }
в public OnGameModeInit

PHP:
derbirace[0] = CreatePickup(1314, 23, -2159.0461,640.3610,1052.3817); // пикап регистрации дерби
derbirace[1] = CreatePickup(1318, 23, -2109.9355,-443.3014,38.7344); // вход в дерби
derbirace[2] = CreatePickup(1318, 23, -2170.3154,635.4061,1052.3750); // выход

в public OnPlayerPickUpPickup

PHP:
else if(pickupid == derbirace[0])
	{
	if(EndingderbiRound >= 1) return SendClientMessage(playerid,COLOR_WHITE,"Регистрация закрыта!");
	if(PlayerInfo[playerid][pLevel] < 2 ) return SendClientMessage(playerid,COLOR_GRAD1,"Участвовать можно с 2-х лет проживания в штате!");
	if(PlayerInfo[playerid][pWarns] >=1 ) return SendClientMessage(playerid,COLOR_GRAD1,"Нельзя учавствовать с Warnom!");
	if(DerbiPlayers >= 20) return SendClientMessage(playerid,COLOR_GRAD1,"Слишком много участников!");
 	if( Playerderbi[playerid] == 1) return SendClientMessage(playerid,COLOR_WHITE,"Вы уже зарегестрированы на гонку!");
	SendClientMessage(playerid, 0x6495EDFF, "::: Вы зарегестрировались на гонку :::");
	DerbiPlayers += 1;
    Playerderbi[playerid] = 1;
	}
	else if(pickupid == derbirace[1])
	{
	SetPlayerInterior(playerid,1);
 	SetPlayerPos(playerid,-2170.4685,638.5978,1052.3750);
  	SetPlayerFacingAngle(playerid,355.9632);
	}
	else if(pickupid == derbirace[2])
	{
	DerbiPlayers -= 1;
	TogglePlayerControllable(playerid, 1);
	SetPlayerInterior(playerid, 0);
	SetPlayerPos(playerid,-2113.5208,-442.3560,38.2776);
	SetPlayerFacingAngle(playerid, 76.4112);
	Playerderbi[playerid] = 0;
	}

Вродебы все, если выходят ошибки, пишите тут, помогу!
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу