PDA

Просмотр полной версии : [Вопрос] Реализация системы спавна и несколько вопросов



PawnoNoob
06.08.2016, 20:21
Привет всем. Сразу перейду к самим вопросам.
Я не знаю, как реализовать систему спавна на сервере. Решил я посмотреть несколько исходных кодов других серверов, чтобы как-то понять это всё дело и увидел три разных реализации системы:

Все координаты, уровень, уровень HP и внешность устанавливаются в OnPlayerSpawn.
Создаётся массив, в котором записаны все координаты для спавна игроков (простых и состоящих в организации) и stock, в котором сервер получает информацию об организации игрока, ну а дальше с помощью этой системы устанавливаются координаты через SetSpawnInfo.
(newstate == PLAYER_STATE_SPAWNED) - тут, думаю, всё понятно.

Какой из этих способов лучше всего использовать?

И ещё несколько вопросов:
1. В чём отличие между (newstate == PLAYER_STATE_SPAWNED) от (oldstate == PLAYER_STATE_SPAWNED)?
2. После смерти (OnPlayerDeath) вызывается OnPlayerStateChange или сразу OnPlayerSpawn?

(Возможно, вопросы покажутся глупыми. Не бейте меня, я ведь новичок ещё :blum3:)

TBoPoIIIoK
06.08.2016, 20:44
1. newstate - новое состояние, oldstate - старое.
2. OnPlayerSpawn
3. Какой способ тебе удобнее такой и используй, но я бы посоветовал 1 или 2.

ziggi
06.08.2016, 22:49
Когда игрок спавнится, то в первую очередь ему задаются координаты заданные через SetSpawnInfo, затем вызывается OnPlayerSpawn и меняется состояние. Это значит, что установка позиции спавна через SetSpawnInfo не вызывает проблем у игроков с медленным компьютером, ибо если у таковых игроков задавать позицию в OnPlayerSpawn, то они, иногда, на доли секунды видят другую локацию спавна (как правило это нулевые координаты), что довольно неприятно.

PawnoNoob
06.08.2016, 23:00
А когда вызываются (newstate == PLAYER_STATE_SPAWNED) и (oldstate == PLAYER_STATE_SPAWNED)?

vovandolg
06.08.2016, 23:12
А когда вызываются (newstate == PLAYER_STATE_SPAWNED) и (oldstate == PLAYER_STATE_SPAWNED)?

newstate когда заспавнился, oldstate когда после спавна принял другое любое новое положение

PawnoNoob
06.08.2016, 23:21
newstate когда заспавнился, oldstate когда после спавна принял другое любое новое положение

То есть сразу после авторизации я могу в (newstate == PLAYER_STATE_SPAWNED) добавить прогрузку анимационных библиотек? (или как это правильно называется:blush:)

ziggi
06.08.2016, 23:23
А когда вызываются (newstate == PLAYER_STATE_SPAWNED) и (oldstate == PLAYER_STATE_SPAWNED)?

Сначала данные из SetSpawnInfo, затем изменение состояния (newstate == PLAYER_STATE_SPAWNED), затем OnPlayerSpawn в FS, потом OnPlayerSpawn в GM.

vovandolg
06.08.2016, 23:26
Аммм, вопрос ziggi, SetSpawnInfo можно при коннекте указывать или надо минимум как при выборе класса его задавать?
(если для корретной работы с модом)

ziggi
06.08.2016, 23:38
Аммм, вопрос ziggi, SetSpawnInfo можно при коннекте указывать или надо минимум как при выборе класса его задавать?
(если для корретной работы с модом)

Не важно где, главное чтобы игрок был подключён к серверу.

PawnoNoob
06.08.2016, 23:41
То есть я могу в (newtate == PLAYER_STATE_SPAWNED) добавить прогрузку анимаций, а после в OnPlayerSpawn добавить SetSpawnInfo, так?

vovandolg
07.08.2016, 00:16
То есть я могу в (newtate == PLAYER_STATE_SPAWNED) добавить прогрузку анимаций, а после в OnPlayerSpawn добавить SetSpawnInfo, так?

Да писал же ziggi уже что вызывать SetSpawnInfo надо до OnPlayerSpawn!:diablo:
Ибо будут проблемы со спавном персонажа...

ziggi
07.08.2016, 00:20
То есть я могу в (newtate == PLAYER_STATE_SPAWNED) добавить прогрузку анимаций, а после в OnPlayerSpawn добавить SetSpawnInfo, так?

Не вижу смысла подгружать анимации после каждого спавна, достаточно одного раза на запуск клиента. И да, SetSpawnInfo можно добавить в OnPlayerSpawn, но желаемого результата это не принесёт.

PawnoNoob
07.08.2016, 00:24
Не вижу смысла подгружать анимации после каждого спавна, достаточно одного раза на запуск клиента. И да, SetSpawnInfo можно добавить в OnPlayerSpawn, но желаемого результата это не принесёт.

А куда можно вставить прогрузку анимаций и сам SetSpawnInfo? :wacko: Я немножко запутался:grin:

vovandolg
07.08.2016, 00:35
А куда можно вставить прогрузку анимаций и сам SetSpawnInfo? :wacko: Я немножко запутался:grin:

Ну так засунь её в коннект и проверь прогрузит ли она библиотеку какую нибудь, заодно отпишешься сюда))

PawnoNoob
07.08.2016, 01:05
Ну так засунь её в коннект и проверь прогрузит ли она библиотеку какую нибудь, заодно отпишешься сюда))

В принципе, работает, все анимации запускаются с первого раза, только я засунул загрузку в stock и его вызвал в OnPlayerConnect, нормально так? :blush:

vovandolg
07.08.2016, 02:47
В принципе, работает, все анимации запускаются с первого раза, только я засунул загрузку в stock и его вызвал в OnPlayerConnect, нормально так? :blush:

Удобно

PawnoNoob
07.08.2016, 02:56
Задам ещё несколько вопросов, чтобы не создавать новую тему:

Что лучше использовать? New или Static Const?
(newstate == PLAYER_STATE_SPAWNED) выполняется и после смерти, верно?

vovandolg
07.08.2016, 03:08
Это как тебе удобно, подробнее можешь об этом в гугле почитать чем они различаются.

Выполнится когда игрок спавнится, то есть да.

123
07.08.2016, 17:37
Когда игрок спавнится, то в первую очередь ему задаются координаты заданные через SetSpawnInfo, затем вызывается OnPlayerSpawn и меняется состояние. Это значит, что установка позиции спавна через SetSpawnInfo не вызывает проблем у игроков с медленным компьютером, ибо если у таковых игроков задавать позицию в OnPlayerSpawn, то они, иногда, на доли секунды видят другую локацию спавна (как правило это нулевые координаты), что довольно неприятно.

Подскажите тогда, как корректно использовать SetSpawnInfo и AddPlayerClass для RP-сервера

vovandolg
07.08.2016, 17:44
Подскажите тогда, как корректно использовать SetSpawnInfo и AddPlayerClass для RP-сервера

клац (http://pro-pawn.ru/showthread.php?13526-%D0%9E%D0%B1%D1%85%D0%BE%D0%B4-%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%BE%D0%B3%D0%BE-%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%B0-%D1%81%D0%BA%D0%B8%D0%BD%D0%B0-%28%D1%81%D0%BA%D1%80%D1%8B%D1%82%D1%8C-%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B8-%D0%B8-Spawn-%29)