ConstantinGhost
offline
Опыт:
3,916Активность: |
Система крит \ уворот
Мне нужна система т.к. на GUI она будет создавать огромные лаги
1 2 Юнит атакует другого у 1 появляется шанс крита у 2 появляется шанс уворота (скилы)
Они зависят от дистанции между ними (схема) Когда они прекращают атаковать эти скилы убираются.
(Система не для одного и не трёх юнитов, их будет около 100) Кто сможет реализовать? |
18.12.2010, 23:56 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
RyoTsubaki
Отпустит - убегу :3
offline
Опыт:
3,686Активность: |
А паррирование и контрудар? Коли решил делать такую систему - разрабатывай полностью. И как дело обстоит с melee-юнитами в этой системе? Идея хороша, но требует шлифовки и реализации, собственно. |
19.12.2010, 00:31 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ConstantinGhost
offline
Опыт:
3,916Активность: |
RyoTsubaki, ты думаешь во вторую мировую были мили юниты?) мне нужно только для дальних атак т.к. все стрелковые
ConstantinGhost добавил: ммм... кто всётаки сможет реализовать такое? |
19.12.2010, 00:58 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Banzay89
offline
Опыт:
11,155Активность: |
ConstantinGhost, реализовать такое без сомнений можно, но врятли кто за это возметься
|
19.12.2010, 01:14 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ConstantinGhost
offline
Опыт:
3,916Активность: |
Но всёже? может всё таки кто то?) т.к. система очень нужна |
19.12.2010, 01:28 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
spellwerk
offline
Опыт:
4,869Активность: |
нужно делать атаки полностью триггерными, иначе если одного юнита будут бить двое с разных дистанций будут некоторые проблемы.
можно дать юнитам очень маленькую атаку, и отлавливать повреждения, а там уже GetEventDamageSource и GetTriggerUnit, UnitDamageTarget и триггер один на всех сделают свое дело. |
19.12.2010, 01:39 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ConstantinGhost
offline
Опыт:
3,916Активность: |
Spy_, ммм... сможешь реализовать? просто нужно чтоб с разных дистанций были разные шансы и силы крита и уворота. Если сможешь реализовать скинь наработку буду тебе очень благодарен.
если интересно вот проект xgm.ru/forum/showthread.php?p=948597#post948597 |
19.12.2010, 01:48 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
spellwerk
offline
Опыт:
4,869Активность: |
ну вот пример
|
19.12.2010, 02:16 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ConstantinGhost
offline
Опыт:
3,916Активность: |
Spy_, м..... завтра гляну прост я с ноута тут вар не пашет (7) и уже спать нада бы) заранее спс |
19.12.2010, 02:18 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
единственное что в голову пришло по поводу уворотов делаем спелл на основе змеиная ловкость 100% при атаке вычисляем дистанцию,задаём нужный процент,если шанс прошёл то добавляем спелл уворот 100% после атаки удаляем
Klop добавил: вариант 2 сделать спелл уворота по уровням с процентами после проверки дистанции задавать нужный уровень спелла уворота |
19.12.2010, 06:10 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Rampage
Бицепс
offline
Опыт:
9,722Активность: |
А спеллбуком не проще добавить оба скилла? |
19.12.2010, 08:12 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
spellwerk
offline
Опыт:
4,869Активность: |
Klop, а если война будут атаковать несколько с разных дистанций?
все они конечно же промахнутся, ведь если отслеживать получение урона, то мы не сможем дать войну уворот, так как урон он уже получит, а если делать через событие атакован, то придется давать абилку на некоторое время, а в это время как раз может ударить воин с близкой дистанции и промахнется. |
19.12.2010, 08:44 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ConstantinGhost
offline
Опыт:
3,916Активность: |
м... я незнаю может есть такая функция когда юнит именно наносит удар, давать ему скилы а потом сразу убирать? и... впринципе можно взять пьяного мастера тогда уж?
ConstantinGhost добавил: м... ладно тогда упростим задачу. чтоб просто если юнит атакует то ему даётся пьяный мастер а если не атакует он убирается. |
19.12.2010, 10:33 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
spellwerk
offline
Опыт:
4,869Активность: |
Цитата:
unit takes damage срабатывает в момент получения урона, но в этот момент здоровье еще не отнимается. Spy_ добавил: я вижу единственный способ: регистрировать для каждого юнита событие unit takes damage, и через триггер наносить урон. |
|
19.12.2010, 10:59 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ConstantinGhost
offline
Опыт:
3,916Активность: |
ну да... сможешь реализовать? |
19.12.2010, 12:05 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
spellwerk
offline
Опыт:
4,869Активность: |
смотри пост #8
|
19.12.2010, 20:11 | #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 И причем варик у меня всё забраковал сказав что это всё неверный триггер |
19.12.2010, 20:54 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
60,317Активность: |
ConstantinGhost:
тут надо так set victim = null set attacker = null set tt = null |
19.12.2010, 20:58 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
spellwerk
offline
Опыт:
4,869Активность: |
а ну да, давно я не писал на обычном джассе)
|
19.12.2010, 21:10 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ConstantinGhost
offline
Опыт:
3,916Активность: |
так обьяснишь? как это работает и что в итоге получается? |
20.12.2010, 00:44 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|