#3001 06-02-2011 02:18

sergey.sj
Registered: 02-02-2011
Posts: 4

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

Подскажите. Как добавить на карту дискетку сохранения и чтобы сохранялось?
я вот иконку для радара нашёл :

0570: $ICON = create_asset_radar_marker_with_icon 35 at 0.0 0.0 0.0

Offline

#3002 06-02-2011 10:57

~AquaZ~
Registered: 01-03-2010
Posts: 726

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

В хэлпе санника всё есть, статья "пикапы".

Offline

#3003 06-02-2011 10:59

Daeman
From: }{абаровск
Registered: 08-05-2009
Posts: 70

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

VcSaJen wrote:
080E: get_actor $Player_Actor ped_event_to 0@
if 0@==9 {EVENT_DAMAGE}
then
  {...}
end

Пля... чёт даже не догадался использовать PEvents)
Наводящий вопрос: а будет ли работать с ГГ? Должно. Проверим.

@3Doomer, да, точно. Чёт я затестился, щас посмотрел скрипт проверки, оказывается я не написал перевод в интегер. А я думал, что написал. :wow:

Offline

#3004 07-02-2011 11:48

Sergey81
Registered: 19-12-2008
Posts: 654

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

А как в GTA3 и VC можно получить хэндл педа, на которого наведён прицел игрока?

Offline

#3005 08-02-2011 15:04

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

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

такой вопрос: заметил, что в create_thread можно использовать несколько параметров, я так понимаю эти параметры передаются в создаваемый поток? Как этим пользоваться?)


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

Offline

#3006 08-02-2011 17:38

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

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

Параметры, указанные в опкоде, по порядку запишутся в переменные 0@, 1@, 2@ ... нового потока.

Offline

#3007 08-02-2011 18:41

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

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

я так и предполагал, спс)


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

Offline

#3008 10-02-2011 08:13

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

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

ещё вопрос) почему у меня не работает такая конструкция:

0A97: 29@ = car 2@ struct
29@ += 20
0A8D: 10@ = read_memory 29@ size 4 virtual_protect 0

на выходе получается 0
прочитал, что:

Для каждой машины в пуле:
+20 содержит указатель матрицы поворота/позиции (84 Bytes).
+0 [Float] = поворот по оси X (Grad)
+4 [Float] = поворот по оси Y (Grad)
+8 [Float] = поворот по оси Z (Grad)


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

Offline

#3009 10-02-2011 14:01

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

Ну так 84 байта же

Offline

#3010 10-02-2011 16:47

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

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

Ну так 84 байта же

хмм...непонял что это значит) я в работе с памятью можно сказать новичок....не объяснишь, как же всё-таки это юзать? Как мне например получить поворот по оси Y?

Last edited by Voron295 (10-02-2011 16:48)


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

Offline

#3011 10-02-2011 17:55

DK22Pac
From: Ukraine
Registered: 26-03-2010
Posts: 447
Website

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

Voron295 wrote:

Ну так 84 байта же

хмм...непонял что это значит) я в работе с памятью можно сказать новичок....не объяснишь, как же всё-таки это юзать? Как мне например получить поворот по оси Y?

Это не сойдёт?

077D: 1@ = car 0@ y_
angle

PS просто чтением адресса угол в градусах не узнать, ибо в матрице угол определяется по трём единичных векторах.
sannybuilder.com/forums/viewtopic.php?pid=3276
Пост #174.
И ещё, кажется, есть метод getRotation, применяемый к Placeаble.


Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Offline

#3012 10-02-2011 18:12

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

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

Добавлю, что для чтения (или записи) элемента матрицы, команду 0A8D(0A8C) надо применить дважды:

0A97: 29@ = car 2@ struct
29@ += 20
0A8D: 10@ = read_memory 29@ size 4 virtual_protect 0 // получили указатель на матрицу (адрес 1-го элемента)
0A8D: 10@ = read_memory 10@ size 4 virtual_protect 0 // читаем значение элемента матрицы

Offline

#3013 12-02-2011 11:18

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

Можно-ли как-нибудь узнать что пед находится рядом с entrance маркером? Проверку на нахождение рядом с объектом "дверь", не предлагать

Offline

#3014 12-02-2011 13:08

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

