PDA

Просмотр полной версии : [Вопрос] Как сделать правильный спавн через SetSpawnInfo,а не через OnPlayerSpawn+SetPlayerPos



geneff
03.06.2018, 13:29
Здравствуйте. Не давно наткнулся на одну темку с спавном и там DeimoS пиcал о том, что OnPlayerSpawn + SetPlayerPos, это неверное решение для спавна игрока в определеных координатах, а нужно их задавать с помощью SetSpawnInfo.

Так вот, как это нужно делать правильно?

Вот так?


SetSpawnInfo(playerid, 0, pInfo[playerid][pSkin], 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);

DeimoS
03.06.2018, 13:47
Эмм, если тебе нужно зареспавнить игрока - да. Если ты собрался прописывать такой код в OnPlayerSpawn - нет.

В случае с респавном после смерти, определять координаты для появления нужно либо в самом OnPlayerDeath, либо в любой другой момент до очередного вызова OnPlayerSpawn (например, при каждом вызове OnPlayerSpawn определять координаты для следующего спавна, если геймплейная составляющая мода это позволяет).

Вообще стоит понимать, что SetSpawnInfo заносит в память сервера информацию о том, куда нужно поместить игрока при следующем спавне. Классический спавн с SetPlayerPos в OnPlayerSpawn заставляет, по сути, перемещать игрока в два места: сначала на нулевые координаты (так как мы не указали координаты для спавна через SetSpawnInfo), а уже потом на координаты из SetPlayerPos. Соответственно, чтоб вариант с использованием SetSpawnInfo работал правильно, нужно просто заносить координаты для следующего спавна всякий раз, когда они становятся известны (ну, например, игрок решил изменить место спавна с базы фракции на личный дом - вот тут и нужно занести новые координаты в память. После этого просто нужно обновлять координаты после каждого спавна внутри самого OnPlayerSpawn).