You are not logged in.
Почему в оригинальном мейне VC задержки делаются таким образом?
01BD: $2 = current_time_in_ms repeat wait 0 01BD: $1 = current_time_in_ms 0084: $3 = $1 0060: $3 -= $2 if $3 > 9000 then $3 = 0 0084: $2 = $1 end until false
Можно ведь проще
repeat wait 0 01BD: $1 = current_time_in_ms if 001C: $1 > $2 then 01BD: $2 = current_time_in_ms $2 += 9000 end until false
Или есть разница?
Offline
Почему в оригинальном мейне VC задержки делаются таким образом?
01BD: $2 = current_time_in_ms repeat wait 0 01BD: $1 = current_time_in_ms 0084: $3 = $1 0060: $3 -= $2 if $3 > 9000 then $3 = 0 0084: $2 = $1 end until falseМожно ведь проще
repeat wait 0 01BD: $1 = current_time_in_ms if 001C: $1 > $2 then 01BD: $2 = current_time_in_ms $2 += 9000 end until falseИли есть разница?
Первый цикл - проверка, что прошло 9 секунд с предыдущего замера. Второй цикл отличается от первого лишь тем, что он начнет работать лишь со второго "прохода" по этому циклу. Чтобы он стал работать сразу, нужно добавить прибавление 9000 перед циклом, т.е.:
01BD: $2 = current_time_in_ms $2 += 9000 repeat wait 0 01BD: $1 = current_time_in_ms if 001C: $1 > $2 then 01BD: $2 = current_time_in_ms $2 += 9000 end until false
Last edited by Shag (23-01-2018 12:48)
Offline
Пытаюсь найти в main.scm процесс который устанавливает количество боеприпаса в выпавшем пикапе оружия из убитого/умершего педа. Пока результаты поиска порождают только новые вопросы wall , может кто направит в нужную сторону? Главная цель, уменьшить/увеличить это количество. Помогите люди добрые...
Last edited by 4lifeGTA (28-01-2018 19:35)
Offline
Пытаюсь найти в main.scm процесс который устанавливает количество боеприпаса в выпавшем пикапе оружия из убитого/умершего педа. Пока результаты поиска порождают только новые вопросы wall , может кто направит в нужную сторону? Главная цель, уменьшить/увеличить это количество. Помогите люди добрые...
Для какой игры вопрос? В любом случае это в exe. Смотри соответствующую базу в IDA, например, для SA это функция
.text:004591D0; CPed::CreateDeadPedWeaponPickups
Offline
Спасибо, но вопросов стало еще больше . Игра GTA SA.
Я какбы не програмер, нихрена, другой профиль
Скачал прогу IDA и открыл gta_sa.exe, не знаю правильно ли открыл, там окошко выскакивает и предлагает галочек наставить/снять под тем чего знать не знаю...
И когда закрываешь прогу тоже лицезреешь окошко: типа как будем сохранять? Да никак, пока не знаю как...
Ладно, нашел адрес .text:004591D0 ( http://images.vfl.ru/ii/1517221502/5021 … 354565.png ) , но что с ним делать? Потыкал конечно...
А это и через поиск не нашел: CPed::CreateDeadPedWeaponPickups , хотя может я не дождался результатов поиска, мне показалось что он зависает...
Ребята, может там и нету незашифрованых цыфр, чтобы хоп и изменил на нужное, а?
Аа, еще момент, многие клео скрипты требуют оригинальный ехешник v0.1, а после моих манипуляций с ехе, совместимость с ним этих клео не пострадает?
Last edited by 4lifeGTA (29-01-2018 11:48)
Offline
Скачал прогу IDA и открыл gta_sa.exe
...
многие клео скрипты требуют оригинальный ехешник v0.1, а после моих манипуляций с ехе, совместимость с ним этих клео не пострадает?
Открывать надо не сам exe, а базу с адресами из этого exe. Для SA эта база "наиболее полная". База exe 1.0. Работа с базой на сам exe не влияет. В базе ты ищешь нужные адреса и потом используешь эти адреса в скриптах или плагинах.
Offline
kenking, спасибо, теперь ясно. Со скрипта то и началось все , есть скаченный скрипт который который все пикапы из трупов кладет на землю как в гта 5, в скрипте нашел пару строк которые отвечали за выдачу для ГГ количество боеприпасов, их и изменял, работало нормально, но из-за этого скрипта часто вылетает на мисиях. Потому стал искать решение без клео скрипта.
За базу отдельно спасибо, ток мой IDА ее не открыл, говорит что неизвестная версия, думаю это потому что у меня FREE версия, догадываюсь что нужна PRO. Будем искать...
Offline
Привет уважаемые.
Такой вот вопрос, как выглядит проверка или условие:
1) Условие: Если плеер одел броню(аrmor)
2) Проверка: Плеер сейчас в броне?
Еще хотелось бы очень знать, возможно ли установить броне свой предел HP, как здоровью плеера? Со здоровьем никаких проблем нет, оно легко контролируется скриптом, а вот про броню так не скажешь, нигде не нашел инфы как установить броне HP, т.е. сделать так чтобы бронь давала не 100 защиты а например только 50, причем не одноразово(это уже умеем), а в целом , чтобы любой поднятый/купленный броник в игре давал защиты только 50? Цифра 50 не важна, тут принцип важен.
Last edited by 4lifeGTA (31-01-2018 20:48)
Offline
Ну все, у меня все получилось
Offline
Ну все, у меня все получилось
Написал бы каким образом, чтобы и другие знали.
Offline
kenking, не вопрос, просто вроде как мелочь, тут это наверное все знают. Это я тут изучаю .
Вот собственно код который устанавливает максимум брони в требуемое значение, в смысле любая поднятая/купленая броня в игре даст защиты в 20ед. вместо 100ед. положенных, она также тратится как всегда, просто изменяется ее максимум:
Отмечу, что в этом коде:
1. Я уменьшил максимум брони до 20ед. вместо 100ед. обычных(так надо в моем моде), чтобы наоборот, т.е. увеличить, надо править выделенное число на сколько вам нужно, там логически понятно.
2. В коде не учтена добавка к максимуму в +50ед., после прохождения миссии полицейского, нужно дописывать код, я пытался, пока не выходит... Буду рад если кто допишет.
Last edited by 4lifeGTA (05-02-2018 12:12)
Offline
Прошу подскажите опкод который проверяет находится ли игрок в интерьере или на улице.
09E8: 0@ = actor $PLAYER_ACTOR active_interior if 0@ == 0 then // игрок на улице end
Offline
kenking, спасибо я уже разобрался, вчера гулил яндексил, запарился не в шутку , гдеж ты был вчера, да именно этот опкод и преминил. Но копал не даром, нашел полезные и удобные сайты по опкодам . Пока нашел ответы на все вопросы.
А тут на сайте смотрю народу не густо, кроме тебя то и не видал никого
Last edited by 4lifeGTA (08-02-2018 13:18)
Offline
Здорова скриптеры(а они: здоровее видали ), помогите с поиском адресов памяти, в сети совсем не находятся они, вот такие адреса:
0x61907A
0x61907E
0x619060
Именно эти отвечают за создание сейва в 8 слот сохранения, ищу остальных отвечающих за остальные слоты...
Offline
DK22Pac, спасибо канэчно, но я не знать что с этим делать , крутовато для меня да и времени на серьезное изучение програмирования уже просто нету.
Вот скаченный скрипт который автоматически сохраняет после каждой миссии в 8 слот, я понял из него что идет работа с памятью по адресам:
0x61907A
0x61907E
0x619060
которые в свою очередь работают конкретно с 8 слотом сохранения, я поискал в сети с целью выяснить адреса для остальных 7 слотов, но увы без результатно, но с этим я хотябы знаю как работать, примерно , а как преминить твою скрипт команду у меня просто нет такого большого опыта.
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013 {$CLEO .cs} //-------------MAIN--------------- 0000: NOP 31@ = 1 0A8D: 25@ = read_memory 0x61907A size 4 virtual_protect 1 0A8D: 26@ = read_memory 0x61907E size 1 virtual_protect 1 1@ = 0 0A9F: 0@ = current_thread_pointer 0A8E: 10@ = 0@ + 16 // int 0A8D: 10@ = read_memory 10@ size 4 virtual_protect 0 0A8F: 11@ = 10@ - -348 // int 0A8C: write_memory 0x469E2C size 4 value 11@ virtual_protect 1 0@ += 64 11@ += 2 0A8C: write_memory 11@ size 4 value 0@ virtual_protect 0 :NONAME_7C wait 0 if and $ONMISSION == 1 31@ == 1 else_jump @NONAME_AC wait 0 0652: 20@ = integer_stat 147 31@ = 0 :NONAME_AC if 1@ == 1 else_jump @NONAME_155 :NONAME_BE wait 0 0652: 21@ = integer_stat 147 if and $ONMISSION == 0 not Actor.Driving($PLAYER_ACTOR) 001D: 21@ > 20@ // (int) else_jump @NONAME_F0 jump @NONAME_F7 :NONAME_F0 jump @NONAME_BE :NONAME_F7 0A8C: write_memory 0x61907A size 4 value -1869574000 virtual_protect 1 0A8C: write_memory 0x61907E size 1 value 144 virtual_protect 1 wait 1 0AA5: call 0x619060 num_params 1 pop 0 7 wait 2 0A8C: write_memory 0x61907A size 4 value 25@ virtual_protect 1 0A8C: write_memory 0x61907E size 1 value 26@ virtual_protect 1 31@ = 1 1@ = 0 :NONAME_155 jump @NONAME_7C hex C7 05 00 00 00 00 01 00 00 00 B8 9B 9A 46 00 FF E0 end
Offline
@4lifeGTA
На сколько правильно я понял, то номер слота передаётся в эту функцию.
0AA5: call 0x619060 num_params 1 pop 0 7
Нумерация идёт от нуля, поэтому цифра 7 - это восьмой слот. Попробуй заменить на другой номер слота.
Offline
DK22Pac, а что в скрипте? Скрипт как скрипт, компилируется и в игре работает, в любом случае хозяин барин.
kenking, спаибо брат, но походу не это, попробывал в этом же скрипте заменять семерку на разные цыфры до семи, но в игре вылет сразу по завершении миссии .
Может есть еще мысли?
Разобрался! Все как ты и думал, да именно та цифра отвечает за слот, пришлось написать немного другой скрипт, зато работает схема понятна, двину дальше, еще раз спасибо, без твоей подсказки епал бы себе мозги еще долго...
Last edited by 4lifeGTA (16-02-2018 15:43)
Offline
$8010 = Object.Init(#PIZZABOX, 0.0, 0.0, 100.0) 035C: place_object $8010 relative_to_car $7965 offset -0.7 0.0 0.7 Object.CollisionDetection($8010) = True Object.ToggleInMovingList($8010) = True 0170: $8039 = player $player_char z_angle $8040 -= 90.0 // floating-point values $8041 -= 90.0 // floating-point values 02F7: $8040 = cosine $8039 02F6: $8041 = sine $8039 // float $8040 *= -12.0 // floating-point values $8041 *= -12.0 // floating-point values 038C: object $8010 scatter $8040 $8041 5.0
Что делает этот кусок кода? И почему из $8040 и $8041 отнимается -90.0, ведь потом они перезаписываются косинусом и синусом
GTA VC
спасибо за ответы
Offline
Что делает этот кусок кода? И почему из $8040 и $8041 отнимается -90.0, ведь потом они перезаписываются косинусом и синусом
В этом куске кода появляется объект пицца рядом с тачкой и бросается.
А по поводу почему отнимается, то скорей всего эти опкоды остались от прежних правок (автора), хотя сейчас по сути их можно удалить.
I know everything and nothing...
Offline
Странно, есть опкод для вызова меню сохранения: 03D8: show_save_screen, но хоть убей не могу найти опкод для вызова меню загрузки, как вообще заставить скриптом выйти в главное меню? Помогите мне грешному
Offline
Скорее всего нет таких опкодов.
Offline
Можно покопаться в памяти SA, там должен быть какой-либо адрес памяти который вызывает меню загрузки.
Offline
Ок! Раз спецы говорят что малой кровушкой не обойдешься, тогда пойду другим вариантом. Спасибо братцы.
Вопрос на засыпку: может есть опкод который загрузит игру(сейв из слота) без выхода в главное меню? Из вопроса выше понимаю что нету, но вдруг?
Last edited by 4lifeGTA (18-02-2018 11:52)
Offline
trashmas wrote:Что делает этот кусок кода? И почему из $8040 и $8041 отнимается -90.0, ведь потом они перезаписываются косинусом и синусом
В этом куске кода появляется объект пицца рядом с тачкой и бросается.
А по поводу почему отнимается, то скорей всего эти опкоды остались от прежних правок (автора), хотя сейчас по сути их можно удалить.
Ясно спасибо, просто в очередной раз не понимаю логику R* просматривая код мейна, ведь можно было проще сделать, без синусов и косинусов.
4lifeGTA Меню сейва нету в главном меню, поэтому на него есть опкод что бы как то можно было вызвать, и наверно по этому нету опкода на загрузку
Offline
Люди, хочу спросить а как можно трансформировать позицию игрока и позицию атакующего актёра (который атаковал игрока), в экранные координаты?
Offline