Szerző Téma: [C++, PY] Minimap alá FPS meg PING mérő  (Megtekintve 371 alkalommal)

Nem elérhető 66Dragon99

  • Trainee
  • *
  • Hozzászólások: 52
  • Segített: 0
  • képszerkesztő/ 3d model mixer/ régi szerófejlesztő
[C++, PY] Minimap alá FPS meg PING mérő
« Dátum: 2020-10-10, 19:27:14 »
Tipp: biztonsági mentést csinálj!
UPDATE: Tabulátorokra vigyázz! pl game.py

Spoiler for Kliens:
Root
game.py
#keresd az
class GameWindow(ui.ScriptWindow):
-ban
self.__ProcessPreservedServerCommand()
#Rakd alá új üres sorba
self.pingLine = None
if app.ENABLE_PINGTIME:
self.pingLine = ui.TextLine()
self.pingLine.SetFontName(localeInfo.UI_DEF_FONT_LARGE)
self.pingLine.SetFontColor(1.0,1.0,1.0)
self.pingLine.SetPosition((wndMgr.GetScreenWidth() - 130) / 2, 207)
         
#Keresd a
def Close(self):
-ben ezt
self.interface=None
#Rakd alá új üres sorba
if app.ENABLE_PINGTIME:
self.pingLine = None

#Keresd a
 def __BuildDebugInfo(self):
-ben ezt:
self.ViewDistance.SetPosition(0, 0)      
#Rakd alá új üres sorba ezeket:
if app.ENABLE_PINGTIME:
self.pingLine.SetWindowHorizontalAlignCenter()
self.pingLine.SetHorizontalAlignCenter()
self.pingLine.SetFeather()
self.pingLine.SetOutline()
self.pingLine.Show()
         
#keress a
def OnUpdate(self):
-ben erre:
self.interface.BUILD_OnUpdate()
#Alá új sorba kerüljenek ezek
if app.ENABLE_PINGTIME:
nPing = app.GetPingTime()
self.pingLine.SetText("PING: %s" % (nPing))
game.py mentése
root visszacsomagolása.

Indítóforrás:
Spoiler for Locale_inc.h:
a lista elemei alá adod:
#define ENABLE_PINGTIME

Spoiler for PythonApplication.cpp:
//Keresd
[code]#include "CheckLatestFiles.h"
//alá új sorba
#ifdef ENABLE_PINGTIME
#include "PingManager.h"
#endif

//keresd
CPythonApplication::CPythonApplication() :
//keresd:
m_dwRenderFPS(0),add alá:

#ifdef ENABLE_PINGTIME
m_dwPingTime(0),
#endif

//Keresd
bool CPythonApplication::Process()
//a
if (ELTimer_GetMSec() - s_dwCheckTime > 1000)alá kerüljön a következő rész:
#ifdef ENABLE_PINGTIME
static DWORD s_dwPingTime = 0;
static DWORD s_dwCheckTime2 = ELTimer_GetMSec();

if (ELTimer_GetMSec() - s_dwCheckTime2 > 5000)
{

CPingManager CPingManager;
m_dwPingTime = CPingManager.PingTimeRev();
s_dwCheckTime2 = ELTimer_GetMSec();
}
#endif
[/code]

Spoiler for PythonApplication.h:
//Keresd
[code] DWORD GetRenderFPS() { return m_dwRenderFPS; }

//Alá új sorba
#ifdef ENABLE_PINGTIME
DWORD GetPingTime() { return m_dwPingTime; }
#endif

//Keresd
DWORD m_dwFaceCount;
//Alá új sorba
#ifdef ENABLE_PINGTIME
DWORD m_dwPingTime;
#endif
[/code]
Spoiler for PythonApplicationModule.cpp:
//Keresd
[code]PyObject * appGetRenderFPS(PyObject * poSelf, PyObject * poArgs)
{
return Py_BuildValue("i", CPythonApplication::Instance().GetRenderFPS());
}

//Alá új sorba rakd
#ifdef ENABLE_PINGTIME
PyObject * appGetPingTime(PyObject * poSelf, PyObject * poArgs)
{
return Py_BuildValue("i", CPythonApplication::Instance().GetPingTime());
}
#endif

//Keresd
{ "GetRenderFPS", appGetRenderFPS, METH_VARARGS },[code]

