Перейти к содержимому


Фотография

(sfall) дополнения


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 1246

#1041 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 04 ноября 2017 - 23:55

QUOTE (Fakeman)
Это происходит когда загружаешь сохранение, при старте новой игры такого нет — вот такая фигня.
Недавнее тайное исправление исправления (kek) предотвращения слёта при повторном экспорте экспортируемой процедуры (было невозможно из-за особенности реализации в движке — не чистилась таблица экспортируемых процедур). На самом деле его исправлять не надо — оно является защитой от повторного экспорта процедуры с таким же именем, но в разных скриптах. Спасибо, сейчас классно переписал ;)

QUOTE
И это можешь поменять DebugMode=3 на 1  — а то я уже забадался постоянно менять цифру когда перекидываю сфалы.
CODE
if (tmp == 2) SafeWrite32(0x004C6D9C, (DWORD)debugLog); else SafeWrite32(0x004C6D9C, (DWORD)debugGnw);
Так проще и не требует смены цифры, только на гитхабе нужно написать :-p

QUOTE (Fakeman)
Или доп переменную введи DebugSaveLog=1
Тут думаю убрать бесполезную муть вроде RemoveWindowRounding, а ты мне новую предлагаешь добавить :-p

QUOTE (Fakeman)
Так-то
Как скажешь ;)


#1042 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 05 ноября 2017 - 01:14

QUOTE
RemoveWindowRounding

Эээ я в окне тестю, а меня бесит этот заголовок)))


#1043 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 05 ноября 2017 - 01:29

QUOTE (Fakeman)
Эээ я в окне тестю, а меня бесит этот заголовок)))
Какой заголовок?


#1044 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 06 ноября 2017 - 03:18

QUOTE
Какой заголовок?

Тот что сверху)) я к тому что не трож полезные функции :P и так уже вырезал мой любимый редактор.


#1045 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 06 ноября 2017 - 21:43

QUOTE (Fakeman)
Тот что сверху)) я к тому что не трож полезные функции :P и так уже вырезал мой любимый редактор.
Так эта переменная к заголовку отношения не имеет — она убивает сохранение флагов (которые указывают что это окно создано скриптово и наследует свойства главного окна) уже после создания окна (с этими флагами) скриптовой CreateWin.
Перевод описания "Remove window position rounding"/"Убрать округление позиции окна" (да и само название переменной) как бы слегка проясняет ситуацию, но в этом случае реализация (убивание флагов) не имеет никакого отношения к описанию. В общем я не могу чётко сформулировать что именно она делает, а внятное описание/обсуждение на NMA найти не удалось.


#1046 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 10 ноября 2017 - 16:45

QUOTE
Cоздав окно с помощью функции CreateWin, созданное окно заливается черным цветом, т.е. окно не может быть прозрачным.

Есть ли возможность переделать чтобы по умолчанию фон устанавливался как прозрачный, т.е. без заливки окна?


#1047 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 10 ноября 2017 - 20:19

QUOTE (Fakeman)
Есть ли возможность переделать чтобы по умолчанию фон устанавливался как прозрачный, т.е. без заливки окна?
Нет.


#1048 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 11 ноября 2017 - 01:06

А если хорошо подумать) Брать картинку под окном и заливать. :P


#1049 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 12 ноября 2017 - 04:40

Обнаружил не критичный баг обработчика map_exit_p_proc для скрипта привязанного на DUDE, срабатывает только 1 раз при выходе с карты, т.е. последующие выходы в текущей сессии игры не вызывают данный обработчик.
Если исправишь сообщи детали, чтобы и в оригинале пофиксить.

Это сообщение отредактировано Fakeman - 12 ноября 2017 | 04:44


#1050 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 12 ноября 2017 - 08:21

QUOTE (Fakeman)
А если хорошо подумать) Брать картинку под окном и заливать. :P
Если скриптово — поседеешь :-p

QUOTE (Fakeman)
Обнаружил не критичный баг обработчика map_exit_p_proc для скрипта привязанного на DUDE, срабатывает только 1 раз при выходе с карты, т.е. последующие выходы в текущей сессии игры не вызывают данный обработчик.
У меня нормально всё — смотри debug.log, может у тебя что-то убивает:
CODE
procedure map_exit_p_proc begin
 variable map_exit_test := 0;
 if get_sfall_global_int("OBJ_DUDE") != 3 then set_sfall_global("OBJ_DUDE", get_sfall_global_int("OBJ_DUDE")+1); else map_exit_test := get_sfall_global_int("OBJ_DUDE")/map_exit_test;
 display_msg("map_exit_p_proc, "+get_sfall_global_int("OBJ_DUDE"));
end
QUOTE
map_exit_p_proc, 1 // <-- из пещер
map_exit_p_proc, 2 // <-- из Кламата
map_exit_p_proc, 3 // <-- из Кламата
Error during execution: Division (DIV) by zero // <-- 4
Current script: scripts\obj_dude.int, procedure map_exit_p_proc
Error during execution: Division (DIV) by zero // <-- 5
Current script: scripts\obj_dude.int, procedure map_exit_p_proc
и т.д.
Это выход из Ядовитых пещер и прогулка в Кламат, потом выход в мир и возврат в Кламат с повторениями.


#1051 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 12 ноября 2017 - 14:53

Ок, гляну в чем там у меня проблема. Помню что вроде как работало, а вчера тык-мык уже не работает.

Отправлено: 12 ноя 17 16:59
В общем это не у меня проблема, а в движке, я не знаю как ты там тесты проводишь, что у тебя ничего не получается с ними) — то мобы у тебя тоже почему то сами себя не бьют.
В общем рассказываю как надо правильно делать тесты, берешь чистый фол без всяких сфалов меняешь скрипт DUDEку, тупо можно без логики с процедурой map_exit_p_proc с простым display_msg("map_exit_p_proc");
Начинаешь новую игру и смотришь, что при заходе в храм, не срабатывает обработчик выхода из карты.
Далее новая игра сохраняемся-загружаемся, входим в храм обработчик срабатывает но только 1 раз пока не сделаем загрузку игры.

Это сообщение отредактировано Fakeman - 12 ноября 2017 | 17:08


#1052 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 13 ноября 2017 - 01:52

QUOTE (Fakeman)
Начинаешь новую игру и смотришь, что при заходе в храм, не срабатывает обработчик выхода из карты.
Далее новая игра сохраняемся-загружаемся, входим в храм обработчик срабатывает но только 1 раз пока не сделаем загрузку игры.
Да, это увидел сразу (для моего теста выход/возврат из/в пещер[ы]), но map_exit_p_proc всё равно будет срабатывать позже (в том же Кламате для моего теста, то есть не будет ситуации "последующие выходы в текущей сессии игры не вызывают данный обработчик.", а то я сначала решил что вообще перестанет срабатывать).
С некоторыми картами (или ситуациями) действительно фигня — убирается скрипт ГГ из списка скриптов персонажей до вызова map_exit_p_proc (для стартовой можно в acklint добавить сообщение и увидеть что для него срабатывает всегда при заходе в храм).
Смирись, kek ;)


#1053 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 13 ноября 2017 - 16:19

