DmCreator
offline
Опыт:
3,205Активность: |
Cast System
Система, в которой реализованы "полуфабрикаты" абилок - стандартные способности, имеющие возможность устанавливать динамически изменяющийся урон (ну или на что угодно, если вы это добавите)
Из "полуфабрикатов" можно (да и нужно - для того и система) делать более сложные абилки. СangeLog:
v0.6:
v0.5:
v0.4:
v0.3:
v0.2:
В функции передаются статистика, которая влияет на урон; множитель урона; логическая переменная, определяющая "учитывать ли бонусы хар-ки"; модель снаряда (строкой с путём к модели); масштабирование снаряда; ширина волны (ну это только для волновой абилки); ну и координаты цели и юнит-кастер/точки каста; расстояние действия (волна и "перво-встречный" снаряд)
Все на стандартном жассе, т.е. жнгп(JNGP) не нужен. Отредактировано DmCreator, 07.09.2009 в 20:38. |
02.09.2009, 23:50 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZregerZ
Мы - лёд!
offline
Опыт:
7,029Активность: |
Эх в общем переустановил вар, но волны всёравно цветные) и идут не ~ 50 каста а с 10 теперь)
|
03.09.2009, 15:17 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DmCreator
offline
Опыт:
3,205Активность: |
|
03.09.2009, 15:30 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ZregerZ
Мы - лёд!
offline
Опыт:
7,029Активность: |
это действительно хорошая система а не бред т.к. можно не морочиться картостроителю с триггерами а просто задать параметры.
Отредактировано ZregerZ, 03.09.2009 в 15:42. |
03.09.2009, 15:34 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Если честно, то я так и не понял, зачем это нужно. Нажимаю циферку, и вбок летит непонятный кривой снаряд, который не наносит никого урона ?
|
03.09.2009, 15:46 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DmCreator
offline
Опыт:
3,205Активность: |
PlayerDark, в бок летит снаряд, наносящий урон всем встречным юнитам, аля Волна Силы!
В триггерах так просто не рассчитать время нанесения урона, а здесь это происходит само, да и на урон можно воздействовать (а это позволяет делать нормальные предметы на spd) вообще вся эта система сделана для того, чтобы характеристики героя, его здоровье и мана, его предметы могли влиять на заклинания Отредактировано Hellfim, 03.09.2009 в 16:19. |
03.09.2009, 15:51 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Для этого легче делеать триггерные заклинания самому. А снаряд кривой кстати, сами проверьте.
PS код весьма кривой и неоптимизированный хотя бы на вид. |
03.09.2009, 15:53 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DmCreator
offline
Опыт:
3,205Активность: |
PlayerDark, не снаряд кривой, а его движение - т.к. он и сам двигается и ещё подталкивается, я это убираю где код кривой? тебе функции вара не нравятся? Отредактировано Hellfim, 03.09.2009 в 16:20. |
03.09.2009, 15:55 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
DmCreator, юзаются ненужные (совсем !) бж функции - оболочки, сам код вобще совершенно не гибкий и как таковой системой не является, является триггерной реализацией двух спеллов.
|
03.09.2009, 16:00 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DmCreator
offline
Опыт:
3,205Активность: |
PlayerDark, пожалуйста, объясни мне, глупому недочеловеку, где код долген "гнуться"?
я пишу это для АоСа, где урон от абилок динамический ! в этой системе реализованы стандартные "полуфабрикаты" абилок: они летают, наносят урон, имеют свои настройки из этих "полуфабрикатов" я в карте делаю более сложные абилки Например любая "Нова" легко реализуется этой системой (в след версии выложу нужный для этого полуфабрикат) и что? что это меняет? страшно-убийственные утечки появятся? это же для способностей героев, а они не каждые 0.00001 секунды используются и эти утечки или подтормаживания никак невидны и никак не мешают. я их конечно пытаюсь избегать, но ничего плохого не вижу, можешь просто считать, что часть системы написана на GUI а вот ты - умный, так скачай, исправь/убери и выложи (ну если тебе это надо) и скажи всем какой я глупый Отредактировано DmCreator, 03.09.2009 в 22:46. |
03.09.2009, 22:40 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
DmCreator,
1) Если пишешь только для себя - зачем выкладываешь ? 2) Цитата:
Скажи это Адольфу. 3)зачем оставлять неоптимизированный код, если его можно легко исправить ? |
|
04.09.2009, 14:57 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DmCreator
offline
Опыт:
3,205Активность: |
PlayerDark, вот новый код выложил, с нормальными тестами, исправленный, убрал утечки, залотал много дыр, дополнил, чуть-чуть оптимизировал
насчёт неоптимизированности - я что-то поменял, но ты мне конкретно тыкни пальцем, где надо оптимизировать (и bj-функция у меня только одна использовалась - я её пока оставил, но заменить легко)
Отредактировано DmCreator, 04.09.2009 в 22:47. |
04.09.2009, 18:47 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Там все еще остаются ненужные БЖ функции
например IsUnitDeadBJ(u), GroupRemoveUnitSimple, UnitDamageTargetBJ итд. скачай ЖНГП и посмотри. |
04.09.2009, 19:01 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
неудаляемые локации вроде
(DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), GetUnitLoc(u)) <= 75 |
04.09.2009, 19:01 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DmCreator
offline
Опыт:
3,205Активность: |
PlayerDark, если я не ошибаюсь (что возможно), то Bj-функции - это функции, внутри которых просто вызываются другие функции и больше ничего, т.е. просто тратят время
DistancaBetweenPoints - принято, я свою функцию напишу
AngleBetweenPoints уже написан (там надо только очистку функция добавить) Отредактировано DmCreator, 04.09.2009 в 19:16. |
04.09.2009, 19:04 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
DmCreator, не это, GetUnitLoc(GetEnumUnit()), GetUnitLoc(u), вот это. Ты получаешь две точки GetUnitLoc, и не удаляешь их. Если юзать DistanceBetweenPoints то нужно так
local location l1 = GetUnitLoc(GetEnumUnit()) local location l2 = GetUnitLoc(u) (DistanceBetweenPoints(l1, l2) <= 75 call RemoveLocation(l1) call RemoveLocation(l2) set l1 = null set l2 = null |
04.09.2009, 19:10 | #16
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DmCreator
offline
Опыт:
3,205Активность: |
PlayerDark, эм..ну тебе лучше знать. Ладно, так и сделаю ещё есть что-нить исправить? |
04.09.2009, 19:15 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
DmCreator, да, отказаться от точек вообще и перейти на координаты. |
04.09.2009, 20:01 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
PlayerDark
Coraline
offline
Опыт:
10,569Активность: |
Hellfim, ну это понятно, но сложнее, тк без жнгп в некоторых случаях обойтись трудно.
|
04.09.2009, 20:07 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DmCreator
offline
Опыт:
3,205Активность: |
Hellfim, это возможно, а функция Location(x,y) не создаёт неудаляемой точки? |
04.09.2009, 20:08 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|