You are not logged in.
Кто-нибудь может помочь? Через память создать таблицу и добавить больше 12 строк, возможно?
Offline
Ты меня немного не понял...допустим, это помогает, но тогда как сделать чтобы СиДжей снова мог двигаться?)) Ведь при этом он застывает на месте, пока ты не воспроизведёшь другую анимацию, или есть ещё варианты?
А откуда я знаю, что ты потом собираешься делать, может ты после это и так применяешь другую анимацию.
Ну попробуй код
05B9: AS_actor -1 stay_idle 1 ms
Offline
Как создать что-то вроде камеры, типа ставлю воображаемую камеру в авто, и то, что через неё видно, выводится на часть экрана?
Как соединить два поезда, чтобы они ехали, как соседние вагоны?
2GTASA: всмысле панель? Создай две, и когда курсор достигнет границы одной из них и нажмёт кнопку вверх/вниз, переключай на вторую.
Last edited by ~AquaZ~ (18-04-2010 09:18)
Offline
Стоит транспорт. Рядом с транспортом стоит пешеход.
04C4: store_coords 0@ 1@ 2@ from_actor 6@ with_offset 3@ 4@ 5@
В переменных 3@ 4@ 5@ должен быть оффсет с координатой позиции пешехода. Как сделать?
Offline
Чтобы получить глобальные координаты из локальных или наооборот, нужно воспользоваться матрицей преобразования координат. Вроде где-то эта тема уже обсуждалась.
------------------------------------------------------------------------------------
Подскажите смещение в структуре авто, по которому записан угол поворота экстра-части (опкоды 08a4 и 098d)
Offline
Где? В какой теме это?
Offline
@Den_spb -
08A4: set_car 90@ extra_parts_angle_to 46@
Значение для опкода 08A4: set_car 90@ extra_parts_angle_to 46@ лежит в пределе от 0.0 до 1.0, что соответствует минимальному и максимальному углу возвращаемого опкодом 098D: get_car 46@ extra_parts_angle $7936 (для #PACKER -0.25 максимальное значение)
0A97: 1@ = car 0@ struct 0AA6: call_method 0x6A1460 struct 1@ num_params 1 pop 0 1.0
---
098D: get_car 46@ extra_parts_angle $7936
Углы возвращаемые опкодом 098D: get_car 46@ extra_parts_angle $7936
#PACKER 0.0 .. -0.25 #DOZER 0.0 .. 0.5 #DUMPER 0.0 .. 0.5 #CEMENT ? #ANDROM 0.0 .. 0.375 #FIRELA ? #FORKLIFT 0.0 .. 1.5
0A97: 1@ = car 0@ struct 0AA6: call_method 0x6A2150 struct 1@ num_params 0 pop 0 0AE9: pop_float 1@
---
По смещению word[CVehicle + 0x86C] находиться значение в пределе от 0 до 2500 для перевода в углы умножаем на коэффициент:
#DUMPER 0.00019999999 #PACKER -0.000099999997 #DOZER 0.00019999999 #ANDROM 0.00015000001 #FORKLIFT 0.00060000003
Last edited by Sanchez (20-04-2010 11:22)
Offline
А откуда я знаю, что ты потом собираешься делать, может ты после это и так применяешь другую анимацию.
Ну попробуй код
05B9: AS_actor -1 stay_idle 1 ms
Потом мне нужно чтобы СиДжеем можно было управлять...применять другую анмацию я после этого не собираюсь... и этот опкод не помог..поворот слишком заметен...мне нужен мгновенный поворот, так сказать...
Всё дело в том что я делаю модик - GTA FreeRunning III (паркур модификация, если кто не знает что такое FreeRunning) и у меня есть движение (frontflip 180) в котором СиДжея развернёт на 180 градусов...но в этом положении он не остаётся...точнее положение то же, но угол обратно ставится)) причём ставится слишком заметно и даже если устанавливать нужный угол самому
0173: set_actor $PLAYER_ACTOR Z_angle_to 1@
то всё равно его некрасиво разворачивает...если кому будет непонятно в чём дело (или просто посмотреть хочется), могу скинуть движение))...
Offline
Sanchez , спасибо за развёрнутый ответ. Интересует ещё вот что: у FIRELA экстра-часть может вращаться и вокруг вертикальной оси (раскачиваться при движении). Можно ли задавать этот угол поворота? Испытывал соседние смещения в структуре, но видимо этот угол хранится в другом месте.
GTASA , воспользуйся поиском по форуму со словом "матриц".
В частности, эта тема затрагивалась здесь: http://sannybuilder.com/forums/viewtopi … 6389#p6389
Last edited by Den_spb (20-04-2010 15:05)
Offline
2Den_spb:
Может через CLEO...
Offline
Как узнать координаты всех 4х колес у машины? Например, там, где создается эффект проколотого колеса (искры).
Offline
2Den_spb:
014C: set_parked_car_generator 0@ cars_to_generate_to 0
Или ты не сохраняешь хэндл парковки, и надо найти по координатам?
___
Где достать список всех пулов?
Last edited by ~AquaZ~ (22-04-2010 05:58)
Offline
Спасибо. А как можно удалить сохранённую парковку (координаты известны) ?
Адрес точно не скажу, однако это хранится также как и пул, т.е все парковки перечислены друг за другом.
I know everything and nothing...
Offline
@BoPoH, извини, я неправильно подсказал. Лучше попробуй так
0812: AS_actor -1 perform_animation "LRGIRL_IDLELOOP" IFP_file "LOWRIDER" 4.0 loopA 0 lockX 1 lockY 0 lockF 0 time -1
Параметр, который выделен красным, отвечает за то, чтобы актёр не просто совершал анимацию, а передвигался вместе с ней. Если вместо 1 поставить 0, то движения не будет.
Offline
.data:00C279D4 _parkedGeneratorCount dd ? .data:00C27AD0 _parkedGenerators CParkedGenerator 1F4h dup(<?>) 00000000 CParkedGenerator struc ; (sizeof=0x20) 00000000 model dw ? 00000002 color1 db ? 00000003 color2 db ? 00000004 x dw ? 00000006 y dw ? 00000008 z dw ? 0000000A angle db ? 0000000B alarm db ? 0000000C doorLock db ? 0000000D field_D db ? 0000000E field_E dw ? 00000010 moneyValue dw ? 00000012 field_12 dw ? 00000014 time dd ? 00000018 field_18 dw ? 0000001A enabled dw ? 0000001C field_1C db ? 0000001D allocated db ? 0000001E field_1E dw ? 00000020 CParkedGenerator ends
Коэффициенты для x, y, z, angle для упаковки в WORD'ы и BYTE:
x 8.0 y 8.0 z 8.0 angle 0.71111107
Last edited by Sanchez (22-04-2010 09:18)
Offline
Создал два скрипта. В первом включается парковка:
{$CLEO} 0A95: 014B: 0@ = init_parked_car_generator 528 -1 -1 0 alarm 50 door_lock 0 0 40000 at -2027.0 175.0 28.0 angle 0.0 014C: set_parked_car_generator 0@ cars_to_generate_to 101 0A93:
Второй код по идее должен перебрать весь массив парковок, сравнивая их координаты с заданными:
{$CLEO} wait 1000 0@ = -2027.0 // координаты 1@ = 175.0 // созданной 2@ = 28.0 // парковки 0@ *= 8.0 1@ *= 8.0 2@ *= 8.0 3@ = 0x00C27AD4 // x 4@ = 0x00C27AD6 // y 5@ = 0x00C27AD8 // z while true // здесь вместо true должен быть размер массива парковок wait 0 0A8D: 6@ = read_memory 3@ size 2 virtual_protect 0 // x 0A8D: 7@ = read_memory 4@ size 2 virtual_protect 0 // y 0A8D: 8@ = read_memory 5@ size 2 virtual_protect 0 // z if and 0045: 6@ == 0@ // (float) 0045: 7@ == 1@ // (float) 0045: 8@ == 2@ // (float) then break end 3@ += 0x20 4@ += 0x20 5@ += 0x20 end while true wait 0 03F0: enable_text_draw 1 045A: draw_text_1number 200.0 200.0 GXT 'NUMBER' number 2000 // ~1~ end
Однако соответствия в координатах не обнаруживается (выхода из цикла не происходит и число на экран не выводится). В чём ошибка?
Offline
@Den_spb - ты читаешь WORD (два байта, целочисленное) и сравниваешь с float (4 байта, плавающая точка). Притом, сравниваешь не значения, а битовые представления.
Было бы странно, если бы оно совпадало.
Используй int для 0@, 1@, 2@ (и, действительно, нужно делить, а не умножать)
Offline
Не могли бы помочь с координатами колес? Или это искать сложно? Просто не хотелось бы пользоваться store_coords_car, так как машины разные, позиции колес разные.
Offline
Однако соответствия в координатах не обнаруживается (выхода из цикла не происходит и число на экран не выводится). В чём ошибка?
Координата умножается на 8.0 и отбрасывается дробная часть.
Offline
В чём может быть проблема? Почему вместо текстур серые квадраты?
038F: request_texture 'tah90' as tx_tah 038F: request_texture 'spd270' as tx_spd 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture tx_tah position tah_posX TahSpdPosY scale TahSpdScale TahSpdScale colour 128 128 128 alpha 255 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture tx_spd position spd_posX TahSpdPosY scale TahSpdScale TahSpdScale colour 128 128 128 alpha 255
tx_tah и tx_spd - константы, номера текстур; tah_posX, spd_posX - позиции по X, TahSpdPosY - позиция по Y; TahSpdScale - масштаб.
Пожалуйста, помогите!
Offline
У меня такое тоже бывает. Это получается если ты задаешь текстуре цвет. Тоже интересует ответ на вопрос.
Offline