Перейти к содержанию

Dying Light структура и восстановленный код стрельбы


Рекомендуемые сообщения

Структура

Скрытый текст

struct __declspec(align(8)) struct_WeaponChatacteristcs
{
  _QWORD qwPointer;
  byte unknown_10;
  byte gap1[7];
  byte unknown_9;
  byte gap2[4];
  byte unknown_11;
  byte gap3[10];
  int iShooting_mode_;
  float fTime2NextShotBuffer;
  float fTime2NextShot;
  int iShot_Count_;
  byte gap4[4];
  int iShot_Count;
  byte gap5[16];
  int iterator;
  BYTE bShooting;
  byte gap6[12];
  int iSet_shooting_mode;
  byte gap7[44];
  float Zoom;
  byte gap8[12];
  float fRecoil_x;
  float fRecoil_Y;
  BYTE bAim_active;
  byte bIDK;
  byte gap2[1];
  byte bIDK3;
  int iShooting_mode;
  float fFov;
  byte gap9[55];
  float fBuffer;
  int gap10[4];
  byte bunknown;
  byte gap11[20];
  float fDeltaTime;
  byte gap12[72];
  byte iIDK6;
  byte gap13[29];
  int iIDK4;
  byte gap14[5];
  byte value;
  byte gap15[14];
  byte iIDK5;
  byte gap16[7];
  float fIDK6;
  byte gap17[180];
  byte bIDK6;
  byte gap18[3];
  byte bIDK8;
  byte gap19[3];
  byte unknown_5;
  byte gap20[3];
  byte unknown_7;
  byte gap21[26];
  byte bIDK7;
  float fTime2NextShotReverse;
};

 

Восстановленный код выстрела

Скрытый текст

Characteristics = Characteristics_of_weapon_1;
  v3 = 0;
  if ( GetObjectID(Characteristics_of_weapon_1)
    || ((v4 = *&Characteristics->iIDK6 == 0,
         LODWORD(Pointer_32) = (*(Characteristics->qwPointer + 0x20i64))(Characteristics),
         v4) ? (Pointer_32_BE0_or_BD8 = *(Pointer_32 + 0xBE0)) : (Pointer_32_BE0_or_BD8 = *(Pointer_32 + 0xBD8)),
        GetObjectID(Pointer_32_BE0_or_BD8)) )
  {
    SetRecoil(Characteristics, *&fTime2NextShot);
  }
  LOBYTE(Fired_cartridges) = Get_Number_of_Bagged_ammo(Characteristics);
  if ( Fired_cartridges )
  {
    if ( Crosshair_Active )
      Aim(Characteristics);
    if ( (*(Characteristics->qwPointer + 0x28i64))(Characteristics) )
    {
      LODWORD(Pointer_20_) = (*(Characteristics->qwPointer + 0x20i64))(Characteristics);
      if ( *(Pointer_20_ + 0xFD8) > 0.0 )
      {
        Characteristics->bShooting = Characteristics->iShooting_mode_ == 2 && Characteristics->bShooting;
        v9 = Characteristics->qwPointer;
        *&Characteristics->unknown_5 = -1;      // 0x258
        *&Characteristics->unknown_7 = 0;       // 0x25C
        Characteristics->bIDK3 = 0;
        Characteristics->iShooting_mode = 0;
        Characteristics->iShooting_mode_ = 0;
        (*(v9 + 48))(Characteristics);
        LODWORD(Characteristics->fTime2NextShot) = 0;
        LODWORD(Characteristics->fTime2NextShotBuffer) = fTime2NextShot;
      }
    }
    GetTimeDelta(Characteristics, *&fTime2NextShot);
    if ( Characteristics->fBuffer > 0.0 )
    {
      (*(Characteristics->qwPointer + 0x30i64))(Characteristics);
      *&fTime2NextShot = *&fTime2NextShot - Characteristics->fBuffer;
      if ( *&fTime2NextShot > 0.30000001 )
        LODWORD(Characteristics->fBuffer) = -1082130432;
    }
    if ( Characteristics->bShooting && (*(Characteristics->qwPointer + 40i64))(Characteristics) )
    {
      (Allows2shot_Func)(Characteristics, fTime2NextShot);
    }
    else
    {
      LODWORD(v10) = (*(Characteristics->qwPointer + 0x20i64))(Characteristics);
      if ( *(*(v10 + 0xBA0) + 0x10i64) )
        (*(Characteristics->qwPointer + 32i64))(Characteristics);
    }
    if ( Characteristics->iShooting_mode_ != 2 )
      *&Characteristics->bunknown = sub_CC42F0(Characteristics);
    if ( (Characteristics->bAim_active || byte_1C21756) && !sub_CC74B0(Characteristics) )
      sub_CC1600(0, Characteristics, 1, Characteristics->bIDK, *&fTime2NextShot);
    sub_CC73F0(Characteristics, *&fTime2NextShot);
    sub_CC01F0(Characteristics, *&fTime2NextShot);
    sub_CC08E0(Characteristics, *&fTime2NextShot);
    sub_CC6A80(Characteristics);
    SetFov(Characteristics, fTime2NextShot);
    LODWORD(v11) = (*(Characteristics->qwPointer + 32i64))(Characteristics);
    DeltaTime = IGSObject::GetTimeDelta((v11 + 40));
    Pointer = Characteristics->qwPointer;
    fTime2NextShotBuffer_1 = DeltaTime + Characteristics->fTime2NextShotReverse;
    Characteristics->fTime2NextShotReverse = fTime2NextShotBuffer_1;
    if ( (*(Pointer + 40))(Characteristics) )
      Characteristics[1].unknown_9 = 0;
    if ( Characteristics->iShooting_mode_ != 2 )
      sub_CBF900(Characteristics);
    ishooting_mode = Characteristics->iShooting_mode_;
    if ( !ishooting_mode )
    {
      LODWORD(v26) = (*(Characteristics->qwPointer + 32i64))(Characteristics);
      LODWORD(iIDK4) = (*(*v26 + 0x758i64))(v26, *&Characteristics->iIDK6);// iIDK6 = -1.0
      iIDK4_1 = iIDK4;
      if ( (*(Characteristics->qwPointer + 40i64))(Characteristics) )
      {
        if ( !iIDK4_1
          || sub_CCC2B0(Characteristics)
          || !sub_CC4A90(Characteristics, 0, 0)
          || (LODWORD(v30) = (*(Characteristics->qwPointer + 32i64))(Characteristics), (*(*v30 + 2568i64))(v30)) )
        {
          if ( (Get_Shooting_Mode(Characteristics) == 3 || Get_Shooting_Mode(Characteristics) == 4)
            && -1.0 != Characteristics->fIDK6   // iIDK5 = -1.0 после выстрела устанавливает значение 2434 или 3569
            && (*(Characteristics->qwPointer + 40i64))(Characteristics) )
          {
            a1a = qword_1C22160;
            v41 = dword_1C22168;
            Shot(&a1a, Characteristics, *&dword_1C22168);
          }
          goto MakeShot;
        }
        LODWORD(v31) = (*(Characteristics->qwPointer + 32i64))(Characteristics);
        if ( !sub_AC7C80(v31) )
        {
          sub_CC4A10(Characteristics, 0i64);
          goto MakeShot;
        }
        LODWORD(v32) = (*(Characteristics->qwPointer + 32i64))(Characteristics);
        LOBYTE(v3) = *&Characteristics->iIDK6 == 0;
        LODWORD(v33) = (*(*v32 + 1880i64))(v32, v3);
        v34 = v33;
        bCondition = !sub_CCC2B0(Characteristics) && sub_CC4A90(Characteristics, 0, 0);
        v36 = v34 && !*(v34 + 64);
        if ( !bCondition )
          goto MakeShot;
        v29 = v36 == 0;
      }
      else
      {
        v29 = Characteristics[1].unknown_9 == 0;
      }
      if ( !v29 )
        sub_CC4A10(Characteristics, 0i64);
      goto MakeShot;
    }
    v16 = ishooting_mode - 1;
    if ( v16 )
    {
      v17 = v16 - 1;
      if ( !v17 )
      {
        sub_CBD1F0(Characteristics);
        if ( fTime2NextShotBuffer_1 < Characteristics->fTime2NextShot )
        {
          if ( ((Get_Shooting_Mode(Characteristics) == 3 || Get_Shooting_Mode(Characteristics) == 4)
             && (fTime2NextShotBuffer_1 = -1.0, -1.0 != Characteristics->fIDK6)
             && (*(Characteristics->qwPointer + 40i64))(Characteristics)
             || Get_Shooting_Mode(Characteristics) == 2
             && Characteristics->iterator > 0
             && (*(Characteristics->qwPointer + 40i64))(Characteristics))
            && (a1a = qword_1C22160,
                fTime2NextShotBuffer_1 = *&dword_1C22168,
                v41 = dword_1C22168,
                Shot(&a1a, Characteristics, *&dword_1C22168)) )
          {
            if ( Get_Shooting_Mode(Characteristics) == 2 )
              --Characteristics->iterator;
          }
          else
          {
            Characteristics->bShooting = Characteristics->iShooting_mode_ == 2 && Characteristics->bShooting;
            v23 = Characteristics->qwPointer;
            *&Characteristics->unknown_5 = -1;
            *&Characteristics->unknown_7 = 0;
            Characteristics->bIDK3 = 0;
            Characteristics->iShooting_mode = 0;
            Characteristics->iShooting_mode_ = 0;
            (*(v23 + 48))(Characteristics);
            LODWORD(Characteristics->fTime2NextShot) = 0;
            Characteristics->fTime2NextShotBuffer = fTime2NextShotBuffer_1;
          }
        }
        LODWORD(Characteristics_of_weapon_Pointer) = (*(Characteristics->qwPointer + 32i64))(Characteristics);
        Characteristics->fTime2NextShot = IGSObject::GetTimeDelta((Characteristics_of_weapon_Pointer + 0x28))
                                        + Characteristics->fTime2NextShot;
        goto MakeShot;
      }
      v18 = v17 - 1;
      if ( !v18 )
      {
        LODWORD(v20) = (*(Characteristics->qwPointer + 32i64))(Characteristics);
        LOBYTE(v3) = *&Characteristics->iIDK6 == 0;
        LODWORD(v21) = (*(*v20 + 1880i64))(v20, v3);
        if ( !v21 || (LODWORD(v22) = (*(Characteristics->qwPointer + 32i64))(Characteristics), sub_AC7BF0(v22)) )
          sub_CC0C00(Characteristics);
        goto MakeShot;
      }
      if ( v18 != 1 || !sub_CCB540(Characteristics) )
      {
MakeShot:
        sub_CC03C0(Characteristics);
        if ( Characteristics->iShooting_mode_ != 2 )
          *&Characteristics->bunknown = sub_CC42F0(Characteristics);
        LOBYTE(Fired_cartridges) = (*(Characteristics->qwPointer + 40i64))(Characteristics);
        if ( !Fired_cartridges )
        {
          Fired_cartridges = Characteristics->iShot_Count;
          if ( Characteristics->iShot_Count_ != Fired_cartridges )
          {
            iShooting_Mode = Characteristics->iShooting_mode_;
            if ( iShooting_Mode != 2 )
            {
              v38 = *&Characteristics->gap11[12];
              Characteristics->iShot_Count = (Fired_cartridges + 1) % 32;
              if ( *&Characteristics->gap11[8] != v38 && (iShooting_Mode == 3 || iShooting_Mode == 4) )
                *&Characteristics->gap11[8] = v38;
              a1a = qword_1C22160;
              v41 = dword_1C22168;
              LOBYTE(Fired_cartridges) = Shot(&a1a, Characteristics, *&dword_1C22168);
            }
          }
        }
        return Fired_cartridges;
      }
      if ( Characteristics->iShooting_mode_ == 2 && Characteristics->bShooting )
      {
        Characteristics->bShooting = 1;
Zeroing:
        v19 = Characteristics->qwPointer;
        *&Characteristics->unknown_5 = -1;
        *&Characteristics->unknown_7 = 0;
        Characteristics->bIDK3 = 0;
        Characteristics->iShooting_mode = 0;
        Characteristics->iShooting_mode_ = 0;
        (*(v19 + 48))(Characteristics);
        LODWORD(Characteristics->fTime2NextShot) = 0;
        Characteristics->fTime2NextShotBuffer = fTime2NextShotBuffer_1;
        goto MakeShot;
      }
    }
    else
    {
      (*(Characteristics->qwPointer + 48i64))(Characteristics);
      LastShotTime = fTime2NextShotBuffer_1 - Characteristics->fTime2NextShotBuffer;
      sub_CBD1F0(Characteristics);
      if ( LastShotTime <= fTime2NextShotBuffer_1 )
        goto MakeShot;
      if ( Characteristics->iShooting_mode_ == 2 && Characteristics->bShooting )
      {
        Characteristics->bShooting = 1;
        goto Zeroing;
      }
    }
    Characteristics->bShooting = 0;
    goto Zeroing;
  }
  return Fired_cartridges;
}

 

В прикрепленных файл в виде html восстановленного код он с подсветкой.

Full_Shot_Func.htm

Изменено пользователем partoftheworlD
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.