Вопросы

Доброго времени суток,дошли руки до автошколы и обнаружился баг. (Очень много теста извиняйте если что )9_9

В поиске была подобная тема,у меня такая же пролема,но код другой,вообщем мне не помогло:D

Теперь конкретнее,при сдаче на права я сначала сдаю тест,после сдачи теста меня отправляет на улицу,где я должен сесть в машину для здачи на права.

Так же хотелось бы подметить что машины хранятся в базе данных.

Вообщем,при выходе на улицу я сажусь в авто,и нет меток куда мне нужно двигаться,но при выходе из машины пишит мол у вас 15 секунд что бы вернутся в машину.

Опять же хотелось бы подметить что подобная ситуация повторяется даже в том случае если я сяду в любой другой транспорт (наземный) ,Мопеды,да без разницы во что сесть.

Так же с воздушным транспортом такая же проблема(водный не пробывал но скорее всего тоже самое)

Простите за столько много текста,кому то может и лень будет читать,но я постарался более детально описать проблему,и всё её ньансы.

Теперь к коду:

===Диалог где меня отправляет на улицу 

	case D_JOB+43:
	    {
	        if(!response) return 1;
			if(GetMoney(playerid) < 600) return SendClientMessage(playerid, COLOR_GREY, ""cER"Недостаточно средств!");
			SendClientMessage(playerid, COLOR_BLUE, ""cPS"Поздравляем, Вы сдали тест");
			SendClientMessage(playerid, COLOR_BLUE, ""cPS"Выходите во двор и садитесь в свободный транспорт");
			SetPVarInt(playerid, "DrivingTest", 1);
			TransferMoney(playerid, -1, 600);
			pPressed[playerid] = 0;
			UseGPS[playerid] = true;
			for(new i; i < 3; i++) TextDrawShowForPlayer(playerid, GPSEnabled[i]);
    		DisablePlayerRaceCheckpoint(playerid);
			SetPlayerRaceCheckpoint(playerid,1,680.3998,435.0675,12.0000,0.0,0.0,0.0,5.0);
			return 1;
	    }

===== Диалог который по логике должен отправить меня в путь :) (тут все три,Наземный,воздушный и Водный)

				for(new v = 1; v <= TOTALVEH; v++)
				{
					if(vehicleid == VehInfo[v][vVehicle])
					{
						if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "DrivingTest") > 0
						&& VehInfo[v][vVehicle] == vehicleid && (v >= 1 && v <= 3 || v >= 103 && v <= 105))
						{
						    if(UseGPS[playerid])
							{
						    	DisablePlayerRaceCheckpoint(playerid);
						    	UseGPS[playerid] = false;
						    	for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled[i]);
							}
							SendClientMessage(playerid, COLOR_BLUE, ""cPS"Следуйте по чекпоинтам, соблюдая правила дорожного движения");
       						ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
							new i = pPressed[playerid];
							SetPlayerRaceCheckpoint(playerid,0,DrivingTest[i][0],DrivingTest[i][1],DrivingTest[i][2],DrivingTest[i][3],DrivingTest[i][4],DrivingTest[i][5],5.0);
						}
						else if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "FlyTest") > 0
						&& VehInfo[v][vVehicle] == vehicleid && (v >= 6 && v <= 6))
						{
						    if(UseGPS[playerid])
							{
						    	DisablePlayerRaceCheckpoint(playerid);
						    	UseGPS[playerid] = false;
						    	for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled[i]);
							}
						    SendClientMessage(playerid, COLOR_BLUE, ""cPS"Следуйте по чекпоинтам, соблюдая правила полёта");
   						 	ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
							new i = pPressed[playerid];
							SetPlayerRaceCheckpoint(playerid,3,FlyTest[i][0],FlyTest[i][1],FlyTest[i][2],FlyTest[i][3],FlyTest[i][4],FlyTest[i][5],5.0);
						}
						else if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "WaterTest") > 0
						&& VehInfo[v][vVehicle] == vehicleid && (v >= 4 && v <= 5))
						{
						    if(UseGPS[playerid])
							{
						    	DisablePlayerRaceCheckpoint(playerid);
						    	UseGPS[playerid] = false;
						    	for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled[i]);
							}
						    SendClientMessage(playerid, COLOR_BLUE, ""cPS"Следуйте по чекпоинтам, соблюдая правила движения");
   						 	ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
							new i = pPressed[playerid];
							if(!GetPVarInt(playerid, "WaterTestTimeOn")) SetPVarInt(playerid, "WaterTestTimeOn", 1);
							SetPlayerRaceCheckpoint(playerid,0,WaterTest[i][0],WaterTest[i][1],WaterTest[i][2],WaterTest[i][3],WaterTest[i][4],WaterTest[i][5],5.0);
						}

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение

6 ответов на этот вопрос

  • 0

Проблема решена всем спасибо)

Решена грубым но рабочим способом :dance:

Вырезал с другого мода,с аналогично автошколой и всё работает B|

Поделиться сообщением


Ссылка на сообщение
  • 0

@edikzver, появляется ли в чате текст "Поздравляем, Вы сдали тест"?

Поделиться сообщением


Ссылка на сообщение
  • 0

@Talex Да потом выйдете во двор там Maркер у машин на него иду он пропадает и всё (и пишит мол вы добрались до нужного места) ну вообщем как GPS

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@edikzver, покажи все, что связано с PVar "DrivingTest" и содержимое OnPlayerStateChange.

Поделиться сообщением


Ссылка на сообщение
  • 0

@Talex 

DrivingTest

	if(GetPVarInt(playerid, "DrivingTest"))
	{
		DeletePVar(playerid, "DrivingTest");
		DeletePVar(playerid, "DrivingTestHealth");
		DeletePVar(playerid, "DrivingTestError");
		SendClientMessage(playerid, COLOR_RED, ""cER"Вы провалили экзамен на управление наземным транспортом");
	}
else if(areaid == AreaInfo[arArhTest] && player_state == PLAYER_STATE_ONFOOT)
	{
		if(GetPVarInt(playerid, "DrivingTest")) return ShowPlayerDialog(playerid, D_NULL, 0, " ", "\
		{ffffff}Вы уже сдаете экзамен на управление наземным транспортом!", "Закрыть", "");
		else if(GetPVarInt(playerid, "FlyTest")) return ShowPlayerDialog(playerid, D_NULL, 0, " ", "\
		{ffffff}Вы уже сдаете экзамен на управление воздушным транспортом!", "Закрыть", "");
		else if(GetPVarInt(playerid, "WaterTest")) return ShowPlayerDialog(playerid, D_NULL, 0, " ", "\
		{ffffff}Вы уже сдаете экзамен на управление водным транспортом!", "Закрыть", "");
		
		new string[256], status[16];
        switch(LP4[0])
        {
			case 0: status = "{FF0000}Закрыт";
			case 1: status = "{63BD4E}Открыт";
		}
	    format(string, sizeof(string), "\
			{ffffff}1. Управление наземным транспортом\t{"#cSV"}(600р)\n\
			2. Управление воздушным транспортом\t{"#cSV"}(6000р)\n\
			3. Управление водным транспортом\t\t{"#cSV"}(4000р)\n\
            4. Набор в организацию Автошкола\t\t%s", status);
		ShowPlayerDialog(playerid, D_JOB+42, 2, "{"#cSV"}Автошкола г.Арзамас", string, "Принять", "Отмена");
	}
case 1: //Игрок пешком (можно писать PLAYER_STATE_ONFOOT)
		{
			KillTimer(STimer[playerid]);
			HideSpeedometer(playerid);
			if(GetPVarInt(playerid, "DrivingTest"))
			{
				SendClientMessage(playerid, COLOR_RED, ""cER"У вас есть 15 секунд, чтобы вернуться");
				DisablePlayerRaceCheckpoint(playerid);
				DrivingTestTime[playerid] = 15;
			}
for(new v = 1; v <= TOTALVEH; v++)
				{
					if(vehicleid == VehInfo[v][vVehicle])
					{
						if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "DrivingTest") > 0
						&& VehInfo[v][vVehicle] == vehicleid && (v >= 1 && v <= 3 || v >= 103 && v <= 105))
						{
						    if(UseGPS[playerid])
							{
						    	DisablePlayerRaceCheckpoint(playerid);
						    	UseGPS[playerid] = false;
						    	for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled[i]);
							}
							SendClientMessage(playerid, COLOR_BLUE, ""cPS"Следуйте по чекпоинтам, соблюдая правила дорожного движения");
       						ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
							new i = pPressed[playerid];
							SetPlayerRaceCheckpoint(playerid,0,DrivingTest[i][0],DrivingTest[i][1],DrivingTest[i][2],DrivingTest[i][3],DrivingTest[i][4],DrivingTest[i][5],5.0);
						}
if(VehInfo[v][vFraction] != PI[playerid][pMember])
						{
							if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && (GetPVarInt(playerid, "DrivingTest") > 0 || GetPVarInt(playerid, "FlyTest") > 0 || GetPVarInt(playerid, "WaterTest") > 0)) { }
							else
							{
								SendClientMessage(playerid, COLOR_GREY, ""cER"Этот транспорт вам недоступен!");
								RemoveFromVehicle(playerid);
								return 1;
							}
						}
						//else break;
					}
				}
