Просмотр полной версии : [Вопрос] Реализация системы спавна и несколько вопросов
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.
Когда игрок спавнится, то в первую очередь ему задаются координаты заданные через 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:)
А когда вызываются (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, 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:
Ибо будут проблемы со спавном персонажа...
То есть я могу в (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
Это как тебе удобно, подробнее можешь об этом в гугле почитать чем они различаются.
Выполнится когда игрок спавнится, то есть да.
Когда игрок спавнится, то в первую очередь ему задаются координаты заданные через 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)
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot