(25.02.2018 21:19)igrik Wrote: [ -> ]Покажи ошибки, или весь скрипт выложи.
Например взял скрипт 53 wog, вставил в середине
!?(OnGameEnter);
!!VRv9701:S1;
Вылет:
!!HEx16:M3/?y10; [y10=1 if Hero has View Earth]
!!HEx16&y10=1/x11=1:M3/0 M42/1; [Give Hero Curse instead if banned]
Стираешь - вылет в другом месте
(25.02.2018 21:37)igrik Wrote: [ -> ] (25.02.2018 21:33)totkotoriy Wrote: [ -> ]!?(OnGameEnter);
!!VRv9701:S1;

Надо:
!?FU(OnGameEnter);
!!VRv9701:S1;
Ну ёмоё ))) Спасибо!
А почему у вас в коде без FU?
Ндааа.... теперь если после загрузки быстро нажать на кнопки справа от карты приключений виснет наглухо без ошибок ЕРМ :\ офигеть исправил
Сделаю, наверное, опять через !?HM-1 и не буду париться
Ну вот объясни мне - чем тебе указанный код выше не нравится?
У меня ни разу не вылетал он
(26.02.2018 00:36)igrik Wrote: [ -> ]Ну вот объясни мне - чем тебе указанный код выше не нравится?
У меня ни разу не вылетал он
Если честно ещё не успел разобраться... сейчас попробую
у меня сейчас пишет что нет indy0.def и потом indy4.def... про indy4 понял, а про 0 нет
Короче зависает код, который ответственен за изменение индикатора при загрузке игры, пока не пойму почему.
Усё... сделал

Спасибо огромное, Igrik!
Я тут давно этим не занимался, да и не стильно то и раньше понимал.
У меня почему то зависает с этим кодом
Code:
!?FU(OnGameEnter); А это можно добавить для "при загрузке сохранения"
!!UN:P233/?y1; !!FU&y1=0:E;
!!SN:L^Era.dll^/?y2 Ay2/^GetButtonID^/?y3;
!!OW:C?y1; !!VRy2:S3393 +y1; !!VRy1:Svy2;
!!FU830000:Py1/y3;
Я сделал так:
Code:
!?CM5&v2027=0/999;
!!UN:P233/?y1; !!FU&y1=0:E;
!!CM:S?y1; !!FU&y1<>13:E;
!!CM:I?y1;
!!SN:L^Era.dll^/?y2 Ay2/^GetButtonID^/?y3;
!!SN:Ey3/0/^manualf^; !!FU830000&y1=v1:P1/y3;
!!SN:Ey3/0/^automf^; !!FU830000&y1=v1:P2/y3;
!!SN:Ey3/0/^autowm^; !!FU830000&y1=v1:P3/y3;
!?FU(OnGameEnter);
!!UN:P233/?y1; !!FU&y1=0:E;
!!SN:L^Era.dll^/?y2 Ay2/^GetButtonID^/?y3;
!!OW:C?y1; !!VRy2:S3393 +y1; !!VRy1:Svy2;
!!FU830000&y1=1:P1/y3;
!!FU830000&y1=2:P2/y3;
!!FU830000&y1=4:P3/y3;
!?FU830000;
!!VRz1:S^indy%X1.def^;
!!OW:C?y1; !!VRy2:S3393 +y1; !!VRvy2:Sx1;
!!UN:C6918840/4/?y7;
!!VRy8:Sy7 +68; !!UN:Cy8/4/?y9;
!!SN:Ex2/0/^indicator^; !!VRy10:Sv1;
!!SN:E6288384/2/y9/512/9/y10/z1;
!!SN:E6288384/2/y9/512/2/y10/0;
!!SN:E6288528/2/y9/6/16384;
!!SN:E6288816/2/y9/6;
!!UN:R1;
Значит какая-то принципиальная разница есть между твоим кодом и тем, который я использовал:
Code:
!?FU27116;
!!UN:C10916496/4/?y1;
!!if&y1>0:;
!!SN:E6288384/2/y1/512/9/416/z1;
!!SN:E6288384/2/y1/512/2/416/0;
!!SN:E6288528/2/y1/6/16384;
!!SN:E6288816/2/y1/6;
!!en:;
А вот в чем я не знаю, надо разбираться конкретно, скорее всего эта команда влияла !!UN:C10916496/4/?y1;
Хорошо, я попробую сделать эту фичу немного по другому. По результату отпишусь.
(26.02.2018 01:33)igrik Wrote: [ -> ]Хорошо, я попробую сделать эту фичу немного по другому. По результату отпишусь.
Ай подожди... я там уже дописал ответ

Конечно разница есть - команда !!UN:C10916496/4/?y1; обращается по динамическому адресу.
А нужен указатель (который лежит в статическом адресе) на этот динамический.
(26.02.2018 01:55)igrik Wrote: [ -> ]Конечно разница есть - команда !!UN:C10916496/4/?y1; обращается по динамическому адресу.
А нужен указатель (который лежит в статическом адресе) на этот динамический.
Ну я ж ничё в этом не понимаю ))) Как в справке было, так и бездумно использовал... ещё раз спасибо!
Господа, кто нибудь знает как корректно убить стэк в битве?
Выяснил, что именно из-за команды !!BMv7207&v7207>-1/y-2<v7211:K100000; в скрипте оруженосца происходят все глюки, например оруженосец после смерти может ответить на удар (я думал это специально в скрипте так сделали, оказывается нет

) или бегать как курица без головы в 2-х экземплярах без окошка количества и т.д. Или может надо его в другое время убивать как то (сейчас это происходит в триггере BG1)?
Вроде поле боя надо обновить. BF:C.
Да, глюки именно из-за необновления поля боя (BU:R)
(03.03.2018 16:55)Algor Wrote: [ -> ]Да, глюки именно из-за необновления поля боя (BU:R)
Команда !!BU:R; там уже была, не помогает...
Значит передай флаг, что отряд совершил дейстие.
А если не поможет, то выполни весь комплекс процедур:
(dword) ActiveStack->StepsTaken= [структура стека] + 0x490h;
Это: "+1168 0x490 dd номер атакера по порядку??? уже атаковал??? (сбрасывается после первого удара)"
(как получить структуру стека см.
UN:C)