Current time: 23.02.2024, 16:44 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA II
» WoG Era 2: Русская и Английская версии
Author Message
Zur13 Offline

Posts: 223
Post: #4726

Я не знаю в правильную ли тему пишу, просто меня несколько утомило постоянно мышкой выбирать нужный пункт в диалогах с кучей чекбоксов нельзя ли в ЭРА добавить возможность выбора нужного пункта (чекбокса) в диалогах типа !!IF:G с помощью клавиатуры например клавишами [1]-[0],[-],[=]?
18.07.2020 20:34
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 778
Post: #4727

Есть прекрасная опция "ErmLegacySupport" в ERA 2, но кажется, она не совсем работает так, как надо...
Я еще не проверял, но проверю.
y-переменные должны обнулятся, x-переменные должны наследоваться, и обнуляться должны только не объявленные, и только при вызове из триггера, а не из функции. При вызове из функции должны наследоваться, в !!DO должны обнуляться только в первом цикле при вызове из триггера (не из функции!!), в остальных случаях должны наследоваться...
Куча старых скриптов работает неправильно из-за этого...
18.07.2020 20:54
Find all posts by this user Quote this message in a reply
RoseKavalier Offline

Posts: 118
Post: #4728

@Archer30
Is hdmod being used? It might be a text filtering option.
CN plugin doesn't draw English characters, it lets the game handle it... which means hdmod would adjust its position if that's what is happening.
Code:
if (byte(str[i]) > 160) then begin
   [...]
else begin
        EngTextOut(hfont,byte(str[i]),Surface,cx,cy, ColorB + ColorSel);
        cx:=cx+GetEngCharWidth(byte(str[i]),hfont);
      end;

Other than that Native Dialogs use a custom font which doesn't line up with "normal" English fonts.
Image: Gyx8tXT.png
EDIT: in fact, medium font is 16 pixels high, the provided one is 15 pixels high.
(This post was last modified: 18.07.2020 23:22 by RoseKavalier.)
18.07.2020 23:17
Find all posts by this user Quote this message in a reply
Archer30 Online
Moderators

Posts: 1092
Post: #4729

RoseKavalier, thanks for so much help! HD mod does nothing to my test results though. The performance are exactly the same with or without HD.

I agree that CN plugin only draws Chinese characters, but since ERA seem to have different way of handling characters, it makes some difference for different dialogs.

Check this out:

Image: 53CVtbf.png
non-ERA specific dialog (aka this dialog is also available in SoD) in ERA

As you might notice, the bracket from this dialog has different style comparing it in English SoD. All brackets for non-ERA specific dialogs look like this, much better than in WoG Native Dialogs. How does this work? This is the best result I would like to achieve with text in WND.

Hmmm, so my best bet would be editing all characters from custom fonts of WND? Can I appoint another font that combo with Chinese characters better?


Latest ERA mods and scripts in development - My GitHub
(This post was last modified: 19.07.2020 00:43 by Archer30.)
19.07.2020 00:09
Find all posts by this user Quote this message in a reply
RoseKavalier Offline

Posts: 118
Post: #4730