Вообще идея такая, надо найти пулы всех элементов и по ним проходиться.
Нужно в CLEO 4 добавить поиск пикапов, маркеров итд.
Вот тогда таких проблем не будет. Но в силу занятости Alien я думаю это будет очень даже не скоро.
Ищите сами (что делать?) эти пулы...


I know everything and nothing...

Offline

#3015 12-02-2011 16:45

Sw[ee]t
From: Нижний Новгород
Registered: 16-02-2009
Posts: 686
Website

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

Знать бы, найти ентот "пул всех элементов". Для этих маркеров наверняка есть отдельные функции в exe.

Offline

#3016 14-02-2011 18:57

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

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

если прикрепить объект к кости игрока, а к этому объекту прикрепить машину, то при быстром перемещении, будь то бег либо падение с большой высоты, машина двигается дёрганно, не одновременно с объектом. Будет то же самое, если я буду считывать координаты объекта и ставить туда машину в цикле, и там будет присутствовать wait 0. Как я понимаю тут wait 0 пропустить нельзя?) Причём, если объект не крепить к костям а просто, например опкодом 069B, то машина будет двигаться нормально...что делать?)
P.S. делаю скрипт, вид от первого лица, получается неплохо, однако при разбеге появляется вот эта проблема. Т.е. камеру я креплю к машине, а машина двигается рывками и при разбеге камера не успевает за головой) и я вижу затылок....надо бы как-то исправить)


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

Offline

#3017 14-02-2011 23:04

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

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

Будет то же самое, если я буду считывать координаты объекта и ставить туда машину в цикле, и там будет присутствовать wait 0.

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

Как я понимаю тут wait 0 пропустить нельзя?

Команду wait исключать из цикла нельзя - игра зависнет, т.к. не будут работать нескриптовые процессы. Да и смысла в этом нет, так как наряду с другими нескриптовыми процессами не будет работать и отрисовка - в игре результаты изменения положения объекта скриптом не будут видны.

Offline

#3018 15-02-2011 19:37

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

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

машину к актёру, жаль, нельзя прицепить....что ж, ладно, придётся довольствоваться тем, что есть smile


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

Offline

#3019 16-02-2011 09:05

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

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

Машину к актёру прицепить можно, для этого в опкоде 069B заменяем следующее:

.text:00495C79 0F8                 mov     ecx, _ObjectPool
.text:00495C7F 0F8                 push    edx             ; handle
.text:00495C80 0FC                 call    _CPool_CObject__atHandle

на

.text:00495C79 0F8                 mov     ecx, _VehiclePool
.text:00495C7F 0F8                 push    edx             ; handle
.text:00495C80 0FC                 call    _CPool_CVehicle__atHandle

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

0A8C: write_memory 0x495C7B size 1 value 0x94 virtual_protect 1
0A8C: write_memory 0x495C81 size 4 value 0xFFF6EC5B virtual_protect 1
069B: attach_car 0@ to_actor $player_actor with_offset 3.0 3.0 0.0 rotation 0.0 0.0 0.0 
0A8C: write_memory 0x495C7B size 1 value 0x9C virtual_protect 1
0A8C: write_memory 0x495C81 size 4 value 0xFFFCF3BB virtual_protect 1

Offline

#3020 16-02-2011 13:48

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

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

хмм...это хорошо, но мне нужно сделать это с опкодом 070A...или исправить опкод 067B под объект...если такое возможно, то пожалуйста напиши как это сделать smile очень надо. Заранее спасибо!)
------------------------------
Кстати, в игре ведь отсчитываются число, месяц и год, помимо дня недели? Если да, то какие адреса в памяти за это отвечают?
------------------------------
Ещё вопрос smile : можно ли как-то воспроизводить свои видеофайлы в игре, как когда игру запускаешь?

Last edited by Voron295 (20-02-2011 17:17)


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

Offline

#3021 21-02-2011 22:09

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

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

Использование опкода 067B для объекта:

0A8C: write_memory 0x4951DE size 1 value 0x9C virtual_protect 1 
0A8C: write_memory 0x4951E3 size 4 value 0xFFFCFE59 virtual_protect 1 
067B: put_camera_on_object 0@ with_offset 0.0 1.5 1.5 point_to_actor 1@ tilt 6.0 2
0A8C: write_memory 0x4951DE size 1 value 0x94 virtual_protect 1  
0A8C: write_memory 0x4951E3 size 4 value 0xFFF6F6F9 virtual_protect 1

