Wake of Gods Forum | Форум Во Имя Богов

Full Version: Быстрые клавиши колдовства в бою
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Quote:требуется: реализация быстрых клавиш заклинаний в бою... Конкретно код, активирующий ЛЮБОЕ заклинание (баз/продв/эксп) с действием как при нажатии из книги

сможем из этого сделать универсальную ф-цию, вызывающую в ЕРМ при нажатии на любую из 0..9 клавиш в бою назначенное заклинание?
Эм, я не активен, Бес, а сделать можно и проще.
Berserker, я не говорю "Давай!".. я спрашиваю, чего с ходу не вижу. А там буду смотреть ужеUnsure
Code:
TCaster = (CASTER_HERO, CASTER_MON, CASTER_ART);

PROCEDURE CastSpell (Caster: TCaster; Spell, Power, Pos1, Pos2: INTEGER);
VAR
  HeroPower:  INTEGER;
  MonPower:   INTEGER;
  CasterId:   INTEGER;
  
BEGIN
  IF Caster <> CASTER_MON THEN BEGIN
    HeroPower :=  Power;
    MonPower  :=  -1;
  END // .IF
  ELSE BEGIN
    HeroPower :=  -1;
    MonPower  :=  Power;
  END; // .ELSE
  
  CasterId  :=  ORD(Caster);
  
  ASM
    MOV ECX, [COMBAT_MAN]
    PUSH HeroPower
    PUSH MonPower
    PUSH Pos2
    PUSH CasterId
    PUSH Pos1
    PUSH Spell
    MOV EAX, $5A0140
    CALL EAX
  END; // .ASM
END; // .PROCEDURE CastSpell

Оставлю на будущее. Процедура позволяет колдовать любое заклинание. Ну а обработка клавиш в Эре есть.
есть желающие таки сделать такой ERM-код/плагин для добавления в некую популярную сборку ERA?
К Berserker'у уже не буду приставать, хоть он и делал задел для реализации...
V_Maiko Wrote: [ -> ]Bes, A Chinese modder named Xericsin helped me with this issue when I had creatures that were range and spellcaster at the same time, the code is this, it works like this

V_Maiko, я не совсем про это...
да, на ЕРМ можно повторить (эмулировать) действие того или иного заклинания, что есть у героя.
Но, не всегда это полностью удаётся, не исключает ошибки из-за несовместимости с другими скриптами/модами и пр. пр.

Я говорил сделать именно средствами оригинальных игровых функций, благо ранее и Master of Puppets, и потом Berserker дали для этого материал. Но тогда, да и сейчас, я не располагаю нужными знаниями и умениями для использования тех наработок.

Когда-то в Феникс-моде были реализованы быстрые клавиши заклинаний, но то была не идеальная имитация срабатывания заклинаний.
Вот, кстати, шапка той реализации (с хранением в ini настроек по клавишам)
содержимое Settings.ini (Click to View)
Bes, а ещё есть такое в SoD_SP плагине, так что намекаю на его автора, чтобы он продолжил портировать экран бояRolleyes
(21.03.2014 05:05)Berserker Wrote: [ -> ]
Code:
TCaster = (CASTER_HERO, CASTER_MON, CASTER_ART);

PROCEDURE CastSpell (Caster: TCaster; Spell, Power, Pos1, Pos2: INTEGER);
VAR
  HeroPower:  INTEGER;
  MonPower:   INTEGER;
  CasterId:   INTEGER;
  
BEGIN
  IF Caster <> CASTER_MON THEN BEGIN
    HeroPower :=  Power;
    MonPower  :=  -1;
  END // .IF
  ELSE BEGIN
    HeroPower :=  -1;
    MonPower  :=  Power;
  END; // .ELSE
  
  CasterId  :=  ORD(Caster);
  
  ASM
    MOV ECX, [COMBAT_MAN]
    PUSH HeroPower
    PUSH MonPower
    PUSH Pos2
    PUSH CasterId
    PUSH Pos1
    PUSH Spell
    MOV EAX, $5A0140
    CALL EAX
  END; // .ASM
END; // .PROCEDURE CastSpell

Оставлю на будущее. Процедура позволяет колдовать любое заклинание. Ну а обработка клавиш в Эре есть.
Было бы прекрасно, если бы это было всё, что требуется... Но это просто оригинал !!BM:C и !!BH:C.
Код, приведённый Бесом из моих исходников, такой странный потому, что не все условия колдовства учитываются данной функцией.
Это так, по памяти. Конкретные проблемы забыл, но мучительные поиски решения - всё ещё помню.
MOP, имеешь в виду, что проверки на артефакты/почву к моменту вызова Cast уже сработали?
Вроде того. Могут быть ещё проверки на иммунитеты.
Вообще, во многих местах кода, где вроде бы можно было сделать универсальную функцию, её вызов сопровождается одними и теми же проверками (проверки на диапазоны существ/артефактов/заклинаний ещё самые очевидные). Ещё есть действия, половина которых осуществляется вызовом процедуры, а другая половина - вставкой тела этой же процедуры.
Berserker, некоторые проверки (которые по идее никак не вызовут некие коллизии с другими модами) можно сделать через ЕРМ, типа проверки уровня навыка героя, наличие закла в книге и пр.
дабы не отвлекаться на них
MOP, код, явно нуждающийся в рефакторинге, в общем.



moderator Wrote:На данный момент существует отдельный плагин для быстрых клавиш в бою.
Все подробности вы можете увидеть ЗДЕСЬ
4
Reference URL's