this works fine with me using Custom Items and WIngs
this works fine with me using Custom Items and WIngs
not works...
removing the expansion for crossbows has no effect for custom bows visual bug in inventory and some skills not works too...
skills which works for custom bows are ice arrow and multishot... do not work triple shot and penetration (no matter keep or remove crossbows expansion)...
mauro07,
using your source with little modification i tried to add a f..k..g custom bow (id=28, ObjectID = 0CAF) result in a very strange situation:
__declspec(naked) void BowsInvenPosFix(){
_asm
{
CMP DWORD PTR SS:[EBP+0x8],0x0CAE
JNZ CustomBow1
FLD DWORD PTR SS:[EBP-0x4C]
FSUB QWORD PTR DS:[0x0D24388]
FSTP DWORD PTR SS:[EBP-0x4C]
FLD DWORD PTR SS:[EBP-0x48]
FADD QWORD PTR DS:[0x0D2B820]
FSTP DWORD PTR SS:[EBP-0x48]
FLD DWORD PTR DS:[0x0D2AF5C]
FSTP DWORD PTR DS:[0x82C6320]
FLD DWORD PTR DS:[0x0D22C08]
FSTP DWORD PTR DS:[0x82C6324]
FLD DWORD PTR DS:[0x0D24384]
FSTP DWORD PTR DS:[0x82C6328]
JMP Return
CustomBow1:
CMP DWORD PTR SS:[EBP+0x8],0x0CAF//Custom Bows Id
JNZ 0x005CA784 //X = A number for Identifier a Bow of other
FLD DWORD PTR SS:[EBP-0x4C]
FSUB QWORD PTR DS:[0x0D24388]
FSTP DWORD PTR SS:[EBP-0x4C]
FLD DWORD PTR SS:[EBP-0x48]
FADD QWORD PTR DS:[0x0D2B820]
FSTP DWORD PTR SS:[EBP-0x48]
FLD DWORD PTR DS:[0x0D2AF5C]
FSTP DWORD PTR DS:[0x82C6320]
FLD DWORD PTR DS:[0x0D22C08]
FSTP DWORD PTR DS:[0x82C6324]
FLD DWORD PTR DS:[0x0D24384]
FSTP DWORD PTR DS:[0x82C6328]
JMP Return
Return:
mov edi, 0x005CBFA4
call edi
}
}
void FixBowsHook()
{
//Hook Fix Inventory Position Bows
BYTE FixBowsPos[] = { 0xFF, 0x25, 0xBC, 0x1F, 0xD2, 0x00, 0x90, 0x90, 0x90, 0x90 };
memcpy((int*)0x005CA752,FixBowsPos,sizeof(FixBowsPos));
*(unsigned int*)0x00D21FBC = (unsigned int)BowsInvenPosFix;
}
custom bow texture ok, but all rest items rotated with 90 degrees...oo..
Last edited by aecrimch; 20-11-12 at 06:01 PM.
its main no work in widnwos 2000 sp3 -.- close
Last edited by Fire4ever; 20-11-12 at 06:22 PM.
mmm... maybe I must put more work in this.. But it's a good start, at least we can say it works the idea of rotating the position of custom bows not?
try this:
The same idea, the same offsets, only removing the newline: JMP, return the item for all cases of custom bows, and leaving only a conditional newline: JNZ Return, in the last bow you would like to add for rotation.Code:__declspec(naked) void BowsInvenPosFix(){ _asm { CMP DWORD PTR SS:[EBP+0x8],0x0CAA JNZ CustomBow1 FLD DWORD PTR SS:[EBP-0x4C] FSUB QWORD PTR DS:[0x0D24388] FSTP DWORD PTR SS:[EBP-0x4C] FLD DWORD PTR SS:[EBP-0x48] FADD QWORD PTR DS:[0x0D2B820] FSTP DWORD PTR SS:[EBP-0x48] FLD DWORD PTR DS:[0x0D2AF5C] FSTP DWORD PTR DS:[0x82C6320] FLD DWORD PTR DS:[0x0D22C08] FSTP DWORD PTR DS:[0x82C6324] FLD DWORD PTR DS:[0x0D24384] FSTP DWORD PTR DS:[0x82C6328] //JMP Return CustomBow1: CMP DWORD PTR SS:[EBP+0x8],0x0XXX//Custom Bows Id JNZ Return //X = A number for Identifier a Bow of other FLD DWORD PTR SS:[EBP-0x4C] FSUB QWORD PTR DS:[0x0D24388] FSTP DWORD PTR SS:[EBP-0x4C] FLD DWORD PTR SS:[EBP-0x48] FADD QWORD PTR DS:[0x0D2B820] FSTP DWORD PTR SS:[EBP-0x48] FLD DWORD PTR DS:[0x0D2AF5C] FSTP DWORD PTR DS:[0x82C6320] FLD DWORD PTR DS:[0x0D22C08] FSTP DWORD PTR DS:[0x82C6324] FLD DWORD PTR DS:[0x0D24384] FSTP DWORD PTR DS:[0x82C6328] //JMP Return Return: mov edi, 0x005CA6D6 call edi } } void FixBowsHook() { //Hook Fix Inventory Position Bows BYTE FixBowsPos[] = { 0xFF, 0x25, 0xBC, 0x1F, 0xD2, 0x00, 0x90, 0x90, 0x90, 0x90 }; memcpy((int*)0x005CA68C,FixBowsPos,sizeof(FixBowsPos)); *(unsigned int*)0x00D21FBC = (unsigned int)BowsInvenPosFix; }
Last edited by Kiosani; 20-11-12 at 10:00 PM.
promlem. I add new set. But texture don't load.... if i use this texture to bronze set all work. But if I add Helm(id 54 and 74) of other set items texture don't load.. I copy to data\player\HelmMale55.bmd and *.ozj but main don't load this... before this I add new sword and sword texture is working.
please help
Last edited by Wizik; 21-11-12 at 06:38 PM.
in this release first ID for set items which support texture is 84 (last ID used by WebZen is 83 - Sacred Fire -J)...
--------------------------
mauro07,
using second version of your source make client crush when press I...
dump file message:
Access violation : writing inaccessible 0xC6E025DC
Aecrimch!
Could you please share me your "LRESULT CALLBACK MouseProc(int code, WPARAM wParam, LPARAM lParam)" function, which have Zoom In + Zoom Out work on win 7 64bits!
The function, that i had, work only on win 32 bits :(
On win 7 64 bits, It catch Mouse Wheel Message wrong :-ss
Thanks you for all!!!
aecrimch thanks a lot. Now it is working
Last edited by KREATOR; 22-11-12 at 05:05 PM.
here it is:
PS: i think Brain created this and mauro07 modified, my contribution is very small...
no, since i can not test last Pinkof AH (windows 2003 server x86 general bug or just my system do not know)...LRESULT CALLBACK MouseProc(int code, WPARAM wParam, LPARAM lParam)
{
MOUSEHOOKSTRUCTEX* mhs = (MOUSEHOOKSTRUCTEX*)lParam;
HWND MuWnd = FindWindow(TEXT("MU"), NULL);
if (CAM_IsActive)
{
if(GetForegroundWindow() == MuWnd)
{
if(InitCamera == true)
{
Camera.ClipX = *Camera_ClipX;
Camera.ClipY = *Camera_ClipY;
Camera.GlClip = *Camera_GlClip;
Camera.PosZ = *Camera_PosZ;
Camera.RotY = *Camera_RotY;
Camera.RotZ = *Camera_RotZ;
Camera.Zoom = *Camera_Zoom;
Camera.ClipAUX1 = *Camera_ClipAUX1;
Camera.ClipAUX2 = *Camera_ClipAUX2;
Camera.ClipAUX3 = *Camera_ClipAUX3;
}
if(InitCamera == true)
{
if(wParam == WM_MBUTTONDOWN)
{
MoveCamera = true;
}
if(wParam == WM_MBUTTONUP)
{
MoveCamera = false;
}
if(wParam == WM_MOUSEWHEEL)
{
int direction = mhs->mouseData;
if(direction > 0)
{
if(*Camera_Zoom < 60)
{
*Camera_Zoom += 2;
}
if(*Camera_Zoom > 60)
*Camera_Zoom = 60;
}
else if(direction < 0)
{
if(*Camera_Zoom > 12)
{
*Camera_Zoom -= 2;
}
if(*Camera_Zoom < 12)
*Camera_Zoom = 12;
}
*Camera_ClipY = 2400 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_ClipX = 1190 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_GlClip = 3000 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_ClipAUX1 = 2000 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_ClipAUX2 = 2000 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_ClipAUX3 = 2000 + (abs(*Camera_PosZ - 150) * 3) + 4000;
}
else if(wParam == WM_MBUTTONDOWN)
{
MouseX = mhs->pt.x;
MouseY = mhs->pt.y;
}
else if(wParam == WM_MOUSEMOVE)
{
if(MoveCamera)
{
if(MouseX < mhs->pt.x)
{
*Camera_RotZ += 8;
if (*Camera_RotZ > 315) *Camera_RotZ = -45;
}
else if(MouseX > mhs->pt.x)
{
*Camera_RotZ -= 8;
if (*Camera_RotZ < -405) *Camera_RotZ = -45;
}
if(MouseY < mhs->pt.y)
{
if(*Camera_RotY < -45)
{
*Camera_PosZ -= 44;
*Camera_RotY += (float)2.42;
}
}
else if(MouseY > mhs->pt.y)
{
if(*Camera_RotY > -90)
{
*Camera_PosZ += 44;
*Camera_RotY -= (float)2.42;
}
}
MouseX = mhs->pt.x;
MouseY = mhs->pt.y;
*Camera_ClipY = 2400 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_ClipX = 1190 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_GlClip = 3000 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_ClipAUX1 = 2000 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_ClipAUX2 = 2000 + (abs(*Camera_PosZ - 150) * 3) + 4000;
*Camera_ClipAUX3 = 2000 + (abs(*Camera_PosZ - 150) * 3) + 4000;
}
}
}
}
}
return CallNextHookEx(MouseHook, code, wParam, lParam);
}
anyway, i recommend you DarkCrow AH (server and client side, you find source in this Forum.)