Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • Не хотите БАН?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок
  • Загляните на рынок

    Там вы можете продать или купить
    Всё что касается игровых серверов

Вопрос

Требуется

 

берем обьект и в цикле меняем ему координаты положения в пространстве от точки x,z,y до точки x2,z2,y2

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

но

попробовав в цикле подобное, объект всегда сразу перемещается в крайнюю позицию, те анимации никакой не происходит, происходит обычный телепорт

 

наверняка есть штатные инструменты для организации подобного действа на стороне сервера

 

кто в курсе, есть такое?

 

вариант как с airdrop от mov3ax через onupdate в данном случает не канает, тк вызов должен быть ситуативным

 

Всем спасибо!

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


Ссылка на сообщение
Поделиться на других сайтах

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

  • 0

Доброго времени суток, BorizzK. вообщем когда я моделил постройку у меня была задача прописать анимации дверей в конфигурации(я конечно не уверен что это вам на 100% поможет, но всё же...)https://community.bistudio.com/wiki/animateSource И добавлю от себя еще несколько строк :

class AnimationSources
        {
            // Animation sources for doors
            class Door_1_source
            {
                source = user; // "user" = custom source = not controlled by some engine value
                initPhase = 0; // Initial value of animations based on this source
                animPeriod = 1; // Coefficient for duration of change of this animation (если поменять значение на 0 то(ваша цитата: "анимации никакой не происходит, происходит обычный телепорт") )
                sound = "GenericDoorsSound"; /// Selects sound class from CfgAnimationSourceSounds that is going to be used for sounds of doors
            };

 

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


Ссылка на сообщение
Поделиться на других сайтах
Забронировать это рекламное место


  • 0

Нарыл такую вот функцию

 

	/*!dynamic call of function
	when inst == NULL, it's global function call, otherwise it's method of class
	returns true, when success
	The call creates new thread, so it's legal to use sleep/wait
  */
	proto volatile int Call(Class inst, string function, void parm);

те в теории

 

GetGame().GameScript.Call(NULL, "MoveFunction", new Param3<Object, vector, int>(m_Object, m_newPos, m_max_alt));

Позволит запустить отдельный тред, где в цикле и с задержками я смогу двигать обьект независимо от main thread

 

	void MoveFunction(Param3<Object, vector, int> inParam)
	{
		Object m_Object 	= inParam.param1;
		vector newPos 		= inParam.param2;
		int max_alt			= inParam.param3;
		m_Object.SetOrientation(newPos);
		vector m_ObjectPos = m_Object.GetPosition();
		float distance = vector.Distance(m_ObjectPos, newPos);
      
        //тут остальное
       	Sleep(0.01); // итп
	}
	

Серв запускается, все компилится, но MoveFunction не выполняется
В логах ошибок нет

Серв не ложится...

 

Где-то какой-то нюанс упущен

 

Можно конечно через CallLater в цикле заполнить очередь и она выполнится по завершению цикла, но хочется немного другого решения...

Изменено пользователем BorizzK (история изменений)

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

BorizzK повесь цикл проверки на фоне сервера, и, скажем, если переменная меняется с false на true, то выполняешь другую функцию с тем, что тебе необходимо.
Еще вариант, через RPC, от клиента, пишешь ... ну не знаю, тригер или опцию в менюшке .... ну и вызываешь через RPC с клиента на сервере функцию.
Пример последнего наврядли тебе найду, это больше логические рассуждения на тему того, как игра работает.

Изменено пользователем 123new (история изменений)

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new только со стороны сервера

Мне интересно, как вот тот вызов с помощью call сделать, что бы функция не в майн треде запустилась ...

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new Ну запустил

в цикле setposition

и? нет никакого движения - тупо ставится последяя позиция - те получается телепорт

а нужно после установки новой позиции ждять когда позиция будет установлена и потом только устанавливать новую

тут нужно while / getposition и sleep

а в main треде это нереально

нужно отдельный тред запустить и в нем обьект двигать

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

BorizzK так говорю, пусти отдельно цикл в фоне на проверку, и уже когда пойдет твое телепортирование, то делай доп проверку с телепортами и проверки позиции. Правда, ты не забывай, что если ты со стороны сервера делаешь телепорт игрока на позицию, это действие еще сам клиент игры отсинхронизировать должен. т.е. послу того как для сервера у игрока стала новая позиция, сам клиент игры эту позицию должен от сервера получить и отобразить. И вот это ты проверять собрался я без понятия, но думаю функция WorldPosition тут в помощь.

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new Тут как вот с тем сама аирдропом

как цикл в фоне запустить я не знаю

по идее тот самый call()
но чет как-то не работает

потому пока calllater попробую

а для расчета траектории возьму за основу

https://xstud.ru/123623/programmirovanie/algoritm_rascheta_traektorii_dvizheniya_tochki

 

 

 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

BorizzK Сделай уже ОБЪЕКТ. унаследуйся в конце концов от scriptedObject, и внутри него крути верти что хочешь.... у него уже есть ОнЕачФрейм.

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

NoNameUltima Зачем мне делать обьект?

Мне нужно готовый обджект - игрока или еще что из точки а в точку б переместить по баллистической траектории с отображением каждой позиции

те визуализировать его полет

уверен что есть готовые функции, но поскольку нет тугаментов по движку пытаюсь изгаляться

 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

BorizzK Ну так и перекрой тогда ОнАпдейт или ОнФрейм, и там добавь выполнение с задержками некой процедуры.

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

NoNameUltima Походу так и придется делать

и выполнять процедуру при изменении значения некой переменной в нужном классе

 

однако всежтаки хотелось бы запустить отдельный тред и в нем циклом все делать

или обработать обьект готовой встроенной функцией - ну ведь наверняка она сущетвует

неужели это невозможно?......

буду рыть

 

Изменено пользователем BorizzK (история изменений)

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

BorizzK А хрен его знает.Должно быть возможным. Пока не копался. А так - есть у объектов свойства и менеджер, ну и достаточно в принципе....

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

BorizzK после старта сервера запускаешь отдельную функцию через Callater с повтором, например, каждые 3-10 секунд, вот тебе и выполнение в отдельном потоке параллельно и независимо. И уже в той функции, что вызовешь и крути-верти, хоть еще 10 из нее вызови последовательно. Это я тебе как пример.

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new Это основной поток все равно

в нем нельзя использовать циклы задержки / Sleep

вот и ищу способ который описан выше - GetGame().GameScript.Call

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

123new это понятно

Можно еще через ontick или onupdate

Ну не суть

Игрока так мувить смешно получается

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

Или изымать перса у игрока, затем мувить перса как обьект, и потом снова селектить игроку перса

Еще не пробовал, но вот ниву летать заставил, правда пока криво

 

 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0

NoNameUltima Хочу добавить немного ОФФа
Нафиг тут телебонькать видосы на тему - "смотри как у меня" ?

Тут не видеохостинг и не ресурс по мерянью пиписьками
Есть что сказать/показать по существу?

Велкам - показывай, обьясняй, делись опытом

Нечего сказать?

Иди в ютьюб и показывай комьюнити КАК ТЫ МОЖЕШЬ НАСКРИПТИТЬ

 

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


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: finnsnow
      При сборке чего-либо из тулбокса, проигрывается анимация в 3 шага. Как, либо поменять анимацию (например на более короткую), либо отключить её вообще, что бы vehicle собирался сразу/мгн
      овенно.
       Ну и страныый вопрос: возможно ли написать так, что бы, например, вертолёт задеплоился с уже раскрученным винтом? Типа задплоил, сел и сразу полетел. 
      _SPASIBO
    • Автор: kinonin
      господа модераторы,я не уверен, что создал тему в правильном разделе, пожалуйста, перенесите эту тему в правильный раздел или уберите эту надпись если эта тема соответствует разделу.
       
      Задача: заспавнить технику(epoch) скриптом внутри здания и повернуть задом к стене, но для этого надо узнать что позиция  безопасна  (не является это позиция в стене ,нет ли других(машин,людей) 
      Буду благодарен за любую помощь
       
       
       
    • Автор: mafan9
      Ребят, как сделать так, чтобы торговцы могли моргать глазами и вообще анимацию торговцев, а то стоят как вкопанные?
    • Автор: NoVa41rus
      TimeSigns
       
      - = Создай свою анимацию = -
       
      Краткое описание:
       
      Плагин позволяет добавлять анимацию на табличку.
       
      Особенности:
      Простой конфиг с гибкой настройкой
      Анимация не пропадает после полной перезагрузки сервера
      Добавление анимации на каждую строку
      Конфиг:


      Signs:   #Схемы табличек
       sign:   #Название схемы
         timer: 1   #Таймер
         line1:      #Первоя строка на табличке
         - Test     #Список текста
         - Test1
          - '&5Тест'
          line2: []  #Вторя строка на табличке
         line3: []  #Третья строка на табличке
         line4: []  #Четвёртая строка на табличке
      placed-signs:  #Координаты табличек (устанавливаются автоматически)
      - sign|-154|81|266|world
      #Кол-во схем не ограниченно, можно использовать сколько угодно


      Команды:
      /ts - список доступных команд
      /ts create <название схемы> - создать новую схему. Можно создавать прямо в конфиге
      /ts sign <название схемы> line<1 - 4> <text> - добавить текст в схему, например:
      /ts sign test line1 &4Тестовая_строка
      /ts timer <название схемы> <Таймер> - установить таймер на схему: /ts timer test 20 (1 секунда = 20)
      /ts add <название схемы> - Установить схему на табличку (После того как прописали эту команду жмите ПКМ по табличке)
      /ts reload - Перезагрузить конфиг
      Permissions:
      - timesigns.admin - разрешить полный доступ к плагину или достаточно быть [ОП]
      Вопрос/Ответ:
       
      В: Как создать схему
      O: Командой /ts create <название схемы> или прямо в конфиге:


      Signs:
        otvet:  #Название схемы
         timer: 1 #Таймер
         line1: [] #Строка 1
         line2: [] #Строка 2
         line3: [] #Строка 3
         line4: [] #Строка 4


      В: Как запустить анимацию
      O: Пропиши: /ts add <название схемы> - и нажми ПКМ по табличке
       
      В: Сделал схему через конфиг, добавил её на табличку, потом изменил опять текст, но текст не изменился
      O: После повторной измены текста, пропиши: /ts reload
       
      Внимание: Если вы добавляете текст на строку через команду, то пробелы между словами заменяйте _ [/ts sign [name] line1 Это_текст]
       
      Ссылки:
       
      Скачать плагин / Анимация / GitHub[Исходники]​
    • Автор: schiz
      Птался найти информацию по тому как анимировать торговцев, но нашел только список самих анимаций, а куда и в каком виде их добавлять так и не понял, хотелось бы пример кода увидеть. И еще один вопрос касательно торговли: как сделать так что бы действие покупки или продажи выполнялось однократно, а не до того как кончатся ресурсы? И так же этот вопрос касается создания брифкейсов (добавления и удаления в них слитков).
×
×
  • Создать...