#4801 19-05-2017 02:41

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

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

Я имею ввиду что 0638 используется для актеров в тачке.


I know everything and nothing...

Offline

#4802 19-05-2017 11:15

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

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

mfisto wrote:

Я имею ввиду что 0638 используется для актеров в тачке.

Для тачки вот такой опкод есть:

0526: set_actor 65@ stay_in_car 1 

Offline

#4803 19-05-2017 13:29

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

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

Там вроде для сбрасывания анимации он используется - 0638. Пешком - 05B9


I know everything and nothing...

Offline

#4804 20-05-2017 14:58

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

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

Помните, возле дома Торено припаркован Washington? Я пытался найти его парковочный генератор, но поиск вообще не находит такой машины в мэйне. Как так? Или парковочные генераторы создаются ещё где-то помимо мэйна?

Offline

#4805 20-05-2017 20:19

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

Offline

#4806 23-05-2017 01:17

Shag
Registered: 29-03-2010
Posts: 147
Website

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

Возникла одна идея, требующая записи большого числа значений в файл, чтобы потом скрипт читал этот файл и использовал эти значения.
Кол-во значений столь велико, что хочу написать скрипт, который будет генерироватьть этот файл.
Собственно, вопрос: каким способом можно это сделать, используя опкоды CLEO 2 Вайса(что являются копией CLEO 4 SA)?
Возможно ли как-то в опкоде

0AF3: write_float 0.0 to_ini_file "cleo\config.ini" section "SectionName" key "floatKey"

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

Но вообще, вот этот способ с ключами в ini меня не радует, т.к. файл будет увеличиваться ненужными символами. Хорошо бы создать подобие бинарника...

Last edited by Shag (23-05-2017 01:21)

Offline

#4807 23-05-2017 11:45

Shag
Registered: 29-03-2010
Posts: 147
Website

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

DK22Pac wrote:

Ну создай бинарник - что мешает?

Если бы я знал, как - я бы тут не писал  grin
Допустим, помимо опкодов со строчным чтением/записью есть еще такие:

0A9A: $hFILE = openfile "settings.ini" mode 0x72  // IF and SET
0A9C: 0@ = file $hFILE size
0A9D: readfile $hFILE size 2 to $150
0A9E: writefile $hFILE size 128 from 0@

Чтение: В справке CLEO 4 говорится, что $150 - "переменная в которую будет записан результат чтения. Если размер чтения превышает 4 байта, остаток будет записан в следующую переменную (в данном случае в $151)". А если у меня файл пару килобайт, а локальных переменных только 16? Как произвести копирование байтов из файла в выделенную область памяти?
Т.е. например, у меня такая вот конструкция(забудем килобайты, возьмем всего лишь 8 байт):

05F7: 0@ = label @BUFFER offset // 
000A: 0@ += 4

//и потом где-то внизу буфер на 8 байт:
hex
    FF FF FF FF  00 00 00 00 // handle
    FF FF FF FF  00 00 00 00 //+0x04
    FF FF FF FF  00 00 00 00 //+0x08
    FF FF FF FF  00 00 00 00 //+0x0C
    FF FF FF FF  00 00 00 00 //+0x10
    FF FF FF FF  00 00 00 00 //+0x14
    FF FF FF FF  00 00 00 00 //+0x18
    FF FF FF FF  00 00 00 00 //+0x1C
    FF FF FF FF  00 00 00 00 //+0x20
end

Если я потом из файла опкодом 0A9D "прочитаю" 8 байт в 0@, правильно ли это запишется в буфер? Аналогичный вопрос с записью:
корректно ли этот код

0A9E: writefile $hFILE size 8 from 0@

прочтет 8 байт из буфера и запишет в файл?

Еще я не понимаю, является ли опкод

0AC8: 0@ = allocate_memory_size 8

упрощенным вариантом вышенаписанного выделения буфера памяти, или есть в чем-то отличия?

И последнее: допустим, мои вышеописанные догадки верны, тогда есть 1 момент, который я не понимаю вообще: как из бинарника прочитать какие-то определенные байты, а не весь файл целиком? Или это невозможно? Тот же вопрос и про запись.

Offline

#4808 23-05-2017 16:06

Shag
Registered: 29-03-2010
Posts: 147
Website

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

DK22Pac wrote:
код

