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 В 30.01.2017 в 18:44, 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 (изменено) В 30.01.2017 в 20:00, elvis66666 сказал: Класс, выписал или выдра из игры базу? Показать Выдрал конечно же. 3-й час ищу как предметы спавнятся и много чего интересного успел найти. Там постоянное сравнение предметов из базы идет с инвентарем. Изменено 30 января, 2017 пользователем partoftheworlD 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 30 января, 2017 Поделиться Опубликовано 30 января, 2017 В 30.01.2017 в 20:02, partoftheworlD сказал: Выдрал конечно же. 3-й час ищу как предметы спавнятся и много чего интересного успел найти. Там постоянное сравнение предметов из базы идет с инвентарем. Показать Пили видос))) а то я на работе пропадаю, в руки чешутся Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 30 января, 2017 Автор Поделиться Опубликовано 30 января, 2017 В 30.01.2017 в 20:05, 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 В 30.01.2017 в 20:08, partoftheworlD сказал: Кроме копирования и удаления оружия подобранного, пока ничего не получается. Показать В 30.01.2017 в 20:05, elvis66666 сказал: Пили видос))) а то я на работе пропадаю, в руки чешутся Показать Посмотрите моё видео Dark Souls ADD ITEM, если не смотрели. Я его не правильно назвал - это именно добавление НОВОГО предмета в инвентарь. Может чем то поможет. Если нужно будет, что-нибудь уточнить по видео, скрипту, выходу на инструкцию, пишите - отвечу. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 31 января, 2017 Автор Поделиться Опубликовано 31 января, 2017 В 31.01.2017 в 09:07, Garik66 сказал: Посмотрите моё видео Dark Souls ADD ITEM, если не смотрели. Показать Да я смотрел, отличное видео. Только в Watch dogs инвентарь своеобразный, т.е там только 1 винтовка, шокер и пистолет. под них память выделяется(под 3 слота) и все расчеты ведутся инструкцией mov rcx, [rbx+rcx*8+2D0] где rbx это базовый адрес инвентаря, rcx это индекс слота и смещение указывает на ID текущего оружия. Получалось изменить оружие при подборе другого, сбросить нельзя видимо, а новое оружие создается в памяти, только если менты ездят или бандиты, но заспавнить новое пока не додумался как и не нашел где. К примеру чтобы после прогрузки игры, вокруг игрока лежали кучи оружия. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 31 января, 2017 Поделиться Опубликовано 31 января, 2017 В 31.01.2017 в 09:35, 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. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения