GTA Builder Форум

GTA Vice City => Скриптинг => Тема начата: Shagg_E от Июль 03, 2017, 03:59:58 pm

Название: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Июль 03, 2017, 03:59:58 pm
Столкнулся с проблемой (http://forum.gtabuilder.ru/index.php?topic=401.msg2874#msg2874), которая всё-таки вынудила меня начать писать плагин, производящий некоторые операции спецом для CarRec(на самом деле для ActRec).
И как я и думал - меня понесло куда-то не туда и теперь пишу плагин, добавляющий новые опкоды, не только для CarRec но и вообще(перенесу в опкоды кое-какие свои старые и новые задумки, типа фотокамеры (http://gtabuilder.ru/gta_vc/mods/cleo_scripts/85-photocamera_20with-selfie.html), отрывания колес (http://forum.gtabuilder.ru/index.php?topic=117.msg2808#msg2808) и т.п., а также разные вещи, которые я увидел на этом сайте(авторов укажу))...

Пока список планируемых опкодов такой(эти я по большей мере знаю, как реализовать, либо подсмотрел в разных темах на этом сайте):
опкоды CarRec, ObjRec, ActRec

get object rotation
set object rotation
get vehicle rotation
set vehicle rotation
get actor rotation
set actor rotation

is_vehicle car
is_vehicle bike
is_vehicle heli
is_vehicle boat
is_vehicle plane

альтернатива z_ground(processlineofsight)

съемка скриншотов без hud и прочих надписей

детач компонентов авто(пока не уверен, но возможно выйдет сделать не только для колес)

поворот компонентов авто(не 100%)

разбивание разбиваемых объектов(типа стекла)

атач/детач различных entity к другим, в т.ч. - к костям

repair car completely

remove actor bodypart?(не уверен)

play mpg video

enable_blur/trails

get camera direction vector

ped_say

Play_1d_Sound

Get Camera position
Get Camera direction

get angle from vector XYZ store to XaYaZa

Сделано:
0E10: rotate_actor $PLAYER_ACTOR boneindex 5 angles 0.0 0.0 0.0 blending_time 500 freeze_time 2000 release_time 1000
0E11: store_actor $PLAYER_ACTOR boneindex 5 global 1 rotation_to 1@ 2@ 3@
0E12: store_actor $PLAYER_ACTOR boneindex 5 global 1 position_to 4@ 5@ 6@

Не удалось/не знаю, как сделать(FAIL):
play_3d_sfx

Пишите, если есть какие идеи новых опкодов. Если мне будет по силам - реализую.
Название: Re: Новые опкоды(ваши предложения)
Отправлено: ilufir от Июль 08, 2017, 11:33:33 pm
вау, выглядит неплохо. еще бы создать возможность без геморроя проигрывать свою анимацию...
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Июль 12, 2017, 06:40:01 pm
Ого! Не заметил, что есть ответ в теме :o
вау, выглядит неплохо. еще бы создать возможность без геморроя проигрывать свою анимацию...
Это уже запилили:
Код: Text
  1. 0673: play_animation on actor $PLAYER_ACTOR animgroup 61 anim 512 blendfactor 30.0 // play dance animation from cj_dance
нужно лишь помимо CLEO 2 поставить один плагин (https://github.com/ThirteenAG/VC.CustomAnimsData/releases).

СПИСОК ОБНОВЛЕН!
Если у вас есть идеи, как можно реализовать вещи из списка FAIL - помогите плиз.

Но в любом случае - рассмотрю любые идеи по новым опкодам, если мне это будет под силам или список не накопится слишком огромный...
Название: Re: Новые опкоды(ваши предложения)
Отправлено: ilufir от Июль 18, 2017, 09:22:30 pm
Ого! Не заметил, что есть ответ в теме :o
вау, выглядит неплохо. еще бы создать возможность без геморроя проигрывать свою анимацию...
Это уже запилили:
Код: Text
  1. 0673: play_animation on actor $PLAYER_ACTOR animgroup 61 anim 512 blendfactor 30.0 // play dance animation from cj_dance
нужно лишь помимо CLEO 2 поставить один плагин (https://github.com/ThirteenAG/VC.CustomAnimsData/releases).

СПИСОК ОБНОВЛЕН!
Если у вас есть идеи, как можно реализовать вещи из списка FAIL - помогите плиз.

Но в любом случае - рассмотрю любые идеи по новым опкодам, если мне это будет под силам или список не накопится слишком огромный...
все равно не особо удобно, потому что приходится узнавать какие-то там номера, ставить плагины на подгрузку своих ifp...
Название: Re: Новые опкоды(ваши предложения)
Отправлено: kenking от Июль 20, 2017, 06:43:01 am
Но в любом случае - рассмотрю любые идеи по новым опкодам, если мне это будет под силам или список не накопится слишком огромный...
Как вариант - взять за основу те опкоды, что были добавлены в клео для SA и в плагине от DK NewOpcodes. Из них уже выбрать те, что в принципе можно реализовать для VC, а из них соответственно те, что сможешь сделать.
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Июль 20, 2017, 12:26:01 pm
все равно не особо удобно, потому что приходится узнавать какие-то там номера, ставить плагины на подгрузку своих ifp...

Я пишу альтернативу стандартной вайсовской системе анимаций. Думаю, она-то и станет удобной альтернативой(для конечного игрока).
Скриптеру нужно будет любым способом воспроизвести свою анимацию(например - заменить любую существующую), потом "записать" свою анимацию или вообще любое действие(по принципу "CarRec" (http://gtabuilder.ru/gta_vc/mods/cleo_scripts/283-cleocarrecplus-objrec.html)) специальным опкодом и получить на выходе файл анимации нового формата, который можно будет просто закидывать в любую папку и использовать оттуда уже без всяких ограничений.
Возможно, в далеком будущем даже запилю скрипт для 3ds max-а, при помощи которого можно будет обойтись без "записи" в игре.

Но в любом случае - рассмотрю любые идеи по новым опкодам, если мне это будет под силам или список не накопится слишком огромный...
Как вариант - взять за основу те опкоды, что были добавлены в клео для SA и в плагине от DK NewOpcodes. Из них уже выбрать те, что в принципе можно реализовать для VC, а из них соответственно те, что сможешь сделать.

Да, видел - это как раз из разряда
Цитировать
или список не накопится слишком огромный

 ;D
Пару идей оттуда взял(типа получение даты и времени винды, стрельба пулями/взрывчаткой, получение вектора нормали кола), но остальное - очень специфичные вещи, которые только зря отнимут у меня время, и никому не пригодятся. Например - работа с матрицами/кватернионами(добрая треть опкодов). Это дает большую свободу скриптеру, но я решил всё упростить.
У меня вместо этого будет лишь
get object rotation
set object rotation
get vehicle rotation
set vehicle rotation
get actor rotation
set actor rotation
в градусах(и то же самое для компонентов педов/авто). И никаких проблем для рядового скриптера с его рядовыми проблемами.
Аудио опкоды у меня будут, но пока хз какие(еще не знаю, какую аудио библиотеку буду юзать - сейчас не до этого)...
Название: Re: Новые опкоды(ваши предложения)
Отправлено: GHOST от Июль 21, 2017, 09:57:56 am
Shagg_E сможешь такое реализовать в своем плагине? - http://www.gtagarage.com/mods/show.php?id=22350 (http://www.gtagarage.com/mods/show.php?id=22350)
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Июль 21, 2017, 11:46:50 am
Shagg_E сможешь такое реализовать в своем плагине? - [url]http://www.gtagarage.com/mods/show.php?id=22350[/url] ([url]http://www.gtagarage.com/mods/show.php?id=22350[/url])

Хмм, честно говоря, не совсем понимаю, как это связано с новыми опкодами...
Название: Re: Новые опкоды(ваши предложения)
Отправлено: egor230 от Август 23, 2017, 06:44:01 pm
Shagg_E, Как здорово что вы добавляете новые опкоды. Они очень и очень нужны. Иногда из нескольких оп кодов можно путём их соединения получить новый оп код. Например, нужно сначала ставить модель в очередь на загрузку, следующим оп кодом делать принудительную загрузку всех моделей стоящих в очереди. Третьим оп кодом проверять загрузилась ли модель, четвёртым оп кодом создавать эту модель и пятым выгружать из памяти. Не проще ли объединить все это в один оп код? Так будет всем проще. По методу gosub.
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Август 23, 2017, 09:22:24 pm
Shagg_E, Как здорово что вы добавляете новые опкоды. Они очень и очень нужны. Иногда из нескольких оп кодов можно путём их соединения получить новый оп код. Например, нужно сначала ставить модель в очередь на загрузку, следующим оп кодом делать принудительную загрузку всех моделей стоящих в очереди. Третьим оп кодом проверять загрузилась ли модель, четвёртым оп кодом создавать эту модель и пятым выгружать из памяти. Не проще ли объединить все это в один оп код? Так будет всем проще. По методу gosub.
Это будет сильная нагрузка для игры(проворачивать такое для каждой модели). И без этого игра не шибко шустрая (https://youtu.be/R42eGfxYLLo?t=1m6s)...
Нужно наоборот - искать способы оптимизировать нагрузку. Например - лоды для педов(планирую этим заняться)
Название: Re: Новые опкоды(ваши предложения)
Отправлено: egor230 от Август 24, 2017, 07:24:27 pm
Shagg_E,  Вау! Спасибо за видео! Не совсем понимаю откуда тормоза? Vice City, же вышла в 2003 году. На любом компьютере нашего времени она должна летать. Восхищаюсь вашими знаниями и огромным опытом. с нетерпением жду новых видео на вашем канале. Мечтаю о видео уроках с вашим участием.
.
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Август 24, 2017, 09:06:04 pm
Не совсем понимаю откуда тормоза? Vice City, же вышла в 2003 году. На любом компьютере нашего времени она должна летать.

И она летает, пока не заспавнишь 1000 педов)) Тут даже если у тебя "летает" гта 4 или 5 - Вайс будет безбожно лагать, потому что он не расчитан на подобное(глять хотя бы эту тему (http://forum.gtabuilder.ru/index.php?topic=402.0), там описана одна из проблем производительности). И это при том, что существуют игры, где и большее кол-во ботов не вызывает никаких просадок фпс на тех же системах.

видео уроках с вашим участием.

Проблема видео уроков состоит в том, что если я где-то ошибусь, и мне потом на это укажут - придется переделывать всё видео, а возможно - переснимать всё заного. Тем не менее, кое-какие планы на этот счет у меня есть, но это оффтоп...
Название: Re: Новые опкоды(ваши предложения)
Отправлено: egor230 от Август 25, 2017, 06:42:34 pm
 Shagg_E Спасибо большое, что вы являлись настолько занятым человеком, но всё-таки нашли мне время ответить. Выходит что эти лаги происходят из-за графического движка игры, его нужно оптимизировать. Это очень сложная

Я полностью уверен в профессионализме. Не верю, что вы можете ошибаться. У вас такой богатый опыт. С большим нетерпением жду новых видео на Вашем youtube канале. Скажите, пожалуйста, а есть база адресов памяти с подробным описанием в формате PDF а не в IDA? Было бы здорово добавить опкод, в который упрощает работу с адресами памяти, пишешь в один опкод адрес и смещения так сказать для нубов.
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Август 27, 2017, 12:53:36 am
Не верю, что вы можете ошибаться

Все ошибаются

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

Раз (https://www.gtamodding.com/wiki/Memory_Addresses_(VC)). Два (http://gtaforums.com/topic/117195-documenting-gta3vc-memory-addresses/).

Было бы здорово добавить опкод, в который упрощает работу с адресами памяти, пишешь в один опкод адрес и смещения так сказать для нубов.

Тут либо придется дублировать опкоды работы с памятью для добавления этой опции(работа со смещениями), что не есть тру(будут простые дубликаты опкодов с одним единственным дополнительным параметром), либо переделывать Sanny Builder, что тоже не вариант для меня(опыта с гулькин нос, да и сурсы никто мне не даст). Для минорных изменений памяти хватает и существующих инструментов в скриптинге(лучше пусть "нубы" становятся "не нубами"), а что-нибудь более существенное всё равно пишется уже на C++, а не в SCM.
Название: Re: Новые опкоды(ваши предложения)
Отправлено: egor230 от Сентябрь 05, 2017, 08:26:05 pm
Shagg_E как говорил Пауло Коэльо: Зеркало отражает верно; оно не ошибается, ибо не думает. Думать — почти всегда значит ошибаться.
Эти база очень хороши, жаль нет примеров, пояснительными подробными объяснениями.
Все равно опкодов для vc не хватает, например, 0AD2, чтобы получать хендл актера, при прицеливании.
А с анимацией вообще беда, нету списка с описанием, чтобы легко было разобраться.
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Сентябрь 05, 2017, 11:10:24 pm
egor230 >
Насчет опкода 0AD2 - попробую запилить, спасибо за идею.

Если нужен список анимаций с описанием - то у меня есть такой для опкода 0372 (http://newrockstar.do.am/publ/grand_theft_auto/modding_i_vsjo_chto_s_ehtim_svjazano/skripting_animacii_v_vice_city_spisok/2-1-0-10).
Для других способов проигрывания описаний нет, увы.
Название: Re: Новые опкоды(ваши предложения)
Отправлено: egor230 от Сентябрь 07, 2017, 11:16:42 pm
Shagg_E, спасибо большое за полезную  ссылку на Ваш сайт, много нужного нашел для будущего.
С анимацией все сложно, уверен у Вас все получится.           
Вот был бы способ легкого создания своих опкодов. Объясню как нуб, пиши в scm функцию, действия из пары опкодов и получаем новый. Например, опкод 0AD2  получить можно из  опкода 05EF: 3@ = random_actor_near_point 0@ 1@ 2@ in_radius 10.0 find_next 1 pass_deads 0 //IF and SET и проверки 0457:   player $player_char aiming_at_actor 3@  и называем 0AD2. жаль игра будет тормозит, все дело в движке игры.
Если бы не это, такого можно сделать. Так обидно, что это изменить нельзя(((((((
А как Вы добавляйте опкоды?. Вот нужный опкод 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Сентябрь 09, 2017, 12:58:05 am
Цитировать
Вот был бы способ легкого создания своих опкодов
Легко бывает где угодно, но не в скриптинге или программировании. А ведь новые опкоды создаются именно вторым способом. Пишется плагин на c++ с использованием CLEO SDK.
Я думаю, что когда ты достаточно хорошо изучишь скриптинг, чтобы писать действительно сложные вещи(т.е. будешь примерно понимать, как работают те или иные аспекты игры "изнутри", в памяти игры) - сможешь по-тихоньку изучать C++, что откроет для тебя новые возможности. Как и в скриптинге, там важно лишь желание и готовность потратить долгие часы(дни, недели, месяцы) на изучение всего в деталях.

По поводу опкода 0AB5 - спасибо, и это тоже попробую запилить.
Название: Re: Новые опкоды(ваши предложения)
Отправлено: egor230 от Сентябрь 09, 2017, 03:56:01 pm
Здравствуйте, уважаемый Shagg_E
Спасибо большое, что Вы нашли время мне ответить, я очень Вам благодарен за это.
Вы совершенно правы, в скриптинге легко не бывает, конечно, можно писать, что-то очень простое.
Но, чтобы сделать, что-то по настоящему масштабное нужно много знать.
Продолжаю, второй месяц изучать Cleo, могу написать, что-то легкое.
Но для Vice-City очень мало Опкодов, чтобы сделать что-то сложное, приходиться соединять вместе несколько опкодов, хотя в SA их гораздо больше, и писать легче скрипты. Например, чтобы машина ехала рандомно по всей карте столько опкодов надо написать. Очень нравится Cleo, много что уже сделал, много что узнал, учиться всегда хорошо. В Cleo есть ограничении, которые не дают реализовать, что-то большое, чем просто не большие моды. VICE LUA очень заинтересовал меня, там намного проще писать миссии, чем в Cleo, хотя примеров как написать скрипт нигде нету, но потенциал огромный. Cleo и VICE LUA прекрасно работают вместе и могут дополнять друг друга жаль нету примеров, и инструкции как настроить подцветку синтаксис функций notepad++. Примеров тоже нигде нету, тогда можно было создать по-настоящему что-то стоящее.
C++ очень сложный язык программирования, но открывает безграничные возможности. На нём пишут буквально всё. А LUA гораздо легче спасибо буду ждать новых опкодов от Вас ))))
Название: Re: Новые опкоды(ваши предложения)
Отправлено: daniel_360 от Апрель 01, 2019, 09:08:26 pm
Хотел бы увидеть опкод на удаление одного оружия, а не всех. Он очень сильно мне нужен, без него я не смогу кое-что сделать!
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Апрель 01, 2019, 11:25:06 pm
Можно дать игроку это же оружие с 0 патронами, и будет тот же эффект
Название: Re: Новые опкоды(ваши предложения)
Отправлено: daniel_360 от Апрель 02, 2019, 06:18:41 pm
А как же с холодным оружием?
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Сентябрь 16, 2019, 05:22:47 pm
Решил выложить 13 опкодов(в аттаче), т.к. остальная разработка(самый сок) пока затянулась:
0E10: rotate_actor $PLAYER_ACTOR type 0 boneindex 5 angles 0.0 0.0 0.0 blending_time 500 freeze_time 2000 release_time 1000
0E11: store_actor $PLAYER_ACTOR type 0 boneindex 5 world_coords 1 rotation_to 1@ 2@ 3@
0E12: store_actor $PLAYER_ACTOR type 0 boneindex 5 world_coords 1 position_to 4@ 5@ 6@ offset 0.0 0.0 0.0
0E20: enable_vehicle 0@ flying_control_type 3
0E21: disable_vehicle 0@ flying_control
0E22: store_object 0@ rotation_to 1@ 2@ 3@
0E23: set_object 0@ rotation 0.0 0.0 0.0
0E24: store_vehicle 0@ rotation_to 1@ 2@ 3@
0E25: set_vehicle 0@ rotation 0.0 0.0 0.0
0E26: store_actor 0@ rotation_to 1@ 2@ 3@
0E27: set_actor 0@ rotation 0.0 0.0 0.0
0E30: camera_on_object $666 mode 15 switchstyle 2
0E31: draw_hud 0
Описание в архиве
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Prographer от Ноябрь 05, 2019, 06:06:02 am
Отлично! Только такие вещи лучше, всё-таки, хранить на GitHub, чтобы не разбрасывать по всему форуму. Лучше вообще, наверно, собрать единую нормальную базу опкодов для Sanny Builder, взяв за основу базу из gtagmodding.com
Название: Re: Новые опкоды(ваши предложения)
Отправлено: Shagg_E от Ноябрь 05, 2019, 02:19:39 pm
Да там пока помойка в исходнике, так что на GitHub такое стыдно выкладывать... Но я надеюсь, что в скором времени я это исправлю...
Название: Re: Новые опкоды(ваши предложения)
Отправлено: daniel_360 от Июль 19, 2021, 10:55:09 pm
Если будешь делать для GTA 3, то хотел бы увидеть опкод на мут для актёров