#2001 27-03-2010 11:50

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

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

Скорее всего (довольно кстате интересный факт) дело в вызове миссии из другой миссии, придется делать в основном теле, т.е. в main'е.


I know everything and nothing...

Offline

#2002 27-03-2010 12:08

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

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

PIT wrote:

аа, наверно в клео 4 было добавлено, а ты мчто в моём скрипте изменил? да и там по идее теперь вообще переменные 1 и 2 не участвуют ))

А что, уже CLEO 4 вышла?

Сейчас искал опкод для занесения текущей активной зоны игрока в переменную.
И не нашёл! Сам диву даюсь. Был же какой-то, а сейчас пропал... Напомните, пожалуйста!

Ещё один вопрос. На этот раз более существенный (хотя, всё относительно). Как вручную вывести на экран состояние того или иного стата. В игре это используется при отображении прироста (+) или запущения (-) какого-либо скилла.
И, раз уже затронул тему, спрошу ещё одно. Как можно остановить изменение какого-нибудь скилла. Заморзить стат, запретить повышение, или же понижение.

Last edited by Daeman (27-03-2010 12:23)

Offline

#2003 27-03-2010 12:10

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

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

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

Offline

#2004 27-03-2010 12:22

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

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

@Sw[ee]t

Обычно это делается путем переменной какой нибудь, например, так делает R* в своем скрипте, просто ставишь после завершения миссии $Check_miss = 1, а в главном теле проверяешь, если она равна единице и миссия завершена (не забывай про следующее:

0180: set_on_mission_flag_to $ONMISSION // Note: your missions have to use the variable defined here

), то начинаем другую миссию. В принципе рабочая схема.


I know everything and nothing...

Offline

#2005 27-03-2010 19:29

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

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

Как заставить танк ПАЛИТЬ по мне?
_______________________________
Странный ГЛЮК, все последние опкоды на поток в логе = 0001 (wait). Почему?

Last edited by ~AquaZ~ (27-03-2010 20:17)

Offline

#2006 27-03-2010 20:34

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

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

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


I know everything and nothing...

Offline

#2007 28-03-2010 09:19

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

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

mfisto wrote:

@Sw[ee]t

Обычно это делается путем переменной какой нибудь, например, так делает R* в своем скрипте, просто ставишь после завершения миссии $Check_miss = 1, а в главном теле проверяешь, если она равна единице и миссия завершена (не забывай про следующее:

0180: set_on_mission_flag_to $ONMISSION // Note: your missions have to use the variable defined here

), то начинаем другую миссию. В принципе рабочая схема.

Спасибо. Посмотрю что можно с этим сделать

Offline

#2008 28-03-2010 12:27

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

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

Как сделать, чтоб у грузовика BARRACKS изменить тип кузова - всмысле он либо накрыт брезентом либо ничем не накрыт?

Offline

#2009 28-03-2010 18:21

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

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

3Doomer wrote:

да, хотя изначально динамика выключена для обоих...и включать приходится опкодом hmm
object.init получается бесполезен

Не совсем уж бесполезен. Такая solid'ность задействована в некоторых опкодах.
Например,
0339:   anything_in_cube_cornerA 227@ 228@ 229@ cornerB 230@ 231@ 232@ solid 0 car 0 actor 1 object 0 particle 0
или
06BD:   no_obstacles_between 67@ 68@ 69@ and 287@ 288@ 289@ solid 1 car 0 actor 0 object 0 particle 0
То есть, тут проявлятся вся разница между объектом типа solid и динамическим.
Хотя, отчасти с тобой согласен, мала эта разница. Слишком невелика.


Den_spb wrote:

Вопрос: какими опкодами реализованы стационарные пулемётные установки (были на крыше здания в одной из миссий)

Самым что ни на есть прямым ии детальным путём. Меня тоже уже заинтересовывал этот факт. Разбирался.
В мэйне на миссии создаютси объекты, а когда игрок в маркере возле них нажимает кнопку, то игрока помещают в туррет объекта и даруют миниган.
Осуществить, собственно, несложно, но вот выглядит привлекательно.
Находится это в теле миссии 100 ("Up, Up and Away!") Если быть точным - метка HEIST5_6682, строка 349515 grin, во всяком случае, у меня.

