You are not logged in.
А что ж так-то? Это не есть хорошо... Просьба это дело исправить.
Кто-то на gtaforums.com вроде тестил клео с v140_xp, но все равно не заработало. Я лично не проверял и не хочу этим заниматься. Если есть visual studio, можешь сам попытаться.
На XP работать не будет, так как скомпилировано все без поддержки XP. Возможно если перекомпилировать с _xp то заработает, но я не проверял.
Баг проявляется только в 11 утра и только при погоде SUNNY, на чистой сборке вайса с единственным установленным плагином - VC.CLEO.asi, даже при отсутствии папки CLEO.
Спасибо, вчера выкладывал новую версию, но этого сообщения не видел. Оказывается там надо было еще один адресок пропатчить. Перезалил исправленную v2.0.0.3 на сайт.
Также выложил свои старые скрипты в пределанном виде сюда - http://13.sannybuilder.com/cleo-scripts
Sergey81, есть пара проблем с твоим новым Widescreenfix(последним, скачанным с твоего сайта, который с прозрачным фоном меню) для вайса:
Для мышки надо скачать SilentPatch, а FOV действительно перестал работать, сейчас перезалью исправленную версию.
Те опкоды я исправил, а в новой версии для вайса ничего нового, кроме того, что надпись '0 scripts' не показывается.
База для gta3 лежит на паблике, но структур там практически нет.
Здорово, а то я всё раздумывал делать или не делать. Я бы всё-таки предложил загружать bass.dll автоматически, без использования опкода, а саму dll встроить в плагин и загружать например через MemoryModule(смысла её отдельно держать в папке с игрой в принципе нет, как по мне). Ну и сохранить нумерацию опкодов из клео 4, а уже какие-то свои изменения/дополнения делать с новыми номерами.
Почему бы не использовать fastloader и загружать игру за 3 секунды вместо полутора минут? И никаких мерцаний не будет заодно.
1)После выделения памяти в "scr1.cs" можно ли ниже использовать этот скрипт для другого кода
Почему бы и нет?
2)будет ли наконец реализована работа со звуком(проигрывание mp3 и воспроизведение всех звуков из sfx.raw, а не каких-то отдельных, как это реализовано в опкодах 018С и 018D)?
Пока не уверен, аудио из клео 4 может и будет потом, стандартные звуки - не знаю.
Я нашел chm файл в старой версии клео 4(4.1.1.30) - http://cleo.li/download.html
Можно открыть установщик через 7zip и просто вытащить его оттуда.
В новой версии его вроде не вкладывают, но точно не знаю.
0AC8 выделяет блок памяти указанного размера. Полученный буфер может использоваться как угодно, например, для хранения строк.
0AB1. Данный опкод вызывает код из текущего скрипта (по аналогии с gosub), передает в него параметры и получает результат. Передаваемые параметры последовательно (то есть в прямом порядке) копируются в область локальных переменных скрипта, остальные локальные перменные обнуляются. Затем поток переходит на указанную метку, выполняет код по данной метке и возвращается после опкода 0AB2.
Почитай справку к опкодам и scm функциям.
0AB1: call_scm_func @__VarToOffset 1 varnumber 0 result 0@ // получили указатель на переменную 0@ в scr1 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 // прочитали её значение, это значение - указатель на блок памяти из опкода 0AC8. //0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 // здесь либо читаем значение, расположенное в начале этого блока (со смещением 0) //либо делаем по другому 0A8E: 1@ = 0@ += 0x0 // int 0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0 // 1 0A8E: 1@ = 0@ += 0x4 // int 0A8D: 3@ = read_memory 1@ size 4 virtual_protect 0 // 2 0A8E: 1@ = 0@ += 0x8 // int 0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0 // 3 03F0: enable_text_draw 1 0609: show_formatted_text_position 50.0 50.0 text "%d %d %d" 2@ 3@ 4@
Sergey81 wrote:в чем проблема сделать через переменную? К примеру как-нибудь так:
Хорошо, а как в этом коде сделать 2 переменных? Или придется для каждой переменной создавать новый скрипт?
0AC8: 0@ = allocate_memory_size 260 0A8C: write_memory 0@ size 4 value 123 virtual_protect 0 //1 0A8E: 1@ = 0@ += 0x4 // int 0A8C: write_memory 1@ size 4 value 345 virtual_protect 0 //2 0A8E: 1@ = 0@ += 0x8 // int 0A8C: write_memory 1@ size 4 value 567 virtual_protect 0 //3 ....
Чтение аналогично.
Вот мне и хотелось бы узнать парочку адресов из неиспользуемой памяти.
Я вижу, всё же придется пойти сложным способом, но проблема в том, что я не понимаю, как это сделать(я нуб в работе с памятью). Мне нужно 5 адресов для записи integer значений, может кто-то помочь с реализацией этого?
Открой базу или экзешник в IDA, найди к примеру строчку "align 10h" в любом месте, вот здесь и будет нужный тебе адрес. Но все равно я не пойму в чем проблема сделать через переменную? К примеру как-нибудь так:
{$CLEO} //scr1.cs 0000: 0AC8: 0@ = allocate_memory_size 260 0A8C: write_memory 0@ size 4 value 123 virtual_protect 0 while true wait 0 /// end {$CLEO} //scr2.cs 0000: while true wait 0 0AB1: call_scm_func @__VarToOffset 1 varnumber 0 result 0@ 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 03F0: enable_text_draw 1 0609: show_formatted_text_position 50.0 50.0 text "%d" 0@ end :__VarToOffset { 0AB1: call_scm_func @__VarToOffset 1 varnumber 6 result 0@ } 0AAA: 13@ = thread 'scr1.cs' pointer if 13@ <> 0 then 13@ += 0x30 0@ *= 4 005A: 13@ += 0@ // address of the local variable 0AB2: ret 1 13@ else 0AB2: ret 1 0 end
@Shag, можно попробовать запись значения переменной одного скрипта в ini файл и чтение этого значения другим скриптом, вот только, как это сопоставится с очерёдностью выполнения скриптов.
Я бы не рекомендовал так делать.
А, кстати, вот и вопрос: в каком порядке загружаются и выполняются скрипты при, допустим, одном wait 0 в каждом скрипте?
Ну загружаются они по алфавиту, можно в логе посмотреть, выполняются наверно в том же порядке.
Сегодня обновил обе версии клео, добавлен опкод 0673 отсюда - http://www.gtagarage.com/mods/show.php?id=2508
Исправленный плагин(убрана реализация опкода) с исходником можно скачать тут - https://www.sendspace.com/file/rerz5r
Не вижу смысла в этих опкодах, поэтому их и не добавлял. Как вариант можно выделить память(через hex...end) или опкод в одном скрипте, адрес этого буфера записать куда-нибудь(в неиспользуемую память или же получать как выше было отмечено через переменную), а потом этот адрес использовать из любого скрипта.
Некоторые опкоды в CLEO 2.0 дублируют CLEO 1.1. Ты писал, что, помимо новых, старые опкоды CLEO 1.1 тоже работают. Для чего тогда дублирование? Или есть отличия?
Отличий нет, я только хотел чтобы во всех трех играх были одинаковые номера опкодов. Иначе не удобно, когда пишешь скрипт сразу под 3 игры, перебивать номера опкодов.
А новые опкоды только для exe 1.0 или 1.1 тоже поддерживается?
Ну да, опкоды доступны для всех версий, Но в скриптах надо не забывать менять какие-то конкретные адреса если есть желание поддерживать несколько версий.
В опкоде game_version возвращаемое значение не поменялось, для стим версии будет 2.
Выложил версию 2.0 на гитхаб.
https://github.com/ThirteenAG/III.VC.CLEO/releases
Опкоды, файлы для SB, сдк и тестовый скрипт можно найти там же на гитхабе или здесь: http://gtaforums.com/topic/807185-iiivcrel-cleo-20/
Отличий от прошлой беты немного, мелкие правки и добавлен опкод получения значения брони в гта3.
Собственно, выкладываю обновленные версии:
III.CLEObeta.zip
VC.CLEObeta.zip
opcodes.zip
В opcodes.zip просто взяты все опкоды клео 4, плюс добавлены новые(0601-0609), я там немного поменял кое что. Это я в ближайшее время исправлю, чтобы не было путаницы. Новых опкодов из клео4 по сравнению с предыдущей версией не добавилось, за исключением тех, что идут в плагинах. Опкоды из плагинов я тоже сделал через плагины. Также нашел в исходниках опкоды 0B17-0B1D, которых раньше ни в одном ini не видел. Добавил их тоже.
Ну если без клео работает все, тогда дело точно в клео, правда я не понимаю в чем тут дело, да и логи какие-то странные.
Да и другие тоже, скорее всего функций нужных нету.
А может причина в другом моде/плагине? Думаю если дело в клео, то я бы смог воспроизвести.
Судя по дампу, вылетает на 0x66A702, но как это связано с клео я не очень понимаю. Воспроизводится ли вылет без скриптов, только с клео?
Очень странно, выложи тогда дамп, сгенерированный после вылета: http://dk22pac.blogspot.ru/2013/02/how- … files.html
А установлен ли мой пример скрипта пикапов? У меня с ним действительно вылетает, если несколько раз начать новую игру, правда с другим адресом. Что-то связанное с рендером теней, создаваемых опкодом 016F. Буду разбираться.
EDIT: Скрипт обновил, там если радиус проверки снизить немного, то работает нормально.
Но эта ошибка в функции CGarage::Update(), странно как-то. А до последнего обновления также было или вылета не было?
Давай еще раз по порядку, какой скрипт нужен и что надо сделать чтоб вылетело(и чтобы я смог воспроизвести).
Работает у меня так. На каком адресе вылет?