#1776 31-12-2009 10:51

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

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

GTASA wrote:

Если можно прицеплять актера к объекту/тачке, то почему же нет таких опкодов? Может скажете, как сделать, чтобы прицепить актера, но при этом он не был в turret состоянии?

А чем тебе 0464: не нравиться? Там конечно тоже turret, но я не могу понять как ты хочешь сделать, чтоб не в turret. Это как например?

У меня вот ещё вопрос:
можно ли скриптом создать спецактёра и сделать так чтоб он входил в банду Грув? Хочу сделать чтоб кроме пяти уже имеющихся бандитов в неё входили Свит, Райдер и другие персонажи.

Offline

#1777 01-01-2010 12:32

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

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

можно ли скриптом создать спецактёра и сделать так чтоб он входил в банду Грув?

d88, всё зависит от того, что ты имеешь ввиду. Если ты говоришь про текущую банду игрока - одно,
а если про персонажей банды Грув, ходящих по улице - совсем другое.
Но скорее всего ты о первом варианте, предложенным мной)

Чтобы в банду игрока входили ещё и доп.актёры кроме нанятых на улице, нужно увеличить макс. кол-во гангстеров в группе игрока (можно по стату, или прибегнуть к памяти), а затем добавить их как актёров в группу Player'а ($PLAYER_GROUP). Можно макс. кол-во бандитов и не изменять, только добавить нужных персонажей.

Ответьте, пожалуйста, на мой вопрос. Повторю его ещё раз.
Как можно имитировать использование скрипта вербовки игроком на каком-нибудь актёре.
Я говорю о скрипте, который срабатывает, когда ты прицеливаешься на гангстере грув и нанимаешь его в банду после нажатия GROUP_FORWARD, ещё этим же скриптом создаются маркеры на радаре и на карте и он же отвечает за устранение членов банды при удалении от них.

Ещё мини-просьба от меня. Скажите плиз, кому известно, адрес флоат стата 24 (max.health).


[---]
А, и чуть не забыл. smile
С НОВЫМ ГОДОМ! clap

Offline

#1778 02-01-2010 06:32

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

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

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

#1779 02-01-2010 11:29

GTASA
Registered: 13-09-2008
Posts: 476

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

Извините, если уже где-то обсуждалось, но как определить место ошибки в скрипте? Тот опкод, из-за которого игра вылетела, из-за которого произошла какая-нибудь ошибка и т.д.

Last edited by GTASA (02-01-2010 11:30)

Offline

#1780 02-01-2010 19:10

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

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

Использовать scm log
http://sannybuilder.com/forums/viewtopic.php?id=268

Offline

#1781 02-01-2010 19:15

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

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

d88 wrote:

Daeman, нет, я имел ввиду второй вариант, чтоб они на улице встречались.

Тогда скажу о втором.
Здесь не всё так просто. Чтобы добавить педа, надо во всех файлах прописать о нём инфу, кто он такой, к какой группе относится, когда ходит, на каких машинах ездит, какой у него звуковой банк, его поведение... В общем, в абсолютно всех файлах о педах.

d88 wrote:

А то что тебе нужно, может это. Если я правильно понял, ты спрашиваешь как управлять членами банды.

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

Чтобы безошибочно понять вопрос нужно просто правильно его прочитать.

Как можно имитировать использование скрипта вербовки игроком на каком-нибудь актёре.

Уточню. Я имею в виду скрипт, намертво вшитый в exe-шник игры.
Ещё раз попрошу, ответьте кто-нибудь, пожалуйста!
Если слишком сложный для понимания вопрос, упрощу  smile
"Как можно сделать так, чтобы с актёром было то же самое, что и когда бы игрок дал ему команду войти в банду"

Offline

#1782 02-01-2010 19:23

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

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

Den_spb wrote:

Использовать scm log

SCMLog это, конечно, хорошо, но как определить с помощью него ошибку? Если ты хочешь ответить - посмотреть последний выполненный опкод, то я скажу, что не обязательно опкод, из-за которого произошла ошибка должен оканчивать лог.

GTASA wrote:

как определить место ошибки в скрипте?

По мне так, - только вручную. Прописывать после каждой команды микро-задержку и выводить на это время на экран переменную с номером строки, также прописанным вручную. Способ довольно мутарный, но действенный и для небольших клео-скриптов вполне подойдёт

Offline

#1783 02-01-2010 19:32

Alien
Registered: 12-10-2008
Posts: 564

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

