Четверг, 25.04.2024, 14:08
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с компонентами моделей
Работа с компонентами моделей
kenkingДата: Четверг, 03.11.2011, 10:43 | Сообщение # 61
Группа: Проверенные
Сообщений: 22
Статус: Offline
Quote (Den_spb)
Можно попробовать запиcать 0 в RwFrame + 4.

Так и сделал. Достаточно записать ноль в любой из четырёх байтов соответствующего адреса родителя компонента и компонент исчезает.
Quote (Den_spb)
Из-за чего пропадают компоненты? Из-за изменения родителя?

Точно из-за изменения родителя компонента. RwFrame+2 и RwFrame+3 здесь вообще не причём.

Вот соответственно исправленный код
Доступно только для пользователей


Сообщение отредактировал kenking - Четверг, 03.11.2011, 10:43
 
izerliДата: Понедельник, 14.11.2011, 17:21 | Сообщение # 62
Группа: Проверенные
Сообщений: 90
Статус: Offline
Снова вопрос.
http://78.24.218.65/forums/viewtopic.php?pid=15584#p15584
а способ проверки названия компонента, представленный в этом сообщении, работает с добавленными компонентами, или только со стандартными?
 
Den_spbДата: Понедельник, 14.11.2011, 18:41 | Сообщение # 63
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Со всеми.
Добавленный компонент ничем не отличается от стандартного - их структуры одинаковы.
 
izerliДата: Понедельник, 14.11.2011, 18:45 | Сообщение # 64
Группа: Проверенные
Сообщений: 90
Статус: Offline
Денис, я не совсем понимаю вот эту часть
Code
        
0087: 30@ = 31@ // (float)          
0A8D: 1@ = read_memory 31@ size 4 virtual_protect 0             
31@ += 4               
0A8D: 2@ = read_memory 31@ size 4 virtual_protect 0

я так понимаю, считывать надо в 2 переменных, потому что размер 1@s = 8 байт?
и вот еще,
Code

05AE: 1@s == 'chassis'

при проверке этого условия у меня вылет. если убрать, то все нормально.
 
Den_spbДата: Понедельник, 14.11.2011, 18:57 | Сообщение # 65
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (izerli)
я так понимаю, считывать надо в 2 переменных, потому что размер 1@s = 8 байт?
Да, именно так.

Quote (izerli)
при проверке этого условия у меня вылет. если убрать, то все нормально.
Какой опкод последний в логе?
 
izerliДата: Понедельник, 14.11.2011, 19:40 | Сообщение # 66
Группа: Проверенные
Сообщений: 90
Статус: Offline
Den_spb, подскажи, а где этот лог посмотреть?
 
Den_spbДата: Понедельник, 14.11.2011, 19:47 | Сообщение # 67
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Плагин ScmLog можно скачать с сайта cleo.sannybuilder.com или из архива данного сайта. Для установки плагина нужно поместить файлы scmlog.cleo и scmlog.ini в папку cleo.
Плагин будет создавать текстовый файл scmlog.log каждый раз после завершения игры. Если игра была завершена из-за ошибки при выполнении скриптов, то с помощью лога можно определить, при выполнении какого опкода произошёл вылет (он будет указан в логе последним).
П.С. Из-за 05AE: 1@s == 'chassis' вылетать не должно, т.к. здесь используются правильные типы данных.
 
izerliДата: Понедельник, 14.11.2011, 20:06 | Сообщение # 68
Группа: Проверенные
Сообщений: 90
Статус: Offline
спасибо, сейчас посмотрю.

Добавлено (14.11.2011, 20:06)
---------------------------------------------
так, понял почему вылетало, но почему то условие не выполняется.. могло ли это быть вызвано тем, что я использую не переменные 1@ и 2@, а 15@ и 16@? соответственно код использую следующий:

Code

         12@ +=172
         0A8D: 15@ = read_memory 12@ size 4 virtual_protect 0
         12@ += 4
         0A8D: 16@ = read_memory 12@ size 4 virtual_protect 0
         12@ -= 176
         if 05AE: 15@s == 'speedo_ok'
           then
              ...
           end
 
Den_spbДата: Понедельник, 14.11.2011, 20:17 | Сообщение # 69
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
В строках на каждый символ отводится один байт. Поэтому для короткой (8-байтовой) строки надо проверять 8 символов:
Code
05AE: 15@s == 'speedo_o'
 
izerliДата: Понедельник, 14.11.2011, 20:33 | Сообщение # 70
Группа: Проверенные
Сообщений: 90
Статус: Offline
к сожалению, не помогло.

Добавлено (14.11.2011, 20:29)
---------------------------------------------
быть может попробовать дать в занозе более короткие названия компонентам?

Добавлено (14.11.2011, 20:33)
---------------------------------------------
верно мыслишь. щас попробую.

 
Den_spbДата: Понедельник, 14.11.2011, 20:35 | Сообщение # 71
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Я бы вывел строку на экран, чтобы узнать её значение:
0ACD: show_text_highpriority 15@s time 10000

UPD:
Проверь, чтобы в настройках SB регистр букв был выставлен "Как есть" (Настройки - Форматирование - Регистр букв)


Сообщение отредактировал Den_spb - Понедельник, 14.11.2011, 20:36
 
izerliДата: Понедельник, 14.11.2011, 20:48 | Сообщение # 72
Группа: Проверенные
Сообщений: 90
Статус: Offline
на экран выводит "speedo o", без "_". попробовал в проверку забить так же, результата 0.
 
Den_spbДата: Понедельник, 14.11.2011, 20:49 | Сообщение # 73
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
А настройки регистра проверил?
 
izerliДата: Понедельник, 14.11.2011, 20:50 | Сообщение # 74
Группа: Проверенные
Сообщений: 90
Статус: Offline
да, конечно.
 
Den_spbДата: Понедельник, 14.11.2011, 20:56 | Сообщение # 75
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Попробуй убрать "_" из названия компонента в модели.
 
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с компонентами моделей
Поиск: