Jump to content
Korean Random
sirmax

[XVM 5] Скрипты

Recommended Posts

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

Вот что меняется в конфиге (одинаковые параметры исключил):

Сейчас:

"alpha": 100,
"damageText": {
"alpha": 100,
"color": null,
"shadow": {
"alpha": 100,
"color": "0x000000",
"angle": 45,
"distance": 0,
"size": 6,
"strength": 200
},
"speed": 2,
"maxRange": 40,

будет:

"damageText": {
"animation": "set(alpha(1)); set(shadow({blurX:5, blurY:5, distance:0, alpha:0.8, strength:3})); insert(fadeIn(0.3),0); insert(tint(0.7, 0xFFFFFF), 0); insert(move(2, 40, 'up'), 0); append(fadeOut(0.5), -0.5);
}

То есть тень, цвет, прозрачность, расстояние и время уходят в скрипт.

 

Скрипт является враппером над библиотекой greensock, можно посмотреть какие там есть плагины. Все плагины добавлены, их можно использовать через to()/from().

 

Пока что доступны такие функции (позже будет более подробное описание):

Для Timeline:

set - то же самое, что insert(tween, 0);

 

Для TweenLite:

Эти методы универсальные, с помощью их можно использовать любые плагины из greensock.

 

Для упрощения сделаны еще несколько врапперов для самых частых операций:

  • alpha() - установить прозрачность (макросы допускаются)
  • shadow() - тень
  • fadeIn() - проявление
  • tint() - засвечивание
  • move() - перемещение
  • fadeOut() - затухание

пример выше означает:

set(alpha(100)) - убрать прозрачность

set(shadow(...)) - установить тень (параметры сократил для читаемости)

set(fadeIn(0.3),0) - с 0 секунды за 0.3 секунды плавно проявить изображение

insert(tint(0.7, 0xFFFFFF), 0) - с 0 секунды за 0.7 сек изменить цвет от белого до базового (в данном случае - системного)

insert(move(2, 40, 'up'), 0) - 0 секунды в течении 2х секунд перемещать равномерно вверх на 40 пикселей

append(fadeOut(0.5), -0.5) - за 0.5 сек до конца в течении 0.5 сек сделать затухание до полной прозрачности

 

Вот как это выглядит на диаграмме:

* Legend:
* # : operation in progress
* + : operation complete and result is visible
*		 0s 0.5s 1s 1.5s delay Xs
* fadeIn ###++ +++++ +++++ +++++ ~ ~ ~ -----
* tint ##### ##
* move up ##### ##### ##### ##### ~ ~ ~ +++++
* fadeOut ----- ----- ----- ----- ~ ~ ~ #####

 

 

Формат еще будет меняться, но основной смысл описан.

Комментарии крайне приветствуются.

  • Upvote 4

Share this post


Link to post

Short link
Share on other sites

Ох..жеж плюшек сколько повляеться!!!

Пичаль...у меня переезд в другой город и новая работа..боюсь не скоро всё поюзаю... :sob0:

 

З.Ы.Ещё к маркерам анимацию и настройку приделать и можно будет забить на работу... :gg:

Edited by 7serafim7

Share this post


Link to post

Short link
Share on other sites

Не совсем понял, можно ли будет привязывать/делать анимацию для разных типов/источников урона? Допустим, вспышкой, как сейчас в альфе8, выделять только свой урон, а остальные пущай так стреляют. :ok:

Сейчас до осмыслил инфу, и как я понял, все таки нельзя. Так как эти настройки справедливы исключительно для отлетающего урона в 6ти вариациях(свой, чужой, нормал, с альтом и мертв). А источники(в т.ч. свой) урона выделяются только цветом.

Edited by mrDontes

Share this post


Link to post

Short link
Share on other sites

Не совсем понял, можно ли будет привязывать/делать анимацию для разных типов/источников урона? Допустим, вспышкой, как сейчас в альфе8, выделять только свой урон, а остальные пущай так стреляют. :ok:

Сейчас до осмыслил инфу, и как я понял, все таки нельзя. Так как эти настройки справедливы исключительно для отлетающего урона в 6ти вариациях(свой, чужой, нормал, с альтом и мертв). А источники(в т.ч. свой) урона выделяются только цветом.

посмотрим, главное парсер написать, а как его уже использовать - видно будет. Скорей всего по источникам урона можно будет настраивать, а по типам - нет. Типы можно будет выделять цветом, рисовать картинки, и т.д. Просто если делать и тип, и источник, слишком уж сложный конфиг получается.

Share this post


Link to post

Short link
Share on other sites

Чёт не хотит анимация меняться... :(

ставил так

"animation": "insert(alpha(100));
				 insert(color(null));
				 insert(shadow('alpha':100, 'color':'0xF50800', 'angle':0, 'strength':300, 'distance':0, 'size':6));
				 insert(fadeIn(0.5),0);
				 insert(tint(1, '0xFFFFFF'), 0);
				 insert(move(5, 60, 'up'), 0);
				 append(fadeOut(2), -2)
				 ",

и так
"animation": "insert(alpha(100));
				 insert(color(null));
				 insert(shadow('alpha':100, 'color':'0x000000', 'angle':45, 'strength':200, 'distance':1, 'size':1));
				 insert(fadeIn(0.3),0);
				 insert(tint(0.7, '0xFFFFFF'), 0);
				 insert(move(3, 60, 'up'), 0);
				 insert(move(15, 200, 'up'), 3);
				 append(fadeOut(5), -5)
				 ",

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

а, и в "damageText" еще поставил:

"damageText": {
	 "animation": "insert(alpha(100));
				 insert(color(null));
				 insert(shadow('alpha':100, 'color':'0x000000', 'angle':45, 'strength':200, 'distance':1, 'size':1));
				 insert(fadeIn(0.3),0);
				 insert(tint(0.7, '0xFFFFFF'), 0);
				 insert(move(3, 60, 'up'), 0);
				 insert(move(15, 200, 'up'), 3);
				 append(fadeOut(5), -5)
				 ",
	 "visible": true, "x": 0, "y": -65,
	 "damageMessage": "<span class='dmg_dead'>{{vehicle}}\nуничтожен!</span>",
	 "blowupMessage": "<span class='dmg_dead'>{{vehicle}}\nвзрыв БК!</span>"
	 },

т.е. убрал нафиг секцию "font", дописав в css

.dmg_dead{
font-family: $FieldFont;
font-size: 17;
text-align: center;
font-weight: bold;
}

так можно было?

Edited by VicKing

Share this post


Link to post

Short link
Share on other sites

Чёт не хотит анимация меняться... :(

ставил так

"animation": "insert(alpha(100));
				 insert(color(null));
				 insert(shadow('alpha':100, 'color':'0xF50800', 'angle':0, 'strength':300, 'distance':0, 'size':6));
				 insert(fadeIn(0.5),0);
				 insert(tint(1, '0xFFFFFF'), 0);
				 insert(move(5, 60, 'up'), 0);
				 append(fadeOut(2), -2)
				 ",

и так
"animation": "insert(alpha(100));
				 insert(color(null));
				 insert(shadow('alpha':100, 'color':'0x000000', 'angle':45, 'strength':200, 'distance':1, 'size':1));
				 insert(fadeIn(0.3),0);
				 insert(tint(0.7, '0xFFFFFF'), 0);
				 insert(move(3, 60, 'up'), 0);
				 insert(move(15, 200, 'up'), 3);
				 append(fadeOut(5), -5)
				 ",

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

так я ее еще не сделал ))

синтаксис вроде правильный. я потом при парсинге буду ошибки в лог и на экран писать, чтобы видно было в случае чего

 

а, и в "damageText" еще поставил:

"damageText": {
	 "animation": "insert(alpha(100));
				 insert(color(null));
				 insert(shadow('alpha':100, 'color':'0x000000', 'angle':45, 'strength':200, 'distance':1, 'size':1));
				 insert(fadeIn(0.3),0);
				 insert(tint(0.7, '0xFFFFFF'), 0);
				 insert(move(3, 60, 'up'), 0);
				 insert(move(15, 200, 'up'), 3);
				 append(fadeOut(5), -5)
				 ",
	 "visible": true, "x": 0, "y": -65,
	 "damageMessage": "<span class='dmg_dead'>{{vehicle}}\nуничтожен!</span>",
	 "blowupMessage": "<span class='dmg_dead'>{{vehicle}}\nвзрыв БК!</span>"
	 },

т.е. убрал нафиг секцию "font", дописав в css

.dmg_dead{
font-family: $FieldFont;
font-size: 17;
text-align: center;
font-weight: bold;
}

так можно было?

Ага, так и нужно. Реально в damageText остается только visible, x, y, animation, damageMessage и blowupMessage. Остальное опционально. Хочешь проще и без наворотов - используй как было. Хочешь что-то особенное - используй скрипт, html и css

Edited by sirmax

Share this post


Link to post

Short link
Share on other sites

Ну, тогда с анимацией ничего сложного, если набор эффектов не изменится, хотя и с таким можно наворотить... :)

Кста, это только анимация, т.е. манипуляции с готовым объектом, а сам объект (его содержимое) я могу изменить?

Edited by VicKing

Share this post


Link to post

Short link
Share on other sites

пока сделаю простой парсер со статическими функциями, а там посмотрим. Если ввести логику и переменные, будет вообще универсальная штука, но к этому я сейчас морально не готов. :)

Share this post


Link to post

Short link
Share on other sites

Это был только вопрос, но дальше и не нужно - бо зажрёмся и сгорим на своих хотелках, должна быть разумная граница. :)

Share this post


Link to post

Short link
Share on other sites

Вот надо доделать это и пока остановиться, посмотреть что получилось.

 

обновил первое сообщение

Share this post


Link to post

Short link
Share on other sites

Касательно наслоения, перенес несколько цитат из закрытой темы "Отлетающий урон в маркере" для воссоздания контекста:

Складывание не особо хороший вариант по очевидным причинам - теряется информация о источнике/числе попаданий/фокусе. Но ведь наслоение (у меня с настройками "speed": 2, "maxRange": 50) встречается с завидной регулярностью, и тоже приводит к потере информации. Причем если урон прилетает практически одновременно, то потери еще выше, чем в случае с суммированием. Но почему не ввести задержку, чтобы текущий урон вылетал только после того, как перестанет перекрывать предыдущий?

Можно обсудить заново, я не настаиваю. Просто раньше мы довольно долго это обсуждали и не нашли варианта лучше. Может сейчас придумаем, давайте обсуждать.

Давайте анимацию вынесем в отдельную тему

 

О! Нужно сделать эту задержку похитрее- отсчет времени не от попадания, а от начала предыдущей анимации

См. выше, собственно это изначально и предложил.

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×