#4126 11-04-2012 13:24

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

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

- можно ли исключить определенную модель машины из траффика;

Файл вроде называется cargrp.dat

- как проверить, крутится ли колесо у автомобиля, с какой скоростью и т. д.

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

32@ = 0
// здесь вычисляем угол в первый раз
wait 0
// здесь вычисляем угол во второй раз
0093: 31@ = integer 32@ to_float 
// УглСкорость = ИзменениеУгла / 31@

Offline

#4127 11-04-2012 14:56

Dr_Emmett_Brown_2011
Registered: 28-04-2011
Posts: 80

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

Файл вроде называется cargrp.dat

Имею в ввиду, прямо в игре, то есть, можно включить и отключить, не выходя из игры.

Last edited by Dr_Emmett_Brown_2011 (13-04-2012 00:48)

Offline

#4128 15-05-2012 08:58

Gyr
From: Серпухов
Registered: 03-02-2009
Posts: 246
Website

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

Dr_Emmett_Brown_2011 wrote:
Файл вроде называется cargrp.dat

Имею в ввиду, прямо в игре, то есть, можно включить и отключить, не выходя из игры.

Может вот эти ребята:

0732: random_car_generator_disable_model #SAVANNA 
0733: random_car_generator_enable_model #SAVANNA

Специально для тех, кто не умеет читать по английски. Мой ник читается как "ГИР"!!!
Народная мудрость:
Прежде чем задавать вопросы,ПОЧИТАЙ СПРАВКУ!!!!

Offline

#4129 15-05-2012 18:51

russkiy
Registered: 02-08-2011
Posts: 41

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

Вот КУСОК кода. Проблема в том,что объект создаётся на координатах ГГ (прямо внутри его). Но ведь я сделал манипуляции с переменными:

$X += 2 
$Z -= 1

По крайней мере так в С++,но и в скриптовом тоже..
В чём проблема?

wait 1360 
1@ = Object.Init(1520, 10@, 20@, 30@)
070A: AS_actor $PLAYER_ACTOR attach_to_object 1@ offset 0.05 0.06 0.05 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1 
Actor.StorePos($PLAYER_ACTOR, $X, $Y, $Z)
wait 100 
$X += 2 
$Z -= 1 
0605: actor $PLAYER_ACTOR perform_animation_sequence "M_SMK_DRAG" IFP_file "SMOKING" 4.0 loop 1 0 0 0 time 7140 // versionA 
wait 7140 
0605: actor $PLAYER_ACTOR perform_animation_sequence "BAT_PART" IFP_file "BASEBALL" 4.0 loop 1 0 0 0 time 530 // versionA 
$BEER2 = Object.Create(1520, $X, $Y, $Z)
Object.Destroy(1@)

Offline

#4130 15-05-2012 20:37

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

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

russkiy wrote:

Вот КУСОК кода. Проблема в том,что объект создаётся на координатах ГГ (прямо внутри его). Но ведь я сделал манипуляции с переменными:

$X += 2 
$Z -= 1

По крайней мере так в С++,но и в скриптовом тоже..
В чём проблема?

Конечно так нифига у тебя не выйдет. SannyBulder не может понять сам, где у тебя integer переменные, а где float. Поставь 2.0 вместо 2 и 1.0 вместо 1.


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

Offline

#4131 16-05-2012 13:40

DeShaitan
Registered: 16-05-2012
Posts: 1

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

Здрасте. У меня проблемка. Нужно сделать маркер для старта миссии.

пишу:

:START_MISSION
wait 0 
02A7: $223 = create_icon_marker_and_sphere 25 at -62.5517 -1448.35 9.42712

:START_MISSION_2
wait 250 
if and
Player.Defined($PLAYER_CHAR)
0102: actor $PLAYER_ACTOR stopped_near_point_on_foot -62.5517 -1448.35 9.42712 radius 2.0 2.0 1.0 sphere 1
Jf @START_MISSION_2
Marker.Disable($223)
start_mission 1 
end_thread

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

А после перезахода в файл main.scm вместо этого скрипта вот это:

