You are not logged in.
1Можно ли сделать проверку на нахождение игрока в воде своего игрока 2 как сделать маркер чтоб когда заходишь в него он исчезал на 10 секунд
Offline
@444andrei444 - Opcode search tool - water.
Маркер видимо удалять и создавать новый.
Offline
Спасибо все получилось жаль там описания нет
Offline
@Alien - Да, так действительно работает. Вобще интересно, можно реализовать к примеру бензин, но вместо того, чтоб выводить что-либо на экран, приаттачить корону к машине и регулировать её цвет/размер, что будет означать сколько бензина осталось, или, например, здоровье машины.
"приаттачить корону к машине ... что будет означать ... например, здоровье машины."
И в конечном итоге ты придёшь к выводу, что повреждения машины должны быть видимы на самой машине: побитость, помятость бампера, царапины и треснутые стёкла.
Offline
Подскажите пожалуйста ответ на такой вопрос:
При перекраски транспорта в покрасочных мастерских происходит считывание значений из файла carcols.dat.(или это заложено в структуре модели?) Каким образом можно считать эти значения? Есть опкод
097D: get_car $CARMOD_CAR number_of_color_indices_to $10084
который считывает количество вариантов покраски транспорта. А как прочитать значения каждого из вариантов для последующего использования этих значений в опкодах
0229: set_car $IMPORT_CAR primary_color_to 11 secondary_color_to 0 0A11: set_car 316@ tertiary_color_to 237@ quaternary_color_to 238@
?:rolleyes:
Last edited by kenking (08-04-2011 12:49)
Offline
@kenking - насколько я понимаю эти значения хранятся в структуре CModelCars по смещениям
000002B0 primaryColors db 16 dup(?) 000002C0 secondaryColors db 16 dup(?)
Адрес структуры требуемой модели находится функцией
.text:004C5940 ; void __cdecl getModelIndexByName(char *modelName, __int16 *pIndex)
параметры: имя модели и переменная для записи адреса.
Могу ошибаться, вывод сделал на основании беглого просмотра функции .text:005B6890 _readCarcolsDat
Offline
Я сделал так, чтобы катаны были в обоих руках.
0@ = 8 0@ += 0 0@ *= 0x70 0@ += 0xC8AAB8 0@ += 0x18 0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0 08BD: set 1@ bit 11 0A8C: write_memory 0@ size 4 value 1@ virtual_protect 0 01B2: give_actor $PLAYER_ACTOR weapon 8 ammo 1 // Load the weapon model before using this
Но так стало у каждого актёра. А можно сделать так, чтобы это было только у игрока или одного к-л актёра?
Offline
Offline
@Seemann Спасибо за ответ, но я или, что-то не так делаю, или неправильно понял.
Model.Load(#LANDSTAL) 038B: load_requested_models Car.Create(0@,#LANDSTAL,0.0,0.0,0.0) Model.Destroy(#LANDSTAL) //здесь какие действия писать, чтобы записать в переменные 1@-4@ //значения из файла carcols.dat для модели #LANDSTAL ? 0229: set_car 0@ primary_color_to 1@ secondary_color_to 2@ 0A11: set_car 0@ tertiary_color_to 3@ quaternary_color_to 4@
Offline
проверку на загруженность модели забыл
while true #LANDSTAL.Load if #LANDSTAL.available then 0@ = car.create(#LANDSTAL, 0, 0, 0) 1@ = 255 // первый цвет 2@ = 128 // второй цвет 3@ = 46 // третий... 4@ = 56 // четвёртый цвета 0229: set_car 0@ primary_color_to 1@ secondary_color_to 2@ 0A11: set_car 0@ tertiary_color_to 3@ quaternary_color_to 4@ #LANDSTAL.Destroy end end
Offline
//здесь какие действия писать, чтобы записать в переменные 1@-4@
//значения из файла carcols.dat для модели #LANDSTAL ?
Сначала нужно найти адрес начала структуры CModelCars для данной модели автомобиля:
0441: 1@ = car 0@ model 1@ *= 4 1@ += 0xA9B0C8 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 //CModel
К полученному началу структуры прибавляешь одно из смещений, озвученных выше - получаешь массив номеров цветов. Посмотрев на обозначения адресов, несложно понять, что может существовать максимум по 16 "первых" и "вторых" цветов. Пример чтения значения цвета:
1@ += 0x2B0 // CModel + primaryColors 1@ += X // где X - номер варианта цвета (0 - 15). Сложение чисел в два этапа приведено для наглядности. 0A8D: 1@ = read_memory 1@ size 1 virtual_protect 0
проверку на загруженность модели забыл
Не забыл. Ознакомься с этой темой: http://sannybuilder.com/forums/viewtopic.php?id=1181
Last edited by Den_spb (10-04-2011 13:06)
Offline
Подскажите пожалуйста, можно ли этот код спидометра (взял с этого форума) переделать под Вайс?
{$CLEO} 0000: :NONAME_2 wait 250 Player.Defined($PLAYER_CHAR) jf @NONAME_2 if and Actor.Driving($PLAYER_ACTOR) 84C8: not actor $PLAYER_ACTOR driving_flying_vehicle 84A7: not actor $PLAYER_ACTOR driving_boat jf @NONAME_2 wait 250 03C0: 10@ = actor $PLAYER_ACTOR car 0390: load_txd_dictionary "SPEED" 038F: load_texture "STRELK" as 15 // Load dictionary with 0390 first 038F: load_texture "CIF" as 16 // Load dictionary with 0390 first 038F: load_texture "CIFN" as 17 // Load dictionary with 0390 first 038F: load_texture "STRELKN" as 18 // Load dictionary with 0390 first gosub @NONAME_122 0391: release_txd_dictionary jump @NONAME_2 :NONAME_122 wait 0 Actor.Driving($PLAYER_ACTOR) jf @NONAME_2 0AA1: return_if_false 8495: not car 10@ burning 0AA1: return_if_false 00BF: 12@ = current_time_hours, 13@ = current_time_minutes if and 12@ >= 6 21 > 12@ jf @NONAME_194 8@ = 16 9@ = 15 jump @NONAME_208 :NONAME_194 8@ = 17 9@ = 18 :NONAME_208 02E3: 2@ = car 10@ speed 2@ *= 4.0 03F0: enable_text_draw 1 03E3: set_texture_to_be_drawn_antialiased 1 038D: draw_texture 8@ position 83.5 385.0 size 281.0 260.0 RGBA 255 255 255 255 03E3: set_texture_to_be_drawn_antialiased 1 074B: draw_texture 9@ position 83.5 385.0 scale 281.0 260.0 angle 2@ color_RGBA 255 255 255 255 0AB8: get_vehicle 10@ current_gear_to 11@ 0340: set_text_draw_RGBA 231 225 29 255 045A: draw_text_1number 85.5 428.2 GXT 'BJ_0' number 11@ // ~1~ jump @NONAME_122
Offline
1@ = 255 // первый цвет 2@ = 128 // второй цвет 3@ = 46 // третий... 4@ = 56 // четвёртый цвета 0229: set_car 0@ primary_color_to 1@ secondary_color_to 2@ 0A11: set_car 0@ tertiary_color_to 3@ quaternary_color_to 4@
Это ты сам ставишь значения 1-го..... 4-го цветов, а мне надо, чтобы значения считывались из carcols.dat в процессе выполнения кода скрипта.
Сначала нужно найти адрес начала структуры CModelCars для данной модели автомобиля.............
Денис, спасибо. Я опять, что-то не то делаю или там какая-то нестыковка. В общем первый цвет находится правильно, а второй почему-то считывается, как значение третьего (если 3-го нет, то 0).
{$CLEO .cs} 0000: while true wait 0 if Player.Defined($PLAYER_CHAR) then if 0AB0: key_pressed 49 // 1 then 04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 5.0 0.0 0395: clear_area 1 at 1@ 2@ 3@ radius 5.0 Model.Load(#CAMPER) 038B: load_requested_models Car.Create(0@,#CAMPER,1@, 2@, 3@) Model.Destroy(#CAMPER) 0441: 1@ = car 0@ model 1@ *= 4 1@ += 0xA9B0C8 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 //CModel 0087: 2@ = 1@ // (float) 1@ += 0x2B0 // CModel + primaryColors 1@ += 0 // где X - номер варианта цвета (0 - 15) 0A8D: 1@ = read_memory 1@ size 1 virtual_protect 0 2@ += 0x2C0 // CModel + secondaryColors 2@ += 0 // где X - номер варианта цвета (0 - 15) 0A8D: 2@ = read_memory 2@ size 1 virtual_protect 0 //в carcols.dat первый вариант 1,31,1,0, 0229: set_car 0@ primary_color_to 1@ secondary_color_to 2@ //ставим полученные значения 0A11: set_car 0@ tertiary_color_to 1 quaternary_color_to 0 //ставим согласно carcols.dat 1,0, 03F3: get_car 0@ primary_color_to 1@ secondary_color_to 2@ //проверим значения 0A12: get_car 0@ tertiary_color_to 3@ quaternary_color_to 4@ Car.RemoveReferences(0@) 01E3: show_text_1number_styled GXT 'NUMBER' number 1@ time 500 style 5 // ~1~ значение совпадает с значением из carcols.dat 01E3: show_text_1number_styled GXT 'NUMBER' number 2@ time 500 style 4 // ~1~ значение соответствует НЕ второму цвету, а третьему из carcols.dat wait 500 end end end
Что я не так сделал?
Offline
В общем первый цвет находится правильно, а второй почему-то считывается, как значение третьего (если 3-го нет, то 0).
Возможно в описании структуры ошибка. Попробуй такой вариант:
000002B0 primaryColors ; 8 байт (8 вариантов цветов) 000002B8 secondaryColors ; 8 байт (8 вариантов цветов) 000002C0 tertiaryColors ; 8 байт (8 вариантов цветов) 000002C8 quaternaryColors ; 8 байт (8 вариантов цветов)
Last edited by Den_spb (11-04-2011 13:53)
Offline
Немного почитал справку про лимиты в игре и хотел бы спросить как сделать маркер чтобы он появлялся когда игрок находится вблизи него и со значками также а то я решил некоторые возможности сделать не на клавиши а на маркер ну вообщем сделал пару таких штук и начала игра тупить не появляются значки на миссиях и подмиссиях
И еще как сделать проверку на нахождения игрока в радиусе к примеру 2м от указанной точки
Last edited by 444andrei444 (11-04-2011 18:08)
Offline
И еще как сделать проверку на нахождения игрока в радиусе к примеру 2м от указанной точки
Opcode Search Tool ещё никто не отменял...
00EC: actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 2.0 2.0
как сделать маркер чтобы он появлялся когда игрок находится вблизи него и со значками также
Ты наверное немного неправильно выразился, может быть ты имел ввиду чтобы маркер появлялся тогда, когда игрок находится рядом с какой-то точкой?
:1 wait 0 if 00EC: actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 10.0 10.0 jf @1 marker.CreateIconAndSphere(1@, 15, 1812.369 -1929.922, 10.0) :2 wait 0 if 00EC: actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 2.0 2.0 jf @3 // тут пишешь то, что хочешь сделать с игроком, если он войдёт в сферу (маркер) marker.Disable(1@) while 00EC: actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 2.0 2.0 wait 0 end jump @1 :3 wait 0 if 80EC: not actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 10.0 10.0 jf @3 marker.Disable(1@) jump @1
Если игрок будет находиться в пределах 10 метров от указанной точки, то создаётся маркер, если игрок на него зайдёт выполнится тот код, что ты вставишь, затем отойдя немного от этого места маркер появится снова. Если войти в предел 10 метров, а затем выйти, то маркер так же удалится после выхода за пределы.
Offline
Возможно в описании структуры ошибка. Попробуй такой вариант:
000002B0 primaryColors ; 8 байт (8 вариантов цветов) 000002B8 secondaryColors ; 8 байт (8 вариантов цветов) 000002C0 tertiaryColors ; 8 байт (8 вариантов цветов) 000002C8 quaternaryColors ; 8 байт (8 вариантов цветов)
Спасибо, Денис. Теперь всё совпадает.:clap:
Offline
Подскажите пожалуйста ответ на такой вопрос:
Дело в следующем: когда я записываю значения 0-9 в буффер и потом считываю их оттуда и вывожу на экран, то значения такие же.
{$CLEO .cs} 0000: var 0@: Integer 10@: Integer end const i = 10@ end while true wait 0 if Player.Defined($PLAYER_CHAR) then if 0AB0: key_pressed 49 // 1 then for i = 0 to 9 0AC6: 0@ = label @HEX_BUFFER offset 0@ += i 0A8C: write_memory 0@ size 1 value i virtual_protect 0 0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0 03F0: enable_text_draw 1 045A: draw_text_1number 5.0 20.0 GXT 'NUMBER' number 1@ wait 25 end end end end :HEX_BUFFER hex 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 end
А если изначально записать в буффер эти же значения 0-9, то при чтении и выводе их на экран выводятся 48-57. Т.е. номера клавиш соответствующие 0-9.
{$CLEO .cs} 0000: var 0@: Integer 10@: Integer end const i = 10@ end while true wait 0 if Player.Defined($PLAYER_CHAR) then if 0AB0: key_pressed 49 // 1 then for i = 0 to 9 0AC6: 0@ = label @HEX_BUFFER offset 0@ += i 0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0 03F0: enable_text_draw 1 045A: draw_text_1number 55.0 20.0 GXT 'NUMBER' number 1@ wait 25 end end end end :HEX_BUFFER hex 30 31 32 33 34 35 36 37 38 39 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 end
Почему так?
Offline
@kenking - Так а почему ты записываешь 30-39?
http://home2.paulschou.net/tools/xlate/
Hex: 30 = DEC / CHAR: 48
Hex: 39 = DEC / CHAR: 57
Offline
В блокноте Notepad++ есть просмотр в HEX виде. Оттуда и записал значения. Значит неправильно там пересчитывает. Странно, с буквами всё правильно получалось.
Спасибо.
Offline
Вот решил спросить еще несколько вопросов вообше я неумею пользоваться opcode search tools так как плохо знаю инглиш
можно ли записать ближайшего пешехода в переменую
и как его настроить против игроеа
продолжение следует
заранен благодарен
еще вопрос в скрипте выше текст кодируется через hex зачем это надо
Last edited by 444andrei444 (15-04-2011 11:04)
Offline
можно ли записать ближайшего пешехода в переменую
0AB5
и как его настроить против игроеа
05E2
еще вопрос в скрипте выше текст кодируется через hex зачем это надо
Это буфер для хранения данных.
Last edited by Den_spb (15-04-2011 13:54)
Offline
У меня возник очередной вопрос я уже научидся писать миссии как сделать так чтобы они были последовательны
Offline
Надо завести какую-нибудь глобальную переменную, значение которой будет увеличиваться на 1 с каждой пройденной миссией. Перед запуском очередной миссии надо проверять, достигло ли значение этой переменной нужного значения.
Offline