Перейти к содержимому


Фотография

Вопрос по объектам


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 188 сообщений

Отправлено 26 Сентябрь 2021 - 13:51

Привет парни, хочу создать объект, и движение этого объекта в бок по таймеру.

Вопрос только по объекту, какие функции нужно использовать, что-бы установить объект  в определенном месте?

Ну и само движение объекта интересует так же функция.

 

За ранее спасибо.



#2 history_maker

history_maker

    Пользователь

  • Пользователь
  • PipPipPip
  • 232 сообщений

Отправлено 26 Сентябрь 2021 - 21:57

Не совсем понимаю что ты хочешь, можно легко создать объект и заставить его перемещаться через стриппер, а можно долго и муторно плагином.
Что именно тебя интересует?

#3 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 188 сообщений

Отправлено 26 Сентябрь 2021 - 23:00

Не совсем понимаю что ты хочешь, можно легко создать объект и заставить его перемещаться через стриппер, а можно долго и муторно плагином.
Что именно тебя интересует?

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

Срабатывает таймер например сикунд 15, с этим же таймером срабатывает событие create_panic_event. Прошли 15 сек заборчик резко открывается.

 

Хочу всю эту шнягу реализовать сам, но незнаю какие нужно использовать функции. Функции по типу вот сатри 

static object;

object = Object(string :model, Float:x, Float:y, Float:z); 

И движение объекта 

MoveObj(object, Float:x, Float:y, Float:z);

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

Хочу чисто все сам сделать, сделаю, свой написанный код уже буду знать.


Идей впринципе много, но не все функции знаю, перерыл почти все библиотеки, не чего не нашел, реализовать не проблема. 

:D Проблема в незнание нужных функций, понять как работает функция как нефиг, я думаю понимаешь меня.



#4 history_maker

history_maker

    Пользователь

  • Пользователь
  • PipPipPip
  • 232 сообщений

Отправлено 27 Сентябрь 2021 - 0:33

слишком много будет заморочек, чем тебе https://forums.allie...d.php?p=1170674 не угодил?
если тебе на определённых картах это надо, то легче, правильнее и быстрее это сделать стриппером.
Если же на всех картах, тут я увы не помогу, разве что вот https://forums.allie...73&postcount=42, плагин где создают объект миниган, и здесь для твоего плагина можно заменить сочетание SHIFT+MOUSE2 на IN_USE = механизм нажатия на предмет для запуска таймера.



#5 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 188 сообщений

Отправлено 27 Сентябрь 2021 - 10:55

слишком много будет заморочек, чем тебе https://forums.allie...d.php?p=1170674 не угодил?
если тебе на определённых картах это надо, то легче, правильнее и быстрее это сделать стриппером.
Если же на всех картах, тут я увы не помогу, разве что вот https://forums.allie...73&postcount=42, плагин где создают объект миниган, и здесь для твоего плагина можно заменить сочетание SHIFT+MOUSE2 на IN_USE = механизм нажатия на предмет для запуска таймера.

Дор лок, есть почти на каждом сервере, нужно разнообразие. Стрипером вообще не шарю как пользоваться, так то пытался что-то сделать, но увы не допонял малясь, настроил походу не так. В лс черкани объясни настройку, либо тут.


Щас гляну еще  [L4D & L4D2] Spawn & Movable Machine Gun 1.0.6 


Может что-то вырежу. 



#6 dragokas

dragokas

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 746 сообщений

Отправлено 11 Октябрь 2021 - 10:35

Движение можно реализовать 2 типов: плавное или рывками.

 

А) Для плавного движения есть несколько вариантов в зависимости от того, поддерживает ли модель физику.

 

V.1)

Если поддерживает, предмет создаём с классом prop_physics или prop_physics_override (либо prop_dynamic_override, если предмет не физический, но поддаётся эмуляции физики)

	int iEnt = CreateEntityByName("prop_physics");
	if( iEnt != -1 )

		DispatchKeyValue(iEnt, "model", "путь к модели");
		DispatchKeyValueVector(iEnt, "origin", координаты);
		DispatchKeyValue(iEnt, "solid", "6");
		DispatchSpawn(iEnt);
	}

Затем выставляем гравитацию в ноль, и делаем небольшой толчок в нужном направлении через TeleportEntity (параметр velocity, остальные параметры - NULL_VECTOR)

Если модель "не подходит"  для данного класса, она появится как невидимая.

 

V.2)

Если нужный класс подобрать не получилось, можно обернуть нужную модель поверх физической. Сделать это можно 2 способами:

1) заспавнить реально физическую модель (которая будет костяком), затем изменить ей модель на нужную через SetEntityModel (в качестве основы подойдёт не всякая модель, используйте, к примеру модели из models/props_junk/)

2) заспавнить реально физическую модель, и присоединить к ней новую заспавненную модель класса prop_dynamic (примеров аттача множество, например, плагины на шапки). Затем управляем физической моделью также через 0-гравитацию, либо animation sequence, если она имеет нужную анимацию.

 

V.3) Лифт, делается аналогично п 2.2., только за основу берется энтитя "поезд" - func_tracktrain, а активация его движения выполняется спец. инпутами.

Пример реализации можно посмотреть в моем Death Soul. Код сложный. При малейшем отклонении получите краш сервера.

 

Б) Движение рывками можно реализовать телепортацией - функция TeleportEntity с инкрементом позиции по таймеру (CreateTimer) с повторением.

При этом, чтобы минимизировать рывки можно использовать 2 методики:

1) Делать как можно меньший инкремент координат.

2) Прировнять мгновение телепорта к лерпу, пример у Lux (тогда движение рывками можно будет практически не отличить от плавного при соблюдении п.1.).


  • Alexander_Mirny это нравится

#7 dragokas

dragokas

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 746 сообщений

Отправлено 26 Октябрь 2021 - 0:04

Вот еще один объект, который полагаю, наиболее подходит для ваших целей - func_movelinear

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

Достаточно прикрепить к нему модельку ворот, выставить правильные свойства и вызвать инпуты SetSpeed и Open.


  • Alexander_Mirny это нравится

#8 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 188 сообщений

Отправлено 05 Ноябрь 2021 - 22:01

Вот еще один объект, который полагаю, наиболее подходит для ваших целей - func_movelinear

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

Достаточно прикрепить к нему модельку ворот, выставить правильные свойства и вызвать инпуты SetSpeed и Open.

От души, займусь как нибудь.




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных