Chat global

Chat
Loading the chat ...
Sistema de Notifica...
 
Notifications
Clear all

Sistema de Notificação de PM

23 Posts
11 Usuários
9 Reactions
156 Visualizações
ViGo
 ViGo
(@vigo)
Posts: 72
Guia Valioso
Topic starter
 

Bom, está aí um sistema simples de notificação, pra quando o jogo estiver em segundo plano recebermos determinada informação do Windows.

Spoiler
Resultado

pra contexto, estou utilizando source WorldPT, e implementei a notificação apenas quando recebo uma mensagem pessoal (PM) quando o jogo está em segundo plano.

Na source do game, procure pelo arquivo Winmain.cpp, e dentro desse diretório procure por: WINAPI WinMain, continue a busca até chegar na função que começa assim:

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPreInst, LPSTR lpCmdLine, INT nCmdShow)
{
SetUnhandledExceptionFilter(unhandled_handler);
HookAPI("kernel32.dll", "SetUnhandledExceptionFilter", RedirectedSetUnhandledExceptionFilter);

 

 

Tenho certeza que você encontrou!, então acima dessa função WinMain, copie e cole essa nova função:

void ShowGameNotification(HWND hWnd,const char* title,const char* message) {

	NOTIFYICONDATA ntf = { 0 };
	ntf.cbSize = sizeof(ntf);
	ntf.hWnd = hWnd;
	ntf.uFlags = NIF_ICON | NIF_INFO;
	ntf.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON;

	ntf.hIcon = LoadIcon(GetModuleHandleA(NULL), MAKEINTRESOURCE(IDI_DEFAULT_ICON));

	if (!Shell_NotifyIcon(NIM_ADD, &ntf)) Shell_NotifyIcon(NIM_MODIFY, &ntf);

	strcpy_s(ntf.szInfoTitle, title);
	strcpy_s(ntf.szInfo,message	);
        //by ViGo , discord: 7vig0
	if (!Shell_NotifyIcon(NIM_ADD, &ntf)) Shell_NotifyIcon(NIM_MODIFY, &ntf);

}

 

Já está praticamente pronto! vamos continuar? Ainda na source do game, procure pelo arquivo: ChatWindow.cpp, então dentro desse diretório, procure pela função responsável pelas mensagens que o game recebe do servidor : 

 

void Window::HandlePacket(PacketChatBoxMessage* psPacket)

 

Dentro dessa função, adicione esse esse if:

 

 if ((psPacket->iChatColor == EChatColor::CHATCOLOR_Whisper || psPacket->iChatColor == EChatColor::CHATCOLOR_Blue) &&
     strncmp(psPacket->szChatBoxMessage, "De>", 3) == 0)
 {
     if (GetForegroundWindow() != hwnd)
     {
         char szTitle[64] = "Nova Mensagem";

         std::string strMsg = psPacket->szChatBoxMessage;
         size_t posDoisPontos = strMsg.find(':');

         if (posDoisPontos != std::string::npos && posDoisPontos > 3)
         {
             std::string senderName = strMsg.substr(3, posDoisPontos - 3);
             sprintf_s(szTitle, "PM de%s", senderName.c_str());
         }

         ShowGameNotification(hwnd, szTitle, psPacket->szChatBoxMessage);
     }
 }

 

 

Se você é ansioso e já tentou compilar, tenho certeza que recebeu um erro durante a compilação, e já está achando que fez algo de errado não é mesmo? Fique tranquilo nobre, vamos resolver isso, no topo do arquivo ChatWindow.cpp, onde tem

#include "ChatWindow.h"

observe onde termina todos os #include, então copie e cole:

extern void ShowGameNotification(HWND hWnd, const char* title, const char* message);

Agora sim você já pode compilar, e todas as vezes que você estiver fazendo outra atividade no computador, ou utilizando o computador em outra janela que não seja o game para fazer outra atividade fora do computador, você será notificado pelo Windows sobre as notícias do jogo.

 

Lembrando que é totalmente possível expandir esse sistema pra mostrar diversas informações, como horário do boss, aviso dos 5 minutos que antecedem o nascimento do boss, algum comando de GM para notificar que algum evento vai ocorrer, ai vai depender da sua imaginação.

 


1 por amor, 2 por dinheiro

 
Postado : 25/11/2025 12:44 am
Prad, Arthas, PoTrAs18 and 1 people reacted
Manezinho
(@manezinho)
Posts: 50
Conselheiro
 

Postado por: @vigo

Bom, está aí um sistema simples de notificação, pra quando o jogo estiver em segundo plano recebermos determinada informação do Windows.

Spoiler
Resultado

pra contexto, estou utilizando source WorldPT, e implementei a notificação apenas quando recebo uma mensagem pessoal (PM) quando o jogo está em segundo plano.

Na source do game, procure pelo arquivo Winmain.cpp, e dentro desse diretório procure por: WINAPI WinMain, continue a busca até chegar na função que começa assim:

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPreInst, LPSTR lpCmdLine, INT nCmdShow)
{
SetUnhandledExceptionFilter(unhandled_handler);
HookAPI("kernel32.dll", "SetUnhandledExceptionFilter", RedirectedSetUnhandledExceptionFilter);

 

 

Tenho certeza que você encontrou!, então acima dessa função WinMain, copie e cole essa nova função:

void ShowGameNotification(HWND hWnd,const char* title,const char* message) {

	NOTIFYICONDATA ntf = { 0 };
	ntf.cbSize = sizeof(ntf);
	ntf.hWnd = hWnd;
	ntf.uFlags = NIF_ICON | NIF_INFO;
	ntf.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON;

	ntf.hIcon = LoadIcon(GetModuleHandleA(NULL), MAKEINTRESOURCE(IDI_DEFAULT_ICON));

	if (!Shell_NotifyIcon(NIM_ADD, &ntf)) Shell_NotifyIcon(NIM_MODIFY, &ntf);

	strcpy_s(ntf.szInfoTitle, title);
	strcpy_s(ntf.szInfo,message	);
        //by ViGo , discord: 7vig0
	if (!Shell_NotifyIcon(NIM_ADD, &ntf)) Shell_NotifyIcon(NIM_MODIFY, &ntf);

}

 

Já está praticamente pronto! vamos continuar? Ainda na source do game, procure pelo arquivo: ChatWindow.cpp, então dentro desse diretório, procure pela função responsável pelas mensagens que o game recebe do servidor : 

 

void Window::HandlePacket(PacketChatBoxMessage* psPacket)

 

Dentro dessa função, adicione esse esse if:

 

 if ((psPacket->iChatColor == EChatColor::CHATCOLOR_Whisper || psPacket->iChatColor == EChatColor::CHATCOLOR_Blue) &&
     strncmp(psPacket->szChatBoxMessage, "De>", 3) == 0)
 {
     if (GetForegroundWindow() != hwnd)
     {
         char szTitle[64] = "Nova Mensagem";

         std::string strMsg = psPacket->szChatBoxMessage;
         size_t posDoisPontos = strMsg.find(':');

         if (posDoisPontos != std::string::npos && posDoisPontos > 3)
         {
             std::string senderName = strMsg.substr(3, posDoisPontos - 3);
             sprintf_s(szTitle, "PM de%s", senderName.c_str());
         }

         ShowGameNotification(hwnd, szTitle, psPacket->szChatBoxMessage);
     }
 }

 

 

Se você é ansioso e já tentou compilar, tenho certeza que recebeu um erro durante a compilação, e já está achando que fez algo de errado não é mesmo? Fique tranquilo nobre, vamos resolver isso, no topo do arquivo ChatWindow.cpp, onde tem

#include "ChatWindow.h"

observe onde termina todos os #include, então copie e cole:

extern void ShowGameNotification(HWND hWnd, const char* title, const char* message);

Agora sim você já pode compilar, e todas as vezes que você estiver fazendo outra atividade no computador, ou utilizando o computador em outra janela que não seja o game para fazer outra atividade fora do computador, você será notificado pelo Windows sobre as notícias do jogo.

 

Lembrando que é totalmente possível expandir esse sistema pra mostrar diversas informações, como horário do boss, aviso dos 5 minutos que antecedem o nascimento do boss, algum comando de GM para notificar que algum evento vai ocorrer, ai vai depender da sua imaginação.

 

  Mito kkk  vlw  cuidado pra não ter nego vendendo a 500$ kkkk

 


 
Postado : 25/11/2025 12:56 am
(@genesiu)
Posts: 12
Mentor Respeitado
 

manda o link dos videos ai


 
Postado : 25/11/2025 2:25 am
ViGo reacted
ViGo
 ViGo
(@vigo)
Posts: 72
Guia Valioso
Topic starter
 

@manezinho minha parte eu fiz, kkkkk, vamos ver, quem sabe em breve eu não libere mais sistemas pequenos e interessantes como esse aí, quem sabe um organizador de inventário? 🍺


1 por amor, 2 por dinheiro

 
Postado : 25/11/2025 2:32 am
PoTrAs18 reacted
ALUCARD
(@alucard)
Posts: 111
Guia Valioso
 

Eu acho que para códigos, seria bom ter uma seção "Codigos "Premium", que só acessa quem é assinante nem que seja R$9,90, e cada valor da assinatura de quem faz parte desse "grupo" ganhar uma porcentagem ex: quem posto 70%, o forum ficaria com 30%, apenas uma idéia.


#DEFINE -> | |
The Witcher

 
Postado : 25/11/2025 10:00 am
Manezinho
(@manezinho)
Posts: 50
Conselheiro
 

Postado por: @vigo

@manezinho minha parte eu fiz, kkkkk, vamos ver, quem sabe em breve eu não libere mais sistemas pequenos e interessantes como esse aí, quem sabe um organizador de inventário? 🍺

Poise tem nego que se aproveita , e complicado 

 


 
Postado : 25/11/2025 10:32 am
PoTrAs18
(@potras18)
Posts: 48
Admin
 

@alucard Criei uma seção privada para pessoas que realmente compartilham conhecimento. Qualquer pessoa interessada em participar dessa seção deve entrar em contato comigo; sua contribuição para a comunidade será analisada e avaliada


 
Postado : 25/11/2025 12:48 pm
ViGo
 ViGo
(@vigo)
Posts: 72
Guia Valioso
Topic starter
 

@potras18 seria interessante aprimorar a ideia do @ALUCARD, criar uma sessão de marketplace pra venda de sistemas, semelhante a DFG por exemplo.

 

Criaria uma sessão para divulgação de devs, o fórum geraria renda pois iria ganhar % pelo intermédio da venda, e dependendo da logística de entrega do código, o dono do fórum ainda teria acesso a todos os códigos free, gg, todo mundo ganha. 


1 por amor, 2 por dinheiro

 
Postado : 25/11/2025 1:11 pm
ALUCARD
(@alucard)
Posts: 111
Guia Valioso
 

eu digo no quesito de outras pessoas quiserem usar, pois tem umas que só sugam, essas precisam "pagar" contribuir para incentivar os caras postarem mais.

 


#DEFINE -> | |
The Witcher

 
Postado : 25/11/2025 1:12 pm
ALUCARD
(@alucard)
Posts: 111
Guia Valioso
 

@vigo fica bom em, pq dá incentivo para postarem coisas legais, porém tem o preço. acho muito boa a idéia.


#DEFINE -> | |
The Witcher

 
Postado : 25/11/2025 1:24 pm
PoTrAs18
(@potras18)
Posts: 48
Admin
 

@vigo @alucard Vou estudar isso e encontrar uma maneira de implementar


 
Postado : 25/11/2025 2:27 pm
tacolayt
(@tacolayt)
Posts: 38
Conselheiro
 

A ideia do Alucard é boa demais, eu to dentro


 
Postado : 25/11/2025 3:36 pm
tacolayt
(@tacolayt)
Posts: 38
Conselheiro
 

Parabens Vigo, codigo muito bomm ! 


 
Postado : 25/11/2025 3:37 pm
tacolayt
(@tacolayt)
Posts: 38
Conselheiro
 

https://ibb.co/F4mH5R7b


 
Postado : 25/11/2025 3:46 pm
tacolayt
(@tacolayt)
Posts: 38
Conselheiro
 

Pra quem quer a notificação de BOSS tmb.

#define BOSS_ALERT_PREFIX "BOSS_ALERT>"
#define BOSS_ALERT_PREFIX_LEN 11

--------------------------------------------------------

else if (psPacket->iChatColor == EChatColor::CHATCOLOR_Global &&
strncmp(psPacket->szChatBoxMessage, BOSS_ALERT_PREFIX, BOSS_ALERT_PREFIX_LEN) == 0)
{
// Apenas notifica se o jogo não estiver em primeiro plano
if (GetForegroundWindow() != hwnd)
{
const char* bossMessage = psPacket->szChatBoxMessage + BOSS_ALERT_PREFIX_LEN;
 
// O 'title' será "Alerta de Boss"
ShowGameNotification(hwnd, "Alerta de Boss", bossMessage);
}
}

 
Postado : 25/11/2025 4:01 pm
PoTrAs18 reacted
Página 1 / 2
Compartilhar:

Anúncio