Current time: 27.11.2024, 11:39 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Исследование героев
» туториал(ы)
Author Message
daemon_n Offline
Administrators

Posts: 4343
Post: #736

XEPOMAHT, таблицу, мб, подумаю на досуге, если опыт позволит)
Однако вопрос именно в моментальном переодевании, чтобы ии, получив книгу земли, смог сразу использовать и спастись либо напасть.


Image: widget.png?style=banner2

Новейший Heroes Launcher
18.07.2019 12:57
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #737

(18.07.2019 12:57)daemon_n Wrote:  Однако вопрос именно в моментальном переодевании, чтобы ии, получив книгу земли, смог сразу использовать и спастись либо напасть.

В триггере пост-посещения артефакта проверяешь ИИ-чность, если ИИ, то ищешь артефакт в сумке, если артефакт найден в сумке, то читаешь номер слота из структуры артефакта и AI value артефакта и проверяешь в слотах куклы героя те же AI value, а затем сравниваешь их. Если AI value подобранного на карте артефакта больше уже одетого, то меняешь их местами.

Перед битвой так же можно сравнивать всю куклу героя с рюкзаком на AI value, т.к. артефакты у героев могут появляться в любой момент времени и это затратно отслеживать (т.к. особые функции при этом не нужны, достаточно просто изменить байт в структуре героя).
18.07.2019 15:04
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1468
Post: #738

Слишком много факторов учитывать надо. К примеру, Сферу Земли когда ИИ надевать? Когда у него есть полезные заклинания этой школы. Когда они полезнее заклинаний других школ. Когда колдовство не запрещено полностью (Сфера Запрещения) или частично (Проклятая Земля), но не запрещается колдовство наиболее полезных заклов. Когда нужные заклинания изучены. Когда есть книга заклинаний. Как прокачана мудрость и сила магии. Есть ли свободный слот. Каковы свойства заклинаний. Нет ли надетого артефакта, который нивелирует свойства Сферы. Иммунитеты существ - своих и чужих. Наконец, не надет ли более полезный артефакт или дублирующий свойства Сферы. И еще невесть какие факторы, о которых вспомнишь только в игре.
И это условия полезности лишь для одного артефакта. Какая ещё таблица AI value, когда всё так ситуативно?


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
19.07.2019 15:25
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #739

MOP, вот поэтому он будет среди последних)


Image: widget.png?style=banner2

Новейший Heroes Launcher
19.07.2019 15:40
Visit this user's website Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2356
Post: #740

(19.07.2019 15:25)MOP Wrote:  Какая ещё таблица AI value, когда всё так ситуативно?

С точки зрения заядлого игрока, знающего все вышеперечисленные особенности - да, использование AI value не приведёт ИИ до уровня эксперта по игре. Тогда для и монстров давайте тоже перестанем использовать AI value по той же причине ситуативности (вроде в игре работает норм, даже в MoP с почти удвоенным их количеством).

Например как играю я: поднимаю с карты ту же Сферу Земли, помещаю на куклу героя взамен какого-нибудь барахла и играю дальше, не думая ни о каких-то факторах (на Героях мозг обычно должен отдохнуть, это развлечение). Конечно, можно сказать, что хардкорщиков-задротов сейчас наверное большинство (от того и рулят моды, не содержащие коренных изменений игрового процесса), но я бы всё всё равно предложил для ИИ схему по-проще (например, в MoP уже больше 400 артефактов, сложную схему для ИИ сделать жизни не хватит).
19.07.2019 16:16
Find all posts by this user Quote this message in a reply
MOP Offline
Moderators

Posts: 1468
Post: #741

Ну если упрощённо, то такая система AI value уже есть в игре - градация по классам артефактов. И она худо-бедно работает - потому что и создана для ИИ. Вот только лучше бы вместо классов в качестве value была выбрана стоимость в золоте - иными словами, не четыре ступени ценности, а неограниченный ценностный диапазон.


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
19.07.2019 19:30
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #742

(19.07.2019 19:30)MOP Wrote:  Ну если упрощённо, то такая система AI value уже есть в игре - градация по классам артефактов. И она худо-бедно работает - потому что и создана для ИИ. Вот только лучше бы вместо классов в качестве value была выбрана стоимость в золоте - иными словами, не четыре ступени ценности, а неограниченный ценностный диапазон.

Но это только если Артефакт подбирается с земли.


Image: widget.png?style=banner2

Новейший Heroes Launcher
22.07.2019 14:58
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #743

(17.12.2019 12:42)Algor Wrote:  Как вариант, конечно, раскопать какую-нить функцию типа "мощь армии королевства" из обзора королевства, но не уверен, что там будет именно то, что нужно.
Отдельно взятой такой функции нет. Есть только участок кода внутри функции, но его никак нельзя использовать через ERM
Проще скриптом запилить...
Но есть проблема: никакой ERM переменной не хватит для хранения таких чисел.


game bug fixes extended.dll || My Plugins || My GitHub
17.12.2019 14:44
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #744

Quote:Но есть проблема: никакой ERM переменной не хватит для хранения таких чисел.
e2?


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

Posts: 3881
Post: #745

(17.12.2019 16:17)Berserker Wrote:  
Quote:Но есть проблема: никакой ERM переменной не хватит для хранения таких чисел.
e2?
Даже если не хватит, я не думаю, что облагаться налогом будет каждая единица FV 118


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
17.12.2019 17:56
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline

Posts: 2819
Post: #746

(13.02.2020 15:49)Berserker Wrote:  I will need to send generator state over net on online PvP battle. ~3 KB for Mersenne Twister.

Передача данных по сети:
Code:
// структура передачи данных по сети
struct _NetData_
{
_int_ recipient_id;  // +0   (номер игрока кому передаётся. (-1 = всем) )
_int_ field_04;      // +4
_int_ msg_id;        // +8   (id данных)
_int_ size;          // +12  (размер _NetData_ = 20 + sizeof(Data) )
_int_ field_10;      // +16
_int_ Data[];        // +20  (передаваемые данные (массив))


inline _int32_ SendData() {return CALL_4(_int32_, __fastcall, 0x5549E0, this, 127, 0, 1);}
inline _int32_ SendShortData() {return CALL_1(_int32_, __thiscall, 0x481CB0, this);}
};

Принимать и обрабатывать данные (рядом с этими адресами):
Code:
0x405E81 [карта приключений]
0x473D5E [битва]
0x588AC3 [меню выбора карт]


game bug fixes extended.dll || My Plugins || My GitHub
13.02.2020 16:06
Visit this user's website Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #747

вопрос только один - что за адрес используется нестандартный 6933756 ?
я почему-то ожидал здесь адрес основного игрового менеджера (6919480)... есть у кого объяснение? Unsure
21.07.2020 00:27
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #748

69CCFC - структура текущего игрока

