![]()
WhyNotMe
![]() offline
Опыт:
182Активность: |
Стак триггерного регена
Вот триггерная аура регена (стандартная не подходит - 1%/сек минимум):
Как сделать так, чтобы при нахождении рядом нескольких "Паладинов" ауры не складывались и не давали дикий реген. Нужно чтобы работала аура максимального уровня. |
![]() |
#1
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Cosonic5
Моймозггоритогнем
![]() ![]() offline
Опыт:
13,584Активность: |
ну так это триггер срабатывает уйму колличество раз
а если их несколько(героев) то от каждого и идет выбор и от каждого паладина бонус капает на всех кто находится в области.
такое лучше писать на jass/ а вообще тебе надо лучше взять спелбук за основу чтоб ауры не складывались и уже триггерно проверять |
![]() |
#2
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,494Активность: |
WhyNotMe, Нужно проверять цель на наличие её в другой группе, кстати лучьге искать цель по баффу... И если юнит уже имеется в гурпе хилящихся от паладина то не делать ничего |
![]() |
#3
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
WhyNotMe
![]() offline
Опыт:
182Активность: |
Попробовал через группы:
Не работает, реген по прежнему складывается. Предположительно из за того, что юниты пикаются одновременно и не успевают добавиться в группу перед новой проверкой. Через бафы то же самое будет, ведь нельзя определить уровень бафа на юните. |
![]() |
#4
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,494Активность: |
WhyNotMe, Щяс скину вариант на vjass, там будут работать только одна аура с наибольшем уровнем....
quq_CCCP добавил:
WhyNotMe, вот код, скопируй в кастом код карты и настрой как указано:
» Код
((код jass
library DegenAura initializer InitAuraData
НАСТРОЙКИ В БЛОКЕ "difine" define { AuraId = 'A000' Равкод самой ауры. AuraBuffId = 'B000' Равкод баффа ауры. AuraRadius = 750.00 Радиус ауры. AuraHeal = 0.015 Процент лечения умоножается на уровень скилаа. } ============================================================================================= Далее вмешательство не рекомендуется! ============================================================================================= globals group gg_grp_TempGroup hashtable gg_htb_GameData boolexpr gg_bxp_TempBoolexpr trigger gg_trg_LernDegenAura Вспомогательные переменные. timer bj_groupTempTimer unit bj_lastFilterUnit real bj_groupLifeFactor = 0.015 integer bj_groupAbilutyLevel = 0 endglobals private function Check_Unit_Conditions takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( ) return IsUnitAlly( bj_lastFilterUnit, bj_groupEnumOwningPlayer ) and GetUnitState( bj_lastFilterUnit, UNIT_STATE_LIFE ) > 0.00 and GetUnitAbilityLevel( bj_lastFilterUnit, AuraBuffId ) > 0 endfunction private function AuraBuffDuration takes nothing returns nothing
set bj_groupTempTimer = GetExpiredTimer( ) set bj_groupAbilutyLevel = GetHandleId( bj_groupTempTimer ) call FlushChildHashtable( gg_htb_GameData, GetHandleId( LoadUnitHandle( gg_htb_GameData, bj_groupAbilutyLevel, 0 ) ) )
call DestroyTimer( bj_groupTempTimer ) call FlushChildHashtable( gg_htb_GameData, bj_groupAbilutyLevel ) endfunction
private function LernDegenAura_Conditions takes nothing returns boolean
return GetLearnedSkill( ) == AuraId endfunction private function HealAllyUnitEnum takes nothing returns nothing
local unit targ = GetEnumUnit( ) local integer id = GetHandleId( targ ) local unit PrevHero = LoadUnitHandle( gg_htb_GameData, id, 0 ) local integer PrevLevel = LoadInteger( gg_htb_GameData, id, 1 ) if PrevHero == null then
set bj_groupTempTimer = CreateTimer( ) call SaveUnitHandle( gg_htb_GameData, id, 0, bj_lastFilterUnit ) call SaveInteger( gg_htb_GameData, id, 1, bj_groupAbilutyLevel ) call SaveUnitHandle( gg_htb_GameData, GetHandleId( bj_groupTempTimer ), 0, targ ) call TimerStart( bj_groupTempTimer, 2.10, false, function AuraBuffDuration ) elseif PrevHero == bj_lastFilterUnit and PrevLevel <= bj_groupAbilutyLevel then set bj_groupTempTimer = CreateTimer( ) call SaveUnitHandle( gg_htb_GameData, id, 0, bj_lastFilterUnit ) call SaveInteger( gg_htb_GameData, id, 1, bj_groupAbilutyLevel ) call SaveUnitHandle( gg_htb_GameData, GetHandleId( bj_groupTempTimer ), 0, targ ) call TimerStart( bj_groupTempTimer, 2.10, false, function AuraBuffDuration ) call SetUnitState( targ, UNIT_STATE_LIFE, GetUnitState( targ, UNIT_STATE_LIFE ) + GetUnitState( targ, UNIT_STATE_LIFE ) * bj_groupLifeFactor ) elseif PrevHero != bj_lastFilterUnit and PrevLevel < bj_groupAbilutyLevel then set bj_groupTempTimer = CreateTimer( ) call SaveUnitHandle( gg_htb_GameData, id, 0, bj_lastFilterUnit ) call SaveInteger( gg_htb_GameData, id, 1, bj_groupAbilutyLevel ) call SaveUnitHandle( gg_htb_GameData, GetHandleId( bj_groupTempTimer ), 0, targ ) call TimerStart( bj_groupTempTimer, 2.10, false, function AuraBuffDuration ) call SetUnitState( targ, UNIT_STATE_LIFE, GetUnitState( targ, UNIT_STATE_LIFE ) + GetUnitState( targ, UNIT_STATE_LIFE ) * bj_groupLifeFactor ) endif set targ = null
endfunction private function DegenAura takes nothing returns nothing
local timer t = GetExpiredTimer( ) local integer id = GetHandleId( t ) local unit hero = LoadUnitHandle( gg_htb_GameData, id, StringHash( "Hero" ) ) set bj_groupEnumOwningPlayer = GetOwningPlayer( hero )
call GroupClear( gg_grp_TempGroup ) call GroupEnumUnitsInRange( gg_grp_TempGroup, GetUnitX( hero ), GetUnitY( hero ), AuraBuffId, gg_bxp_TempBoolexpr ) set bj_lastFilterUnit = hero set bj_groupAbilutyLevel = LoadInteger( gg_htb_GameData, id, StringHash( "AuraLevel" ) ) set bj_groupLifeFactor = AuraHeal * bj_groupAbilutyLevel call ForGroup( gg_grp_TempGroup, function HealAllyUnitEnum ) set hero = null
set t = null endfunction private function LernDegenAura_Actions takes nothing returns nothing
local unit hero = GetTriggerUnit( ) local integer level = GetUnitAbilityLevel( hero, AuraId ) local timer t local integer id if level != 1 then
set t = CreateTimer( ) set id = GetHandleId( t ) call SaveTimerHandle( gg_htb_GameData, GetHandleId( hero ), 0, t ) call SaveUnitHandle( gg_htb_GameData, id, StringHash( "Hero" ), hero ) call SaveInteger( gg_htb_GameData, id, StringHash( "AuraLevel" ), level ) call TimerStart( t, 1.00, true, function DegenAura ) else set t = LoadTimerHandle( gg_htb_GameData, GetHandleId( hero ), 0 ) call SaveInteger( gg_htb_GameData, GetHandleId( t ), StringHash( "AuraLevel" ), level ) endif set hero = null
set t = null endfunction private function InitAuraData takes nothing returns nothing
local integer nIndex = 0 set gg_grp_TempGroup = CreateGroup( )
set gg_htb_GameData = InitHashtable( ) set gg_bxp_TempBoolexpr = Condition( function Check_Unit_Conditions ) set gg_trg_LernDegenAura = CreateTrigger( ) loop
exitwhen nIndex > bj_MAX_PLAYERS call TriggerRegisterPlayerUnitEvent( gg_trg_LernDegenAura, Player( nIndex ), EVENT_PLAYER_HERO_SKILL, null ) set nIndex = nIndex + 1 endloop call TriggerAddCondition( gg_trg_LernDegenAura, Condition( function Check_Unit_Conditions ) )
call TriggerAddAction( gg_trg_LernDegenAura, function LernDegenAura_Actions ) endfunction )) Отредактировано quq_CCCP, 05.02.2013 в 14:49. |
![]() |
#5
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
WhyNotMe
![]() offline
Опыт:
182Активность: |
Формула 0,15%+0,03%*лвл скила |
![]() |
#6
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,494Активность: |
WhyNotMe, щя поправлю, но ты себе скопипасти и проверь, я не тестил, только готовое переписал, не проверяя в игре, но проверил на синтаксические ошибки, так что пробуем... |
![]() |
#7
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
WhyNotMe
![]() offline
Опыт:
182Активность: |
Как создать этот кастом код карты? На джассе никогда раньше ничего не делал.
Апд:вроде нашёл, щас попробую. Апд2:в обычном редакторе после скрипта появляется 1,4к+ ошибок и карта не запускается. в только что скаченном JNGP5 компиляция проходит успешно, но карта всё равно не запускается. WhyNotMe добавил:
Непонятно каким образом, но после этого сломалась дота (она совместилась с моей картой). При заходе в игру она снова скачивается, а старая превратилась вот во что: Статы героев и отображение урона появились из моей карты. Отредактировано WhyNotMe, 05.02.2013 в 15:25. |
![]() |
#8
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,494Активность: |
WhyNotMe: Такс, путь к карте должен быть без рус символов как и имя карте только английскими буквами... |
![]() |
#9
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
WhyNotMe
![]() offline
Опыт:
182Активность: |
Имя карты и путь на английском : d:\Games\Warcraft\maps\worldedit\ArenaRPGland.w3x |
![]() |
#10
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Raised
Rid-Aid-Ios
![]() ![]() offline
Опыт:
20,792Активность: |
Создаешь один триггер с событием "Периодическое событие" с шагом 0.1 секунды (для нормального вида регена), соответственно изменяешь алгоритм. Понадобится аура-пустышка (для вешания бафа). Далее выделяешь всех героев со способностью, а затем всех, на кого действует аура. После увеличиваешь его хп на алгоритм*самый большой уровень способности у героя в соответствующем радиусе. Отредактировано RiseD_Konst, 06.02.2013 в 20:39. |
![]() |
#11
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
WhyNotMe
![]() offline
Опыт:
182Активность: |
Сделал так, вроде работает: gyazo.com/2a9bd37368ada20aaa7f8573e27fd48f.png Но всё ещё интересно что стало с дотой. Если надо, могу выложить "сломанную" доту. апд: оказалось дота сломалась из за файла war3map.j в корне игры, который остался после джасса. Отредактировано WhyNotMe, 05.02.2013 в 21:37. |
![]() |
#12
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,494Активность: |
RiseD_Konst, дурной чтоли, 1 сек хватит за глаза, куда ему регенить 10 раз в сек... |
![]() |
#13
+0/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Clamp
Lost in space
![]() ![]() offline
Опыт:
71,158Активность: |
quq_CCCP:
чтобы число красиво менялось в динамике, очевидно же. |
![]() |
#14
+1/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,494Активность: |
Clamp, ну стандартное же не меняется, правдо работает в разнобой, на какждый типо сам таймер... кстати 10 раз для плавности все равно много, 3-4 раза в сек. смотрится плавнее некуда, учитывая кол-во хп. |
![]() |
#15
+0/−3
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Raised
Rid-Aid-Ios
![]() ![]() offline
Опыт:
20,792Активность: |
quq_CCCP, тренируй зрение и будешь замечать, что не все так плавно, как хочется
Неужто это краш вызовет?) |
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Clamp
Lost in space
![]() ![]() offline
Опыт:
71,158Активность: |
Ничего это не вызовет, он опять пёрнул в лужу просто для факта. я делаю такие вещи 25 раз в секунду и очень классно выглядит. Особенно если это урон, от которого можно убежать - тогда это ещё и вносит некую "честность": когда убежал от него, тогда он и прекратился, а не считать тики. |
![]() |
#17
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Extremator
![]() ![]() offline
Опыт:
39,681Активность: |
я бы сделал так...
...типа триггерная аура
|
![]() |
#18
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
quq_CCCP
Я белый и пушистый!
![]() ![]() offline
Опыт:
93,494Активность: |
RiseD_Konst:
Конечно нет, но и никакого красивого эффекта небудет с такой частотой, особенно с 25 в сек Clamp,... Толку ровно 0, можно убежать от урона и получить 1 хп, ой как хорошо, процент регена то видели 0.0015 + 0.003 хп от максимума, там хп 4 регенит, так это нужно эти 4 ед. растягивать на 25 мини хилов, конечно другое дело есди у вас как в петрах, миллионы хп и миллиарды атаки... |
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Clamp
Lost in space
![]() ![]() offline
Опыт:
71,158Активность: |
Пусть у меня будет щёлкать по миллиметру полоски в секунду, чем плавно убывать постоянно, отличный выбор! А ещё ты трёхмерные игрушки не любишь, слишком там всё плавно, так?)) |
![]() |
#20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|