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!

New Jewels for 1.03k Main (1.03.11)

Junior Spellweaver
Joined
Jul 30, 2005
Messages
176
Reaction score
110
Jewel Of Divinity - Upgrade items from 9 to 13

Dark, how this level upgrade works ? Is sequential or random ?

For sequential I mean:
Each Jewel of Divinity increment 1 level from +9 to +13. It's interesting implement a failure chance for this method...

For random I mean:
Each Jewel of Divinity random from 1 to 4 then increment item level with the result. If the item level is 11 and the rand returns 3, then the max result will be 2 (11 + 2 = 13). I think this function sucks, but I don't know how this Jewel works in RMTS server. :blush:

--

Server side progress:
Jewel Of Skill - 100% Done
Jewel Of Luck - 100% Done
Jewel Of Excellent - 100% Done
Jewel Of Assembly - 100% Done
Jewel Of Divinity - 0% Done
 
Experienced Elementalist
Joined
Oct 11, 2008
Messages
225
Reaction score
423
Young
Code:
if((gObj->pInventory[lpMsg->invenrotyTarget].m_Level < MaxLevel) && (gObj->pInventory[lpMsg->invenrotyTarget].m_Level >= MinLevel))
		{	
			if(iRate < SucRate2)
			{
				gObj->pInventory[lpMsg->invenrotyTarget].m_Level++;
				gObjInventoryItemSet(aIndex,lpMsg->inventoryPos, -1);
				ItemClear(aIndex,lpMsg->inventoryPos);
				GCInventoryItemOneSend(aIndex, lpMsg->invenrotyTarget);
				GCInventoryItemDeleteSend(aIndex, lpMsg->inventoryPos, 1);
			}
			else
			{
				gObjInventoryItemSet(aIndex,lpMsg->inventoryPos, -1);
				ItemClear(aIndex,lpMsg->inventoryPos);
				GCInventoryItemOneSend(aIndex, lpMsg->invenrotyTarget);
				GCInventoryItemDeleteSend(aIndex, lpMsg->inventoryPos, 1);
			}
		}
		else
		{
			MsgNormal(aIndex,"[SYSTEM] This Jewel not used to this item");
			return;
		}
 
Newbie Spellweaver
Joined
Jan 8, 2012
Messages
74
Reaction score
8
after finishing the project can u share a guide how to add them on server .... Thanks
 
Junior Spellweaver
Joined
May 1, 2009
Messages
192
Reaction score
17
void ExpBugObtainedExp()
{
_asm
{
POP ESI
TEST BYTE PTR DS:[0x561616], 1
JNZ SHORT q1
ADD ESI, ECX
q1: MOV ECX, 0x55C4C20
MOV BYTE PTR DS:[0x561616], 0
PUSH ESI
}
}

have you fix HP show and damg show in main.exe ? mauro07
thank you
 
Junior Spellweaver
Joined
Mar 5, 2009
Messages
171
Reaction score
71
Code:
void __declspec(naked) Extern_JewelsBEEPSound()
{
	IsJewel = FALSE;

	__asm {
		MOV EAX, DWORD PTR SS:[EBP-4]
		MOV dItem, EAX
	}

	if(dItem == ITEMGET(14,14) || dItem == ITEMGET(14,101)){ //Jewel of ^^
		IsJewel = TRUE;
	}

	if(IsJewel == TRUE){
		__asm {
			MOV EDX, 0x005C17EF
			JMP EDX
		}
	}

	__asm {
		MOV EDX, 0x005C17CB
		JMP EDX
	}
}

Jewels Sound... for 1.03K 0x005C17C2 <-Start Here

NOT TESTED :) xD
 
Last edited:
Joined
Jun 5, 2010
Messages
3
Reaction score
0
Young here continues giving error

the problem is in the function

void InitModel(int ItemID, char *ModelName, char *Folder, char *Form)

because the function Writejmp SetNop worked and in others not only worked in PatchNewModel

Only the error when void CustomBmdInit() be enabled

Below is a photo for more details

Young - New Jewels for 1.03k Main (1.03.11) - RaGEZONE Forums

:)
 
Junior Spellweaver
Joined
Jul 30, 2005
Messages
176
Reaction score
110
Young here continues giving error

the problem is in the function

void InitModel(int ItemID, char *ModelName, char *Folder, char *Form)
...
No problem with this function. You have try the VirtualProtect ? Try to compile it in Release, not Debug ! If don't work, start a new DLL project or kill yourself... :lol:

with all this new sources, we can add other items...
No poop, Sherlock ! :blink: :D:
 
Junior Spellweaver
Joined
Jul 30, 2005
Messages
176
Reaction score
110
so what gonna be the id's of this new jewels in items? they should have id's in items.txt

Item.txt:
Code:
14
...
	180	-1	0	1	1	1	1	0	"Jewel of Exelent"			0	0
	181	-1	0	1	1	1	1	0	"Jewel of Divinity"			0	0
	182	-1	0	1	1	1	1	0	"Jewel of Luck"				0	0
	183	-1	0	1	1	1	1	0	"Jewel of Assembly"			0	0
	184	-1	0	1	1	1	1	0	"Jewel of Skill"			0	0
end

If you use and like my sources, please use the Like button ;)
 
Experienced Elementalist
Joined
Jul 26, 2004
Messages
218
Reaction score
7
Item.txt:
Code:
14
...
	180	-1	0	1	1	1	1	0	"Jewel of Exelent"			0	0
	181	-1	0	1	1	1	1	0	"Jewel of Divinity"			0	0
	182	-1	0	1	1	1	1	0	"Jewel of Luck"				0	0
	183	-1	0	1	1	1	1	0	"Jewel of Assembly"			0	0
	184	-1	0	1	1	1	1	0	"Jewel of Skill"			0	0
end

If you use and like my sources, please use the Like button ;)

thanks bro i will try this now:thumbup:
 
Newbie Spellweaver
Joined
Mar 12, 2006
Messages
59
Reaction score
96
@Young:

You helped me a lot with your researches and code, so I decided share some of my researches (regarding your project) too...

This function, at offset 0x5C16D2 (1.03K JPN) is the responsible for playing the sound of the item on drop.

Code:
int __cdecl sub_5C16D2(int a1, int a2, int a3, int a4)	// Play sound
{
  double v4; // st7@89
  int v6; // [sp+4h] [bp-58h]@61
  int v7; // [sp+10h] [bp-4Ch]@44
  signed int v8; // [sp+14h] [bp-48h]@39
  signed int v9; // [sp+18h] [bp-44h]@34
  int v10; // [sp+20h] [bp-3Ch]@89
  int v11; // [sp+24h] [bp-38h]@89
  float v12; // [sp+28h] [bp-34h]@89
  int v13; // [sp+2Ch] [bp-30h]@89
  int v14; // [sp+30h] [bp-2Ch]@89
  int v15; // [sp+34h] [bp-28h]@89
  int v16; // [sp+38h] [bp-24h]@89
  int v17; // [sp+3Ch] [bp-20h]@89
  int v18; // [sp+40h] [bp-1Ch]@89
  int v19; // [sp+44h] [bp-18h]@89
  int v20; // [sp+48h] [bp-14h]@32
  int v21; // [sp+4Ch] [bp-10h]@5
  float v22; // [sp+50h] [bp-Ch]@16
  int v23; // [sp+54h] [bp-8h]@1
  int v24; // [sp+58h] [bp-4h]@1

  v24 = sub_5093D0(a2);
  v23 = a1 + 2;
  *(_WORD *)(a1 + 2) = v24;
  if ( v24 == 7183 )
  {
    *(_DWORD *)(v23 + 2) = *(_BYTE *)(a2 + 4) + (*(_BYTE *)(a2 + 2) << 8) + (*(_BYTE *)(a2 + 1) << 16);
    *(_BYTE *)(v23 + 22) = 0;
    *(_BYTE *)(v23 + 23) = 0;
    if ( a4 )
      sub_64DB05(31, 0, 0);		// Money Drop
  }
  else
  {
    *(_DWORD *)(v23 + 2) = *(_BYTE *)(a2 + 1);
    *(_BYTE *)(v23 + 22) = *(_BYTE *)(a2 + 2);
    *(_BYTE *)(v23 + 23) = *(_BYTE *)(a2 + 3);
    *(_BYTE *)(v23 + 24) = *(_BYTE *)(a2 + 4);
    *(_BYTE *)(v23 + 65) = 0;
    LOBYTE(v21) = 16 * (*(_BYTE *)(a2 + 5) & 8) >> 7;
    *(_BYTE *)(v23 + 65) = v21 != 0;
    if ( a4 )
    {
      if ( v24 != 7181 && v24 != 7182 && v24 != 7184 && v24 != 6159 && v24 != 7190 && v24 != 7199 )
      {
        if ( v24 == 7209 )
          sub_64DB05(721, a1 + 96, 0);	// GemStone Drop
        else
          sub_64DB05(30, a1 + 96, 0);	// Item Drop
      }
      else
      {
        sub_64DB05(69, a1 + 96, 0);	// Jewels Drop
      }
    }
  }

As you can see, the function at 64DB05 is the responsible for playing the Sound,the first arg is the SoundId, loaded previously, I left commented the sounds the main plays.

Thanks a lot for sharing the sources, If you want anything just contact me!

cya ;D
 
Junior Spellweaver
Joined
Jul 30, 2005
Messages
176
Reaction score
110
@Young:

You helped me a lot with your researches and code, so I decided share some of my researches (regarding your project) too...

This function, at offset 0x5C16D2 (1.03K JPN)...

I'm glad to help and I really appreciate the thanks. Thank for the offset and the reverse engineering of the function. I will release an update soon. :thumbup:

Ps.: OMG ! I can't believe that you are working in reverse engineering of Main functions. It's crazy, dude !!! Good luck ! :D:
 
Newbie Spellweaver
Joined
Mar 12, 2006
Messages
59
Reaction score
96
No no dude, this is the crazy IDA decompilation using the Hex-Rays analyzer...

It's not my work, I just use it in order to help me searching the things, its much easier searching for item codes or functions using this pseudo-C++ compilation ^^

If you don't have the decompiler, I can send you the full main 1.03k decompiled by IDA, it may help you with your work, just tell me if you want

cya.
 
Junior Spellweaver
Joined
Sep 3, 2008
Messages
146
Reaction score
75
No no dude, this is the crazy IDA decompilation using the Hex-Rays analyzer...

It's not my work, I just use it in order to help me searching the things, its much easier searching for item codes or functions using this pseudo-C++ compilation ^^

If you don't have the decompiler, I can send you the full main 1.03k decompiled by IDA, it may help you with your work, just tell me if you want

cya.

Hi marin. Can u share any information about Shine Effect?(Wings)? Thanks ;)
 
