MegaBlax
offline
Опыт:
2,352Активность: |
Запилил новый скилл. Посмотрите.
Привет ребят. Вот запилил новый скилл. Не скажу что прям оригинальный. Просто посмотрите исполнение.
» структура
((код
struct ShadowDanceStruct
static thistype m[] static integer MUI=0 static timer t=null static string sfx="Objects\\Spawnmodels\\Human\\HumanBlood\\BloodElfSpellThiefBlood.mdl" unit caster=null unit target=null integer i=0 real a1 real a2 private method StopMove takes integer j returns nothing loop exitwhen j>MUI m[j]=m[j+1] j++ endloop MUI-- if MUI==0 PauseTimer(t) DestroyTimer(t) t=null caster=null target=null endif endmethod private static method ShadowDanceMove takes nothing returns nothing integer z=0 thistype this loop exitwhen z>=MUI this=m[z] if i<30 && GetUnitState(target,UNIT_STATE_LIFE)>0 a1=GetUnitFacing(caster) a2=GetUnitFacing(target) SetUnitX(caster,GetUnitX(target)-75*Cos(a2*bj_DEGTORAD)) SetUnitY(caster,GetUnitY(target)-75*Sin(a2*bj_DEGTORAD)) SetUnitFacing(caster,a2) UnitDamageTarget(caster,target,(GetHeroAgi(caster,true)*0.25),true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,null) DestroyEffect(AddSpecialEffect(sfx,GetUnitX(target),GetUnitY(target))) i++ else StopMove(z) endif z++ endloop endmethod public static method ShadowDanceStart takes unit u,unit u2 returns nothing thistype this=thistype.create() m[MUI]=this caster=u target=u2 if t==null t=CreateTimer() TimerStart(t,0.1,true,function thistype.ShadowDanceMove) endif MUI++ endmethod endstruct )) |
28.01.2014, 15:06 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
нет отладки, садись два. |
28.01.2014, 15:45 | #2
+2/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,598Активность: |
MegaBlax, ну если честно то скилл не очень, напомнил мне ульту сикера...
Эффекты коряво прикреплены, герой дергается без анимации, ударов нету... Структура для такого примитива перебор, хватит хт, да и написать все можно гораздо короче и понятнее... Мой вывод: Доводи до ума! quq_CCCP добавил: DioD: Эмм, а нафиг тут отладка? Он просит посмотреть и оценить его скилл, в 3 строчки... |
28.01.2014, 15:51 | #3
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Почему мне никто не сказал, что бы я запретил смешивать cJass синтаксис с vJass? Это еще цветочки, ягодки я видел у китайцев:
ADOLF добавил:
Кстати, если кому-то нужен - есть китайский cJass Манул :
|
28.01.2014, 17:34 | #4
+4/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
это зачем? внутри карты у тебя точно такая же переменная и так хранится ScorpioT1000 добавил: вот оптимальное решение обхода объектов структур www.hiveworkshop.com/forums/jass-ai-scripts-tutorials-280/coding... |
28.01.2014, 18:02 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
Вы знаете, иногда меня обвиняли в излишний оптимизации. И в целом я с обвинениями согласен. Но тот парень переплюнул даже меня: он выяснил, что по какой-то странной причине (причем я обсуждал это с Кроком, тем парнем, который реверсил WCIII, и мы так ничего и не поняли) скорость обращения к переменной или функции кода зависит от длины имени. Так вот, этот парень с Хайва, что бы вы думали? Конечно, укорачивал имена. А еще он использовал module (кто глубоко вникал в vJass - поймет) в качестве макросов, т. к. vJass изначально имеет весьма обрезанные макросы, которые не везде и вставишь. Сказанного достаточно.
А фишка с extends array - годная. |
28.01.2014, 22:32 | #6
+2/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
про длину переменных мне тоадди еще говорил, у него по tcx заметно) в целом это лечится оптимизационными тулами |
28.01.2014, 22:39 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
Спасибо конечно ребят. Но я про метод исполнения спрашивал, а не про качество. Как там эффекты прикреплены и т.д. мне все равно. Просто скажите где можно сделать по другому в плане кода. |
28.01.2014, 23:05 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
От меня:
|
28.01.2014, 23:57 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
ADOLF, Насчет caster=u - может там должно быть this.caster = u? Вы его вообще пробовали применять одновременно несколькими юнитами? Мне кажется, мультеприменимость поломана То там все нормально. Работает |
29.01.2014, 01:08 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
это позволяет понимать то что вы пишите полностью, использование надстроек должно использоваться только теми кто уже умеет писать OOP сам по себе. |
29.01.2014, 09:25 | #11
+2/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MegaBlax
offline
Опыт:
2,352Активность: |
DioD, проще говоря. Я не готов! Буду дальше юзать джасс и гуи ;) |
29.01.2014, 10:07 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
я всю жизнь писал структуры без чьей либо помощи, сам по себе, даже книжек не читал, брал бумажку и зарисовывал процесс.
в результате узнал что дошел сам по себе до стандартного индустриального метода управления памятью, от того и потому что иначе памятью управлять не представляется возможным.
но в отличии от тех кто тупо начал использовать готовое я понимаю суть и могу реализовать менеджер на любом языке. |
29.01.2014, 10:40 | #13
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
диод у нас любит пописать велосипеды и посчитать регистры в 2014, когда надо собирать продукт из ряда фреймворков и других продуктов/библиотек, не обращайте внимания) |
29.01.2014, 11:35 | #14
+1/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
модули не совсем в качестве макросов юзались, это просто такая инициализация ранняя
Вот тут я реализовывал на 90% идеальный каноничный cjass код спелла со структурами и прочим без лишней грязи |
29.01.2014, 12:16 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
107,539Активность: |
То, что ты там реализовывал, по сравнению с тем, что там реализовал я... кхм... ;) А в целом прав - очень полезно смотреть чужой код, тем более, если к нему еще и куча людей написали рецензии. |
29.01.2014, 12:27 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
ScorpioT1000:
не надо путать работу и развлечение.
варкрафт развлечение и важен процесс, изобретение велосипеда очень даже хорошая штука. |
29.01.2014, 12:57 | #17
+1/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
ADOLF, там не о сложности системы, а о правильности и структуре кода. |
29.01.2014, 15:18 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|