Question

archiboy6
Гуру форума
case SelectVokzal:
		{
            if(!response) return true;
            switch(listitem)
            {
				case 0:
				{
				FreezePlayer(playerid, 2000);
				SetPlayerPos(playerid, 445.4452,1565.1268,12.0150);
				SetPlayerFacingAngle(playerid, 360.0);
				SetCameraBehindPlayer(playerid);
				SetPlayerInterior(playerid, 0);
				SetPlayerVirtualWorld(playerid, 0);
				SpawnPlayer(playerid);
				}
				case 1:
				{
				FreezePlayer(playerid, 2000);
				SetPlayerPos(playerid, 2550.0535,-2188.1401,21.9676);
				SetPlayerFacingAngle(playerid, 360.0);
				SetCameraBehindPlayer(playerid);
				SetPlayerInterior(playerid, 0);
				SetPlayerVirtualWorld(playerid, 0);
				SpawnPlayer(playerid);
				}
				case 2:
				{
				FreezePlayer(playerid, 2000);
				SetPlayerPos(playerid, 1881.8746,2179.2578,15.8324);
				SetPlayerFacingAngle(playerid, 360.0);
				SetCameraBehindPlayer(playerid);
				SetPlayerInterior(playerid, 0);
				SetPlayerVirtualWorld(playerid, 0);
				SpawnPlayer(playerid);
				}
				case 3:
				{
        		FreezePlayer(playerid, 2000);
				SetPlayerPos(playerid, -1143.4941,-401.8166,1.0187);
				SetPlayerFacingAngle(playerid, 360.0);
				SetCameraBehindPlayer(playerid);
				SetPlayerInterior(playerid, 0);
				SetPlayerVirtualWorld(playerid, 0);
				SpawnPlayer(playerid);
                }
			}
			return true;
		}

 

Share this post


Link to post

3 answers to this question

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

@archiboy6, в таком случае изменять позицию игрока стоит в OnPlayerSpawn. То есть Вы должны создать какой-нибудь флаг для игрока, например:

SetPVarInt(playerid, "FlagSpawn", listitem);

И этот флаг следует устанавливать в диалоге SelectVokzal:

case SelectVokzal:
{
	if(!response){
		return 1;
	}
	
	SetPVarInt(playerid, "FlagSpawn", listitem+1);
	SpawnPlayer(playerid);
}

А затем немного подредактируйте OnPlayerSpawn:

Спойлер

public OnPlayerSpawn(playerid)
{
	switch(GetPVarInt(playerid, "FlagSpawn"))
	{
		case 1:
		{
			FreezePlayer(playerid, 2000);
			SetPlayerPos(playerid, 445.4452,1565.1268,12.0150);
			SetPlayerFacingAngle(playerid, 360.0);
			SetCameraBehindPlayer(playerid);
			SetPlayerInterior(playerid, 0);
			SetPlayerVirtualWorld(playerid, 0);
		}
		case 2:
		{
			FreezePlayer(playerid, 2000);
			SetPlayerPos(playerid, 2550.0535,-2188.1401,21.9676);
			SetPlayerFacingAngle(playerid, 360.0);
			SetCameraBehindPlayer(playerid);
			SetPlayerInterior(playerid, 0);
			SetPlayerVirtualWorld(playerid, 0);
		}
		case 3:
		{
			FreezePlayer(playerid, 2000);
			SetPlayerPos(playerid, 1881.8746,2179.2578,15.8324);
			SetPlayerFacingAngle(playerid, 360.0);
			SetCameraBehindPlayer(playerid);
			SetPlayerInterior(playerid, 0);
			SetPlayerVirtualWorld(playerid, 0);
		}
		case 4:
		{
			FreezePlayer(playerid, 2000);
			SetPlayerPos(playerid, -1143.4941,-401.8166,1.0187);
			SetPlayerFacingAngle(playerid, 360.0);
			SetCameraBehindPlayer(playerid);
			SetPlayerInterior(playerid, 0);
			SetPlayerVirtualWorld(playerid, 0);
		}
	}
	
	// тут остальной код
	return 1;
}

 

 

