#3326 28-05-2011 12:02

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

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

А хватает он твою машину. Искать нужно по другому. Посмотри на предыдущей странице. Правда там гоночная миссия . Но суть одна и та же.

Offline

#3327 28-05-2011 12:05

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

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

@met dog - у тебя чё, капс залип? smile


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

Offline

#3328 28-05-2011 12:40

met dog
Registered: 22-03-2011
Posts: 64

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

Но там же авто уже записаны в переменые (не можешь же ты проверять расстояние между несуществующими машинами )

Offline

#3329 28-05-2011 13:05

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

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

И один и второй опкод записывает твою машину. Так понятнее.

Offline

#3330 28-05-2011 13:14

met dog
Registered: 22-03-2011
Posts: 64

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

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

Offline

#3331 28-05-2011 13:16

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

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

У меня вопросы. Какие должны быть задержки по длине. Для безопасной работы нескольких десятков скриптов. Если я небуду обьявлять значения переменных в скрипте иммунитетов на авто. Будет ли работать изменяя значения только нужного иммунитета.
':-:'+################
можно прикрепить игрока к авто. Я знаю что можно прикрепить обьект к авто. А игрока?

Last edited by 444andrei444 (28-05-2011 14:51)

Offline

#3332 28-05-2011 18:43

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

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

444andrei444 wrote:

можно прикрепить игрока к авто. Я знаю что можно прикрепить обьект к авто. А игрока?

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

UPD. Вылет... вероятно нельзя прикрепить актёра к чему-либо вообще, кроме как опкодом 04F4. Делал так:

