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!

[Help] Source Custom Gloves Season 6 muemu Bugs :(

Joined
May 21, 2012
Messages
708
Reaction score
301
Source Custom Gloves(RF) Season 6 someone can correct the source and share it


BattleGloves.h


Code:
#ifndef __ITEM_H__
#define __ITEM_H__


#define oBattleGlove_Load            0x0050DE38
#define oBattleGlove_Hook            0x0050DC31
#define oBattleGlove_Texture        0x0050E043


#define oBattleGloveProp4_Hook        0x005CD419
#define oBattleGloveProp4_Allowed    0x005CD422
#define oBattleGloveProp4_Return    0x005CD454


#define oBattleGloveProp5_Hook        0x005CEFE7
#define oBattleGloveProp5_Jump        0x005CF01C
#define oBattleGloveProp5_Return    0x005CEFFB


#define oBattleGloveGlow_Hook        0x005F91C2


class cRFItem
{
public:
    void Load();
    // ----
    static void BattleGloveLoad();
    // ---
    static void BattleGloveAssoc();
    static void BattleGloveTexture();
    // ----
    static void BattleGloveProp4(); // Inventory Position
    static void BattleGloveProp5(); // Inventory Rotation
                                    // ----
    static void BattleGloveGlow();
    static void AddInventoryPos();
    // ----
};


extern cRFItem gRFItem; // 


#endif


BattleGloves.cpp


Code:
#include "Stdafx.h"
#include "BattleGloves.h"
//#include "TMemory.h"
//#include "ItemAsm.h"
//#include "Import.h"
#include "Util.h"
#include "Defines.h"
#include "Item.h"


#include "CustomWeapons.h"
#include "CustomGloves.h"


cRFItem gRFItem;


void __declspec ( naked ) cRFItem::BattleGloveLoad() {
    static DWORD BattleGloveModel   = 0x00614D10;
    static DWORD BattleGloveReturn  = 0x0050DE83;
    // ----
    static PCHAR DragonRoarModel    = "Sword45";
    static PCHAR DragonRoarLeft     = "Sword45L";
    static PCHAR DragonRoarRight    = "Sword45R";
    // ----
    LoadItemModel(GET_ITEM_MODEL ( 0, 41 ),"Custom\\Item\\RFGloves\\","Sword41",-1);
    LoadItemModel(0x610,"Custom\\Item\\RFGloves\\","Sword41L",-1);
    LoadItemModel(0x611,"Custom\\Item\\RFGloves\\","Sword41R",-1);
    _asm {
        PUSH -1
        PUSH 0x00D28B88
        PUSH 0x00D28B90
        PUSH 0x4B6
        CALL BattleGloveModel
        ADD ESP, 0x10
        PUSH -1
        PUSH 0x00D28B9C
        PUSH 0x00D28BA8
        PUSH 0x268
        CALL BattleGloveModel
        ADD ESP, 0x10
        PUSH -1
        PUSH 0x00D28BB4
        PUSH 0x00D28BC0
        PUSH 0x269
        CALL BattleGloveModel
        ADD ESP, 0x10
        // ----
        JMP BattleGloveReturn
    }


    
    
}


#define sub_50D810_Addr        ((int(__thiscall*)(int a1, int a2, int a3, int a4)) 0x50D810)
#define sub_512D50_Addr        ((void*(__thiscall*)(void* a1)) 0x512D50)
#define sub_513C60_Addr        ((char*(__thiscall*)(char *This, void *a2, int a3)) 0x513C60)
#define sub_5135F0_Addr        ((char*(__thiscall*)(DWORD *This, int a2, int a3)) 0x5135F0)
#define sub_512D60_Addr        ((void(*)()) 0x512D60)




void GlovesAssoc(char *This)
{
    sub_50D810_Addr((int)(This + 92), 1203, 610, 611);
    void* v2 = sub_512D50_Addr(This + 92);
    char* v3 = sub_513C60_Addr(This, v2, (int)(This + 92));
    sub_5135F0_Addr((DWORD *)This + 15, (int)This, (int)v3);
    sub_512D60_Addr();
    // ----
    sub_50D810_Addr((int)(This + 92), 1204, 612, 613);
    v2 = sub_512D50_Addr(This + 92);
    v3 = sub_513C60_Addr(This, v2, (int)(This + 92));
    sub_5135F0_Addr((DWORD *)This + 15, (int)This, (int)v3);
    sub_512D60_Addr();
    // ----
    sub_50D810_Addr((int)(This + 92), 1205, 614, 615);
    v2 = sub_512D50_Addr(This + 92);
    v3 = sub_513C60_Addr(This, v2, (int)(This + 92));
    sub_5135F0_Addr((DWORD *)This + 15, (int)This, (int)v3);
    sub_512D60_Addr();
    // ----
    sub_50D810_Addr((int)(This + 92), 1206, 616, 617);
    v2 = sub_512D50_Addr(This + 92);
    v3 = sub_513C60_Addr(This, v2, (int)(This + 92));
    sub_5135F0_Addr((DWORD *)This + 15, (int)This, (int)v3);
    sub_512D60_Addr();
    // ----
    sub_50D810_Addr((int)(This + 92), 1211, 610, 611);
    v2 = sub_512D50_Addr(This + 92);
    v3 = sub_513C60_Addr(This, v2, (int)(This + 92));
    sub_5135F0_Addr((DWORD *)This + 15, (int)This, (int)v3);
    sub_512D60_Addr();
    // ----
    gCustomGloves.AssocGloves(This);
}


void __declspec ( naked ) cRFItem::BattleGloveAssoc() {
    static DWORD BattleGloveCall1   = 0x0050D810;
    static DWORD BattleGloveCall2   = 0x00512D50;
    static DWORD BattleGloveCall3   = 0x00513C60;
    static DWORD BattleGloveCall4   = 0x005135F0;
    static DWORD BattleGloveCall5   = 0x00512D60;
    // ----
    static DWORD BattleGloveJump    = 0x0050DCB0;
    // ----
    _asm {
        PUSH 0x269                                        //; /Arg3 = 269
        PUSH 0x268                                        //; |Arg2 = 268
        PUSH 0x4B6                                        //; |Arg1 = 4B6
        MOV ECX, DWORD PTR SS:[EBP-0x9C]                  //; |
        ADD ECX, 0x5C                                     //; |
        CALL BattleGloveCall1                             //; \Main.0050D810
        MOV EAX, DWORD PTR SS:[EBP-0x9C]
        ADD EAX, 0x5C
        PUSH EAX                                          //; /Arg2 => ARG.ECX+5C
        MOV ECX, DWORD PTR SS:[EBP-0x9C]                  //; |
        ADD ECX, 0x5C                                     //; |
        CALL BattleGloveCall2                             //; |
        PUSH EAX                                          //; |Arg1
        LEA ECX, [EBP-0x70]                               //; |
        CALL BattleGloveCall3                             //; \Main.00513C60
        MOV DWORD PTR SS:[EBP-0xB8], EAX
        MOV ECX, DWORD PTR SS:[EBP-0xB8]
        MOV DWORD PTR SS:[EBP-0xBC], ECX
        MOV DWORD PTR SS:[EBP-0x4], 3   // -> Battle Glove Number
        MOV EDX, DWORD PTR SS:[EBP-0xBC]
        PUSH EDX                                          //; /Arg2 => [LOCAL.46]
        LEA EAX, [EBP-0x7C]                               //; |
        PUSH EAX                                          //; |Arg1 => OFFSET LOCAL.31
        MOV ECX, DWORD PTR SS:[EBP-0x9C]                  //; |
        ADD ECX, 0x3C                                     //; |
        CALL BattleGloveCall4                             //; \Main.005135F0
        MOV DWORD PTR SS:[EBP-0x4], -1
        LEA ECX, [EBP-0x70]
        CALL BattleGloveCall5                             //; [Main.00512D60
        // ----
        PUSH 0x611                                        //; /Arg3 = 611 -> Right
        PUSH 0x610                                        //; |Arg2 = 610 -> Left
        PUSH 0x4BC                                        //; |Arg1 = 4BF -> ITEM2(0,41)
        MOV ECX, DWORD PTR SS:[EBP-0x9C]                  //; |
        ADD ECX, 0x5C                                     //; |
        CALL BattleGloveCall1                             //; \Main.0050D810
        MOV EAX, DWORD PTR SS:[EBP-0x9C]
        ADD EAX, 0x5C
        PUSH EAX
        MOV ECX, DWORD PTR SS:[EBP-0x9C]
        ADD ECX, 0x5C
        CALL BattleGloveCall2
        PUSH EAX
        LEA ECX, [EBP-0x70]
        CALL BattleGloveCall3
        MOV DWORD PTR SS:[EBP-0xB8], EAX
        MOV ECX, DWORD PTR SS:[EBP-0xB8]
        MOV DWORD PTR SS:[EBP-0xBC], ECX
        MOV DWORD PTR SS:[EBP-0x4], 5   // -> Battle Glove Number
        MOV EDX, DWORD PTR SS:[EBP-0xBC]
        PUSH EDX
        LEA EAX, [EBP-0x7C]
        PUSH EAX
        MOV ECX, DWORD PTR SS:[EBP-0x9C]
        ADD ECX, 0x3C
        CALL BattleGloveCall4
        MOV DWORD PTR SS:[EBP-0x4], -1
        LEA ECX, [EBP-0x70]
        CALL BattleGloveCall5
        // ----
        JMP BattleGloveJump
    }
}


void __declspec ( naked ) cRFItem::BattleGloveTexture() {
    static DWORD BattleGloveTexCall = 0x00614710;
    static DWORD BattleGloveTexJump = 0x0050E09D;
    // ----
    LoadItemTexture(GET_ITEM_MODEL ( 0, 41 ),"Custom\\Item\\RFGloves\\","Sword41",-1);
    LoadItemTexture(0x610,"Custom\\Item\\RFGloves\\","Sword41L",-1);
    LoadItemTexture(0x611,"Custom\\Item\\RFGloves\\","Sword41R",-1);
    _asm {
        PUSH 1
        PUSH GL_NEAREST
        PUSH GL_REPEAT
        PUSH 0x00D28CC8
        PUSH 0x4B6
        CALL BattleGloveTexCall
        ADD ESP, 0x14
        PUSH 1
        PUSH GL_NEAREST
        PUSH GL_REPEAT
        PUSH 0x00D28CD0
        PUSH 0x268
        CALL BattleGloveTexCall
        ADD ESP, 0x14
        PUSH 1
        PUSH GL_NEAREST
        PUSH GL_REPEAT
        PUSH 0x00D28CD8
        PUSH 0x269
        CALL BattleGloveTexCall
        ADD ESP, 0x14
        // ----
        JMP BattleGloveTexJump
    }
}


void __declspec ( naked ) cRFItem::BattleGloveProp4() {
    static DWORD BattleGloveProp4_Return    = 0x005CD454;
    static DWORD BattleGloveProp4_Jump      = 0x005CD491;
    // ----
    _asm {
        CMP DWORD PTR SS:[EBP+0x8], GET_ITEM_MODEL ( 0, 41 )
        JNZ BattleGloveProp4_Label1
        FLD DWORD PTR SS:[EBP-0x4C]
        FSUB QWORD PTR DS:[0x0D27CA8]                     //FLOAT 0.004999999888241291
        FSTP DWORD PTR SS:[EBP-0x4C]
        FLD DWORD PTR SS:[EBP-0x48]
        FADD QWORD PTR DS:[0x0D254B8]                     //FLOAT 0.01499999966472387
        FSTP DWORD PTR SS:[EBP-0x48]
        FLDZ
        FSTP DWORD PTR DS:[0x82C6320]                     //FLOAT 0.0
        FLDZ
        FSTP DWORD PTR DS:[0x82C6324]                     //FLOAT 0.0
        FLDZ
        FSTP DWORD PTR DS:[0x82C6328]                     //FLOAT 0.0
        JMP BattleGloveProp4_Jump
        // ----
        BattleGloveProp4_Label1:
        // ----
        CMP DWORD PTR SS : [EBP + 0x8], GET_ITEM_MODEL ( 0, 41 )
        JNZ BattleGloveProp4_LabelReturn
        FLD DWORD PTR SS: [EBP - 0x4C]
        FSUB QWORD PTR DS: [0x0D27CA8]                    //FLOAT 0.004999999888241291
        FSTP DWORD PTR SS: [EBP - 0x4C]
        FLD DWORD PTR SS: [EBP - 0x48]
        FADD QWORD PTR DS: [0x0D254B8]                    //FLOAT 0.01499999966472387
        FSTP DWORD PTR SS: [EBP - 0x48]
        FLDZ
        FSTP DWORD PTR DS: [0x82C6320]                    //FLOAT 0.0
        FLDZ
        FSTP DWORD PTR DS: [0x82C6324]                    //FLOAT 0.0
        FLDZ
        FSTP DWORD PTR DS: [0x82C6328]                    //FLOAT 0.0
        JMP BattleGloveProp4_Jump
        // ----
        BattleGloveProp4_LabelReturn:
        // ----
        JMP BattleGloveProp4_Return
    }
}


DWORD IsGlovesItem = 0;
DWORD GlovesPosition = 0x005CD422; // 1.04D ENG
DWORD NextGlovesPosition = 0x005CD454; // 1.04D ENG


void __declspec(naked) cGlovesAddInventoryPos()
{
    _asm
    {


        mov ecx, dword ptr ss : [ebp + 0x8]
            mov dword ptr ss : [ebp + 0x8], ecx
            mov IsGlovesItem, ecx
    }
    // ---
    //console.Log("","duck [%x]",IsGlovesItem);
    if (IsGlovesItem == 0x04B6)
    {
        _asm{jmp GlovesPosition}
    }
    else if (IsGlovesItem >= GET_ITEM_MODEL(0, 41) && IsGlovesItem <= GET_ITEM_MODEL(0, 50))
    {
        _asm{jmp GlovesPosition}
    }
    else
    {
        _asm{jmp NextGlovesPosition}
    }
}


void __declspec ( naked ) cRFItem::BattleGloveProp5() { // Масштаб
    static DWORD BattleGloveProp5_Return    = 0x005CEFFB;
    static DWORD BattleGloveProp5_Jump      = 0x005CF01C;
    // ----
    static float a1 = 0.00480000;
    //a1 = GetPrivateProfileFloat("Custom", "a1", 0, "./Settings.ini");
    _asm {
        CMP DWORD PTR SS:[EBP+0x8], GET_ITEM_MODEL ( 0, 35 )
        JNZ NextBattleGlove1
        FLD DWORD PTR DS: [0x0D2C618]                       //FLOAT 0.003000000
        FSTP DWORD PTR SS: [EBP - 0x2C]
        JMP BattleGloveProp5_Jump
        // ----
        NextBattleGlove1:
        // ----
        CMP DWORD PTR SS: [EBP + 0x8], GET_ITEM_MODEL ( 0, 41 )
        JNZ ReturnBattleGlove_Load
        FLD DWORD PTR DS:[a1]                       //FLOAT 0.003800000
        FSTP DWORD PTR SS: [EBP - 0x2C]
        JMP BattleGloveProp5_Jump
        // ----
        ReturnBattleGlove_Load:
        // ----
        JMP BattleGloveProp5_Return
    }
}


static BOOL bBattleGlovesGlow_Switcher;


void __declspec ( naked ) cRFItem::BattleGloveGlow() {
    static DWORD dwBattleGlovesGlow_Pointer;
    static DWORD dwBattleGlovesGlow_Buffer;
    static DWORD dwBattleGlovesNewGlow_Buffer;
    static DWORD dwBattleGlovesGlow_Jump = 0x005F94E8;
    // ----
    bBattleGlovesGlow_Switcher = FALSE;
    // ----
    _asm {
        MOV dwBattleGlovesGlow_Pointer, EAX
    }


    // ----
    if ( dwBattleGlovesGlow_Pointer == GET_ITEM_MODEL ( 0, 35 ) ) {
        bBattleGlovesGlow_Switcher = TRUE;
    }
    else if ( gCustomGloves.CheckGloves(dwBattleGlovesGlow_Pointer-ITEM_BASE_MODEL)/*dwBattleGlovesGlow_Pointer == GET_ITEM_MODEL ( 0, 41 )*/ ) {
        bBattleGlovesGlow_Switcher = FALSE;
        // ----
        _asm {
            MOV DWORD PTR SS:[EBP-0x4], 0x2C
            JMP dwBattleGlovesGlow_Jump
        }
    }


    // ----
    if ( bBattleGlovesGlow_Switcher == TRUE ) {
        _asm {
            MOV dwBattleGlovesGlow_Buffer, 0x005F91C9
            JMP dwBattleGlovesGlow_Buffer
        }
    }
    else {
        _asm {
            MOV dwBattleGlovesGlow_Buffer, 0x005F91D5
            JMP dwBattleGlovesGlow_Buffer
        }
    }
}


__declspec(naked) void cRFItem::AddInventoryPos() // OK
{
    static DWORD IsRFItem = 0;
    static DWORD RFPosition = 0x005CD084; // 1.04D ENG
    static DWORD NextRFPosition = 0x005CD086; // 1.04D ENG
    //
    _asm {
        mov ecx, dword ptr ss : [ebp + 0x8]
        mov dword ptr ss : [ebp + 0x8], ecx
        mov IsRFItem, ecx
    }


    // ---
    if ( IsRFItem == 0x04B3 ) {
        _asm {jmp RFPosition}
    }
    else if ( IsRFItem == GET_ITEM_MODEL ( 0, 41 ) ) {
        _asm {jmp RFPosition}
    }
    else {
        _asm {jmp NextRFPosition}
    }
}


void cRFItem::Load() {
    int LoadGloves = GetPrivateProfileInt("Other","CheckRFGloves",0,".\\Data\\Custom\\Settings.ini");


    if (LoadGloves != 1)
    {
        return;
    }


    //SetRange (oBattleGlove_Load, 75, ASM::NOP );
    //SetOp(oBattleGlove_Load, &this->BattleGloveLoad, ASM::JMP);
    // ----




   // SetRange (oBattleGlove_Hook, 127, ASM::NOP );
    //SetOp(oBattleGlove_Hook, &this->BattleGloveAssoc, ASM::JMP);
    SetCompleteHook(0xE8,0x50D840+0xC5,&GlovesAssoc);


 //   // ----
   // SetRange (oBattleGlove_Texture, 90, ASM::NOP );
    //SetOp(oBattleGlove_Texture, &this->BattleGloveTexture, ASM::JMP);
 //   // ----
    //SetRange (oBattleGloveProp4_Hook, 59, ASM::NOP );
    //SetOp(oBattleGloveProp4_Hook, &this->BattleGloveProp4, ASM::JMP);// -> Inventory Position
    //SetRange(oBattleGloveProp4_Hook, 6, ASM::NOP);
    //SetJmp((LPVOID)iBowAddInventoryPos, cBowAddInventoryPos);
    //SetOp(oBattleGloveProp4_Hook, &cGlovesAddInventoryPos, ASM::JMP);
 //   // ----
   // SetRange (oBattleGloveProp5_Hook, 20, ASM::NOP );
    //SetOp(oBattleGloveProp5_Hook, &this->BattleGloveProp5, ASM::JMP); // -> Inventory Rotation
 //   // ----
    SetRange (oBattleGloveGlow_Hook, 7, ASM::NOP );
    SetOp(oBattleGloveGlow_Hook, &this->BattleGloveGlow, ASM::JMP);


    /*SetDword(0x005765B4+1,0x4BC);
    SetDword(0x00576B69+2,0x4BC);
    SetDword(0x00578A46+1,0x4BC);
    SetDword(0x005CD419+3,0x4BC);
    SetDword(0x005CEFE7+3,0x4BC);
    SetDword(0x005F91C2+1,0x4BC);
    SetDword(0x00607503+1,0x4BC);
    SetDword(0x00608D4C+3,0x4BC);
    SetDword(0x006095ED+3,0x4BC);
    SetDword(0x006105D6+1,0x4BC);*/


    //SetRange (0x005CD07D, 7, ASM::NOP );
    //SetOp(0x005CD07D, &this->AddInventoryPos, ASM::JMP);
}


CustomGloves.h


Code:
#pragma once


#define MAX_CUSTOM_GLOVES    100


struct CUSTOM_RF_GLOVES
{
    int Index;
    int ItemIndex;
    char ModelName[32];
    int TextureLeftIndex;
    char TextureLeftName[32];
    int TextureRightIndex;
    char TextureRightName[32];
};


class cCustomGloves
{
public:
    cCustomGloves();
    virtual ~cCustomGloves();
    void Init();
    void Load(CUSTOM_RF_GLOVES* info);
    void SetInfo(CUSTOM_RF_GLOVES info);
    CUSTOM_RF_GLOVES* GetInfoByID(int index);
    void AssocGloves(char* This);
    bool CheckGloves(int ItemID);
public:
    CUSTOM_RF_GLOVES m_CustomGlovesInfo[MAX_CUSTOM_GLOVES];
}; extern cCustomGloves gCustomGloves;


CustomGloves.cpp


Code:
#include "stdafx.h"
#include "CustomGloves.h"
#include "NEWConsole.h"
#include "Item.h"


cCustomGloves gCustomGloves;


cCustomGloves::cCustomGloves() // OK
{
    this->Init();
}


cCustomGloves::~cCustomGloves() // OK
{


}


void cCustomGloves::Init() // OK
{
    for(int n=0;n < MAX_CUSTOM_GLOVES;n++)
    {
        this->m_CustomGlovesInfo[n].Index = -1;
    }
}


void cCustomGloves::Load(CUSTOM_RF_GLOVES* info) // OK
{
    for(int n=0;n < MAX_CUSTOM_GLOVES;n++)
    {
        this->SetInfo(info[n]);
    }
}


void cCustomGloves::SetInfo(CUSTOM_RF_GLOVES info) // OK
{
    if(info.Index < 0 || info.Index >= MAX_CUSTOM_GLOVES)
    {
        return;
    }


    this->m_CustomGlovesInfo[info.Index] = info;
}


CUSTOM_RF_GLOVES* cCustomGloves::GetInfoByID(int index)
{
    for (int i=0;i<MAX_CUSTOM_GLOVES; i++)
    {
        if (this->m_CustomGlovesInfo[i].Index == -1)
        {
            continue;
        }


        if (i == index)
        {
            return &this->m_CustomGlovesInfo[i];
        }
    }


    return 0;
}


#define sub_50D810_Addr        ((int(__thiscall*)(int a1, int a2, int a3, int a4)) 0x50D810)
#define sub_512D50_Addr        ((void*(__thiscall*)(void* a1)) 0x512D50)
#define sub_513C60_Addr        ((char*(__thiscall*)(char *This, void *a2, int a3)) 0x513C60)
#define sub_5135F0_Addr        ((char*(__thiscall*)(DWORD *This, int a2, int a3)) 0x5135F0)
#define sub_512D60_Addr        ((void(*)()) 0x512D60)


void cCustomGloves::AssocGloves(char* This)
{
    for (int i=0;i<MAX_CUSTOM_GLOVES; i++)
    {
        if (this->m_CustomGlovesInfo[i].Index == -1)
        {
            continue;
        }


        //LoadItemModel(0x4BC,"Custom\\Item\\RFGloves\\","Sword41",-1);
        //LoadItemModel(0x610,"Custom\\Item\\RFGloves\\","Sword41L",-1);
        //LoadItemModel(0x611,"Custom\\Item\\RFGloves\\","Sword41R",-1);


        //LoadItemModel(this->m_CustomGlovesInfo[i].ItemIndex+ITEM_BASE_MODEL,"Custom\\Item\\RFGloves\\",this->m_CustomGlovesInfo[i].ModelName,-1);
        //LoadItemModel(this->m_CustomGlovesInfo[i].TextureLeftIndex,"Custom\\Item\\RFGloves\\",this->m_CustomGlovesInfo[i].TextureLeftName,-1);
        //LoadItemModel(this->m_CustomGlovesInfo[i].TextureRightIndex,"Custom\\Item\\RFGloves\\",this->m_CustomGlovesInfo[i].TextureRightName,-1);


        //LoadItemTexture(this->m_CustomGlovesInfo[i].ItemIndex+ITEM_BASE_MODEL,"Custom\\Item\\RFGloves\\",this->m_CustomGlovesInfo[i].ModelName,-1);
        //LoadItemTexture(this->m_CustomGlovesInfo[i].TextureLeftIndex,"Custom\\Item\\RFGloves\\",this->m_CustomGlovesInfo[i].TextureLeftName,-1);
        //LoadItemTexture(this->m_CustomGlovesInfo[i].TextureRightIndex,"Custom\\Item\\RFGloves\\",this->m_CustomGlovesInfo[i].TextureRightName,-1);


        sub_50D810_Addr((int)(This + 92), this->m_CustomGlovesInfo[i].ItemIndex+ITEM_BASE_MODEL, this->m_CustomGlovesInfo[i].TextureLeftIndex, this->m_CustomGlovesInfo[i].TextureRightIndex);
        void* v2 = sub_512D50_Addr(This + 92);
        char* v3 = sub_513C60_Addr(This, v2, (int)(This + 92));
        sub_5135F0_Addr((DWORD *)This + 15, (int)This, (int)v3);
        sub_512D60_Addr();
    }
}




bool cCustomGloves::CheckGloves(int ItemID)
{
    for (int i=0;i<MAX_CUSTOM_GLOVES; i++)
    {
        if (this->m_CustomGlovesInfo[i].Index == -1)
        {
            continue;
        }


        if (ItemID == this->m_CustomGlovesInfo[i].ItemIndex)
        {
            return true;
        }
    }
    return false;
}






Link Download:
 
Skilled Illusionist
Joined
Jun 22, 2017
Messages
363
Reaction score
561
Code:
__declspec(naked) void InitRFGloves()
{
    static DWORD Address1 = 0x0050D810;
    static DWORD Address2 = 0x00512D50;
    static DWORD Address3 = 0x00513C60;
    static DWORD Address4 = 0x005135F0;
    static DWORD Address5 = 0x00512D60;
    static DWORD Address6 = 0x0050DCB0;

    _asm 
    {
  //Item (0, 35)
  PUSH 0x269                                        // Right
  PUSH 0x268                                        // Left
  PUSH 0x4B6                                        
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]             
  ADD ECX, 0x5C                                    
  CALL Address1
  MOV EAX, DWORD PTR SS : [EBP - 0x9C]
  ADD EAX, 0x5C
  PUSH EAX                                         
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]             
  ADD ECX, 0x5C                                    
  CALL Address2
  PUSH EAX                                         
  LEA ECX, [EBP - 0x70]                            
  CALL Address3
  MOV DWORD PTR SS : [EBP - 0xB8], EAX
  MOV ECX, DWORD PTR SS : [EBP - 0xB8]
  MOV DWORD PTR SS : [EBP - 0xBC], ECX
  MOV DWORD PTR SS : [EBP - 0x4], 3   //Number++
  MOV EDX, DWORD PTR SS : [EBP - 0xBC]
  PUSH EDX                                          
  LEA EAX, [EBP - 0x7C]                             
  PUSH EAX                                          
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]              
  ADD ECX, 0x3C                                     
  CALL Address4
  MOV DWORD PTR SS : [EBP - 0x4], -1
  LEA ECX, [EBP - 0x70]
  CALL Address5

  //Bloodangel
  PUSH GET_ITEM_MODEL(0, 388)       // Right
  PUSH GET_ITEM_MODEL(0, 387)       // Left
  PUSH GET_ITEM_MODEL(0, 46)
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x5C
  CALL Address1
  MOV EAX, DWORD PTR SS : [EBP - 0x9C]
  ADD EAX, 0x5C
  PUSH EAX
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x5C
  CALL Address2
  PUSH EAX
  LEA ECX, [EBP - 0x70]
  CALL Address3
  MOV DWORD PTR SS : [EBP - 0xB8], EAX
  MOV ECX, DWORD PTR SS : [EBP - 0xB8]
  MOV DWORD PTR SS : [EBP - 0xBC], ECX
  MOV DWORD PTR SS : [EBP - 0x4], 5   //Number++
  MOV EDX, DWORD PTR SS : [EBP - 0xBC]
  PUSH EDX
  LEA EAX, [EBP - 0x7C]
  PUSH EAX
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x3C
  CALL Address4
  MOV DWORD PTR SS : [EBP - 0x4], -1
  LEA ECX, [EBP - 0x70]
  CALL Address5




  JMP Address6
    }
}

Code:
SetCompleteHook(0xE9, 0x0050DC31, &InitRFGloves);

CustomItem.txt
PHP:
     <Item    Cat="0"  Index="46"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo" />
    <Item    Cat="0"  Index="387"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo_L" />
    <Item    Cat="0"  Index="388"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo_R" />

how to rotate the item: http://forum.ragezone.com/f193/help-resize-items-model-inventory-1153044/
 
Upvote 0
Joined
May 21, 2012
Messages
708
Reaction score
301
Code:
__declspec(naked) void InitRFGloves()
{
    static DWORD Address1 = 0x0050D810;
    static DWORD Address2 = 0x00512D50;
    static DWORD Address3 = 0x00513C60;
    static DWORD Address4 = 0x005135F0;
    static DWORD Address5 = 0x00512D60;
    static DWORD Address6 = 0x0050DCB0;

    _asm 
    {
  //Item (0, 35)
  PUSH 0x269                                        // Right
  PUSH 0x268                                        // Left
  PUSH 0x4B6                                        
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]             
  ADD ECX, 0x5C                                    
  CALL Address1
  MOV EAX, DWORD PTR SS : [EBP - 0x9C]
  ADD EAX, 0x5C
  PUSH EAX                                         
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]             
  ADD ECX, 0x5C                                    
  CALL Address2
  PUSH EAX                                         
  LEA ECX, [EBP - 0x70]                            
  CALL Address3
  MOV DWORD PTR SS : [EBP - 0xB8], EAX
  MOV ECX, DWORD PTR SS : [EBP - 0xB8]
  MOV DWORD PTR SS : [EBP - 0xBC], ECX
  MOV DWORD PTR SS : [EBP - 0x4], 3   //Number++
  MOV EDX, DWORD PTR SS : [EBP - 0xBC]
  PUSH EDX                                          
  LEA EAX, [EBP - 0x7C]                             
  PUSH EAX                                          
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]              
  ADD ECX, 0x3C                                     
  CALL Address4
  MOV DWORD PTR SS : [EBP - 0x4], -1
  LEA ECX, [EBP - 0x70]
  CALL Address5

  //Bloodangel
  PUSH GET_ITEM_MODEL(0, 388)       // Right
  PUSH GET_ITEM_MODEL(0, 387)       // Left
  PUSH GET_ITEM_MODEL(0, 46)
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x5C
  CALL Address1
  MOV EAX, DWORD PTR SS : [EBP - 0x9C]
  ADD EAX, 0x5C
  PUSH EAX
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x5C
  CALL Address2
  PUSH EAX
  LEA ECX, [EBP - 0x70]
  CALL Address3
  MOV DWORD PTR SS : [EBP - 0xB8], EAX
  MOV ECX, DWORD PTR SS : [EBP - 0xB8]
  MOV DWORD PTR SS : [EBP - 0xBC], ECX
  MOV DWORD PTR SS : [EBP - 0x4], 5   //Number++
  MOV EDX, DWORD PTR SS : [EBP - 0xBC]
  PUSH EDX
  LEA EAX, [EBP - 0x7C]
  PUSH EAX
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x3C
  CALL Address4
  MOV DWORD PTR SS : [EBP - 0x4], -1
  LEA ECX, [EBP - 0x70]
  CALL Address5




  JMP Address6
    }
}

