Вопросы

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;
		}

 

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


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

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

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

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

SetPVarInt(playerid, "FlagSpawn", listitem);

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

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

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

  OnPlayerSpawn (открыть спойлер)

 

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

  Образец (открыть спойлер)

 

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


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

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

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

    • bogdan295@gmai
      От bogdan295@gmai
      Здраствуйте, я создавал новую организации когда дело дашло до пикапов они не создаются 
      new lssd1; new lssd2;  else if(pickupid == lssd2)// Вход     {         SetPlayerInteriorEx(playerid,0);         SetPPos(playerid,1567.5510,-1657.9956,5.3859);         SetPlayerFacingAngle(playerid, 500);         return true;     } else if(pickupid == lssd1)// Вsход     {         SetPlayerInteriorEx(playerid,0);         SetPPos(playerid,630.0542,-572.0032,16.3359);         SetPlayerFacingAngle(playerid, 500);         return true;     }     lssd2 = CreatePickupAC(1318,1,626.9653,-571.8394,17.9207, 147); // вход лссд     lssd1 = CreatePickupAC(1318,1,1567.4720,-1660.6494,5.3859, 147); // выход лссд Что я сделал не так?