Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Сохраняем координаты авто автоматически при выходе - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ GF ]
Сохраняем координаты авто автоматически при выходе
Оценка: -----

#1
Пользователь офлайн   Mike 

  • Администратор
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Здравствуйте, по просьбе, решил написать небольшой урок, по сохранению координатов транспорта при выходе из него, принцип работы очень простой, сохраняю координаты, просто с помощью pubic'a OnPlayerExitVehicle .


Итак, сначало сделаем функицю, для сохранения координат(вставить ее можно куда угодно, но желательно, в любое место которое выше паблика OnPlayerExitVehicle):
stock SavePos(playerid)
{
                               new Float:x,Float:y,Float:z,Float:a,carid,getcarid;
				new playername[MAX_PLAYER_NAME];
				if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey]) { carid = PlayerInfo[playerid][pPcarkey]; }
				else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey2]) { carid = PlayerInfo[playerid][pPcarkey2]; }
				else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey3]) { carid = PlayerInfo[playerid][pPcarkey3]; }
				else { return 1; }
				getcarid = GetPlayerVehicleID(playerid);
				GetPlayerName(playerid, playername, sizeof(playername));
				GetVehiclePos(carid, x, y, z);
				GetVehicleZAngle(carid, a);
				if(IsPlayerInVehicle(playerid,carid) && CarInfo[carid][cOwned] == 1)
				{
			   		if(PlayerInfo[playerid][pPcarkey] == -1 && PlayerInfo[playerid][pPcarkey2] == -1 & PlayerInfo[playerid][pPcarkey3])
					{
						SendClientMessage(playerid, COLOR_GREY, "У вас нет транспорта!");
						return 1;
					}
					if(getcarid == carid)
					{
                                                CarInfo[carid][cLocationx] = x;
						CarInfo[carid][cLocationy] = y;
						CarInfo[carid][cLocationz] = z;
						CarInfo[carid][cAngle] = a;
						PutPlayerInVehicle(playerid,carid,0);
						OnPropUpdate();
						OnPlayerUpdate(playerid);
						return 1;
   					}
				}
				return 1;
}


Пояснение:


Создаем переменные:
       new Float:x,Float:y,Float:z,Float:a,carid,getcarid;


Ставим проверки:
if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey]) { carid = PlayerInfo[playerid][pPcarkey]; } // проверка на 1 авто
				else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey2]) { carid = PlayerInfo[playerid][pPcarkey2]; } // на 2 авто
				else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pPcarkey3]) { carid = PlayerInfo[playerid][pPcarkey3]; } // на 3 авто
				else { return 1; } // иначе просто возвращаем 1


getcarid = GetPlayerVehicleID(playerid); // присваеваем переменной значение(функцию)
				GetPlayerName(playerid, playername, sizeof(playername)); // узнаем ник игрока(для того чтобы узнать владелец он или нет)
				GetVehiclePos(carid, x, y, z); // узнаем положение авто
				GetVehicleZAngle(carid, a); // узнаем угол поворота авто


if(IsPlayerInVehicle(playerid,carid) && CarInfo[carid][cOwned] == 1) // проверяем игрок в авто и это авто куплено или нет
				{
			   		if(PlayerInfo[playerid][pPcarkey] == -1 && PlayerInfo[playerid][pPcarkey2] == -1 & PlayerInfo[playerid][pPcarkey3]) // проверяем ключи авто
					{
						SendClientMessage(playerid, COLOR_GREY, "У вас нет транспорта!");
						return 1;
					}
					if(getcarid == carid) // если человек владелец авто значит
					{
                                                CarInfo[carid][cLocationx] = x; // устанавливаем для авто координаты x
						CarInfo[carid][cLocationy] = y; // устанавливаем для авто координаты y
						CarInfo[carid][cLocationz] = z; // устанавливаем для авто координаты z
						CarInfo[carid][cAngle] = a; // устанавливаем для авто угол поворота 
						OnPropUpdate(); // обновляем данные
						OnPlayerUpdate(playerid); // обновляем данные





Теперь будем сохранять координаты при выходе из транспорта, нужно в public OnPlayerExitVehicle(playerid, vehicleid) вставить:
SavePos(playerid);




Есть еще один вариант, это просто в public OnPlayerExitVehicle(playerid, vehicleid) поставить(так тоже будет работать):
OnPlayerCommandText(playerid, "/command"); // вместо /command ваша команда парковки


Урок был написан под LARP (возможно и под GF подойдет)
Вот и собственно все! Теперь когда вы выйдите из авто, то ее координаты автоматически сохраняться , и при рестарте авто появится там!

Автор: Mike

Сообщение отредактировал Mike: 19 Апрель 2012 - 22:48

2

#2
Пользователь офлайн   El_Wayne 

  • Прохожий
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
о спасибо давно искал
0

#3
Пользователь офлайн   Spector_1th 

  • Прохожий
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Много лишнего делаешь. Это делается, в общей сложности, строчек в 10-15(и то это многовато). Не важно какой мод
0

#4
Пользователь офлайн   Mike 

  • Администратор
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Просмотр сообщенияSpector_1th (19 Апрель 2012 - 21:21) писал:

Много лишнего делаешь. Это делается, в общей сложности, строчек в 10-15(и то это многовато). Не важно какой мод

возможно, признаюсь не оптимизировано.
0

#5
Пользователь офлайн   Miller 

  • Пользователь
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
Не хорошая идейка... А если допустим многие в мэрию пойдут, забросают тачки там, скажем прикалываться решили. Из-за чего возникнут лаги. А если тачка упадет в воду? Все, прощай тачка на веки??
0

#6
Пользователь офлайн   Mike 

  • Администратор
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Просмотр сообщенияMiller (26 Июль 2012 - 12:32) писал:

Не хорошая идейка... А если допустим многие в мэрию пойдут, забросают тачки там, скажем прикалываться решили. Из-за чего возникнут лаги. А если тачка упадет в воду? Все, прощай тачка на веки??


А вот это верно ты подметил... Но все же, можно переделать, например SavePos вызывать по команде.
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей