|
|
|
|
[vJass] [Spell Pack] Spiritbreaker
|
|
[DS] | Дата: Пятница, 08 Июля 2011, 12:57:52 | Сообщение # 1 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| Charge of Darkness
Barathrum фoкуcиpуeтcя нa укaзaннoй цeли и нaчинaeт пoгoню зa нeй cквoзь любыe пpeпятcтвия. Любoй юнит, вoшeдший в кoнтaкт в тeчeниe paзгoнa, зaдeйcтвуeт умение Greater Bash. Пoкидaя тeни, Barathrum oбeздвиживaeт cвoю цeль нa oпpeдeлeннoe вpeмя. Bpaг мoжeт видeть нeгaтивный бaфф нa ceбe тoлькo кoгдa Barathrum пoблизocти.
Empowering Haste
Даёт Spiritbreaker'у возможность сильнее размахивать своим оружием, нанося дополнительный урон, тем больший, чем выше скорость его передвижения. Его присутствие также ускоряет союзников в радиусе 500.
Greater Bash
Дaeт 17% шaнc oглушить вpaгa, oттoлкнув eгo нa нeкoтopую диcтaцию, нaнocя дoпoлнитeльный уpoн. B cлучae cpaбaтывaния гepoй пoлучaeт бoнуc 15% к cкopocти пepeдвижeния нa 3 ceкунды.
Nether Strike
Пepeмeщaeт гepoя зa cпину укaзaннoй цeли, нанося урон всем врагам вокруг и отталкивая их с помощью Greater Bash. Герой становится невосприимчивым к магии на время перемещения.
Скачать.
Напишите пжл про недочеты, утечки и баги.
Сообщение отредактировал [DS] - Пятница, 08 Июля 2011, 22:55:42 |
|
|
|
lawson | Дата: Пятница, 08 Июля 2011, 13:38:55 | Сообщение # 2 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| Что делает этот спелл опиши не все в доту каждый день играют.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
|
|
|
|
[DS] | Дата: Пятница, 08 Июля 2011, 13:42:28 | Сообщение # 3 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| ок, напишу когда домой приду.
|
|
|
|
DeadJass | Дата: Пятница, 08 Июля 2011, 13:42:38 | Сообщение # 4 |
7 уровень
Группа: Проверенные
Сообщений: 447
Награды: 0
Репутация: 30
Блокировки:
| [DS], 1 спелл немного не правльный. Сначала,бара стоит на месте и разгоняется ооло 5 секунд можно и отменить тогда он полетит сразу в цель.
^ кликабельно Archers Of The Island v1.8 - на стадии завершения
|
|
|
|
[DS] | Дата: Пятница, 08 Июля 2011, 13:44:10 | Сообщение # 5 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| эмм... Как бэ, это из другой версий. В новой он сразу бежит.
|
|
|
|
lawson | Дата: Пятница, 08 Июля 2011, 13:45:37 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
| function Damage просто забивание строк.
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 08 Июля 2011, 13:52:19 |
|
|
|
[DS] | Дата: Пятница, 08 Июля 2011, 14:01:54 | Сообщение # 7 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| ну и?
|
|
|
|
Faion | Дата: Воскресенье, 10 Июля 2011, 01:15:29 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| В целом неплохо, но есть бж, убери их.
Далее если открыть не спелы, а твой спелл двиг, то увидим не мало недочетов. Code function DistForCOD takes unit u, unit t returns real local real x1 = GetUnitX(u) local real y1 = GetUnitY(u) local real x2 = GetUnitX(t) local real y2 = GetUnitY(t) if u == null or t == null then return I2R(9999999999) // - это конечно жжот else return SquareRoot(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))) // и нафиг ты писал функцию вычисления дистанции и не используешь ее? endif return 1.0 endfunction
Code function Angl takes real x1,real y1,real x2,real y2 returns real return bj_RADTODEG*Atan2(y2-y1,x2-x1) endfunction
bj_RADTODEG=180.0/3.14159
Code function Dist takes real x1,real y1,real x2,real y2 returns real return SquareRoot(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))) endfunction
Если внимательно посмотреть то тут есть дублирующиеся действия, а именно вычитание.
Я бы советовал бы сделать что б функция принимала 2 значения, а при отправке вычитать 1 раз, малость быстрее будет работать. Code function ReturnTrue takes nothing returns boolean return true endfunction
КЭП в шоке.
Code function TriggerRegisterAnyUnitEvent takes trigger t, playerunitevent e returns nothing local integer i = 0 loop call TriggerRegisterPlayerUnitEvent(t,Player(i),e,Condition(function ReturnTrue)) set i = i+1 exitwhen i==16 endloop endfunction
А все потому что тут криво замутил, нужно было вместо кондишена вписать null.
Code function SaveRealHash takes integer i,string s, real r returns nothing call SaveReal(h,i,StringHash(s),r) endfunction
function SaveUnit takes integer i, string s, unit u returns nothing call SaveUnitHandle(h,i,StringHash(s),u) endfunction
function SaveIntegerHash takes integer i, string s, integer g returns nothing call SaveInteger(h,i,StringHash(s),g) endfunction
function LoadUnit takes integer i, string s returns unit return LoadUnitHandle(h,i,StringHash(s)) endfunction
function LoadIntegerHash takes integer i, string s returns integer return LoadInteger(h,i,StringHash(s)) endfunction
function LoadRealHash takes integer i, string s returns real return LoadReal(h,i,StringHash(s)) endfunction
Религия не позволяет юзать подобное тем кому важно быстродействие.Добавлено (10-07-2011, 01:15) ---------------------------------------------
Code local trigger t = GetTriggeringTrigger() local integer i = GetHandleId(t)
Создаешь постоянно в каждой функции, гораздо быстрее и лучше будет если ты создашь глобалки для них и просто будешь перезаписывать.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
[DS] | Дата: Воскресенье, 10 Июля 2011, 01:38:01 | Сообщение # 9 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| все понял. Переписаваю свой CS. bj_RADTODEG - а чем он плох? Или сделать так: private real RADTODEG
set RADTODEG = 180.0/3.14159 и так используя вместо bj_RADTODEGДобавлено (10-07-2011, 01:38) --------------------------------------------- с function DistForCOD действительно че та протупил.
|
|
|
|
Faion | Дата: Воскресенье, 10 Июля 2011, 01:38:27 | Сообщение # 10 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Не то что бы он прям так плох, просто если юзать именно готовые значения, малость быстрее будет, учитывая что ты пишешь движок, нужно создавать функции максимально быстрыми=)
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
[DS] | Дата: Воскресенье, 10 Июля 2011, 01:50:31 | Сообщение # 11 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| Все надо делать быстрым) Добавлено (10-07-2011, 01:50) --------------------------------------------- Все надо делать быстрым) Добавлено (10-07-2011, 01:50) --------------------------------------------- Все надо делать быстрым)
|
|
|
|
Faion | Дата: Воскресенье, 10 Июля 2011, 03:21:57 | Сообщение # 12 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (Faion) Code function TriggerRegisterAnyUnitEvent takes trigger t, playerunitevent e returns nothing local integer i = 0 loop call TriggerRegisterPlayerUnitEvent(t,Player(i),e,Condition(function ReturnTrue)) set i = i+1 exitwhen i==16 endloop endfunction
А все потому что тут криво замутил, нужно было вместо кондишена вписать null.
Кстати я ступил, и вообще не прав. Если юзать тут null - будет утечка.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
[DS] | Дата: Воскресенье, 10 Июля 2011, 09:33:11 | Сообщение # 13 |
9 уровень
Группа: Проверенные
Сообщений: 1116
Награды: 0
Репутация: 527
Блокировки:
| Посатри в Jass: Полезные функций я там это писал, а меня обругали
|
|
|
|
Faion | Дата: Воскресенье, 10 Июля 2011, 12:07:38 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (|DS|) Посатри в Jass: Полезные функций я там это писал, а меня обругали
Ага, я видел, выше тоже я сказал что не верно, но решил таки проверить, оказалось что я не прав, а прав ты=)
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
FkoFF | Дата: Воскресенье, 10 Июля 2011, 16:40:16 | Сообщение # 15 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Quote (DeadJass) [DS], 1 спелл немного не правльный. Сначала,бара стоит на месте и разгоняется ооло 5 секунд можно и отменить тогда он полетит сразу в цель. в новых версиях бежит сразу. Quote (Faion) bj_RADTODEG=180.0/3.14159 вызов глобальной константы быстрее чем 180.0/3.14159, по этому bj_RADTODEG > раскрытия формулы
Quote (Faion) Религия не позволяет юзать подобное тем кому важно быстродействие. вообщем то он создал свои УГбж, на кой хрен, право слово, я не пойму. Quote (Faion) Если юзать тут null - будет утечка. откуда возьмется утечка? Тоесть лишний булэкспр != утечка?
|
|
|
|
Faion | Дата: Воскресенье, 10 Июля 2011, 17:24:09 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (FkoFF) откуда возьмется утечка? Тоесть лишний булэкспр != утечка?
Верю больше Тоадкопу+Айсфрогу=) Сказали что если интересно, то подробно этот вопрос рассмотрен на кампе.
Quote (FkoFF) вызов глобальной константы быстрее чем 180.0/3.14159, по этому bj_RADTODEG > раскрытия формулы
Нет, это тож самое что юзать бж функции, в которой нативка, т.к. в ней не результат 180.0/3.14159, а лишь выражение, причем еще ссылка на константу Pi, в следствие 2 ссылки. Самый быстрый способ вообще юзать '57,29582790879777'.
Quote (FkoFF) Тоесть лишний булэкспр != утечка?
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
FkoFF | Дата: Воскресенье, 10 Июля 2011, 19:58:47 | Сообщение # 17 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Quote (Faion) Нет, это тож самое что юзать бж функции, в которой нативка, т.к. в ней не результат 180.0/3.14159, а лишь выражение, причем еще ссылка на константу Pi, в следствие 2 ссылки. Самый быстрый способ вообще юзать '57,29582790879777'. эмм. Ты, кажется, не просек фишку.
bj_RADOTED - переменная типа "реальное число", константная. Высчитывается 1 раз при загрузке карты, в последствии считывается как обычная переменная. Нагрузка сравнительно меньше нежели операции с числами каждый новый раз.
Единственные случаи когда имеет смысл перекидывать формулу в триггер это операции по типу:
Code function PercentToInt takes real percentage, integer max returns integer local integer result = R2I(percentage * I2R(max) * 0.01)
if (result < 0) then set result = 0 elseif (result > max) then set result = max endif
return result endfunction
function TextTagSize2Height takes real size returns real return size * 0.023 / 10 endfunction
function TextTagSpeed2Velocity takes real speed returns real return speed * 0.071 / 128 endfunction
в функциях выше мы переносим формулу из функции для снижения количества вызванных функций; собственно заботимся о быстродействии.
А на счет булэкспров - я конечно к тоадкопу отношусь сносно, однако могу заверить тебя что когда я в одном из переодических триггеров не удалял булэскпр - были очень и очень тяжелые утечки.
Кстати, Айсфрог как известно не кодер, а лиш фронтмен; но не в этом суть; я о том что при всем желании null не сможет выдать утечку, в лучшем случае будет аналогичная ситуация как и с cond(func ReturnTrue). Во всяком случае могу гарантировать что cond(func ReturnTrue) создаст 12 сравнительно тяжелых объектов на каждый из триггеров где будет вписываться этот самый ReturnTrue.
|
|
|
|
Faion | Дата: Воскресенье, 10 Июля 2011, 21:46:24 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 1894
Награды: 0
Репутация: 430
Блокировки:
| Quote (FkoFF) bj_RADOTED - переменная типа "реальное число", константная. Высчитывается 1 раз при загрузке карты, в последствии считывается как обычная переменная. Нагрузка сравнительно меньше нежели операции с числами каждый новый раз.
Думаю ты прав, однако юзать готовое число будет все равно быстрее чем ссылаться на него=)
Quote (FkoFF) я о том что при всем желании null не сможет выдать утечку, в лучшем случае будет аналогичная ситуация как и с cond(func ReturnTrue). Во всяком случае могу гарантировать что cond(func ReturnTrue) создаст 12 сравнительно тяжелых объектов на каждый из триггеров где будет вписываться этот самый ReturnTrue.
О нас думают плохо лишь те, кто хуже нас, а те кто лучше нас... Им просто не до нас. My Project: Nindogatari MAL
|
|
|
|
FkoFF | Дата: Воскресенье, 10 Июля 2011, 23:18:54 | Сообщение # 19 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| Quote (Faion) Думаю ты прав, однако юзать готовое число будет все равно быстрее чем ссылаться на него=) определенно )
|
|
|
|
|
|
|
|
|
|
|