Joined
Oct 29, 2007
Messages
1,267
Reaction score
1,284
yes!, can you please share any information about Shine Effect, but not only of: wings, of some items how: Flamberge, Sword Bracker and other items of: Season 4.?

I have only this about Effects:

Code:
void gObjLoadItemImage() //Decompilation from 1.03h
{
	LoadItemBmp_MainFunction();

	int i = 45;

	/*for(; i < 53; i++)
	{
		if(i == 47 || i == 48) continue;

		if(i == 46 || i == 48 || i == 50 || i == 53) continue; //remove

		LoadSkin(ITEMID(7,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,TRUE);
	}

	for(i = 45; i < 53; i++)
	{
		if(i == 46 || i == 48 || i == 50 || i == 53) continue; //remove

		LoadSkin(ITEMID(8,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
		LoadSkin(ITEMID(9,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
		LoadSkin(ITEMID(10,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
		LoadSkin(ITEMID(11,0)+i,"Player\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
	}*/

	LoadSkin(ITEMID(0,26),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
	LoadSkin(ITEMID(0,27),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
	//LoadSkin(ITEMID(0,28),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);

	//LoadSkin(ITEMID(2,16),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);
	//LoadSkin(ITEMID(2,17),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);

	//LoadSkin(ITEMID(4,23),"Item\\",GL_REPEAT,GL_NEAREST,GL_TRUE);

Code:
void CGlowEffect::NewItemGlow_Part1(int iID, float fUnk2, float fUnk3, ST_RGB *stRGB, int iUnk5)
{
	char szTemp[256];

	int iGlowID = 0;

	switch(iID)
	{
	case ITEMID(0,28):	iGlowID = 8;	break;
	case ITEMID(4,23):	iGlowID = 35;	break;
	case ITEMID(5,30):	iGlowID = 1;	break;
	case ITEMID(5,31):	iGlowID = 19;	break;
	case ITEMID(6,20):	iGlowID = 36;	break;
	case ITEMID(6,21):	iGlowID = 30;	break;
	default:
		{
			int iNewID = iID-ItemStartIndex;

			if(iNewID / 512 >= 7 && iNewID / 512 <= 11)
			{
				switch(iNewID % 512) //Item ID
				{
				case 1:
				case 48:
					iGlowID = 1;
                break;

Code:
float Formula1 = (((int)(( *(float*)0x587C650) * 0.05f )) % 16) / 4;
			float Formula2 = Formula1 * 0.25f;

			g_ItemEffect.func_5168A0(arg1, 5, 66, Value_5, 5, Value_2, Value_3, Formula2, -1 );

and this, but well :p

Code:
Func2:

void gObjSetItemEffect2(UNK0 * arg1, UNK1 * lpMsg, int iID, float arg4, int arg5, float arg6, int arg7) //Completed
{
if(iID == ITEMID(0,26)) //Flameberge
{
func_51932D(arg1, arg5, arg4, (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), 5, -1);
}
else if(iID == ITEMID(0,27)) //Sword Breaker
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(0,28)) //Rune Bastard Sword
{
func_5168A0(arg1, 2, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(5,30)) //Deadly Staff
{
func_51932D(arg1, arg5, arg4, (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1, arg7);

lpMsg->ukn3[0x94] = 1;

*(float*)(&arg1->ukn[0x48]) = 1.0f;
*(float*)(&arg1->ukn[0x4C]) = 1.0f;
*(float*)(&arg1->ukn[0x50]) = 1.0f;

func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(5,32)) //Unknown (weird but Season4.5 have it)
{
func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(6,19)) //Frost Barrier
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(6,20)) //Guardian Shield
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,49)) //Seraphim Helm
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,50)) //Divine Helm
{
func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,53)) //Unknown (weird but Season4.5 have it)
{
func_5168A0(arg1, 2, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(6,21)) //Cross Shield
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else
{
OriginalEffectFunc2(arg1, lpMsg, iID, arg4, arg5, arg6, arg7);
}
}

void gObjSetItemEffect3(UNK0 * arg1, UNK1 * lpMsg, int iID, float arg4, int arg5, float arg6, int arg7) //Completed
{
if(iID == ITEMID(0,26)) //Flameberge
{
func_51932D(arg1, arg5, arg4, (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), 5, arg7);
}
else if(iID == ITEMID(6,19)) //Frost Barrier
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,49)) //Seraphim Helm
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,53)) //Unknown (weird but Season4.5 have it)
{
func_5168A0(arg1, 2, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else if(iID == ITEMID(7,50)) //Divine Helm
{
func_5168A0(arg1, 1, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}
else
{
OriginalEffectFunc3(arg1, lpMsg, iID, arg4, arg5, arg6, arg7);
} 
}


























//Função 1
else if(iID == ITEMID(6,21)) //Cross Shield
{
glColor3f(1.0f, 1.0f, 1.0f); //OpenGL Set Color

func_5168A0(arg1, 0, 2, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);

arg1->ukn[0x94] = 1; //Unknown value (need check)

func_5168A0(arg1, 1, 70, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), -((int)(*( float*)0x587C650))%2000, -1); //Shield Glass Effect Animation
func_5168A0(arg1, 2, 66, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}

//Função 2
else if(iID == ITEMID(6,21)) //Cross Shield
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}

















































Code :


//Função 1
else if(iID == ITEMID(6,21)) //Cross Shield
{
glColor3f(1.0f, 1.0f, 1.0f); //OpenGL Set Color

func_5168A0(arg1, 0, 2, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);

arg1->ukn[0x94] = 1; //Unknown value (need check)

func_5168A0(arg1, 1, 70, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), -((int)(*( float*)0x587C650))%2000, -1); //Shield Glass Effect Animation
func_5168A0(arg1, 2, 66, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}

//Função 2
else if(iID == ITEMID(6,21)) //Cross Shield
{
func_5168A0(arg1, 0, arg5, *(float*)(&lpMsg->ukn3[0x1A8]), (int)lpMsg->ukn3[0x94], *(float*)(&lpMsg->ukn3[0x98]), *(float*)(&lpMsg->ukn3[0x9C]), *(float*)(&lpMsg->ukn3[0x0A0]), -1);
}

2oPKq - New Jewels for 1.03k Main (1.03.11) - RaGEZONE Forums


Credits: Hermex by decompilation of effects
 

Attachments

You must be registered for see attachments list
Last edited:
Junior Spellweaver
Joined
Mar 5, 2009
Messages
171
Reaction score
71
Well is not Blur or Transparency Effects.. but is a start...

Young - New Jewels for 1.03k Main (1.03.11) - RaGEZONE Forums


Code:
void __declspec(naked) Extern_AddShine()
{

	__asm {
		MOV EAX, DWORD PTR SS:[EBP+0x10]
		MOV dItem, EAX

		CMP dItem, 0x1F7B
		JE AddEffect
		CMP dItem, ITEMID(14,101)
		JE AddEffect
		CMP dItem, ITEMID(14,102)
		JE AddEffect
		CMP dItem, ITEMID(14,103)
		JE AddEffect
		CMP dItem, ITEMID(14,104)
		JE AddEffect
		CMP dItem, ITEMID(14,105)
		JE AddEffect
		CMP dItem, ITEMID(14,106)
		JE AddEffect

		JMP Continue
		
Continue:
		MOV ESI, 0x005C5D0D
		JMP ESI

AddEffect:
		MOV ESI, 0x005C5C93
		JMP ESI
		
	}
}

.-------------.

memset((int*)0x005C5C8A,0x90,9);
WriteJmp(0x005C5C8A,(DWORD)&Extern_AddShine);

0x005C4217 -> CMP DWORD PTR SS:[EBP+10],1B69 <--CHECK HERE ^^
 
Back
Top