You are not logged in.
Здравствуйте возникла новая проблема с игрой, дело в тотом, что я написал хороший проект точнее скрипт на CLEO и в нем требуется каждый раз обновлять TXD файл, для выгрузки старых текстур и загрузки новых и я заметил новую проблему, если так делать за 1 сеанс запущенной игры (независимо сколько сохранений загружал) допустим обновить TXD файл более 150 раз, то игра просто напросто перестает работать вообще с TXD и возникает баг, что уже текстуры на экране становятся белыми в паузе игры и тд и я понял что игра просто была перегружена этими обновлениями, что сама уже сломалась и не может больше работать с TXD да и с INI файлами больше, придется перезапускать саму игру.
Я сделал на своем канале видео по демонстрации этого бага, используя мой клео скрипт: https://youtu.be/hXOMA4YnZJI
Можно ли как то исправить это и увеличить лимит обновления TXD файла?
Last edited by Chel555 (09-05-2017 23:46)
Offline
Попробуй написать скрипт, в котором идёт загрузка и выгрузка txd. Проверь, повторится ли там эта проблема.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Тоже протестировал https://pastebin.com/4nSPURfa
За пределами 2500ой перезагрузки txd игра начинает тормозить и начинают пропадать текстуры, звуки...
А в дампе памяти sa так же обнаружил копии хексованогго кода txdшки.
Странно, поидеи текстуры должны же выгружаться опкодом 0391: release_txd_dictionary ?
Offline
Должны, но не выгружаются.
{$CLEO .cs} 0000: while 8AB0: is_key_pressed 9 wait 0 end while true 0390: load_texture_dictionary 'LD_CARD' 038F: load_sprite 1 from "cd1s" 03F0: use_text_commands 1 038D: draw_sprite 1 position 590.0 390.0 size 50.0 50.0 colour 255 255 255 255 wait 0 0@ += 1 03F0: use_text_commands 0 0AA5: call_function 0x82D4C0 num_params 3 pop 3 8 0 1@v 0AA5: call_function 0x801E90 num_params 3 pop 3 1@v 0x804B60 0xC97B28 0AA5: call_function 0x801E90 num_params 3 pop 3 2@v 0x804B60 0xC97B54 0A8D: read_memory 0xC8800C size 4 vp 0 store_to 5@ 0A8E: 3@ = 5@ + 0x8 0A8D: read_memory 3@ size 4 vp 0 store_to 3@ 0AA8: call_method_return 0x54F6B0 struct 5@ num_params 0 pop 0 store_to 4@ 0AD1: print_formatted_now "Times Loaded: %u~n~Engine Txds: %u Engine Textures: %u~n~Txd Pool capacity: %u Txd Pool size: %u" time 150 0@ 1@ 2@ 3@ 4@ 0391: remove_texture_dictionary end
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Должны, но не выгружаются.
{$CLEO .cs} 0000: while 8AB0: is_key_pressed 9 wait 0 end while true 0390: load_texture_dictionary 'LD_CARD' 038F: load_sprite 1 from "cd1s" 03F0: use_text_commands 1 038D: draw_sprite 1 position 590.0 390.0 size 50.0 50.0 colour 255 255 255 255 wait 0 0@ += 1 03F0: use_text_commands 0 0AA5: call_function 0x82D4C0 num_params 3 pop 3 8 0 1@v 0AA5: call_function 0x801E90 num_params 3 pop 3 1@v 0x804B60 0xC97B28 0AA5: call_function 0x801E90 num_params 3 pop 3 2@v 0x804B60 0xC97B54 0A8D: read_memory 0xC8800C size 4 vp 0 store_to 5@ 0A8E: 3@ = 5@ + 0x8 0A8D: read_memory 3@ size 4 vp 0 store_to 3@ 0AA8: call_method_return 0x54F6B0 struct 5@ num_params 0 pop 0 store_to 4@ 0AD1: print_formatted_now "Times Loaded: %u~n~Engine Txds: %u Engine Textures: %u~n~Txd Pool capacity: %u Txd Pool size: %u" time 150 0@ 1@ 2@ 3@ 4@ 0391: remove_texture_dictionary end
краш =/
Offline
Все. Разобрался.
Offline
Проблема связана с CLEO. CLEO убирает выгрузку текстур опкодом 0391.
https://github.com/cleolibrary/CLEO4/bl … e.cpp#L653
Поэтому нужно дополнительно вызвать функцию выгрузки txd:
{$CLEO .cs} 0000: while 8AB0: is_key_pressed 9 0001: wait 0 end while true 0390: load_texture_dictionary 'LD_CARD' 0391: remove_texture_dictionary 038F: load_sprite 1 from "cd1s" 03F0: use_text_commands 1 038D: draw_sprite 1 position 590.0 390.0 size 50.0 50.0 colour 255 255 255 255 0001: wait 0 0@ += 1 03F0: use_text_commands 0 0AA5: call_function 0x82D4C0 num_params 3 pop 3 8 0 1@v 0AA5: call_function 0x801E90 num_params 3 pop 3 1@v 0x804B60 0xC97B28 0AA5: call_function 0x801E90 num_params 3 pop 3 2@v 0x804B60 0xC97B54 0391: remove_texture_dictionary 0AA7: call_function_return 0x731850 num_params 1 pop 1 "script" 3@ if 3@ <> -1 then 0AA5: call_function 0x731E90 num_params 1 pop 1 3@ end 0AD1: print_formatted_now "Times Loaded: %u~n~Engine Txds: %u Engine Textures: %u" time 150 0@ 1@ 2@ end
Компилировать надо в режиме GTA SA SCR.
Last edited by DK22Pac (23-05-2017 15:38)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Спасибо за находку, попробуем разобраться
Offline
Проблема связана с CLEO. CLEO убирает выгрузку текстур опкодом 0391.
https://github.com/cleolibrary/CLEO4/bl … e.cpp#L653Поэтому нужно дополнительно вызвать функцию выгрузки txd:
{$CLEO .cs} 0000: while 8AB0: is_key_pressed 9 0001: wait 0 end while true 0390: load_texture_dictionary 'LD_CARD' 0391: remove_texture_dictionary 038F: load_sprite 1 from "cd1s" 03F0: use_text_commands 1 038D: draw_sprite 1 position 590.0 390.0 size 50.0 50.0 colour 255 255 255 255 0001: wait 0 0@ += 1 03F0: use_text_commands 0 0AA5: call_function 0x82D4C0 num_params 3 pop 3 8 0 1@v 0AA5: call_function 0x801E90 num_params 3 pop 3 1@v 0x804B60 0xC97B28 0AA5: call_function 0x801E90 num_params 3 pop 3 2@v 0x804B60 0xC97B54 0391: remove_texture_dictionary 0AA7: call_function_return 0x731850 num_params 1 pop 1 "script" 3@ if 3@ <> -1 then 0AA5: call_function 0x731E90 num_params 1 pop 1 3@ end 0AD1: print_formatted_now "Times Loaded: %u~n~Engine Txds: %u Engine Textures: %u" time 150 0@ 1@ 2@ endКомпилировать надо в режиме GTA SA SCR.
Огромное спасибо вам, у меня теперь не портятся те TXD архивы от моих скриптов, просто идет цикличная выгрузка функциями и методами TXD, протестил у меня уже больше 150 перегрузок TXD и текстуры белыми больше не становятся и все работает как надо! Большое вам спасибо! Я вас впишу в благодарности в Readme!
Вот ссылка на видео, где я уже убедился что работает https://youtu.be/raU8QPJcyDw
Last edited by Chel555 (24-05-2017 02:19)
Offline
Новая проблема появилась, как я говорил в самом первом посте этой темы, что когда TXD ломается, то и ломаются также INI файлы, то есть игра больше не может считывать значения ключей в секциях INI файла. Проблема также осталась и после фикса TXD.
Offline