{$CLEO}
model.Load(#ADMIRAL)
038B: load_requested_models
wait 500

:1
wait 0
if
0ab0: 48
jf @1
0A8C: write_memory 0x495434 size 1 value 0x90 virtual_protect 1
car.Create(1@, #ADMIRAL, 0.0, 0.0, 20.0)
wait 500
0681: attach_actor $PLAYER_ACTOR to_car 1@ with_offset 0.0 0.0 1.0 rotation 0.0 0.0 0.0 
0A8C: write_memory 0x495434 size 1 value 0x9C virtual_protect 1
wait 1000
jump @1

может я что-то неправильно сделал всё-таки? хотя думаю всё-таки сделал правильно...

Last edited by Voron295 (28-05-2011 19:10)


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

Offline

#3333 28-05-2011 22:47

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

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

может я что-то неправильно сделал всё-таки?

Ошибок несколько:
1.Команда

.text:00495434 0F8                 mov     ecx, _ObjectPool

в hex-виде представлена так (см. вкладку hex-view a в IDA):

8B 0D 9C 44  B7 00

, где 8B 0D - это опкод (mov ecx, значение), а 9C 44  B7 00 - это значение, записываемое в регистр ecx (0x00B7449C).
Нужно заменить значение третьего байта команды, поэтому вместо адреса 0x495434 надо подставить0x495436.
2.Также нужно заменить команду:

.text:0049543B 0FC                 call    _CPool_CObject__atHandle ; Call Procedure

на

.text:0049543B 0FC                 call    _CPool_CPed__atHandle ; Call Procedure

Причём в команду вызова функции подставляется не адрес функции, а разница между адресом функции и адресом команды, следующей за командой вызова функции ( http://sannybuilder.com/forums/viewtopic.php?id=1068 ).
3.Необходимо убрать ожидание (wait 500) между правкой опкода и его использованием.

А вообще чтобы прикрепить игрока к авто, можно просто поместить его в туррет:

0464: put_actor $PLAYER_ACTOR into_turret_on_car 1@ at_car_offset 5@ 10@ 7@ position 0 shooting_angle_limit 360.0 with_weapon 12@

Offline

#3334 29-05-2011 00:52

met dog
Registered: 22-03-2011
Posts: 64

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

я понял какую машину этот опкод хватал.машину на которой ездил я. написал так

{$VERSION 3.1.0027}
{$CLEO .cs}
wait 1000
:not_defined
wait 0
if
0256:   player $PLAYER_CHAR defined 
else_jump @not_defined
:defined
wait 100
if 
00E1:   player 0 pressed_key 11 
else_jump @not_defined
:pressed
wait 100
if
00DF:   actor $PLAYER_ACTOR driving 
else_jump @not_defined
:driving
wait 100
00D9: 4@ = actor $PLAYER_ACTOR car 
0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
:defined_car
WAIT 0
if  and
056E:   car 0@ defined 
80DD:   not actor $PLAYER_ACTOR driving_car_with_model 0@// попытался исправить косяк с самоуничтожением но не вышло
056D:   actor 1@ defined
else_jump @driving
020B: explode_car 0@ // взрывать должен по идее не мою тачку ,НО ЭТО НЕ ТАК (ЭТО ПРОСТО ДЛЯ НАГЛЯДНОСТИ ОПКОД НАПИСАН НА САМОМ ДЕЛЕ Я ХОЧУ СДЕЛАТЬ СКРИПТ КОТОРЫЙ ДАЁТ ВОЗМОЖНОСТЬ ЦЕПЛЯТЬ ЛЮБОЙ АВТО)
:END
WAIT 100
CAR.RemoveReferences(0@)
ACTOR.RemoveReferences(1@)
JUMP @not_defined

ПОДСКАЖИТЕ КАК ИСПРАВИТЬ (ЧТОБЫ ВЗРЫВАЛО НЕ МОЙ АВТОМОБИЛЬ)

Last edited by met dog (29-05-2011 01:01)

Offline

#3335 29-05-2011 07:04

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

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

@met dog
Опкод 0AB5 записывает в переменные хэндлы ближайших к актеру машины и прохожего. Если близко к актеру нет ни одной машины или прохожего, в соответствующую переменную будет записано -1. Если игрок в транспорте, то запишется в переменную транспорт игрока. Захватывать транспорт надо другими опкодами. Тебе же уже про это написали.

met dog wrote:

МАШИНА ДОЛЖНА НАХОДИТСЯ МАКСИМУМ В ЧЕТЫРЕХ МЕТРАХ ОТ ИГРОКА

??? Расстояние в 4 игровых метра слишком мало. Если игрок в транспорте, то другое авто должно находится вплотную к транспорту игрока.

Вот пример скрипта:

{$CLEO .cs}
0000:
while true
    wait 0
    if
      Player.Defined($PLAYER_CHAR)
    then
        if and 
          Actor.Driving($PLAYER_ACTOR)
          00E1: player 0 pressed_key 11 
        then
            04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
            073E: get_car_in_sphere 1@ 2@ 3@ radius 20.0 model -1 handle_as 4@ 
            if
              Car.Defined(4@)
            then
                if
                  not Car.Wrecked(4@)
                then  
                      020B: explode_car 4@
                end    
            end
        end
    end
end

Offline

#3336 29-05-2011 10:41

met dog
Registered: 22-03-2011
Posts: 64

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

СПАСИБО СО ВЗРЫВОМ РАБОТАЕТ НО ВОТ ЧУТЬ ПЕРЕДЕЛАЛ

{$CLEO .cs}
0000:
while true
    wait 0
    if
      Player.Defined($PLAYER_CHAR)
    then
        if and 
          Actor.Driving($PLAYER_ACTOR)
          00E1: player 0 pressed_key 11 
        then
            04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
            00D9: 5@ = actor $PLAYER_ACTOR car // mission only 
            073E: get_car_in_sphere 1@ 2@ 3@ radius 20.0 model -1 handle_as 4@ 
            if  AND
              Car.Defined(4@)
               Car.Defined(5@)
            then
                if AND
                  not Car.Wrecked(4@)
                   not Car.Wrecked(5@)
                then  
                  0683: attach_car 4@ to_car 5@ at_offset 0.0 -4.6 0.65 rotation 2.0 2.0 2.0
                end    
            end
        end
    end
end

А ВОТ ЭТО НЕ РАБОТАЕТ МАШИНУ НЕ ЦЕПЛЯЕТ sad вроде написано все правильно ...что я делаю не так !?:cry:

Last edited by met dog (29-05-2011 12:44)

Offline

#3337 29-05-2011 12:41

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

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

У меня вопрос как сделать весь штат открытым сначала игры.

Offline

#3338 29-05-2011 13:11

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

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

@met dog
1) Надо использовать опкод 03C0, а не 00D9
2) Проверка Car.Defined(5@) - не нужна.

{$CLEO .cs}
0000:
while true
    wait 0
    if
      Player.Defined($PLAYER_CHAR)
    then
        if and 
          Actor.Driving($PLAYER_ACTOR)
          00E1: player 0 pressed_key 11 
        then
            03C0: 5@ = actor $PLAYER_ACTOR car
            04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 0.0
            073E: get_car_in_sphere 1@ 2@ 3@ radius 20.0 model -1 handle_as 4@ 
            if
              Car.Defined(4@)
            then
                if and
                  not Car.Wrecked(4@)
                  not Car.Wrecked(5@)
                then  
                    0683: attach_car 4@ to_car 5@ at_offset 0.0 -4.6 0.65 rotation 2.0 2.0 2.0
                end    
            end
        end
    end
end

Offline

#3339 29-05-2011 13:18

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

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

444andrei444 wrote:

У меня вопрос как сделать весь штат открытым сначала игры.

0629: change_integer_stat 181 to 4

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


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

Offline

#3340 29-05-2011 13:28

met dog
Registered: 22-03-2011
Posts: 64

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

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

Last edited by met dog (29-05-2011 13:30)

Offline

#3341 29-05-2011 13:30

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

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

Den_spb wrote:

3.Необходимо убрать ожидание (wait 500) между правкой опкода и его использованием.

wait 500 я поставил лишь для того, чтобы убедиться, что вылет происходит не раньше опкода 0681.
У меня такое ощущение, что я стану учить скорее ассемблер, чем Си smile
И, как я понял из данной вами ссылки, можно создавать фактически новые опкоды с применением стандартных функций игры прямо в скрипте?

met dog wrote:

в поиске  опкод который создает невидимую  стену (если не помнишь ,то есть в разделе о пешеходах )

Что-то я не вижу связи между невидимой стеной и пешеходами, точнее можно? smile

UPD. Как я понял, один из опкодов: 01E8, 022B или 04С0. Склоняюсь к последнему...

Last edited by Voron295 (29-05-2011 13:39)


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

Offline

#3342 29-05-2011 13:44

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

Offline

#3343 29-05-2011 13:55

met dog
Registered: 22-03-2011
Posts: 64

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

а есть ли программа для редактирования и создания игровых путей (помню ,что Seemann писал где то о ней . Сделал ли он ее ?)=)

