Sanya9108
offline
Опыт:
2,007Активность: |
Убить одним заклинанием
как сделать так ,чтобы заклинание (болт) имело % шанс убить врага одним ударом? триггерно разумеется. заранее всем спс=) |
17.07.2010, 14:47 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
reALien
offline
Опыт:
29,211Активность: |
Sanya9108, событие - юнит кастует заклинание.
если случайное число от 1 до 100 меньше или равно твоему шансу, KillUnit. |
17.07.2010, 14:52 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sanya9108
offline
Опыт:
2,007Активность: |
reALien, ну и как это будет выглядеть?=) снаряд ещё не ударил в цель а враг валяется на земле=) |
17.07.2010, 15:00 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
AlexKARASb
Learning cpp
offline
Опыт:
22,103Активность: |
событие - юнит кастует заклинание. если случайное число от 1 до 100 меньше или равно твоему шансу, запуск таймера по истечению UnitDamageTarget(твой кастующий,твоя цель,10000000000...) |
17.07.2010, 15:03 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
newzoom
Kicked by ScorpioT1002
offline
Опыт:
207Активность: |
Запускать динамический таймер, предварительно запомнив данные (хеш-таблица), на (Расстояние / Скорость) секунд.
Или wait, но это для ленивых. |
17.07.2010, 15:04 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sanya9108
offline
Опыт:
2,007Активность: |
AlexKARASb, а получится сделать: юнит получает такой-то эффект условие случайного числа действие - убить этого юнита ? |
17.07.2010, 15:05 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zahanc
offline
Опыт:
23,017Активность: |
Sanya9108,
а разве есть событие юнит получает бафф? |
17.07.2010, 15:26 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
imperfect
offline
Опыт:
1,175Активность: |
Получится, но тогда твоя способность должна давать на врага бафф. А вообще можно хитромудро сделать:
Событие: Боевая еденица - приводит способность в действие. Условие: абилити бегин каст = твоя способность Действие: if all condition truе..ну и тд Условие: Рандом интеджер от 1 до 100 <= 30(например) Действие: Set Variables PosHero = Position of casting unit Set Variables PosEnemy = позиция цели заклинания Wait (distance between PosHero и PosEnemy)\скорость снаряда твоего спелла Боевая еденица - kill цель заклинания CS: call RemoveLocation (udg_PosHero) CS: call RemoveLocation (udg_PosEnemy) Иначе: Do nothing Естественно предварительно создай 2 переменных типа точка PosHero и PosEnemy Jasper добавил: Sanya9108, а наличие баффа можно проверять через переодик, а включаться триггер проверки будет при касте спела, после чего вырубаться. ПС: а вообще лучше делать не триггерный шанс а проверку баффа от спелов, ибо если в мапе присудствует шмотка на спеллрезист, то даже если она сработает, то от триггера далеко не убежишь :D, а так можно и резистнуть неменуемую смерть! Отредактировано Jasper, 17.07.2010 в 15:52. |
17.07.2010, 15:43 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sergarr
offline
Опыт:
4,677Активность: |
Jasper хороший метод, только он не учитывает что враг за время полета снаряда враг может сместиться в пространстве. |
17.07.2010, 16:03 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JassMan
свободен
offline
Опыт:
4,193Активность: |
Надо создать отдельный нестандартный бафф со своим Id и ждать после каста когда у цели этот бафф окажется. Если проходит время, ну скажем, больше чем 20 сек (полёт через всю карту), то вырубать таймер и очищать память и прочее. |
17.07.2010, 16:40 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
60,317Активность: |
""
function Trig_Shadow_Shot_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A00A' endfunction function SSEffect takes nothing returns nothing local timer t=GetExpiredTimer() local unit u=LoadUnitHandle(udg_AssassinHash,GetHandleId(t),0) if GetUnitAbilityLevel(u,'B002') > 0 then call DestroyEffect( AddSpecialEffectTarget("units\\nightelf\\SpiritOfVengeance\\SpiritOfVengeance.mdl", u, "origin")) call UnitDamageTarget(udg_DarkElf,u,(90.00*I2R(GetUnitAbilityLevelSwapped('A00A',udg_ DarkElf))),true,false,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC,null ) call DestroyTimer(t) call FlushChildHashtable(udg_AssassinHash, GetHandleId(t)) else endif set u = null set t = null endfunction function Trig_Shadow_Shot_Actions takes nothing returns nothing local unit u = GetSpellTargetUnit() local timer t = CreateTimer() call SaveUnitHandle(udg_AssassinHash,GetHandleId(t),0,u) call TimerStart(t,0.01,true,function SSEffect) set t = null set u = null endfunction "" Отредактировано 16GB, 17.07.2010 в 16:58. |
17.07.2010, 16:50 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sanya9108
offline
Опыт:
2,007Активность: |
|
17.07.2010, 17:31 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
H
hello world
offline
Опыт:
130,725Активность: |
Делай через баф, так проще всего. |
17.07.2010, 17:34 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Enein
Silenced by ZlaYa1000
offline
Опыт:
43,583Активность: |
все способы фигня. лучший - отлов получения урона + проверка на наличие баффа |
17.07.2010, 17:57 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
enein, а как ты определишь какому игроку (юниту) принадлежит баф, кто его повесил ? |
17.07.2010, 18:18 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sanya9108
offline
Опыт:
2,007Активность: |
Enein,
в игре постоянно идут бои ,следовательно постоянно получается урон ,заклинания тоже часто кастуют и самое главное - магия ,которую я хочу сделать она урона не несёт ,там значение на нуле ,она только должна триггерно убивать на определённый шанс. а на проверку баффа уже дофига предложений было и я уже сказал ,что буду через бафф делать=) Zanozus, а какая разница то?=) главное ,что на нём бафф ,следовательно на него кастанули этот спелл ,следовательно ,он должен (если процент сработает) умереть=) а свой-чужой это уже в РО в целях самого заклинания ставить надо=) |
17.07.2010, 18:23 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
А от чьего лица ты юнита собраля убивать ? Награда за убийство то кому пойдет ? |
17.07.2010, 18:27 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sanya9108
offline
Опыт:
2,007Активность: |
Zanozus, ну ,впринципе ,да ,ты прав ,этот пункт я как-то проглядел...=) хотя ,кроме ГГ в кампании такой способности то ни у кого и небудет... но всё равно ,я незнаю ,как это отследить... есть там что-нить вроде "применяющий спелл = игрок такой-то ,то давать награду и опыт за юнита ему"?=) |
17.07.2010, 18:34 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
imperfect
offline
Опыт:
1,175Активность: |
Всё очень просто, вместо Боевая еденица - Kill сделай Cause (casting unit) to damage (Target unit of ability being cast) dealing 99999.00 of attack type Сила тьмы Damage type Обычный, и деньги и экспа за килл дадутся кастующему юниту.
|
17.07.2010, 18:39 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Zanozus
Уехал учиться
offline
Опыт:
8,512Активность: |
Ну, если у тебя только 1 юнит с этой способностью и ты заранее знаешь за кого он, то можно и забить.
А так это только через дамми снаряд делается и ничего в этом сложного нет. Zanozus добавил: Jasper, уже говорили что тогда юнит будет умирать раньше чем снаряд от спелла долетит Да и если заменять килл на 9999 урон то легче сразу в РО в спелле 9999 урон прописать. |
17.07.2010, 18:43 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|