Jump to content
Korean Random

[XVM 5] Скрипты


sirmax

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
Link to comment
Short link
Share on other sites

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

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

 

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

Edited by 7serafim7
Link to comment
Short link
Share on other sites

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

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

Edited by mrDontes
Link to comment
Short link
Share on other sites

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

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

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

Link to comment
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
Link to comment
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
Link to comment
Short link
Share on other sites

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

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

Edited by VicKing
Link to comment
Short link
Share on other sites

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

Link to comment
Short link
Share on other sites

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

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

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

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

 

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

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

Link to comment
Short link
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

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.
×
×
  • Create New...