partoftheworlD Опубликовано 30 января, 2017 Поделиться Опубликовано 30 января, 2017 (изменено) Весь список доступного оружия в игре. Скрытый текст пистолет #6 - 8000000260378800 пистолет дедсек - 8000000260378915 электрошокер - 8000000260378805 гранатомет #1 - 80000002603787FF винтовка 0дэй - 80000002603787FD скорострелка - 80000002603787FC винтовка - 80000002603787F9 мп5 - 80000002603787F8 мак - 80000002603787E1 мп-9 - 80000002603787DB дробовик - 80000002603787D5 сайга - 80000002603787D4 авто дробовик - 80000002603787D2 пистолет #2 - 80000002603787C2 пистолет #3 - 80000002603787BF пистолет #4 - 80000002603787BD пистолет #5 - 80000002603787BA гранатомет #2 - 80000002603787B9 гранатомет #3 - 80000002603787B7 пулемет - 80000002603787AF m16 - 80000002603787AE ak - 80000002603787AB гоблин - 80000002603787A9 Изменено 30 января, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 30 января, 2017 Поделиться Опубликовано 30 января, 2017 1 час назад, partoftheworlD сказал: Весь список доступного оружия в игре. Скрыть содержимое пистолет #6 - 60378800 пистолет дедсек - 60378915 электрошокер - 60378805 гранатомет #1 - 603787FF винтовка 0дэй - 603787FD скорострелка - 603787FC винтовка - 603787F9 мп5 - 603787F8 мак - 603787E1 мп-9 - 603787DB дробовик - 603787D5 сайга - 603787D4 авто дробовик - 603787D2 пистолет #2 - 603787C2 пистолет #3 - 603787BF пистолет #4 - 603787BD пистолет #5 - 603787BA гранатомет #2 - 603787B9 гранатомет #3 - 603787B7 пулемет - 603787AF гоблин - 603787AE ak - 603787AB m16 - 603787A9 Класс, выписал или выдра из игры базу? Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 30 января, 2017 Автор Поделиться Опубликовано 30 января, 2017 (изменено) 2 минуты назад, elvis66666 сказал: Класс, выписал или выдра из игры базу? Выдрал конечно же. 3-й час ищу как предметы спавнятся и много чего интересного успел найти. Там постоянное сравнение предметов из базы идет с инвентарем. Изменено 30 января, 2017 пользователем partoftheworlD 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 30 января, 2017 Поделиться Опубликовано 30 января, 2017 2 минуты назад, partoftheworlD сказал: Выдрал конечно же. 3-й час ищу как предметы спавнятся и много чего интересного успел найти. Там постоянное сравнение предметов из базы идет с инвентарем. Пили видос))) а то я на работе пропадаю, в руки чешутся Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 30 января, 2017 Автор Поделиться Опубликовано 30 января, 2017 1 минуту назад, elvis66666 сказал: Пили видос))) а то я на работе пропадаю, в руки чешутся Запилю конечно, если получится сделать. Кроме копирования и удаления оружия подобранного, пока ничего не получается. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 30 января, 2017 Автор Поделиться Опубликовано 30 января, 2017 (изменено) Восстановил функцию которая добавляет оружие при подборе и все тупик, не понимаю как найти функцию которая спавнит его. Смотрел выше код вызывающий эту функцию, но там в регистрах нет ID оружия вообще. Логика была такая, нахожу участок кода где меняется ID, ставлю бряк на ID нового оружия и выхожу туда где оно создается. Но при установке бряка на доступ появляются все инструкции с которых начал поиск. Уникальный ID для каждого предмета так же не смог найти. Код под спойлером который на картинке. Скрытый текст WeaponsBase = wepBase; pWeaponBase_58 = GetPointer(*(wepBase + 0x58)); sub_55A6D30(WeaponsBase->pQUnk, 1); if ( (*(*(*sub_62B9AEC(WeaponsBase) + 16i64) + 160i64) >> 19) & 1 )// Нажали кнопку подбора оружия { if ( CheckWeapon(WeaponsBase->dwNewWeaponBase) != -1 ) { pInventoryBase_1 = *WeaponsBase->dwInventoryBase; // Проверка реальности оружия, если оно существует функция возвращает 1 и оно добавляется isRealWeapon = CheckWeapon(WeaponsBase->dwNewWeaponBase); (*(&off_178 + pInventoryBase_1))(WeaponsBase->dwInventoryBase, isRealWeapon); } NewWeaponBase = WeaponsBase->dwNewWeaponBase; pInventoryBase = *WeaponsBase->dwInventoryBase; pNewWeaponID = GetNewWeaponID(WeaponsBase->dwNewWeaponBase); isRealWeapon_1 = CheckWeapon(NewWeaponBase); pInventoryBase->SetnewWeaponID(WeaponsBase->dwInventoryBase, *pNewWeaponID, isRealWeapon_1); } pNewWeaponID_1 = GetNewWeaponID(WeaponsBase->dwNewWeaponBase); v10 = sub_5322604(*pNewWeaponID_1); if ( v10 ) { if ( v10 != 1 ) goto LABEL_10; v11 = sub_62B8B20(WeaponsBase); buffer = 1; } else { v11 = sub_62B8B20(WeaponsBase); buffer = 2; } sub_5DED3F2(v11, dword_3B2DACC, buffer); LABEL_10: v13 = sub_62B8B20(WeaponsBase); sub_5DED3F2(v13, dword_3B2DAA0, 5u); v14 = sub_4B90390(WeaponsBase->dwNewWeaponBase); v15 = sub_62B8B20(WeaponsBase); sub_5DED3F2(v15, dword_3B2DAA4, v14); v16 = sub_62B8B20(WeaponsBase); sub_5DED495(v16, dword_3B2DCBC, *&dword_3269250); result_1 = sub_62B96B0(pWeaponBase_58) != 0; if ( sub_62BC4FD(pWeaponBase_58) ) { result_1 = sub_62B9730(pWeaponBase_58) != 0; } else if ( sub_62BC4A8(pWeaponBase_58) ) { LODWORD(result_1) = 1; } v18 = sub_62B8B20(WeaponsBase); sub_5DED3F2(v18, dword_3B2DCCC, result_1); pQUnk = WeaponsBase->pQUnk; WeaponsBase->byteA8 = 0; result = sub_610AED5(pQUnk); WeaponsBase->byteA9 = result; return result; } Изменено 31 января, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 31 января, 2017 Поделиться Опубликовано 31 января, 2017 Тема интересная. Поддерживаю. Будет здорово, если все получиться. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 31 января, 2017 Поделиться Опубликовано 31 января, 2017 12 часа назад, partoftheworlD сказал: Кроме копирования и удаления оружия подобранного, пока ничего не получается. 12 часа назад, elvis66666 сказал: Пили видос))) а то я на работе пропадаю, в руки чешутся Посмотрите моё видео Dark Souls ADD ITEM, если не смотрели. Я его не правильно назвал - это именно добавление НОВОГО предмета в инвентарь. Может чем то поможет. Если нужно будет, что-нибудь уточнить по видео, скрипту, выходу на инструкцию, пишите - отвечу. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 31 января, 2017 Автор Поделиться Опубликовано 31 января, 2017 17 минуту назад, Garik66 сказал: Посмотрите моё видео Dark Souls ADD ITEM, если не смотрели. Да я смотрел, отличное видео. Только в Watch dogs инвентарь своеобразный, т.е там только 1 винтовка, шокер и пистолет. под них память выделяется(под 3 слота) и все расчеты ведутся инструкцией mov rcx, [rbx+rcx*8+2D0] где rbx это базовый адрес инвентаря, rcx это индекс слота и смещение указывает на ID текущего оружия. Получалось изменить оружие при подборе другого, сбросить нельзя видимо, а новое оружие создается в памяти, только если менты ездят или бандиты, но заспавнить новое пока не додумался как и не нашел где. К примеру чтобы после прогрузки игры, вокруг игрока лежали кучи оружия. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 31 января, 2017 Поделиться Опубликовано 31 января, 2017 21 минуты назад, partoftheworlD сказал: , т.е там только 1 винтовка, шокер и пистолет. Тогда может это, как в некоторых играх, т.е. есть флаг, куда нужно записать новое значение (Обычно двоичная система используется). Вот пример. реализации в этом сообщении. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 31 января, 2017 Автор Поделиться Опубликовано 31 января, 2017 Если вдруг кому-то будет интересно покопаться со спавном объектов, держите может кто-нибудь разберется: Проверка можем ли мы подобрать оружие - "Disrupt_64.dll"+5428FCB mov [rbx], rax rbx - указатель на id подбираемого предмета rax - адрес указателя Первое появление ID - "Disrupt_64.dll"+4A66CF1 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 1 февраля, 2017 Автор Поделиться Опубликовано 1 февраля, 2017 (изменено) Если кто-нибудь поймет, что я написал, то после выделения стека вот так получаем ID оружия, сложно с температурой правильно все оформлять, главное чтобы сам потом разобрался. rcx->rcx=rbp->[rbp+68]=rdi->rdi=rcx->[rcx+30]->rax=pNewWeaponBase->[rcx+38]->eax(rax)=rbx=NewWeaponID Изменено 1 февраля, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 2 февраля, 2017 Автор Поделиться Опубликовано 2 февраля, 2017 В общем дошел до участка кода который модельки прорисовывает, видимо через ID оружия в этой игре не выйти на функцию создания оружия, как вариант можно попробовать выйти на эту функцию, через количество npc и машин, в первой части чтобы город не был пустым, игра балансировала кол-во нпс на локации с гг чтобы их было 25-35. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения