Вопросы

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

SpawnPlayer удали из всех этих кейсов.

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


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

@odosenok тогда игрока не спавнит, и остаются кнопки

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


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

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

 

 

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


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

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

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

    • Доналдо Фарекелка
      От Доналдо Фарекелка


      Скачать файл Arizona RolePlay || Ser
      Приветствую, этот мод я нашёл на просторах интернета. 
      Скачал мод у автора:  Developer Stravinskiy
      Доработал мод: Donaldo_Farekelka
       
      Предупреждаю! Мод сырой, багов стало меньше, но они есть.
      Мод: Баня, Подвал, В некоторых местах маппинг, система коронавируса, 8 лвл админок
       
      Информация:
      1) Dc_Cmd
      2) Mysql, mode, language - Всё настраивается теперь в pawno ( UPDATE: 1.1.0 )
      3) Административные права в данный момент можно выдать только через MYSQL ( BD ).
       
      То что я сделал ( Всё что я делаю сейчас, смотрите в изменениях ):
       
      Добавил Доналдо Фарекелка Добавлено 13.04.2023 Категория Моды Автор shenol (vk.com/donaldo_farekelka)  
    • SheikhMAN
      От SheikhMAN
      Цель: Хочу сделать систему авторизации, нужно сделать чтобы шла проверка через mysql игрока т.е какой пароль у данного игрока так-же узнавался пароль, если данный пароль не совпадает тогда пишет что "Пароль не верен!"
      Что нужно сделать: Нашёл данный скрипт, помогите решить проблему (прикрепил файлик)
      new db_password[sizeof(player_info[playerid][S_PASSWORD])];     cache_get_field_content(0, "password", db_password, dbHandle);     new resultat = !strcmp(inputtext, db_password);     if(resultat) SCM(playerid, COLOR_WHITE, "Пароль верный!"), SpawnPlayer(playerid);     else SCM(playerid, COLOR_RED, "Не верный!"), ShowLogin(playerid);  Проблема находится в  -
      new db_password[sizeof(player_info[playerid][S_PASSWORD])]; Сама ошибка - 
      error 001: expected token: "]", but found "-identifier-" warning 215: expression has no effect error 001: expected token: ";", but found "]" error 029: invalid expression, assumed zero  fatal error 107: too many error messages on one line Коллеги прошу помощи, мне кажется здесь не столь так тяжело, возможно я устал мне нужен отдых, но очень хочу дописать скрипт.