QUOTE
но map_exit_p_proc всё равно будет срабатывать позже (в том же Кламате для моего теста

А от чего это будет зависить, что позже сработает?
может эту особеность поведения можно где-нибудь применить.


#1054 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 16 ноября 2017 - 01:17

QUOTE (Fakeman)
А от чего это будет зависить, что позже сработает?
может эту особеность поведения можно где-нибудь применить.
Баг это, а не особенность :-p


#1055 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 16 ноября 2017 - 16:06

Еще такой вопрос меняю пид в движке для сенсора на ACTIVE_MOTION_SENSOR (208) а игра почему-то говорит что в руке не установлен сенсор, т.е. вообще перестает работать и для пида MOTION_SENSOR
Меняю так.
CODE
     
write_byte(0x41BBFC, PID_ACTIVE_MOTION_SENSOR);
write_byte(0x41BC12, PID_ACTIVE_MOTION_SENSOR);
write_byte(0x4794AF, PID_ACTIVE_MOTION_SENSOR);
write_byte(0x4C09BC, PID_ACTIVE_MOTION_SENSOR); //for worldmap

Там почему-то 1 байт отводится под пид и что-то у меня такое впечатление что число 208 он считает отрицательным, такое вообще бывает в ассеблере?
Или где-то еще есть и оно не указанно.

Это сообщение отредактировано Fakeman - 16 ноября 2017 | 16:07


#1056 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 16 ноября 2017 - 17:04

QUOTE (Fakeman)
Еще такой вопрос меняю пид в движке для сенсора на ACTIVE_MOTION_SENSOR (208) а игра почему-то говорит что в руке не установлен сенсор, т.е. вообще перестает работать и для пида MOTION_SENSOR
Так в руке у тебя всё так же остаётся сенсор с PID_MOTION_SENSOR. Движок не использует PID_ACTIVE_MOTION_SENSOR.
QUOTE (Fakeman)
Там почему-то 1 байт отводится под пид и что-то у меня такое впечатление что число 208 он считает отрицательным, такое вообще бывает в ассеблере?
Бывает, но не в этом случае — там нет знаковой проверки.
QUOTE (Fakeman)
Или где-то еще есть и оно не указанно.
Какая-то адская задумка... :-p


#1057 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 16 ноября 2017 - 17:12

CODE
Так в руке у тебя всё так же остаётся сенсор с PID_MOTION_SENSOR. Движок не использует PID_ACTIVE_MOTION_SENSOR.

У меня использует) а у тебя просто старый движок :P
Ложу в руку актив сенсор или меняю так
write_int(objectPtr + 0x64, PID_ACTIVE_MOTION_SENSOR);
QUOTE

Бывает, но не в этом случае — там нет знаковой проверки.

Думаю, он тут считает до 127, остальное отрицательными числами считает
вот смотри разница кода между счетчиком и сенсером.
CODE

cmp     eax, PID_ACTIVE_GEIGER_COUNTER
неx: 3D CF 00 00 00

CODE
cmp     eax, PID_MOTION_SENSOR
неx: 83 F8 3B

Чуешь разницу)

QUOTE
Какая-то адская задумка... :-p

надо актив_сенсор переместить на пид <128 число, и узнаем какая это задумка.


Это сообщение отредактировано Fakeman - 16 ноября 2017 | 17:35


#1058 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 16 ноября 2017 - 17:38

QUOTE (Fakeman)
Чуешь разницу)
2 байта :-p
Но [не]знаковость определяется следующей (как правило) командой (или командами) — jb != jl.


#1059 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 16 ноября 2017 - 19:20

Я тебе не тот код нарисовал, но суть не поменялась, один байт под пид, когда нужно 2 минимум.
Дальше там jz проверка — перехода нет, значит сравниваемые операнды не равны.
С пид меньше 128 все отлично.
Видимо компилятор не тот машинный код с генерировал для движка.
Узнай как работает этот машинный код, 3В — это пид.
CODE
83 78 64 3B

это все тот же cmp eax+iobj.pid, PID_ но у них разный машинный код.

Это сообщение отредактировано Fakeman - 17 ноября 2017 | 16:39


#1060 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 17 ноября 2017 - 00:00

QUOTE (Fakeman)
это все тот же cmp eax, PID_ но у них разный машинный код.
Без разницы:
QUOTE
Чаще всего используемая инструкция сравнения — это команда CMP. Она сравнивает операнды и изменяет регистр флагов.

Таблица 1.1. Регистр флагов
Номер бита | Название | Описание
0                  CF             Флаг переноса
6                  ZF            Флаг нулевого результата
7                  SF             Флаг знака результата
11                OF             Флаг переполнения

Таблица 1.5. Команды условных переходов
Команда | Условие | Условие
JB            X < Y        CF = 1
JL            X < Y        SF! = OF
JZ            X = Y        ZF = 1


Это сообщение отредактировано Crafty - 17 ноября 2017 | 01:26




Похожие темы Свернуть

  Название темы Форум Автор Статистика Последнее сообщение


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных

Рейтинг@Mail.ru