Wake of Gods Forum | Форум Во Имя Богов
Быстрые клавиши колдовства в бою - Printable Version

+- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net)
+-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99)
+--- Forum: Моды (/forumdisplay.php?fid=104)
+---- Forum: Архив (/forumdisplay.php?fid=192)
+---- Thread: Быстрые клавиши колдовства в бою (/showthread.php?tid=5758)


Быстрые клавиши колдовства в бою - Bes - 20.03.2014 13:41

Quote:требуется: реализация быстрых клавиш заклинаний в бою... Конкретно код, активирующий ЛЮБОЕ заклинание (баз/продв/эксп) с действием как при нажатии из книги

сможем из этого сделать универсальную ф-цию, вызывающую в ЕРМ при нажатии на любую из 0..9 клавиш в бою назначенное заклинание?


RE: Технич.тема - Berserker - 20.03.2014 22:47

Эм, я не активен, Бес, а сделать можно и проще.


RE: Технич.тема - Bes - 20.03.2014 22:59

Berserker, я не говорю "Давай!".. я спрашиваю, чего с ходу не вижу. А там буду смотреть ужеUnsure


RE: Технич.тема - Berserker - 21.03.2014 05:05

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

Оставлю на будущее. Процедура позволяет колдовать любое заклинание. Ну а обработка клавиш в Эре есть.


RE: Быстрые клавиши колдовства в бою - Bes - 22.08.2020 05:27

есть желающие таки сделать такой ERM-код/плагин для добавления в некую популярную сборку ERA?
К Berserker'у уже не буду приставать, хоть он и делал задел для реализации...



RE: Быстрые клавиши колдовства в бою - Bes - 22.08.2020 05:50

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)



RE: Быстрые клавиши колдовства в бою - daemon_n - 22.08.2020 09:46

Bes, а ещё есть такое в SoD_SP плагине, так что намекаю на его автора, чтобы он продолжил портировать экран бояRolleyes


RE: Технич.тема - MOP - 22.08.2020 14:57

(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.
Код, приведённый Бесом из моих исходников, такой странный потому, что не все условия колдовства учитываются данной функцией.
Это так, по памяти. Конкретные проблемы забыл, но мучительные поиски решения - всё ещё помню.


RE: Быстрые клавиши колдовства в бою - Berserker - 22.08.2020 15:25

MOP, имеешь в виду, что проверки на артефакты/почву к моменту вызова Cast уже сработали?


RE: Быстрые клавиши колдовства в бою - MOP - 22.08.2020 15:51

Вроде того. Могут быть ещё проверки на иммунитеты.
Вообще, во многих местах кода, где вроде бы можно было сделать универсальную функцию, её вызов сопровождается одними и теми же проверками (проверки на диапазоны существ/артефактов/заклинаний ещё самые очевидные). Ещё есть действия, половина которых осуществляется вызовом процедуры, а другая половина - вставкой тела этой же процедуры.


RE: Быстрые клавиши колдовства в бою - Bes - 22.08.2020 16:06

Berserker, некоторые проверки (которые по идее никак не вызовут некие коллизии с другими модами) можно сделать через ЕРМ, типа проверки уровня навыка героя, наличие закла в книге и пр.
дабы не отвлекаться на них


RE: Быстрые клавиши колдовства в бою - Berserker - 22.08.2020 16:24

MOP, код, явно нуждающийся в рефакторинге, в общем.



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