Как можно имитировать использование скрипта вербовки игроком на каком-нибудь актёре.

{$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

#1784 02-01-2010 19:40

Drift_Legend
From: Феодосия
Registered: 21-06-2009
Posts: 18

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

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

и еще вопросик по текстуркам:
как заставить нарисованную текстуру плавно исчезать с экрана в течении некоторого времени?

Offline

#1785 02-01-2010 20:59

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

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

Daeman wrote:

Тогда скажу о втором.
Здесь не всё так просто. Чтобы добавить педа, надо во всех файлах прописать о нём инфу, кто он такой, к какой группе относится, когда ходит, на каких машинах ездит, какой у него звуковой банк, его поведение... В общем, в абсолютно всех файлах о педах.

Да, я знаю этот способ, но проблема в том, что больше 2 новых педов записать нельзя, движок не выдерживает. Заменять старых тоже не очень хочется. Вот я и надеялся, что скриптом можно это сделать создав спецактёра.

Offline

#1786 03-01-2010 12:14

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

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

Alien, у тебя такая же проблема, что и у d88 )
А может быть. ты просто не полностью прочитал мой вопрос.
Как можно имитировать использование скрипта вербовки игроком на каком-нибудь актёре.
Я говорю о скрипте, который срабатывает, когда ты прицеливаешься на гангстере грув и нанимаешь его в банду после нажатия GROUP_FORWARD, ещё этим же скриптом создаются маркеры на радаре и на карте и он же отвечает за устранение членов банды при удалении от них.

Как можно это иммитировать, сделать, что что происходит с грувом, когда игрок приглашает его в банду.
После согласия актёра на приглашение появляется зелёная иконка на радаре "Друг" (отмечает завербованного), ещё этот скрипт убирает актёра из группы, если игрок удалён от него на некоторое расстояние и удаляет о нанятом инфу (RemoveReferences).
Как сделать также на любом актёре?

Alien wrote:

Откуда в exe скрипты?

Ну, я имею в виду намертво вделанные в игру скрипты, такие как прибытие медиков, пожарных, погоня полицеских за игроком и остальные скрипты, которых нет в мейне и не external. Вот уж не знаю, где эти "забетонированные" в игру скрипты располагаются.

***

d88 wrote:

Да, я знаю этот способ, но проблема в том, что больше 2 новых педов записать нельзя, движок не выдерживает. Заменять старых тоже не очень хочется. Вот я и надеялся, что скриптом можно это сделать создав спецактёра.

Рассмотрим с этой позиции. Думаю, можно осуществить.

Сначала проверяешь группу прохожих и проежах тачек.
08D3: get_present_zone_popcycle_group_for_peds_and_cars_to 26@
Затем сравниваешь его с заранее выясненной группой попциклов, в которой есть грувы (например, можно взять Ganton) и если проверка возвращает тру, идти дальше. 
Находишь хендл рандомного актёра на улице, а затем (можно и с какой-либо вероятностью) изменяешь его модель на нужную, или лучше вообще заменить педа (если используешь спецактёра, дать ему decision maker, идентичный грувовцу). И так каждый раз, добавить только разные дополнительные проверки, чтобы ничего не выглядело искуственно и приписать нужные задержки.
Дерзай)

Offline

#1787 03-01-2010 12:48

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

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

Drift_Legend wrote:

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

Каким-то одним опкодом так просто это не добавишь на любую машину. По-моему, это можно изменить только на уровне памяти игры. Не помню точно, но ещё давно где-то видел способ добавления сирены...

Drift_Legend wrote:

как заставить нарисованную текстуру плавно исчезать с экрана в течении некоторого времени?

