Current time: 21.04.2018, 20:00 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 68
Post: #3616

(24.12.2017 04:23)Berserker Wrote:  При каждом запуске идёт замена стандартных pcx на случайных из набора?

При каждом вызове pcx в игре. Очень удобно использовать для замены боевых полей и не требует знания ERM. Список для замены редактируется обычным блокнотом.
24.12.2017 13:57
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 10541
Post: #3617

XEPOMAHT, помню, писал этот плагин. Там установка перенаправлений ресурсов срабатывает при запуске игры, загрузке и старте новой игры. Так что если уже загрузился, то для конкретного старого pcx пропишется случайный, но конкретный новый pcx. И так до загрузки сохранёнки )


Скачать Герои 3 Эра и всё, что с ней связано
24.12.2017 14:34
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline

Posts: 68
Post: #3618

Понятно. Жаль, что исходников нет - можно было бы наверное добавить срабатывание плагина в триггере OnSetupBattlefield и получить полный рамдом pcx на боевых полях. Хотя и текущее состояние плагина вполне устраивает (тем более для меня - плохого игрока, часто использующего загрузку сохранений).
24.12.2017 18:26
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 10541
Post: #3619

XEPOMAHT, если pcx загружается после данного триггера и освобождается после боя, то вполне можно. И дай, плагин банально использует АПИ ЭРЫ: RedirectFile.
Code:
LIBRARY RandomSkin;
{
DESCRIPTION:  Random skin plugin for Era
AUTHOR:       Alexander Shostak (aka Berserker aka EtherniDee aka BerSoft)
}

USES
  Utils, SysUtils, Era, Lists, Files, StrLib;
  
CONST
  RANDOM_SKIN_FOLDER  = 'Data\RandomSkin';


VAR
{o} RandomSets: {O} Lists.TList {OF Lists.TStringList};


PROCEDURE RandomizeSkin;
VAR
{U} RandomSet:  Lists.TStringList;
    i:          INTEGER;
  
BEGIN
  RandomSet :=  NIL;
  // * * * * * //
  FOR i := 0 TO RandomSets.Count - 1 DO BEGIN
    RandomSet :=  RandomSets[i];
    Era.GlobalRedirectFile(PCHAR(RandomSet[0]), PCHAR(RandomSet[Random(RandomSet.Count)]));
  END; // .FOR
END; // .PROCEDURE RandomizeSkin

FUNCTION LoadSettingsFile (SearchRec: SysUtils.TSearchRec): BOOLEAN; (* ContSearch? *)
VAR
{U} RandomSet:    Lists.TStringList;
    FileContents: STRING;
    SkinSets:     Utils.TArrayOfString;
    SetItems:     Utils.TArrayOfString;
    i, j:         INTEGER;

BEGIN
  RandomSet :=  NIL;
  // * * * * * //

  IF
    (SearchRec.Size > 0)  AND
    Files.ReadFileContents(RANDOM_SKIN_FOLDER + '\' + SearchRec.Name, FileContents)
  THEN BEGIN
    SkinSets  :=  StrLib.Explode(FileContents, '*');
    
    FOR i := 0 TO HIGH(SkinSets) DO BEGIN
      RandomSet :=  Lists.NewSimpleStrList;
      SetItems  :=  StrLib.Explode(SkinSets[i], #13#10);
      
      FOR j := 0 TO HIGH(SetItems) DO BEGIN
        SetItems[j] :=  SysUtils.Trim(SetItems[j]);
        
        IF SetItems[j] <> '' THEN BEGIN
          RandomSet.Add(SetItems[j]);
        END; // .IF
      END; // .FOR
      
      IF RandomSet.Count = 0 THEN BEGIN
        SysUtils.FreeAndNil(RandomSet);
      END // .IF
      ELSE BEGIN
        RandomSets.Add(RandomSet); RandomSet := NIL;
      END; // .ELSE
    END; // .FOR
  END; // .IF
  
  RESULT  :=  TRUE;
END; // .FUNCTION LoadSettingsFile

PROCEDURE LoadSettings;
BEGIN
  Files.Scan
  (
    RANDOM_SKIN_FOLDER + '\*.txt',
    Files.faNotDirectory,
    '.txt',
    LoadSettingsFile
  );
END; // .PROCEDURE LoadSettings
  
PROCEDURE OnBeforeErmInstructions (Event: Era.PEvent); STDCALL;
BEGIN
  RandomizeSkin;
END; // .PROCEDURE OnBeforeErmInstructions

PROCEDURE OnAfterLoadGame (Event: Era.PEvent); STDCALL;
BEGIN
  RandomizeSkin;
END; // .PROCEDURE OnAfterLoadGame

PROCEDURE OnAfterWoG (Event: Era.PEvent); STDCALL;
BEGIN
  LoadSettings;
  RandomizeSkin;
END; // .PROCEDURE OnAfterWoG

BEGIN
  Randomize;
  RandomSets  :=  Lists.NewStrictList(Lists.TStringList);
  
  Era.RegisterHandler(OnAfterWoG, 'OnAfterWoG');
  Era.RegisterHandler(OnBeforeErmInstructions, 'OnBeforeErmInstructions');
  Era.RegisterHandler(OnAfterLoadGame, 'OnAfterLoadGame');
END.


Думаешь, стоит вызывать выбор случайных pcx и перед боем?


Скачать Герои 3 Эра и всё, что с ней связано
24.12.2017 21:34
Find all posts by this user Quote this message in a reply
Valery Offline

Posts: 1903
Post: #3620

So, a bit of reporting, as I started finally test with tew4 which is heavily scripted. The first problem I ran in was that if you install Homm+HD+era, it will ask you to reinstall HD because patcher not updated. Installing Homm+era+HD is fine.

Then game runs perfect, only played 2 weeks or so, but pushed all buttons, activated 18 interface mods, until now looks great and I love the new fonts for experience screen + the display of values for luck/morale, thx to whoever worked on them (igrik?).

And thx to Bersy for coming back from marriage clouds to finalize his master work. ))