Last edited by Den_spb (21-02-2011 22:13)

Offline

#3022 21-02-2011 22:23

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

Меня все волнует элементарный ответ на вопрос, как, допустим, сохранить скорость и направление авто в одной точке, а потом воспроизвести ее в любой другой, т.е., например, тачка едет со скоростью 60 км/ч и на юго-восток, а теперь я ей меняю угол и при этом она как ни в чем не бывало едет в другом направлении с данной скоростью, или скажем я телепортировал авто и хочу вернуть ей направление движения скорости итд.
Как это сделать, кто знает, а то я уже запарился морочиться с опкодом 04BA. Он работает только в направление вперед т.е по оси Y.


I know everything and nothing...

Offline

#3023 22-02-2011 03:13

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

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

Если я правильно понял вопрос, то задача сводится к пересчёту компонентов вектора скорости - сначала из глобальной системы координат в локальную (связанную с машиной), а затем наоборот - из локальной в глобальную.
1.Пересчёт компонентов вектора из глобальной СК (на север,на восток,вверх) в локальную (вперёд,вбок,вверх):

03C0: 29@ = actor $PLAYER_ACTOR car 
0AC7: 3@ = var 0@ offset // Компоненты вектора будут записаны в трёх последовательных переменных (0@, 1@, 2@)
0A97: 28@ = car 29@ struct
0A8E: 25@ = 28@ + 68 // int - указатель на вектор скорости машины в глобальной СК
0A8E: 24@ = 28@ + 20 // int
0A8D: 24@ = read_memory 24@ size 4 virtual_protect 0 // указатель на матрицу поворота машины
0AC6: 15@ = label @inverse_matrix offset // указатель на буфер, куда запишем обратную матрицу
0AA5: call 0x7F2070 num_params 2 pop 2 24@ 15@ // Нахождение обратной матрицы
0AA5: call 0x59C790 num_params 3 pop 3 25@ 15@ 3@ // Пересчёт координат из одной системы в другую
// после этих операций в переменныt 0@, 1@, 2@ записались проекции вектора скорости на локальную СК
....
:inverse_matrix // буфер (чтобы сэкономить 16 локальных переменных)
hex
    00 00 00 00     00 00 00 00     00 00 00 00     00 00 00 00
    00 00 00 00     00 00 00 00     00 00 00 00     00 00 00 00
    00 00 00 00     00 00 00 00     00 00 00 00     00 00 00 00
    00 00 00 00     00 00 00 00     00 00 00 00     00 00 00 00
end

2.Пересчёт компонентов вектора из локальной системы в глобальную:

03C0: 29@ = actor $PLAYER_ACTOR car 
0AC7: 3@ = var 0@ offset // в переменных 0@-2@ должны быть записаны проекции вектора скорости на локальную СК
0A97: 28@ = car 29@ struct
0A8E: 25@ = 28@ + 68 // int 
0A8E: 24@ = 28@ + 20 // int   matrix
0A8D: 24@ = read_memory 24@ size 4 virtual_protect 0
0AA5: call 0x59C790 num_params 3 pop 3 3@ 24@ 25@ // Пересчёт координат из одной системы в другую
// после этих операций машине будет присвоена скорость в соответствии со значениями 0@ - 2@

Last edited by Den_spb (22-02-2011 03:29)

Offline

#3024 22-02-2011 14:44

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

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

Den_spb wrote:

Использование опкода 067B для объекта:

0A8C: write_memory 0x4951DE size 1 value 0x9C virtual_protect 1 
0A8C: write_memory 0x4951E3 size 4 value 0xFFFCFE59 virtual_protect 1 
067B: put_camera_on_object 0@ with_offset 0.0 1.5 1.5 point_to_actor 1@ tilt 6.0 2
0A8C: write_memory 0x4951DE size 1 value 0x94 virtual_protect 1  
0A8C: write_memory 0x4951E3 size 4 value 0xFFF6F6F9 virtual_protect 1

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


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

Offline

#3025 22-02-2011 16:19

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 558
Website

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

Ну ты, Дениска, молодец. Вообще супер!
Т.е нсколько я понял, можно машину телепортировать, поменять угол, и она поедет точно также как она ехала до телепорта, но уже в новом направлении?


I know everything and nothing...

Offline

Board footer

Powered by FluxBB