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



Не найдено.

7 posts in this topic

Вопрос таков: После смерти перед спавном, да и вообще при любом спавне, игрок на пол секунды где то спавнится в 0, 0,0 координатах, а потом уже появляется в том месте, которое указано в моде.

Так вот, можно ли как то это исправить? т. е чтоб он даже на мили секунду не появлялся в нулевых координатах.

Share this post


Link to post
Share on other sites

@Clinton Lee, потому что неправильно реализована логика появления игрока. Нужно не в OnPlayerSpawn телепортировать игрока с помощью SetPlayerPos на координаты, а следует заранее устанавливать координаты появления в SetSpawnInfo.

Можете создать что-то вроде такого:

Спойлер

 


enum e_spawn_types
{
	SPAWN_TYPE_REGISTER, // место, где у игрока будет осуществляться, например, выбор скина при регистрации
	SPAWN_TYPE_HOUSE, // появление в доме
	SPAWN_TYPE_STANDART, // если негде появляться
	SPAWN_TYPE_JAIL, // появление в тюрьме
};

stock SetSpawnInfoEx(playerid, e_spawn_types:spawntype, team = 0, skin = -1, weapon1 = -1, ammo1 = -1, weapon2 = -1, ammo2 = -1, weapon3 = -1, ammo3 = -1)
{
	if(skin == -1) {
		skin = g_player[playerid][pSkin];
	}
	
	if(weapon1 == -1 && ammo1 == -1) {
		weapon1 = g_player[playerid][pWeapon][0];
		ammo1 = g_player[playerid][pAmmo][0];
	}
	
	if(weapon2 == -1 && ammo2 == -1) {
		weapon2 = g_player[playerid][pWeapon][1];
		ammo2 = g_player[playerid][pAmmo][1];
	}
	
	if(weapon3 == -1 && ammo3 == -1) {
		weapon3 = g_player[playerid][pWeapon][2];
		ammo3 = g_player[playerid][pAmmo][2];
	}
	
	new Float:x, Float:y, Float:z, Float:a;
	switch(spawntype)
	{
		case SPAWN_TYPE_REGISTER: {
			x = 0.0; // координата X места выбора скина
			y = 0.0; // координата Y места выбора скина
			z = 0.0; // координата Z места выбора скина
			a = 0.0; // угол поворота
		}
		
		case SPAWN_TYPE_HOUSE: {
			new houseid = g_player[playerid][pHouse];
			x = g_house[houseid][hX]; // координата X появления в доме
			y = g_house[houseid][hY]; // координата Y появления в доме
			z = g_house[houseid][hZ]; // координата Z появления в доме
			a = 0.0; // угол поворота
		}
	}
	
	SetSpawnInfo(playerid, team, skin, x, y, z, a, weapon1, ammo1, weapon2, ammo2, weapon3, ammo3);
	SpawnPlayer(playerid);
	return 1;
}

 

 

Таким образом вы и будете управлять координатами, где следует спавнить игрока. А все телепортации из OnPlayerSpawn следует уничтожить.

Share this post


Link to post
Share on other sites
3 часа назад, odosenok сказал:

@Clinton Lee, потому что неправильно реализована логика появления игрока. Нужно не в OnPlayerSpawn телепортировать игрока с помощью SetPlayerPos на координаты, а следует заранее устанавливать координаты появления в SetSpawnInfo.

Можете создать что-то вроде такого:

  Пример функции (закрыть спойлер)

 



enum e_spawn_types
{
	SPAWN_TYPE_REGISTER, // место, где у игрока будет осуществляться, например, выбор скина при регистрации
	SPAWN_TYPE_HOUSE, // появление в доме
	SPAWN_TYPE_STANDART, // если негде появляться
	SPAWN_TYPE_JAIL, // появление в тюрьме
};

