Jump to content

Recommended Posts

[Mod] Panel of defeated characters

 

0.png

 

The mod adds a panel of defeated characters to the game, similar to FPS games like Counter-Strike, Call of Duty, Battlefield and others.

 

Some features of the mod:

1) The panel is a list of records of the form: [Name of the winning character] [Icon of the skill or weapon] [Name of the defeated character] (see screenshot above);

2) The names of the winning and defeated characters are highlighted in color depending on the degree of friendliness towards the player's character: green - ally, red - enemy;

3) The panel can be customized. The customization process will be shown below.

 

 

Requirements

 

Installed mod loading system for server and client (PKOdev.NET mod loader).

 

 

Modification information

 

Name: pkodev.mod.defeated;

Version: 1.0;

Author: V3ct0r;

Type: for client (Game.exe) and server (GameServer.exe);

Supported executable .exe files: GAME_13X_0, GAME_13X_1, GAME_13X_2, GAME_13X_3, GAME_13X_4, GAME_13X_5, GAMESERVER_136 and GAMESERVER_138.

 

 

Installation

 

1. Server

1.1 Place the DLL file of the mod "pkodev.mod.defeated.server.<VERSION>.dll" for your version of GameServer.exe and the settings file "pkodev.mod.defeated.json" (v1.0.0-server) into the folder "GameServer\mods\pkodev.mod.defeated";

1.2 Open the mod settings file "GameServer\mods\pkodev.mod.defeated\pkodev.mod.defeated.json" in any text editor and write the list of maps (dungeons) on which the mod will work in the following format:

{
	"maps" : [
		"garner",
		"magicsea",
		"darkblue"
	]
}

 

2. Client

2.1 Place the DLL file of the mod "pkodev.mod.defeated.client.13x_<ID>.dll" for your version of Game.exe and the configuration file "pkodev.mod.defeated.json" (v1.0.0-client) into the folder "Client\mods\pkodev.mod.defeated";

2.2 Open the mod settings file "Client\mods\pkodev.mod.defeated\pkodev.mod.defeated.json" in any text editor and write the required parameters into it:

{
	"debug":false,
	"hideTime":5000,
	"maxItems":5,
	"itemStep":24,
	"pos":{
		"x":460,
		"y":8
	},
	"align": {
		"x":"right",
		"y":"top"
	}
}
  1. debug - debug mode. true - enabled, false - disabled;
  2. hideTime - time in milliseconds after which the next record on the panel will be hidden;
  3. maxItem - maximum number of records on the panel;
  4. itemStep - vertical step between records in pixels;
  5. pos - coordinates (X, Y) of the panel;
  6. align - the parameter sets the relativity of the coordinates (X, Y) of the panel. For X: left - the coordinate will be measured relative to the left edge of the client window, right - relative to the right edge. For Y: top - the coordinate will be measured relative to the top edge of the client window, bottom - relative to the bottom edge.

 

To adjust the position of the panel, it is convenient to turn on the debug mode ("debug":true). In this case, at the specified coordinates (X, Y), the panel will appear in a frame that displays the maximum dimensions of the panel:

1.png

 

 

Download

 

1) Actual mod binaries (.dll) and the settings file (.json) for server side;

2) Actual mod binaries (.dll) and the settings file (.json) for client side;

3) The source code of the mod for Visual Studio 2022 Community (C++).

 

 

If you encounter any problem, bug or have any questions, then feel free to write in this thread.


Share this post


Link to post
Share on other sites
3 hours ago, gunnapong said:

I'm very interested but Mods don't support game.exe I don't know number please tell me thanks
https://drive.google.com/file/d/1shTCGitJxk9gCD-8ZbDvrtwoZS4L1kNf/view?usp=share_link

 

Hello @gunnapong,

 

// void UIRender::SetScreen( int w, int h, bool isFull )
const unsigned int UIRender__SetScreen = 0x004A0940;

// BOOL RenderHintFrame(const RECT* rc, DWORD color)
const unsigned int RenderHintFrame = 0x00420F30;

// CGuiPic
const unsigned int CGuiPic = 0x00682DF8;

// CGuiPic::CGuiPic( CGuiData* pParent, unsigned int max )
const unsigned int CGuiPic__CGuiPic = 0x0049F900;

// bool	CGuiPic::LoadImage( const char * file, int w, int h, int frame=0, int tx=0, int ty=0, float scalex=0.0, float scaley=0.0 )
const unsigned int CGuiPic__LoadImage = 0x004A1B90;

// void	CGuiPic::UnLoadImage( int frame=-1 )
const unsigned int CGuiPic__UnloadImage = 0x0049F690;

// inline void CGuiPic::Render( int x, int y )	
const unsigned int CGuiPic__Render = 0x004A0E00;

// CGuiFont
const unsigned int CGuiFont = 0x0069A9F0;

