Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Development] ex wings effects for season 6

Joined
Jun 27, 2010
Messages
940
Reaction score
1,193
Original source by myheart i just make it works on s6 still need some work to looks exactly like ex effects.

.cpp
cCreateEffect gCreateEffect;
float &WorldTime = *(float*)0x666C558; //
float &flt_7BC08A0 = *(float*)0x7BC08A0;

#define sub_545030 ((float(__thiscall*)(float *this, float *a2, float *a3, float *a4, char a5))0x545030)

float sub_4EC46D(float a1, float a2) //Main S13; Not here
{
float v5;
float v2 = a2 * 0.01745f;
float v6 = (float)((int)(v2 * 1000.0f / a1 + timeGetTime()) % (int)(6283.185546875f / a1))* 0.001f * a1;

if (v6 >= 3.14f)
v5 = cosf(v6);
else
v5 = -cosf(v6);
return (float)((v5 + 1.0f) * 0.5f);
}

void sub_92A1E9(vec3_t a1, float a2)
{
float v1 = a1[0] * a1[0] + a1[1] * a1[1] + a1[2] * a1[2];

float v3 = sqrtf(v1);

if (v3 < 0.000001f && v3 > -0.000001f)
{
a1[0] = 0.0;
a1[1] = 0.0;
a1[2] = 0.0;
}
else
{
float v2 = 1.0f / a2;

a1[0] *= v2;
a1[1] *= v2;
a1[2] *= v2;
}
}
double sub_639050(float a1)
{
double result; // st7

if (a1 >= 0.0)
result = a1;
else
result = -a1;
return result;
}