stock SetSpawnInfoEx(playerid, e_spawn_types:spawntype, team = 0, skin = -1, weapon1 = -1, ammo1 = -1, weapon2 = -1, ammo2 = -1, weapon3 = -1, ammo3 = -1)
{
	if(skin == -1) {
		skin = g_player[playerid][pSkin];
	}
	
	if(weapon1 == -1 && ammo1 == -1) {
		weapon1 = g_player[playerid][pWeapon][0];
		ammo1 = g_player[playerid][pAmmo][0];
	}
	
	if(weapon2 == -1 && ammo2 == -1) {
		weapon2 = g_player[playerid][pWeapon][1];
		ammo2 = g_player[playerid][pAmmo][1];
	}
	
	if(weapon3 == -1 && ammo3 == -1) {
		weapon3 = g_player[playerid][pWeapon][2];
		ammo3 = g_player[playerid][pAmmo][2];
	}
	
	new Float:x, Float:y, Float:z, Float:a;
	switch(spawntype)
	{
		case SPAWN_TYPE_REGISTER: {
			x = 0.0; // координата X места выбора скина
			y = 0.0; // координата Y места выбора скина
			z = 0.0; // координата Z места выбора скина
			a = 0.0; // угол поворота
		}
		
		case SPAWN_TYPE_HOUSE: {
			new houseid = g_player[playerid][pHouse];
			x = g_house[houseid][hX]; // координата X появления в доме
			y = g_house[houseid][hY]; // координата Y появления в доме
			z = g_house[houseid][hZ]; // координата Z появления в доме
			a = 0.0; // угол поворота
		}
	}
	
	SetSpawnInfo(playerid, team, skin, x, y, z, a, weapon1, ammo1, weapon2, ammo2, weapon3, ammo3);
	SpawnPlayer(playerid);
	return 1;
}

 

 

Таким образом вы и будете управлять координатами, где следует спавнить игрока. А все телепортации из OnPlayerSpawn следует уничтожить.

Не много сложно для меня :) 
Попробую, отпишу что получиться, спасибо.
Кстати, что нужно сделать, что бы мои сообщения сразу отправлялись, а не ждать одобрение модерации?

Edited by Clinton Lee

Заметка от DEST , создано

Набрать 5 одобренных сообщений.

Share this post


Link to post
Share on other sites

SpawnPlayer сначала, а потом нужную позицию задаёшь и скин.

Share this post


Link to post
Share on other sites
Спойлер

stock SetSpawnInfoEx(playerid, e_spawn_types:spawntype, team = 0, skin = -1, weapon1 = -1, ammo1 = -1, weapon2 = -1, ammo2 = -1, weapon3 = -1, ammo3 = -1)
{
	new Float:x, Float:y, Float:z, Float:a;
	switch(spawntype)
	{
		case SPAWN_TYPE_AUTHORIZATION:
		{
		    SetCameraBehindPlayer(playerid);
			x = 240.8770;
			y = 1725.3722;
			z = 12.1484;
			a = 265.2861;
		}
	}
	SetSpawnInfo(playerid, team, skin, x, y, z, a, weapon1, ammo1, weapon2, ammo2, weapon3, ammo3);
	SpawnPlayer(playerid);
	return 1;
}

 

Вот и как мне сделать, что бы игрок появлялся при авторизации, по этому кейсу??

Я первый раз с таким работаю, можно по подробнее описать, плиз)@odosenok 

Share this post


Link to post
Share on other sites

@Clinton Lee в авторизации приравниваешь "spawntype" к нужному значению.

По коду, тебя сначала спавнит куда-то, а потом уже выполняется OnPlayerSpawn. У меня в таком паблике идёт перенаправление в нужный сток, возможно у тебя тоже.

Share this post


Link to post
Share on other sites

Разобрался, можно закрывать, спасибо.

Заметка от Shakoladka , создано