if(GetPVarInt(playerid, "DrivingTest") > 0)
	{
		if(GetPlayerState(playerid) != 2) return SendClientMessage(playerid, COLOR_GREY, ""cPS"Вы должны находиться за рулем!");
		if(pPressed[playerid] == 28)
		{
			if(GetPVarInt(playerid, "DrivingTestError") > 2)
			{
				SendClientMessage(playerid, COLOR_RED, ""cER"Вы провалили экзамен на управление наземным транспортом");
				ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{F04245}К сожалению вы не сдали экзамен на управление наземным транспортом\n\n", "Закрыть", "");
			}
			else
			{
				SendClientMessage(playerid, COLOR_GREEN, ""cDA"Поздравляем! Вы сдали экзамен на управление наземным транспортом");
				ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Поздравляем, вы сдали экзамен на управление наземным транспортом\n\n", "Закрыть", "");
				PI[playerid][pLic][0] = 1;
			}
			DeletePVar(playerid, "DrivingTest");
			DeletePVar(playerid, "DrivingTestHealth");
			DeletePVar(playerid, "DrivingTestError");
			Fuel[GetPlayerVehicleID(playerid)] = 45;
			SetVehicleToRespawn(GetPlayerVehicleID(playerid));
			DisablePlayerRaceCheckpoint(playerid);
		}
		else
		{
			pPressed[playerid]++;
			new Float:health, i = pPressed[playerid];
			GetVehicleHealth(GetPlayerVehicleID(playerid), health);
			if(health < GetPVarFloat(playerid, "DrivingTestHealth"))
			{
				SendMes(playerid, COLOR_RED, ""cER"Вы повредили транспорт. Ошибок: {ffffff}%i", GetPVarInt(playerid, "DrivingTestError") + 1);
				SetPVarInt(playerid, "DrivingTestError", GetPVarInt(playerid, "DrivingTestError") + 1);
			}
			if(SpeedVehicle(playerid) / 2 > 60)
			{
				SendMes(playerid, COLOR_RED, ""cER"Вы привысили скорость. Ошибок: {ffffff}%i", GetPVarInt(playerid, "DrivingTestError") + 1);
				SetPVarInt(playerid, "DrivingTestError", GetPVarInt(playerid, "DrivingTestError") + 1);
			}
			if(pPressed[playerid] < 27) SetPlayerRaceCheckpoint(playerid, 0, DrivingTest[i][0],DrivingTest[i][1],DrivingTest[i][2],DrivingTest[i][3],DrivingTest[i][4],DrivingTest[i][5], 5.0);
			else SetPlayerRaceCheckpoint(playerid,1, DrivingTest[i][0],DrivingTest[i][1],DrivingTest[i][2],DrivingTest[i][3],DrivingTest[i][4],DrivingTest[i][5], 5.0);
			SetPVarFloat(playerid, "DrivingTestHealth", health);
		}
	}
	case D_JOB+43:
	    {
	        if(!response) return 1;
			if(GetMoney(playerid) < 600) return SendClientMessage(playerid, COLOR_GREY, ""cER"Недостаточно средств!");
			SendClientMessage(playerid, COLOR_BLUE, ""cPS"Поздравляем, Вы сдали тест");
			SendClientMessage(playerid, COLOR_BLUE, ""cPS"Выходите во двор и садитесь в свободный транспорт");
			SetPVarInt(playerid, "DrivingTest", 1);
			TransferMoney(playerid, -1, 600);
			pPressed[playerid] = 0;
			UseGPS[playerid] = true;
			for(new i; i < 3; i++) TextDrawShowForPlayer(playerid, GPSEnabled[i]);
    		DisablePlayerRaceCheckpoint(playerid);
			SetPlayerRaceCheckpoint(playerid,1,680.3998,435.0675,12.0000,0.0,0.0,0.0,5.0);
			return 1;
	    }

