Сейчас 21:14:56 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
[SpellPack] Borodach
BorodachДата: Понедельник, 05 Декабря 2011, 19:18:10 | Сообщение # 1
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Hexing вдохновил на создание своего "спелл пака" =)
Опишу только действие способностей без данных, так как сделал упрощенные(на мой взгляд) надстройки по данным
1)Цель: Не позволяет окружающим героям, уйти от цели, на n дистанцию
2)Цель: Парализует цель на время (чтоб не был банальный стан добавил паузу анимации) -- на мой взгляд хорошо для связки 1 спелла
3)Цель: Получаемый урон перенаправляет на цель
4)Радиус: Увеличивает получаемый урон всех в области
При обнаружении ошибок, проблеме копирования или незначительном изменении спелла(которое не присутствует) пишем в ЛС
Для критиков кто смотрел код - не надо фанатизма оптимизации и указывайте только грубые ошибки
http://rghost.ru/33328761


Karamba
 

Ty3uKДата: Вторник, 06 Декабря 2011, 15:22:02 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Первое, что очень ужасно бьет по глазам - плохая читаемость кода. Плохой тон - не разграничивать заголовок / конец ф-ции и ее тело. Монотонный текст. Отсутствие пробелов добивает... Иду дальше...
Бж на подсчет юинтов в группе... Убило... Раскрываем через фильтр или луп (кто как хочет). Ах да, если ты используешь глобалки для константных значений, то либо пиши им constant, или делай как тру кодеры:
Code
constant function AbilityId takes nothing returns integer
           return 'A001'
endfunction

вот так тру, если хочется юзать константы


Полярные смещения лучше вынеси в переменные - чуток, но выиграешь в скорости. Вместо GetSpellAbilityUnit() юзай getTriggerUnit() - опять же выиграешь в скорости. Можно было не создавать группу g, если в начале ты ее просто сохраняешь в хэш, лучше писать call SaveAgent(udg_H,id,1,CreateGroup)


вот я и досмотрел первый спелл до конца. Дальше погляжу, но выводы сделай ^_^ самое главное - отступы









Причем последний спелл у меня не работает. И третий вроде тоже


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал Ty3uK - Вторник, 06 Декабря 2011, 15:54:51
 

HexingДата: Вторник, 06 Декабря 2011, 15:54:17 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Code
constant function AbilityId takes nothing returns integer
       return 'A001'
endfunction

скажи нет оптимизации? : /
это чисто для читабельности кода, но лично я против ваших
Code
constant function AbilityDmg takes nothing returns integer
       if(lvl == 1) then
            return 500. elseif(...)
       ...
endfunction

как читабельноть кода улучшит что-либо в игре? только замедлит работу кода - лишняя функа=лишний поток, хоть и почти мгновенный

Quote (Ty3uK)
Вместо GetSpellAbilityUnit() юзай getTriggerUnit() - опять же выиграешь в скорости.

Хватит всех убеждать в этом, во первых это -читабельность кода, во вторых никто не доказывал что это работает быстрее(кроме SirNickolas намёк которого был очень тонок и не указывал на все ситуации)...

Вот такто Ватсон ;)

p.s. ща гляну спеллпак, по описанию видно что автор пытается сделать чтото оригинальное)))

Добавлено (06 Декабрь 2011, 15:50:29)
---------------------------------------------
кстати почему файл называется "LichUpgrade"???

Добавлено (06 Декабрь 2011, 15:54:17)
---------------------------------------------
скачал, жму сохранить - пишет 2 ошибки

Code
call GroupEnumUnitsInRange(gds , GetWidgetX(ut) , GetWidgetY(ut) , PickRadius + RadiusPerLvl * GetUnitAbilityLevel(u , idSpellChain) , function FilterHero)

тут не function FilterHero а Condition(function FilterHero) нада

Ty3uK, у тебя без ошибок запустилось?


 

DragoNДата: Вторник, 06 Декабря 2011, 15:58:43 | Сообщение # 4
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (Hexing)
лишняя функа=лишний поток

функция != поток buba
единственный способ запустит функцию в мнимом потоке(эмуляция потока) - ExecFunc()


El Psy Congroo
 

HexingДата: Вторник, 06 Декабря 2011, 16:08:51 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
DragoN, разве? я считал что ExecFunc как раз и не выз... а ну да вы правы, это я загнул) просто читал недавно на хгм статью про редактирование памяти и лимит в 20 потоков, так вдохновило...

 

BorodachДата: Вторник, 06 Декабря 2011, 16:16:43 | Сообщение # 6
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Quote (Ty3uK)
чуток, но выиграешь в скорости.

Quote (Ty3uK)
опять же выиграешь в скорости.

Quote (Borodach)
не надо фанатизма оптимизации и указывайте только грубые ошибки

Quote (Ty3uK)
Бж на подсчет юинтов в группе...

Почти то же что и открывать call TriggerRegisterAnyUnitEventBJ
Quote (Ty3uK)
Причем последний спелл у меня не работает. И третий вроде тоже

Эти спелы на моей карте или на твоей?
Quote (Hexing)
function FilterHero а Condition(function FilterHero) нада

У меня такая ошибка была когда в папку с руским названием сохранял... а на латыни норм пашет
Quote (Hexing)
кстати почему файл называется "LichUpgrade"

делал скил "Лича" из доты (когда ледяной шарик скачет от цели до цели нанося урон), только вместо льда корни вешает


Karamba
 

HexingДата: Вторник, 06 Декабря 2011, 16:16:52 | Сообщение # 7
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Пауза выглядет прикольно, но както слишком глухо... добавь какиенибудь спецэффекты или аое дебаффы
Перенаправлялка - вообще без эффектов... трудно понять что урон не проходит)))
остальные не видел ибо с ошибками код


 

Ty3uKДата: Вторник, 06 Декабря 2011, 16:18:53 | Сообщение # 8
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Quote (Borodach)
Эти спелы на моей карте или на твоей?

Я, как бы, копипастом не занимаюсь, кодю для себя сам. Фанатизма нет, есть рациональное использование ресурсов, ок?


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

[DUОS]Дата: Вторник, 06 Декабря 2011, 16:25:04 | Сообщение # 9
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Пфф... Что тут вообще за грязь льют?
Quote (Hexing)
Хватит всех убеждать в этом, во первых это -читабельность кода, во вторых никто не доказывал что это работает быстрее(кроме SirNickolas намёк которого был очень тонок и не указывал на все ситуации)...

Холмс ты наш, посчитай символы.
GetSpellAbilityUnit - 19
GetTriggerUnit - 14
Профит от триггерюнита. Плюс ко всему, этот тип обобщённый. Истинный кодер должен рвать и бросать его читабельность в топку, если от неё страдает скорость кода.
Quote (Hexing)
как читабельноть кода улучшит что-либо в игре? только замедлит работу кода - лишняя функа=лишний поток, хоть и почти мгновенный

И сам себе противоречишь. Красиво! ahaha
Quote (DragoN)
единственный способ запустит функцию в мнимом потоке(эмуляция потока) - ExecFunc()

И здравствуй, краш карты... Надо писать ExecuteFunc() :)


Ребята, вы прямо напомнили спеллмодераторов Хайва - один говорит, что группу надо в циклы ставить и не утверждает ресурс, а второй - что надо делать в фильтрфунке и тоже не утверждает. И между собой они вообще не договорятся.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

BorodachДата: Вторник, 06 Декабря 2011, 16:28:10 | Сообщение # 10
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
Ty3uK, Так ты и себе используй рационально... но и не навязывай это другим, ок?
Проверил, третий пашет, а последний глючит... спс буду исправлять


Karamba
 

Ty3uKДата: Вторник, 06 Декабря 2011, 16:29:33 | Сообщение # 11
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Borodach, я не навязываю, а показываю вообще-то. Ну да, и на таких принципах "нерациональности" и сделали гуи, чо

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

HexingДата: Вторник, 06 Декабря 2011, 17:04:42 | Сообщение # 12
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
[DUОS], ну да, куда нам до тебя pray
Quote (|DUОS|)
Холмс ты наш, посчитай символы.
GetSpellAbilityUnit - 19
GetTriggerUnit - 14

это еще не доказательство !!!
Quote (Borodach)
Так ты и себе используй рационально... но и не навязывай это другим, ок?

+1


 

[DUОS]Дата: Вторник, 06 Декабря 2011, 17:16:28 | Сообщение # 13
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (Hexing)
это еще не доказательство !!!

Если предположить, что их начинка едит по-равному, то остаются только чары, которые тоже кушают память.
Quote (Borodach)
Так ты и себе используй рационально... но и не навязывай это другим, ок?

Здесь никто никому ничего не навязывают. Здесь дают хорошие советы.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

HexingДата: Вторник, 06 Декабря 2011, 17:57:25 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (|DUОS|)
Здесь никто никому ничего не навязывают. Здесь дают хорошие советы.

хорошие если верить вам)) но как видно я в меньшенстве так что ладно, GetTriggerUnit() лучше, пусть будет по вашему


 

[DUОS]Дата: Вторник, 06 Декабря 2011, 19:07:30 | Сообщение # 15
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Hexing,
Ты мне не поверил.
Давай тогда докажу тебе, почему GetTriggerUnit гораздо лучше. Погуглив каждую из этих нативок, могу привести такие доводы:

1. GetTriggerUnit является локальной native-функцией, то есть создающейся для каждого инстанса триггера.
2. Функции вида GetXXXUnit с юнитом, ориентированным на событие, являются наследниками от GetTriggerUnit. То есть вызывается на функцию больше.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

DragoNДата: Вторник, 06 Декабря 2011, 20:21:18 | Сообщение # 16
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (Hexing)
а ну да вы правы, это я загнул) просто читал недавно на хгм статью про редактирование памяти и лимит в 20 потоков

ну это правильно так-то. варе работает до 20 общих потоков(именно потоков)
Quote (|DUОS|)
И здравствуй, краш карты... Надо писать ExecuteFunc() :)

я сократил, ибо давно не кодил - точное название не помню
думаю Hexing парень толковый, так что и так всё понял => профит получен
краша не будет - компилятор пробубник про несуществующую функцию(даже если в ExecuteFunc() не вписать аргумент - не факт что будет фатал, это в патчах после 1.24 вроде как пофиксили mellow )

Добавлено (06 Декабрь 2011, 20:21:18)
---------------------------------------------
Quote (|DUОS|)
Если предположить, что их начинка едит по-равному, то остаются только чары, которые тоже кушают память.

ты уже начинаешь кончать на чары? avtortroll


El Psy Congroo


Сообщение отредактировал DragoN - Вторник, 06 Декабря 2011, 21:20:18
 

[DUОS]Дата: Вторник, 06 Декабря 2011, 21:01:12 | Сообщение # 17
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (DragoN)
ты уже начинает кончать на чары?

Как бы несогласование падежей :)
Чары тоже кушают память, наверное, поэтому ты 93 убрал из ника - оптимизация же haha
Quote (DragoN)
это в патчах после 1.24 вроде как пофиксили

Не вроде как, а пофиксили.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

DragoNДата: Вторник, 06 Декабря 2011, 21:21:29 | Сообщение # 18
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (|DUОS|)

Как бы несогласование падежей :)

ок ответа нет - пытаешься контрить опечатками?
Quote (|DUОS|)
Чары тоже кушают память, наверное, поэтому ты 93 убрал из ника - оптимизация же haha

он и кушают пару килобайт, лол


El Psy Congroo
 

HexingДата: Среда, 07 Декабря 2011, 07:21:40 | Сообщение # 19
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (DragoN)
так что и так всё понял => профит получен

точно подметел, лень было объясняться перед дуосом, ибо тут итак злой холивар, а с ним трудно спорить
Quote (DragoN)
он и кушают пару килобайт, лол

не) байт - английские символы записываются как байт
а учитывая что
Quote
Анализ дампов памяти, созданных предыдущими примерами, показал, что каждая целочисленная переменная занимает целых 40 байт памяти, лишь 4 из которых содержат число. Ещё 8 указывают тип переменной. Например, целочисленный тип описывается так:

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

Quote (|DUОS|)
1. GetTriggerUnit является локальной native-функцией, то есть создающейся для каждого инстанса триггера.
2. Функции вида GetXXXUnit с юнитом, ориентированным на событие, являются наследниками от GetTriggerUnit. То есть вызывается на функцию больше.

который раз говорю, это еще надо доказать!


 

DragoNДата: Среда, 07 Декабря 2011, 08:24:07 | Сообщение # 20
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (Hexing)

не) байт - английские символы записываются как байт

килобайт = 1024 байта mellow
ASCII-символы занимают один байт, остальные – два байта buba


El Psy Congroo
 

[DUОS]Дата: Среда, 07 Декабря 2011, 14:18:19 | Сообщение # 21
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (DragoN)
он и кушают пару килобайт, лол

Здесь ключевое слово не пару килобайт, а КУШАЕТ.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

HexingДата: Среда, 07 Декабря 2011, 15:44:20 | Сообщение # 22
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
[DUОS], варик кушает тонны памяти, и это никак не повлияет на положение! хватит холиварить xD

 

[DUОS]Дата: Среда, 07 Декабря 2011, 16:26:32 | Сообщение # 23
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (Hexing)
варик кушает тонны памяти

В том и дело, что варик кушает тонны памяти. Вот и надо максимально снизить коэффициент её кушания импортом и кодом. Угу.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

HexingДата: Среда, 07 Декабря 2011, 16:47:13 | Сообщение # 24
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
в этом есть доля логики, хотя в целом идея обсурдна, ведь если рассмотеть язык jass - то он не расчитан на опимальность никаким боком...
я лучше просто буду писать код, не задумываясь о 2 чарах, кстати вроде ты гдето писал что лучше создавать много хт чем кидать всё в одну - так нет, хт жрёт дофигище памяти, а даже пустые ячейки жрут столькоже памяти, и не надо создавать много хт - одной хт на мапу вполне хватит... я даже не уверен что если создавать много хт, они будут быстрее работать, ведь поиск идёт независимо от значений - по списку?


 

DragoNДата: Среда, 07 Декабря 2011, 17:30:45 | Сообщение # 25
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (|DUОS|)

В том и дело, что варик кушает тонны памяти. Вот и надо максимально снизить коэффициент её кушания импортом и кодом. Угу.

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


El Psy Congroo


Сообщение отредактировал DragoN - Четверг, 08 Декабря 2011, 13:25:26
 

  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz