Noticias:

SMF - Just Installed!

Menú principal

Dynamic effect Source(Wing)

Publicado por Dakosmu, Jul 08, 2023, 06:09 AM

Tema anterior - Siguiente tema

Dakosmu

Dynamic effect Source(Wing)

Los visitantes no pueden visualizar imágenes en los mensajes, por favor Regístrate o Inicia Sesión



#pragma pack(push, 1)
struct DYNAMIC_EFFECT_INFO    //(size: 132)
{
    /*+0*/  bool    Enable; //int
    BYTE gap1[3];
    /*+4*/  DWORD    EffectID;
    /*+8*/  DWORD    TextureID;
    /*+12*/  int  SubEffectID;
    /*+16*/  float    Scale;
    /*+20*/  VAngle    VecPos;
    /*+32*/  VAngle    WorldPos;
    /*+44*/  VAngle    Color;
    /*+56*/  float    Unknown56; //Alpha
    /*+60*/  DWORD    Unknown60;
    /*+64*/  ObjectModel    * m_Owner;
    /*+68*/  float    Unknown68; //
    /*+72*/  DWORD    Unknown72;
    /*+76*/  BYTE    Unknown76; //int
    BYTE Gap01[3];
    /*+80*/  float    Unknown80;
    /*+84*/  VAngle    Unknown84;
    /*+96*/  VAngle    Color2;
    /*+108*/    VAngle    VecPos2;
    BYTE Gap02[12];
};
#pragma pack(pop)


//Main 1.04C: 0x8905508
//Main 1.04D/1.04E: 0x8907508


DYNAMIC_EFFECT_INFO *m_DynamicEffectInfo = (DYNAMIC_EFFECT_INFO*)0x8905508;

int CEffect::DynamicEffectEx(DWORD ModelID, vec3_t VecPos, vec3_t WorldPos, vec3_t Color, int SubEffectID, float Scale, ObjectModel* lpModel)
{
DYNAMIC_EFFECT_INFO *lpEffect;

for (int i = 0; i < 3000; ++i)
{
lpEffect = &m_DynamicEffectInfo[i];
if (!lpEffect->Enable)
break;
}

if (!lpEffect)
{
return 0;
}

lpEffect->Enable = 1;
lpEffect->EffectID = ModelID;
lpEffect->TextureID = ModelID;
lpEffect->SubEffectID = SubEffectID;
lpEffect->VecPos.X = VecPos[0];
lpEffect->VecPos.Y = VecPos[1];
lpEffect->VecPos.Z = VecPos[2];
lpEffect->VecPos2.X = VecPos[0];
lpEffect->VecPos2.Y = VecPos[1];
lpEffect->VecPos2.Z = VecPos[2];
lpEffect->Color.X = Color[0];
lpEffect->Color.Y = Color[1];
lpEffect->Color.Z = Color[2];
lpEffect->Scale = Scale;
lpEffect->Unknown80 = 0.0;
lpEffect->Unknown60 = 2;
lpEffect->Unknown72 = 0;
lpEffect->m_Owner = lpModel;
lpEffect->Unknown68 = 0.0;
lpEffect->Unknown76 = 1;
lpEffect->WorldPos.X = WorldPos[0];
lpEffect->WorldPos.Y = WorldPos[1];
lpEffect->WorldPos.Z = WorldPos[2];
lpEffect->Unknown84.X = 0.0;
lpEffect->Unknown84.Y = 0.0;
lpEffect->Unknown84.Z = 0.0;

switch (lpEffect->EffectID)
{
case 32587: //Texture ID Main Season 13 -- Effect\\shiny06.jpg
if (lpEffect->SubEffectID)
{
if (lpEffect->SubEffectID > 0 && lpEffect->SubEffectID <= 3)
{
lpEffect->Unknown60 = GetLargeRand() % 11 + 20;
lpEffect->Unknown56 = 0.0;
lpEffect->Unknown68 = (float)(GetLargeRand() % 180);
lpEffect->Scale = Scale - (float)(GetLargeRand() % 6) * (Scale / 10.0f);

switch (lpEffect->SubEffectID)
{
case 1:
lpEffect->VecPos.X = (float)(GetLargeRand() % 31) - 15.0f + lpEffect->VecPos.X;
lpEffect->VecPos.Y = (float)(GetLargeRand() % 31) - 15.0f + lpEffect->VecPos.Y;
lpEffect->VecPos.Z = (float)(GetLargeRand() % 21) + 12.0f + lpEffect->VecPos.Z;
break;
case 2:
lpEffect->VecPos.X = (float)(GetLargeRand() % 31) / 30.0f * 40.0f - 20.0f + lpEffect->VecPos.X;
lpEffect->VecPos.Y = (float)(GetLargeRand() % 31) / 30.0f * 40.0f - 20.0f + lpEffect->VecPos.Y;
lpEffect->VecPos.Z = (float)(GetLargeRand() % 24) + 14.0f + lpEffect->VecPos.Z;
break;
case 3:
lpEffect->VecPos.X = (float)(GetLargeRand() % 31) / 30.0f * 70.0f - 35.0f + lpEffect->VecPos.X;
lpEffect->VecPos.Y = (float)(GetLargeRand() % 31) / 30.0f * 70.0f - 35.0f + lpEffect->VecPos.Y;
lpEffect->VecPos.Z = (float)(GetLargeRand() % 30) + 20.0f + lpEffect->VecPos.Z;
break;
}
}
else
{
switch (lpEffect->SubEffectID)
{
case 4:

break;
case 6:
lpEffect->Unknown60 = 15;
lpEffect->Unknown68 = (float)(GetLargeRand() % 360);
lpEffect->Unknown84.X = (float)-(GetLargeRand() % 2 - 1);
lpEffect->Unknown84.Y = (float)-(GetLargeRand() % 4);
lpEffect->Unknown84.Z = (float)-(GetLargeRand() % 4);
break;
case 7:
lpEffect->Scale = (float)(GetLargeRand() % 8 + 1) * 0.1 * Scale;
lpEffect->Unknown60 = GetLargeRand() % 20 + 20;
lpEffect->Unknown56 = 1.0f;
lpEffect->Unknown68 = (float)(GetLargeRand() % 180);
break;
}
}
}
else
{
lpEffect->Unknown60 = 18;
lpEffect->WorldPos.X = 45.0;
}
break; //return i; <---
}

return 0;
}








Bon Dia

🡱 🡳