#3701 11-09-2011 13:06

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Den_spb wrote:

Но если речь идёт о камере, то проще прочитать готовые значения углов из структуры камеры (CCamera + 0x878 cameraRotation RwV3D).

Там нули почему-то...и мне ещё помимо чтения нужна и запись. И вот ещё пытаюсь записать координаты позиции камеры по адресу 0xB6F99C + 0x30, предварительно записав по адресу 0x52B730 команду retn (0xC3, спасибо Seemann'у за разъяснения), однако ничего не происходит, т.е. значение не меняется. У меня есть подозрения, что копать надо в районе 0x52B730, однако в ассемблере я почти ноль, самому не разобрать, может кто-нибудь помочь?


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3702 11-09-2011 17:11

Jack Daniel's
Registered: 05-07-2011
Posts: 211

Re: Один вопрос

Какие значения возвращает проверка на Line Of Sight? (Находится по адресу - 0x56A490)
P.S Line of sight - проверка на видимость чего-либо или проверка на то, находится ли перед "чем-то" "что-то" (Это как я понимаю).

Offline

#3703 11-09-2011 19:28

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Jack Daniel's wrote:

Какие значения возвращает проверка на Line Of Sight? (Находится по адресу - 0x56A490)
P.S Line of sight - проверка на видимость чего-либо или проверка на то, находится ли перед "чем-то" "что-то" (Это как я понимаю).

Вроде как возвращает координаты точки коллизии между двумя указаными точками, вот тут можешь посмотреть.


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3704 12-09-2011 05:15

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

А нужно проверять умер ли актер, после проверки на существование, или после смерти актер не существует.

Offline

#3705 12-09-2011 05:35

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

444andrei444 wrote:

А нужно проверять умер ли актер, после проверки на существование, или после смерти актер не существует.

После смерти актёр всё ещё существует, конечно нужно проверять, раз есть проверка - значит проверить можно)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3706 12-09-2011 11:03

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

Спасибо. У меня вопрос как получить координаты курсора? Точнее перемещение мышки, во время игры.
Это пригодилось бы, наверное, не только мне.

Last edited by 444andrei444 (12-09-2011 11:09)

Offline

#3707 12-09-2011 15:03

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

444andrei444 wrote:

Спасибо. У меня вопрос как получить координаты курсора? Точнее перемещение мышки, во время игры.
Это пригодилось бы, наверное, не только мне.

Ну это проще простого)

0A4A: store_joystick_X_offset_to 201@ Y_offset_to 202@

Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3708 12-09-2011 16:10

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

А я как то не придавал значения этому опкоду. Щас проверю. Это в переменные запишутся координаты положения курсора на экране?

Last edited by 444andrei444 (12-09-2011 16:12)

Offline

#3709 12-09-2011 16:29

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

444andrei444 wrote:

А я как то не придавал значения этому опкоду. Щас проверю. Это в переменные запишутся координаты положения курсора на экране?

Нет, это скорость перемещения курсора в определённом направлении. Скажи что ты хочешь сделать и может я подскажу, как это реализовать) А лучше в асю или скайп. 492226129 и alexvor295

Last edited by Voron295 (12-09-2011 16:32)


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3710 13-09-2011 19:51

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

Существенно вопрос такой. Можно ли перевести экранные координаты в игровые. Для чего спросите вы, я хочу сделать управление различными действиями с помошью курсора. Знаю есть код переводящий игровые координаты в экранные. А мне надо наоборот.

Offline

#3711 14-09-2011 08:57

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

Re: Один вопрос

444andrei444 wrote:

Существенно вопрос такой. Можно ли перевести экранные координаты в игровые. Для чего спросите вы, я хочу сделать управление различными действиями с помошью курсора. Знаю есть код переводящий игровые координаты в экранные. А мне надо наоборот.

http://www.gtaforums.com/index.php?showtopic=447870

Offline

#3712 14-09-2011 18:13

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

спасибо. Действительно работает правда при повороте камеры наблюдаются некоторые неточности но это не так важно.

Offline

#3713 16-09-2011 07:42

444andrei444
Registered: 29-03-2011
Posts: 317
Website

Re: Один вопрос

А можно ли создать актера спускающегося на парашуте? Если да, то как?
уже нашел. справку надо внимательно читать.

Last edited by 444andrei444 (16-09-2011 14:44)

Offline

#3714 16-09-2011 10:41

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

444andrei444 wrote:

А можно ли создать актера спускающегося на парашуте? Если да, то как?

Насколько я понимаю, можно... Сам только учусь, посему - миссия A Home In The Hills в помощь...

Господа, такой вопрос... А как в клео скрипте проверить находится ли герой около какого-то объекта в игровом мире? Например, около бильярдного стола? Модель стола #K_POOLTABLESM ID 2964... ? Пробовал опкодом 0472, как в оригинальном мэйне. Но если как параметр ставить модель - СБ не компилирует скрипт. Если ID - игра вылетает...


Try not. Do or do not, there is no try.

Offline

#3715 16-09-2011 13:26

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Yoda wrote:

А как в клео скрипте проверить находится ли герой около какого-то объекта в игровом мире? Например, около бильярдного стола? Модель стола #K_POOLTABLESM ID 2964... ? Пробовал опкодом 0472, как в оригинальном мэйне. Но если как параметр ставить модель - СБ не компилирует скрипт. Если ID - игра вылетает...

Попробуй так:

actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
0866: get_object_in_sphere 1@ 2@ 3@ radius 5.0 handle_as 0@ 
if
0@ <> -1
then
    if
    09CC:   object 0@ model_is 2964
    then
    ..............
    end
end

Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3716 16-09-2011 14:21

Jack Daniel's
Registered: 05-07-2011
Posts: 211

Re: Один вопрос

Короче, нашел способ всегда отображать прицел в точке, куда смотрит камера игрока, как заставить стрелять педа в эту точку, а не перед собой (Т.е не нажимая кнопку прицела, а нажимая атаку).
P.S Пытаюсь сделать прицел как в вайс-сити.

Last edited by Jack Daniel's (16-09-2011 14:33)

Offline

#3717 16-09-2011 14:56

Voron295
From: Каушаны
Registered: 06-12-2010
Posts: 425
Website

Re: Один вопрос

Jack Daniel's wrote:

Короче, нашел способ всегда отображать прицел в точке, куда смотрит камера игрока, как заставить стрелять педа в эту точку, а не перед собой (Т.е не нажимая кнопку прицела, а нажимая атаку).
P.S Пытаюсь сделать прицел как в вайс-сити.

Я такой способ уже давным давно нашёл...


Добро всегда побеждает зло. Кто победил, тот и добрый!
userbar.png

Offline

#3718 16-09-2011 14:59

Jack Daniel's
Registered: 05-07-2011
Posts: 211

Re: Один вопрос

Очень информативно grin

Offline

#3719 16-09-2011 22:12

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

Voron295 wrote:
Yoda wrote:

А как в клео скрипте проверить находится ли герой около какого-то объекта в игровом мире? Например, около бильярдного стола? Модель стола #K_POOLTABLESM ID 2964... ? Пробовал опкодом 0472, как в оригинальном мэйне. Но если как параметр ставить модель - СБ не компилирует скрипт. Если ID - игра вылетает...

Попробуй так:

Спасибо за совет, но нет. Игра вылетает при старте.
Тут варианты, которые пробовал. Отмечу, что это всё объекты defined в main.scm... Пробовал находить эти объекты также Интерсептором, но, во-первых, он их не нашёл, а, во-вторых, не знаю как потом проверку делать...


Try not. Do or do not, there is no try.

Offline

#3720 16-09-2011 22:33

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Пробовал находить эти объекты также Интерсептором, но, во-первых, он их не нашёл, а, во-вторых, не знаю как потом проверку делать...

Статические объекты (объекты карты) искать нельзя, только динамические.

Тут варианты, которые пробовал

Ошибки:
1.

0472:   not actor $PLAYER_ACTOR near_object_in_rectangle 23@ radius 5.0 5.0 flag 0 on_foot

В 23@ должен быть записан хэндл существующего объекта - см. пример использования в main.scm.
2.

0866: get_object_in_sphere 23@ 25@ 27@ radius 5.0 handle_as 31@
0984: 30@ = object 31@ model

Перед тем, как производить действия над объектом (или машиной, актёром) необходимо убедиться, что объект существует, т.е. между 0866: и 0984: надо вставить проверку на существование объекта.
3.

// 0006: 29@ = 2964 // (POOL_SCRIPT)
// 00D6: if and
// 803B:   not 29@ == 30@ // and reverse 30@ == 23@

Зачем такой огород? Лучше и проще так:

if and
30@ <> 2964

Ещё лучше воспользоваться спец. опкодом для проверки модели (вариант 4)

Last edited by Den_spb (16-09-2011 22:35)

Offline

#3721 19-09-2011 05:23

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

Den_spb wrote:

Статические объекты (объекты карты) искать нельзя, только динамические.

Да, всё дело видимо именно в этом... А в чем собственно разница между статическими и динамическими? Простыми словами... И еще пара вопросов ниже...

Den_spb wrote:

1. В 23@ в опколе 0472 должен быть записан хэндл существующего объекта - см. пример использования в main.scm.

