#78 Re: Вопросы по скриптингу » Один вопрос » 23-09-2009 15:36

Как создавать светящиеся огни такие как, например, на крышах небоскрёбов? Пробовал опкод 09E5: create_flash_light... - ничего не появилось.

И ещё. Возможно, немного странноватый вопрос. Можно ли узнать координаты фар относительно автомобиля?

#79 Re: Вопросы по скриптингу » Один вопрос » 12-09-2009 19:48

Deniska wrote:
CraZZZy-GameRRR wrote:

Существует ли проверка момента выхода актёра из машины?

А может через адрес памяти ?

CPed +0x530 = [dword] Статус:
0 = покидает машину, падает с байка или что-то в этом роде

....
0A96: 0@ = actor $PLAYER_ACTOR struct
inc(0@,0x530)
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
if
 0@ == 0
then
    // Аокидает машину
end
....

Или может тут найдёшь http://gtamodding.ru/wiki/Адреса_Памяти … 0.B4.D1.8B

Большое спасибо, Deniska! Работает!

#80 Re: Вопросы по скриптингу » Один вопрос » 11-09-2009 21:52

Deniska wrote:
CraZZZy-GameRRR wrote:

Существует ли проверка момента выхода актёра из машины?

А может через адрес памяти ?

CPed +0x530 = [dword] Статус:
0 = покидает машину, падает с байка или что-то в этом роде

....
0A96: 0@ = actor $PLAYER_ACTOR struct
inc(0@,0x530)
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
if
 0@ == 0
then
    // Аокидает машину
end
....

Или может тут найдёшь http://gtamodding.ru/wiki/Адреса_Памяти … 0.B4.D1.8B

Спасибо! Сегодня уже поздно, спать ложусь. Завтра обязательно попробую так сделать.

#81 Re: Вопросы по скриптингу » Один вопрос » 11-09-2009 19:49

Den_spb wrote:
CraZZZy-GameRRR wrote:

Увы, но данный опкод, как оказалось, отвечает только за ВХОД, но не за ВЫХОД, а именно он мне и нужен. Я полазил в поисковике опкодов в SB, но нужной проверки не нашёл.

Тогда надо искать альтернативный способ. В крайнем случае измерять циклом расстояние между актером и центром машины. Если оно начало увеличиваться, значит актер начал выходить.

В принципе можно так сделать, но немного муторновато. А вообще странно - есть проверка входа, но нет проверки выхода.

#82 Re: Вопросы по скриптингу » Один вопрос » 11-09-2009 16:47

Alien wrote:

Попробуй

09DE:   actor $PLAYER_ACTOR entering_car

Увы, но данный опкод, как оказалось, отвечает только за ВХОД, но не за ВЫХОД, а именно он мне и нужен. Я полазил в поисковике опкодов в SB, но нужной проверки не нашёл.

#83 Re: Вопросы по скриптингу » Один вопрос » 10-09-2009 15:47

Sw[ee]t wrote:

Проверяй если актёра НЕТУ в машине

Я бы с радостью, но проблема в том, что когда актёр выходит из машины, проверка not Actor.Driving($PLAYER_ACTOR) и not Actor.InCar($PLAYER_ACTOR, 0@) говорит, что он в авто.

#84 Re: Вопросы по скриптингу » Один вопрос » 09-09-2009 15:28

Существует ли проверка момента выхода актёра из машины?

#85 Re: Вопросы по скриптингу » Один вопрос » 07-09-2009 16:28

Alien wrote:

Там массив флагов. Юзай опкоды test bit.

А какой из нх за тип двигателя отвечает, не знаешь?

#86 Re: Вопросы по скриптингу » Один вопрос » 05-09-2009 21:06

При считывании из памяти типа двигателя авто (+0x75), каждый раз получаю какие-то разные и непонятные значения, типа 0, 128, 310 и т.п.

#87 Re: Вопросы по скриптингу » Один вопрос » 29-08-2009 20:11

PIT wrote:

для начала надо код нитро искать, а нитрометры smile я в интернете гте-то видел

Я только этот сумел раздобыть - http://sa-sity.ucoz.ru/load/0-0-0-85-20. Принцип работы, к сожалению, понять не смог, может ты растолкуешь?

и ещё вопросик.
Что делает опкод 0AB3?

#88 Re: Вопросы по скриптингу » Один вопрос » 28-08-2009 21:02

Народ, подскажите, как количество оставшегося нитро у тачки узнать?

#89 Re: Вопросы по скриптингу » Один вопрос » 28-08-2009 10:50

PIT wrote:

