#76 Re: Вопросы по скриптингу » Один вопрос » 21-09-2011 18:02

mfisto wrote:

Я решал такую проблему следующим образом...

0AAA: 31@ = thread 'OTB' pointer
if
   31@ == 0                         //если ноль значит поток не запущен
jf @blabla
//тут рисуем свои текстурки

Да, пробовал. Скрипт рулетки, например, грузится при входе в казино (при чем сразу (пока фэйдинг) приобретает статус скрипта 3 (опкод 0926), который не меняется даже во время игры в эту самую рулетку). Значит с таким кодом увидеть какое у тебя оружие черех худ будучи в казино не получится.
Посему и пытаюсь выловить переменные, которые использует мейн перед загрузкой.
Идея на данный момент такая: поскольку худ должен быть в лупе, текстуры надо либо постоянно выгружать-загружать, либо загрузить один раз, но следить не выгрузил ли их мейн и тогда грузить снова. У меня пока первый вариант. При входе в казино, например, мейн выгружает мои текстуры и грузит свои. Идея в том, чтобы либо а) уловив момент догрузить свои текстуры (лоад на другие номера) не выгружая мейновские; либо б) выгрузить мейновские (релиз) и загрузить их снова вместе со своими (да клео-скрипт получится длиннее, но если только так, то что делать). Вопросы собственно связаны со словами "уловив момент"...

#77 Re: Вопросы по скриптингу » Один вопрос » 21-09-2011 17:01

444andrei444 wrote:

Может я тебя не правильно понял, а что если так
$Onmission == 1

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


UPD. дабы не плодить посты - мейн трогать не хотелось бы...

#78 Re: Вопросы по скриптингу » Один вопрос » 21-09-2011 16:27

Den_spb wrote:

Какой функции?

Пытался вот тут сформулировать.
Когда грузишь текстуры, например, оружия для собственного худа - всё ок. Однако всё ок только до тех пор, пока оригинальный мейн не выполняет команду релиз тхд и лоад его какие-то там текстуры. Таких потоков в мейне не так много... штук 15 всего (4 школы, 4 игры в казино, 4 видео игры, дансинг/лоурайдер, пул, бега и ещё некоторые). К сожалению, проблему микса текстур лично мне пока не удаётся решить ни загрузкой текстур на другие номера (собственно у меня так и есть - максимальный номер подгрузки текстуры в мейне 65, а мои текстуры грузятся начиная с 71), ни вот попыткой отследить нахождение героя рядом с объектами-тригерами скриптов.
Соответственно пока думаю выходить из этой ситуации отслеживая запуск потока и (проанализировав скрипт мейна) отслеживая соответствующие переменные этих потоков. Вопрос только в том, что в некоторых потоках (например, приведенный выше поток OTB - бега) мейн грузит текстуры по несколько раз... А поскольку эти потоки в основном являются миссиями - возникает вопрос как отследить переменные выше 32@. Плюс некоторые потоки грузятся в память по нескольку раз...

p.s. Да я знаю, что существует интерфейс эдитор и худ ГТА4. Хочу свой через клео smile

#79 Re: Вопросы по скриптингу » Один вопрос » 21-09-2011 10:31

Den_spb wrote:

Лучше всего воспользоваться опкодами КЛЕО4.

Спасибо, работает... Одно плохо - требуемой функции в игре не выполняет smile
Попробую по другому подойти, в связи с чем такой вопрос: Вот тут можно увидеть как отследить локальные переменные в потоке (32 штуки). Вопрос как отследить переменные в потоке миссии, коих как мы знаем 1024?
Пример из оригинального мейна:

:OTB_7451
...
00D6: if 
0039:   453@ == 1 
004D: jump_if_false @OTB_7544 
0002: jump @OTB_7551 

...

:OTB_7551
0391: release_txd_dictionary 
0390: load_txd_dictionary 'LD_OTB' 
...

Как отследить эту (453@) переменную?

Да, кстати, вопрос по отслеживанию второго потока с одинаковым именем остаётся в силе...

#80 Re: Вопросы по скриптингу » Один вопрос » 19-09-2011 18:25

Den_spb wrote:

Динамические объекты - это те объекты, модели которых прописаны в файле object.dat (ломающиеся и перемещаемые объекты). Помимо этого, динамическими являются любые объекты, созданные скриптом.

Хм... тогда странно... Все эти объекты прописаны в object.dat (KB_BANDIT_U, NEIL_SLOT, ROULETTE_TBL, BLCK_JACK, OTB_MACHINE, K_POOLTABLESM, + ряд моделек для аркадных игр). Но как в игре определить находится ли СиДжей рядом пока не понимаю...

#81 Re: Вопросы по скриптингу » Один вопрос » 19-09-2011 09:39

VcSaJen wrote:

Знает, нормально компилирует. Скажи, ты вместо открытия своего исходника каждый раз декомпилируешь скрипт? Это распространённая ошибка новичков, надо не декомпилировать каждый раз, а открыть свой txt исходник и работать с ним.

Нет. Я редактирую txt. Другое дело, что у меня каждая строчка в txt начинается с опкода... Ну кроме лейблов (двоеточие) и инфы (//), конечно... Что касается <> СБ скомилирует как "if not ==". Мне в txt проще и понятнее так написать.

#82 Re: Вопросы по скриптингу » Один вопрос » 19-09-2011 05:23

Den_spb wrote:

Статические объекты (объекты карты) искать нельзя, только динамические.

Да, всё дело видимо именно в этом... А в чем собственно разница между статическими и динамическими? Простыми словами... И еще пара вопросов ниже...

Den_spb wrote:

1. В 23@ в опколе 0472 должен быть записан хэндл существующего объекта - см. пример использования в main.scm.

В main.scm опкоду 0472 предшествует 029B. В чём суть этого опкода? Что он делает (что в данном случае значит инициировать) с предметом?

Den_spb wrote:

2.Перед тем, как производить действия над объектом (или машиной, актёром) необходимо убедиться, что объект существует, т.е. между 0866: и 0984: надо вставить проверку на существование объекта.

Это понятно. Это тестовый скрипт был. А вылет обуславливался попыткой найти статический объект.

Den_spb wrote:

3.Зачем такой огород? Лучше и проще так:... Ещё лучше воспользоваться спец. опкодом для проверки модели (вариант 4)

Я с языками программирования не знаком. Пишу так, как компилирует СБ. А он таких опкодов (<>) не знает. Он их на "огород" меняет.

И, собственно, еще один вопрос - как в игре отследить второй поток с одним именем? Например, если зайти в Грин Ботлз Бар МемХакер покажет два активных потока ARCADE (поскольку там два игровых автомата). Я понимаю как через клео скрипт отследить поток и его переменные. Вопрос как отследить второй поток с тем же именем?

#83 Re: Вопросы по скриптингу » Один вопрос » 16-09-2011 22:12

Voron295 wrote:
Yoda wrote:

А как в клео скрипте проверить находится ли герой около какого-то объекта в игровом мире? Например, около бильярдного стола? Модель стола #K_POOLTABLESM ID 2964... ? Пробовал опкодом 0472, как в оригинальном мэйне. Но если как параметр ставить модель - СБ не компилирует скрипт. Если ID - игра вылетает...

Попробуй так:

Спасибо за совет, но нет. Игра вылетает при старте.
Тут варианты, которые пробовал. Отмечу, что это всё объекты defined в main.scm... Пробовал находить эти объекты также Интерсептором, но, во-первых, он их не нашёл, а, во-вторых, не знаю как потом проверку делать...

#84 Re: Вопросы по скриптингу » Один вопрос » 16-09-2011 10:41

444andrei444 wrote:

А можно ли создать актера спускающегося на парашуте? Если да, то как?

Насколько я понимаю, можно... Сам только учусь, посему - миссия A Home In The Hills в помощь...

Господа, такой вопрос... А как в клео скрипте проверить находится ли герой около какого-то объекта в игровом мире? Например, около бильярдного стола? Модель стола #K_POOLTABLESM ID 2964... ? Пробовал опкодом 0472, как в оригинальном мэйне. Но если как параметр ставить модель - СБ не компилирует скрипт. Если ID - игра вылетает...

#85 Re: Вопросы по скриптингу » Один вопрос » 05-09-2011 19:57

444andrei444 wrote:

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

//-------------MAIN---------------
wait 500
create_thread "222

может дело в том, что в коде нет закрывающей кавычки?

#86 Вопросы по скриптингу » Шрифты в GTA SA » 05-09-2011 16:45

Yoda
Replies: 14

Господа, такой вопрос...
Можно ли в СА добавить новый шрифт? Прописано ли в экзешнике количество шрифтов? Или они только в дат и тхд файле? Если прописано, то как и где... дайте адресок smile
Попробовал сделать новый шрифт на основе font1, добавил его как font3 в тхд, скопировал-вставил кусок от font0 в дат файле - игра даже не грузится... Экзешник у меня компакт.

UPD.: И еще вопросик - как решить проблему с текстурами?
Поясню. Клео скрипт (например, любой клео-hud) делает примерно следующее:

:LoadTextures
0391: release_txd_dictionary
0390: load_txd_dictionary 'VTXD' 
038F: load_texture "FIST" as 1
038F: load_texture "BRNUCKLE" as 2
etc.

Проблема в том, что оригинальный мэйн в некоторых миссиях и скриптах делает то же самое, то есть подгружает текстуры на те же номера... Например, в школах (текстуры медалей) или играх в казино (карты и прочее)... В итоге в игре текстуры меняются - вместо карт в казино, например, - иконки оружия...
Как решить проблему, кроме как запретом отображать оружейный худ при 1 в пойнтере треда или скрипта? Кстати, можно было бы решить шрифтом (по аналогии со звездами розыска), но нужно добавить новый шрифт (см. первый вопрос) smile

#88 Re: Sanny Builder и CLEO » Вопросы и предложения по Sanny Builder » 09-03-2011 18:13

Ну, примерно понятно. Хотя, я не настолько туп и нуб (стихи прямо), чтоб так подробно мне всё объяснять, но спасибо... smile
Описываю ещё раз, более подробно. СБ декомпилируя некий скрипт, содержащий проверку с параметром ИЛИ (наоборот, вроде не замечал) без исходного текстового файла, делает это правильно... Более того - очеловечивает код, выдавая на экране вместо цифрового значения слова И или ИЛИ. Компилируя скрипт обратно в машинный код (в процессе работы над скриптом в СБ, возможно, текстовый файл, созданный при декомпиляции удаляется), СБ не видит цифрового значения и считает количество условий с 0 или 1 (соответственно присваивая цифровое значение, что, в итоге, всегда даёт параметр И)... Получается, что СБ компилирует не то, что на экране, а то, что в текстовом файле... Теперь всё ясно.
Маленький оффтоп можно? Объясните мне ещё один нубский вопрос... Вот, я так понимаю, что команда джамп - код туда ушёл и не вернулся, а госаб - ушёл и вернулся... Почему в оригинальном мэйне в некоторых местах (в потоке джанкфуд, например) стоят два джампа подряд? Это криворукость рокстарз? Это остатки от консоли? Или это моё непонимание того, как работает код и эти команды?
П.С. И до кучи: каким опкодом или как ещё в ГТА-СА вывести на экран флоат значение? Координаты, например?

#89 Re: Sanny Builder и CLEO » Вопросы и предложения по Sanny Builder » 09-03-2011 12:27

Смысла не вижу, но извольте. Это не мой код (это кусок кода из мода CLEO_Windshield_GUI). Довольно простой - рисуем новый интерфейс, в том числе иконки оружия и цифирки патронов.

:WeapAmmoDisplay
gosub @GetCurrentWeap 
if  and
    CURRENT_WEAP > 15 
    not CURRENT_WEAP == 40 
    not CURRENT_WEAP > 43 
then
    gosub @GetCurrentWeapAmmo 
    if  or
        CURRENT_WEAP == 16 
        CURRENT_WEAP == 17 
        CURRENT_WEAP == 18 
        CURRENT_WEAP == 35 
        CURRENT_WEAP == 36 
        CURRENT_WEAP == 39 
    then
        gosub @DrawWeapAmmoOne 
    else
        gosub @GetCurrentSlot 
        0A96: 0@ = actor $PLAYER_ACTOR struct 
        000A: 0@ += 0x5A0 
        CURRENT_SLOT *= 0x1C 
        005A: 0@ += CURRENT_SLOT // (int) 
        000A: 0@ += 0x8 
        0A8D: AMMO_CLIP = read_memory 0@ size 4 virtual_protect 0 // GetAmmoClip
        0062: WEAP_AMMO -= AMMO_CLIP // (int) 
        0085: AMMO_OTH = WEAP_AMMO // (int) 
        gosub @DrawWeapAmmoTwo 
    end
end
return

Вопрос в том, что если этот код несколько раз открыть и закрыть в SB указанное в коде "if  or" изменится на просто "if" или, что еще хуже на "if and".
Повторюсь, я нуб. Я ничерта в этом не понимаю. Редактирую я напрямую в SB, а не в текстовых файлах, как, возможно, делают опытные кодеры. Я вообще смысла в этих текстовых файлов не понимаю и их удаляю... Может потому он мне параметры и сбрасывает? Если это баг - буду рад, что указал на него. Если нет, буду рад, если объясните, в чем я не прав...

#90 Re: Sanny Builder и CLEO » Вопросы и предложения по Sanny Builder » 09-03-2011 10:01

Доброго времени суток всем, особенно авторам СБ.
У меня вопрос - не вопрос, сообщение о баге - ил нет... короче разъясните нубу в програмировании и скриптиге.
Стоит СА (ну, да, не то, чтобы очень родная и правильная smile). Стоит СБ 3.04. Пишу в нем клео скрипт. Поскольку новичок, пишу, компилю, лезу в игру проверять... Если что-то не так, лезу обратно в СБ править... Короче, на какой-то раз лазаний туда-сюда, СБ сбрасывает настройки IF - AND / OR. Это конечно обходится (AND можно последовательно несколько проверок сделать, а OR несколько разных), но как-то это не правильно вроде...

Board footer

Powered by FluxBB