Code:
SetCompleteHook(0xE9, 0x0050DC31, &InitRFGloves);

CustomItem.txt
PHP:
     <Item    Cat="0"  Index="46"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo" />
    <Item    Cat="0"  Index="387"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo_L" />
    <Item    Cat="0"  Index="388"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo_R" />

how to rotate the item: http://forum.ragezone.com/f193/help-resize-items-model-inventory-1153044/

you can help me to add to my source I have a server and I want to support rf gloves :(
 
Upvote 0
Skilled Illusionist
Joined
Feb 20, 2012
Messages
310
Reaction score
23
Code:
__declspec(naked) void InitRFGloves()
{
    static DWORD Address1 = 0x0050D810;
    static DWORD Address2 = 0x00512D50;
    static DWORD Address3 = 0x00513C60;
    static DWORD Address4 = 0x005135F0;
    static DWORD Address5 = 0x00512D60;
    static DWORD Address6 = 0x0050DCB0;

    _asm 
    {
  //Item (0, 35)
  PUSH 0x269                                        // Right
  PUSH 0x268                                        // Left
  PUSH 0x4B6                                        
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]             
  ADD ECX, 0x5C                                    
  CALL Address1
  MOV EAX, DWORD PTR SS : [EBP - 0x9C]
  ADD EAX, 0x5C
  PUSH EAX                                         
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]             
  ADD ECX, 0x5C                                    
  CALL Address2
  PUSH EAX                                         
  LEA ECX, [EBP - 0x70]                            
  CALL Address3
  MOV DWORD PTR SS : [EBP - 0xB8], EAX
  MOV ECX, DWORD PTR SS : [EBP - 0xB8]
  MOV DWORD PTR SS : [EBP - 0xBC], ECX
  MOV DWORD PTR SS : [EBP - 0x4], 3   //Number++
  MOV EDX, DWORD PTR SS : [EBP - 0xBC]
  PUSH EDX                                          
  LEA EAX, [EBP - 0x7C]                             
  PUSH EAX                                          
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]              
  ADD ECX, 0x3C                                     
  CALL Address4
  MOV DWORD PTR SS : [EBP - 0x4], -1
  LEA ECX, [EBP - 0x70]
  CALL Address5

  //Bloodangel
  PUSH GET_ITEM_MODEL(0, 388)       // Right
  PUSH GET_ITEM_MODEL(0, 387)       // Left
  PUSH GET_ITEM_MODEL(0, 46)
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x5C
  CALL Address1
  MOV EAX, DWORD PTR SS : [EBP - 0x9C]
  ADD EAX, 0x5C
  PUSH EAX
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x5C
  CALL Address2
  PUSH EAX
  LEA ECX, [EBP - 0x70]
  CALL Address3
  MOV DWORD PTR SS : [EBP - 0xB8], EAX
  MOV ECX, DWORD PTR SS : [EBP - 0xB8]
  MOV DWORD PTR SS : [EBP - 0xBC], ECX
  MOV DWORD PTR SS : [EBP - 0x4], 5   //Number++
  MOV EDX, DWORD PTR SS : [EBP - 0xBC]
  PUSH EDX
  LEA EAX, [EBP - 0x7C]
  PUSH EAX
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x3C
  CALL Address4
  MOV DWORD PTR SS : [EBP - 0x4], -1
  LEA ECX, [EBP - 0x70]
  CALL Address5




  JMP Address6
    }
}

