partoftheworlD Опубликовано 6 января, 2016 Поделиться Опубликовано 6 января, 2016 Надеюсь кому-нибудь это поможет. Несколько лет назад я делал RapidFire для Darksiders 2. и выкладывал таблицу под ником Alexander-mx. Но искал я очень долго значение, отвечающее за время между выстрелами, искал способом изменилось/не изменилось и тогда мне очень повезло, потому что повторить это я не смог. Сегодня решил восстановить функцию выстрела для этой игры.Не полностью восстановленная функция, но для создания RapidFire этого хватит. Остается только найти WeaponBase через патроны. int *__thiscall m_Shoot(void *this, float Shot_Time){ int WeaponBase; // esi@1 int ReturnIdWeapon; // edi@1 DWORD IDKBase; // ecx@4 int ShootingState; // eax@6 unsigned int Recoil; // eax@9 int *result; // eax@12 bool BulletCountEqual_0; // zf@20 bool BulletCountLess_0; // sf@20 int v10; // eax@20 void *IDWeapon; // [sp+10h] [bp-14h]@1 int SetShootingState; // [sp+17h] [bp-Dh]@17 int v13; // [sp+20h] [bp-4h]@16 WeaponBase = this; ReturnIdWeapon = *sub_460D85(&IDWeapon); if ( IDWeapon ) sub_1017(IDWeapon); // //Проверка кончился выстрел или нет. Если кончился предыдущий выстрел (значение WeaponBase + 0x420 будет равно 0), то можно делать следующий if ( *(WeaponBase + 0x420) > 0.0 // IDKBase + 0xD8 типа bool, при значении 1 стрельба немного быстрее, чем при 0. Возможно при значении 1 функция игнорирует остальные проверки || (IDKBase = *(WeaponBase + 0x438), !*(IDKBase + 0xD8)) && flt_1177D60 < *(WeaponBase + 0x41C) || (ShootingState = *(IDKBase + 0xD4), ShootingState != -1) && *(WeaponBase + 0x418) >= ShootingState || *(IDKBase + 0x2C) > *(WeaponBase + 0x43C) // v6 не понятно что делает,значение типа int которое меняется при стрельбе побитовым сдвигом вправо на 6, максимальное значение которого 31 с включенным rapidfire и 27 при стандартной стрельбе || (Recoil = *(WeaponBase + 0x444), (*(WeaponBase + 0x444) >> 6) & 1) ) { result = *(WeaponBase + 0x438); if ( *(result + 0x30) && *(WeaponBase + 0x3F4) > -1 ) result = sub_35C641(*(*(WeaponBase + 0x400) + 32)); } else { *(WeaponBase + 0x43C) = 0.0; if ( *(ReturnIdWeapon + 0x384) && *(WeaponBase + 0x340) <= 0 ) { result = (Recoil >> 9); if ( result & 1 ) { if ( *(WeaponBase + 0x3F4) > -1 ) result = sub_35C641(*(*(WeaponBase + 0x400) + 0x54)); } } else { if ( !(v157A220 & 1) ) { v157A220 |= 1u; v13 = 0; sub_96CB1(&unk_121C4D4, 0); sub_9B886C(&unk_114544D); v13 = -1; } // Result Возможно зашифрованное значние result = sub_35BD87(WeaponBase, 0x157A218, &Shot_Time, &SetShootingState, 0); if ( !result ) LOBYTE(SetShootingState) = 1; if ( SetShootingState ) { BulletCountEqual_0 = *(WeaponBase + 0x418) == 0; BulletCountLess_0 = *(WeaponBase + 0x418) < 0; v10 = *(WeaponBase + 0x438); Shot_Time = *(v10 + 36); *(WeaponBase + 0x420) = Shot_Time; if ( !BulletCountLess_0 && !BulletCountEqual_0 ) // Установить значение 0 для времени между выстрелами [WeaponBase + 0x420] // v10 + 40 количество выстрелов *(WeaponBase + 0x420) = *(v10 + 40) * Shot_Time; (*(*WeaponBase + 0x30C))(WeaponBase); result = sub_361811(WeaponBase); } } } return result;} 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Yuzia Опубликовано 6 января, 2016 Поделиться Опубликовано 6 января, 2016 Простите если что, но не путайте людей, это НЕ Darkness 2 , a Darksiders 2. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 6 января, 2016 Автор Поделиться Опубликовано 6 января, 2016 (изменено) Простите если что, но не путайте людей, это НЕ Darkness 2 , a Darksiders 2. Упс...спасибо надо будет исправить Изменено 6 января, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 7 января, 2016 Поделиться Опубликовано 7 января, 2016 Круто ) Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 8 января, 2016 Автор Поделиться Опубликовано 8 января, 2016 Админы, пожалуйста смените название игры в заголовке и посте с Darkness 2 на Darksiders 2. NullAlex: Изменено. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения