You are not logged in.
Насколько я понимаю, даже увеличив эти лимиты с помощью SALA, добавить машины просто так нельзя будет, для этого были плагины от Александра и других авторов. Могу ошибаться, но в любом случае, использование SALA - плохая идея.
Offline
оффтоп: Давно пора в ехе оставить только работу с графикой и звуком, остальное вынести во внешнюю длл с лимитами, соответствующими современным реалиям (т.е. по сути доделать то, что начинал listener).
Offline
Насколько я понимаю, даже увеличив эти лимиты с помощью SALA, добавить машины просто так нельзя будет, для этого были плагины от Александра и других авторов. Могу ошибаться, но в любом случае, использование SALA - плохая идея.
Ну одним увеличением лимитов дело не ограничивается, конечно. Нужно еще вносить редактуры в handling, cargrp, vehicles, carmods и прочие конфиги, а также пользоваться плагинами вроде Vehicle Handling Adder, Vehicle Audio Editor Ultimate и Vehicle Special Abilities Editor от Alexander.
UPD: Нашел отдельные плагины, увеличивающие доступное количество машин и Streaming Memory.
Осталось узнать, как увеличить максимальное количество модов на машины.
Last edited by Mr. Rollton (19-01-2014 21:09)
Offline
Mr. Rollton wrote:UPD: Нашел отдельные плагины, увеличивающие доступное количество машин и Streaming Memory.
Что за плагины ? Ссылку можно ?
Да, конечно! Сами плагины, на самом деле, нашел на сайте Alexander Blade'а.
dev-c.com/files/SAMoreVehicles.rar - Больше машин
dev-c.com/files/SAStreamMemFix2.0.rar - Фикс Streaming Memory
Остальные полезные плагины смотреть тут: dev-c.com/gtasa (правда, описание на английском).
Перед каждой ссылкой добавьте "www." (без кавычек), антиспам не позволяет публиковать ссылки.
Last edited by Mr. Rollton (20-01-2014 06:25)
Offline
Привет всем, меня интересует каким способом задать объекту смотреть туда же куда и камера по всем осям???
Пробовал с машиной, не очень точно смотрит+машина переворачивается
Код: 068D: get_camera_position_to 10@ 11@ 12@ 068E: get_camera_target_point_to 20@ 21@ 22@ 0063: 10@ -= 20@ // (float) 0063: 11@ -= 21@ // (float) 0063: 12@ -= 22@ // (float) 07C6: set_car 0@ axis_angle_relation_to 10@ 11@ 12@ 23@ 0A30: repair_car 0@
Помогите Ребят.
Offline
В 07C6 передаются компоненты кватерниона x y z w.
Найди матрицу камеры, переведи вращение в кват, потом кват отправляй в 07C6.
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
В 07C6 передаются компоненты кватерниона x y z w.
Найди матрицу камеры, переведи вращение в кват, потом кват отправляй в 07C6.
Проще уж будет задать объекту матрицу камеры, нежели переводить её в кват и задавать опкодом (тем более, что он используется конкретно для машин, а ему надо для любого объекта). Вобщем, чуть позже напишу, как реализовать, сейчас уходить надо.
Offline
Ребят во общем мне надо для машины. Думаю с объектом тоже так же можно сделать
Offline
Ребят во общем мне надо для машины. Думаю с объектом тоже так же можно сделать
Написал в виде SCM-функции, ибо так удобнее использовать.
// 0AB1: SetCarRotationFromCamera 1 car 0@ :SetCarRotationFromCamera 0A97: 1@ = car 0@ struct 1@ += 0x14 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 2@ = 0xB6F99C // Адрес матрицы камеры // Первые три значения инвертируем, т.к. матрица камеры немного не такая, как у машины 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 3@ *= -1.0 0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 1@ += 4 2@ += 4 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 3@ *= -1.0 0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 1@ += 4 2@ += 4 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 3@ *= -1.0 0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 1@ += 8 2@ += 8 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 1@ += 4 2@ += 4 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 1@ += 4 2@ += 4 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 1@ += 8 2@ += 8 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 1@ += 4 2@ += 4 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 1@ += 4 2@ += 4 0A8D: 3@ = read_memory 2@ size 4 virtual_protect 0 0A8C: write_memory 1@ size 4 value 3@ virtual_protect 0 0AB2: ret 0
Если будешь использовать с объектом, вместо машины, то опкод 0A97 надо заменить на 0A98.
Last edited by Voron295 (22-01-2014 14:30)
Offline
Cпасибо Voron, щас пойду тестить)
Offline
Все просто прекрасно работает, спасибо ещё раз, думаю даже для актёра можно использовать
Offline
068D: get_camera_position_to 2@ 3@ 4@ 068E: get_camera_target_point_to 5@ 6@ 7@ 0063: 5@ -= 2@ // (float) 0063: 6@ -= 3@ // (float) 0604: get_Z_angle_for_point 5@ 6@ store_to 7@ Car.Angle(0@) = 7@
из каршота
Offline
068D: get_camera_position_to 2@ 3@ 4@ 068E: get_camera_target_point_to 5@ 6@ 7@ 0063: 5@ -= 2@ // (float) 0063: 6@ -= 3@ // (float) 0604: get_Z_angle_for_point 5@ 6@ store_to 7@ Car.Angle(0@) = 7@из каршота
это только по одной оси, а мне надо было по всем осям
Offline
Ребят, а кто знает аналогичный опкоды к 0A8D 0A8C???
Offline
Ребят, а кто знает аналогичный опкоды к 0A8D 0A8C???
Зачем?
Если уж так нужно их чем-нибудь заменить, читай в справке к SB статью про изменение игровой памяти через SCM (в разделе "Опытным пользователям").
Last edited by Voron295 (23-01-2014 14:13)
Offline
HH wrote:Ребят, а кто знает аналогичный опкоды к 0A8D 0A8C???
Зачем?
Если уж так нужно их чем-нибудь заменить, читай в справке к SB статью про изменение игровой памяти через SCM (в разделе "Опытным пользователям").
Так для интереса, спасибо.
Offline
Как сделать в одном скрипте несколько, т.е. чтобы одновременно работали два скрипта, но было чтоб в одном файле. Для компактности.
Offline
@HH - примерно так
{$CLEO} 0A92: create_custom_thread "TwoScripts.cs" 1 0A92: create_custom_thread "TwoScripts.cs" 2 if 0@ == 1 then // код первого скрипта else if 0@ == 2 then // код второго скрипта end end 0A93: end_custom_thread
Скрипт сохранить как TwoScripts.cs в папке CLEO. Код первого и второго скрипта вставлять, где отмечено.
Offline
@HH - примерно так
{$CLEO} 0A92: create_custom_thread "TwoScripts.cs" 1 0A92: create_custom_thread "TwoScripts.cs" 2 if 0@ == 1 then // код первого скрипта else if 0@ == 2 then // код второго скрипта end end 0A93: end_custom_threadСкрипт сохранить как TwoScripts.cs в папке CLEO. Код первого и второго скрипта вставлять, где отмечено.
Спасибо большое, давно хотел узнать про это. Обязательно будет 0@ или можно записать поток в другую переменную?
Offline
А все понял. 1 и 2 стандартно записывается в 0@. Можно за место 1 или 2 поставить любую переменную которая будет передаватся указанной файл.
Offline
@HH - при создании нового скрипта опкодом 0A92 в него можно сразу передать параметры, которые будут записаны в локальные переменные по-порядку. Т.е. 0A92: create_custom_thread "TwoScripts.cs" 1 создает скрипт, где переменная 0@ равна 1, 0A92: create_custom_thread "TwoScripts.cs" 2 создает скрипт, где переменная 0@ равна 2 и т.д.
0A92: create_custom_thread "TwoScripts.cs" 3 10@ $var создает скрипт, где переменная 0@ равна 3, 1@ равна значению переменной 10@, 2@ равна значению переменной $var.
Можно передать любое значение, которое нужно, только соответственно нужно поменять и проверку if.
Еще вот эта ссылка будет в тему: http://sannybuilder.com/forums/viewtopi … 4124#p4124
Offline
@Seemann спасибо ещё раз, за доп. инфо
Last edited by HH (29-01-2014 14:24)
Offline