void CreateItemEffect(int lpModel, int ItemID, vec3_t Light, float Alpha, int ItemLevel, int NewOption, int a10, int a11, int RenderType)
{
pSetItemEffect(lpModel, ItemID, Light, Alpha, ItemLevel, NewOption, a10, a11, RenderType);

LPVOID Model = pGetModel(pModelThis(), ItemID);
vec3_t p;
vec3_t Bone;
vec3_t Color;
vec3_t WorldPos;

Vector(0.0f, 0.0f, 0.0f, p);
Vector(WorldPos[0], WorldPos[1], WorldPos[2], WorldPos);//ok

switch (ItemID)
{
case ITEM2(12, 180): //wing of Conqueror
{
int BoneID1[4] = { 14, 19, 37 ,42 };
if (*(BYTE*)(oUserPreviewStruct + 120)) //Is character moving
{
float v213 = sub_4EC46D(10.0f, 0.0);

if (v213 > 0.800000011920929f) // <- Change here may 0.4,0.5 is best
{
Vector(1.0f, 0.55000001f, 0.050000001f, Color);
for (int i = 0; i < 4; i++)
{
pAllowPlayEffect(Model, Bone, lpModel, BoneID1, 0);
WorldPos[0] = Bone[0] - WorldPos[0];
WorldPos[1] = Bone[1] - WorldPos[1];
WorldPos[2] = Bone[2] - WorldPos[2];
sub_92A1E9(WorldPos, WorldPos[2]);
WorldPos[0] -= (0.25f - (float)(GetLargeRand() % 50) / 100.0f);
WorldPos[2] -= (0.25f - (float)(GetLargeRand() % 50) / 100.0f);
//WorldPos[0] = WorldPos[0] - (0.25f - (float)(GetLargeRand() % 50) / 100.0f);
//WorldPos[2] = (float)0.0 - (0.25f - (float)(GetLargeRand() % 50) / 100.0f);
gCreateEffect.DynamicEffectEx(32290, Bone, WorldPos, Color, 17, 1.5f, &*(ObjectModel*)*(DWORD*)lpModel);

}
}
}

float v266 = sub_4EC46D(-2.0, 0.0);
if (v266 <= 0.800000011920929)
{
if (v266 < 0.6000000238418579)
v266 = 0.60000002;
}
else
{
v266 = 0.80000001;
}

Vector(v266 * 1.0, v266 * 0.6000000238418579, 0.0f, Color);
pQuickPlayStaticEffect(Model, 32842, 47, 0.60000002f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32842, 24, 0.60000002f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32842, 31, 0.60000002f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32842, 40, 0.60000002f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32842, 8, 0.60000002f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32842, 17, 0.60000002f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32842, 46, 1.2f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32842, 23, 1.2f, Color, lpModel);

Vector(1.0f, 0.15000001f, 0.050000001f, Color);
float rFloat = (double)(GetLargeRand() % 10) / 50.0 + 0.2000000029802322f;

int BoneID2[8] = { 35, 39 ,44, 45, 12, 16, 21, 22 };
for (int i = 0; i < 8; i++)
{
pQuickPlayStaticEffect(Model, 0x7E92, BoneID2, 0.40000001f + rFloat, Color, lpModel);
}

int BoneID3[7] = { 61, 59, 62, 55, 52, 53, 54 };
for (int i = 0; i < 7; i++)
{
pQuickPlayStaticEffect(Model, 0x7E92, BoneID3, 0.2f + rFloat, Color,lpModel);
}
}
break;
case ITEM2(12, 181):
{
float WorldTime = (0.10f - (float)(GetLargeRand() % 50) / 100.0f);
float ft1 = WorldTime * 0.5f + 1.8f;
float ft2 = WorldTime * 0.5f + 2.5f;

int BoneID[22] = { 61,42,60,41,63,44,42,59,40,62,43,65,46,58,39,64,45,13,15,25,27,3 };

Vector(0.34f, 0.25f, 1.0f, Color);

for (int x = 0; x < 22; x++)
{
pQuickPlayStaticEffect(Model, 32002, BoneID[x], ft1, Color ,lpModel);
if (x >= 22 - 5)
{
pQuickPlayStaticEffect(Model, 32842, BoneID[x], (0.5 + 0), Color, lpModel);
}
}

for (int i12 = 0; i12 < 4; ++i12)
{
float v134 = sub_4EC46D(2.0, 90.0f);
float v135 = 1.0 - v134;
v135 = v135 * 3.0;
float ft3 = v134 * 0.300000011920929;

Vector(v135 * 1.0f, v135 * 0.6000000238418579f, v135 * 0.4000000059604645f, Color);

pQuickPlayStaticEffect(Model, 32781, 14, ft3, Color, lpModel);
pQuickPlayStaticEffect(Model, 32781, 26, ft3, Color, lpModel);
}

int BoneID2[8] = { 65,46,59,40,11,12,23,24 };
Vector(0.0f, 0.0f, 0.0f, Color);

for (int i13 = 0; i13 < 8; i13++)
{
pAllowPlayEffect(Model, Bone, lpModel, BoneID2[i13], 0);
WorldPos[0] = Bone[0] - WorldPos[0];
WorldPos[1] = Bone[1] - WorldPos[1];
WorldPos[2] = Bone[2] - WorldPos[2];

if (!((signed int)GetLargeRand() % 10))
{
//sub_545030(Model, &flt_7BC08A0[12 * *(&v202 + i13)], &v237, &v188, 1);
//Type,Position,Angle,Light,SubType,Owner,PKKey,Skill,Scale,SkillSerial,SkillAngle,SkillHotKey
if (i13 >= 8 / 2)
CreateEffect(299, Bone, WorldPos, Color, 2, lpModel, -1, 0, 0.005, 0, 0, -1);
else//2
CreateEffect(299, Bone, WorldPos, Color, 1, lpModel, -1, 0, 0.005, 0, 0, -1);
}
}
}
break;
case ITEM2(12, 185):// Wings of Life
{
int BoneID[22] = { 8,9,19,21,29,37,6,11,18,22,5,10,17,20,27,35,7,16,28,36,44,50 };

float v97 = WorldTime * 0.002000000094994903f;
float v98 = cosf(v97);
float v1263 = sub_639050(v98);

for (int i10 = 0; i10 < 22; ++i10)
{
if (i10 >= 6)
{
Vector(v1263*1.0f, v1263*0.1000000014901161f, v1263*0.1000000014901161f, Color);
if (i10 < 6 || i10 >= 10)
{

if (i10 < 10 || i10 >= 16)
{
if (i10 >= 16 && i10 < 22)
{
pQuickPlayStaticEffect(Model, 32002, BoneID[i10], 0.80000001f, Color, lpModel);
}
}
else
{
pQuickPlayStaticEffect(Model, 32002, BoneID[i10], 1.0f, Color, lpModel);
}
}
else
{
pQuickPlayStaticEffect(Model, 32002, BoneID[i10], 1.6f, Color, lpModel);
}
}
else
{
Vector(v1263*1.0f, v1263 * 0.6499999761581421f, 0.0, Color);
pQuickPlayStaticEffect(Model, 32002, BoneID[i10], 1.0999999f, Color, lpModel);
}
//if (!(rand() % 15))
//{
// Vector(1.0, 1.0, 0.34999999, Color);

// pAllowPlayEffect(Model, Bone, lpModel, BoneID[i10], 0);
// WorldPos[0] = Bone[0] - WorldPos[0];
// WorldPos[1] = Bone[1] - WorldPos[1];
// WorldPos[2] = Bone[2] - WorldPos[2];
// //pPlayDynamicEffect(32587, Bone, WorldPos, Color, 5, 0.17f, lpModel);
// gCreateEffect.DynamicEffectEx(32587, Bone, WorldPos, Color, 5, 0.17f, &*(ObjectModel*)*(DWORD*)lpModel);
//}
}
}
break;

case ITEM2(12, 183)://Wings of chaos
{
float v89 = WorldTime * 0.002000000094994903f;
float v90 = cosf(v89);
float v308 = sub_639050(v90);

Vector(v308 + 0.300000011920929f, v308 + 0.300000011920929f, v308 + 0.300000011920929f, Color);
pQuickPlayStaticEffect(Model, 32501, 43, 0.40000001f, Color, lpModel);

float v91 = WorldTime * 0.05000000074505806f;
float v93 = cosf(v91);
v308 = sub_639050(v93);

Vector(v308 + 0.300000011920929f, v308 + 0.300000011920929f, v308 + 0.300000011920929f, Color);
pQuickPlayStaticEffect(Model, 32836, 43, 0.60000002f, Color, lpModel);

Vector(1.0, 0.30000001, 1.0, Color);
pQuickPlayStaticEffect(Model, 32783, 43, 0.2f, Color, lpModel);

Vector(1.0, 1.0, 1.0, Color);
pQuickPlayStaticEffect(Model, 32836, 43, 0.15000001f, Color, lpModel);
}
break;

case ITEM2(12, 184):
{
float v96 = WorldTime * 0.001000000047497451f;
float v97 = cosf(v96);
float v304 = sub_639050(v97) * 0.4000000059604645f;

Vector((v304 + 0.5f) / 2.0f,
(v304 + 0.5f) / 2.0f,
(v304 + 0.5f) / 2.0f, Color);

pQuickPlayStaticEffect(Model, 32836, 8, 0.80000001f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32836, 16, 0.80000001f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32231, 8, 0.60000002f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32231, 16, 0.60000002f, Color, lpModel);

Vector(v304 + 0.5, v304 + 0.5, v304 + 0.5, Color);
pQuickPlayStaticEffect(Model, 32231, 20, 0.60000002f, Color, lpModel);
pQuickPlayStaticEffect(Model, 32231, 24, 0.60000002f, Color, lpModel);
}
break;
}
}

