Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Генерация методом buildzone
Setting Initial Points как бы за себя и говорит. Чар тупо должен с 30000 по Z пропрыгать до минимальной точки в -16250 и выполняя TestMove "нащупать" плоскости.
Что пока что "изучил"
PHP код:
<?php 
int __cdecl SetPoints
(int a1, FWorldBuilder *fb)
{
int o; // esi@1
signed int one; // edi@1
int v4; // ebp@1
double zero; // st7@2
int v6; // eax@2
signed int v7; // ecx@2
int i; // edi@5
int v9; // eax@9
int v10; // eax@13
int v11; // edx@13
int _y; // [sp+4h] [bp-64h]@6
int _x; // [sp+8h] [bp-60h]@3
int v15; // [sp+10h] [bp-58h]@2
int v16; // [sp+14h] [bp-54h]@1
int v17; // [sp+18h] [bp-50h]@1
int v18; // [sp+1Ch] [bp-4Ch]@2
FVector CurrentVector; // [sp+20h] [bp-48h]@8
FVector StartVectot; // [sp+2Ch] [bp-3Ch]@9
FCheckResult ChekResult; // [sp+38h] [bp-30h]@9
int v22; // [sp+64h] [bp-4h]@9

o = 0;
one = 1;
j__vcomp_for_static_simple_init(0, 2047, 1, 1, &v17, &v16);
v4 = v17;
if (
v17 <= v16 )
{
zero = 0.0;
v6 = 16 * v17;
v7 = 16;
v15 = 16 * v17;
v18 = 16;
do
{
_x = v6 + *(_DWORD *)dword_208936B4 + 8;
if (
_x >= fb->min_x && _x <= fb->max_x )
{
for (
i = o; i < 2048; ++i )
{
_y = *(_DWORD *)(dword_208936B4 + 8) + 16 * i + 8;
if (
_y >= fb->min_y && _y <= fb->max_y )
{
CurrentVector.X = (double)_x;
CurrentVector.Y = (double)_y;
CurrentVector.Z = 15000.0;
while (
1 )
{
StartVectot.X = zero;
StartVectot.Y = zero;
StartVectot.Z = -30000.0;
v22 = o;
LOBYTE(v9) = FWorldBuilder::TestMove(fb, &CurrentVector, &StartVectot, &ChekResult);
if ( !
v9 )
break;
if (
CurrentVector.Z <= -16200.0 )
goto
LABEL_18;
zero = 0.0;
}
omp_set_lock(a1);
if (
sub_201D49C0(dword_208936B4, v4, i, (signed int)CurrentVector.Z / 8, (int)&CurrentVector, 1) )
{
v10 = sub_201D4D00();
if ( *(
_DWORD *)(v10 + 4) )
*(
_DWORD *)(*(_DWORD *)(v10 + 8) + 36) = v11;
else
*(
_DWORD *)(v10 + 4) = v11;
++*(
_DWORD *)v10;
*(
_DWORD *)(v10 + 8) = v11;
}
omp_unset_lock(a1);
o = 0;
LABEL_18:
zero = 0.0;
}
}
j__vcomp_atomic_add_i4(&fb->unk1, 1);
zero = 0.0;
one = 1;
v7 = v18;
}
v4 += one;
v6 = v7 + v15;
v15 += v7;
}
while (
v4 <= v16 );
}
j__vcomp_for_static_end();
return
j__vcomp_barrier();
}
За информацию спасибо, но вот интуиция подсказывает не там мы копаемся.
[Изображение: 61b684.png]
Похоже что копать надо FWorldBuilder::TestMove

Еще есть интересные функции

UGameEngien::GetSWMapXY
UMasterLevel::GetLevelInfo
CheckWithTerrain
ULevel::MultiLineCheck

Все они вызываются в FWorldBuilder::TestMove

Добавлено через 24 минуты
Или же ошибка тут
PHP код:
<?php 
int __userpurge sub_201D49C0
<eax>(int a1<esi>, int a2, int a3, signed int a4, int a5, int a6)
{
signed int v6; // ebp@1
int v7; // edi@1
int v8; // ebx@1
int result; // eax@2
signed int v10; // eax@6
int v11; // eax@7
signed int v12; // ecx@7
int v13; // eax@17
int v14; // ebx@18
int v15; // eax@21
int v16; // ebp@22
int v17; // [sp+28h] [bp+Ch]@13

v6 = a4;
v7 = (a2 << 11) + a3;
v8 = *(_DWORD *)(a1 + 4 * v7 + 16);
if (
v8 )
{
v10 = *(_WORD *)v8;
if (
v10 >= a4 )
{
if (
v10 == a4 )
{
debugf(L"x=%d,y=%d,FAIL!!!", a2);
result = 0;
}
else
{
while (
1 )
{
v17 = v8;
v8 = *(_DWORD *)(v8 + 32);
if ( !
v8 )
break;
if (
v6 >= *(_WORD *)v8 )
{
if ( *(
_WORD *)v8 == v6 )
{
debugf(L"x=%d,y=%d,FAIL????", a2);
result = 0;
}
else
{
v15 = sub_20099B70(44);
if (
v15 )
v16 = sub_2012B820(v15, a5, v6, a6);
else
v16 = 0;
*(
_DWORD *)(v16 + 32) = v8;
*(
_DWORD *)(v17 + 32) = v16;
++*(
_DWORD *)(a1 + 25165844);
++*(
_WORD *)(a1 + 2 * v7 + 16777232);
debugf(L"4-x=%d,y=%d,story=%d", a2);
result = v16;
}
return
result;
}
}
v13 = (***(int (__stdcall ****)(_DWORD, _DWORD))GMalloc)(44, L"new");
if (
v13 )
v14 = sub_2012B820(v13, a5, v6, a6);
else
v14 = 0;
*(
_DWORD *)(v14 + 32) = 0;
*(
_DWORD *)(v17 + 32) = v14;
++*(
_DWORD *)(a1 + 25165844);
++*(
_WORD *)(a1 + 2 * v7 + 16777232);
debugf(L"3-x=%d,y=%d,story=%d", a2);
result = v14;
}
}
else
{
v11 = (***(int (__stdcall ****)(_DWORD, _DWORD))GMalloc)(44, L"new");
v12 = 1;
if (
v11 )
{
result = sub_2012B820(v11, a5, a4, a6);
v12 = 1;
}
else
{
result = 0;
}
*(
_DWORD *)(a1 + 4 * v7 + 16) = result;
*(
_DWORD *)(result + 32) = v8;
*(
_DWORD *)(a1 + 25165844) += v12;
*(
_WORD *)(a1 + 2 * v7 + 16777232) += v12;
}
}
else
{
result = (***(int (__stdcall ****)(_DWORD, _DWORD))GMalloc)(44, L"new");
if (
result )
{
*(
_WORD *)result = a4;
*(
_DWORD *)(result + 4) = *(_DWORD *)a5;
*(
_DWORD *)(result + 8) = *(_DWORD *)(a5 + 4);
*(
_DWORD *)(result + 12) = *(_DWORD *)(a5 + 8);
*(
_DWORD *)(result + 32) = 0;
*(
_DWORD *)(result + 36) = 0;
*(
_DWORD *)(result + 40) = a6;
*(
_WORD *)(result + 22) = 0;
*(
_WORD *)(result + 20) = 0;
*(
_WORD *)(result + 18) = 0;
*(
_WORD *)(result + 16) = 0;
}
else
{
result = 0;
}
*(
_DWORD *)(a1 + 4 * v7 + 16) = result;
++*(
_DWORD *)(a1 + 25165840);
++*(
_DWORD *)(a1 + 25165844);
++*(
_WORD *)(a1 + 2 * v7 + 16777232);
}
return
result;
}

Ибо СИП в этой функции сразу выходит с неё....
После проверки
PHP код:
<?php 
v8
= *(_DWORD *)(a1 + 4 * v7 + 16);
if (
v8 )
{

то есть у нас v8 = false Sad


А не, v8 у нас может быть в true только когда эта же функция вызывается с FindRich.... в СИПе у нас она всегда фелс, не зависимо от того есть какие то точки или нету.....
а какой длл вы тут копаете?
поделитесь мне тоже интересно покопатся

ну и я знаю то что нехотите знать вы Smile
Engine.dll функцию FWorldBuilder и все вытекающее из нее Smile
а если в корне уточнить то билд закрытых помещений на квадрате за один раз
Пусть в горле ложка застрянет у того кто писал систему вступления в клан. © Mifesto
Киньте Engine.dll для ХФ пожалуйста.
Linda Написал:Киньте Engine.dll для ХФ пожалуйста.
У фьюри портал разве не пашет?
[Изображение: 61b684.png]
ANZO Написал:Engine.dll функцию FWorldBuilder и все вытекающее из нее Smile

интересно сколько бы весил архив со всем енгине длл которые выпустила нцсофт?...........
думаю на каздую версию протокола отдельная ендзин длл. так где то 1500+ дллов имеется в мире

поетому я и спрашиваю какая длл из етих 1500 ковыряется тут


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Buildzone - нужна помощь Registered User 1 3,698 03-29-2016, 01:27 PM
Последний пост: Registered User
  Генерация квадрата Antonio 2 4,092 11-14-2015, 07:50 PM
Последний пост: Antonio
  Генерация Lindvior promailer 7 4,147 03-19-2014, 05:27 AM
Последний пост: darkevil
  buildzone HF5 moveton 0 1,799 11-05-2013, 08:47 PM
Последний пост: moveton
  BuildZone ct1.5 KilRoy 3 2,428 08-01-2013, 08:52 AM
Последний пост: KilRoy
  Генерация pathnode krisadr 9 4,479 04-07-2013, 04:47 PM
Последний пост: qweqwe1

Перейти к форуму:


Пользователи, просматривающие эту тему: 65 Гость(ей)