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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [vJass] [Spell Pack] Spiritbreaker (Бара из Доты)
[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)
Думаю ты прав, однако юзать готовое число будет все равно быстрее чем ссылаться на него=)

определенно )


 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » [vJass] [Spell Pack] Spiritbreaker (Бара из Доты)
  • Страница 1 из 1
  • 1
Поиск:

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