DYNAMIC_EFFECT_INFO *m_DynamicEffectInfo = (DYNAMIC_EFFECT_INFO*)0x8907508;
int cCreateEffect::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;
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 -- Effectshiny06.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; <---
case 32355:
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; <---
case 32290:
if (lpEffect->SubEffectID)
{
switch (lpEffect->SubEffectID)
{
case 0x11://for wings of conqueror
lpEffect->Unknown68 = (float)(GetLargeRand() % 360);
lpEffect->Unknown60 = 25;
lpEffect->Scale = Scale;
break;
}
}
else
{
lpEffect->Unknown60 = 20;
lpEffect->Unknown84.Z = (GetLargeRand() % 5 + 2);
}
//lpEffect->Unknown68 = (double)(GetLargeRand() % 360);
//lpEffect->Scale = (double)(GetLargeRand() % 10 + 10) * 0.01999999955296516;
// --
lpEffect->VecPos.X = (double)(GetLargeRand() % 40) - 20.0 + lpEffect->VecPos.X;
lpEffect->VecPos.Y = (double)(GetLargeRand() % 40) - 20.0 + lpEffect->VecPos.Y;
lpEffect->VecPos.Z = (double)(GetLargeRand() % 20) - 10.0 + lpEffect->VecPos.Z;
break;
}
return 0;
}
void cCreateEffect::Load()
{
SetCompleteHook(0xE8, 0x0061041C, &CreateItemEffect);
SetCompleteHook(0xE8, 0x00610466, &CreateItemEffect);
SetCompleteHook(0xE8, 0x005666C1, &CreateItemEffect);
}


.h
#pragma pack(push, 1)
#define pQuickPlayStaticEffect ((int(__cdecl*)(LPVOID Model, int ModelID, int Joint, float size, vec3_t Color, int ObjModel)) 0x565560)//ok sub_565560
#define pAllowPlayEffect ((void(__thiscall*)(LPVOID This, vec3_t Bone1, int lpModel, signed int joint, int a5)) 0x544E60)
#define oUserPreviewStruct *(int*)0x7BC4F04
#define pSetItemEffect ((void(__cdecl*)(int lpModel, int ItemID, vec3_t Light, float Alpha, int ItemLevel, int NewOption, int a10, int a11, int RenderType)) 0x00609E70)
#define pModelThis ((LPVOID(*)())0x004CDA10)//ok
#define pGetModel ((LPVOID(__thiscall*)(LPVOID This, signed int a2)) 0x00969C50)//ok

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
#define CreateEffect ((void(__cdecl*)(int Type, vec3_t a5, vec3_t Angle, vec3_t Light, int SubType, int Owner, short PKKey, BYTE Skill, float Scale, BYTE SkillSerial, vec3_t SkillAngle, BYTE SkillHotKey))0x6D9070)


class cCreateEffect
{
public:
void Load();
int DynamicEffectEx(DWORD ModelID, vec3_t VecPos, vec3_t WorldPos, vec3_t Color, int SubEffectID, float Scale, ObjectModel* lpModel);
};
extern cCreateEffect gCreateEffect;

Any help to make it looks better is welcome.

original effects source can be found here: http://forum.ragezone.com/f197/igcn-season-9-repack-custom-1142304/
s6 source i'm using can be found here: http://forum.ragezone.com/f197/release-mu-server-s6-3-a-1133736/
 
Newbie Spellweaver
Joined
Feb 12, 2012
Messages
60
Reaction score
2
Ok but about the conqueror wing: *(BYTE*)(oUserPreviewStruct + 120) is the character, and anothe character? Would the smoke in the case be just visual to myself?
 
Joined
Jun 27, 2010
Messages
940
Reaction score
1,193
Ok but about the conqueror wing: *(BYTE*)(oUserPreviewStruct + 120) is the character, and anothe character? Would the smoke in the case be just visual to myself?
well not sure its from original effect source.

i did not research too deep on this part of the code if you want to check on main season9 igcn.

sub_572C53
ashlay - [Development] ex wings effects for season 6 - RaGEZONE Forums
 
Newbie Spellweaver
Joined
Feb 12, 2012
Messages
60
Reaction score
2
well not sure its from original effect source.

i did not research too deep on this part of the code if you want to check on main season9 igcn.

sub_572C53
ashlay - [Development] ex wings effects for season 6 - RaGEZONE Forums

Ah ok, thanks for you attention :)
 
Skilled Illusionist
Joined
Jun 22, 2017
Messages
363
Reaction score
561
WorldTime = timeGetTime()
and
sub_545030(Model, &flt_7BC08A0[12 * *(&v202 + i13)], &v237, &v188, 1);
=
Code:
struct MATRIX4X3
{
 float x1,x2,x3,y1,y2,y3,z1,z2,z3,w1,w2,w3;
}

