Master Summoner
- Joined
- Feb 17, 2017
- Messages
- 580
- Reaction score
- 72
how to force run launcher using main.dll anyone?
Muahahahahaha i just found the freaking solution:
how to add new pets in the main?
you can add with source code, its very easy.
Look, I have add in my project.
Good Luck bro
#ifndef PROTECT_STATE
#define PROTECT_STATE 0
#endif
I know you use Luis release, here, to work all Premium features,
Remove this on ServerInfo.cpp PROTECT_STATE == 1 &&
#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
#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);
}
#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;
#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;
}
Source Custom Gloves(RF) Season 6
Link Download:You must be registered to see links
this custom gloves is with bug, does not work the right glow in the character and does not pull the model of the right item in the character
--
I had to do it straight in asm.
I have full source add custom glove RF.
I have full source add custom glove RF.
SetCompleteHook(0xE9, 0x0050D982, &StaffNameColor);
void StaffNameColor()
{
// ----
for (int StaffNameColor_Buff = 0; StaffNameColor_Buff < MAX_MAIN_VIEWPORT; StaffNameColor_Buff++)
{
DWORD ViewportAddress = *(DWORD*)(MAIN_VIEWPORT_STRUCT) + (StaffNameColor_Buff * 628);
if (!ViewportAddress) //If Viewport is NULL
{
continue;
}
char* name = (char*)(ViewportAddress + 0x38); //Charactername
// ----
if (!strncmp(name, "Knight",26))
{
pSetTextColor(pTextThis(), 255, 255, 0, 255);
}
else
{
pSetTextColor(pTextThis(), 0, 50, 0xff, 0xff);
}
_asm
{
mov StaffNameColor_Buff, 0x0050DA2E
jmp StaffNameColor_Buff
}
}
}
I have data errors, queries run errorSource
You must be registered to see links
MuServer
You must be registered to see links
Client
You must be registered to see links
bro share source code pet newyou can add with source code, its very easy.
Look, I have add in my project.
Good Luck bro
you can add with source code, its very easy.
Look, I have add in my project.
Good Luck bro
it's not a bug .. that tells you that you need that message in the message.txt fix the number and add itAnyone know this bug?
I tried to find this message but it was not in messages.txtit's not a bug .. that tells you that you need that message in the message.txt fix the number and add it
you will not find it because you do not have to define it. put the message number that you get in the inventory message and in parentheses the message of what you have to say if I'm not mistaken goes the name of the serverI tried to find this message but it was not in messages.txt
Opps, i just tried other main, and it works :-O . Thanks for your support.you will not find it because you do not have to define it. put the message number that you get in the inventory message and in parentheses the message of what you have to say if I'm not mistaken goes the name of the server