OnPlayerStateChange

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(!ac_1{playerid} && newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_NONE) return SKick(playerid, 5341);
	Air_Gettime(playerid,4);
	if(PI[playerid][pAdmin] == ADM_NONE)
	{
		if(newstate == PLAYER_STATE_DRIVER) PlayerEnterTime[playerid] = GetTickCount();
		else if(oldstate == PLAYER_STATE_DRIVER)
		{
			if((GetTickCount()-PlayerEnterTime[playerid]) < 220)
			{
			    new string[128];
				format(string, sizeof(string), ""aAC"%s[%d] кикнут за использование читов (Car Hack)", GetName(playerid), playerid);
	            SendAdminMessage(COLOR_GREY, string);
	            SendLog("CheatLog",string);
			    CheatKick(playerid, 6224);
				return 0;
			}
		}
	}
	if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_PASSENGER || oldstate == PLAYER_STATE_PASSENGER && newstate == PLAYER_STATE_DRIVER) CheatKick(playerid, 2918); // краш машинами
 	if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_DRIVER)
    {
        if(GetPVarInt(playerid, "CarHackUsing") > 2) CheatKick(playerid, 1957);
        SetPVarInt(playerid, "CarHackUsing", GetPVarInt(playerid, "CarHackUsing")+1);
    }
    if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
    {
        new carid = GetPlayerVehicleID(playerid), Float:X, Float:Y, Float:Z;
        GetVehiclePos(carid, X, Y, Z);
        VehiclePos[carid][0] = X;
        VehiclePos[carid][1] = Y;
        VehiclePos[carid][2] = Z;
    }
	if(newstate == PLAYER_STATE_DRIVER)
	{
		new model = GetPlayerVehicleSeat(playerid);
		if(model != 128)
		{
			if(!model)
			{
				model = GetVehicleModel(GetPlayerVehicleID(playerid));
				if(!(400 <= model <= 611) || MaxPassengers[model - 400 >>> 3] >>> ((model - 400 & 7) << 2) & 0xF == 15) return CheatKick(playerid, 12);
			}
			else return CheatKick(playerid, 62);
		}
	}
	if(oldstate == 2 || oldstate == PLAYER_STATE_PASSENGER)
	{
	    EnterVehicle[playerid] = INVALID_VEHICLE_ID;
	}
    if(newstate == PLAYER_STATE_PASSENGER)
	{
	    switch(GetPlayerWeapon(playerid))
	    {
	        case 24,31,26,28,29,30,33: SetPlayerArmedWeapon(playerid, 0);
	    }
    }
    if((newstate == 2 && oldstate == 3) || (newstate == 3 && oldstate == 2)  || (newstate == 2 && oldstate == 2))
	{
		SetPVarInt(playerid, "AC124", GetPVarInt(playerid,"AC124") + 1);
		if(GetPVarInt(playerid,"AC124") >= 3)
		{
			SetVehicleToRespawn(GetPlayerVehicleID(playerid));
			return CheatKick(playerid, 115);
		}
	}
	switch(newstate)
	{
		case 1: //Игрок пешком (можно писать PLAYER_STATE_ONFOOT)
		{
			KillTimer(STimer[playerid]);
			HideSpeedometer(playerid);
			if(GetPVarInt(playerid, "DrivingTest"))
			{
				SendClientMessage(playerid, COLOR_RED, ""cER"У вас есть 15 секунд, чтобы вернуться");
				DisablePlayerRaceCheckpoint(playerid);
				DrivingTestTime[playerid] = 15;
			}
			if(GetPVarInt(playerid, "FlyTest"))
			{
				SendClientMessage(playerid, COLOR_RED, ""cER"У вас есть 15 секунд, чтобы вернуться");
				DisablePlayerRaceCheckpoint(playerid);
				FlyTestTime[playerid] = 15;
			}
			if(GetPVarInt(playerid, "WaterTest") && GetPVarInt(playerid, "WaterTestTimeOn"))
			{
				SendClientMessage(playerid, COLOR_RED, ""cER"У вас есть 15 секунд, чтобы вернуться");
				DisablePlayerRaceCheckpoint(playerid);
				WaterTestTime[playerid] = 15;
			}
			if(GetPVarInt(playerid, "PriceBus"))
			{
				SendClientMessage(playerid, COLOR_RED, ""cER"У вас есть 15 секунд, чтобы вернуться");
				DisablePlayerRaceCheckpoint(playerid);
				SetPVarInt(playerid, "BusTime", 15);
				DeletePVar(playerid, "TimeBus");
			}
		}
		case 2: //Игрок в машине, на месте водителя (можно писать PLAYER_STATE_DRIVER)
		{
			new cars = 0;
			if(InShop[playerid] < 1 || GetPVarInt(playerid, "InShop") == 0)
			{
				new vehicleid = GetPlayerVehicleID(playerid);
				new temp = GetVehicleModel(GetPlayerVehicleID(playerid));
				BE_Play_Check[playerid] = true;
				for(new i; i != sizeof(BE_Bad_Vehs); i++)
				{
					if(temp == BE_Bad_Vehs[i]) cars++, BE_Play_Check[playerid] = false;
				}
				if(IsABoat(vehicleid))
				{
					if(PI[playerid][pLic][1] != 1)
					{
					    if(GetPVarInt(playerid, "WaterTest")) { }
						else
						{
							SendClientMessage(playerid, COLOR_GREY, ""cER"У вас нет лицензии на водный транспорт!");
							RemoveFromVehicle(playerid);
							return 1;
						}
					}
				}
				if(IsAPlane(vehicleid))
				{
					if(PI[playerid][pLic][2] != 1)
					{
					    if(GetPVarInt(playerid, "FlyTest")) { }
					    else
					    {
							SendClientMessage(playerid, COLOR_GREY, ""cER"У вас нет лицензии на воздушный транспорт!");
							RemoveFromVehicle(playerid);
							return 1;
						}
					}
					if(Engine[vehicleid] == false) SendClientMessage(playerid, COLOR_WHITE, "Чтобы завести двигатель воздушного транспорта введите /engine");
				}
				for(new v = 1; v <= TOTALVEH; v++)
				{
					if(vehicleid == VehInfo[v][vVehicle])
					{
						if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "DrivingTest") > 0
						&& VehInfo[v][vVehicle] == vehicleid && (v >= 1 && v <= 3 || v >= 103 && v <= 105))
						{
						    if(UseGPS[playerid])
							{
						    	DisablePlayerRaceCheckpoint(playerid);
						    	UseGPS[playerid] = false;
						    	for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled[i]);
							}
							SendClientMessage(playerid, COLOR_BLUE, ""cPS"Следуйте по чекпоинтам, соблюдая правила дорожного движения");
       						ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
							new i = pPressed[playerid];
							SetPlayerRaceCheckpoint(playerid,0,DrivingTest[i][0],DrivingTest[i][1],DrivingTest[i][2],DrivingTest[i][3],DrivingTest[i][4],DrivingTest[i][5],5.0);
						}
						else if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "FlyTest") > 0
						&& VehInfo[v][vVehicle] == vehicleid && (v >= 6 && v <= 6))
						{
						    if(UseGPS[playerid])
							{
						    	DisablePlayerRaceCheckpoint(playerid);
						    	UseGPS[playerid] = false;
						    	for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled[i]);
							}
						    SendClientMessage(playerid, COLOR_BLUE, ""cPS"Следуйте по чекпоинтам, соблюдая правила полёта");
   						 	ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
							new i = pPressed[playerid];
							SetPlayerRaceCheckpoint(playerid,3,FlyTest[i][0],FlyTest[i][1],FlyTest[i][2],FlyTest[i][3],FlyTest[i][4],FlyTest[i][5],5.0);
						}
						else if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && GetPVarInt(playerid, "WaterTest") > 0
						&& VehInfo[v][vVehicle] == vehicleid && (v >= 4 && v <= 5))
						{
						    if(UseGPS[playerid])
							{
						    	DisablePlayerRaceCheckpoint(playerid);
						    	UseGPS[playerid] = false;
						    	for(new i; i < 3; i++) TextDrawHideForPlayer(playerid, GPSEnabled[i]);
							}
						    SendClientMessage(playerid, COLOR_BLUE, ""cPS"Следуйте по чекпоинтам, соблюдая правила движения");
   						 	ShowPlayerDialog(playerid, D_NULL, 0, " ", "\n\n{ffffff}Ваша задача следовать по чекпоинтам. Вперед\n\n", "Закрыть", "");
							new i = pPressed[playerid];
							if(!GetPVarInt(playerid, "WaterTestTimeOn")) SetPVarInt(playerid, "WaterTestTimeOn", 1);
							SetPlayerRaceCheckpoint(playerid,0,WaterTest[i][0],WaterTest[i][1],WaterTest[i][2],WaterTest[i][3],WaterTest[i][4],WaterTest[i][5],5.0);
						}
						if(VehInfo[v][vFraction] != PI[playerid][pMember])
						{
							if(VehInfo[v][vFraction] == TEAM_AUTOSCHOOL && (GetPVarInt(playerid, "DrivingTest") > 0 || GetPVarInt(playerid, "FlyTest") > 0 || GetPVarInt(playerid, "WaterTest") > 0)) { }
							else
							{
								SendClientMessage(playerid, COLOR_GREY, ""cER"Этот транспорт вам недоступен!");
								RemoveFromVehicle(playerid);
								return 1;
							}
						}
						//else break;
					}
				}
				if(cars == 0)
				{
					if(PI[playerid][pLic][0] == 0)
					{
						if(GetPVarInt(playerid, "DrivingTest") > 0) { }
						else
						{
                            if(!IsAMoped(vehicleid) && !IsAVel(vehicleid))
							{
								SendClientMessage(playerid, COLOR_GREY, ""cER"У вас нет водительских прав!");
								RemoveFromVehicle(playerid);
								return 1;
							}
						}
					}
					if(Engine[vehicleid] == false)
					{
						if(IsAVel(vehicleid))
						{
							GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
							SetVehicleParamsEx(vehicleid,true,lights,alarm,doors,bonnet,boot,objective);
						}
						else
						{
						    if(!InShop[playerid]) SendClientMessage(playerid, COLOR_GREEN, ""cPS"Нажмите клавишу '2', чтобы завести двигатель, меню машины (/cm)");
						}
					}
					if(!IsAMoped(vehicleid) && !IsAVel(vehicleid) && !IsABoat(vehicleid))
					{
						STimer[playerid] = SetTimerEx("UpdateSpeedometr", 500, true, "i", playerid);
						ShowSpeedometer(playerid);
					}
					if(vehicleid >= mechanic[0] && vehicleid <= mechanic[1])
					{
						if(PI[playerid][pJob] != JOB_MECHANIC)
						{
							SendClientMessage(playerid, COLOR_GREY, ""cER"Вы не автомеханик!");
							RemoveFromVehicle(playerid);
							return 1;
						}
					}
					if((vehicleid >= trucker1lvl[0] && vehicleid <= trucker1lvl[1]) || (vehicleid >= trucker2lvl[0] && vehicleid <= trucker2lvl[1]))
					{
						if(PI[playerid][pJob] != JOB_TRUCKER)
						{
						    SendClientMessage(playerid, COLOR_GREY, ""cER"Вы не дальнобойщик!");
							RemoveFromVehicle(playerid);
							return 1;
						}
						new trucklevel, price;
						if(vehicleid >= trucker1lvl[0] && vehicleid <= trucker1lvl[1]) { trucklevel = 1; price = 200; }
						else if(vehicleid >= trucker2lvl[0] && vehicleid <= trucker2lvl[1]) { trucklevel = 2; price = 300; }
						if((trucklevel == 2 && PI[playerid][pTruckSkill] < TRUCK_LEVEL_2))
						{
							SendClientMessage(playerid, COLOR_GREY, "Ваш опыт работы дальнобойщиком не достаточен для этого транспорта");
							RemoveFromVehicle(playerid);
							return 1;
						}
						if(GetMoney(playerid) < price)
						{
							new string[128];
							format(string, sizeof(string), "Вам нужно %dр чтобы арендовать этот грузовик", price);
							SendClientMessage(playerid, COLOR_GREY, string);
							RemoveFromVehicle(playerid);
							return 1;
						}
						SetPVarInt(playerid, "truckprice", price);
						new string[150];
						if(PI[playerid][TruckerCarID] == vehicleid) { }
						else
						{
						    SetTimerEx("CheckRentCar",8000,0,"i",playerid);
							format(string, sizeof(string), "{ffffff}Вы хотите арендовать данный тягач?\nСтоимость аренды: {33ccff}%iр", price);
							ShowPlayerDialog(playerid, 11212, DIALOG_STYLE_MSGBOX, "{"#cSV"}Аренда", string, "Да", "Нет");
						}
					}
					/*if(GetMoney(playerid) < 200)
					{
						SendClientMessage(playerid, COLOR_GREY, "Вам нужно 200р чтобы арендовать это транспорт");
						RemoveFromVehicle(playerid);
						return 1;
					}*/
					if(PI[playerid][MechanicCarID] == vehicleid)
					{
						    SetTimerEx("CheckRentCar",8000,0,"i",playerid);
							ShowPlayerDialog(playerid, D_JOB+66, 0, "{ffffff}Аренда", "{ffffff}Вы хотите арендовать данный транспорт?\n\nСтоимость: {33CCFF}200р", "Да", "Нет");
					}
					if(vehicleid >= taxicar[0] && vehicleid <= taxicar[1])
					{
						if(PI[playerid][pJob] != JOB_TAXI)
						{
							SendClientMessage(playerid, COLOR_GREY, ""cER"Вы не таксист!");
							RemoveFromVehicle(playerid);
							return 1;
						}
						if(GetMoney(playerid) < 200)
						{
							SendClientMessage(playerid, COLOR_GREY, ""cPS"Вам нужно 200р чтобы арендовать это такси");
							RemoveFromVehicle(playerid);
							return 1;
						}
						if(PI[playerid][TaxiCarID] == vehicleid) { }
						else
						{
							SetTimerEx("CheckRentCar",8000,0,"i",playerid);
							ShowPlayerDialog(playerid, D_JOB+59, 0, "{"#cSV"}Аренда", "{ffffff}Вы хотите арендовать данное такси?\nСтоимость аренды: {33CCFF}200р", "Да", "Нет");
						}
					}
					if(vehicleid >= buscar[0] && vehicleid <= buscar[1])
					{
						if(PI[playerid][pJob] != JOB_BUS)
						{
							SendClientMessage(playerid, COLOR_GREY, ""cER"Вы не работаете водителем маршрутки!");
							RemoveFromVehicle(playerid);
							return 1;
						}
						if(GetPVarInt(playerid, "BusTime") > 0 && GetPVarInt(playerid, "PriceBus") > 0 && PI[playerid][BusCarID] == vehicleid)
						{
							new i = pPressed[playerid], type = GetPVarInt(playerid, "TypeBus"), name[30], string[128];
							switch(type)
							{
								case 1: name = "Лесопилка - Шахта - Завод",        SetPlayerRaceCheckpoint(playerid,0,BusCityLS[i][0],BusCityLS[i][1],BusCityLS[i][2],BusCityLS[i][3],BusCityLS[i][4],BusCityLS[i][5],5.0);
								case 2: name = "Автовокзал - Мэрия",            SetPlayerRaceCheckpoint(playerid,0,BusCitySF[i][0],BusCitySF[i][1],BusCitySF[i][2],BusCitySF[i][3],BusCitySF[i][4],BusCitySF[i][5],5.0);
								case 3: name = "Автовокзал - Новый район",      SetPlayerRaceCheckpoint(playerid,0,BusCityLV[i][0],BusCityLV[i][1],BusCityLV[i][2],BusCityLV[i][3],BusCityLV[i][4],BusCityLV[i][5],5.0);
								case 4: name = "Автовокзал - Автошкола",        SetPlayerRaceCheckpoint(playerid,0,BusSchool[i][0],BusSchool[i][1],BusSchool[i][2],BusSchool[i][3],BusSchool[i][4],BusSchool[i][5],5.0);
								case 5: name = "Автовокзал - Анашан",            SetPlayerRaceCheckpoint(playerid,0,BusLS[i][0],BusLS[i][1],BusLS[i][2],BusLS[i][3],BusLS[i][4],BusLS[i][5],5.0);
							}
							format(string, sizeof(string), "%s\n{FFFFFF}Стоимость проезда: {63BD4E}%iр", name, GetPVarInt(playerid, "PriceBus"));
							if(!IsValidDynamic3DTextLabel(BusText3D[playerid])) BusText3D[playerid] = CreateDynamic3DTextLabel(string, 0xffa500FF, 0.0, 0.0, 1.0, 20.0, INVALID_PLAYER_ID, vehicleid);
							DeletePVar(playerid, "BusTime");
						}
						if(GetMoney(playerid) < 200)
						{
							SendClientMessage(playerid, COLOR_GREY, "Вам нужно 200р чтобы арендовать эту маршрутку");
							RemoveFromVehicle(playerid);
							return 1;
						}
						if(PI[playerid][BusCarID] == vehicleid) { }
						else
						{
							SetTimerEx("CheckRentCar",15000,0,"i",playerid);
							ShowPlayerDialog(playerid, D_JOB+58, 0, "{"#cSV"}Аренда", "{ffffff}Вы хотите арендовать данную маршрутку?\n\nСтоимость: {33CCFF}200р", "Да", "Нет");
						}
					}
					new arend_id = INVALID_PLAYER_ID;
			     	if(GetArendCarID(vehicleid, arend_id) != (-1))
					{
			      	    new string[200];
						if(arend_id == INVALID_PLAYER_ID || !IsPlayerConnected(arend_id))
						{
						    new rc = GetArendCarID(vehicleid);
						    format(string,sizeof(string), "{FFFFFF}Транспорт для аренды!\n\n- Модель: {46ca00}%s{FFFFFF}\n- Стоимость: {46ca00}%iр{FFFFFF}\n\n{afafaf}Чтобы арендовать, нажмите `Аренда`", VehicleNames[GetVehicleModel(vehicleid)-400], ArendInfo[rc][aCost]);
							ShowPlayerDialog(playerid, D_JOB+23, 0, "{"#cSV"}Аренда", string, "Аренда", "Отмена");
						}
						else if(arend_id != playerid)
						{
						    SendClientMessage(playerid, COLOR_FADE1, "Этот транспорт уже арендуют");
						    RemoveFromVehicle(playerid);
						}
					}
					if(gVehicleGun[vehicleid][vGunLoading] || gVehicleGun[vehicleid][vGunUnloading])
					{
						ShowPlayerDialog(playerid, D_STOPLOAD, DIALOG_STYLE_MSGBOX, "{"#cSV"}Погрузка", "{FFFFFF}Вы хотите прекратить загрузку боеприпасов в автомобиль?", "Да", "Нет");
					}
				}
			}
		}
		case 3: //Игрок в машине, на месте пассажира - (можно писать PLAYER_STATE_PASSENGER)
		{
			new vehicleid = GetPlayerVehicleID(playerid);
			foreach(new i: Player)
			{
				if(PlayerLogged[i] == false) continue;
				if(IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i) == 2)
				{
				    new string[32];
					if(GetPVarInt(i, "PriceBus") > 0)
					{
						if(GetMoney(playerid) < GetPVarInt(i, "PriceBus"))
						{
							SendClientMessage(playerid, COLOR_GREY, ""cER"У вас не хватает денег!");
							RemoveFromVehicle(playerid);
						}
						else
						{
							TransferMoney(playerid, -1, GetPVarInt(i, "PriceBus"));
							SendMes(playerid, COLOR_BLUE, "Вы заплатили %iр за проезд водителю %s",GetPVarInt(i, "PriceBus"), GetName(i));
							PI[i][pPayCheck] += GetPVarInt(i, "PriceBus");
							SendMes(i, COLOR_BLUE, "Пассажир %s заплатил %iр за проезд", GetName(playerid), GetPVarInt(i, "PriceBus"));
							format(string, sizeof(string), "~r~-%iр",  GetPVarInt(i, "PriceBus"));
							GameTextForPlayer(playerid, string, 5000, 1);
							format(string, sizeof(string), "~b~+%iр", GetPVarInt(i, "PriceBus"));
							GameTextForPlayer(i, string, 5000, 1);
						}
					}
					if(GetPVarInt(i, "PriceTaxi") > 0)
					{
						if(GetMoney(playerid) < GetPVarInt(i, "PriceTaxi"))
						{
							SendClientMessage(playerid, COLOR_GREY, ""cER"У вас не хватает денег!");
							RemoveFromVehicle(playerid);
						}
						else
						{
							TransferMoney(playerid, -1, GetPVarInt(i, "PriceTaxi"));
							PI[i][pPayCheck] += GetPVarInt(i, "PriceTaxi");
							SetPVarInt(playerid, "TimeTaxi", 30);
							SetPVarInt(playerid, "TaxiPrice",GetPVarInt(i, "PriceTaxi"));
							SetPVarInt(playerid, "PlayerTaxi", i);
							format(string, sizeof(string), "~r~-%iр", GetPVarInt(i, "PriceTaxi"));
							GameTextForPlayer(playerid, string, 5000, 1);
							format(string, sizeof(string), "~b~+%iр", GetPVarInt(i, "PriceTaxi"));
							GameTextForPlayer(i, string, 5000, 1);
							SetPVarInt(i, "TaxiMoney", GetPVarInt(i, "TaxiMoney") + GetPVarInt(i, "PriceTaxi"));
						}
					}
				}
			}
		}
	case 4: //Игрок вышел из машины
		{
			BE_Play_Check[playerid] = false;
		}
	case 5: //Игрок сел в машину на место водителя
		{
		}
	case 6: //Игрок сел в машину на место пассажира
		{
		}
	case 7: //Игрок выбирает скин (можно писать PLAYER_STATE_WASTED)
		{
		}
	case 8: //Игрок возродился (можно писать PLAYER_STATE_SPAWNED)
		{
		}
	case 9: //Игрок наблюдает с помощью функции SPECTATING (можно писать PLAYER_STATE_SPECTATING)
		{
		}
	}
	return 1;
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
В 14.06.2018 в 17:48, edikzver сказал:

for(new v = 1; v <= TOTALVEH; v++)

 

Проверяйте, срабатывает ли этот цикл и до куда система в нем доходит.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • nazpol9
      От nazpol9
      Привет всем.

      У меня имеется мод для самп сервера и VPS с Ubuntu, на котором я пытаюсь его запустить.

      В чем суть проблемы: при запуске samp03svr, сервер запускается, но на версии 0.3.DL R-1. Когда я пытаюсь запустить этот же мод локально на Windows, сервер работает на версии 0.3.7 и я могу зайти на него без клиента 0.3.DL.

      Для решения этой проблемы я уже пробовал заменять инклуды и исполнительные файлы теми, что есть в архивах на официальном сайте сампа, перекомпилировал мод, и ничего не изменилось.
       
      #include <a_samp> #include <a_mysql> #include <foreach> #include <Pawn.RakNet> #include <streamer> #include <sscanf2> #include <float2> #include <crashdetect> #include <fmt> #include <a_http> #include <Pawn.CMD> #include <Pawn.Regex> #include <requests> #include <callbacks> #include <MD5> #include <mxdate> #include <TOTP> #include <gvar> #include <md-sort> #include <nex-ac> #include <weapon-config> #include <discord-connector> #include <3DTryg> #include <textdraw-streamer>  
      plugins crashdetect.so streamer.so textdraw-streamer.so sscanf.so pawnraknet.so pawncmd.so mysql.so requests.so profiler.so pawnregex.so TOTP.so gvar.so discord-connector.so

      Если у кого-то будут какие-либо догадки, прошу ими поделиться, если понадобится больше информации - я постараюсь её предоставить.