You are not logged in.
Я решал такую проблему следующим образом...
0AAA: 31@ = thread 'OTB' pointer if 31@ == 0 //если ноль значит поток не запущен jf @blabla //тут рисуем свои текстурки
Да, пробовал. Скрипт рулетки, например, грузится при входе в казино (при чем сразу (пока фэйдинг) приобретает статус скрипта 3 (опкод 0926), который не меняется даже во время игры в эту самую рулетку). Значит с таким кодом увидеть какое у тебя оружие черех худ будучи в казино не получится.
Посему и пытаюсь выловить переменные, которые использует мейн перед загрузкой.
Идея на данный момент такая: поскольку худ должен быть в лупе, текстуры надо либо постоянно выгружать-загружать, либо загрузить один раз, но следить не выгрузил ли их мейн и тогда грузить снова. У меня пока первый вариант. При входе в казино, например, мейн выгружает мои текстуры и грузит свои. Идея в том, чтобы либо а) уловив момент догрузить свои текстуры (лоад на другие номера) не выгружая мейновские; либо б) выгрузить мейновские (релиз) и загрузить их снова вместе со своими (да клео-скрипт получится длиннее, но если только так, то что делать). Вопросы собственно связаны со словами "уловив момент"...
Может я тебя не правильно понял, а что если так
$Onmission == 1
Если это мне - не вариант. Потоки типа обозначенного OTB ставят такой флаг. Получается, что, если делать проверку и не отображать худ при этом флаге, - худа не будет не только в играх казино, например, но и просто в миссиях. Если отображать худ при этом флаге - микс текстур, что я собственно и пытаюсь перебороть.
UPD. дабы не плодить посты - мейн трогать не хотелось бы...
Какой функции?
Пытался вот тут сформулировать.
Когда грузишь текстуры, например, оружия для собственного худа - всё ок. Однако всё ок только до тех пор, пока оригинальный мейн не выполняет команду релиз тхд и лоад его какие-то там текстуры. Таких потоков в мейне не так много... штук 15 всего (4 школы, 4 игры в казино, 4 видео игры, дансинг/лоурайдер, пул, бега и ещё некоторые). К сожалению, проблему микса текстур лично мне пока не удаётся решить ни загрузкой текстур на другие номера (собственно у меня так и есть - максимальный номер подгрузки текстуры в мейне 65, а мои текстуры грузятся начиная с 71), ни вот попыткой отследить нахождение героя рядом с объектами-тригерами скриптов.
Соответственно пока думаю выходить из этой ситуации отслеживая запуск потока и (проанализировав скрипт мейна) отслеживая соответствующие переменные этих потоков. Вопрос только в том, что в некоторых потоках (например, приведенный выше поток OTB - бега) мейн грузит текстуры по несколько раз... А поскольку эти потоки в основном являются миссиями - возникает вопрос как отследить переменные выше 32@. Плюс некоторые потоки грузятся в память по нескольку раз...
p.s. Да я знаю, что существует интерфейс эдитор и худ ГТА4. Хочу свой через клео 
Лучше всего воспользоваться опкодами КЛЕО4.
Спасибо, работает... Одно плохо - требуемой функции в игре не выполняет 
Попробую по другому подойти, в связи с чем такой вопрос: Вот тут можно увидеть как отследить локальные переменные в потоке (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@) переменную?
Да, кстати, вопрос по отслеживанию второго потока с одинаковым именем остаётся в силе...
Динамические объекты - это те объекты, модели которых прописаны в файле object.dat (ломающиеся и перемещаемые объекты). Помимо этого, динамическими являются любые объекты, созданные скриптом.
Хм... тогда странно... Все эти объекты прописаны в object.dat (KB_BANDIT_U, NEIL_SLOT, ROULETTE_TBL, BLCK_JACK, OTB_MACHINE, K_POOLTABLESM, + ряд моделек для аркадных игр). Но как в игре определить находится ли СиДжей рядом пока не понимаю...
Знает, нормально компилирует. Скажи, ты вместо открытия своего исходника каждый раз декомпилируешь скрипт? Это распространённая ошибка новичков, надо не декомпилировать каждый раз, а открыть свой txt исходник и работать с ним.
Нет. Я редактирую txt. Другое дело, что у меня каждая строчка в txt начинается с опкода... Ну кроме лейблов (двоеточие) и инфы (//), конечно... Что касается <> СБ скомилирует как "if not ==". Мне в txt проще и понятнее так написать.
Статические объекты (объекты карты) искать нельзя, только динамические.
Да, всё дело видимо именно в этом... А в чем собственно разница между статическими и динамическими? Простыми словами... И еще пара вопросов ниже...
1. В 23@ в опколе 0472 должен быть записан хэндл существующего объекта - см. пример использования в main.scm.
В main.scm опкоду 0472 предшествует 029B. В чём суть этого опкода? Что он делает (что в данном случае значит инициировать) с предметом?
2.Перед тем, как производить действия над объектом (или машиной, актёром) необходимо убедиться, что объект существует, т.е. между 0866: и 0984: надо вставить проверку на существование объекта.
Это понятно. Это тестовый скрипт был. А вылет обуславливался попыткой найти статический объект.
3.Зачем такой огород? Лучше и проще так:... Ещё лучше воспользоваться спец. опкодом для проверки модели (вариант 4)
Я с языками программирования не знаком. Пишу так, как компилирует СБ. А он таких опкодов (<>) не знает. Он их на "огород" меняет.
И, собственно, еще один вопрос - как в игре отследить второй поток с одним именем? Например, если зайти в Грин Ботлз Бар МемХакер покажет два активных потока ARCADE (поскольку там два игровых автомата). Я понимаю как через клео скрипт отследить поток и его переменные. Вопрос как отследить второй поток с тем же именем?
Yoda wrote:А как в клео скрипте проверить находится ли герой около какого-то объекта в игровом мире? Например, около бильярдного стола? Модель стола #K_POOLTABLESM ID 2964... ? Пробовал опкодом 0472, как в оригинальном мэйне. Но если как параметр ставить модель - СБ не компилирует скрипт. Если ID - игра вылетает...
Попробуй так:
Спасибо за совет, но нет. Игра вылетает при старте.
Тут варианты, которые пробовал. Отмечу, что это всё объекты defined в main.scm... Пробовал находить эти объекты также Интерсептором, но, во-первых, он их не нашёл, а, во-вторых, не знаю как потом проверку делать...
А можно ли создать актера спускающегося на парашуте? Если да, то как?
Насколько я понимаю, можно... Сам только учусь, посему - миссия A Home In The Hills в помощь...
Господа, такой вопрос... А как в клео скрипте проверить находится ли герой около какого-то объекта в игровом мире? Например, около бильярдного стола? Модель стола #K_POOLTABLESM ID 2964... ? Пробовал опкодом 0472, как в оригинальном мэйне. Но если как параметр ставить модель - СБ не компилирует скрипт. Если ID - игра вылетает...
как это понимать вылетает на ожидании. вроде бы у меня нету такого потока. может это в мейне несовместимость с скриптами. однако вылетает если играть за копа. когда выбираю обычный режим все в порядке вот код если что
//-------------MAIN--------------- wait 500 create_thread "222
может дело в том, что в коде нет закрывающей кавычки?
Господа, такой вопрос...
Можно ли в СА добавить новый шрифт? Прописано ли в экзешнике количество шрифтов? Или они только в дат и тхд файле? Если прописано, то как и где... дайте адресок 
Попробовал сделать новый шрифт на основе 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 в пойнтере треда или скрипта? Кстати, можно было бы решить шрифтом (по аналогии со звездами розыска), но нужно добавить новый шрифт (см. первый вопрос) 
Благо_дарствую за разъяснения!
Ну, примерно понятно. Хотя, я не настолько туп и нуб (стихи прямо), чтоб так подробно мне всё объяснять, но спасибо... 
Описываю ещё раз, более подробно. СБ декомпилируя некий скрипт, содержащий проверку с параметром ИЛИ (наоборот, вроде не замечал) без исходного текстового файла, делает это правильно... Более того - очеловечивает код, выдавая на экране вместо цифрового значения слова И или ИЛИ. Компилируя скрипт обратно в машинный код (в процессе работы над скриптом в СБ, возможно, текстовый файл, созданный при декомпиляции удаляется), СБ не видит цифрового значения и считает количество условий с 0 или 1 (соответственно присваивая цифровое значение, что, в итоге, всегда даёт параметр И)... Получается, что СБ компилирует не то, что на экране, а то, что в текстовом файле... Теперь всё ясно.
Маленький оффтоп можно? Объясните мне ещё один нубский вопрос... Вот, я так понимаю, что команда джамп - код туда ушёл и не вернулся, а госаб - ушёл и вернулся... Почему в оригинальном мэйне в некоторых местах (в потоке джанкфуд, например) стоят два джампа подряд? Это криворукость рокстарз? Это остатки от консоли? Или это моё непонимание того, как работает код и эти команды?
П.С. И до кучи: каким опкодом или как ещё в ГТА-СА вывести на экран флоат значение? Координаты, например?
Смысла не вижу, но извольте. Это не мой код (это кусок кода из мода 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, а не в текстовых файлах, как, возможно, делают опытные кодеры. Я вообще смысла в этих текстовых файлов не понимаю и их удаляю... Может потому он мне параметры и сбрасывает? Если это баг - буду рад, что указал на него. Если нет, буду рад, если объясните, в чем я не прав...
Доброго времени суток всем, особенно авторам СБ.
У меня вопрос - не вопрос, сообщение о баге - ил нет... короче разъясните нубу в програмировании и скриптиге.
Стоит СА (ну, да, не то, чтобы очень родная и правильная
). Стоит СБ 3.04. Пишу в нем клео скрипт. Поскольку новичок, пишу, компилю, лезу в игру проверять... Если что-то не так, лезу обратно в СБ править... Короче, на какой-то раз лазаний туда-сюда, СБ сбрасывает настройки IF - AND / OR. Это конечно обходится (AND можно последовательно несколько проверок сделать, а OR несколько разных), но как-то это не правильно вроде...