![]()
ConstantinGhost
![]() ![]() offline
Опыт:
3,916Активность: |
Система крит \ уворот
Мне нужна система т.к. на GUI она будет создавать огромные лаги
1 2 Юнит атакует другого у 1 появляется шанс крита у 2 появляется шанс уворота (скилы)
Они зависят от дистанции между ними (схема) Когда они прекращают атаковать эти скилы убираются.
(Система не для одного и не трёх юнитов, их будет около 100) Кто сможет реализовать? |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
RyoTsubaki
Отпустит - убегу :3
![]() ![]() offline
Опыт:
3,686Активность: |
А паррирование и контрудар? Коли решил делать такую систему - разрабатывай полностью. И как дело обстоит с melee-юнитами в этой системе? Идея хороша, но требует шлифовки и реализации, собственно. |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ConstantinGhost
![]() ![]() offline
Опыт:
3,916Активность: |
RyoTsubaki, ты думаешь во вторую мировую были мили юниты?) мне нужно только для дальних атак т.к. все стрелковые
ConstantinGhost добавил: ммм... кто всётаки сможет реализовать такое? |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Banzay89
![]() offline
Опыт:
11,155Активность: |
ConstantinGhost, реализовать такое без сомнений можно, но врятли кто за это возметься
|
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ConstantinGhost
![]() ![]() offline
Опыт:
3,916Активность: |
Но всёже? может всё таки кто то?) т.к. система очень нужна |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
spellwerk
![]() offline
Опыт:
4,869Активность: |
нужно делать атаки полностью триггерными, иначе если одного юнита будут бить двое с разных дистанций будут некоторые проблемы.
можно дать юнитам очень маленькую атаку, и отлавливать повреждения, а там уже GetEventDamageSource и GetTriggerUnit, UnitDamageTarget и триггер один на всех сделают свое дело. |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ConstantinGhost
![]() ![]() offline
Опыт:
3,916Активность: |
Spy_, ммм... сможешь реализовать? просто нужно чтоб с разных дистанций были разные шансы и силы крита и уворота. Если сможешь реализовать скинь наработку буду тебе очень благодарен.
если интересно вот проект xgm.ru/forum/showthread.php?p=948597#post948597 |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
spellwerk
![]() offline
Опыт:
4,869Активность: |
ну вот пример
|
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ConstantinGhost
![]() ![]() offline
Опыт:
3,916Активность: |
Spy_, м..... завтра гляну прост я с ноута тут вар не пашет (7) и уже спать нада бы) заранее спс |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Klop
Папа римский
![]() ![]() offline
Опыт:
13,006Активность: |
единственное что в голову пришло по поводу уворотов делаем спелл на основе змеиная ловкость 100% при атаке вычисляем дистанцию,задаём нужный процент,если шанс прошёл то добавляем спелл уворот 100% после атаки удаляем
Klop добавил: вариант 2 сделать спелл уворота по уровням с процентами после проверки дистанции задавать нужный уровень спелла уворота |
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Rampage
Бицепс
![]() ![]() offline
Опыт:
9,722Активность: |
А спеллбуком не проще добавить оба скилла? |
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
spellwerk
![]() offline
Опыт:
4,869Активность: |
Klop, а если война будут атаковать несколько с разных дистанций?
все они конечно же промахнутся, ведь если отслеживать получение урона, то мы не сможем дать войну уворот, так как урон он уже получит, а если делать через событие атакован, то придется давать абилку на некоторое время, а в это время как раз может ударить воин с близкой дистанции и промахнется. |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ConstantinGhost
![]() ![]() offline
Опыт:
3,916Активность: |
м... я незнаю может есть такая функция когда юнит именно наносит удар, давать ему скилы а потом сразу убирать? и... впринципе можно взять пьяного мастера тогда уж?
ConstantinGhost добавил: м... ладно тогда упростим задачу. чтоб просто если юнит атакует то ему даётся пьяный мастер а если не атакует он убирается. |
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
spellwerk
![]() offline
Опыт:
4,869Активность: |
Цитата:
unit takes damage срабатывает в момент получения урона, но в этот момент здоровье еще не отнимается. Spy_ добавил: я вижу единственный способ: регистрировать для каждого юнита событие unit takes damage, и через триггер наносить урон. |
|
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ConstantinGhost
![]() ![]() offline
Опыт:
3,916Активность: |
ну да... сможешь реализовать? |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
spellwerk
![]() offline
Опыт:
4,869Активность: |
смотри пост #8
|
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ConstantinGhost
![]() ![]() offline
Опыт:
3,916Активность: |
Spy_, ммм... непочень понятно, единственное что происходило над синим стрелком залёная хрень появлялась и всё... можешь обьяснить что там происходит?
TESH.scrollpos=-1
TESH.alwaysfold=0 function Trig_unitdamaged_Actions takes nothing returns nothing local unit attacker = GetEventDamageSource() local unit victim = GetTriggerUnit() local real dx = GetUnitX(attacker)-GetUnitX(victim) local real dy = GetUnitY(attacker)-GetUnitY(victim) local real distance = SquareRoot(dx*dx+dy*dy) local real max_distance = 1500. local real damage = 50. local texttag tt if ( GetRandomReal(1.,100.) > 20.-(max_distance-distance)/100. ) then if( GetRandomReal(1.,100.) <= 25.-distance/100. ) then set damage = damage * ( 1.2 + distance/1000. ) endif set tt = CreateTextTagUnitBJ("-"+I2S(R2I(damage)),victim,50.,10.,100.,0.,0.,0.) call DisableTrigger(gg_trg_unitdamaged) call UnitDamageTarget(attacker,victim,damage,true,true,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS) call EnableTrigger(gg_trg_unitdamaged) else set tt = CreateTextTagUnitBJ("уворот",victim,50.,10.,100.,0.,0.,0.) endif call SetTextTagVelocityBJ(tt,64.,90.) call SetTextTagLifespan(tt,1.5) call SetTextTagFadepoint(tt,.5) call SetTextTagPermanent(tt,false) victim = null attacker = null tt = null endfunction ===========================================================================
function InitTrig_unitdamaged takes nothing returns nothing set gg_trg_unitdamaged = CreateTrigger( ) call TriggerAddAction( gg_trg_unitdamaged, function Trig_unitdamaged_Actions ) endfunction И причем варик у меня всё забраковал сказав что это всё неверный триггер |
![]() |
#17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
16GB
GhostOne User
![]() ![]() offline
Опыт:
60,317Активность: |
ConstantinGhost:
тут надо так set victim = null set attacker = null set tt = null |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
spellwerk
![]() offline
Опыт:
4,869Активность: |
а ну да, давно я не писал на обычном джассе)
|
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ConstantinGhost
![]() ![]() offline
Опыт:
3,916Активность: |
так обьяснишь? как это работает и что в итоге получается? |
![]() |
#20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|