#26 Re: Вопросы по скриптингу » Один вопрос » 31-01-2014 08:29

Спасибо, а вот на счёт порядкового номера в handling.cfg

Имеется ввиду, каким по счёту он в файле.

#27 Re: Вопросы по скриптингу » Один вопрос » 29-01-2014 21:12

HH wrote:

Как пользоваться адресами handling для машины [Адреса]
Заголовок 3 пункт 3.2

0@ = 0xC2B9DC
1@ = 5  // Тут ID хэндлинга, по идее, порядковый номер в handling.cfg (не ID машины). Короче, надо подбирать для нужного ID машины
1@ *= 224
005A: 0@ += 1@
0@ += 0x14 // тут должно быть необходимое тебе смещение, из указанных в статье
0A8D: 2@ = read_memory 0@ size 4 virtual_protect 0

Если нужно записать значение, то вместо опкода 0A8D используй этот:

0A8C: write_memory 0@ size 4 value 2@ virtual_protect 0

В этом случае, содержимое переменной 2@ запишется по нужному адресу.

Обращай внимание на указания [byte] к смещениям. Это значит, что величина значения не 4 байта (как обычная переменная), а 1. Соответственно параметр size в опкоде чтения/записи памяти нужно изменить на соответствующий (1).

#28 Re: Вопросы по скриптингу » Один вопрос » 23-01-2014 14:10

HH wrote:

Ребят, а кто знает аналогичный опкоды к 0A8D 0A8C???

Зачем?
Если уж так нужно их чем-нибудь заменить, читай в справке к SB статью про изменение игровой памяти через SCM (в разделе "Опытным пользователям").

#29 Re: Вопросы по скриптингу » Один вопрос » 22-01-2014 17:29

HH wrote:

думаю даже для актёра можно использовать good

Да, только опкод получения структуры надо соответствующий поставить.

#30 Re: Вопросы по скриптингу » Один вопрос » 22-01-2014 14:28

HH wrote:

Ребят во общем мне надо для машины. Думаю с объектом тоже так  же можно сделать

Написал в виде SCM-функции, ибо так удобнее использовать.

// 0AB1: SetCarRotationFromCamera 1 car 0@

:SetCarRotationFromCamera
0A97: 1@ = car 0@ struct
1@ += 0x14
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
2@ = 0xB6F99C // Адрес матрицы камеры

// Первые три значения инвертируем, т.к. матрица камеры немного не такая, как у машины
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
3@ *= -1.0
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
1@ += 4
2@ += 4
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
3@ *= -1.0
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
1@ += 4
2@ += 4
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
3@ *= -1.0
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
1@ += 8
2@ += 8
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
1@ += 4
2@ += 4
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
1@ += 4
2@ += 4
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
1@ += 8
2@ += 8
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
1@ += 4
2@ += 4
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
1@ += 4
2@ += 4
0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0
0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0
0AB2: ret 0

Если будешь использовать с объектом, вместо машины, то опкод 0A97 надо заменить на 0A98.

#31 Re: Вопросы по скриптингу » Один вопрос » 22-01-2014 06:38

DK22Pac wrote:

В 07C6 передаются компоненты кватерниона x y z w.
Найди матрицу камеры, переведи вращение в кват, потом кват отправляй в 07C6.

Проще уж будет задать объекту матрицу камеры, нежели переводить её в кват и задавать опкодом (тем более, что он используется конкретно для машин, а ему надо для любого объекта). Вобщем, чуть позже напишу, как реализовать, сейчас уходить надо.

#32 Re: Вопросы по скриптингу » Один вопрос » 19-01-2014 18:59

Mr. Rollton wrote:

Может, есть другие форумы на примете?

Может GTA Forums подойдёт? Правда это не русский форум.

А вообще, какие лимиты тебя интересуют?

#33 Re: Вопросы по скриптингу » Один вопрос » 18-01-2014 13:19

Тогда, может быть, есть какая-нибудь альтернатива для снятия лимитов? Я знаю, что есть отдельный stream memory fix, но он имеет только одну функцию из тех, что нужны мне.

Есть SALimitAdjuster от Alexander'а. Прикреплю его. Он правит сам экзешник игры.