Offline

#3344 29-05-2011 14:08

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

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

444andrei444 wrote:

Не получается

это лишь выключит получение 4 звёзд за пересечение границ....


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

Offline

#3345 29-05-2011 14:32

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

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

met dog wrote:

а есть ли программа для редактирования и создания игровых путей (помню ,что Seemann писал где то о ней . Сделал ли он ее ?)=)

Для создания - carrec.cs
Для редактирования - редактор от Sanchez (впадлу щас искать тему, поищи по форуму или на вики)

Offline

#3346 29-05-2011 16:02

met dog
Registered: 22-03-2011
Posts: 64

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

а есть ли команда которая предвещает дальнейшее выполнение любой команды после нее??? пример:
<код>
и дальше
jump @car
jump @car2
т.е надо чтобы выполнилось jump @car or jump @car2.

Offline

#3347 29-05-2011 22:34

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

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

См. справку: Статьи - Опытным пользователям - Таблицы переходов

Offline

#3348 30-05-2011 00:22

met dog
Registered: 22-03-2011
Posts: 64

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

А можно ли пирсвоить актеру определённое поведение к примеру ударил или вытащил из машины  он побежит в панике ,а не набросится на тебя с кулаками ?И ещё существует ли проверка на соприкосновение
обьекта с авто ?(нужно сделать скрипт в котором наезжаешь на бургеры и они взрываются )

Last edited by met dog (30-05-2011 00:36)

Offline

#3349 30-05-2011 02:14

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

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

Попробуй присвоить трусливое поведение
http://sannybuilder.com/forums/viewtopic.php?id=44

Offline

#3350 30-05-2011 02:42

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

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

Юбилейный пост
.........
Решил сделать скрипт диалогов. Выбор осушествляется через меню. Хотелось бы сделать чтобы из меню запускались скрипты с расширением .s но если в них осуществлять поиск ближайшего актера заново, то актер может быть уже не тот. Вариант 2 засунуть все действия в скрипт меню, но тогда код будет очень длинный и не удивлюсь если я в нем запутаюсь. Может еще есть варианты?

Offline

Board footer

Powered by FluxBB