~AquaZ~ wrote:

И ещё вопросик возник, как заставить вертолёт двигаться быстро?

Может банально увеличить максимально развиваемую вертолётом скорость? (00AD)

Отвечая на вопросы, сам задался вопросом.
Чему могут быть равны значения четвёртого параметра (в данном случае, равного 29) в опкоде
06E1: AS_actor 50@ using_car 51@ target_car 69@ with_order 29 max_speed 30.0 traffic_flag 2
А также напомните, если не затруднит, траффик-флаги. Что-то уже не помню, какие там есть.
Кто-нибудь знает, или опять всё придётся вручную тестить? smile

Offline

#2010 28-03-2010 18:31

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

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

d88 wrote:

Как сделать, чтоб у грузовика BARRACKS изменить тип кузова - всмысле он либо накрыт брезентом либо ничем не накрыт?

Здесь тебе нужен опкод 0506
Для этой модели (#BARRACKS) существуют три вариации.

Offline

#2011 28-03-2010 21:26

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

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

@Daeman

29,30,31,32 я тестил и использовал в своих скриптах когда то, это короче позиции относительно тачки, влево, вправо, впереди позади, только порядок я не помню.
флаги такие 0 - ехать по правилам
                   1 - ехать по правилам, но игнорировать тачки
                   2 - ехать без правил
                   3 - ехать без правил, но игнорировать тачки

Last edited by mfisto (28-03-2010 21:27)


I know everything and nothing...

Offline

#2012 29-03-2010 04:28

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

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

То есть этот параметр (четвёртый) в опкоде 06E1 отвечает за положение, на котором водитель будет вести машину относительно другой тачки?

Также остался открытым всё ещё интересующий меня вопрос.
Как вручную вывести на экран состояние того или иного стата. В игре это используется при отображении прироста (+) или запущения (-) какого-либо скилла.
И, раз уже затронул тему, спрошу ещё одно. Как можно остановить изменение какого-нибудь скилла. Заморзить стат, запретить повышение, или же понижение.

~AquaZ~  wrote:

Как изменить цвет полоски брони и здоровья? Это лучше сделать через SCM, или патчить EXE?

Если всё ещё интересует ответ на этот вопрос.
Гораздо проще настроить цвет через память, а не разными текстурными методами.
0A8C: write_memory 0xBAB22C size 4 value 0@ virtual_protect 0 - для жизней, для бара брони и полоски дыхания не помню, по-моему пылится где-то на моддинге.
Со значением ("value") раздолье для экспериментов.
Вот несколько довольно сносных вариантов, хотя всё зависит от тематики игры (если уж свершилась глобальная модернизация, иначе говоря глобал-мод), а также определяется вкусами тестера.  smile
// -14870092
// -149000
// -210000
// -254000
// -277000
// -1279000

Насколько я помню, параметр цвета равен записи RGB. То есть для каждого цвета из трёх (красный, зелёный, голубой) выделяется трёхзначное число, за исключением нулевого значения. В этом случае число для цвета будет однозначным и равным единственному нулю (0).
Хотя, всё слишком запутано, с этим можно согласиться, посмотрев предложенные мною значения. Цвет здесь может выражаться отрицательным параметром. smile

Last edited by Daeman (29-03-2010 04:33)

Offline

#2013 29-03-2010 05:27

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

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

Решил поэкспериментировать с работой с файлами.
Написал пробный скрипт.
Цель довольно простая: при входе в игру в файл записывается текст.

:0
wait 0
if
0AAB:  file_exists "CLEO\TEST.txt"
jf @0
1@v = "WHAT"
2@v = "ARE"
3@v = "YOU"
4@v = "DOING?"
0A9A: 0@ = openfile "CLEO\TEST.txt" mode 0x77  // IF and SET
0A9E: writefile 0@ size 64 from 1@ // 4 ячейки variable-length string по 16байт каждая, итого 16х4=64б
0A9B: closefile 0@
0A93: end_custom_thread

Всё бы ничего, но текст получается не такой, какой хотелось бы ожидать.
Финальный вид текста таков (при просмотре через блокнот):
"WHATARE YOU DOING?                                              " в конце куча пробелов
А в СБ вовсе литературно не читабелен.
Там проявляются квадратики, замещающие пробелы при просмотре через блокнот, они также невосприимчивы для буфера обмена.
А уж с числами вообще какая-то чушь получается...

Offline

#2014 29-03-2010 05:40

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

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

@Daeman
Правильно, потому что ты использовал часть байт, только из 16 ты используешь стока скока у тебя букв.
Тобишь значит "WHAT" = 4 байта, например.


I know everything and nothing...

Offline

#2015 29-03-2010 08:09

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

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

А я-то думал, что оставшееся место пропускается и не учитывается... а!

То есть, в исправленном виде скрипт должен выглядеть так.

:0
wait 0
if
0AAB:  file_exists "CLEO\TEST.txt"
jf @0
1@v = "WHAT"
2@v = "ARE"
3@v = "YOU"
4@v = "DOING?"
0A9A: 0@ = openfile "CLEO\TEST.txt" mode 0x77  // IF and SET
0A9E: writefile 0@ size 15 from 1@ // по одному байту на каждый символ, итого 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1...=16)
0A9B: closefile 0@
0A93: end_custom_thread

Offline

#2016 29-03-2010 08:17

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

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

Всё равно, результат не тот. В "исправленном варианте получилось"
"WHATARE YOU DOI"
Кучи пробелов в конце нет, текст получился обрезанным.
Ещё вопрос. Почему между первым и вторым словом нет пробела, а между другими имеются?

Offline

#2017 29-03-2010 08:30

Alien
Registered: 12-10-2008
Posts: 564

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

0A9E предназначен для вывода в бинарный файл. Для вывода в текстовый файл надо пользоваться опкодами cleo 4:

{$CLEO}
wait 0
if
    file.Open(0@, "CLEO\TEST1.TXT", "w")
then
    0AD9: write_formatted_text "%s %s %s %s" in_file 0@ "WHAT" "ARE" "YOU" "DOING?"
    file.Close(0@)
end
0a93:

Last edited by Alien (29-03-2010 08:41)

Offline

#2018 30-03-2010 15:31

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

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

Кто знает, как поезд перевести с одного пути на другой? Желательно мягенько, без "перепрыга".

Offline

#2019 30-03-2010 16:44

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

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

пути изменить


GIMS developer

Offline

#2020 30-03-2010 17:18

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

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

А точнее?

Offline

#2021 30-03-2010 17:38

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

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

а точнее, открыть файл с путями в 3д максе и сделать плавные переходы в нужных местах...


GIMS developer

Offline

#2022 30-03-2010 18:36

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

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

КАКОЙ ОПКОД ПЕРЕМЕСТИТ ПОЕЗД С ОДНОГО ПУТИ НА ДРУГОЙ?

Offline

#2023 30-03-2010 19:57

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

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

Такого опкода нет, попробуй через память поменять точки путей.


I know everything and nothing...

Offline

#2024 30-03-2010 20:17

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

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

Ууу... А как найти этот оффсет? Или передвинуть поезд с одного пути на другой через память? Например создать основной путь и отклонение от него как отдельные пути, и переместить поезд? И как свести поезд с рельс?

Last edited by ~AquaZ~ (30-03-2010 20:19)

Offline

#2025 30-03-2010 20:47

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

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

При старте игры tracks-файлы загружаются в память. Чтобы поменять путь поезда во время игры, нужно изменить значения в тех адресах памяти, куда загружены эти файлы. Адреса можно узнать путём изучения кода gta_sa.exe.
Есть скрипт, позволяющий переводить стрелки, можно было бы изучить его код, но он защищён от декомпиляции.

Last edited by Den_spb (30-03-2010 20:48)

Offline

Board footer

Powered by FluxBB