PDA

View Full Version : |Source| Novos Bows & Crossbows Client 1.03K



Hugo
20/11/2015, 09:01 AM
Prints :
[Only registered and activated users can see links]
[Only registered and activated users can see links]

Arquivo NewBows.cpp :

DWORD IsBowItem = 0;
DWORD IsCrossItem = 0;
DWORD BowValue = 0x09C;
DWORD MaxBoneCount = 0x108;
DWORD WorldPosition = 0x0FC;
DWORD oCreateEffect = 0x00650FF0;
DWORD ReturnBowCode = 0x00699416;
DWORD BowPosition = 0x0059F77C;
DWORD NextBowPosition = 0x0059F7BB;
DWORD ReturnCrossCode = 0x006990E3;


void __declspec(naked) cBowAddSkillEffect()
{
_asm
{
mov edx,dword ptr ss:[ebp-0x8]
mov dword ptr ss:[ebp-0x14],edx
mov IsBowItem,edx
}
// ---
if( IsBowItem == ObjectId(4, 25) ) // Lightning Bow
{
_asm
{
push -1
push 0
push 0
mov dx,word ptr ss:[ebp+0x18]
push edx
mov ax,word ptr ss:[ebp+0x14]
push eax
mov ecx,dword ptr ss:[ebp+0x0C]
mov dx,word ptr ds:[ecx+0x2C]
push edx
mov eax,dword ptr ss:[ebp+0x0C]
push eax
mov ecx,dword ptr ss:[ebp-0x0C]
push ecx
mov edx,dword ptr ss:[ebp+0x0C]
add edx, BowValue
push edx
mov eax,dword ptr ss:[ebp+0x0C]
add eax, MaxBoneCount
push eax
mov ecx,dword ptr ss:[ebp+0x0C]
add ecx, WorldPosition
push ecx
push 324
call oCreateEffect
}
}
else if( IsBowItem == ObjectId(4, 26) ) // Divinity Bow
{
_asm
{
push -1
push 0
push 0
mov dx,word ptr ss:[ebp+0x18]
push edx
mov ax,word ptr ss:[ebp+0x14]
push eax
mov ecx,dword ptr ss:[ebp+0x0C]
mov dx,word ptr ds:[ecx+0x2C]
push edx
mov eax,dword ptr ss:[ebp+0x0C]
push eax
mov ecx,dword ptr ss:[ebp-0x0C]
push ecx
mov edx,dword ptr ss:[ebp+0x0C]
add edx, BowValue
push edx
mov eax,dword ptr ss:[ebp+0x0C]
add eax, MaxBoneCount
push eax
mov ecx,dword ptr ss:[ebp+0x0C]
add ecx, WorldPosition
push ecx
push 321
call oCreateEffect
}
}
else if( IsBowItem == ObjectId(4, 27) ) // Angelic Bow
{
_asm
{
push -1
push 0
push 0
mov dx,word ptr ss:[ebp+0x18]
push edx
mov ax,word ptr ss:[ebp+0x14]
push eax
mov ecx,dword ptr ss:[ebp+0x0C]
mov dx,word ptr ds:[ecx+0x2C]
push edx
mov eax,dword ptr ss:[ebp+0x0C]
push eax
mov ecx,dword ptr ss:[ebp-0x0C]
push ecx
mov edx,dword ptr ss:[ebp+0x0C]
add edx, BowValue
push edx
mov eax,dword ptr ss:[ebp+0x0C]
add eax, MaxBoneCount
push eax
mov ecx,dword ptr ss:[ebp+0x0C]
add ecx, WorldPosition
push ecx
push 297
call oCreateEffect
}
}
else if( IsBowItem == ObjectId(4, 28) ) // Thunder Bow
{
_asm
{
push -1
push 0
push 0
mov dx,word ptr ss:[ebp+0x18]
push edx
mov ax,word ptr ss:[ebp+0x14]
push eax
mov ecx,dword ptr ss:[ebp+0x0C]
mov dx,word ptr ds:[ecx+0x2C]
push edx
mov eax,dword ptr ss:[ebp+0x0C]
push eax
mov ecx,dword ptr ss:[ebp-0x0C]
push ecx
mov edx,dword ptr ss:[ebp+0x0C]
add edx, BowValue
push edx
mov eax,dword ptr ss:[ebp+0x0C]
add eax, MaxBoneCount
push eax
mov ecx,dword ptr ss:[ebp+0x0C]
add ecx, WorldPosition
push ecx
push 266
call oCreateEffect
}
}
_asm
{
jmp ReturnBowCode
}
}


void __declspec(naked) cCrossAddSkillEffect()
{
_asm
{
mov edx,dword ptr ss:[ebp-0x4]
mov dword ptr ss:[ebp-0x10],edx
mov IsCrossItem,edx
}
// ---
if(IsCrossItem == ObjectId(4,129)) // Devil Crossbow
{
_asm
{
push -1
push 0
push 0
mov ax,word ptr ss:[ebp+0x18]
push eax
mov cx,word ptr ss:[ebp+0x14]
push ecx
mov edx,dword ptr ss:[ebp+0x0C]
mov ax,word ptr ds:[edx+0x2C]
push eax
mov ecx,dword ptr ss:[ebp+0x10]
push ecx
push 0
mov edx,dword ptr ss:[ebp+0x0C]
add edx,BowValue
push edx
mov eax,dword ptr ss:[ebp+0x0C]
add eax,MaxBoneCount
push eax
mov ecx,dword ptr ss:[ebp+0x0C]
add ecx,WorldPosition
push ecx
push 321
call oCreateEffect
}
}
// ---
_asm
{
jmp ReturnCrossCode
}
}


void __declspec(naked) cBowAddInventoryPos()
{
_asm
{
mov IsBowItem, esi
}
// ---
if(IsBowItem == 0x0B5A)
{
_asm{jmp BowPosition}
}
else if(IsBowItem == ObjectId(4,25))
{
_asm{jmp BowPosition}
}
else if(IsBowItem == ObjectId(4,26))
{
_asm{jmp BowPosition}
}
else if(IsBowItem == ObjectId(4,27))
{
_asm{jmp BowPosition}
}
else if(IsBowItem == ObjectId(4,28))
{
_asm{jmp BowPosition}
}
else
{
_asm{jmp NextBowPosition}
}
}


DWORD BowAddPlayerDimension_Offset = 0x004E9A12;


void __declspec(naked) cBowAddPlayerDimension()
{
_asm
{
CMP DWORD PTR SS:[EBP+0x1C],0x0B56
JE ReturnLoad
CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,24)
JE ReturnLoad
CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,25)
JE ReturnLoad
CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,26)
JE ReturnLoad
CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,27)
JE ReturnLoad
CMP DWORD PTR SS:[EBP+0x1C],ObjectId(4,28)
JE ReturnLoad
// ---
ReturnLoad:
// ---
JMP BowAddPlayerDimension_Offset
}
}


void InitBows()
{
Utils.SetRange((LPVOID)iBowAddSkillEffect, 6, ASM::NOP);
Utils.SetJmp((LPVOID)iBowAddSkillEffect, cBowAddSkillEffect);
// ----
Utils.SetRange((LPVOID)iBowAddInventoryPos, 6, ASM::NOP);
Utils.SetJmp((LPVOID)iBowAddInventoryPos, cBowAddInventoryPos);
// ----
Utils.SetRange((LPVOID)iBowAddPlayerDimension, 7, ASM::NOP);
Utils.SetJmp((LPVOID)iBowAddPlayerDimension, cBowAddPlayerDimension);
// ----
Utils.SetRange((LPVOID)iCrossAddSkillEffect, 6, ASM::NOP);
Utils.SetJmp((LPVOID)iCrossAddSkillEffect, cCrossAddSkillEffect);
}

Offsets de Hook :

#define iBowAddSkillEffect 0x00699410
#define iBowAddInventoryPos 0x0059F774
#define iBowAddPlayerDimension 0x004E9A0B
#define iCrossAddSkillEffect 0x006990DD

Creditos :
SmileY

Main 1.03.11 (JPN)

cleniojr
02/02/2018, 02:58 AM
Isso é na sourcer do gs?

Instance
12/03/2018, 06:42 PM
Isso é na sourcer do gs?

Na parte do Main!

sombe030
03/07/2018, 12:58 PM
offset main 1.05d

sombe030
03/07/2018, 02:38 PM
me pregunto si tienen el offset para version 1.05d

Marceliin
03/07/2018, 08:18 PM
Essas offsets são de qual versão do main?
E a propósito eu acho que são do 1.03.11 do mesmo fix que tem na ragezone inter.

Agora me dizer que o criador foi o Nemesis kkkkkkkk
é uma das inúmeras coisas que você passou pra ele e ele fala que fez

Hugo
09/07/2018, 03:14 PM
no tópico onde tal código foi postado os códigos estavam com os créditos do mesmo e foi o mesmo que postou la então tive que manter os créditos, se foi você SmileY estarei colocando os devidos créditos, a versão do mesmo é para o main 1.03K (1.03.11 JPN).

laulinh2
09/11/2018, 11:30 PM
Please share Offset in main 1.05D