#4926 06-01-2018 05:02

trashmas
Registered: 12-04-2016
Posts: 39

Re: Один вопрос

Почему в оригинальном мейне 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

#4927 23-01-2018 12:47

Shag
Registered: 29-03-2010
Posts: 146
Website

Re: Один вопрос

trashmas wrote:

Почему в оригинальном мейне 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

#4928 28-01-2018 19:34

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

Пытаюсь найти в main.scm процесс который устанавливает количество боеприпаса в выпавшем пикапе оружия из убитого/умершего педа. Пока результаты поиска порождают только новые вопросы wall , может кто направит в нужную сторону? Главная цель, уменьшить/увеличить это количество. Помогите люди добрые...

Last edited by 4lifeGTA (28-01-2018 19:35)

Offline

#4929 29-01-2018 06:37

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

4lifeGTA wrote:

Пытаюсь найти в main.scm процесс который устанавливает количество боеприпаса в выпавшем пикапе оружия из убитого/умершего педа. Пока результаты поиска порождают только новые вопросы wall , может кто направит в нужную сторону? Главная цель, уменьшить/увеличить это количество. Помогите люди добрые...

Для какой игры вопрос? В любом случае это в exe. Смотри соответствующую базу в IDA, например, для SA это функция

.text:004591D0;  CPed::CreateDeadPedWeaponPickups

Offline

#4930 29-01-2018 11:36

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

Спасибо, но вопросов стало еще больше wall . Игра GTA SA.
Я какбы не програмер, нихрена, другой профиль smile
Скачал прогу IDA и открыл gta_sa.exe, не знаю правильно ли открыл, там окошко выскакивает и предлагает галочек наставить/снять под тем чего знать не знаю...
И когда закрываешь прогу тоже лицезреешь окошко: типа как будем сохранять?  Да никак, пока не знаю как...

Ладно, нашел адрес .text:004591D0 ( http://images.vfl.ru/ii/1517221502/5021 … 354565.png ) , но что с ним делать? Потыкал конечно...
А это и через поиск не нашел: CPed::CreateDeadPedWeaponPickups , хотя может я не дождался результатов поиска, мне показалось что он зависает...

Ребята, может там и нету незашифрованых цыфр, чтобы хоп и изменил на нужное, а? smile
Аа, еще момент, многие клео скрипты требуют оригинальный ехешник v0.1, а после моих манипуляций с  ехе, совместимость с ним этих клео не пострадает?

Last edited by 4lifeGTA (29-01-2018 11:48)

Offline

#4931 29-01-2018 12:23

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

4lifeGTA wrote:

Скачал прогу IDA и открыл gta_sa.exe
...
многие клео скрипты требуют оригинальный ехешник v0.1, а после моих манипуляций с  ехе, совместимость с ним этих клео не пострадает?

Открывать надо не сам exe, а базу с адресами из этого exe. Для SA эта база "наиболее полная". База exe 1.0. Работа с базой на сам exe не влияет. В базе ты ищешь нужные адреса и потом используешь эти адреса в скриптах или плагинах.

Offline

#4932 29-01-2018 13:18

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

kenking, спасибо, теперь ясно. Со скрипта то и началось все smile , есть скаченный скрипт который который все пикапы из трупов кладет на землю как в гта 5, в скрипте нашел пару строк которые отвечали за выдачу для ГГ количество боеприпасов, их и изменял, работало нормально, но из-за этого скрипта часто вылетает на мисиях. Потому стал искать решение без клео скрипта.
За базу отдельно спасибо, ток мой IDА ее не открыл, говорит что неизвестная версия, думаю это потому что у меня FREE версия, догадываюсь что нужна PRO. Будем искать...

Offline

#4933 31-01-2018 18:12

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

Привет уважаемые.
Такой вот вопрос, как выглядит проверка или условие:
1) Условие: Если плеер  одел броню(аrmor)
2) Проверка: Плеер сейчас в броне?

Еще хотелось бы очень знать, возможно ли установить броне свой предел HP, как здоровью плеера? Со здоровьем никаких проблем нет, оно легко контролируется скриптом, а вот про броню так не скажешь, нигде не нашел инфы как установить броне HP, т.е. сделать так чтобы бронь давала не 100 защиты а например только 50, причем не одноразово(это уже умеем), а в целом , чтобы любой поднятый/купленный броник в игре давал защиты только 50? Цифра 50 не важна, тут принцип важен.

Last edited by 4lifeGTA (31-01-2018 20:48)

Offline

#4934 02-02-2018 09:45

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

Ну все, у меня все получилось    cool

Offline

#4935 05-02-2018 05:45

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

4lifeGTA wrote:

Ну все, у меня все получилось    cool

Написал бы каким образом, чтобы и другие знали.

Offline

#4936 05-02-2018 11:13

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

kenking, не вопрос, просто вроде как мелочь, тут это наверное все знают. Это я тут изучаю  wall .

Вот собственно код который устанавливает максимум брони в требуемое значение, в смысле любая поднятая/купленая броня в игре даст защиты в 20ед. вместо 100ед. положенных, она также тратится как всегда, просто изменяется ее максимум:
20456444.png
Отмечу, что в этом коде:
1. Я уменьшил максимум брони до 20ед. вместо 100ед. обычных(так надо в моем моде), чтобы наоборот, т.е.  увеличить, надо править выделенное число на сколько вам нужно, там логически понятно.
2. В коде не учтена добавка к максимуму в +50ед., после прохождения миссии полицейского, нужно дописывать код, я пытался, пока не выходит... Буду рад если кто допишет.

Last edited by 4lifeGTA (05-02-2018 12:12)

Offline

#4937 08-02-2018 12:33

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

4lifeGTA wrote:

Прошу подскажите опкод который проверяет находится ли игрок в интерьере или на улице.

09E8: 0@ = actor $PLAYER_ACTOR active_interior
if
  0@ == 0
then
    // игрок на улице
end  

Offline

#4938 08-02-2018 13:16

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

kenking, спасибо я уже разобрался, вчера гулил яндексил, запарился не в шутку wall , гдеж ты был вчера, да именно этот опкод и преминил. Но копал не даром, нашел полезные и удобные сайты по опкодам good . Пока нашел ответы на все вопросы.
А тут на сайте смотрю народу не густо,  кроме тебя то и не видал никого

Last edited by 4lifeGTA (08-02-2018 13:18)

Offline

#4939 11-02-2018 08:43

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

Здорова скриптеры(а они: здоровее видали smile  ), помогите с поиском адресов памяти, в сети совсем не находятся они, вот такие адреса:
0x61907A
0x61907E
0x619060
Именно эти отвечают за создание сейва в 8 слот сохранения, ищу остальных отвечающих за остальные слоты...

Offline

#4940 12-02-2018 16:26

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

DK22Pac, спасибо канэчно, но я не знать что с этим делать rolleyes , крутовато для меня да и времени на серьезное изучение програмирования уже просто нету.
Вот скаченный скрипт который автоматически сохраняет после каждой миссии в 8 слот, я понял из него что идет работа с памятью по адресам:
0x61907A
0x61907E
0x619060
которые в свою очередь работают конкретно с 8 слотом сохранения, я поискал в сети с целью выяснить адреса для остальных 7 слотов, но увы без результатно, но с этим я хотябы знаю как работать, примерно smile , а как преминить твою скрипт команду у меня просто нет такого большого опыта.

// 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

#4941 13-02-2018 05:34

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

@4lifeGTA
На сколько правильно я понял, то номер слота передаётся в эту функцию.

0AA5: call 0x619060 num_params 1 pop 0 7

Нумерация идёт от нуля, поэтому цифра 7 - это восьмой слот. Попробуй заменить на другой номер слота.

Offline

#4942 13-02-2018 16:41

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

DK22Pac, а что в скрипте? Скрипт как скрипт, компилируется и в игре работает, в любом случае хозяин барин.
kenking, спаибо брат, но походу не это, попробывал в этом же скрипте заменять семерку на разные цыфры до семи, но в игре вылет сразу по завершении миссии sad .
Может есть еще мысли?

yahoo  Разобрался! Все как ты и думал, да именно та цифра отвечает за слот, пришлось написать немного другой скрипт, зато работает схема понятна, двину дальше, еще раз спасибо, без твоей подсказки епал бы себе мозги еще долго...

Last edited by 4lifeGTA (16-02-2018 15:43)

Offline

#4943 16-02-2018 15:04

trashmas
Registered: 12-04-2016
Posts: 39

Re: Один вопрос

$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

#4944 16-02-2018 16:33

mfisto
From: Russia Perm
Registered: 01-02-2008
Posts: 551
Website

Re: Один вопрос

trashmas wrote:

Что делает этот кусок кода? И почему из $8040 и $8041 отнимается -90.0, ведь потом они перезаписываются косинусом и синусом

В этом куске кода появляется объект пицца рядом с тачкой и бросается.
А по поводу почему отнимается, то скорей всего эти опкоды остались от прежних правок (автора), хотя сейчас по сути их можно удалить.


I know everything and nothing...

Offline

#4945 16-02-2018 18:37

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

Странно, есть опкод для вызова меню сохранения: 03D8: show_save_screen, но хоть убей не могу найти опкод для вызова меню загрузки, как вообще заставить скриптом выйти в главное меню? Помогите мне грешному cry

Offline

#4946 18-02-2018 05:11

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Один вопрос

Скорее всего нет таких опкодов.

Offline

#4947 18-02-2018 08:07

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Один вопрос

Можно покопаться в памяти SA, там должен быть какой-либо адрес памяти который вызывает меню загрузки.

Offline

#4948 18-02-2018 11:41

4lifeGTA
Registered: 28-01-2018
Posts: 23

Re: Один вопрос

Ок! Раз спецы говорят что малой кровушкой не обойдешься, тогда пойду другим вариантом. Спасибо братцы.

Вопрос на засыпку: может есть опкод который загрузит игру(сейв из слота) без выхода в главное меню? Из вопроса выше понимаю что нету, но вдруг?

Last edited by 4lifeGTA (18-02-2018 11:52)

Offline

#4949 18-02-2018 14:56

trashmas
Registered: 12-04-2016
Posts: 39

Re: Один вопрос

mfisto wrote:
trashmas wrote:

Что делает этот кусок кода? И почему из $8040 и $8041 отнимается -90.0, ведь потом они перезаписываются косинусом и синусом

В этом куске кода появляется объект пицца рядом с тачкой и бросается.
А по поводу почему отнимается, то скорей всего эти опкоды остались от прежних правок (автора), хотя сейчас по сути их можно удалить.

Ясно спасибо, просто в очередной раз не понимаю логику R* просматривая код мейна, ведь можно было проще сделать, без синусов и косинусов.

4lifeGTA Меню сейва нету в главном меню, поэтому на него есть опкод что бы как то можно было вызвать, и наверно по этому нету опкода на загрузку

Offline

#4950 19-02-2018 13:00

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Один вопрос

Люди, хочу спросить а как можно трансформировать позицию игрока и позицию атакующего актёра (который атаковал игрока), в экранные координаты?

Offline

Board footer

Powered by FluxBB