Цитата:
Сообщение от 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(1, 2, SIP, &lock, WB);
v6 = 0;
*(_DWORD *)GUsingOMP = 0;
omp_destroy_lock();
return debugf(L"End to Set initial points %f", &lock);
}
Вот сама функция нахождения
PHP код:
int __cdecl SIP(int a1, int 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(0, 2047, 1, 1, &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 ( i = v2; i < 2048; ++i )
{
v12 = *(_DWORD *)(dword_208936B4 + 8) + 16 * i + 8;
if ( v12 >= *(_DWORD *)(a2 + 24) && v12 <= *(_DWORD *)(a2 + 32) )
{
v18 = (double)v13;
v19 = (double)v12;
v20 = 15000.0;
while ( 1 )
{
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(v4, i, (signed int)v20 / 8, &v18, 1) )
{
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 + 36, 1);
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:37) Log: Begin to Set initial points
(18:43:36) Log: End to Set initial points 1710421977037891600000000000000000000000000000000000000000000000000000000000000.000000
(18:43:36) Log: Kill Thread SetInitialPoints
(18:43:36) Log: Num of InitPoints = 1