Но вообще следует понимать, что при наличии SetPlayerPos в OnPlayerSpawn возникает следующая проблема: вызывается OnPlayerSpawn. У игрока нет предустановленных координат появления, потому он появляется на координатах 0.0, 0.0, 0.0. Затем обрабатывается код OnPlayerSpawn, где присутствуют изменения позиций (SetPlayerPos), которые направляют игрока в нужное место. В итоге происходит двойное появление. В идеале код должен иметь следующий вид:

Спойлер

public OnPlayerDeath(playerid, killerid, reason)
{
	gPlayer[playerid][pDeath] = true;
	SpawnPlayerEx(playerid);
	return 1;
}

stock SpawnPlayerEx(playerid)
{
	if(gPlayer[playerid][pDeath] = true){
		gPlayer[playerid][pDeath] = false;
		SetSpawnInfo(playerid, 0, 0, позиция больницы X, позиция больницы Y, позиция больницы Z, позиция больницы A, 0, 0, 0, 0, 0, 0);
	}
	else if(игрок в тюрьме == true){
		игрок в тюрьме = false
		SetSpawnInfo(playerid, 0, 0, позиция тюрьмы X, позиция тюрьмы Y, позиция тюрьмы Z, позиция тюрьмы A, 0, 0, 0, 0, 0, 0);
	}
	
	SpawnPlayer(playerid);
	return 1;
}

 

 

Share this post


Link to post
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

    • danya_white
      By danya_white


      Скачать файл Оригинальный мод SA:MP Action Games aka Revent RP
      Доброго времени суток, хочу выставить на продажу уникального игровой мод проекта Action Games ( Revent RP )
      Известный мод проекта который существовал с 2016 года, 
      Мод уникальный и многофункциональный, но требует доработок и улучшений достаточно много недороботок/багов
      Продаю потому что нет времени и желание продолжать работу над этим модом
      Основа мода Revent RP, разрабатывался под проект Action Games
       
      Информация о моде:
      Версия MYSQL -  MySQL R41-4
      Античит - NEX-AC
      Стример - Streamer Plugin v2.9.6 by Incognito
      Командный процессор - Pawn.CMD
      Хэширование паролей - MD5
      Игровой мод разбит на файлы
      Остальное Все плагины обновлены до последней версии

      Функционал, интерфейс можно посмотреть по скриншотам и видеообзорам ниже.
       
      Добавил danya_white Добавлено 05/31/26 Категория Моды Автор danya_whtie  
    • danya_white
      By danya_white
      Доброго времени суток, хочу выставить на продажу уникального игровой мод проекта Action Games ( Revent RP )
      Известный мод проекта который существовал с 2016 года, 
      Мод уникальный и многофункциональный, но требует доработок и улучшений достаточно много недороботок/багов
      Продаю потому что нет времени и желание продолжать работу над этим модом
      Основа мода Revent RP, разрабатывался под проект Action Games
       
      Информация о моде:
      Версия MYSQL -  MySQL R41-4
      Античит - NEX-AC
      Стример - Streamer Plugin v2.9.6 by Incognito
      Командный процессор - Pawn.CMD
      Хэширование паролей - MD5
      Игровой мод разбит на файлы
      Остальное Все плагины обновлены до последней версии

      Функционал, интерфейс можно посмотреть по скриншотам и видеообзорам ниже.
       
    • мурзик НЕРНО
      By мурзик НЕРНО
      Помогите пожалуйста у меня есть мод от нового RUSSIA RP и там баг есть некоторые места на карте ваще дырки как будто вырезанные так же и с интерьерами вроде в моде написаны я сам лично проверял на другом моде работают а на этотм ваще некоторый из них не отображается и вот когда я захожу на другой проект все нормально с картой и не куда не проваливаюсь так же и на пк тоже я посоветовался с другими разработчиками они сказал дело в этом файле только я не понимаю что там надо ваще поменять или добавить буду рад если поможете
       
      Скрины так же есть там таких мест очень много
      MAP.inc