И если не секрет, какой операционной системой пользуешься, Ворон?

Windows 7 x64

#34 Re: Вопросы по скриптингу » Один вопрос » 18-01-2014 00:13

Скачал с главной страницы, поставил - все равно не работает. Может, какая-нибудь аппаратная или программная несовместимость?

Единственное, что я мог бы предположить - наличие других модификаций, которые могут вызывать конфликт... но ты вроде написал, что у тебя только аси-лоадер и лимит аджастер. Аппаратная несовместимость тут не может иметь место. Программная - тоже вряд ли. Даже не знаю, что не так. Возможно кто-то другой сталкивался с подобными проблемами, нужны более опытные люди, вобщем.

#35 Re: Вопросы по скриптингу » Один вопрос » 17-01-2014 23:07

P.S. с помощью великого гугла по коду ошибки набрел на единственную страничку, на которой говорилось, что эта ошибка возникает, если на Windows Vista/7/8 выбрать в игре 16-битную цветность

Код ошибки может играть роль только в данном конкретном случае. Он может встретиться в самых различных программах и играх, так что нет смысла искать что-либо в интернете по этому поводу.

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

#36 Re: Вопросы по скриптингу » Один вопрос » 17-01-2014 20:32

Собственно, проблема в чём? Вылетает из-за Limit Adjuster'а? Выложи его куда-нибудь, потестим. Пробуй ставить аси-лоадер, который идёт с CLEO обычно.
Исходя из крэшдампа, ничего конкретного сказать нельзя. Вылет происходит в районе функции рендера поверхности, насколько я понял.

#37 Re: Вопросы по скриптингу » Один вопрос » 16-01-2014 22:26

Нет. Обнулить, значит приравнять весь диапазон памяти к нулю.
Например так:

0A8C: write_memory 0@ size 512 value 0 virtual_protect 0

Где 0@ - указатель на твою память, а 512 нужно поменять на размер выделенной памяти.

#38 Re: Вопросы по скриптингу » Один вопрос » 16-01-2014 18:34

Dark_Knight wrote:

Я выделяю и очищаю память, но строку я могу найти в памяти СА. Как это можно обойти?

Прежде чем выгружать память, обнули её.

#39 Re: Вопросы по скриптингу » Один вопрос » 15-01-2014 17:23

Уверен, что твой скрипт имеет нулевой номер?

#40 Re: Вопросы по скриптингу » Один вопрос » 27-12-2013 12:19

RitrS wrote:
DK22Pac wrote:

Получить структ педа, добавить смещение, прочитать структ убийцы (4 байта). Сверить структ убийцы со структом игрока.

ввиде кода пример можешь?

Если у тебя есть хэндл убитого педа, то вот:

// Предположим, что хэндл убитого педа записан в 0@
0A96: 1@ = actor 0@ struct
0A96: 2@ = actor $PLAYER_ACTOR struct
1@ += 0x764
0A8D: 3@ = read_memory 1@ size 4 virtual_protect 0
if
003B:   2@ == 3@  // Сравниваем указатели
then
// Тут твой код, если именно игрок убил педа
end

#41 Re: Sanny Builder и CLEO » Sanny Builder v3.xx » 24-12-2013 15:50

Я тут вдруг подумал - было бы неплохо, если бы метки распознавались как "ссылки" при зажатии какой-нибудь клавиши (Ctrl например) или чтобы при нажатии на них правым кликом, был пункт "Перейти к метке".
Ну к примеру, такой код:

:label_1
wait 0
jump @label_2

:label_2
jump @label_1

Вот когда жмёшь к примеру правым кликом по @label_2, чтоб в менюшке был этот самый пункт, указанный выше. И когда его выбираешь, тебя перекидывает к :label_2.

Конечно, это не слишком полезно, ведь сейчас мы стараемся перейти к высокоуровневым конструкциям, но при декомпиляции каких-либо скриптов, мы возвращаемся к старым добрым меткам smile
Вобщем, фича не слишком важная, но было бы неплохо, если бы она существовала.

#42 Re: Вопросы по скриптингу » Один вопрос » 23-12-2013 15:32

d88 wrote:
02E0:   actor $PLAYER_ACTOR aggressive