Получится такой файл
http://i.imgur.com/RJ1CRF1m.png

Не понимаю, в чем причина, но у меня вылетает. Даже при упрощении кода до

0AA7: call_function 0x48DF90 num_params 2 pop 2 "wb" "test.bin" 0@ // FILE *file = CFileMgr::Open("test.bin", "wb");
0AC7: 2@ = var 3@ offset                                           // float *var_offset = &vars[3];
0AA5: call 0x48DF30 num_params 3 pop 3 4 2@ 0@                 //     CFileMgr::Write(file, var_offset, 4);
3@ += 1.0
0AA5: call 0x48DF30 num_params 3 pop 3 4 2@ 0@                 //     CFileMgr::Write(file, var_offset, 4);
3@ += 1.0
0AA5: call 0x48DF30 num_params 3 pop 3 4 2@ 0@                 //     CFileMgr::Write(file, var_offset, 4);
3@ += 1.0
0AA5: call 0x48DF30 num_params 3 pop 3 4 2@ 0@                 //     CFileMgr::Write(file, var_offset, 4);
3@ += 1.0                                                      //     vars[3] += 1.0f;
0AA5: call 0x48DF30 num_params 3 pop 3 4 2@ 0@                 //     CFileMgr::Write(file, var_offset, 4);
0AA5: call 0x48DEA0 num_params 1 pop 1 0@                          // CFileMgr::Close(file);

, даже если несмотря на "wb" предварительно создавать файл в корневой директории игры либо в папке CLEO(что глупо, но всё же), даже если ставить "wb+" - всё равно игру крашит. Версия Вайса US 1.0. Может всё же как-то можно обойтись опкодами, о которых я выше написал?

Last edited by Shag (23-05-2017 16:08)

Offline

#4809 23-05-2017 18:28

Shag
Registered: 29-03-2010
Posts: 147
Website

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

Ого wow
Спасибо, работает!
2 финальных вопроса:
1) Что означает 360 здесь:

CFileMgr::Seek(file, 360, SEEK_SET);

С остальным я вроде разобрался, а это случайно не кол-во байтов? Что делать, если я не знаю заранее кол-во байтов в файле, стоит ли юзать опкод

0A9C: 0@ = file $hFILE size

, или есть какой-то другой способ? Не загружать же файл 2 раза двумя способами(твоим и средствами CLEO)?

2) Есть ли способ преобразовать число в string, либо добавить к string число, чтобы(это уже немного к другому относится), например, создавать бесконечное число бинарников, заменяя лишь 1 цифру в их названии("test1.bin", "test2.bin" и т.д.). Этот вопрос мне важен не только для бинарников, так что нужен универсальный метод, типа как если бы существовал такой опкод:

8888: 8@ = string "test%d.bin" offset 9@ // 9@ - число, которое будет меняться в названии бинарника

, который потом можно было бы применить тут:

0AA7: call_function 0x48DF90 num_params 2 pop 2 "wb" 8@ 0@

или тут:

0AF5: write_string 8@ to_ini_file "cleo\config.ini" section "SectionName" key "stringKey"

Last edited by Shag (23-05-2017 18:31)

Offline

#4810 23-05-2017 20:31

Shag
Registered: 29-03-2010
Posts: 147
Website

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

Шикарно, огромное спасибо! Теперь многое из задумок получится автоматизировать!

Offline

#4811 26-05-2017 00:29

trashmas
Registered: 12-04-2016
Posts: 41

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

сагренные на игрока опкодом 05E2: педы начинают бежать к ближайшему маршруту пешеходов, если отойти от них подальше. как исправить?

Last edited by trashmas (26-05-2017 08:54)

Offline

#4812 26-05-2017 10:20

Liimert
From: Russia, Moscow time zone
Registered: 21-05-2017
Posts: 10
Website

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

Никто не может подсказать, какой функцией CLEO можно обнаружить ВСЕ транспортные средства, которые находятся в момент проверки на карте SA?

Offline

#4813 27-05-2017 22:21

Shag
Registered: 29-03-2010
Posts: 147
Website

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

Liimert wrote:

Никто не может подсказать, какой функцией CLEO можно обнаружить ВСЕ транспортные средства, которые находятся в момент проверки на карте SA?

0AE2: 2@ = random_vehicle_near_point 4@ 5@ 6@ in_radius 1000.0 find_next 0 pass_wrecked 1 //IF and SET  // Ищем авто в радиусе 1000м(первое попавшееся авто)
jf @NO_VEHICLE_FOUND // Это на случай, если ни одного транспорта не нашлось

:CYCLE
// здесь будут действия с найденными авто(например - запись их хэндлов в какие-нибудь переменные, или какие-нибудь проверки, если нужно)
0AE2: 2@ = random_vehicle_near_point 4@ 5@ 6@ in_radius 1000.0 find_next 1 pass_wrecked 1 //IF and SET  // Ищем авто в радиусе 1000м(остальные авто)
jf @CYCLE_END // Сюда будет переход, когда скрипт закончит искать все авто в радиусе 1000м
jump @CYCLE

Это не 2 разных кода, если что - опкод 0AE2 дублируется намеренно. Обе копии должны содержать одинаковые координаты (4@ 5@ 6@) и одинаковые радиусы.

Last edited by Shag (27-05-2017 22:23)

Offline

#4814 27-05-2017 22:33

Shag
Registered: 29-03-2010
Posts: 147
Website

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

trashmas wrote:

сагренные на игрока опкодом 05E2: педы начинают бежать к ближайшему маршруту пешеходов, если отойти от них подальше. как исправить?

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

0411: set_actor $Lance_Vance use_pednode_seek 0

В SA такого опкода нет, так что хз...

Offline

#4815 31-05-2017 19:06

trashmas
Registered: 12-04-2016
Posts: 41

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

сорри, для САньки

может как то через "decision_maker"? не может такого быть что бы нельзя было исправить это..

Shag wrote:
trashmas wrote:

сагренные на игрока опкодом 05E2: педы начинают бежать к ближайшему маршруту пешеходов, если отойти от них подальше. как исправить?

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

0411: set_actor $Lance_Vance use_pednode_seek 0

В SA такого опкода нет, так что хз...

Last edited by trashmas (31-05-2017 19:07)

Offline

#4816 01-06-2017 17:54

Shag
Registered: 29-03-2010
Posts: 147
Website

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

trashmas wrote:

сорри, для САньки

может как то через "decision_maker"? не может такого быть что бы нельзя было исправить это..

Обычно Рокстары вырубали в СА какие-то ранее работающие опкоды только в случае, если создали что-то по-лучше. Так что нужно искать среди опкодов после 05A8, где начинаются чисто САновские, по ключевому слову "actor". Либо напрягать память и пытаться вспомнить, было ли в стандартных миссиях подобное, и если да - ковырять их... К сожалению, на этом мои теоретические теории по СА заканчиваются.

Last edited by Shag (01-06-2017 17:56)

Offline

#4817 02-06-2017 07:00

trashmas
Registered: 12-04-2016
Posts: 41

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

Shag wrote:
trashmas wrote:

сорри, для САньки

может как то через "decision_maker"? не может такого быть что бы нельзя было исправить это..

Обычно Рокстары вырубали в СА какие-то ранее работающие опкоды только в случае, если создали что-то по-лучше. Так что нужно искать среди опкодов после 05A8, где начинаются чисто САновские, по ключевому слову "actor". Либо напрягать память и пытаться вспомнить, было ли в стандартных миссиях подобное, и если да - ковырять их... К сожалению, на этом мои теоретические теории по СА заканчиваются.

Искал, вспоминал - ничего

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

Offline

#4818 02-06-2017 21:00

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

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

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

И ещё - как заставить автомобиль ехать по неопределённому пути, но чтоб он не выезжал за пределы города?

Offline

#4819 04-06-2017 20:17

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

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

d88 wrote:

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

И ещё - как заставить автомобиль ехать по неопределённому пути, но чтоб он не выезжал за пределы города?

Насчет проверки нахождения на земле, то есть опкоды отвечающие за это с приставкой "on_foot", если говорить о сравнении расстоянии между ГГ и землей, то я использовал опкод возвращающий расстоянии по Z до земли в указанных координатах и проводил несколько арифметических операций.

Offline

#4820 05-06-2017 03:11

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

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

А что этот опкод уже не работает:

0819: 162@ = actor $PLAYER_ACTOR distance_from_ground

I know everything and nothing...

Offline

#4821 07-06-2017 11:11

Liimert
From: Russia, Moscow time zone
Registered: 21-05-2017
Posts: 10
Website

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