Code:
SetCompleteHook(0xE9, 0x0050DC31, &InitRFGloves);

CustomItem.txt
PHP:
     <Item    Cat="0"  Index="46"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo" />
    <Item    Cat="0"  Index="387"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo_L" />
    <Item    Cat="0"  Index="388"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo_R" />

how to rotate the item: http://forum.ragezone.com/f193/help-resize-items-model-inventory-1153044/

what is this? what should i do to make it work ? :D
 
Last edited:
Upvote 0
Joined
May 21, 2012
Messages
708
Reaction score
301
Code:
__declspec(naked) void InitRFGloves()
{
    static DWORD Address1 = 0x0050D810;
    static DWORD Address2 = 0x00512D50;
    static DWORD Address3 = 0x00513C60;
    static DWORD Address4 = 0x005135F0;
    static DWORD Address5 = 0x00512D60;
    static DWORD Address6 = 0x0050DCB0;

    _asm 
    {
  //Item (0, 35)
  PUSH 0x269                                        // Right
  PUSH 0x268                                        // Left
  PUSH 0x4B6                                        
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]             
  ADD ECX, 0x5C                                    
  CALL Address1
  MOV EAX, DWORD PTR SS : [EBP - 0x9C]
  ADD EAX, 0x5C
  PUSH EAX                                         
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]             
  ADD ECX, 0x5C                                    
  CALL Address2
  PUSH EAX                                         
  LEA ECX, [EBP - 0x70]                            
  CALL Address3
  MOV DWORD PTR SS : [EBP - 0xB8], EAX
  MOV ECX, DWORD PTR SS : [EBP - 0xB8]
  MOV DWORD PTR SS : [EBP - 0xBC], ECX
  MOV DWORD PTR SS : [EBP - 0x4], 3   //Number++
  MOV EDX, DWORD PTR SS : [EBP - 0xBC]
  PUSH EDX                                          
  LEA EAX, [EBP - 0x7C]                             
  PUSH EAX                                          
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]              
  ADD ECX, 0x3C                                     
  CALL Address4
  MOV DWORD PTR SS : [EBP - 0x4], -1
  LEA ECX, [EBP - 0x70]
  CALL Address5

  //Bloodangel
  PUSH GET_ITEM_MODEL(0, 388)       // Right
  PUSH GET_ITEM_MODEL(0, 387)       // Left
  PUSH GET_ITEM_MODEL(0, 46)
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x5C
  CALL Address1
  MOV EAX, DWORD PTR SS : [EBP - 0x9C]
  ADD EAX, 0x5C
  PUSH EAX
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x5C
  CALL Address2
  PUSH EAX
  LEA ECX, [EBP - 0x70]
  CALL Address3
  MOV DWORD PTR SS : [EBP - 0xB8], EAX
  MOV ECX, DWORD PTR SS : [EBP - 0xB8]
  MOV DWORD PTR SS : [EBP - 0xBC], ECX
  MOV DWORD PTR SS : [EBP - 0x4], 5   //Number++
  MOV EDX, DWORD PTR SS : [EBP - 0xBC]
  PUSH EDX
  LEA EAX, [EBP - 0x7C]
  PUSH EAX
  MOV ECX, DWORD PTR SS : [EBP - 0x9C]
  ADD ECX, 0x3C
  CALL Address4
  MOV DWORD PTR SS : [EBP - 0x4], -1
  LEA ECX, [EBP - 0x70]
  CALL Address5




  JMP Address6
    }
}

Code:
SetCompleteHook(0xE9, 0x0050DC31, &InitRFGloves);

CustomItem.txt
PHP:
     <Item    Cat="0"  Index="46"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo" />
    <Item    Cat="0"  Index="387"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo_L" />
    <Item    Cat="0"  Index="388"    ColorR="104"    ColorG="104"    ColorB="104"    ModelName="BloodangelClo_R" />

how to rotate the item: http://forum.ragezone.com/f193/help-resize-items-model-inventory-1153044/

you can help me add to the source rf glove custom ??
 
Upvote 0
Back
Top