[/COLOR][COLOR=#666666]MATRIX4X3 * m_JointInfo = ([/COLOR][COLOR=#666666]MATRIX4X3*[/COLOR][COLOR=#666666])0x[/COLOR][COLOR=#666666]7BC08A0; //Max 200 [/COLOR][COLOR=#666666]MATRIX4X3 m_JointInfo[200]; [/COLOR][COLOR=#666666]

[/COLOR][COLOR=#666666]Vec3D v237(0.0, 0.0, 0.0);
Vec3D Vecpos;
[/COLOR][COLOR=#666666]BoneTransform(Model, &[/COLOR][COLOR=#666666]m_JointInfo[[/COLOR][COLOR=#666666]v202[i]], &v237, &[/COLOR][COLOR=#666666]Vecpos[/COLOR][COLOR=#666666], 1); [/COLOR][COLOR=#666666]

 
Newbie Spellweaver
Joined
Mar 9, 2017
Messages
35
Reaction score
27
How can I use this in MUEMU SEASON 6, a guide to add it and compile it?
 
Junior Spellweaver
Joined
Aug 11, 2013
Messages
112
Reaction score
64
How can I use this in MUEMU SEASON 6, a guide to add it and compile it?

friend as is the .cpp and the .h you can use it in muemu.
 
Last edited by a moderator:
Experienced Elementalist
Joined
Jun 17, 2014
Messages
242
Reaction score
107
offset in file .cpp and .h is main 1.04E.

offset for main 1.04D
Code:
#define pSetItemEffect            ((void(__cdecl*)(int lpModel, int ItemID, vec3_t Light, float Alpha, int ItemLevel, int NewOption, int Arg7, int Arg8, int RenderType)) 0x609E70)
#define pModelThis                ((LPVOID(*)())0x4CDA10)#define pGetModel                ((LPVOID(__thiscall*)(LPVOID This, signed int a2)) 0x969AD0)
#define BoneTransform            ((float(__thiscall*)(LPVOID This, MATRIX4X3 * a2, vec3_t * a3, vec3_t * a4, char a5))0x545030)

float &WorldTime = *(float*)0x666C558; (I can't find it), but you can use timeGetTime()

ashlay - [Development] ex wings effects for season 6 - RaGEZONE Forums

myheart: can you expand how to add texture effect to wing?
i have found offset function, but i have some problem killer wings do not change color to red
 
Last edited:
Joined
Jun 27, 2010
Messages
940
Reaction score
1,193
offset in file .cpp and .h is main 1.04E.

offset for main 1.04D
Code:
#define pSetItemEffect            ((void(__cdecl*)(int lpModel, int ItemID, vec3_t Light, float Alpha, int ItemLevel, int NewOption, int Arg7, int Arg8, int RenderType)) 0x609E70)
#define pModelThis                ((LPVOID(*)())0x4CDA10)#define pGetModel                ((LPVOID(__thiscall*)(LPVOID This, signed int a2)) 0x969AD0)
#define BoneTransform            ((float(__thiscall*)(LPVOID This, MATRIX4X3 * a2, vec3_t * a3, vec3_t * a4, char a5))0x545030)

float &WorldTime = *(float*)0x666C558; (I can't find it), but you can use timeGetTime()

ashlay - [Development] ex wings effects for season 6 - RaGEZONE Forums

myheart: can you expand how to add texture effect to wing?
i have found offset function, but i have some problem killer wings do not change color to red

Check gameserver source for timeGetTime().
 
Skilled Illusionist
Joined
Jun 22, 2017
Messages
363
Reaction score
561
ashlay - [Development] ex wings effects for season 6 - RaGEZONE Forums

@myheart: can you expand how to add texture effect to wing?
i have found offset function, but i have some problem killer wings do not change color to red

i think you hooked on incorrect offset.

HpWs5Um - [Development] ex wings effects for season 6 - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Skilled Illusionist
Joined
Jun 22, 2017
Messages
363
Reaction score
561
ah, i have seen source Wingbright somewhere you using that, right?
 
Last edited by a moderator:
Junior Spellweaver
Joined
Apr 16, 2007
Messages
145
Reaction score
82
Ok but about the conqueror wing: *(BYTE*)(oUserPreviewStruct + 120) is the character, and anothe character? Would the smoke in the case be just visual to myself?

That is right, what is more weird is another character moving will see the effect even if the character wearing the wing is not moving.

Dirty trick (104d main): Insert this before the offset 0x00566692, now you will have new parameter (10th) that you can use as move flag.

MOV EAX, DWORD PTR SS : [EBP + 0x14]
MOV DL, BYTE PTR DS : [EAX + 120]
PUSH EDX
 
Skilled Illusionist
Joined
Jun 22, 2017
Messages
363
Reaction score
561
for main 1.04.05

Code:
void CEffect::SetItemEffect(ObjectPreview * lpObj, ObjectModel* lpModel, int ItemID, Vec3D * vColor, float Alpha, int ItemLevel, int NewOption, int SetOption, int Select, int RenderType);

Code:
if (lpObj && lpObj->IsMoving)
{
 ...
}

Code:
__declspec(naked) void _hSetItemEffect()
{
    static DWORD Address1 = 0x005666C9;

    _asm
    {
  Mov Ecx, Dword Ptr Ss:[Ebp+0x30]
  Or Ecx, Dword Ptr Ss:[Ebp-0x528]
  Push Ecx
  Push 0x0
  Push 0x0
  Mov Edx, Dword Ptr Ss:[Ebp+0x24]
  Push Edx
  Mov Eax, Dword Ptr Ss:[Ebp+0x20]
  Shl Eax,0x3
  Push Eax
  Mov Ecx, Dword Ptr Ss:[Ebp-0x70]
  Push Ecx
  Fld Dword Ptr Ds:[Ecx+0x98]
  Fstp Dword Ptr Ss:[Esp]
  Mov Edx, Dword Ptr Ss:[Ebp+0x14]
  Add Edx,0x0DC
  Push Edx
  Mov Eax, Dword Ptr Ss:[Ebp+0x1C]
  Push Eax
  Mov Ecx, Dword Ptr Ss:[Ebp-0x6C]
  Push Ecx
  Mov Edx, Dword Ptr Ss:[Ebp+0x14]
  Push Edx
  Lea Eax, gEffect
  Call [CEffect::SetItemEffect]
  Jmp Address1
    }
}

Code:
SetCompleteHook(0xE9, 0x00566689, &_hSetItemEffect);
 
Back
Top