Вопросы

Как сделать что бы машину получить через пикап например встал на пикап заплатил 1500р и появилась машина в определенном месте, у меня 2 лвл автомобилей дальнобойщиков trucker1lvl и trucker2lvl

Отредактировано пользователем archiboy6

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


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

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

  • 0

@stibs Ну что?

Заметка от Гость , создано

2.17. Запрещено флудить, оффтопить, заниматься флеймом.

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


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

@archiboy6 Это форум, тут не нужно ждать ежеминутного ответа. В дальнейшем, такие сообщения будут приравнены к оффтопу. 

@stibs Я вам давал правильный варинант ответа. Вы его сами заменили на неверный. Если в дальнейшем это будет продолжаться, я буду закрывать темы. 

Вот правильный вариант, тут нужно всего лишь ПОДСТАВИТЬ свои данные, а не менять всю структуру кода. 

Спойлер

if(pickupid == ID пикапа)
{
  	/*МЕСТО ДЛЯ ДОПОЛНИТЕЛЬНЫХ ПРОВЕРОК*/
	if(PI[playerid][pTruckSkill] == TRUCK_LEVEL_2)
	{	
		veh_dalnoboy[playerid] = CreateVehicle(id машины, X, Y, Z, Angle, -1, -1, -1); //выдаем машину для 2 уровня дальнобойщика
	} // по аналогии продолжать далее, оставил один, так как в моде только один уровень дальнобойщиков
	PI[playerid][pMember] -= 1500; 
	GivePlayerMoney(playerid, -1500); 
	SendClientMessage(playerid, -1, "Вы получили машину!");
	PutPlayerInVehicle(veh_dalnoboy[playerid], playerid, 0); // сажаем в созданную машину
	return true; 
}

 

 

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


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

@stibs 

    if(pickupid == dalnoboypick)
{
  	if(PI[playerid][pJob] != JOB_TRUCKER)
	{
      SCM(playerid, COLOR_DARKORANGE, "Вы не дальнобойщик!");
      SCM(playerid, COLOR_DARKORANGE, "Устроиться на работу можно в правительстве (/gps - 1 - 1).");
	  RemoveFromVehicle(playerid);
	  return 1;
	}
	if(PI[playerid][pTruckSkill] == TRUCK_LEVEL_2)
	{
		veh_dalnoboy[playerid] = CreateVehicle(515, 1746.5354,2263.7712,16.5069, 187.3303, -1, -1, -1); //выдаем машину для 2 уровня дальнобойщика
	} // по аналогии продолжать далее, оставил один, так как в моде только один уровень дальнобойщиков
	PI[playerid][pMember] -= 1500;
	GivePlayerMoney(playerid, -1500);
	SendClientMessage(playerid, -1, "Вы получили машину!");
	PutPlayerInVehicle(veh_dalnoboy[playerid], playerid, 0); // сажаем в созданную машину
	return true;
}

Так правильно?

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


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

@stibs Теперь, машина не появляется, но деньги снимаются может нужно не CreateVehicle? использовать

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


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

Попробуйте свой код заменить на этот и попробовать еще раз: 
 

    if(pickupid == dalnoboypick)
{
  	if(PI[playerid][pJob] != JOB_TRUCKER)
	{
      SCM(playerid, COLOR_DARKORANGE, "Вы не дальнобойщик!");
      SCM(playerid, COLOR_DARKORANGE, "Устроиться на работу можно в правительстве (/gps - 1 - 1).");
	  RemoveFromVehicle(playerid);
	  return 1;
	}
	if(PI[playerid][pTruckSkill] == TRUCK_LEVEL_2)
	{
		veh_dalnoboy[playerid] = CreateVehicle(515, 1746.5354,2263.7712,16.5069, 187.3303, -1, -1, -1); //выдаем машину для 2 уровня дальнобойщика
	} // по аналогии продолжать далее, оставил один, так как в моде только один уровень дальнобойщиков
	PI[playerid][pMember] -= 1500;
	GivePlayerMoney(playerid, -1500);
	SendClientMessage(playerid, -1, "Вы получили машину!");
	PutPlayerInVehicle(playerid, veh_dalnoboy[playerid], 0); // сажаем в созданную машину
	return true;
}

 

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


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