Code:
Byte *GamerStruc(int hn)
{
  #include "templ.h"
  if(hn==-1){
    __asm mov eax,0x69CCFC
    __asm mov eax,[eax]
    __asm mov BPDummy,eax
    RETURN(BPDummy)


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

Posts: 16657
Post: #749

Выбор и кэширование зацикленных звуков объектов вблизи активного героя.
PHP Code:
00000000 AdvMgr              struc ; (sizeof=0x258mappedto_380)
00000000 field_0             db 548 dup(?)                           ; string(C)
00000224 cachedLoopsSoundsMask dd ?                                  ; DEPRECATED
00000228 cachedLoopSounds    HeroClosestLoopSound 4 dup
(?)
00000248 cachedLoopSoundWavs dd 4 dup(?)                             ; offset
00000258 AdvMgr              ends
00000258
00000000 
; ---------------------------------------------------------------------------
00000000
00000000 HeroClosestLoopSound struc 
; (sizeof=0x8mappedto_381)     ; XREFAdvMgr/r
00000000 loopSoundId         dd 
?
00000004 distance            dd ?
00000008 HeroClosestLoopSound ends

418B70 void __thiscall MapItem_Start_Loop_Sound
(AdvMgr *advMgrint xint yint zint distanceint allowCaching)
{
  
AdvMgr *self// esi
  
signed int determinedLoopSoundId// edi
  
AdvMgrConsts cachedLoopSoundIndex// eax
  
HeroClosestLoopSound *cachedLoopSound// ecx
  
int farthestDistance// edx
  
signed int newLoopSoundIndex// ebx
  
AdvMgrConsts i// eax
  
int prevLoopSoundId// eax
  
int *soundDistanceToCheck// [esp+14h] [ebp+8h]

  
self advMgr;
  if ( 
>= && >= && >= && MapSizeX && MapSizeY )
  {
    
determinedLoopSoundId AdvMgr_MapItem_Determine_Sound(xyz);
    if ( 
determinedLoopSoundId != -)
    {
      
cachedLoopSoundIndex 0;
      
cachedLoopSound self->cachedLoopSounds;
      while ( 
cachedLoopSound->loopSoundId != determinedLoopSoundId )
      {
        ++
cachedLoopSoundIndex;
        ++
cachedLoopSound;
        if ( 
cachedLoopSoundIndex >= MAX_CACHED_LOOP_SOUNDS )// Such looped sound not found in cache
        
{
          if ( 
allowCaching != )
          {
            
farthestDistance distance;
            
newLoopSoundIndex = -1;
            
0;
            
soundDistanceToCheck = &self->cachedLoopSounds[0].distance;
            do
            {
              if ( *
soundDistanceToCheck farthestDistance )
              {
                
farthestDistance = *soundDistanceToCheck;
                
newLoopSoundIndex i;
              }
              ++
i;
              
soundDistanceToCheck += 2;
            }
            while ( 
MAX_CACHED_LOOP_SOUNDS );
            if ( 
newLoopSoundIndex != -)
            {
              
prevLoopSoundId self->cachedLoopSounds[newLoopSoundIndex].loopSoundId;
              if ( 
prevLoopSoundId != -)
                
StopBINKVideo_AIL(o_SoundMgr, *(self->cachedLoopSoundWavs[prevLoopSoundId] + 7));
              
self->cachedLoopSounds[newLoopSoundIndex].loopSoundId determinedLoopSoundId;
              
self->cachedLoopSounds[newLoopSoundIndex].distance distance;
              if ( 
determinedLoopSoundId > -1
                
&& determinedLoopSoundId 70
                
&& !self->cachedLoopSoundWavs[determinedLoopSoundId] )
              {
                
Dlg_KingdomOverviewPrepare(self4);
                
self->cachedLoopSoundWavs[determinedLoopSoundId] = LoadWAV2((&off_0065F794)[determinedLoopSoundId]);
              }
              *(
self->cachedLoopSoundWavs[determinedLoopSoundId] + 11) = dword_0063A64C[distance];
              *(
self->cachedLoopSoundWavs[determinedLoopSoundId] + 12) = 0;
              *(
self->cachedLoopSoundWavs[determinedLoopSoundId] + 10) = 3;
              
NotifyPlayerWithBINKandSound(o_SoundMgrself->cachedLoopSoundWavs[determinedLoopSoundId]);
              
self->cachedLoopsSoundsMask ^= << self->cachedLoopSounds[newLoopSoundIndex].loopSoundId;
            }
          }
          return;
        }
      }
      if ( 
self->cachedLoopSounds[cachedLoopSoundIndex].distance distance )
      {
        
self->cachedLoopSounds[cachedLoopSoundIndex].distance distance;
        
self->cachedLoopsSoundsMask |= << self->cachedLoopSounds[cachedLoopSoundIndex].loopSoundId;
      }
    }
  }



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

Posts: 5422
Post: #750

Список идентификаторов игровых диалогов (получены в ERA2)
Code:
4205280 - карта приключений (КП)
    5755920 - окно сохранения
    5884864 - книга заклинаний
    4789216 - режим "дверь измерений"
    4790240 - режим "затопить корабль"
    6039360 - окно выбор города (без HD; для закла ГП или через врата Инферно)
    5217680 - окно повышения уровня героя
    5378592 - окно обзора королевства
    5976864 - окно настроек КП
    4216352 - окно действий на КП
    6275296 - обзор мира (включая заклы Просмотр земли/воздуха)
    5425744 - карта-загадка
    6068832 - гильдия воров
    5675664 - инфо по сценарию
    6100112 - окно гарнизона
    6099296 - окно оставления существ (включая шахты)
    5570288 - жилища существ/фабрика машин
    5637600 - жертвенный алтарь
    6228784 - университет
    6105344 - верфь
    6183568 - чёрный рынок/торговец артефактами (покупка)
    6167072 - рынок (обмен ресурсами)
    6175376 - рынок (передача ресурсов игроку)
    6241984 - окно статистики монстра/отряда
    5144224 - форт на холме
    6201472 - гильдия наёмников
    6126720 - таверна
** (одноимённые диалоги вне КП имеют те же ID и ниже не упоминаются)

4662240 - окно битвы
    4649504 - окно настроек в битве
    4658576 - статистика боя

5117840 - окно героя
    4304960 - окно командира (с WND)
    5432976 - окно журнала (без плагина на новый диалог)
    4304960 - окно журнала (с плагином на новый диалог)

6053040 - окно города
    6087968 - гильдия магов
    6081760 - зал совета
        6119232 - инфо о постройке
    6147920 - форт/замок
    6102528 - кузница
    5661104 - преобразователь скелетов
    6193120 - торговец артефактами (продажа)

5957344 - окно встечи героев

4782512 - прочие диалоги (включая IF:M/IF:Q; и все новые от HD)
4304960 - WoG-диалоги (с WND: опыт существ, сфинкс, проклятья, IF:G/IF:B и пр.)
- - -     WoG-диалоги без WND не пропускают (OnKeyPressed), потому хз как их пощупать
22.11.2020 01:05
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