To my eye those brackets look worse, lacks shadow and lack curvature (:

Try swapping out native dialog pac's fonts, see if that makes any difference. Also hdmod started inserting its own fonts at some point, they can be renamed or deleted safely.
igrik would be better placed to comment, but as far as I can tell his code doesn't change the way fonts are drawn, it just changes which fonts get selected.

gu7979gu's font 'detection' is not very safe, it checks 4 first characters or font name and compares against 'bigf' (BIGFONT) and then 'tiny' (TINYFONT) otherwise assumes MEDFONT. Native dialogs changes a lot of existing fonts, no idea if that can have an impact by failing to detect correct font.
Code:
procedure SetFont(hfont:integer;var Width,Height:integer);stdcall;
begin
  if pInteger(hfont+4)^=1718053218 then // bigf in hex
  begin
    Width:=Font24Width;
    Height:=Font24Height;
  end else
  if pInteger(hfont+4)^=2037279092 then // tiny in hex
  begin
    Width:=FontTinyWidth;
    Height:=FontTinyHeight;
  end else
  begin
    Width:=Font12Width;
    Height:=Font12Height;
  end;
end;
(This post was last modified: 19.07.2020 01:07 by RoseKavalier.)
19.07.2020 01:06
Find all posts by this user Quote this message in a reply
Archer30 Online
Moderators

Posts: 1092
Post: #4731

RoseKavalier, thank you so much for the enlightment, problem solved! I just copied the small/med/bigfont from Chinese WoG and renamed to xxxfont2.fnt, now all worked out.

Well, can't say you are wrong. but this is what HoMM 3 official Chinese versions look like. Ppl get used to this font since 20 years ago.


Latest ERA mods and scripts in development - My GitHub
19.07.2020 13:38
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16438
Post: #4732

   RoseKavalier, thanks, indeed! It's really not reliable way to detect tiny/med/big using first 4 bytes.

(19.07.2020 17:43)Zur13 Wrote:  почему триггеры !?FU77007 и !?FU77006 из ЭРЫ срабатывают именно в таком порядке, сначала триггер фазы регенерации отряда перед получением хода, а только потом решение какой отряд будет ходить? У меня проблема в том, что триггер !?FU77007 срабатывает для одного стека, а потом я в триггере !?FU77006 меняю стек который получит ход и всё, получается что 77007 сработал для одного стека, а ходит другой стек. Внутри моего мода это половина проблемы и можно как-то костылей набросать, а вот если другой мод будет менять порядок ходов, то для моего мода это вызовет очень большие проблемы. Считаю что такое поведение в корне неверно, есть ли какой-то другой способ выполнить действия перед передачей управления определенному стеку на поле боя?

Zur13, я, если получится, гляну, почему так вышло неудобно, что регенерация до определения очерёдности идёт. Тоже столкнулся в скриптах с такой проблемой.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
20.07.2020 22:12
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16438
Post: #4733

(18.07.2020 20:54)wessonsm Wrote:  Есть прекрасная опция "ErmLegacySupport" в ERA 2, но кажется, она не совсем работает так, как надо...
Я еще не проверял, но проверю.
y-переменные должны обнулятся, x-переменные должны наследоваться, и обнуляться должны только не объявленные, и только при вызове из триггера, а не из функции. При вызове из функции должны наследоваться, в !!DO должны обнуляться только в первом цикле при вызове из триггера (не из функции!!), в остальных случаях должны наследоваться...
Куча старых скриптов работает неправильно из-за этого...
[+] Improved "ErmLegacySupport" option. Negative z-variables are not local for classic FU1..FU29999.
    Negative z-variables are not nulled on FU1..FU29999 enter and other quirks.
    Old WoG scripts bug count decreased.

[+] Added "ErmLegacySupport" option in heroes3.ini. If set to 1, compatibility with old ERM scripts will be better
    at the cost of ~15% ERM performance decrease. Options forces local variables reset before each !?XX trigger, even
    in DO-loops.

Мы про Эру 2 говорим? В основном проблема в скриптах была в использовании y- и x как глобальных переменных, что в корне не верно. y- поведение возвращено только для оригинальных неименованных функций из диапазона 1..30000. Время уже уходить от старых костылей.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
21.07.2020 12:29
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 778
Post: #4734

Berserker, да, об Эре 2.
Насчет y-переменных я понял. Они не обнулялись, потому что использовались большие номера функций типа FU123125.
Для старых модов (и не очень старых) это типичная ситуация.
Но я почему-то думал, что x-переменные тоже должны обнуляться при вызове функции из триггера не-функции. По крайней мере так было в старых версиях Эры.
Да, в основном из-за этого баги и ловлю.
(This post was last modified: 21.07.2020 20:18 by wessonsm.)
21.07.2020 20:17
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #4735

ERM-Help Wrote:Переменные - параметры функции (x1-x16) ... данные переменные существуют лишь внутри функций (кода после триггера функции) и пропускают в функцию значения командой P (P - параметры). Если вы вызываете функцию из другой функции, любые x-переменные, которые не были установлены (как новые параметры), хранят своё старое значение в новой функции
я никогда не пробовал использовать x-переменные вне тела триггера ф-ции.
Можно использовать их и так? как глобальные? Unsure
я никому не скажу, просто чтобы знать
21.07.2020 20:26
Visit this user's website Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #4736

(18.07.2020 20:34)Zur13 Wrote:  нельзя ли в ЭРА добавить возможность выбора нужного пункта (чекбокса) в диалогах типа !!IF:G с помощью клавиатуры например клавишами [1]-[0],[-],[=]?
а как ты будешь определять скажем какой по счёту нужный чекбокс, когда там будет их максимум, а тебе нужем скажем 8й по счёту? визуально отсчитывать его и потом жать клавишу [8]? да я быстрее мышку подвину, овчинка то будет стоить выделки? 118
21.07.2020 20:31
Visit this user's website Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 778
Post: #4737

(21.07.2020 20:26)Bes Wrote:  я никогда не пробовал использовать x-переменные вне тела триггера ф-ции.
Можно использовать их и так? как глобальные? Unsure
я никому не скажу, просто чтобы знать

Нет, как глобальные их использовать нельзя.
Я просто говорю о том, что код типа:

!?FU888;
!!IF:M^%X2^;
!?CM0;
!!FU888:P;

в старых версиях Эры (до 2.9) выдавал всегда 0, а в версиях после 2.9 может выдавать непонятно что.
21.07.2020 20:59
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16438
Post: #4738

wessonsm, в ЭРЕ 3 это поведение возвращено. Если очень принципиально сборку делать на 2.9.15, то могу выпустить 2.9.16 с обнулением.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
21.07.2020 22:25
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 778
Post: #4739

Berserker, для меня это не так критично, я в любом случае буду переходить на ERA 3.
Но возможно, есть люди, которые хотели бы продолжать использовать вторую Эру.
21.07.2020 23:06
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #4740

Berserker, 2,9,14 же последняя? а не 15ая
21.07.2020 23:18
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group