а что, опкода 0ABE:   vehicle 0@ engine_on не существует ? smile

Спасибо! Теперь всё работает правильно. Я думал, этот опкод установка, а он, оказывается, проверка.

#90 Re: Вопросы по скриптингу » Один вопрос » 27-08-2009 20:55

Хочу проверить, включён двигатель у авто или нет. Считываю информацию из ячейки +1064. Если значение равно 0 - движок выключен, 16 - включён.

03c0: 1@  = actor $PLAYER_ACTOR car
0A97: 0@ = car 1@ struct 
0@ += 1064 
0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0

Проверяю, равно ли значение переменной 1@ 16-ти, т.е. включён ли двигатель?

if
   1@ == 16
then 
   //TRUE
else 
   //FALSE
end

Проверка выдаст TRUE, если двигатель включён.

Проверка выдаст FALSE, если:
   а) двигатель выключен
   б) двигатель включён и включён ручник (???)



Что это за глюк такой, или я может что не так делаю?

#91 Re: Работа с памятью, EXE » Добавление иконок » 17-08-2009 15:41

Sw[ee]t wrote:

Правильно понимаете, а как дальше - незнаю smile
Это спрашивайте у товарища Seemann`а или listener`а.

Хорошо, спрошу у них.

#92 Работа с памятью, EXE » Добавление иконок » 15-08-2009 21:49

CraZZZy-GameRRR
Replies: 101

Вопрос такой: можно ли в игру добавить свои новые иконки для карты? Я так понимаю, добавляем новую иконку в hud.txd, а дальше как?

#93 Re: Работа с памятью, EXE » [SA] Примеры работы с игровой памятью » 13-08-2009 17:00

А как включить/выключить правую/левую заднюю фару?

#94 Re: Вопросы по скриптингу » Один вопрос » 13-08-2009 16:30

Alien wrote:

Короче, по фарам. Получается вот что:
dword по смещению 0x584 содержит массив битов, определяющих рендеринг огней на машинах:
бит 0 - правая фара,
бит 1 - левая фара,
биты 2 и 3 - стоп-сигналы. Они всегда вместе горят.
Может что-то еще определяет свечение огней такси на крыше.
Скриптовые биты совсем не нужны оказались. Чтобы проверить только состояние фар:

:IsCarLightsOn
0A97: 0@ = car 0@ struct
0@ += 0x584
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0                
if or
    08B7:   test 0@ bit 0 
    08B7:   test 0@ bit 1 
then
    0485: return_true
else
    059A: return_false
end
0AB2: ret 0

Есть еще темка, где чинились и разбивались эти фары.

Спасибо, ALIEN, хотя всё вышеизложенное я уже на своём личном опыте понял.

#95 Re: Вопросы по скриптингу » Один вопрос » 12-08-2009 20:58

Alien wrote:

ага, 3 и 4 биты включаются скриптовым опкодом 067F. На него функция реагирует прекрасно, но вот игровой движок видимо включает фары через dword по смещению 0x584. Тогда функция должна быть переписана примерно так:

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

И ещё. У тебя скрипт выдаёт TRUE, когда я торможу и у тачки загораются тормозные огни. Исправь пожалуйста.

-----------

3Doomer wrote:

вопрос не новый, да и ответ не изменился: НЕЛЬЗЯ

но можно рассчитать, исходя из:
+скорости
+передачи
+максимальной скорости
+общего количества передач

Ну я в принципе так и сделал, но результатом не очень доволен - уж много всяких нюансов учитывать надо. Например, жму на ручник и на газ - обороты должны быть большие, а они оказываются немногим выше нуля или при переключении передач стрелка тахометра должна более-менее плавно опускалась или поднималась и т.д. А ты, 3Doomer, случайно не знаешь, может где-нибудь есть скрипт нормального тахометра, а то я кроме Camera-Hack`а, в котором он есть, больше ничего не нашёл.

#96 Re: Вопросы по скриптингу » Один вопрос » 12-08-2009 16:44

Спасибо, ALIEN!

Сначала скрипт всегда выдавал FALSE, но я нашёл список всех адресов памяти, прочитал статью про биты переменных. Вообщем, вместо

0@ += 0x4A8

написал

0@ += 1412

и

if or
    08B7:   test 0@ bit 3 
    08B7:   test 0@ bit 4 
...

заменил на

if
    08B7:   test 0@ bit 0 
...

Заработало!

И ещё один вопрос - можно-ли узнать обороты двигателя авто?

#97 Re: Вопросы по скриптингу » Один вопрос » 11-08-2009 16:35

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

Board footer

Powered by FluxBB