Показать сообщение отдельно
Непрочитано 08.09.2011, 08:51   #92
Аватар для darkevil

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

Кто нить в курсе что есть такое (Set Initial Point) ?

Есть один переход который мну в тупик заводит не первый день:
Код:
.text:201B01D5                 jnz     loc_201B0285
То попадаем сразу:
Код:
.text:201B0285 loc_201B0285:                           ; CODE XREF: FWorldBuilder::buildWorldStructure(ULevel *,wchar_t *,UViewport *,int,int)+6D5j
.text:201B0285                 push    esi
.text:201B0286                 push    offset aNumOfInitpoint ; "Num of InitPoints = %d"
.text:201B028B                 call    ds:?debugf@@YAXPB_WZZ ; debugf(wchar_t const *,...)
.text:201B0291                 add     esp, 8
.text:201B0294                 mov     [ebp+64h+var_14], 0
.text:201B029B                 jmp     short loc_201B02A0
.text:201B029B ; ---------------------------------------------------------------------------
И билд идет нормально, но мы видим косяки, примеры можно посмотреть в сбилденных квадратах которые я выложил ранее.

Но если переход исправить то попадаем на код который ниже но на этом все, зависает:

Код:
.text:201B01D1 loc_201B01D1:                           ; CODE XREF: FWorldBuilder::buildWorldStructure(ULevel *,wchar_t *,UViewport *,int,int)+6B3j
.text:201B01D1                 cmp     dword ptr [ebx+4], 0
.text:201B01D5                 jnz     loc_201B0285
.text:201B01DB                 mov     eax, ds:?GWarn@@3PAVFFeedbackContext@@A ; FFeedbackContext * GWarn
.text:201B01E0                 mov     eax, [eax]
.text:201B01E2                 mov     ecx, [eax]
.text:201B01E4                 push    offset aSettingInitial ; "Setting Initial Points"
.text:201B01E9                 push    800h
.text:201B01EE                 push    0
.text:201B01F0                 push    eax
.text:201B01F1                 mov     edx, [ecx+18h]
.text:201B01F4                 call    edx
.text:201B01F6                 add     esp, 10h
.text:201B01F9                 push    offset sub_201ADF40
.text:201B01FE                 lea     eax, [ebp+64h+Parameter]
.text:201B0204                 push    eax
.text:201B0205                 mov     ecx, offset aSetinitialpoin ; "SetInitialPoints"
.text:201B020A                 call    sub_201085D0
.text:201B020F                 mov     byte ptr [ebp+64h+var_68], 3
.text:201B0213                 mov     [ebp+64h+arg_C], ebx
.text:201B0216                 lea     ecx, [ebp+64h+arg_C]
.text:201B0219                 push    ecx
.text:201B021A                 lea     edi, [ebp+64h+Parameter]
.text:201B0220                 call    sub_20108790
.text:201B0225                 push    2               ; nPriority
.text:201B0227                 mov     edx, [ebp+64h+hThread]
.text:201B022D                 push    edx             ; hThread
.text:201B022E                 call    ds:SetThreadPriority
.text:201B0234                 mov     ecx, edi        ; lpParameter
.text:201B0236                 call    sub_200D52A0
.text:201B023B                 mov     edi, ds:Sleep
.text:201B0241
.text:201B0241 loc_201B0241:                           ; CODE XREF: FWorldBuilder::buildWorldStructure(ULevel *,wchar_t *,UViewport *,int,int)+774j
.text:201B0241                 lea     ecx, [ebp+64h+Parameter]
.text:201B0247                 call    sub_200D5490
.text:201B024C                 test    eax, eax
.text:201B024E                 jz      short loc_201B0276
.text:201B0250                 mov     eax, ds:?GWarn@@3PAVFFeedbackContext@@A ; FFeedbackContext * GWarn
.text:201B0255                 mov     eax, [eax]
.text:201B0257                 mov     ecx, [eax]
.text:201B0259                 push    offset aSettingInitial ; "Setting Initial Points"
.text:201B025E                 push    800h
.text:201B0263                 mov     edx, [ebx+24h]
.text:201B0266                 push    edx
.text:201B0267                 push    eax
.text:201B0268                 mov     eax, [ecx+18h]
.text:201B026B                 call    eax
.text:201B026D                 add     esp, 10h
.text:201B0270                 push    2               ; dwMilliseconds
.text:201B0272                 call    edi ; Sleep
.text:201B0274                 jmp     short loc_201B0241
.text:201B0276 ; ---------------------------------------------------------------------------
Ни критов не ошибок ничего не происходит, просто жрет 50% процессорного времени, ждал довольно долго думал мб оживет, но нифига.

Что самое примечательное, если переход не менять, а оставить так как есть то по умолчанию выставляется Num of InitPoints = 1 и билдит сносно, но не так как должно.
Если подумать, то InitPoints это точки с которых будет начинаться билд мапы. Вот откуда билдер берет эти точки, автоматом ли или в ручную нужно ставить?

Есть идеи какие нить?
__________________
darkevil вне форума Отправить сообщение для darkevil с помощью ICQ Отправить сообщение для darkevil с помощью Skype™