Первый спелл (cJass)
|
|
MiniCore | Дата: Воскресенье, 06.10.2013, 10:04 | Сообщение # 1 |
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
загрузка наград ...
| Всем привет! Я тут новичок, и хотелось бы вашего мнения. Начал изучать Jass, и перешел на cJass (он мне ближе, т.к. имел дело с С-подобными языками). Теперь к сути: сделал спелл, обычный, ничем не выделяющийся. Просто движение дамми юнита, просто наносит урон. Весь сок в коде: правильные ли выбраны структуры для реализации данной задачи? Что можно было бы не писать, что можно улучшить (в плане алгоритма)? Интересно ваше мнение, файлик с картой прицепляю (сорри за некликабельность, тегами url мне пользоваться нельзя, и прицепить к сообщению тоже нельзя) Ссылка на Яндекс.Диск: http://yadi.sk/d/-HUjVIMIASxHY
P.S. - оценивайте строго, мне сразу надо знать, что и как делается
Сообщение отредактировал MiniCore - Воскресенье, 06.10.2013, 10:08 |
|
| |
War3I4i | Дата: Воскресенье, 06.10.2013, 17:04 | Сообщение # 2 |
Группа: Творец
Сообщений: 849
Награды: 19
Репутация: 1058
Статус: Offline
загрузка наград ...
| 1. AngleBetweenPoints желательно раскрыть : bj_RADTODEG*Atan2(Y точки 2 - Y точки 1, Х точки 2 - Х точки 1) 2. Зачем заносить в макрос числа для хэша? Это тупо и безсмысленно 3. DestroyEffect(AddSpecialEffectLoc(eff, GetUnitLoc(dummy))) - Лучше юзать виджеты(координаты), получится DestroyEffect(AddSpecialEffect(eff, GetWidgetX(dummy),GetWidgetY(dummy)))) 4. Функцию GetUnitsInRangeOfLocAll нужно раскрыть : local group g = CreateGroup() call GroupEnumUnitsInRange(g, GetWidgetX(dummy), GetWidgetY(dummy), 200, null) а затем call ForGroup(g, function твоя функция) потом в функции группы добавляй юнитов в свою группу для проверки дамага (как всегда) после ForGroup можешь делать call DestroyGroup(g)
Ну в основном это всё касается раскрытия BJ функций и исключить использование location (нужно юзать Widget), а так неплохо) Красава =) Надеюсь мои "советы" тебе помогут)
|
|
| |
MiniCore | Дата: Воскресенье, 06.10.2013, 17:22 | Сообщение # 3 |
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
загрузка наград ...
| Цитата 2. Зачем заносить в макрос числа для хэша? Это тупо и безсмысленно Не согласен. Мне, например, легче запомнить слова чем числа. Осталась привычка с программирования такая) (Я так понимаю, макросы - это расширенные аналоги констант)
А насчет остального - я так понимаю, это связано с различного рода "тормознутостями" w3 и утечками. Но в народе ходят слухи, что если в корне прописать большая часть утечек будет пофикшена (по крайней мере в GUI). Почему бы и здесь не использовать данный фикс? И как в таком случае вообще проверить наличие утечек?
|
|
| |
War3I4i | Дата: Воскресенье, 06.10.2013, 17:32 | Сообщение # 4 |
Группа: Творец
Сообщений: 849
Награды: 19
Репутация: 1058
Статус: Offline
загрузка наград ...
| #include "ALL.j" я бы не советовал тебе юзать, я сам не до конца понимаю все её функции но лучше самому раскрывать BJ. Кол-во утечек можно проверить в диспетчере задач в "Быстродействие", там увидишь нагрузку на ОЗ, проверь её до скила и после
Сообщение отредактировал War3I4i - Воскресенье, 06.10.2013, 17:32 |
|
| |
War3I4i | Дата: Воскресенье, 06.10.2013, 17:37 | Сообщение # 5 |
Группа: Творец
Сообщений: 849
Награды: 19
Репутация: 1058
Статус: Offline
загрузка наград ...
| Почитав инклуду ALL даже насчёт функции GetUnitsInRangeOfLocAll могу сказать что она вовсе не раскрывает BJ и не удаляет утечки, а лишь малость помогает, можешь открыть папку jass new gen pack / AdicHelper / lib / и тут файл All.j (как-то так) открой его в блокноте, потом Alt+ F и введи GetUnitsInRangeOfLocAll и узнаешь что эта инклуда меняет насчёт этой функции, удачи
|
|
| |
Wolfkill | Дата: Воскресенье, 06.10.2013, 18:53 | Сообщение # 6 |
Saiyan
Группа: Творец
Сообщений: 792
Награды: 13
Репутация: 206
Статус: Offline
загрузка наград ...
| MiniCore, добавь в скайп wolfkill3.
Сообщение отредактировал wolfkill3 - Воскресенье, 06.10.2013, 18:53 |
|
| |