@stibs 

CMD:tskill(playerid)
{
	new string[128], status[20], count[40], target;
	if(PI[playerid][pTruckSkill] >= TRUCK_LEVEL_2) { status = "Стабильный работник"; target = 0; }
	else { status = "Начинающий работник"; target = TRUCK_LEVEL_2; }
	if(!target) format(count, sizeof(count), "%d", PI[playerid][pTruckSkill]);
	else format(count, sizeof(count), "%d/%d", PI[playerid][pTruckSkill], target);
	format(string, sizeof(string),"{FFFFFF}Статус: %s\nПеревезено груза: %s кг", status, count);
	ShowPlayerDialog(playerid, D_NULL, DIALOG_STYLE_MSGBOX, "{ffa500}Дальнобойщик", string, "Закрыть", "");
	return 1;
}

Может все таки лвл 2?

 

@stibs И из-за того этого не выдает авто

@stibs Вот проверка на ЛВЛ есть

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))
						{
							SCM(playerid, COLOR_GREY, "Ваш опыт работы дальнобойщиком не достаточен для этого транспорта");
							RemoveFromVehicle(playerid);
							return 1;
						}

 

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


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

@archiboy6 Попробуйте свой код заменить этим: 
 

Спойлер

    if(pickupid == dalnoboypick)
{
  	if(PI[playerid][pJob] != JOB_TRUCKER)
	{
      SCM(playerid, COLOR_DARKORANGE, "Вы не дальнобойщик!");
      SCM(playerid, COLOR_DARKORANGE, "Устроиться на работу можно в правительстве (/gps - 1 - 1).");
	  RemoveFromVehicle(playerid);
	  return 1;
	}
	if(PI[playerid][pTruckSkill] == TRUCK_LEVEL_2)
	{
		veh_dalnoboy[playerid] = CreateVehicle(515, 1746.5354,2263.7712,16.5069, 187.3303, -1, -1, -1); //выдаем машину для 2 уровня дальнобойщика
	} 
	else
	{
		veh_dalnoboy[playerid] = CreateVehicle(515, 1746.5354,2263.7712,16.5069, 187.3303, -1, -1, -1); //выдаем машину для 1 уровня дальнобойщика
	}
	PI[playerid][pMember] -= 1500;
	GivePlayerMoney(playerid, -1500);
	SendClientMessage(playerid, -1, "Вы получили машину!");
	PutPlayerInVehicle(playerid, veh_dalnoboy[playerid], 0); // сажаем в созданную машину
	return true;
}

