#1 09-05-2017 23:44

Chel555
Registered: 25-07-2015
Posts: 38

Увеличение лимита обновления TXD файла

Здравствуйте возникла новая проблема с игрой, дело в тотом, что я написал хороший проект точнее скрипт на CLEO и в нем требуется каждый раз обновлять TXD файл, для выгрузки старых текстур и загрузки новых и я заметил новую проблему, если так делать за 1 сеанс запущенной игры (независимо сколько сохранений загружал) допустим обновить TXD файл более 150 раз, то игра просто напросто перестает работать вообще с TXD  и возникает баг, что уже текстуры на экране становятся белыми в паузе игры и тд и я понял что игра просто была перегружена этими обновлениями, что сама уже сломалась и не может больше работать с TXD да и с INI файлами больше, придется перезапускать саму игру.

Я сделал на своем канале видео по демонстрации этого бага, используя мой клео скрипт: https://youtu.be/hXOMA4YnZJI

Можно ли как то исправить это и увеличить лимит обновления TXD файла?

Last edited by Chel555 (09-05-2017 23:46)

Offline

#2 11-05-2017 19:31

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Увеличение лимита обновления TXD файла

Попробуй написать скрипт, в котором идёт загрузка и выгрузка txd. Проверь, повторится ли там эта проблема.


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#3 13-05-2017 06:04

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

Re: Увеличение лимита обновления TXD файла

Тоже протестировал https://pastebin.com/4nSPURfa
За пределами 2500ой перезагрузки txd игра начинает тормозить и начинают пропадать текстуры, звуки...
А в дампе памяти sa так же обнаружил копии хексованогго кода txdшки.
Странно, поидеи текстуры должны же выгружаться опкодом 0391: release_txd_dictionary ?

Offline

#4 14-05-2017 10:42

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Увеличение лимита обновления TXD файла

Должны, но не выгружаются.

{$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

#5 14-05-2017 19:24

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

Re: Увеличение лимита обновления TXD файла

DK22Pac wrote:

Должны, но не выгружаются.

{$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

#6 14-05-2017 19:40

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

Re: Увеличение лимита обновления TXD файла

Все. Разобрался.

Offline

#7 23-05-2017 15:36

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

Re: Увеличение лимита обновления TXD файла

Проблема связана с 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

#8 23-05-2017 21:13

Seemann
Registered: 07-08-2006
Posts: 2,120

Re: Увеличение лимита обновления TXD файла

Спасибо за находку, попробуем разобраться

Offline

#9 24-05-2017 02:05

Chel555
Registered: 25-07-2015
Posts: 38

Re: Увеличение лимита обновления TXD файла

DK22Pac wrote:

Проблема связана с 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! smile

Вот ссылка на видео, где я уже убедился что работает https://youtu.be/raU8QPJcyDw

Last edited by Chel555 (24-05-2017 02:19)

Offline

#10 25-05-2017 11:30

Chel555
Registered: 25-07-2015
Posts: 38

Re: Увеличение лимита обновления TXD файла

Новая проблема появилась, как я говорил в самом первом посте этой темы, что когда TXD ломается, то и ломаются также INI файлы, то есть игра больше не может считывать значения ключей в секциях INI файла. Проблема также осталась и после фикса TXD.

Offline

Board footer

Powered by FluxBB