Вопросы

Дюха
Освоившийся

Помогите пожалуйста,Я мучаюсь уже 2 дня,Не могу сделать,Можете объяснить как:Заранее спасибо)

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


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

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

  • 0
Cawfee
Великий Гуру

@Дюха, ну, например, как-то вот так:

public OnPlayerDeath(playerid, killerid, reason) {
	
	SetSpawnInfo(playerid, 0, 0, /* позиция спавна X */, /*позиция спавна Y*/, /*позиция спавна Z*/, /*позиция спавна A*/, 0, 0, 0, 0, 0, 0);
	return 1;
}

А по окончании лечения следует повторно изменить данные появления игрока через SetSpawnInfo и отправить его на респавн:

SetSpawnInfo(playerid, 0, 0, /* позиция спавна X */, /*позиция спавна Y*/, /*позиция спавна Z*/, /*позиция спавна A*/, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);

 

Однако учтите, что этот метод будет правильно работать только при условии, что в OnPlayerSpawn вы не производите изменение позиции игрока (SetPlayerPos). Если же вы производите, тогда применяйте следующий вариант:

public OnPlayerSpawn(playerid, killerid, reason) {
	SetPVarInt(playerid, "flag_hospital_spawn", 1);
	
	return 1;
}

public OnPlayerSpawn(playerid) {
	if(GetPVarInt(playerid, "flag_hospital_spawn") == 1) {
		SetPlayerPos(playerid, /*позиция спавна X*/, /*позиция спавна Y*/, /*позиция спавна Z*/);
		SetPVarInt(playerid, "flag_hospital_spawn", 0);
		return 1;
	}
	
	return 1;
}

 

Но вообще следует понимать, что логика во втором варианте неправильная. Да, этот метод будет работать, но не предполагалось использовать спавн игрока таким методом. 

 

Изначально считалось, что пользователи должны устанавливать, где игрок будет появляться через SetSpawnInfo. Там и задаются стандартные координаты появления. Однако, все стали использовать изменение позиции игрока через SetPlayerPos внутри OnPlayerSpawn. Из-за этого получается, что при смерти игрок появляется сначала на координатах, которые заданы через SetSpawnInfo (а, учитывая, что оно не используется, эти координаты равны нулю), то есть по сути на координатах 0.0, 0.0, 0.0. А затем уже через SetPlayerPos игрок отправляется на нужные координаты. И порой это время между первым и вторым появлением настолько велико, что игрок успевает заметить, как первый раз появился не там, где нужно. Менять логику на уже готовых модах слишком муторно. Поэтому, к сожалению, актуален второй метод разрешения вашего вопроса.

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


Ссылка на сообщение
  • 0
Дюха
Освоившийся
  В 4/21/2019 в 20:02, odosenok сказал:

@Дюха, ну, например, как-то вот так:

public OnPlayerDeath(playerid, killerid, reason) {
	
	SetSpawnInfo(playerid, 0, 0, /* позиция спавна X */, /*позиция спавна Y*/, /*позиция спавна Z*/, /*позиция спавна A*/, 0, 0, 0, 0, 0, 0);
	return 1;
}

А по окончании лечения следует повторно изменить данные появления игрока через SetSpawnInfo и отправить его на респавн:

SetSpawnInfo(playerid, 0, 0, /* позиция спавна X */, /*позиция спавна Y*/, /*позиция спавна Z*/, /*позиция спавна A*/, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);

 

Однако учтите, что этот метод будет правильно работать только при условии, что в OnPlayerSpawn вы не производите изменение позиции игрока (SetPlayerPos). Если же вы производите, тогда применяйте следующий вариант:

public OnPlayerSpawn(playerid, killerid, reason) {
	SetPVarInt(playerid, "flag_hospital_spawn", 1);
	
	return 1;
}

public OnPlayerSpawn(playerid) {
	if(GetPVarInt(playerid, "flag_hospital_spawn") == 1) {
		SetPlayerPos(playerid, /*позиция спавна X*/, /*позиция спавна Y*/, /*позиция спавна Z*/);
		SetPVarInt(playerid, "flag_hospital_spawn", 0);
		return 1;
	}
	
	return 1;
}

 

Но вообще следует понимать, что логика во втором варианте неправильная. Да, этот метод будет работать, но не предполагалось использовать спавн игрока таким методом. 

 

Изначально считалось, что пользователи должны устанавливать, где игрок будет появляться через SetSpawnInfo. Там и задаются стандартные координаты появления. Однако, все стали использовать изменение позиции игрока через SetPlayerPos внутри OnPlayerSpawn. Из-за этого получается, что при смерти игрок появляется сначала на координатах, которые заданы через SetSpawnInfo (а, учитывая, что оно не используется, эти координаты равны нулю), то есть по сути на координатах 0.0, 0.0, 0.0. А затем уже через SetPlayerPos игрок отправляется на нужные координаты. И порой это время между первым и вторым появлением настолько велико, что игрок успевает заметить, как первый раз появился не там, где нужно. Менять логику на уже готовых модах слишком муторно. Поэтому, к сожалению, актуален второй метод разрешения вашего вопроса.

Читать далее...  

Спасибо + тебе

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


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

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

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

    • Jasper231
      От Jasper231
      Идет набор в команду для создания CRMP MOBILE проекта. Нам нужны
      1) Кодеры
      2) Мапперы
      3) Люди которые вообще разбираются в создании серверов
       
      об зарпалте договоримся и об остальном поговорим в вк: @haslyyyim
    • otec
      От otec
      Копия радмира
      ║☑️Название CORVUS CRMP
      ║☑️Сервер у которого есть будущее и будет
      ║☑️Адекватная администрация
      ║☑️Идут наборы в Лидеры, Админы.
      ║☑️Вступайте в Telegram: t.me/corvusgta « Вступай!
      ║☑️Вступайте в ВКонтакте: vk.com/corvus_crmp « Вступай!
      ║☑️Постоянные ПРИЗЫ - МП | Интересный Мод
      ║☑️Все новости - обновления в Telegram и ВКонтакте
      ║☑️Сайт - corvus-crmp.ru
      ║☑️Форум - forum.corvus-crmp.ru
      ║☑️Скачать лаунчер - corvus-crmp.ru
      ║☑️Заходи мы ждем тебя
      ║☑️В случае возможных ошибок пишите сюда:@corvus_help_bot
    • vicegame
      От vicegame
      Доброго времени суток уважаемые форумчане
      Хочу представить наши услуги и цены:
      GTA SAMP от 75руб
      GTA CRMP от 75 руб
      GTA MTA от 120 руб
      Для каждого тарифа неограниченные слоты, оплата только за ресурсы 
      Удобная панель управления и широкий функционал 
      Работаем с 2023 года!
       
      Также имеются БЕСПЛАТНЫЕ тарифы для (ознакомительных целей)
       
      Мощные процессоры Ryzen 5950X (Германия)
       
      Платежная система YooKassa на борту:
      Банковские карты
      SberPay
      TinkoffPay
      Yoomoney

      Ссылка на хостинг: ТЫК
    • hatriyikko
      От hatriyikko
      Требуется мобильная сборка мод + клиент + лаунчер

      Копия Радмира, Блэк Раши или что-то другое с аналогичным функционалом. Основной упор на бизнесы, чтобы всё исправно работало
       
      Напишите сколько это будет стоить?

      В дальнейшем также могут понадобиться какие то доработки мода, если всё ок рассматриваю долгосрочное сотрудничество

      Связь тут или в тг @kovart7