You are not logged in.
Возникла такай ситуация, нужно в скрипте здоровье машины показывать на экране, но в скрипте очень много прыжков, и текст ужасно мигает.Решил сделать второй скрипт, который будет измерять эту переменную.Переменные типа var 0 = 100 не помогли.Решил сделать так:
0AAA: 0@ = thread 'OTB' pointer if 0@ <> 0 then 0@ += 60 0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0 end
смещение 60 - это массив локальных переменных.А что дальше делать с этим массивом,как достать нужную переменную?
Offline
номер переменной * 4
т.е. 0@ - 0
1@ - 4
2@ - 8
...
Offline
[ED]Andr, раскрою тебе секрет) для того чтобы текстуры или текст не "мигали" должен быть 1 цикл:
:1 wait 0 gosub @2 //своего рода "подпрограмма" тут отображение текста 1@ jump @1 :2 //то что я назвал подпрограммой //без wait 0 //ну и тут хоть запрыгайся, главное чтобы у гоусаба был выход (иначе вылет) измерил то что надо в переменную скажем 1@ return //выход из гоусаба
Last edited by }0RIC)-( (11-07-2011 11:38)
Offline
Спасибо вам,выручили..
Offline
Что находится здесь:
[CPed+134h]
?
Я попытался сам выяснить, но это мне ничего не дало:
CPed+0x134 -> 0xF8FF248 -> 0xE12C034 -> 0x86D168
В базе listener'a 0x86D168 подписан как _CPlayerPed::`vtbl'.
Игра использует этот указатель, когда создаёт тени педов. Если в процедуру (0x707390, второй параметр) передать не [CPed+134h], а 0, то тень отрисуется просто в заданной точке и с заданными размерами, и будет дейтсвовать только на землю.
Если же передать в процедуру [CPed+134h], то тень отрисуется относительно педа, а также с изменёнными размерами. Единое "преимущество" "такой" тени - она рисуется не только на земле, но и на стенах:
, что мне и нужно...
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
listener - это смещение (0x134) указывает на
CEntity * CPhysical::m_pCollidedEntity
только для CPed?
Попытался прочитать это смещение для обьектов и автомобилей, но всегда получаю 0...
Ещё, я нашёл на gtamodding это:
CPed +0x584 = [dword] Текущий Entity (объект), с которым вы находитесь в контакте
Попытался подставить [CPed+0x584] вместо [CPed+0x134], но игра такого не приняла (вылет).
Вероятно, CPed+0x134 ведёт к какому-то массиву обьектов, которые находятся поблизи педа? (ведь зачем же ещё передавать такой параметр в процедуру, которая рисует тень от педа на ближайших обьектах. К тому же, когда пед в воздухе, CPed+0x134 всё ещё указывает на что-то, когда в автомобиле, - указывает на значение 0).
Last edited by DK22Pac (20-07-2011 08:13)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Опять же вернусь к потоку, вот код, который должен вывести на экран число 123:
03F0: enable_text_draw 1 1@ = 123 while true wait 0 if Player.Defined($player_char) then if 0ab0: 52 then 0A9F: 4@ = current_thread_pointer if 4@ <> 0 then 4@ += 60 0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0 4@ += 4 0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0 33@ = 0 repeat wait 0 dec(33@) 03E4: enable_text_draw_align_right 1 033F: set_text_draw_letter_size 0.5 0.8 081C: draw_text_outline 1 RGBA 0 0 0 55 045A: draw_text_1number 559.0 158.0 GXT 'NUMBER' number 4@ until 33@ == 5000 end end end end
Но вылетает, я даже не могу предположить почему.Вылетает второй опкод 0A8D:
Last edited by [ED]Andr (20-07-2011 21:05)
Offline
4@ += 60 0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0 4@ += 4 0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
замени на
4@ += 64 0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
listener, если будет время, ответь, пожалуйста, на вопросы^^
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Хотел спросить в «одном вопросе», но видимо простыми опкодами этого не сделаешь. Так вот, вопрос первый: можно ли как-то заставить пистолеты стрелять во время воспроизведения актером анимации? И вопрос второй: как узнать углы поворота и позицию… ээ… рук, когда они стреляют из двуручного оружия — узнать, а также поменять.
Offline
Поворот рук, наверное, никак. Т.к это анимация. Если только через аним-эдитор.
Offline
Повороты - через залазание в RpClump...
Если просто узнать позицию, - то для этого есть конкретный метод.
Ну, в общем, некий японский скриптер Ryosuke предоставил на своём сайте некую scm-функцию, которая позволяет получить координату на оффсете от кости.
Так вот, - узнаём оффсет с параметрами .0 .0 .0, далее - .0 1.0 .0, ну и получаем позицию и вектор направления кости в 3D пространстве, так сказать.
PS А ты что именно делаешь?
Мы вот раньше этим занимались.
http://www.gtaforums.com/index.php?show … 8077&st=20
Last edited by DK22Pac (18-08-2011 20:23)
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Ооо…
Я делаю минимод по фильму Эквилибриум, думаю, кто смотрел, сразу поймет
Хочу сделать Ката Стрелка (Gun Kata, не уверен, что в русском это слово склоняется) — вымышленное (и не очень) боевое искусство, принцип которого заключается в статистическом предсказании позиций противника в перестрелке и, как следствие, мастерское владение двумя пистолетами.
Собственно по моду — чтобы реализовать эту идею, нужно либо научить игрока стрелять из любой анимации, либо как-то вручную направлять руки при стрельбе. Трудностей не боюсь, можете предлагать самые зверские решения, лишь бы они были
___Edit
Так вот, - узнаём оффсет с параметрами .0 .0 .0, далее - .0 1.0 .0, ну и получаем позицию и вектор направления кости в 3D пространстве, так сказать.
Вообще когда у меня раньше возникала надобность узнать координаты и угол кости, я просто аттачил к ней объект, потом считывал его координаты, а затем опкодом 0400 узнавал «направление» — и вуаля! Или ты это и имел ввиду?
Last edited by Wire (18-08-2011 22:23)
Offline
0AB1: call_scm_func @GET_BONE_OFFSET 5 actor $PLAYER_ACTOR bone 6 offset 0.679 -0.039 0.111 store_to 1@ 2@ 3@ 0AB1: call_scm_func @GET_BONE_OFFSET 5 actor $PLAYER_ACTOR bone 6 offset 30.679 -0.039 0.111 store_to 4@ 5@ 6@ 06BC: create_M4_shoot_from 1@ 2@ 3@ target 4@ 5@ 6@ energy 1 058A: create_gun_flash_from 1@ 2@ 3@ to 4@ 5@ 6@
:GET_BONE_OFFSET 0A96: 0@ = actor 0@ struct 0085: 5@ = 0@ 5@ += 0x18 0A8D: 5@ = read_memory 5@ size 4 virtual_protect 0 0AA7: call_function 0x734A40 num_params 1 pop 1 5@ 5@ // _clumpGetFirstSkinAtomicHAnimHierarchy 1@ *= 0x4 1@ += 0x488 005A: 1@ += 0@ 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 1@ += 0x14 0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0 0A8D: 7@ = read_memory 0x7C51E0 size 4 virtual_protect 1 if 7@ == 0x0424548B then 0AA7: call_function 0x7C51E0 num_params 2 pop 2 1@ 5@ 1@ // _RpHAnimIDGetIndex 0AA7: call_function 0x7C5160 num_params 1 pop 1 5@ 5@ // _RpHAnimHierarchyGetMatrixArray 1@ *= 0x40 005A: 1@ += 5@ else 0AA7: call_function 0x7C51A0 num_params 2 pop 2 1@ 5@ 1@ // _RpHAnimIDGetIndex 0AA7: call_function 0x7C5120 num_params 1 pop 1 5@ 5@ // _RpHAnimHierarchyGetMatrixArray 0012: 1@ *= 0x40 005A: 1@ += 5@ // (int) end 0A9F: 5@ = current_thread_pointer 5@ += 0x44 0AA5: call 0x54EEF0 num_params 4 pop 4 5@ 1@ 1 5@ // _transofrmPoints 0AB2: ret 3 2@ 3@ 4@
Plugin-SDK https://github.com/DK22Pac/plugin-sdk
Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv
Offline
Спасибо. Кстати, как правильно пользоваться опкодами 0AA5 и 0AA7? (Справку я читал )
А точнее, что неправильно в этом коде?
:test1 wait 0 if and not actor.Dead($PLAYER_ACTOR) 0ADC: test_cheat "VIDEO" jf @test1 //0B17: show_message_box "Preved!" 0AA5: call 0x7476B0 num_params 2 pop 2 1 "Logo.mpg" wait 2000 jump @test1
По адресу — процедура, проигрывающая видео, void __cdecl PlayMPEG(int nShowCmd, char *filename)
___Edit:
Хммм, перечитал хелп еще раз, написано, что строковые параметры использовать нельзя, а как же тогда?
Last edited by Wire (19-08-2011 15:23)
Offline
Спасибо. Кстати, как правильно пользоваться опкодами 0AA5 и 0AA7? (Справку я читал )
А точнее, что неправильно в этом коде?:test1 wait 0 if and not actor.Dead($PLAYER_ACTOR) 0ADC: test_cheat "VIDEO" jf @test1 //0B17: show_message_box "Preved!" 0AA5: call 0x7476B0 num_params 2 pop 2 1 "Logo.mpg" wait 2000 jump @test1По адресу — процедура, проигрывающая видео, void __cdecl PlayMPEG(int nShowCmd, char *filename)
___Edit:
Хммм, перечитал хелп еще раз, написано, что строковые параметры использовать нельзя, а как же тогда?
Строки передавать можно, но насколько я знаю, эту процедуру нельзя так просто вызвать. На английском форуме то ли Deji то ли ZAZ написал код как её вызвать. И главное: параметры надо передавать в обратном порядке!
Offline
И главное: параметры надо передавать в обратном порядке!
Ах вооот оно что, спасибо. Кстати, а тогда в опкоде 0AA7 параметр для возвращаемого значения нужно таки указывать первым или последним?
Offline
И главное: параметры надо передавать в обратном порядке!
Ах вооот оно что, спасибо. Кстати, а тогда в опкоде 0AA7 параметр для возвращаемого значения нужно таки указывать первым или последним?
Последним
Last edited by RDH (19-08-2011 20:41)
Offline
Такой вопрос.
Требуется перемещать игрока влево, вправо, вверх, вниз относительно места водителя, когда он сидит за рулем машины.
Какие адреса памяти отвечают за позицию игрока за рулем?
Читал на форуме тему про смещение и вращение деталей машины, но это немного другое... а мне нужно двигать игрока.
Что посоветуете по этому поводу?
Offline
Такой вопрос.
Требуется перемещать игрока влево, вправо, вверх, вниз относительно места водителя, когда он сидит за рулем машины.
Какие адреса памяти отвечают за позицию игрока за рулем?Читал на форуме тему про смещение и вращение деталей машины, но это немного другое... а мне нужно двигать игрока.
Что посоветуете по этому поводу?
Внимательней почитай ту тему. Там есть пример перемещения игрока вместе с сидением в авто.
http://sannybuilder.com/forums/viewtopi … 686#p14686
а смещение
+48 ped_frontseat дамми передних сидений
Offline
В том то и проблема, что "вместе с сиденьем перемещается", а нужно чтобы только актор смещался не затрагивая компонентов машины.
Уверен гдето зарыты эти координаты в памяти, вот только в каком направлениии копать. Пробовал по базе Листнера искать, но с ассемблером у меня пока туго...
Offline
В моделях нет такого компонента, как сидения. Это дополнительная деталь. Это я сделал для примера. Чтобы переместить игрока, надо перемещать дамми передних сидений. Повторюсь это смещение +48. Как определить это смещение читай в той же теме. Там уже всё 'разложено по полочкам'.
Offline
Вопрос: Как отключить прорисовку маркеров?
UpD. Уже нашел.
Last edited by Jack Daniel's (09-09-2011 11:42)
Offline
есть вопрос . Как находить координаты игрока (в любой игре .я лично хочу попробовать на call of duty black ops)и можно ли сделать это такими программами как Artmoney pro(более расширенные возможности )или это надо долго и нудно копаться в адресах?(если все так и будет то пожалуйста поподробнее расскажите как это сделать )
Offline
По какому адресу находится значение задержки обновления кадров? Я не про fps limiter
Last edited by Jack Daniel's (02-10-2011 09:51)
Offline