главная турниры статьи wiki карта сайта логин

Автор Тема: Выключение и включение атаки в зависимости от числа хитов, внутр тэга [unit_type  (Прочитано 910 раз)

0 Пользователей и 1 Гость просматривают эту тему.

White Demon

  • level 0
  • Сообщений: 9
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 50.0.2661.94 Chrome 50.0.2661.94
    • Просмотр профиля
    • E-mail
  • Раса: Волк
Первое переключение срабатывает, но от количества хитов не зависит, срабатывает в своё время на первом новом ходу. т.к фильтруется только unit, фильтр на число хитпоинтов игнорируеться.
Второе переключение просто игнорируеться :(
[[event]
  name=new turn
  [if]
  [filter]
      type=Paladin_Dark
      hitpoints=1-40
  [/filter]
  [then]
  [modify_unit]
  [filter]
      type=Paladin_Dark
      hitpoints=1-40
  [/filter]
  [attack]
        name=sword
        description=_"Меч Хаоса"
        icon=attacks/icy_sword.png
        type=arcane
        range=melee
        damage=8
        number=5
 [/attack]
 [attack]
        name=flail
        description=_"Булава"
        type=impact
        range=melee
        icon=attacks/morning-star.png
        damage=19
        number=2
 [/attack]
 [attack]
        name=lance
        description=_"Пика"
        icon=attacks/lance.png
        type=pierce
        range=melee
        damage=10
        number=3
        [specials]
            {WEAPON_SPECIAL_CHARGE}
        [/specials]
  [/attack]
  [attack]
        name=fireball
        description=_"Всплеск тени"
        type=arcane
        range=ranged
        [specials]
            {WEAPON_SPECIAL_MAGICAL}
        [/specials]
        damage=12
        number=3
  [/attack]
  [/modify_unit]
  [/then]
  [/if]
  [/event]
  [event]
  name=new turn
  [if]
  [filter]
      type=Paladin_Dark
      hitpoints=41-83
  [/filter]
  [then]
  [modify_unit]
  [filter]
      type=Paladin_Dark
      hitpoints=40-83
  [/filter]
  [attack]
        name=sword
        description=_"Меч Хаоса"
        icon=attacks/icy_sword.png
        type=arcane
        range=melee
        damage=8
        number=5
 [/attack]
 [attack]
        name=flail
        description=_"Булава"
        type=impact
        range=melee
        icon=attacks/morning-star.png
        damage=19
        number=2
 [/attack]
 [attack]
        name=lance
        description=_"Пика"
        icon=attacks/lance.png
        type=pierce
        range=melee
        damage=10
        number=3
        [specials]
            {WEAPON_SPECIAL_CHARGE}
        [/specials]
  [/attack]
  [/modify_unit]
  [/then]
  [/if]
  [/event]/tt]

Так выглядит текущиа версия кода. Спасибо за внимание!

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1271
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Chrome 41.0.2272.76 Chrome 41.0.2272.76
    • Просмотр профиля
  • Раса: Мертвец
ничего из этого и не может работать правильно - прежде всего теги filter не используются внутри if и не используются внутри событий типа "новый ход". тег filter устанавливает характеристики бойца, вызвавшего событие. событие начала нового хода не имеет отношения ни к какому бойцу, а значит и работать ни на ком не обязано - если оно и сработало один раз, то просто по случайности.

https://wiki.wesnoth.org/ConditionalActionsWML#Condition_Tags
- вот тут список того. что ты можешь проверять внутри if. соответственно, тебя интересует [have_unit] а не [filter]

во вторых проверка с помощью if вообще не имеет смысла в твоем случае, так как тег modify_unit сделает все сам - если подходящие юниты есть, он их всех обработает, а если нет - то просто не сделает ничего - дополнительные проверки не нужны.

вот внутри [modify_unit] [filter] стоит совершенно оправданно. к сожалению, мне ничего не известно о том, чтобы фильтр вообще мог проверять текущий уровень здоровья - по крайней мере, такая возможность не задокументирована. откуда ты вывел, что это возможно?

ну и наконец. про тэг modify_unit сказано, что он "cannot remove things". я не проверял, но полагаю это должно означать, что если добавить новые атаки он еще может, это не значит, что он их добавит на место старых и конечно же ты не можешь удалить имеющуюся атаку фаерболом, просто объявив три другие атаки. все то, что тобой задумано, можно реализовать, но ты для этого не те методы используешь - мне кажется более разумным действовать через store и object - там все будет работать как часы, скольки бы этажные изменения ты не задумывал.

но на самом деле я так понимаю ты всего лишь хочешь, чтобы когда здоровье юнита снижается, он получал дополнительную атаку фаерболом - так для этого тебе вообще совершенно ничего из того, что ты здесь делаешь, делать не нужно - все проще, короче и делается другими методами.

Возглавляет силы зла

White Demon

  • level 0
  • Сообщений: 9
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 50.0.2661.94 Chrome 50.0.2661.94
    • Просмотр профиля
    • E-mail
  • Раса: Волк
Цитировать
но на самом деле я так понимаю ты всего лишь хочешь, чтобы когда здоровье юнита снижается, он получал дополнительную атаку фаерболом - так для этого тебе вообще совершенно ничего из того, что ты здесь делаешь, делать не нужно - все проще, короче и делается другими методами.

Вы правы во всём кроме одного всё не проще, всё сложнее и возможно ли, т.к не один фильтр не может определить число жизней. (просмотрел все на оф сайте все).

Да и по мимо всего прочего если число жизней превышает допустимое значение, то доп. атака пропадает

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1271
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Chrome 41.0.2272.76 Chrome 41.0.2272.76
    • Просмотр профиля
  • Раса: Мертвец
если я сказал, что возможно, то я имел в виду буквально "я знаю как, и могу это сделать за некоторое время". хотя фильтр и не проверяет хитпоинты, имеется возможность сохранить юнитов в переменную и с помощью определенных тэгов проверить значение их текущего здоровья, как составляющей этой переменной.
Возглавляет силы зла

White Demon

  • level 0
  • Сообщений: 9
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 50.0.2661.89 Chrome 50.0.2661.89
    • Просмотр профиля
    • E-mail
  • Раса: Волк
Если вы предлогаете использовать для достижения цели  temp, такой ход мысли был. Но в temp хроняться данные лишь одной единицы (возможно я не прав).  А я использую  temp и без этой единиц.
P.S Если я неправ бросте в меня камень.

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1271
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Chrome 41.0.2272.76 Chrome 41.0.2272.76
    • Просмотр профиля
  • Раса: Мертвец


никакой temp не нужен. берется
[store_unit]
      [filter]
            type=Paladin_Dark
      [/filter]
      variable=darkpaladins
      kill=no
[/store_unit]

и после этого в переменной darkpaladins лежит массив из всех темных паладинов которые были в бою на момент события. соответственно хитпоинты первого из них лежат в переменной darkpaladins[0].hitpoints хитпоинты второго - в darkpaladins[1].hitpoints и т.п. дальше делается цикл, хитпоинты каждого паладина по очереди проверяются и на основании каждого выносится решение, включать ему его дополнительную атаку или не включать.
Возглавляет силы зла

White Demon

  • level 0
  • Сообщений: 9
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 50.0.2661.89 Chrome 50.0.2661.89
    • Просмотр профиля
    • E-mail
  • Раса: Волк
Ну ок, камень ты напрасно кину в темпах всё равно один юнит.
Ты видать шипко умный... А если судить по "Тени Смерти" и серебряному веку, скорее всего luo  гоняешь.
За код спасибо!
P.S Больше вас на форме непобеспокою... Да я способен прочесть чат...

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1271
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Chrome 41.0.2272.76 Chrome 41.0.2272.76
    • Просмотр профиля
  • Раса: Мертвец
ни слова никогда на луа не написал - все и на вмл пашет, если правильно воткнуть.
Возглавляет силы зла

White Demon

  • level 0
  • Сообщений: 9
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 50.0.2661.89 Chrome 50.0.2661.89
    • Просмотр профиля
    • E-mail
  • Раса: Волк
Стоп. Я видать и  вправду недалёки. Разве вещи типо лидерства пищуться не на luo,  чтобы их ai в расчёт брал.  И вроде у вас в серебряном веке есть, что-то на подобии.

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1271
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Chrome 41.0.2272.76 Chrome 41.0.2272.76
    • Просмотр профиля
  • Раса: Мертвец
вещи типа лидерства человеком заново и не пишутся - уже все написано разработчиками до нас, с возможностью выбрать кто кому насколько и в какой ситуации повышает. то же касается изменений меткости, резистов, лечения и числа атак.не сделали универсальных тегов разрабы только для яда и замедления... козлы.
Возглавляет силы зла