Если проблема успешно решина, то опишите в чем дело было, вдруг другим людям будет тоже такая же проблема, они вам будут благодарны

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

    • misha_makilov
      By misha_makilov


      Просмотр файла Arizona RP | Nike
      1. Система каршеринга (Полностью написана с 0 и готова).
      2. Система дрифта. (Написана с 0, не доделан магазин аксессуаров).
      3. Система заточек, а так же улучшения на них, как на аризоне рп, по типу больше хп или урона. (Система готова до конца)
      4. Динамическая система казино, казино работает как бизнес, можно добавить несколько казино и управлять ими, в них можно менять цены на все, что имеет цену в самом казино (Полностью написана с 0 и готова).
      5. Система для слетов бизнесов и домов, можно выставить через сколько он слетит (Полностью написана с 0 и готова).
      6. Система люкс каров (Полностью написана с 0 и готова, даже с таймеров, но необходим плагин на машины)
      7. Полностью был оптимизирован весь мод, а так же подправлен код + убраны все ошибки связанные с БД
      8. Исправлены все возможные баги, который находили игроки на Arizona Nike и мною.
      9. Система урона с заточенными аксессуарами. (Копия оригинальной аризоны рп)
      10. Смена текста у организаций на стенде. (Копия оригинальной аризоны рп)
      11. Начата разработка системы майнинга (Система будет не много другой, не как на оригинальной аризоне)
      12. Сайт с логами, с небольшими переделками.
       
      Обзор мода - https://www.youtube.com/watch?v=MrQ6tFQsD2o
       
      Цена данного мода 800 рублей + еженедельная подписка навсегда(включает в себя еженедельные обновления)

      Для получения сайта с логами, обратитесь сюда - https://vk.com/jenyahuntwill (Необходимо предоставить док-ва, что вы купили данный мод)
      Добавил misha_makilov Добавлено 29.05.2021 Категория Моды Автор Mayota_Nebr  
    • glvde.
      By glvde.
      Хранение данных (версия MySQL): R39-6.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 65908.
      Анти-чит: Nexius-AC v1.9.55.
       
      Автор данного мода: неизвестно.
      Автор данной доработки: glvde. (я).

      На доработку мода ушло около двух недель.
      Тестовый сервер предоставляется по запросу покупателя.
       
       
       

      Не исключено, что есть баги. Каждую неделю выходит багофикс.
      Всем спасибо за внимание.
    • glvde.
      By glvde.


      Просмотр файла Arizona RolePlay | Paige
      Хранение данных (версия MySQL): R39-6.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 65908.
      Анти-чит: Nexius-AC v1.9.55.
       
      Автор данного мода: неизвестно.
      Автор данной доработки: glvde. (я).

      На доработку мода ушло около двух недель.
      Тестовый сервер предоставляется по запросу покупателя.
       
       
       

      Не исключено, что есть баги. Каждую неделю выходит багофикс.
      Всем спасибо за внимание.
      Добавил glvde. Добавлено 16.06.2021 Категория Моды Автор glvde.  
    • Человек-редиска
      By Редиска
      ПОМОГИТЕ!!!!!!!!
      НЕ СОХРАНЯЮТСЯ НОМЕРА НА АВТО.
      ПОЛУЧАЮ НОМЕРА, А ОНИ ПРОПАДАЮТ ПОСЛЕ ПОЛУЧЕНИЯ.
      ТО ЕСТЬ, КОГДА ПРОПИСЫВАЮ КОМАНДУ /FIXCAR И ВЫБЕРАЮ ВЫГРУЗИТЬ А ПОТОМ ЗАГРУЗИТЬ.
      ТО НОМЕРОВ УЖЕ НЕТУ, ТУПО ПРОПАЛИ!
      ЗАХОДИЛ В БД ТАМ ОНИ ПОЯВЛЯЮТСЯ, А НА АВТО ПОЧЕМУ ТО НЕ ОТОБРАЖАЮТСЯ.
      ПОТОМ Я РЕШИЛ ЗАЙТИ В ТАБЛИЦУ ПОД НАЗВАНИЕМ OWNABLE_CARS ТАМ Я УВИДЕЛ СТРОКУ C_NUMBERS
      В ЭТОМ СТРОКЕ Я ПРОПИСАЛ СВОЁ ИМЯ, ПОТОМ ЗАШЁЛ В ИГРУ, ЗАГРУЖАЮ АВТО И ЕСТЬ НОМЕРА.
      А ТО ЧТО У МЕНЯ ЕСТЬ ЕЩЁ ОДНА ТАБЛИЦА ПОД НАЗВАНИЕМ OWNABLE_NUMBERS.
      ТАМ У МЕНЯ ТОЛЬКО НОМЕРА ПОЯВЛЯЮТСЯ И ВСЁ. ТОЕСТЬ ОНИ НЕ ПРИВЯЗЫВАЮТСЯ К АВТО КОРОЧЕ ВОТ И ВСЁ!!!!!!
      ПОМОГИТЕ УЖЕ ПОЖАЛУЙСТА СРОЧНО НУЖНО.