Эта проверка срабатывает, как я понял, если актёр использует оружие. Но не сразу, а через некоторое время. Видимо, есть какой-то показатель агрессии, и когда он достигает какого-то значения, проверка срабатывает. Можно ли как-то изменять этот показатель? К примеру, чтобы он увеличивался, если актёр выполняет ещё за какие-то действия.

Насколько я помню, у меня эта проверка срабатывала, когда игрок находится в агрессивной стойке (к примеру, после удара). Насчёт оружия не знаю.
Здесь идёт не показатель, а просто проверка состояния игрока.
Можно сделать показатель самому, отсчитывая, сколько, к примеру, игрок сделал ударов/убийств за определённый промежуток времени (к примеру за последнюю минуту).

#43 Re: Вопросы по скриптингу » Один вопрос » 05-12-2013 14:52

d88 wrote:

2. Есть ли способ поменять угол поворота у объекта, если он прикреплён к кости? Я пробовал в опкоде 070A: менять седьмой параметр, но, похоже, там только два варианта поворота, и не те, что надо

Нет, менять угол крепления нельзя.

#44 Re: Вопросы по скриптингу » Один вопрос » 19-11-2013 15:54

d88 wrote:

Да, именно так. Я это и пытался объяснить.

Ясно. Нужно преобразовать локальное вращение в глобальное. Я попробую написать код.

#45 Re: Вопросы по скриптингу » Один вопрос » 18-11-2013 20:12

d88 wrote:

Что-то мы тут совсем запутались, о чём речь. Я же ничего про этот опкод не говорил и не использовал его. Я пытался объяснить, что 05A1: и 05A2: работают некорректно, если до их испоьзования задать объекту угол поворота, т.е. Z_angle.

Так бы сразу и сказал. Я не мог понять, в чём твоя проблема. Значит объект вращается "криво", если угол Z отличен от нуля?

#46 Re: Вопросы по скриптингу » Один вопрос » 18-11-2013 16:09

d88 wrote:

Так в том-то и дело, что я с этим объектом больше ничего не делаю. И да, визуально вращение продолжается в ту же сторону.

Тогда какая тебе разница, что показывает тебе опкод, получающий текущий угол объекта?

#47 Re: Вопросы по скриптингу » Один вопрос » 18-11-2013 14:45

@d88, я не пойму, ты в скрипте после вращения используешь получение угла объекта? Ну, опкод 0176? Визуально вращение продолжается в нужном направлении, так ведь?

#48 Re: Вопросы по скриптингу » Один вопрос » 16-11-2013 21:43

d88 wrote:

Мне казалось, это естественно. С какой стати этот угол поворота меняется? Объект ведь должен просто вращаться вокруг одной из своих осей, а не повернуться одновременно по ещё одной.

Видимо мы друг-друга не поняли. Ты считаешь, что "угол поворота" - это угол в горизонтальной плоскости (ось Z). Суть в том, что при вращении по оси X (я так понял, именно это тебе нужно) вращение по оси Z на самом деле не происходит. Но функция получения угла Z объекта использует такой метод, который возвращает неправильное значение угла из-за вращения по другой оси (по идее он меняется на угол с разницей в 180 градусов).

d88 wrote:

Просто хотел сначала поискать способ, чтоб вращение было плавным.

Я так и не понял, почему вращение тем способом, который я указал, не плавное? Что ты имеешь ввиду?

Способ в любом случае есть. Можно даже вручную это делать опкодом 0453, если правильно его использовать.

#49 Re: Вопросы по скриптингу » Один вопрос » 14-11-2013 13:20

d88 wrote:

Есть, к примеру, модель стального веера Китаны, так вот я хочу сделать возможность бросать этот объект, но он должен вращаться на лету.

А чем тебе мешает изменение угла поворота объекта? Как ты себе представляешь вращение объекта без изменения угла поворота объекта?
Нет, есть, конечно, вариант с анимированием объекта... Но это уж если осилишь...

#50 Re: Вопросы по скриптингу » Один вопрос » 13-11-2013 18:00

d88 wrote:

С этими опкодами если сначала задать объекту угол поворота, то при вращении он меняется.

Эм... а что тебе именно нужно? Для чего тебе?

Board footer

Powered by FluxBB