Именно такой команды нет, но сделать возможно. Нужно выводить эту же текстуру, со временем отображая текстуру всё прозрачнее и прозрачнее её самой. Для этого надлежит последнее значение (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

#1788 03-01-2010 18:24

Drift_Legend
From: Феодосия
Registered: 21-06-2009
Posts: 18

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

@Daeman
спасибо smile

Offline

#1789 03-01-2010 19:43

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

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

Хотел уточнить: когда результат проверки на существование чего-либо (транспорт, объект, актер..) перестаёт быть достоверным? После первой команды ожидания (wait) после проверки?

Offline

#1790 03-01-2010 21:35

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

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

Он достоверен, если что-то существует.
Перестать быть подлинным он может в любое мгновение, так же возможно и обратное - подолгу является таковым.
Даже в самом мейне есть масса таких проверок, не стоит этим пренебрегать, ведь если попытаться совершить что-либо с чем-то несуществующим, игра поведёт себя мягко говоря нехорошо, - стопроцентный вылет  smile
А wait тут непричём. Сам подумай: как задержка может сказаться на оперируемом объекте? Просто бытует проверенное мнение насчёт действительности существования чего-либо, и верно. Если посмотреть  с логической точки зрения: при задержке мы можем утерять контроль над происходящим, как бы нет синхронизации из-за того что скрипт "ждёт" и не выполняет никаких действий. Соответсвенно, за это время без "сихронизации" между скриптом и игрой с предметом, машиной или актёром что-то может произойти из-за хода игрового процесса.

Offline

#1791 03-01-2010 21:45

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

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

Да это всё понятно, просто где-то слышал, что все скрипты выполняются по очереди, а при команде wait происходит переключение на следующий скрипт в очереди. Если это действительно так, то, пока процесс не дошел до wait, то продолжает выполняться тот же скрипт, в котором была произведена проверка на существование, а это значит, что из другого скрипта в это время транспорт/актер/объект удален быть не может. Хотя, если подумать, то ведь игровой объект может быть уничтожен не обязательно скриптом, так что какое-то действие над ним лучше всего производить сразу же после проверки на существование.

Last edited by Den_spb (03-01-2010 21:51)

Offline

#1792 04-01-2010 02:46

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

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

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

Offline

#1793 04-01-2010 09:22

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

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

Хорошо. Есть ещё два вопроса, часто становящиеся причиной споров:
1.Нужно ли загружать модель перед созданием пикапа? Есть мнение, что загружать модель не нужно. Причина такого мнения - игра при создании пикапа не вылетает, даже если модель не загружена. У оппонентов другое мнение: загружать модель желательно, а скрипты, создающие пикап без предварительной загрузки моделей не вылетают потому, что модель уже была загружена в память каким-то другим процессом. Кто прав?
2.Нужно ли применять опкод

038B: load_requested_models

?
Тут есть три мнения: а) это сорный и бесполезный опкод, и применять его не нужно б) нужно применять при загрузке более, чем 1 модели одновременно в) нужно применять всегда, независимо от количества одновременно загружаемых моделей. Лично я склоняюсь ко второму варианту. Кто прав?

Offline

#1794 04-01-2010 10:57

Alien
Registered: 12-10-2008
Posts: 564

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

1) Загрузка модели там вроде и не нужна. Даже R* не писали.
2) Эта функция LoadRequestedModels и так много где понатыкана в CGame__Process. Если ее не вызовешь ты, она все равно будет вызвана к следующему приходу к этому скрипту через wait.  Хочешь - пиши, не хочешь - не пиши. Я себя не утруждал))

Last edited by Alien (04-01-2010 12:46)

Offline

#1795 04-01-2010 18:32

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

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

На http://gtamodding.ru/wiki/Адреса_Памяти_(SA) в разделеле Handling даны смещения для тех или иных параметров хандлинга, а как определить адрес нулевого смещения для какого-то конкретного вида транспорта?

Offline

#1796 04-01-2010 19:07

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

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

0xC2B9DC вот по адресу начало сечешь, прибавишь 224-смещение будет 0xC2BABC это второй элемент handling итд каждый по 224, еще могут быть внутри смещения они в gtamodding.ru написаны.

Last edited by mfisto (04-01-2010 19:08)


I know everything and nothing...

Offline

#1797 05-01-2010 05:37

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

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

Alien wrote:

2) Эта функция LoadRequestedModels и так много где понатыкана в CGame__Process. Если ее не вызовешь ты, она все равно будет вызвана к следующему приходу к этому скрипту через wait.  Хочешь - пиши, не хочешь - не пиши. Я себя не утруждал))

Он нужен если загружаешь несколько моделей. У меня бывали вылеты если его не писать.

Offline

#1798 05-01-2010 12:34

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

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

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

Offline

#1799 05-01-2010 13:40

Alien
Registered: 12-10-2008
Posts: 564

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

а при чем здесь вылеты. Вы разве не ждете загрузки модели? Если даже модель не загрузится, вылета не последует, скрипт просто зациклится.
Ваши вылеты вызваны чем-то другим.

Offline

#1800 05-01-2010 14:45

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

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

И то верно. Сейчас протестировал код с одновременной загрузкой двух моделей без использования load_requested_models - игра не вылетает.

Offline

Board footer

Powered by FluxBB