Всем привет, ребят, у меня тут возник один вопрос, вот есть же в клео эти опкоды:
0724: heli 114@ follow_and_attack_player $PLAYER_CHAR radius 50.0
08A2: set_hydra 146@(48@,3i) attack_with_rockets_car_of_player $PLAYER_CHAR radius 30.0
Так вот, по сути они заставляют вертолёт хантер и самолёт гидру, управляемых компьютером вести огонь по игроку, но если в переменной указать вертолёт или самолёт, который обычно никаких ракет не имеет, всё-равно летательный аппарат будет стрелять ракетами по игроку.
Так вот и вопрос, а если эти опкоды будут добавлять ракеты любым самолётам и вертолётам, управляемым компьютером, то можно как-то переписать их функцию на самолёт или вертолёт игрока, чтобы тот тоже мог стрелять ракетами например из Dodo или Maverick?

Offline

#4822 10-06-2017 15:28

trashmas
Registered: 12-04-2016
Posts: 41

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

Педы в GTA VC иногда отпрыгивают в сторону если стрелять в их сторону. Как это отключить ?

Offline

#4823 11-06-2017 04:48

Shag
Registered: 29-03-2010
Posts: 147
Website

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

trashmas wrote:

Педы в GTA VC иногда отпрыгивают в сторону если стрелять в их сторону. Как это отключить ?

Либо в ped.dat убрать у нужных pedtype threat "GUN", либо:
1) Ищешь номер интересующего тебя pedtype:
2) Очищаешь ему threat "GUN" с помощью опкода 03F2(номера threat-ов представлены в описании опкода 03F1), т.е., например, для civmale снятие "боязни" пуль будет выглядеть так:
03F2: pedtype 4 remove_threat 1048576
3)...PROFIT!

UPD:
Пардон, это не исправит проблему - педы лишь перестанут "бояться" стрельбы, а от самих пуль по-прежнему отпрыгивают...

Last edited by Shag (11-06-2017 04:58)

Offline

#4824 11-06-2017 16:46

trashmas
Registered: 12-04-2016
Posts: 41

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

Shag wrote:
trashmas wrote:

Педы в GTA VC иногда отпрыгивают в сторону если стрелять в их сторону. Как это отключить ?

Либо в ped.dat убрать у нужных pedtype threat "GUN", либо:
1) Ищешь номер интересующего тебя pedtype:
2) Очищаешь ему threat "GUN" с помощью опкода 03F2(номера threat-ов представлены в описании опкода 03F1), т.е., например, для civmale снятие "боязни" пуль будет выглядеть так:
03F2: pedtype 4 remove_threat 1048576
3)...PROFIT!

UPD:
Пардон, это не исправит проблему - педы лишь перестанут "бояться" стрельбы, а от самих пуль по-прежнему отпрыгивают...

спасибо за разъяснения, пригодится

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

В оригинальных миссиях я этого как то не замечал, глянул код - ничего особенного. Может из-за какого то из этих параметров, которых я присваиваю педам? :

:ARMY_SoldierParameters
0350: set_actor $ARMY_CharParam maintain_position_when_attacked 1
01B2: give_actor $ARMY_CharParam weapon 26 ammo 9999 // Load the weapon model before using this 
01ED: clear_actor $ARMY_CharParam threat_search
011A: set_actor $ARMY_CharParam search_threat 1
0243: set_actor $ARMY_CharParam ped_stats_to 16
0291: set_actor $ARMY_CharParam attack_when_provoked 1
0411: set_actor $ARMY_CharParam use_pednode_seek 0
02A9: set_actor $ARMY_CharParam immune_to_nonplayer 1 
0223: set_actor $ARMY_CharParam health_to 200
01C5: remove_actor_from_mission_cleanup_list $ARMY_CharParam 
return

bTUtxWx.jpg

Offline

#4825 11-06-2017 18:33

Kim
Registered: 07-06-2017
Posts: 51

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

Доброго Времени суток, появился такой вопрос, точнее несколько.
1) Мы создали актёра. Как заставить его идти и атаковать врагов? И как заставить его определять, кто друг, а кого надо убить?
2) Как показать полоску здоровья персонажа?
3) Подскажите опкод для проверки игрока в радиусе.

Offline

Board footer

Powered by FluxBB