Такой вопрос
|
|
Desgul | Дата: Среда, 08 Мая 2013, 21:26:50 | Сообщение # 1 |
4 уровень
Группа: Проверенные
Сообщений: 86
Награды: 0
Репутация: 25
Блокировки:
| Есть спелы/заклинание/способности, которые наносят урон от атрибутов сила/ловкость/разум как зделать что бы лечение тоже зависело от атрибутов?
|
|
|
|
19yuri98 | Дата: Среда, 08 Мая 2013, 21:52:11 | Сообщение # 2 |
7 уровень
Группа: Проверенные
Сообщений: 270
Награды: 0
Репутация: 114
Блокировки:
| Также как урон только хил создаешь переменную,присваиаешь нужное значение,при использовании способности в действиях пишешь Код б.е - set life (target unit of ability cast) to ((life of (target unit ability cast)+[твоя переменная])
|
|
|
|
Волчачка | Дата: Среда, 08 Мая 2013, 22:03:57 | Сообщение # 3 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Desgul, ага, DarkWorld? Сейчас наишу на Jass пример тебе. А в каком плане лечение?
|
|
|
|
Desgul | Дата: Четверг, 09 Мая 2013, 08:56:36 | Сообщение # 4 |
4 уровень
Группа: Проверенные
Сообщений: 86
Награды: 0
Репутация: 25
Блокировки:
| Волчачка, А на GUI Можно мне просто не для 1 спела надо Добавлено (08 Мая 2013, 23:40:43) --------------------------------------------- переодическое/масовое/цепное и обычное благодать Добавлено (09 Мая 2013, 08:56:36) --------------------------------------------- ап
|
|
|
|
DarkWorld | Дата: Четверг, 09 Мая 2013, 13:23:05 | Сообщение # 5 |
3 уровень
Группа: Проверенные
Сообщений: 46
Награды: 0
Репутация: 0
Блокировки:
| Ну парни подскажите тоже нужна такая штука
|
|
|
|
God_of_light | Дата: Четверг, 09 Мая 2013, 13:42:58 | Сообщение # 6 |
6 уровень
Группа: Проверенные
Сообщений: 206
Награды: 0
Репутация: 185
Блокировки:
| Вот пример простейшего триггера, абилки лечения, зависящего от атрибута. На GUI. Основное лечение прописано в самой способности Благодать, а бонус от атрибута начисляется триггерно.
|
|
|
|
Волчачка | Дата: Четверг, 09 Мая 2013, 14:09:02 | Сообщение # 7 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Я делал цепной урон\хилл медива без указания цели, который зависел от атрибута интеллекта. Ну это было на Jass. Сейчас на благо распишу и массовое лечение. Я тебе сделаю сейчас триггер. Ну там будет все на джасс.
|
|
|
|
maddrone | Дата: Четверг, 09 Мая 2013, 14:19:21 | Сообщение # 8 |
1 уровень
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Блокировки:
| Без знания JASS'а сделать нормально работающее периодическое лечение, да такое чтобы оно скалировалось от аттрибута...
На гуи это можно написать, но будет весьма громоздко. Накидал пример для одного спелла
HealOnTimeInit (триггер который инициализирует хэш-таблицу) Код События Map initialization Условия Действия Хэш-таблица - Create a hashtable Set HealOnTimeData = (Last created hashtable)
HealOnTime (триггер, который срабатывает каждые 0.1 сек и лечит нужных юнитов) Код События Время - Every 0.10 seconds of game time Условия Действия Отряд - Pick every unit in HealOnTimeTargets and do (Actions) Цикл - Действия Боевая единица - Set life of (Picked unit) to ((Здоровье of (Picked unit)) + (Load 1 of (Key (Picked unit)) from HealOnTimeData)) Хэш-таблица - Save ((Load 2 of (Key (Picked unit)) from HealOnTimeData) - 1) as 2 of (Key (Picked unit)) in HealOnTimeData If (All Conditions are True) then do (Then Actions) else do (Else Actions) Если - Условия (Load 2 of (Key (Picked unit)) from HealOnTimeData) равно 0 То - Действия Хэш-таблица - Clear all child hashtables of child (Key (Picked unit)) in HealOnTimeData Отряд - Remove (Picked unit) from HealOnTimeTargets Иначе - Действия
HealOnTimeCast (триггер который срабатывает при касте нужного спелла. Записывает данные о юните и лечении в хэш-таблицу) Код События Боевая единица - A unit Приводит способность в действие Условия (Ability being cast) равно Омоложение (триггер) Действия Хэш-таблица - Save ((Real((Разум of (Casting unit) (Включить bonuses)))) / 10.00) as 1 of (Key (Target unit of ability being cast)) in HealOnTimeData Хэш-таблица - Save 100 as 2 of (Key (Target unit of ability being cast)) in HealOnTimeData Отряд - Add (Target unit of ability being cast) to HealOnTimeTargets
HealOnTimeTargets - переменная, тип Отряд. Содержит юнитов на которые скастовали хил. HealOnTimeData - переменная, тип Хэш-таблица. Содержит данные о том как сильно юнита хилить.
Сразу оговорюсь, что этот скрипт будет работать только для одного спелла с периодическим лечением. Если надо ещё один спелл, да так что бы они складывались, скрипты и переменные придётся дублировать.
Вот карта для теста. http://yadi.sk/d/uuIEXDXR4fwqa
Для цепных спеллов, которые должны скалироваться от атрибутов, надо всю абилку рисовать триггерно. Вот гайд на английском, кому надо - разберутся. http://www.hiveworkshop.com/forums/trigger-gui-editor-tutorials-279/how-make-chain-spell-gui-version-7015/
В заключение скажу. Если ты не знаешь JASS, то забей на абилки от атрибутов. Пропиши обычные константные значения, и отбалансируй их по уму. Намного хуже твоя карта от этого не станет. Зато это сэкономит тебе кучу затраченных усилий, повышая шанс того, что твоя карта вообще увидит свет.
|
|
|
|
DarkWorld | Дата: Четверг, 09 Мая 2013, 14:37:07 | Сообщение # 9 |
3 уровень
Группа: Проверенные
Сообщений: 46
Награды: 0
Репутация: 0
Блокировки:
| maddrone, Спасибо большое ну я уже разобрался с обычной хилкой Добавлено (09 Мая 2013, 14:37:07) --------------------------------------------- Волчачка, я не умею на джасе вобще
|
|
|
|
Волчачка | Дата: Четверг, 09 Мая 2013, 15:02:15 | Сообщение # 10 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| DarkWorld, Код local unit c = GetSpellAbilityUnit() local integer aid = GetSpellAbilityId() local real x = GetUnitX(c) local real y = GetUnitY(c) local real hpl = I2R(GetUnitAbilityLevel(c,aid)* 50)+I2R(GetHeroInt(c,true)+GetHeroAgi(c,true)+GetHeroStr(c,true))+50. local unit p call GroupEnumUnitsInRange(udg_G, x, y, 300, null) loop set p = FirstOfGroup(udg_G) exitwhen p == null if (p!=null and IsUnitAlly(p,GetOwningPlayer(c)) and GetUnitState(p,UNIT_STATE_LIFE) > 0. and not IsUnitType(p,UNIT_TYPE_STRUCTURE) ) then call SetUnitState(p,UNIT_STATE_LIFE,GetUnitState(p,UNIT_STATE_LIFE)+hpl) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\Heal\\HealTarget.mdl",p,"origin")) endif call GroupRemoveUnit( udg_G, p ) endloop call GroupClear(udg_G) set c = null А можно так скопировать в custom script коды :D
|
|
|
|
Naturekid | Дата: Четверг, 09 Мая 2013, 17:38:11 | Сообщение # 11 |
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
| Цитата (maddrone) Сообщение # 8 Цитата (Волчачка) | Сообщение # 10 Ниииииииииииииииииии хрина себе А не проще ли при касте создать дамми дать ему цепь молний с визуальным эффектом целительной волны дать приказ молнии на цель В триггере отлова урона если тип источника урона - дамми "Лечение" - Вылечить цель на (формула какая надо) естесственно дамми-цепь молний должна наносить хоть какой-то урон, чтобы легче было сымитировать потерю урона и следующие цели лечились бы слабее.
|
|
|
|
maddrone | Дата: Среда, 15 Мая 2013, 22:34:54 | Сообщение # 12 |
1 уровень
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Блокировки:
| Цитата естесственно дамми-цепь молний должна наносить хоть какой-то урон Теоретически, возможна ситуация когда ты убиваешь своего юнита таким лечением. Но в целом вариант, да. Я ещё не настоящий джассер, поэтому не уверен, но может быть, получится поставить отрицательный урон на молнию, чтобы перехватывать его триггером и не наносить дамаг.Добавлено (15 Мая 2013, 22:34:54) --------------------------------------------- Есть же система определения спелл урона, когда всем юнитам дают пассивку на -200% урона от заклинаний. Если в триггере урон отрицательный, значит спелл.
|
|
|
|
Borodach | Дата: Среда, 15 Мая 2013, 23:00:37 | Сообщение # 13 |
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
| DarkWorld, Еще такой вариант Добавлено (15 Мая 2013, 23:00:37) --------------------------------------------- Там ссылка уже устарела... Load
Karamba
|
|
|
|