Рекомендованные сообщения



Не найдено.

3 posts in this topic

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

0

Share this post


Link to post
Share on other sites

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

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 игрок отправляется на нужные координаты. И порой это время между первым и вторым появлением настолько велико, что игрок успевает заметить, как первый раз появился не там, где нужно. Менять логику на уже готовых модах слишком муторно. Поэтому, к сожалению, актуален второй метод разрешения вашего вопроса.

4

Share this post


Link to post
Share on other sites
19 часов назад, 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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • MacLuckys
      By MacLuckys
      Приветствую, не могу найти маппинг сервера. На сервере маппинг есть, в моде указано stock LoadObject() и перечисление    
       #include "../include/objects"
       #include "../include/ints"
       #include "../include/VipHouseLavrov"
      и т.д.
      В FileZilla нет папки include, а маппинг все равно есть на сервере. Где может храниться маппинг если указан этот путь? Все перерыл..