AuAu, у меня оказвается тоже дёргается. Будет время - посмотрю как сделать чтобы не прерывался фейспалм. Сейчас не могу глянуть детальнее.
Igor, сложно будет объяснить, если ты не знаком с простыми (основными, стандартными) типами данных.
В первом случае используется ссылка на массив переменных double (размер 8 байт). В твоём случае ссылка подменена на другую переменную double (кстати которая даст прирост за одну клетку на 480%, не знаю откуда взялся разговор про 75%). Поэтому и вылетов нет. Для работы программы всё корректно. Тут адрес ссылки на значение весит 4 байта, а само значение весит 8 байт. Ты патчишь адрес ссылки.
Во втором случае по адресу 6548092 (dec) ты правишь само значение, а не адрес ссылки на значение. Патчишь ты как раз 4 байта. И для данного кода программы используется тип переменной float, которое тоже имеет размер 4 байта. Еще раз, ты патчишь именно содержимое переменной, а не ссылку на другую переменную! Это важное отличие от первого способа. Именно поэтому, если поменять способы местами появляются вылеты.
Теперь коротко:
В первом случае при изменении способа ты пихаешь неизвестный для программы адрес, и программа пытается залезть туда, куда ей лезсть вообще не положено. Получается закономерный вылет.
Во втором случае сама формула начинает просто считать коряво. Как именно коряво она считает я не знаю. Нужно исследовать, но я не вижу в этом смысла.
game bug fixes extended.dll || My Plugins || My GitHub
|