#2701 07-11-2010 08:28

BoPoH
From: Каушаны
Registered: 21-02-2009
Posts: 77

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

Sergey81 wrote:

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

это было бы то что нужно, только вот как найти адрес в памяти?

Да, кстати, можно ли как-то плавно повернуть игрока во время анимации? с парашютом прыгали? видели как он плавно поворачивается? там используется опкод 083E: set_actor $PLAYER_ACTOR rotation 0.0 0.0 1@ while_in_air
однако, он работает только в воздухе...а как же тогда поворачивается игрок, во время бега? скажу сразу для чего это нужно)) у меня есть анимация ходьбы на руках, только мне нужно вместе с камерой игрока поворачивать...как вычислить угол я знаю, я ставлю зацикленную проверку:

:HANDSTAND
wait 0
if
actor.Animation($PLAYER_ACTOR) == "HANDSTAND"
jf @HANDSTAND

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

Last edited by BoPoH (07-11-2010 10:38)


userbar.png

Offline

#2702 07-11-2010 11:59

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

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

я вычисляю нужный угол, а теперь мне нужно применить этот угол, только чтобы он применялся не моментально, а плавно

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

Last edited by Den_spb (07-11-2010 12:02)

Offline

#2703 07-11-2010 13:07

BoPoH
From: Каушаны
Registered: 21-02-2009
Posts: 77

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

Den_spb wrote:

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

что-то я сомневаюсь что это будет плавно...нет, мне бы опкодик какой-нибудь вроде 083E только чтоб на земле работал)


userbar.png

Offline

#2704 07-11-2010 14:05

Sergey81
Registered: 19-12-2008
Posts: 654

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

BoPoH wrote:

это было бы то что нужно, только вот как найти адрес в памяти?

Я на практике не проверял, но на gtaf можно найти много всяких разных адресов. Я использую принт-версию, ибо поиск там сломался: http://www.gtaforums.com/index.php?act= … 7&t=194199
Я думаю тебе для начала нужен пост Wesser'a, ищи его через браузер - Posted by: Wesser Feb 2 2010, 19:42
Незнаю, будет ли эффект от изменения значений этих адресов, не проверял.
+ Ещё этот опкод можно попробовать.

Last edited by Sergey81 (07-11-2010 14:08)

Offline

#2705 07-11-2010 14:30

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

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

BoPoH wrote:
Den_spb wrote:

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

что-то я сомневаюсь что это будет плавно...нет, мне бы опкодик какой-нибудь вроде 083E только чтоб на земле работал)

Смотря как мелко поделить угол. Если доля будет составлять 10.0 градусов, то действительно получится неплавно. Или надо искать подходящие опкоды.

Last edited by Den_spb (07-11-2010 14:33)

Offline

#2706 07-11-2010 21:45

Sergey81
Registered: 19-12-2008
Posts: 654

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

Как можно получить указатель на рандомную машину в любом месте SA(или хотя бы создавать её там), чтоб потом поставить на неё маркер и проверять уничтожена она или нет?
Интересует именно чтоб машина была в любом месте, но следовала по путям как трафик, а не была где-нибудь внутри здания(в случае если её придётся создавать).

Last edited by Sergey81 (07-11-2010 21:53)

Offline

#2707 07-11-2010 22:25

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

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

Как можно получить указатель на рандомную машину в любом месте SA

Есть несколько стандартных опкодов (искать по словам get car) и опкод клео4 0AE2.

Last edited by Den_spb (07-11-2010 22:25)

Offline

#2708 08-11-2010 09:32

Sergey81
Registered: 19-12-2008
Posts: 654

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

Я решил всё же создавать, для надёжности.
Вот почти готовый код(форматирования нет, но для таких маленьких скриптов мне его делать лень):

{$CLEO .cs}
0000:

while true
wait 0
if 
   Actor.DrivingVehicleType($PLAYER_ACTOR, #HYDRA)
then


if
0AB0:  key_pressed 54
then
wait 500
model.Load(#PONY)
model.Load(#BALLAS2)
038B: load_requested_models 
wait 3
Car.Create(29@, 413, 0.0, 0.0, 0.0)
30@ = Marker.CreateAboveCar(29@)
0129: 28@ = create_actor_pedtype 23 model #BALLAS2 in_car 29@ driverseat 
wait 1
00A8: set_car 29@ to_psycho_driver  
wait 1
model.Destroy(#PONY)
model.Destroy(#BALLAS2)
0@ = 1

while 0@ == 1
wait 0
if 
//02BF:   car 29@ sunk 
Car.Wrecked(29@) 
then
Marker.Disable(30@)
Car.Destroy(29@)
0109: player $PLAYER_CHAR money += 1500 
0@ = 0
end

if //and
//not 30@ == 0
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #HYDRA 
then
Marker.Disable(30@)
Car.Destroy(29@)
0@ = 0
end
end
end
end

end

Вот теперь бы ещё спавнить транспорт в координатах рандомных, но в пределах путей трафика.

Last edited by Sergey81 (08-11-2010 09:34)

Offline

#2709 08-11-2010 13:54

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

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

09BF: set_random_traffic_spawn_to_model #TOPFUN // Load the vehicle model before using this

Посмотри в main миссию 10. Как раз на эту тему.

Offline

#2710 09-11-2010 04:12

Sergey81
Registered: 19-12-2008
Posts: 654

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

kenking wrote:

Посмотри в main миссию 10. Как раз на эту тему.

Не совсем то. Сделал в общем так:

0208: 5@ = random_float_in_ranges -100000.0 100000.0 
0208: 6@ = random_float_in_ranges -100000.0 100000.0 
0208: 7@ = random_float_in_ranges -100000.0 100000.0 
04D3: get_nearest_car_path_coords_from 5@ 6@ 7@ type 2 store_to 5@ 6@ 7@

wait 3
Car.Create(29@, 413, 5@, 6@, 7@)

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

Offline

#2711 09-11-2010 08:12

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

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

Попробуй

0587: enable_car 29@ validate_position 0

а чем тебе не подходит опкод

09BF: set_random_traffic_spawn_to_model #TOPFUN // Load the vehicle model before using this

движок сам спаунит транспорт на пути.

Offline

#2712 09-11-2010 10:32

Sergey81
Registered: 19-12-2008
Posts: 654

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

kenking wrote:

движок сам спаунит транспорт на пути.

А как тогда на этот транспорт навесить метку? Проверять его состояние и т.д.?
А вот 0587 работает отлично, то что нужно, спасибо.
Вот такой получился обновлённый код:

{$CLEO .cs}
0000:
8@ = 0
while true
wait 0
if or
   Actor.DrivingVehicleType($PLAYER_ACTOR, #HUNTER)
   Actor.DrivingVehicleType($PLAYER_ACTOR, #HYDRA)
then

if and
8@ == 0
0AB0:  key_pressed 54
then 
wait 10
8@ = 1  
end

end


if
8@ == 1
then
wait 500
model.Load(#PONY)
model.Load(#BALLAS2)
038B: load_requested_models

//04C4: store_coords_to 5@ 6@ 7@ from_actor $PLAYER_ACTOR with_offset 0.0 25.0 1.0 
0208: 5@ = random_float_in_ranges -100000.0 100000.0 
0208: 6@ = random_float_in_ranges -100000.0 100000.0 
0208: 7@ = random_float_in_ranges -100000.0 100000.0 
04D3: get_nearest_car_path_coords_from 5@ 6@ 7@ type 2 store_to 5@ 6@ 7@

wait 3
Car.Create(29@, 413, 5@, 6@, 7@)
0587: enable_car 29@ validate_position 0
30@ = Marker.CreateAboveCar(29@)
0129: 28@ = create_actor_pedtype 23 model #BALLAS2 in_car 29@ driverseat 
wait 1
00A8: set_car 29@ to_psycho_driver
//0587: enable_car 29@ validate_position 0  
wait 1
model.Destroy(#PONY)
model.Destroy(#BALLAS2)
0@ = 1

while 0@ == 1
wait 0
if 
//02BF:   car 29@ sunk 
Car.Wrecked(29@) 
then
Marker.Disable(30@)
Car.Destroy(29@)
0109: player $PLAYER_CHAR money += 1500 
0@ = 0
end

if and
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #HYDRA
80DD:   not actor $PLAYER_ACTOR driving_car_with_model #HUNTER
then
Marker.Disable(30@)
Car.Destroy(29@)
0@ = 0
8@ = 0
end

end


end

end

Рандомизация координат в принципе работает, но как то в пределах одного и того же места...

Last edited by Sergey81 (09-11-2010 10:44)

Offline

#2713 09-11-2010 13:57

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

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

Sergey81 wrote:

А как тогда на этот транспорт навесить метку? Проверять его состояние и т.д.?

...........
053E: 29@ = get_random_car_with_model #PONY in_rectangle_cornerA 1@ 2@ cornerB 4@ 5@ 
if  
  Car.Defined(29@)
  then
         30@ = Marker.CreateAboveCar(29@)
..........

Проверить можно ещё транспорт с водилой или на парковке просто стоит и т.д.

P.S. Почему проверки на загруженность моделей в коде нет?

Last edited by kenking (09-11-2010 14:03)

Offline

#2714 09-11-2010 19:23

Sergey81
Registered: 19-12-2008
Posts: 654

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

kenking wrote:

P.S. Почему проверки на загруженность моделей в коде нет?

А какой вобще смысл в такой проверке? Разве что то может помешать их загрузке после команды model.Load ?

Offline

#2715 09-11-2010 19:31

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

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


GIMS developer

Offline

#2716 09-11-2010 19:51

Sergey81
Registered: 19-12-2008
Posts: 654

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

3Doomer wrote:

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

Но работает же. Добавлю тогда проверку на всякий случай.

Offline

#2717 09-11-2010 20:35

BoPoH
From: Каушаны
Registered: 21-02-2009
Posts: 77

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

Den_spb wrote:

Смотря как мелко поделить угол. Если доля будет составлять 10.0 градусов, то действительно получится неплавно. Или надо искать подходящие опкоды.

ты не понял что имею ввиду под словом "плавно")) я имел ввиду не то что он рывками поворачивается, а то что он поворачивается мгновенно. Ты, например, если бежишь, не можешь ведь моментально повернуть в другую сторону, в СА при беге это учтено, хотя и не полностью, и если ты сначала бежишь вперёд, а потом резко повернёшь камеру назад, то он не мгновенно повернётся в эту сторону, а постепенно, делая полукруг...того же эффекта мне нужно добиться и при воспроизведении анимации...


userbar.png

Offline

#2718 09-11-2010 20:52

3Doomer
From: КаZан
Registered: 14-05-2008
Posts: 659
Website

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

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

ставь не 10, а 2, например...


GIMS developer

Offline

#2719 10-11-2010 16:28

BoPoH
From: Каушаны
Registered: 21-02-2009
Posts: 77

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

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


userbar.png

Offline

#2720 10-11-2010 16:42

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

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

Успокойся, дыши глубоко. Не подходит один способ - ищи другой, более подходящий.

Offline

#2721 12-11-2010 06:09

Amaimon
From: Yakutsk
Registered: 20-03-2009
Posts: 11

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

Добрый день всем:) у меня будет два вопроса: можно ли каким либо образом через память игры установить скорость движения машин по магистралям, например, кольцевой по LV. И второй: как сделать так чтобы машина, если она перевернулась, не загорелась? заранее всем спасибо:)


Эпитафия на могиле фидошника: "Меня видно?"

Offline

#2722 13-11-2010 12:34

d88
Registered: 15-12-2009
Posts: 254
Website

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

Кто-нибудь случайно не знает, можно ли как-то отменить смерть игрока? Т.е. здоровье на 0, а он живой.

Offline

#2723 13-11-2010 21:25

CraZZZy-GameRRR
From: Москва
Registered: 11-08-2009
Posts: 97
Website

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

Для изменения характера существует опкод 07DD. А как изменить другие статы?

Offline

#2724 13-11-2010 21:38

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

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

Статы игрока можно изменить через память. Адреса есть ЗДЕСЬ

Offline

#2725 13-11-2010 21:46

CraZZZy-GameRRR
From: Москва
Registered: 11-08-2009
Posts: 97
Website

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

Во-первых, здесь статы не все, а во-вторых, тут только для игрока.

Offline

Board footer

Powered by FluxBB