You are not logged in.
Если можно прицеплять актера к объекту/тачке, то почему же нет таких опкодов? Может скажете, как сделать, чтобы прицепить актера, но при этом он не был в turret состоянии?
А чем тебе 0464: не нравиться? Там конечно тоже turret, но я не могу понять как ты хочешь сделать, чтоб не в turret. Это как например?
У меня вот ещё вопрос:
можно ли скриптом создать спецактёра и сделать так чтоб он входил в банду Грув? Хочу сделать чтоб кроме пяти уже имеющихся бандитов в неё входили Свит, Райдер и другие персонажи.
Offline
можно ли скриптом создать спецактёра и сделать так чтоб он входил в банду Грув?
d88, всё зависит от того, что ты имеешь ввиду. Если ты говоришь про текущую банду игрока - одно,
а если про персонажей банды Грув, ходящих по улице - совсем другое.
Но скорее всего ты о первом варианте, предложенным мной)
Чтобы в банду игрока входили ещё и доп.актёры кроме нанятых на улице, нужно увеличить макс. кол-во гангстеров в группе игрока (можно по стату, или прибегнуть к памяти), а затем добавить их как актёров в группу Player'а ($PLAYER_GROUP). Можно макс. кол-во бандитов и не изменять, только добавить нужных персонажей.
Ответьте, пожалуйста, на мой вопрос. Повторю его ещё раз.
Как можно имитировать использование скрипта вербовки игроком на каком-нибудь актёре.
Я говорю о скрипте, который срабатывает, когда ты прицеливаешься на гангстере грув и нанимаешь его в банду после нажатия GROUP_FORWARD, ещё этим же скриптом создаются маркеры на радаре и на карте и он же отвечает за устранение членов банды при удалении от них.
Ещё мини-просьба от меня. Скажите плиз, кому известно, адрес флоат стата 24 (max.health).
[---]
А, и чуть не забыл.
С НОВЫМ ГОДОМ!
Offline
Daeman, нет, я имел ввиду второй вариант, чтоб они на улице встречались.
А то что тебе нужно, может это. Если я правильно понял, ты спрашиваешь как управлять членами банды. Вот коды
092B: 1@ = group $PLAYER_GROUP member 0 092B: 2@ = group $PLAYER_GROUP member 1 092B: 3@ = group $PLAYER_GROUP member 2 092B: 4@ = group $PLAYER_GROUP member 3 092B: 5@ = group $PLAYER_GROUP member 4 092B: 6@ = group $PLAYER_GROUP member 5 092B: 7@ = group $PLAYER_GROUP member 6
Они записывают в переменную члена группы игрока. Последний параметр – номер нанятого. Т.е. у того кото ты нанял первым будет 0, кого вторым – 1, и т.д.
Offline
Извините, если уже где-то обсуждалось, но как определить место ошибки в скрипте? Тот опкод, из-за которого игра вылетела, из-за которого произошла какая-нибудь ошибка и т.д.
Last edited by GTASA (02-01-2010 11:30)
Offline
Использовать scm log
http://sannybuilder.com/forums/viewtopic.php?id=268
Offline
Daeman, нет, я имел ввиду второй вариант, чтоб они на улице встречались.
Тогда скажу о втором.
Здесь не всё так просто. Чтобы добавить педа, надо во всех файлах прописать о нём инфу, кто он такой, к какой группе относится, когда ходит, на каких машинах ездит, какой у него звуковой банк, его поведение... В общем, в абсолютно всех файлах о педах.
А то что тебе нужно, может это. Если я правильно понял, ты спрашиваешь как управлять членами банды.
Нет, ты неправильно понял. Всегда нужно правильно понимать вопросы и вникать в них, от понимания вопроса зависит и ответ.
Насчёт работы с членами банды и способа, предложенного тобой, я знаю, но мне нужно вовсе не это.
Чтобы безошибочно понять вопрос нужно просто правильно его прочитать.
Как можно имитировать использование скрипта вербовки игроком на каком-нибудь актёре.
Уточню. Я имею в виду скрипт, намертво вшитый в exe-шник игры.
Ещё раз попрошу, ответьте кто-нибудь, пожалуйста!
Если слишком сложный для понимания вопрос, упрощу
"Как можно сделать так, чтобы с актёром было то же самое, что и когда бы игрок дал ему команду войти в банду"
Offline
Использовать scm log
SCMLog это, конечно, хорошо, но как определить с помощью него ошибку? Если ты хочешь ответить - посмотреть последний выполненный опкод, то я скажу, что не обязательно опкод, из-за которого произошла ошибка должен оканчивать лог.
как определить место ошибки в скрипте?
По мне так, - только вручную. Прописывать после каждой команды микро-задержку и выводить на это время на экран переменную с номером строки, также прописанным вручную. Способ довольно мутарный, но действенный и для небольших клео-скриптов вполне подойдёт
Offline
Как можно имитировать использование скрипта вербовки игроком на каком-нибудь актёре.
{$CLEO} 0000: while true wait 250 if 00E1: player $PLAYER_CHAR pressed_key 8 then if 0AFC: 0@ = player $PLAYER_CHAR targeted_actor //IF and SET then if 86EE: not actor 0@ in_group $PLAYER_GROUP then 0631: put_actor 0@ in_group $PLAYER_GROUP end end end end
Я имею в виду скрипт, намертво вшитый в exe-шник игры.
Откуда в exe скрипты?
Offline
подскажите, пожалуйста, можно ли на обычном автомобиле включить сирену (как на полицейской машине) со звуком, чтоб уступали дорогу другие водители?
и еще вопросик по текстуркам:
как заставить нарисованную текстуру плавно исчезать с экрана в течении некоторого времени?
Offline
Тогда скажу о втором.
Здесь не всё так просто. Чтобы добавить педа, надо во всех файлах прописать о нём инфу, кто он такой, к какой группе относится, когда ходит, на каких машинах ездит, какой у него звуковой банк, его поведение... В общем, в абсолютно всех файлах о педах.
Да, я знаю этот способ, но проблема в том, что больше 2 новых педов записать нельзя, движок не выдерживает. Заменять старых тоже не очень хочется. Вот я и надеялся, что скриптом можно это сделать создав спецактёра.
Offline
Alien, у тебя такая же проблема, что и у d88 )
А может быть. ты просто не полностью прочитал мой вопрос.
Как можно имитировать использование скрипта вербовки игроком на каком-нибудь актёре.
Я говорю о скрипте, который срабатывает, когда ты прицеливаешься на гангстере грув и нанимаешь его в банду после нажатия GROUP_FORWARD, ещё этим же скриптом создаются маркеры на радаре и на карте и он же отвечает за устранение членов банды при удалении от них.
Как можно это иммитировать, сделать, что что происходит с грувом, когда игрок приглашает его в банду.
После согласия актёра на приглашение появляется зелёная иконка на радаре "Друг" (отмечает завербованного), ещё этот скрипт убирает актёра из группы, если игрок удалён от него на некоторое расстояние и удаляет о нанятом инфу (RemoveReferences).
Как сделать также на любом актёре?
Откуда в exe скрипты?
Ну, я имею в виду намертво вделанные в игру скрипты, такие как прибытие медиков, пожарных, погоня полицеских за игроком и остальные скрипты, которых нет в мейне и не external. Вот уж не знаю, где эти "забетонированные" в игру скрипты располагаются.
***
Да, я знаю этот способ, но проблема в том, что больше 2 новых педов записать нельзя, движок не выдерживает. Заменять старых тоже не очень хочется. Вот я и надеялся, что скриптом можно это сделать создав спецактёра.
Рассмотрим с этой позиции. Думаю, можно осуществить.
Сначала проверяешь группу прохожих и проежах тачек.
08D3: get_present_zone_popcycle_group_for_peds_and_cars_to 26@
Затем сравниваешь его с заранее выясненной группой попциклов, в которой есть грувы (например, можно взять Ganton) и если проверка возвращает тру, идти дальше.
Находишь хендл рандомного актёра на улице, а затем (можно и с какой-либо вероятностью) изменяешь его модель на нужную, или лучше вообще заменить педа (если используешь спецактёра, дать ему decision maker, идентичный грувовцу). И так каждый раз, добавить только разные дополнительные проверки, чтобы ничего не выглядело искуственно и приписать нужные задержки.
Дерзай)
Offline
подскажите, пожалуйста, можно ли на обычном автомобиле включить сирену (как на полицейской машине) со звуком, чтоб уступали дорогу другие водители?
Каким-то одним опкодом так просто это не добавишь на любую машину. По-моему, это можно изменить только на уровне памяти игры. Не помню точно, но ещё давно где-то видел способ добавления сирены...
как заставить нарисованную текстуру плавно исчезать с экрана в течении некоторого времени?
Именно такой команды нет, но сделать возможно. Нужно выводить эту же текстуру, со временем отображая текстуру всё прозрачнее и прозрачнее её самой. Для этого надлежит последнее значение (Alpha) в опкоде в параметрах RGBA при выводе каждый раз уменьшать (от 255 к нулю) с нужной прогрессией, чтобы становилось всё прозрачнее, а затем и вовсе удалить текстуру, когда она станет невидимой.
Я говорю о опкодах
038D: draw_texture 2 position 160.0 112.0 scale 320.0 224.0 RGBA 150 150 150 255
074B: draw_texture 2 position 160.0 112.0 scale 320.0 224.0 angle 90.0 RGBA 150 150 150 255
Всегда бывают статьи, предназначенные для туториала.
Offline
@Daeman
спасибо
Offline
Он достоверен, если что-то существует.
Перестать быть подлинным он может в любое мгновение, так же возможно и обратное - подолгу является таковым.
Даже в самом мейне есть масса таких проверок, не стоит этим пренебрегать, ведь если попытаться совершить что-либо с чем-то несуществующим, игра поведёт себя мягко говоря нехорошо, - стопроцентный вылет
А wait тут непричём. Сам подумай: как задержка может сказаться на оперируемом объекте? Просто бытует проверенное мнение насчёт действительности существования чего-либо, и верно. Если посмотреть с логической точки зрения: при задержке мы можем утерять контроль над происходящим, как бы нет синхронизации из-за того что скрипт "ждёт" и не выполняет никаких действий. Соответсвенно, за это время без "сихронизации" между скриптом и игрой с предметом, машиной или актёром что-то может произойти из-за хода игрового процесса.
Offline
Да это всё понятно, просто где-то слышал, что все скрипты выполняются по очереди, а при команде wait происходит переключение на следующий скрипт в очереди. Если это действительно так, то, пока процесс не дошел до wait, то продолжает выполняться тот же скрипт, в котором была произведена проверка на существование, а это значит, что из другого скрипта в это время транспорт/актер/объект удален быть не может. Хотя, если подумать, то ведь игровой объект может быть уничтожен не обязательно скриптом, так что какое-то действие над ним лучше всего производить сразу же после проверки на существование.
Last edited by Den_spb (03-01-2010 21:51)
Offline
Все верно. WAIT 0 - переход к следующему скрипту.
Его делать вовсе не всегда обязательно (стриминг, по большей части, работает параллельно), но крайне желательно, чтобы дать выполниться остальным процессам (не только скриптам), пока этот скрптовый поток все равно ничего не может сделать.
Offline
Хорошо. Есть ещё два вопроса, часто становящиеся причиной споров:
1.Нужно ли загружать модель перед созданием пикапа? Есть мнение, что загружать модель не нужно. Причина такого мнения - игра при создании пикапа не вылетает, даже если модель не загружена. У оппонентов другое мнение: загружать модель желательно, а скрипты, создающие пикап без предварительной загрузки моделей не вылетают потому, что модель уже была загружена в память каким-то другим процессом. Кто прав?
2.Нужно ли применять опкод
038B: load_requested_models
?
Тут есть три мнения: а) это сорный и бесполезный опкод, и применять его не нужно б) нужно применять при загрузке более, чем 1 модели одновременно в) нужно применять всегда, независимо от количества одновременно загружаемых моделей. Лично я склоняюсь ко второму варианту. Кто прав?
Offline
1) Загрузка модели там вроде и не нужна. Даже R* не писали.
2) Эта функция LoadRequestedModels и так много где понатыкана в CGame__Process. Если ее не вызовешь ты, она все равно будет вызвана к следующему приходу к этому скрипту через wait. Хочешь - пиши, не хочешь - не пиши. Я себя не утруждал))
Last edited by Alien (04-01-2010 12:46)
Offline
На http://gtamodding.ru/wiki/Адреса_Памяти_(SA) в разделеле Handling даны смещения для тех или иных параметров хандлинга, а как определить адрес нулевого смещения для какого-то конкретного вида транспорта?
Offline
0xC2B9DC вот по адресу начало сечешь, прибавишь 224-смещение будет 0xC2BABC это второй элемент handling итд каждый по 224, еще могут быть внутри смещения они в gtamodding.ru написаны.
Last edited by mfisto (04-01-2010 19:08)
I know everything and nothing...
Offline
2) Эта функция LoadRequestedModels и так много где понатыкана в CGame__Process. Если ее не вызовешь ты, она все равно будет вызвана к следующему приходу к этому скрипту через wait. Хочешь - пиши, не хочешь - не пиши. Я себя не утруждал))
Он нужен если загружаешь несколько моделей. У меня бывали вылеты если его не писать.
Offline
а при чем здесь вылеты. Вы разве не ждете загрузки модели? Если даже модель не загрузится, вылета не последует, скрипт просто зациклится.
Ваши вылеты вызваны чем-то другим.
Offline