All my WoG scenarios
(This post was last modified: 24.12.2017 23:28 by Valery.)
24.12.2017 23:27
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 10541
Post: #3621

Great thanks to igrik and many other guys, including you, Val. Without you any work would be senseless )
And I'm still in marriage clouds, working on ability to load and png/bmp/jpeg as in-game pcx16 image with scaling support.

Code:
i := ResizeBmp24(LoadImageAsBmp24('D:\a4.jpg'), 800, 600, FREE_ORIGINAL_BMP);
ResourceTree.AddItem(Bmp24ToPcx16(i, 'zpic1005.pcx'));


Скачать Герои 3 Эра и всё, что с ней связано
25.12.2017 00:56
Find all posts by this user Quote this message in a reply
Valery Offline

Posts: 1903
Post: #3622

well, hope you are in great shape, such a beautiful photo 126


All my WoG scenarios
(This post was last modified: 25.12.2017 03:09 by Valery.)
25.12.2017 01:08
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline

Posts: 68
Post: #3623

(24.12.2017 21:34)Berserker Wrote:  Думаешь, стоит вызывать выбор случайных pcx и перед боем?

Можно и перед боем, но с проверкой байта 0х91F6C7. Но лучше именно в OnSetupBattlefield несмотря на то, что там боевое поле уже загружено (т.е. pcx полей будут измены на следующую битву, а в эту битву увидим то, что выпало при загрузке игры или сохранении).
25.12.2017 01:31
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 10541
Post: #3624

XEPOMAHT, пока возражений нет и проблем с другими ресурсами не вижу (да, холостая генерация может чутку испортить общее качество ГСЧ, но нужно тестировать).
Valery, ))


Скачать Герои 3 Эра и всё, что с ней связано
25.12.2017 03:51
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 1300
Post: #3625

(25.12.2017 00:56)Berserker Wrote:  And I'm still in marriage clouds, working on ability to load and png/bmp/jpeg as in-game pcx16 image with scaling support.

Code:
i := ResizeBmp24(LoadImageAsBmp24('D:\a4.jpg'), 800, 600, FREE_ORIGINAL_BMP);
ResourceTree.AddItem(Bmp24ToPcx16(i, 'zpic1005.pcx'));
Berserker, дай мне эту dll-ку, чтобы я мог продолжить IF:E/D


Скачать HoMM3 ERA 2.4.6 + (мелочи)
Скачать HoMM3 ERA 2.7.4 (Repack: Rus & HD)
25.12.2017 16:31
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 10541
Post: #3626

С загрузкой большинства типов изображений и ограничениями менеджера ресурсов (уникальные 12-символьные имена) разобрался, мастер igrik, если получится, порадует всех очередной заменой IF:E/D диалогов на родные (кроме гиф-анимации и проигрывания видео). В настоящее время масштабирование линейное, билинейное тормозило, библиотеки пока не пробовал.


Скачать Герои 3 Эра и всё, что с ней связано
26.12.2017 18:00
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 10541
Post: #3627

XEPOMAHT, я добавил в веб-папку Plugins плагин RandomSkin. Попробуй, пожалуйста. Должен теперь в OnSetupBattlefield срабатывать. Там же исходник. Можно переписать на чём угодно.


Скачать Герои 3 Эра и всё, что с ней связано
27.12.2017 02:46
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline

Posts: 68
Post: #3628

Berserker, спасибо! Рамдомизация боевых полей работает как надо. Только расширение нужно сменить на .era, чтобы замена pcx в главном меню тоже работала.
27.12.2017 11:37
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 10541
Post: #3629

XEPOMAHT, на здоровье! Отлично ) Можно награбить полей отовсюду и выпускать мини-мод ))


Скачать Герои 3 Эра и всё, что с ней связано
27.12.2017 14:46
Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 1300
Post: #3630

Berserker, в этом графическом режиме (фильтре) с HD модом возникает такая вот проблема.
скрины (Click to View)


Скачать HoMM3 ERA 2.4.6 + (мелочи)
Скачать HoMM3 ERA 2.7.4 (Repack: Rus & HD)
27.12.2017 19:56
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-2018 MyBB Group