Current time: 20.09.2020, 13:23 Hello There, Guest! (LoginRegister)
Language: english | russian  

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

Posts: 4120
Post: #751


вопрос только один - что за адрес используется нестандартный 6933756 ?
я почему-то ожидал здесь адрес основного игрового менеджера (6919480)... есть у кого объяснение? Unsure



Image: 237506073ac7.gif
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: 13031
Post: #752

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
gamemaster Offline

Posts: 3
Post: #753

Thanks!!
22.07.2020 20:24
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 13031
Post: #754

Выбор и кэширование зацикленных звуков объектов вблизи активного героя.
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
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2020 MyBB Group