В main.scm опкоду 0472 предшествует 029B. В чём суть этого опкода? Что он делает (что в данном случае значит инициировать) с предметом?

Den_spb wrote:

2.Перед тем, как производить действия над объектом (или машиной, актёром) необходимо убедиться, что объект существует, т.е. между 0866: и 0984: надо вставить проверку на существование объекта.

Это понятно. Это тестовый скрипт был. А вылет обуславливался попыткой найти статический объект.

Den_spb wrote:

3.Зачем такой огород? Лучше и проще так:... Ещё лучше воспользоваться спец. опкодом для проверки модели (вариант 4)

Я с языками программирования не знаком. Пишу так, как компилирует СБ. А он таких опкодов (<>) не знает. Он их на "огород" меняет.

И, собственно, еще один вопрос - как в игре отследить второй поток с одним именем? Например, если зайти в Грин Ботлз Бар МемХакер покажет два активных потока ARCADE (поскольку там два игровых автомата). Я понимаю как через клео скрипт отследить поток и его переменные. Вопрос как отследить второй поток с тем же именем?

Last edited by Yoda (19-09-2011 09:44)


Try not. Do or do not, there is no try.

Offline

#3722 19-09-2011 05:57

VcSaJen
Registered: 25-08-2006
Posts: 217

Re: Один вопрос

Я с языками программирования не знаком. Пишу так, как компилирует СБ. А он таких опкодов (<>) не знает. Он их на "огород" меняет.

Знает, нормально компилирует.
Скажи, ты вместо открытия своего исходника каждый раз декомпилируешь скрипт? Это распространённая ошибка новичков, надо не декомпилировать каждый раз, а открыть свой txt исходник и работать с ним.


[small][/small]

Offline

#3723 19-09-2011 09:39

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

VcSaJen wrote:

Знает, нормально компилирует. Скажи, ты вместо открытия своего исходника каждый раз декомпилируешь скрипт? Это распространённая ошибка новичков, надо не декомпилировать каждый раз, а открыть свой txt исходник и работать с ним.

Нет. Я редактирую txt. Другое дело, что у меня каждая строчка в txt начинается с опкода... Ну кроме лейблов (двоеточие) и инфы (//), конечно... Что касается <> СБ скомилирует как "if not ==". Мне в txt проще и понятнее так написать.

Last edited by Yoda (19-09-2011 09:40)


Try not. Do or do not, there is no try.

Offline

#3724 19-09-2011 15:15

Den_spb
From: Ленинград
Registered: 23-11-2008
Posts: 941
Website

Re: Один вопрос

Да, всё дело видимо именно в этом... А в чем собственно разница между статическими и динамическими? Простыми словами... И еще пара вопросов ниже...

Динамические объекты - это те объекты, модели которых прописаны в файле object.dat (ломающиеся и перемещаемые объекты). Помимо этого, динамическими являются любые объекты, созданные скриптом.

В main.scm опкоду 0472 предшествует 029B. В чём суть этого опкода? Что он делает (что в данном случае значит инициировать) с предметом?

Это команда создания объекта (аналог опкода object create). Разница в том, как определяется высота размещения объекта. Object init: опорная точка объекта размещается на высоте Z. Object create: нижняя граница модели объекта размещается на высоте Z.

Он их на "огород" меняет.

Дело не в знаках, а в том, что ты сначала записываешь число в переменную, а затем сравниваешь значения двух переменных, вместо того, чтобы просто сравнить число со значением переменной.

Это понятно. Это тестовый скрипт был. А вылет обуславливался попыткой найти статический объект.

Нет. Скрипт не знает о том, что ему надо искать статический объект.

Что касается <> СБ скомилирует как "if not =="

В скомпилированном файле присутствуют только номера опкодов и их параметры. При декомпиляции скрипта SB добавляет в код вспомогательные фразы и описания в соответствии с файлом sascm.ini и выводит его в таком виде на экран.

Offline

#3725 19-09-2011 18:25

Yoda
From: Moscow
Registered: 08-03-2011
Posts: 90

Re: Один вопрос

Den_spb wrote:

Динамические объекты - это те объекты, модели которых прописаны в файле object.dat (ломающиеся и перемещаемые объекты). Помимо этого, динамическими являются любые объекты, созданные скриптом.

Хм... тогда странно... Все эти объекты прописаны в object.dat (KB_BANDIT_U, NEIL_SLOT, ROULETTE_TBL, BLCK_JACK, OTB_MACHINE, K_POOLTABLESM, + ряд моделек для аркадных игр). Но как в игре определить находится ли СиДжей рядом пока не понимаю...


Try not. Do or do not, there is no try.

Offline

Board footer

Powered by FluxBB