You are not logged in.
Да, уж. Время пролетело незаметно.
Ты помнишь как все начиналось
Все было впервые и вновь ©….
С юбилеем!
И там ещё нужно было бы добавить двоеточие.
А GXT файл открыть не судьба?
И почему то по завершении отсчета игру крашит, варнинги идут, из-за чего может быть?
while true repeat wait 0
Замени на это и будет тебе счастье
while true FOR repeat wait 0
Заодно, может быть, научишься составлять правильно циклы.
Тряхнул стариной, держи код.
{$CLEO} 0000: while true wait 0 if and 0AB0: key_pressed 17 0AB0: key_pressed 77 then 32@ = 0 while true wait 0 0A8F: 1@ = 150000 - 32@ // int 0085: 0@ = 1@ // (int) 0@ /= 60000 0085: 2@ = 0@ // (int) 2@ *= 60000 0062: 1@ -= 2@ // (int) 1@ /= 1000 03F0: enable_text_draw 1 if 0019: 1@ > 9 then 045B: draw_text_2numbers 200.0 200.0 GXT 'TIME' numbers 0@ 1@ // ~1~:~1~ else 045B: draw_text_2numbers 200.0 200.0 GXT 'TIME_0' numbers 0@ 1@ // ~1~:~1~ end if and 0@ == 0 1@ == 0 then break end if and 32@ > 2000 0AB0: key_pressed 17 0AB0: key_pressed 77 then wait 1000 break end end end end
Эээ... По логике - не обязательно. Верхние ряды хоть акварелью обрисуй - тут имеют значение только нижние ряды.
Игрой используется символы с 1 по 9 ряд, в меню и при использовании некоторых опкодов подставляется аналог буквы из рядов 10 – 13. По этому расположение символов 10 – 13 рядов повторяет 2-9.
yelmi wrote:~AquaZ~ wrote:@yelmi - ЫЫЫЫ
Какие претензии? У тебя нет в изображении русских букв с 1-го по 9 ряд включительно.
1-9 ряды - это готический шрифт. А в меню используется другой, 10-13 ряды.
10 – 13 ряд должен повторять порядок следования букв 2 - 9 рядов. Разница лишь в размере и типе шрифта.
@yelmi - ЫЫЫЫ
Какие претензии? У тебя нет в изображении русских букв с 1-го по 9 ряд включительно.
~AquaZ~ wrote:Как делать fonts.dtf для Rus2GxtCoder от yelmi? У меня л вместо я, а сверяю - норм вроде...
возможно ты не ту картинку смотришь, там 2 картинки со шрифтами...
Глупости, оба файла по расположения символов (букв) одинаковы.
Если я не ошибаюсь, то BA67A4 = [byte] Player in menu?
И не проще ли сделать так?
{$CLEO} 0000: NOP 1@ = 0 2@ = 0 :Noname_16 wait 0 if 0AB0: key_pressed 9 jf @Noname_16 0A8D: 1@ = read_memory 0xBA67A4 size 1 virtual_protect 0 0A8D: 2@ = read_memory 0xBA68A4 size 4 virtual_protect 0 //? if and 1@ == 0 2@ == 0 jf @Noname_17 <CODE> jump @Noname_16 :Noname_17 <CODE> jump @Noname_16
Анимация прекратится, если использовать телепорт. Можно просто поместить его на его место, но чуть выше.
04C4: get_coords 0@ 1@ 2@ from_actor 3@ with_offset 0.0 0.0 -0.8 // -0.9 00A1: set_actor 3@ coords 0@ 1@ 2@
Зачем такие извращения, не проще ли использовать
0687: clear_actor $PLAYER_ACTOR task
или
0792: disembark_instantly_actor $PLAYER_ACTOR
Наверное, вопрос к Yelmi. Где достать спецификацию IFP-шек, чтобы полностью разобраться, как что записывается;
Зачем тогда Yelmi менял этот блок?
Потому что я не был уверен в том, что игра не читает этот блок. Да и сейчас сомневаюсь в этом.
Вот кусок катовского IFP
$ ¤ Ђ€ Ђ? BNAME cscopcarla92 DGAN<` INFOи я хочу поменять cscopcarla92 на, например, cssavanna. Как это сделать?
HEX-редактор тебе в помощь.
4b - FourCC - "NAME" 4b - Int32 - Length of the name of the animation (X) Xb - char[X] - Animation name (null-terminated string)
Правда, смысла менять имя анимации для объектов (автомобилей) нет. У каждого автомобиля свой набор названий объектов.
Есть ли у, кого ни будь, более-менее полный список GXT ключей GTAIV?
это что за executable? Я с таким не встречался. Можно ссылку на него?
Есть 1.01eu_lic.exe (14 405 632 байт), есть 1.01eu_nodvd.exe (15 806 464 байт). Может это версия 1.0? И как на нем может работать CLEO 3, если она тоже разрабатывалась только на 2 версии: 1.0us и 1.01eu?
Держи, все клео (CLEO 3) скрипты тестировал на этом ехе.
Поддерживаются те же версии игры, что и в CLEO 3. Если попытаться запустить на другой версии, вылезет сообщение об ошибке и игра продолжится дальше, но уже без CLEO.
gta_sa.exe eu (14 386 176 байт) Cleo3 работает нормально, CLEO4 вылетает с ошибкой дважды, при этом игра не запускается.
Я искал так: ввел в мэин слово какое-то, которым называется зап часть, и ответа не было. Может, все-таки не в мэине оно? Надо какой-то адрес памяти, который вызывает то меню.
Неужели так трудно посмотреть внешние скрипты? External script 66 (CARMOD1), например. Все вам адрес памяти подавай.
06FD: set_car 77@ speed_on_path_to 1.0 – регулировать скорость
Сам хоть пробовал такое на ррр???? Не работает!!!
Для начала, прежде чем задавать глупые вопросы, научись обращаться с опкодами.
Я не один десяток RRR путей делал для своего мода и все всегда работает на ура. Если тебе сложно научиться нормально записать RRR путь и его потом использовать, возможно, это не для тебя?
Проблема не в том, что этот опкод у тебя не работает, проблема в понимании для чего он нужен и что он делает. Для того чтобы понять нужно свериться с оригиналом, смотреть какой коэффициент скорости обычно устанавливают. Да и тестирование ни кто не отменял.
05EC: release_car 51@ from_path –снять автомобиль
06FD: set_car 77@ speed_on_path_to 1.0 – регулировать скорость
Вот черт, второй человек мне об этом говорит, правда о отсутствии qtintf70.dll узнаю только от тебя. Долбаный компонент, ни где не говорилось о необходимости поставлять еще и эту qtintf70.dll вместе с программой. Избавлюсь от данного компонента и обновлю программу.
Зря грешил на компонент, в общем исправил качайте обновление.
Можно попробовать такой вариант:
:FUCKU_ped wait 0 00D6: if 0256: player $PLAYER_CHAR defined 004D: jump_if_false @FUCKU_ped if 80DF: not actor $PLAYER_ACTOR driving 004D: jump_if_false @FUCKU_ped 04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 0.0 2.0 -0.5 0A3E: unknown_get_actor_in_sphere 0@ 1@ 2@ radius 0.6 0.6 1.0 handle_as 17@ 00D6: if 8039: 17@ == -1 004D: jump_if_false @FUCKU_ped if 8611: actor 17@ performing_animation "FUCKU" 004D: jump_if_false @FUCKU_ped 0812: AS_actor 17@ perform_animation "FUCKU" IFP_file "PED" 4.0 loopA 1 lockX 0 lockY 0 lockF 0 time -1 09D5: unknown_get_actor 17@ unknown 345 flags 1 0 0 store_to 13@ jump @FUCKU_ped
правда у 0A3E: есть ограничения, на работает с педами в транспорте. Полученного педа не нужно удалять, игра сама об этом позаботится.
PIT:
$ActorHandle = Actor.Create(CivMale, #MALE01, 0.0, 0.0, 0.0)
Теперь хендл актера хранится в переменной $ActorHandle, и вы можете, используя ее, делать с ним все, что угодно. Хендл можно получить не только создавая нового актера (или еще что-нибудь). В игре существуют специальные опкоды, позволяющие "захватить" случайного прохожего и превратить его таким образом в актера.
Например, 089E: get_actor_in_sphere 3@ 4@ 5@ radius 5.0 handle_as 11@
Или клео вариант 0AB5: store_actor $PLAYER_ACTOR closest_vehicle_to 0@ closest_ped_to 1@.
Можно также воспользоваться кодом, Seemann на этом форуме где-то выкладывал. Целишься в прохожего, получаешь его хендл, а дальше уже с ним делаешь, что тебе угодно. В том числе и проверить его педтайп.
P.S. Если ты под понятием «получить хендл» подразумеваешь что-то другое, описывай подробнее, что именно.
Может не совсем в тему вопрос =
Вот нашелся адрес структуры TARGET PEDа (из скрипта в 1м посте).
1. Как определить это пешеход или созданный актор ?
2. Если это пешеход, то как получить его хэндл и отменить все его ПЕДовские задачи ?
Как будто он создан CreateActor. ("Родить" на его месте другого актора с такой же
моделью, не подходит, т.к. это будет бросаться в глаза)
Можно попробовать записать ближайшего педа и проверить его pedtype
089F: get_actor 0@ pedtype_to 13@
00D6: if
84A4: not 13@ == 7 // @ == any
004D: jump_if_false @
Кстати, в исходном коде gasoline_NEW нашёл очень глупую проверку.
Эта проверка делалась специально для того, чтобы задавались «умные» вопросы.:D
0AB3 устанавливает значение глобальной CLEO-переменной. Читай help внимательно.
This code for my speedometer:
{$CLEO .cs} 0000: NOP :Noname_2 0001: wait 0 ms 00D6: if 0256: player $PLAYER_CHAR defined 004D: jump_if_false @Noname_2 00D6: if and 00DF: actor $PLAYER_ACTOR driving 0038: $ONMISSION == 0 004D: jump_if_false @Noname_2 00D6: if 84C8: not actor $PLAYER_ACTOR driving_flying_vehicle 004D: jump_if_false @Noname_2 077E: get_active_interior_to $Active_Interior 00D6: if 0038: $Active_Interior == 0 004D: jump_if_false @Noname_2 00D6: if and 00DF: actor $PLAYER_ACTOR driving 0038: $ONMISSION == 0 004D: jump_if_false @Noname_2 03C0: 8@ = actor $PLAYER_ACTOR car 046C: 26@ = car 8@ driver 00D6: if 003B: 26@ == $PLAYER_ACTOR // (int) 004D: jump_if_false @Noname_2 0391: release_txd_dictionary 0390: load_txd_dictionary "GASOLINE" 038F: load_texture "SPEEDOM" as 1 // Load dictionary with 0390 first 038F: load_texture "STRELK" as 2 // Load dictionary with 0390 first :Noname_3277 0001: wait 0 ms 0A8D: 28@ = read_memory 11989093 size 1 virtual_protect 0 00D6: if 8039: not 28@ == 1 004D: jump_if_false @Noname_3554 077E: get_active_interior_to $Active_Interior 00D6: if 0038: $Active_Interior == 0 004D: jump_if_false @Noname_3619 00D6: if 0038: $ONMISSION == 0 004D: jump_if_false @Noname_3619 00D6: if 00DB: actor $PLAYER_ACTOR in_car 8@ 004D: jump_if_false @Noname_3619 03F0: enable_text_draw 1 02E3: 23@ = car 8@ speed 0013: 23@ *= 3.56 0092: 27@ = float 23@ to_integer 000B: 23@ += 68.0 03E0: unknown_text_draw_flag 1 0341: unknown_text_draw_flag 1 0340: set_text_draw_RGBA 180 180 180 255 033F: set_text_draw_letter_size 0.6 2.4 045A: draw_text_1number 36.55 420.333 GXT 'NUMBER' number 27@ // ~1~ 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 1 position 133.6 322.0 size 266.0 256.0 RGBA 255 255 255 255 03E3: set_texture_to_be_drawn_antialiased 1 074B: draw_texture 2 position 89.5 384.0 scale 200.0 200.0 angle 23@ color_RGBA 255 255 255 255 :Noname_3554 00D6: if or 0118: actor $PLAYER_ACTOR dead 0119: car 8@ wrecked 004D: jump_if_false @Noname_3582 0002: jump @Noname_3619 :Noname_3582 00D6: if 0038: $ONMISSION == 0 004D: jump_if_false @Noname_3619 00D6: if 80DB: not actor $PLAYER_ACTOR in_car 8@ 004D: jump_if_false @Noname_3277 :Noname_3619 0001: wait 1250 ms 0002: jump @Noname_2
and Jasper
{$CLEO .cs} 0000: NOP :Noname_2 0001: wait 0 ms 00D6: if 0256: player $PLAYER_CHAR defined 004D: jump_if_false @Noname_2 00D6: if and 00DF: actor $PLAYER_ACTOR driving 0038: $ONMISSION == 0 004D: jump_if_false @Noname_2 00D6: if 84C8: not actor $PLAYER_ACTOR driving_flying_vehicle 004D: jump_if_false @Noname_2 077E: get_active_interior_to $Active_Interior 00D6: if 0038: $Active_Interior == 0 004D: jump_if_false @Noname_2 00D6: if and 00DF: actor $PLAYER_ACTOR driving 0038: $ONMISSION == 0 004D: jump_if_false @Noname_2 03C0: 8@ = actor $PLAYER_ACTOR car 046C: 26@ = car 8@ driver 00D6: if 003B: 26@ == $PLAYER_ACTOR // (int) 004D: jump_if_false @Noname_2 0391: release_txd_dictionary 0390: load_txd_dictionary "GASOLINE" 038F: load_texture "SPEEDOM" as 1 // Load dictionary with 0390 first 038F: load_texture "STRELK" as 2 // Load dictionary with 0390 first :Noname_3277 0001: wait 0 ms 0A8D: 28@ = read_memory 11989093 size 1 virtual_protect 0 00D6: if 8039: not 28@ == 1 004D: jump_if_false @Noname_3554 077E: get_active_interior_to $Active_Interior 00D6: if 0038: $Active_Interior == 0 004D: jump_if_false @Noname_3619 00D6: if 0038: $ONMISSION == 0 004D: jump_if_false @Noname_3619 00D6: if 00DB: actor $PLAYER_ACTOR in_car 8@ 004D: jump_if_false @Noname_3619 03F0: enable_text_draw 1 02E3: 23@ = car 8@ speed 0013: 23@ *= 3.56 0092: 27@ = float 23@ to_integer 000B: 23@ += 68.0 03E0: unknown_text_draw_flag 1 0341: unknown_text_draw_flag 1 0340: set_text_draw_RGBA 180 180 180 255 033F: set_text_draw_letter_size 0.6 2.4 045A: draw_text_1number 36.55 420.333 GXT 'NUMBER' number 27@ // ~1~ 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 1 position 126.5 385.0 size 262.5 226.0 RGBA 255 255 255 255 03E3: set_texture_to_be_drawn_antialiased 1 074B: draw_texture 2 position 90.5 385.0 scale 262.5 226.0 angle 23@ color_RGBA 255 255 255 255 :Noname_3554 00D6: if or 0118: actor $PLAYER_ACTOR dead 0119: car 8@ wrecked 004D: jump_if_false @Noname_3582 0002: jump @Noname_3619 :Noname_3582 00D6: if 0038: $ONMISSION == 0 004D: jump_if_false @Noname_3619 00D6: if 80DB: not actor $PLAYER_ACTOR in_car 8@ 004D: jump_if_false @Noname_3277 :Noname_3619 0001: wait 1250 ms 0002: jump @Noname_2
Нужен адрес, и не только этот. Хотелось бы еще добраться до войн банд, а именно покраска территории и соответственно военные действия на этой территории для разных банд. У меня их сейчас 9 шт, опкодами можно сделать только для двух банд. Каков был смысл создавать отношения с другими группировками если воевать с ними, а соответственно захватывать их территории нет возможности?
Наконец-то разобрался что куда надо прописать и воткнуть, чтобы ида открыла базу listener'а.
Подробнее можно, что прописал и где? А то мне уже надоело окно с текстом «Эта база была создано в пиратской копии …».
Кто ни будь, находил адрес процедуры/функции в которой игра обрабатывает нажатие клавиши. Нужно сделать принудительное нажатие клавиши, то есть дать понять игре, что нажата нужная мне клавиша.
Не хочется ради одной функции делать ДЛЛ.
С редактированием файла FONTS.dtf могут возникнуть проблемы, особенно с невидимыми символами, похожим на пробел.Само редактирование - это морока и потеря минимум минут 10.
Редактирование fonts.dat занимает столько же времени. Как правило, редактировать fonts.dat нужно для всех вариантов перевода, правильно прописан порядок следования русских букв только в переводе Smarter's Localization от SanLtd.
Редактировать нужно только порядок следования русских букв, все остальные символы трогать не нужно, пустые символы можно оставить, так как есть или же заменить символом «|».
Порядок символов ! " Ј $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? у всех вариантов перевода одинаков.
Если и это вызывает сложность, то очень рекомендую закрыть программу и забить на перевод или же переводить вручную, заменяя каждый символ.