// void CGuiFont::BRender(unsigned int nIndex, const char* str, int x, int y, DWORD color, DWORD shadow)
const unsigned int CGuiFont__BRender = 0x0042C600;

// CMPFont
const unsigned int CMPFont = 0x0069A9F0;

// SIZE* CMPFont::GetTextSize(char* szText, SIZE* pSize,float fScale = 1.0f);
const unsigned int CMPFont__GetTextSize = 0x0061772C;

// void operator delete[](void *p)
const unsigned int operator_delete_array = 0x005CBBE0;

// void CWorldScene::_FrameMove( DWORD dwTimeParam )
const unsigned int CWorldScene___FrameMove = 0x004CF2D0;

// void CWorldScene::_Render()
const unsigned int CWorldScene___Render = 0x004CCBC0;

// BOOL NetIF::HandlePacketMessage(DataSocket *datasock, LPRPACKET pk)
const unsigned int NetIF__HandlePacketMessage = 0x00521540;

// uShort RPacket::ReadCmd()
const unsigned int RPacket__ReadCmd = 0x00581180;

// uLong RPacket::ReadLong()
const unsigned int RPacket__ReadLong = 0x00581440;

// cChar *RPacket::ReadString(uShort *len)
const unsigned int RPacket__ReadString = 0x005815A0;

// CSkillRecord* GetSkillRecordInfo( int nTypeID )
const unsigned int GetSkillRecordInfo = 0x00418690;

// inline CItemRecord* GetItemRecordInfo( int nTypeID )
const unsigned int GetItemRecordInfo = 0x0040D8D0;

// CCharacter* CGameScene::_pMainCha 
const unsigned int CGameScene___pMainCha = 0x006A08D4;

 


Share this post


Link to post
Share on other sites
On 1/6/2023 at 6:09 PM, V3ct0r said:

 

Hello @gunnapong,

 


// void UIRender::SetScreen( int w, int h, bool isFull )
const unsigned int UIRender__SetScreen = 0x004A0940;

// BOOL RenderHintFrame(const RECT* rc, DWORD color)
const unsigned int RenderHintFrame = 0x00420F30;

// CGuiPic
const unsigned int CGuiPic = 0x00682DF8;

// CGuiPic::CGuiPic( CGuiData* pParent, unsigned int max )
const unsigned int CGuiPic__CGuiPic = 0x0049F900;

// bool	CGuiPic::LoadImage( const char * file, int w, int h, int frame=0, int tx=0, int ty=0, float scalex=0.0, float scaley=0.0 )
const unsigned int CGuiPic__LoadImage = 0x004A1B90;

// void	CGuiPic::UnLoadImage( int frame=-1 )
const unsigned int CGuiPic__UnloadImage = 0x0049F690;

// inline void CGuiPic::Render( int x, int y )	
const unsigned int CGuiPic__Render = 0x004A0E00;

// CGuiFont
const unsigned int CGuiFont = 0x0069A9F0;

// void CGuiFont::BRender(unsigned int nIndex, const char* str, int x, int y, DWORD color, DWORD shadow)
const unsigned int CGuiFont__BRender = 0x0042C600;

// CMPFont
const unsigned int CMPFont = 0x0069A9F0;

// SIZE* CMPFont::GetTextSize(char* szText, SIZE* pSize,float fScale = 1.0f);
const unsigned int CMPFont__GetTextSize = 0x0061772C;

// void operator delete[](void *p)
const unsigned int operator_delete_array = 0x005CBBE0;

// void CWorldScene::_FrameMove( DWORD dwTimeParam )
const unsigned int CWorldScene___FrameMove = 0x004CF2D0;

// void CWorldScene::_Render()
const unsigned int CWorldScene___Render = 0x004CCBC0;

// BOOL NetIF::HandlePacketMessage(DataSocket *datasock, LPRPACKET pk)
const unsigned int NetIF__HandlePacketMessage = 0x00521540;

// uShort RPacket::ReadCmd()
const unsigned int RPacket__ReadCmd = 0x00581180;

// uLong RPacket::ReadLong()
const unsigned int RPacket__ReadLong = 0x00581440;

// cChar *RPacket::ReadString(uShort *len)
const unsigned int RPacket__ReadString = 0x005815A0;

// CSkillRecord* GetSkillRecordInfo( int nTypeID )
const unsigned int GetSkillRecordInfo = 0x00418690;

// inline CItemRecord* GetItemRecordInfo( int nTypeID )
const unsigned int GetItemRecordInfo = 0x0040D8D0;

// CCharacter* CGameScene::_pMainCha 
const unsigned int CGameScene___pMainCha = 0x006A08D4;

 

I failed ,I still don't understand

Share this post


Link to post
Share on other sites

Hello @gunnapong,

 

Do you can describe what is the problem in more details please? Client crashes or just nothing happens?


Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...