Показать сообщение отдельно
Непрочитано 23.02.2012, 19:01   #131
Аватар для ALF.
Герой

По умолчанию Re: Генерация методом buildzone

Цитата:
Сообщение от ANZO Посмотреть сообщение
Пришли к тому, что Initial Points зашиты в карте.
ээ

Бюлдер вызывает FWorldBuilder::SetInitialPoints

PHP код:
int __thiscall FWorldBuilder::SetInitialPoints(void *this)
{
  
void *WB// esi@1
  
int log// [sp+0h] [bp-38h]@1
  
int lock// [sp+24h] [bp-14h]@1
  
int *pLog// [sp+28h] [bp-10h]@1
  
int v6// [sp+34h] [bp-4h]@1

  
pLog = &log;
  
WB this;
  
v6 0;
  
debugf(L"Begin to Set initial points"log);
  *((
_DWORD *)WB 9) = 0;
  
omp_init_lock(&lock);
  *(
_DWORD *)GUsingOMP 1;
  
LOBYTE(v6) = 1;
  
j__vcomp_fork(12SIP, &lockWB);
  
v6 0;
  *(
_DWORD *)GUsingOMP 0;
  
omp_destroy_lock();
  return 
debugf(L"End to Set initial points %f", &lock);


Вот сама функция нахождения
PHP код:
int __cdecl SIP(int a1int a2)
{
  
int v2// esi@1
  
signed int v3// edi@1
  
int v4// ebp@1
  
double v5// st7@2
  
int v6// eax@2
  
signed int v7// ecx@2
  
signed int i// edi@5
  
int v9// eax@13
  
int v10// edx@13
  
int v12// [sp+4h] [bp-64h]@6
  
int v13// [sp+8h] [bp-60h]@3
  
int v14// [sp+10h] [bp-58h]@2
  
int v15// [sp+14h] [bp-54h]@1
  
int v16// [sp+18h] [bp-50h]@1
  
int v17// [sp+1Ch] [bp-4Ch]@2
  
float v18// [sp+20h] [bp-48h]@8
  
float v19// [sp+24h] [bp-44h]@8
  
float v20// [sp+28h] [bp-40h]@8
  
float v21// [sp+2Ch] [bp-3Ch]@9
  
float v22// [sp+30h] [bp-38h]@9
  
float v23// [sp+34h] [bp-34h]@9
  
char v24// [sp+38h] [bp-30h]@9
  
int v25// [sp+64h] [bp-4h]@9

  
v2 0;
  
v3 1;
  
j__vcomp_for_static_simple_init(0204711, &v16, &v15);
  
v4 v16;
  if ( 
v16 <= v15 )
  {
    
v5 0.0;
    
v6 16 v16;
    
v7 16;
    
v14 16 v16;
    
v17 16;
    do
    {
      
v13 v6 + *(_DWORD *)dword_208936B4 8;
      if ( 
v13 >= *(_DWORD *)(a2 20) && v13 <= *(_DWORD *)(a2 28) )
      {
        for ( 
v22048; ++)
        {
          
v12 = *(_DWORD *)(dword_208936B4 8) + 16 8;
          if ( 
v12 >= *(_DWORD *)(a2 24) && v12 <= *(_DWORD *)(a2 32) )
          {
            
v18 = (double)v13;
            
v19 = (double)v12;
            
v20 15000.0;
            while ( 
)
            {
              
v21 v5;
              
v22 v5;
              
v23 = -30000.0;
              
v25 v2;
              if ( !
FWorldBuilder::TestMove(&v18, &v21, &v24) )
                break;
              if ( 
v20 <= -16200.0 )
                goto 
LABEL_18;
              
v5 0.0;
            }
            
omp_set_lock(a1);
            if ( 
sub_201D49C0(v4i, (signed int)v20 8, &v181) )
            {
              
v9 sub_201D4D00();
              if ( *(
_DWORD *)(v9 4) )
                *(
_DWORD *)(*(_DWORD *)(v9 8) + 36) = v10;
              else
                *(
_DWORD *)(v9 4) = v10;
              ++*(
_DWORD *)v9;
              *(
_DWORD *)(v9 8) = v10;
            }
            
omp_unset_lock(a1);
            
v2 0;
LABEL_18:
            
v5 0.0;
          }
        }
        
j__vcomp_atomic_add_i4(a2 361);
        
v5 0.0;
        
v3 1;
        
v7 v17;
      }
      
v4 += v3;
      
v6 v7 v14;
      
v14 += v7;
    }
    while ( 
v4 <= v15 );
  }
  
j__vcomp_for_static_end();
  return 
j__vcomp_barrier();

походу СИП прямо зависит от FWorldBuilder::TestMove
хотя хз....

и еще что то
PHP код:
              if ( v20 <= -16200.0 )
                goto 
LABEL_18
wtf?

Добавлено через 44 минуты
Я тут чето нашаманил, что бы это могло быть?
PHP код:
(18:42:37LogBegin to Set initial points
(18:43:36LogEnd to Set initial points 1710421977037891600000000000000000000000000000000000000000000000000000000000000.000000
(18:43:36LogKill Thread SetInitialPoints
(18:43:36LogNum of InitPoints 

Последний раз редактировалось ALF.; 23.02.2012 в 19:45. Причина: Добавлено сообщение
ALF. вне форума Отправить сообщение для ALF. с помощью ICQ Отправить сообщение для ALF. с помощью Skype™