//Alá új sorba rakd
[code]#ifdef ENABLE_PINGTIME
{ "GetPingTime", appGetPingTime, METH_VARARGS },
#endif

//Keresd
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
PyModule_AddIntConstant(poModule, "ENABLE_NEW_EQUIPMENT_SYSTEM", 1);
#else
PyModule_AddIntConstant(poModule, "ENABLE_NEW_EQUIPMENT_SYSTEM", 0);
#endif

//Alá új sorba rakd
#ifdef ENABLE_PINGTIME
PyModule_AddIntConstant(poModule, "ENABLE_PINGTIME", 1);
#else
PyModule_AddIntConstant(poModule, "ENABLE_PINGTIME", 0);
#endif
[/code]

Spoiler for PythonNetworkStreamModule.py:
//Keresd
[code]static std::string gs_stServerInfo;
//Alá új sorba rakd
#ifdef ENABLE_PINGTIME
const char * global_ip;
#endif

//Keresd
PyObject* netConnectToAccountServer(PyObject* poSelf, PyObject* poArgs)
//Szerkeszd így
PyObject* netConnectToAccountServer(PyObject* poSelf, PyObject* poArgs)
{
char* addr;
if (!PyTuple_GetString(poArgs, 0, &addr))
return Py_BuildException();

int port;
if (!PyTuple_GetInteger(poArgs, 1, &port))
return Py_BuildException();

char* account_addr;
if (!PyTuple_GetString(poArgs, 2, &account_addr))
return Py_BuildException();

int account_port;
if (!PyTuple_GetInteger(poArgs, 3, &account_port))
return Py_BuildException();

#ifdef ENABLE_PINGTIME
global_ip = addr;
#endif

CAccountConnector & rkAccountConnector = CAccountConnector::Instance();
rkAccountConnector.Connect(addr, port, account_addr, account_port);

return Py_BuildNone();
}
[/code]


Hozd létre a kövi fájlt az előzők melletti mappában
Spoiler for Pingmanager.cpp:
#include "PingManager.h"
#ifdef ENABLE_PINGTIME
#include <iphlpapi.h>
#include <icmpapi.h>
#include <stdio.h>

#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")

extern const char * global_ip;

int __cdecl CPingManager::PingTimeRev()  {
static HANDLE hIcmpFile;
static unsigned long ipaddr = INADDR_NONE;
static DWORD dwRetVal = 0;
static char SendData[32] = "Data Buffer";
static LPVOID ReplyBuffer = NULL;
static DWORD ReplySize = 0;

ipaddr = inet_addr(global_ip);

if (ipaddr == INADDR_NONE) {
return 1;
}

hIcmpFile = IcmpCreateFile();

if (hIcmpFile == INVALID_HANDLE_VALUE) {
return 1;
}

ReplySize = sizeof(ICMP_ECHO_REPLY) + sizeof(SendData);
ReplyBuffer = (VOID*)malloc(ReplySize);

if (ReplyBuffer == NULL) {
return 1;
}

dwRetVal = IcmpSendEcho(hIcmpFile, ipaddr, SendData, sizeof(SendData), NULL, ReplyBuffer, ReplySize, 1000);
PICMP_ECHO_REPLY pEchoReply = (PICMP_ECHO_REPLY)ReplyBuffer;

if (dwRetVal != 0) {
PICMP_ECHO_REPLY pEchoReply = (PICMP_ECHO_REPLY)ReplyBuffer;
return pEchoReply->RoundTripTime;
}

else {
return 0;
}
}
#endif


Hozd létre a kövi fájlt az előzők melletti mappában
Spoiler for Pingmanager.h:
#pragma once
#include "StdAfx.h"

#ifdef ENABLE_PINGTIME
class CPingManager
{

public:
int __cdecl CPingManager::PingTimeRev();

};
#endif


UPDATE: Tabulátorokra vigyázz! pl game.py

Kész vagyunk, ha mentetted a dolgokat és minden a helyén vank, akkor buildelheted a forrásodat,
hiba észlelése esetén: itt nyithatsz segítségkérő témát -> https://metin2hungary.net/index.php?action=post;board=42.0


 
« Utoljára szerkesztve: 2020-10-18, 18:46:47 írta 66Dragon99 »
discord.gg/fankpew