Во втором случае (для первого лвл'а дальнобойщика) на свои координаты. 

 

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


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

@archiboy6 Свой код замените этим, после вызовите его в игре и скиньте логи. 

Спойлер

  if(pickupid == dalnoboypick)
{
    print("Пикап вызван");
  	if(PI[playerid][pJob] != JOB_TRUCKER)
	{
      SCM(playerid, COLOR_DARKORANGE, "Вы не дальнобойщик!");
      SCM(playerid, COLOR_DARKORANGE, "Устроиться на работу можно в правительстве (/gps - 1 - 1).");
	  RemoveFromVehicle(playerid);
	  return 1;
	}
    printf("%d", PI[playerid][pTruckSkill]);
	if(PI[playerid][pTruckSkill] == TRUCK_LEVEL_2)
	{
		veh_dalnoboy[playerid] = CreateVehicle(515, 1746.5354,2263.7712,16.5069, 187.3303, -1, -1, -1); //выдаем машину для 2 уровня дальнобойщика
      	print("vehicle created");
	} 
	else
	{
		veh_dalnoboy[playerid] = CreateVehicle(515, 1746.5354,2263.7712,16.5069, 187.3303, -1, -1, -1); //выдаем машину для 1 уровня дальнобойщика
        print("vehicle created");
	}
	PI[playerid][pMember] -= 1500;
	GivePlayerMoney(playerid, -1500);
	SendClientMessage(playerid, -1, "Вы получили машину!");
	PutPlayerInVehicle(playerid, veh_dalnoboy[playerid], 0); // сажаем в созданную машину
	return true;
}

 

 

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


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

@stibs 

Спойлер

[21:20:37] [MySQL]: Подключение к базе данных прошло успешно
[21:20:37] Number of vehicle models: 7
[21:20:37] [Загружено орг/раб. автомобилей]: <135>. Потрачено: <4 ms>.
[21:20:37] [Загружено рангов для фракций]: <13>. Потрачено: <0 ms>.
[21:20:37] [Загружено бизнесов]: <4>. Потрачено: <1 ms>.
[21:20:37] [Загружено домов]: <2>. Потрачено: <0 ms>.
[21:20:37] [Загружены склады мафий]: Потрачено: <0 ms>.
[21:20:37] [Загружены склады ОПГ]: Потрачено: <0 ms>.
[21:20:37] [Загружено банкоматов]: <3>. Потрачено: <0 ms>.
[21:20:37] [Загружено остальное]: Потрачено: <0 ms>.
[21:20:37] [Загружено радаров]: <2>. Потрачено: <0 ms>.
[21:20:37] [System Hotels]: 50 hotels successfully loaded
[21:20:58] Incoming connection: 188.190.192.193:53100
[21:20:58] [join] Evgeniy_Samsonov has joined the server (0:188.190.192.193)
[21:21:35] Пикап вызван
[21:21:35] 0
[21:21:35] vehicle created

 

 

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


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

@stibs В моде у меня созданы вот так AddStaticVehicleEx другие авто

@stibs AddVehicleEX может попробовать? 

 

@archiboy6 Нет, все таки CreateVehicleEx я тут посмотрел у меня так прицеп создается, сейчас проверю

@archiboy6 Да все работает, Это удалять можно?

if((vehicleid >= trucker1lvl[0] && vehicleid <= trucker1lvl[1]) || (vehicleid >= trucker2lvl[0] && vehicleid <= trucker2lvl[1]))
					{
						if(PI[playerid][pJob] != JOB_TRUCKER)
						{
						    SCM(playerid, COLOR_DARKORANGE, "Вы не дальнобойщик!");
						    SCM(playerid, COLOR_DARKORANGE, "Устроиться на работу можно в правительстве (/gps - 1 - 1).");
							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))
						{
							SCM(playerid, COLOR_GREY, "Ваш опыт работы дальнобойщиком не достаточен для этого транспорта");
							RemoveFromVehicle(playerid);
							return 1;
						}
						if(GetMoney(playerid) < price)
						{
							new string[128];
							format(string, sizeof(string), "Вам нужно %d руб, чтобы арендовать этот грузовик", price);
							SCM(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, "{ffa500}Аренда", string, "Да", "Нет");
						}
					}
				}

 

@stibs

Спойлер

if((vehicleid >= trucker1lvl[0] && vehicleid <= trucker1lvl[1]) || (vehicleid >= trucker2lvl[0] && vehicleid <= trucker2lvl[1]))
					{
						if(PI[playerid][pJob] != JOB_TRUCKER)
						{
						    SCM(playerid, COLOR_DARKORANGE, "Вы не дальнобойщик!");
						    SCM(playerid, COLOR_DARKORANGE, "Устроиться на работу можно в правительстве (/gps - 1 - 1).");
							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))
						{
							SCM(playerid, COLOR_GREY, "Ваш опыт работы дальнобойщиком не достаточен для этого транспорта");
							RemoveFromVehicle(playerid);
							return 1;
						}
						if(GetMoney(playerid) < price)
						{
							new string[128];
							format(string, sizeof(string), "Вам нужно %d руб, чтобы арендовать этот грузовик", price);
							SCM(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, "{ffa500}Аренда", string, "Да", "Нет");
						}
					}
				}

 

 

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


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

@archiboy6 не нужно много раз одно и то же писать, система анти-спам объединяет ваши сообщения автоматически. Насчет этого кода, то можете удалить. 

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


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

@stibs Хорошо, помогите еще сделать так что когда игрок вышел из авто через 60 сек оно удалялось

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


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

@archiboy6 В OnPlayerExitVehicle: 
 