wait 0 
02A7: $223 = create_icon_marker_and_sphere 25 at -62.5517 -1448.35 9.42712 

:INITIAL_29001
wait 250 
if and
   Player.Defined($PLAYER_CHAR)
0102:   actor $PLAYER_ACTOR stopped_near_point_on_foot -62.5517 -1448.35 9.42712 radius 2.0 2.0 1.0 sphere 1 
else_jump @INITIAL_29001 
Marker.Disable($223)
start_mission 1  // Intro
end_thread

Код почему то меняется. Исчезает :START_MISSION и откуда то появляется :INITIAL_
Вчера вроде такой же код писал (как в справке) и все работало...


p.s. Речь о GTA: Vice City.

Offline

#4132 17-05-2012 09:15

JuSskeee*
From: Мариуполь
Registered: 25-11-2011
Posts: 51

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

Всем привет.
1. Как на экран вывести изображение? Нужно использовать текстуры или можно прямо изображение?
(Нашел, вот статья).
2. Как сделать проверку, которая работает на протяжении всего скрипта? Например проверка на нанесения ущерба актеру игроком:

051A:   actor $STD damaged_by_actor $PLAYER_ACTOR

Что бы в любой в любой момент, если нанесен ущерб определенному актеру, это приводило к определенной метке. Например к провалу миссии.

Заранее спасибо.

Last edited by JuSskeee* (17-05-2012 09:31)


Your Banny Wrote

Offline

#4133 17-05-2012 13:42

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

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

JuSskeee* wrote:

2. Как сделать проверку, которая работает на протяжении всего скрипта? Например проверка на нанесения ущерба актеру игроком:

051A:   actor $STD damaged_by_actor $PLAYER_ACTOR

Что бы в любой в любой момент, если нанесен ущерб определенному актеру, это приводило к определенной метке. Например к провалу миссии.

Заранее спасибо.

Использовать потоки

Offline

#4134 17-05-2012 16:30

JuSskeee*
From: Мариуполь
Registered: 25-11-2011
Posts: 51

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

Jack Daniel's wrote:

Использовать потоки

Мне это ни о чем не говорит. Приведи пример, пожалуйста.


Your Banny Wrote

Offline

#4135 17-05-2012 18:04

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

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

2. Как сделать проверку, которая работает на протяжении всего скрипта? Например проверка на нанесения ущерба актеру игроком:

Видимо у тебя не совсем правильное представление о работе скриптов. Команды в коде исполняются друг за другом, в каждый момент времени выполняется только одна команда. Поэтому команды не могут работать "сами по себе" - для получения эффекта от какого-либо опкода его обязательно надо выполнить. Если эффект должен проявляться постоянно, то и опкод должен выполняться постоянно:

{$CLEO}
0000:
while true
    wait 0
    if
        player.Defined($player_char)
    then
        if
            056D:   actor $STD defined     
        then
            if
                051A:   actor $STD damaged_by_actor $PLAYER_ACTOR
            then
                ....
            end
        end
    end
end

Last edited by Den_spb (17-05-2012 18:05)

Offline

#4136 18-05-2012 16:29

Vital
From: Москва
Registered: 07-11-2010
Posts: 64
Website

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

Вот вопросик. Как зовётся анимация спринта игрока? Именно игрока.  А ещё хотел бы спросить, почему событие 58 (актер горит) не работает, да и почему вообще некоторые события не работают. Заранее благодарен.

Offline

#4137 18-05-2012 17:58

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

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

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

Offline

#4138 20-05-2012 17:28

Drift_Legend
From: Феодосия
Registered: 21-06-2009
Posts: 18

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

Здравствуйте, ответьте на вопрос кто знает:
как можно проверить включены ли фары на автомобиле в СА?
(интересует не проверка разбиты/не разбиты, а именно включены/не включены)
Благодарен...

Offline

#4139 20-05-2012 19:11

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

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

0A97: 0@ = car 0@ struct
0@ += 0x584
0A8D: 0@ = read_memory 0@ size 1 virtual_protect 0
if
    0@ > 0
then
    // фары включены
end

Offline

#4140 20-05-2012 21:03

Drift_Legend
From: Феодосия
Registered: 21-06-2009
Posts: 18

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

сначала не разобрался с переменными, затем поправил и заработало, спасибо! wink
это была проверка выключены ли фары. А как проверить включены или нет?

Last edited by Drift_Legend (20-05-2012 23:01)

Offline

#4141 21-05-2012 10:55

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

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

Вообще-то наоборот - это проверка того, что фары горят (полученное число больше нуля). Если фары не горят, то по смещению 0x584 записан 0.
Вот скрипт для вывода значения на экран (для текущей машины игрока):

{$CLEO}
0000:
while true
    wait 0
    if
        player.Defined($player_char)
    then
        if
            actor.Driving($PLAYER_ACTOR)
        then
            03C0: 0@ = actor $PLAYER_ACTOR car
            0A97: 0@ = car 0@ struct
            0@ += 0x584
            0A8D: 0@ = read_memory 0@ size 1 virtual_protect 0
            
            03F0: enable_text_draw 1
            045A: draw_text_1number 200.0 200.0 GXT 'NUMBER' number 0@  // ~1~    > 0 - фары горят
        end
    end
end

Last edited by Den_spb (21-05-2012 10:59)

Offline

#4142 23-05-2012 06:42

Ruzel
Registered: 03-06-2010
Posts: 61

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

Здравствуйте. У меня такой вопрос: в клео скриптах, например если я присвою значение переменной 1@ равное еденице (тип integer), то после этого я смогу присвоить этой же переменной значение 54.312343 (тип float)? И если наоборот, тоже можно?

Offline

#4143 23-05-2012 13:22

romanzi
Registered: 01-08-2011
Posts: 2

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

Как конвертить Cleo миссию в main?
Что-то отличается в строении?

Offline

#4144 23-05-2012 14:39

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

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

Здравствуйте. У меня такой вопрос: в клео скриптах, например если я присвою значение переменной 1@ равное еденице (тип integer), то после этого я смогу присвоить этой же переменной значение 54.312343 (тип float)? И если наоборот, тоже можно?

Да, можно.

Что-то отличается в строении?

Да вроде ничего не отличается.

Offline

#4145 03-06-2012 14:29

Dr_Emmett_Brown_2011
Registered: 28-04-2011
Posts: 80

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

Можно ли проверить, загружена ли текстура? Хотя бы, через память.

Offline

#4146 08-07-2012 10:39

Drift_Legend
From: Феодосия
Registered: 21-06-2009
Posts: 18

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

здравствуйте! подскажите, кто знает, пожалуйста, как можно узнать сколько оборотов сделало колесо (хотя бы приблизительные значения)?
или какую-нибудь проверку типа: крутится/не крутится...

Last edited by Drift_Legend (08-07-2012 10:41)

Offline

#4147 08-07-2012 18:39

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

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

Drift_Legend wrote:

здравствуйте! подскажите, кто знает, пожалуйста, как можно узнать сколько оборотов сделало колесо (хотя бы приблизительные значения)?
или какую-нибудь проверку типа: крутится/не крутится...

По-моему в структуре машины есть углы вращения компонентов. Колёса там тоже есть. Посмотри тут.


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

Offline

#4148 08-07-2012 21:35

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

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

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

CarStruct +0x458 = [float] Размер колёс машины из vehicle.ide

По этим данным несложно определить, сколько оборотов сделало колесо.

Last edited by Den_spb (08-07-2012 21:36)

Offline

#4149 10-07-2012 18:08

Drift_Legend
From: Феодосия
Registered: 21-06-2009
Posts: 18

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

Voron295, Den_spb, спасибо, мужики, буду копать))

Offline

#4150 11-07-2012 17:06

Drift_Legend
From: Феодосия
Registered: 21-06-2009
Posts: 18

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

еще вопросик: как заставить на транспорте (машине) гореть стоп-сигналы (не габариты) как при нажатии тормоза без участия актёра?

Offline

Board footer

Powered by FluxBB