if(PI[playerid][pJob] == JOB_TRUCK)
{
	SendClientMessage(playerid, -1, "Вы покинули авто дальнобойщика. У вас осталось 60 секунд или машина будет зареспавнена!");
	SetTimerEx("ExitVehicleTruck", 60*1000, false, "ii", playerid, vehicleid); 
	return true; 
}

И в конце мода: 
 

forward ExitVehicleTruck(playerid, carr);
public ExitVehicleTruck(playerid, carr)
{
	SetVehicleToRespawn(carr); 
	SendClientMessage(playerid, -1, "Ваш автомобиль зареспавнен!");
	return true; 
}

 

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


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

@stibs Спасибо, я сейчас тему создам поможете исправить варнинги?

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


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

@stibs Теперь когда устроен дальнобойщиком и выхожу с любой машины, она спавнится, и мне надо не спавн а удаление 

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


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

@archiboy6 Значит, вместо SetVehicleToRespawn(carr); используйте DestroyVehicle(carr);

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


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

@DEST а как сделать чтобы не на всех авто писало а только на дальнобое?

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


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

@archiboy6 чего писало-то? 
 

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


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

@DEST  когда устроен дальнобойщиком и выхожу с любой машины пишет

Вы покинули авто дальнобойщика. У вас осталось 60 секунд или машина будет зареспавнена!

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


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

@archiboy6

Замените свой код в OnPlayerExitVehicle на данный: 

if(PI[playerid][pJob] == JOB_TRUCK && vehicleid >= trucker1lvl[0] && vehicleid <= trucker1lvl[1]) || vehicleid >= trucker2lvl[0] && vehicleid <= trucker2lvl[1])
{
	SendClientMessage(playerid, -1, "Вы покинули авто дальнобойщика. У вас осталось 60 секунд или машина будет зареспавнена!");
	SetTimerEx("ExitVehicleTruck", 60*1000, false, "ii", playerid, vehicleid); 
	return true; 
}

Так попробуй

 

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


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

@DEST 

D:\GHEKA\Моды\AVRP\gamemodes\stel.pwn(34113) : warning 217: loose indentation
D:\GHEKA\Моды\AVRP\gamemodes\stel.pwn(37496) : warning 217: loose indentation
D:\GHEKA\Моды\AVRP\gamemodes\stel.pwn(39968) : warning 217: loose indentation
D:\GHEKA\Моды\AVRP\gamemodes\stel.pwn(39968) : error 017: undefined symbol "JOB_TRUCK"
D:\GHEKA\Моды\AVRP\gamemodes\stel.pwn(39968) : warning 215: expression has no effect
D:\GHEKA\Моды\AVRP\gamemodes\stel.pwn(39968) : error 001: expected token: ";", but found "]"
D:\GHEKA\Моды\AVRP\gamemodes\stel.pwn(39968) : error 029: invalid expression, assumed zero
D:\GHEKA\Моды\AVRP\gamemodes\stel.pwn(39968) : fatal error 107: too many error messages on one line






if(PI[playerid][pJob] == JOB_TRUCK && vehicleid >= trucker1lvl[0] && vehicleid <= trucker1lvl[1]) || vehicleid >= trucker2lvl[0] && vehicleid <= trucker2lvl[1])

 

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


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

@archiboy6 Так сделайте: 
 

if((vehicleid >= trucker1lvl[0] && vehicleid <= trucker1lvl[1]) || (vehicleid >= trucker2lvl[0] && vehicleid <= trucker2lvl[1]))
{
    if(PI[playerid][pJob] != JOB_TRUCK) return SendClientMessage(playerid, -1, "Вы не работаете дальнобойщиком!");

    SendClientMessage(playerid, -1, "Вы покинули авто дальнобойщика. У вас осталось 60 секунд или машина будет зареспавнена!");
    SetTimerEx("ExitVehicleTruck", 60*1000, false, "ii", playerid, vehicleid); 
    return true; 
}

Если будут ошибки на JOB_TRUCK, значит верните его в мод и не сносите больше. 

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


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

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

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

    • Узбек
      От Узбек
      Всем добрый вечер ребят! 
      Я начинающий, сегодня я вам сливаю команду 2(шт) на технические работы
      Ловите 
       
    • 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

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