@Zahamael alguna idea de como crear el archivo "serverInfo.bmd" al crear el archivo pegarlo en el cliente y luego ejecutar el juego, salta un error diciendo que "serverlist.bmd" no funciona
Pelo visto comeram a source do IGC.dll
@Zahamael alguna idea de como crear el archivo "serverInfo.bmd" al crear el archivo pegarlo en el cliente y luego ejecutar el juego, salta un error diciendo que "serverlist.bmd" no funciona
LO ESTAS GENERANDO MAL
@Zahamael alguna idea de como crear el archivo "serverInfo.bmd" al crear el archivo pegarlo en el cliente y luego ejecutar el juego, salta un error diciendo que "serverlist.bmd" no funciona
LO ESTAS GENERANDO MAL
1.- lo abro con notepadd++
2.- solo cambio la ip, por la de mi vps y le doy guardar
3.- click en el ejecutable
4.- click en "encode"
5.- se genera el archivo serverlist.bmd el cual pego en el cliente y ejecuto... y no se abre el juego y da error de que el serverlist.bmd esta corrupto
anyone can help me?
https://ibb.co/1TRHxvz
and how i can contact michi28?
that's not a solution.Its obviously a issue from the code, and he gave you the easy out.
I have a dedicated server myself and have to host somewhere else just because it doesn't work for me for some reason and nobody knows the reason?
That bullshit
Alguem sabe se tem como fixar o bug dos itens sockets não aceitar options excellents pela source?
Teria q trabalhar muito na source entao pra mudar isso, vou ver se dá pra fazer algo.Alguem sabe se tem como fixar o bug dos itens sockets não aceitar options excellents pela source?
no es un bug, desde la season 10 se separaron todos los sistemas, los items socket son solo socket, los ancients solo ancient, los 380 solo 380...
Agora o CashShop não abrir tbm faz parte da Season?Alguem sabe se tem como fixar o bug dos itens sockets não aceitar options excellents pela source?
no es un bug, desde la season 10 se separaron todos los sistemas, los items socket son solo socket, los ancients solo ancient, los 380 solo 380...
Agora o CashShop não abrir tbm faz parte da Season?Alguem sabe se tem como fixar o bug dos itens sockets não aceitar options excellents pela source?
no es un bug, desde la season 10 se separaron todos los sistemas, los items socket son solo socket, los ancients solo ancient, los 380 solo 380...
Agora o CashShop não abrir tbm faz parte da Season?Alguem sabe se tem como fixar o bug dos itens sockets não aceitar options excellents pela source?
no es un bug, desde la season 10 se separaron todos los sistemas, los items socket son solo socket, los ancients solo ancient, los 380 solo 380...
Killing monsters appears in the League announcement
How to solve this problem
https://ibb.co/bzMRdDw
void TNotice::MakeNoticeMsg(void * lpNotice, BYTE btType, char * szNoticeMsg)
{
PMSG_NOTICE* pNotice = (PMSG_NOTICE*)lpNotice;
pNotice->type = btType;
memcpy(pNotice->Notice, szNoticeMsg, strlen(szNoticeMsg));
wsprintf(pNotice->Notice, szNoticeMsg);
PHeadSetB((LPBYTE)pNotice, 0x0D, strlen(pNotice->Notice) + sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + 1);
// PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
//
// pNotice->dwColor = 0;
//
// char szTempMsg[4096] = { 256, };
// memset(pNotice->Notice, 256, sizeof(pNotice->Notice));
//
// va_list pArguments;
// //va_start(pArguments, szNoticeMsg);
// vsprintf(szTempMsg, szNoticeMsg, pArguments);
// va_end(pArguments);
//
// MultiByteToWideChar(DEFAULT_CODEPAGE, 0, (char*)szNoticeMsg, strlen(szNoticeMsg), (WCHAR*)szTempMsg, sizeof(szTempMsg));
// memcpy(pNotice->Notice, szTempMsg, sizeof(pNotice->Notice));
// pNotice->Notice[sizeof(pNotice->Notice) - 2] = 0;
// pNotice->Notice[sizeof(pNotice->Notice) - 1] = 0;
// PHeadSetB((LPBYTE)pNotice, 0x0D, sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + (wcslen((WCHAR*)pNotice->Notice) * 2 + 2));
}
void TNotice::MakeNoticeMsgEx(void * lpNotice, BYTE btType, char * szNoticeMsg, ...)
{
PMSG_NOTICE* pNotice = (PMSG_NOTICE*)lpNotice;
pNotice->type = btType;
va_list pArguments;
va_start(pArguments, szNoticeMsg);
vsprintf((char*)pNotice->Notice, (char*)szNoticeMsg, pArguments);
va_end(pArguments);
PHeadSetB((LPBYTE)pNotice, 0x0D, strlen(pNotice->Notice) + sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + 1);
/*PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
pNotice->dwColor = 0;
char szTempMsg[4096] = { 0, };
memset(pNotice->Notice, 0, sizeof(pNotice->Notice));
va_list pArguments;
va_start(pArguments, szNoticeMsg);
vsprintf(szTempMsg, szNoticeMsg, pArguments);
va_end(pArguments);
MultiByteToWideChar(DEFAULT_CODEPAGE, 0, (char*)szTempMsg, strlen(szTempMsg), (WCHAR*)pNotice->Notice, sizeof(pNotice->Notice));
pNotice->Notice[sizeof(pNotice->Notice) - 2] = 0;
pNotice->Notice[sizeof(pNotice->Notice) - 1] = 0;
PHeadSetB((LPBYTE)pNotice, 0x0D, sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + (wcslen((WCHAR*)pNotice->Notice) * 2 + 2));*/
}
void TNotice::SetNoticeProperty(void * lpNotice, BYTE btType, DWORD dwColor, BYTE btCount, WORD wDelay, BYTE btSpeed)
{
PMSG_NOTICE * pNotice =(PMSG_NOTICE *) lpNotice;
pNotice->type = btType;
pNotice->dwColor = dwColor;
pNotice->btCount = btCount;
pNotice->wDelay = wDelay;
pNotice->btSpeed = btSpeed;
}
void TNotice::SendNoticeToAllUser(void * lpNotice)
{
PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
for ( int n = g_ConfigRead.server.GetObjectStartUserIndex() ; n < g_ConfigRead.server.GetObjectMax() ; n++)
{
if ( gObj[n].Connected == PLAYER_PLAYING )
{
if ( gObj[n].Type == OBJ_USER )
{
IOCP.DataSend(n, (unsigned char*)pNotice , pNotice->h.size );
}
}
}
}
void TNotice::SendNoticeToUser(int aIndex, void * lpNotice)
{
PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
IOCP.DataSend(aIndex, (unsigned char*)pNotice, pNotice->h.size );
}
void TNotice::AllSendServerMsg(LPSTR chatmsg)
{
PMSG_NOTICE pNotice;
MakeNoticeMsg((TNotice *)&pNotice, 0, chatmsg);
for ( int n = g_ConfigRead.server.GetObjectStartUserIndex() ; n < g_ConfigRead.server.GetObjectMax() ; n++)
{
if ( gObj[n].Connected == PLAYER_PLAYING )
{
if ( gObj[n].Type == OBJ_USER )
{
IOCP.DataSend(n, (unsigned char*)&pNotice , pNotice.h.size );
}
}
}
}
void TNotice::GCServerMsgStringSend(LPSTR szMsg, int aIndex, BYTE type)
{
PMSG_NOTICE pNotice;
MakeNoticeMsg(&pNotice, type, szMsg);
IOCP.DataSend(aIndex, (unsigned char*)&pNotice, pNotice.h.size);
}
TNotice::TNotice(BYTE btType)
{
this->m_Notice.btCount = 1;
this->m_Notice.btSpeed = 20;
this->m_Notice.dwColor = _ARGB(255, 255, 200, 80 );
this->m_Notice.wDelay = 0;
this->m_Notice.type = btType;
}
void TNotice::SendToAllUser(LPSTR szMsg, ...)
{
va_list pArguments;
va_start(pArguments, szMsg);
vsprintf(this->m_Notice.Notice, (char*)szMsg, pArguments);
va_end(pArguments);
PHeadSetB((LPBYTE)&this->m_Notice, 0x0D, strlen(this->m_Notice.Notice) + sizeof(PMSG_NOTICE) - sizeof(this->m_Notice.Notice) + 1);
for (int n = g_ConfigRead.server.GetObjectStartUserIndex(); n < g_ConfigRead.server.GetObjectMax(); n++)
{
if (gObj[n].Connected == PLAYER_PLAYING)
{
if (gObj[n].Type == OBJ_USER)
{
IOCP.DataSend(n, (LPBYTE)&this->m_Notice, this->m_Notice.h.size);
}
}
}
}
void TNotice::SendToUser(int aIndex, LPSTR szMsg, ...)
{
char szTempMsg[4096] = { 0, };
memset(m_Notice.Notice, 0, sizeof(m_Notice.Notice));
va_list pArguments;
va_start(pArguments, szMsg);
vsprintf(szTempMsg, szMsg, pArguments);
va_end(pArguments);
MultiByteToWideChar(DEFAULT_CODEPAGE, 0, (char*)szTempMsg, strlen(szTempMsg), (WCHAR*)m_Notice.Notice, sizeof(m_Notice.Notice));
m_Notice.Notice[sizeof(m_Notice.Notice) - 2] = 0;
m_Notice.Notice[sizeof(m_Notice.Notice) - 1] = 0;
PHeadSetB((LPBYTE)&m_Notice, 0x0D, sizeof(PMSG_NOTICE) - sizeof(m_Notice.Notice) + (wcslen((WCHAR*)m_Notice.Notice) * 2 + 2));
IOCP.DataSend(aIndex, (LPBYTE)&this->m_Notice , this->m_Notice.h.size );
}
void TNotice::GCNoticeSend(int aIndex, BYTE type, BYTE count, BYTE opacity, WORD delay, DWORD color, BYTE speed, char* message, ...) // OK
{
char buff[256] = { };
va_list arg;
va_start(arg, message);
vsprintf_s(buff, message, arg);
va_end(arg);
int size = strlen(buff);
size = ((size>MAX_MESSAGE_SIZE) ? MAX_MESSAGE_SIZE : size);
PMSG_NOTICE_SEND pMsg;
pMsg.header.set((LPBYTE)&pMsg, 0x0D, (sizeof(pMsg) - (sizeof(pMsg.message) - (size + 1))));
pMsg.type = type;
pMsg.count = count;
pMsg.opacity = opacity;
pMsg.delay = delay;
pMsg.color = color;
pMsg.speed = speed;
memcpy(pMsg.message, buff, size);
pMsg.message[size] = 0;
IOCP.DataSend(aIndex, (BYTE*)&pMsg, pMsg.header.size);
}
void TNotice::GCNoticeSendToAll(BYTE type, BYTE count, BYTE opacity, WORD delay, DWORD color, BYTE speed, char* message, ...) // OK
{
char buff[256] = { 0};
va_list arg;
va_start(arg, message);
vsprintf_s(buff, message, arg);
va_end(arg);
int size = strlen(buff);
size = ((size>MAX_MESSAGE_SIZE) ? MAX_MESSAGE_SIZE : size);
PMSG_NOTICE_SEND pMsg;
pMsg.header.set((LPBYTE)&pMsg, 0x0D, (sizeof(pMsg) - (sizeof(pMsg.message) - (size + 1))));
pMsg.type = type;
pMsg.count = count;
pMsg.opacity = opacity;
pMsg.delay = delay;
pMsg.color = color;
pMsg.speed = speed;
memcpy(pMsg.message, buff, size);
pMsg.message[size] = 0;
for (int n = g_ConfigRead.server.GetObjectStartUserIndex(); n < g_ConfigRead.server.GetObjectMax(); n++)
{
if (gObjIsConnectedGP(n) != 0)
{
IOCP.DataSend(n, (BYTE*)&pMsg, pMsg.header.size);
}
}
}
chuckhai, Thank you, brother. How to solve one more problemerror in IGC_MasterSkillTree.xml you can fix it directly by putting // before g_MasterLevelSkillTreeSystem.Load(g_ConfigRead.GetPath("IGC_MasterSkillTree.xml")); Or please check in any wrong parameters and then correct it and it will run normally, good luck
Common Data Reload collapse
https://ibb.co/T0hHkbX
https://ibb.co/f8tmtWD
chuckhai, Thank you, brother. How to solve one more problemerror in IGC_MasterSkillTree.xml you can fix it directly by putting // before g_MasterLevelSkillTreeSystem.Load(g_ConfigRead.GetPath("IGC_MasterSkillTree.xml")); Or please check in any wrong parameters and then correct it and it will run normally, good luck
Common Data Reload collapse
https://ibb.co/T0hHkbX
https://ibb.co/f8tmtWD
void CMasterLevelSkillTreeSystem::Load(const char *lpszFileName)
{
pugi::xml_document file;
pugi::xml_parse_result res = file.load_file(g_ConfigRead.GetPath("IGC_MasterSkillTree.xml"));
if (res.status != pugi::status_ok)
{
g_Log.MsgBox("[MasterLevelSkillTreeSystem] - Can't Load %s (%s)", lpszFileName, res.description());
return;
}
int iIndex = -1;
int iTempIndex, iRank, iPos, iPoint, iMaxPoint, iParentSkill1, iParentSkill2, iSkillID;
pugi::xml_node main = file.child("MasterSkillTree");
this->m_wMaxMasterSkillLevel = main.attribute("MaxSkillLevel").as_int(20); // private custom !!!
this->Init();
for (pugi::xml_node class_node = main.child("Class"); class_node; class_node = class_node.next_sibling())
{
int iClass = class_node.attribute("ID").as_int();
for (pugi::xml_node tree = class_node.child("Tree"); tree; tree = tree.next_sibling())
{
int iTreeType = tree.attribute("Type").as_int();
for (pugi::xml_node skill = tree.child("Skill"); skill; skill = skill.next_sibling())
{
iIndex = skill.attribute("Index").as_int();
if (iIndex % 36 == 0)
{
iRank = 8;
iPos = 3;
}
else
{
iTempIndex = iIndex % 36 - 1;
iRank = iTempIndex / 4;
iPos = iTempIndex % 4;
}
iPoint = skill.attribute("ReqMinPoint").as_int();
iMaxPoint = skill.attribute("MaxPoint").as_int();
iParentSkill1 = skill.attribute("ParentSkill1").as_int();
iParentSkill2 = skill.attribute("ParentSkill2").as_int();
iSkillID = skill.attribute("MagicNumber").as_int();
for (int i = 0; i < MAX_TYPE_PLAYER; i++)
{
if (CHARACTER_CLASS_TABLE[i][0] & iClass)
{
this->m_MLSTable[CHARACTER_CLASS_TABLE[i][1]].iAbility[iTreeType].iElement[iRank][iPos].m_dwIndex = iIndex;
this->m_MLSTable[CHARACTER_CLASS_TABLE[i][1]].iAbility[iTreeType].iElement[iRank][iPos].m_byConsumePoint = iPoint;
this->m_MLSTable[CHARACTER_CLASS_TABLE[i][1]].iAbility[iTreeType].iElement[iRank][iPos].m_byMaxPoint = iMaxPoint;
this->m_MLSTable[CHARACTER_CLASS_TABLE[i][1]].iAbility[iTreeType].iElement[iRank][iPos].m_dwParentSkill1 = iParentSkill1;
this->m_MLSTable[CHARACTER_CLASS_TABLE[i][1]].iAbility[iTreeType].iElement[iRank][iPos].m_dwParentSkill2 = iParentSkill2;
this->m_MLSTable[CHARACTER_CLASS_TABLE[i][1]].iAbility[iTreeType].iElement[iRank][iPos].m_dwSkillID = iSkillID;
}
}
}
}
}
}
Buenas,tengo el problema al crear el mix del hammer archangel queda todo tildado,alguno tiene una mix bien hecha o como puedo editar ese mix..?
me pasa con los mix de crear el hammer, crear las blessed archangel,desbloquear los set bloodangel, me podrias pasar tu mix.bmd??? he probado con otros pero sigue igual y algunos no son compatibles o si tenes el cliente me lo pasarias porq tengo 2 clientes de la misma vercion y en ninguno anda esos mix
me pasa con los mix de crear el hammer, crear las blessed archangel,desbloquear los set bloodangel, me podrias pasar tu mix.bmd??? he probado con otros pero sigue igual y algunos no son compatibles o si tenes el cliente me lo pasarias porq tengo 2 clientes de la misma vercion y en ninguno anda esos mix
Te compartiria pero nose si te generara problemas, ya que estube agregando nuevos Mix.....
Ejemplo. Upgrade de set holyangel a (awakening, blue eye, silverheart, manticore, brilliant) y otros mix nuevos..
(https://ibb.co/CJJ4yJv)
me pasa con los mix de crear el hammer, crear las blessed archangel,desbloquear los set bloodangel, me podrias pasar tu mix.bmd??? he probado con otros pero sigue igual y algunos no son compatibles o si tenes el cliente me lo pasarias porq tengo 2 clientes de la misma vercion y en ninguno anda esos mix
Te compartiria pero nose si te generara problemas, ya que estube agregando nuevos Mix.....
Ejemplo. Upgrade de set holyangel a (awakening, blue eye, silverheart, manticore, brilliant) y otros mix nuevos..
(https://ibb.co/CJJ4yJv)
me pasa con los mix de crear el hammer, crear las blessed archangel,desbloquear los set bloodangel, me podrias pasar tu mix.bmd??? he probado con otros pero sigue igual y algunos no son compatibles o si tenes el cliente me lo pasarias porq tengo 2 clientes de la misma vercion y en ninguno anda esos mix
Te compartiria pero nose si te generara problemas, ya que estube agregando nuevos Mix.....
Ejemplo. Upgrade de set holyangel a (awakening, blue eye, silverheart, manticore, brilliant) y otros mix nuevos..
(https://ibb.co/CJJ4yJv)
pasamelo si podes, lo probare igual aver si asi me anda :(
me pasa con los mix de crear el hammer, crear las blessed archangel,desbloquear los set bloodangel, me podrias pasar tu mix.bmd??? he probado con otros pero sigue igual y algunos no son compatibles o si tenes el cliente me lo pasarias porq tengo 2 clientes de la misma vercion y en ninguno anda esos mix
Te compartiria pero nose si te generara problemas, ya que estube agregando nuevos Mix.....
Ejemplo. Upgrade de set holyangel a (awakening, blue eye, silverheart, manticore, brilliant) y otros mix nuevos..
(https://ibb.co/CJJ4yJv)
pasamelo si podes, lo probare igual aver si asi me anda :(
ya te lo mande por MP
hay algun tutorial en el foro que explique cositas sobre las sources? para uno comenzar a solucionar?Aprender c++ xd, luego revisar la source y entenderás como funciona. Cualquier curso de internet te sirve, no es que el mu sea algo único del foro xd
clinet ss10 ????
Fixed text in incorrect position
- experience
- Exit the server
- welcome message
please please please please
clinet ss10 ????
Fixed text in incorrect position
- experience
- Exit the server
- welcome message
please please please please
Can you share it with me? Thank you very muchclinet ss10 ????
Fixed text in incorrect position
- experience
- Exit the server
- welcome message
please please please please
I downgraded SS12 to SS10.
The original is SS12.
Killing monsters appears in the League announcement
How to solve this problem
https://ibb.co/bzMRdDw
The source code of the message has been corrected, please check againCode: [Select]
void TNotice::MakeNoticeMsg(void * lpNotice, BYTE btType, char * szNoticeMsg)
{
PMSG_NOTICE* pNotice = (PMSG_NOTICE*)lpNotice;
pNotice->type = btType;
memcpy(pNotice->Notice, szNoticeMsg, strlen(szNoticeMsg));
wsprintf(pNotice->Notice, szNoticeMsg);
PHeadSetB((LPBYTE)pNotice, 0x0D, strlen(pNotice->Notice) + sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + 1);
// PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
//
// pNotice->dwColor = 0;
//
// char szTempMsg[4096] = { 256, };
// memset(pNotice->Notice, 256, sizeof(pNotice->Notice));
//
// va_list pArguments;
// //va_start(pArguments, szNoticeMsg);
// vsprintf(szTempMsg, szNoticeMsg, pArguments);
// va_end(pArguments);
//
// MultiByteToWideChar(DEFAULT_CODEPAGE, 0, (char*)szNoticeMsg, strlen(szNoticeMsg), (WCHAR*)szTempMsg, sizeof(szTempMsg));
// memcpy(pNotice->Notice, szTempMsg, sizeof(pNotice->Notice));
// pNotice->Notice[sizeof(pNotice->Notice) - 2] = 0;
// pNotice->Notice[sizeof(pNotice->Notice) - 1] = 0;
// PHeadSetB((LPBYTE)pNotice, 0x0D, sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + (wcslen((WCHAR*)pNotice->Notice) * 2 + 2));
}
void TNotice::MakeNoticeMsgEx(void * lpNotice, BYTE btType, char * szNoticeMsg, ...)
{
PMSG_NOTICE* pNotice = (PMSG_NOTICE*)lpNotice;
pNotice->type = btType;
va_list pArguments;
va_start(pArguments, szNoticeMsg);
vsprintf((char*)pNotice->Notice, (char*)szNoticeMsg, pArguments);
va_end(pArguments);
PHeadSetB((LPBYTE)pNotice, 0x0D, strlen(pNotice->Notice) + sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + 1);
/*PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
pNotice->dwColor = 0;
char szTempMsg[4096] = { 0, };
memset(pNotice->Notice, 0, sizeof(pNotice->Notice));
va_list pArguments;
va_start(pArguments, szNoticeMsg);
vsprintf(szTempMsg, szNoticeMsg, pArguments);
va_end(pArguments);
MultiByteToWideChar(DEFAULT_CODEPAGE, 0, (char*)szTempMsg, strlen(szTempMsg), (WCHAR*)pNotice->Notice, sizeof(pNotice->Notice));
pNotice->Notice[sizeof(pNotice->Notice) - 2] = 0;
pNotice->Notice[sizeof(pNotice->Notice) - 1] = 0;
PHeadSetB((LPBYTE)pNotice, 0x0D, sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + (wcslen((WCHAR*)pNotice->Notice) * 2 + 2));*/
}
void TNotice::SetNoticeProperty(void * lpNotice, BYTE btType, DWORD dwColor, BYTE btCount, WORD wDelay, BYTE btSpeed)
{
PMSG_NOTICE * pNotice =(PMSG_NOTICE *) lpNotice;
pNotice->type = btType;
pNotice->dwColor = dwColor;
pNotice->btCount = btCount;
pNotice->wDelay = wDelay;
pNotice->btSpeed = btSpeed;
}
void TNotice::SendNoticeToAllUser(void * lpNotice)
{
PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
for ( int n = g_ConfigRead.server.GetObjectStartUserIndex() ; n < g_ConfigRead.server.GetObjectMax() ; n++)
{
if ( gObj[n].Connected == PLAYER_PLAYING )
{
if ( gObj[n].Type == OBJ_USER )
{
IOCP.DataSend(n, (unsigned char*)pNotice , pNotice->h.size );
}
}
}
}
void TNotice::SendNoticeToUser(int aIndex, void * lpNotice)
{
PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
IOCP.DataSend(aIndex, (unsigned char*)pNotice, pNotice->h.size );
}
void TNotice::AllSendServerMsg(LPSTR chatmsg)
{
PMSG_NOTICE pNotice;
MakeNoticeMsg((TNotice *)&pNotice, 0, chatmsg);
for ( int n = g_ConfigRead.server.GetObjectStartUserIndex() ; n < g_ConfigRead.server.GetObjectMax() ; n++)
{
if ( gObj[n].Connected == PLAYER_PLAYING )
{
if ( gObj[n].Type == OBJ_USER )
{
IOCP.DataSend(n, (unsigned char*)&pNotice , pNotice.h.size );
}
}
}
}
void TNotice::GCServerMsgStringSend(LPSTR szMsg, int aIndex, BYTE type)
{
PMSG_NOTICE pNotice;
MakeNoticeMsg(&pNotice, type, szMsg);
IOCP.DataSend(aIndex, (unsigned char*)&pNotice, pNotice.h.size);
}
TNotice::TNotice(BYTE btType)
{
this->m_Notice.btCount = 1;
this->m_Notice.btSpeed = 20;
this->m_Notice.dwColor = _ARGB(255, 255, 200, 80 );
this->m_Notice.wDelay = 0;
this->m_Notice.type = btType;
}
void TNotice::SendToAllUser(LPSTR szMsg, ...)
{
va_list pArguments;
va_start(pArguments, szMsg);
vsprintf(this->m_Notice.Notice, (char*)szMsg, pArguments);
va_end(pArguments);
PHeadSetB((LPBYTE)&this->m_Notice, 0x0D, strlen(this->m_Notice.Notice) + sizeof(PMSG_NOTICE) - sizeof(this->m_Notice.Notice) + 1);
for (int n = g_ConfigRead.server.GetObjectStartUserIndex(); n < g_ConfigRead.server.GetObjectMax(); n++)
{
if (gObj[n].Connected == PLAYER_PLAYING)
{
if (gObj[n].Type == OBJ_USER)
{
IOCP.DataSend(n, (LPBYTE)&this->m_Notice, this->m_Notice.h.size);
}
}
}
}
void TNotice::SendToUser(int aIndex, LPSTR szMsg, ...)
{
char szTempMsg[4096] = { 0, };
memset(m_Notice.Notice, 0, sizeof(m_Notice.Notice));
va_list pArguments;
va_start(pArguments, szMsg);
vsprintf(szTempMsg, szMsg, pArguments);
va_end(pArguments);
MultiByteToWideChar(DEFAULT_CODEPAGE, 0, (char*)szTempMsg, strlen(szTempMsg), (WCHAR*)m_Notice.Notice, sizeof(m_Notice.Notice));
m_Notice.Notice[sizeof(m_Notice.Notice) - 2] = 0;
m_Notice.Notice[sizeof(m_Notice.Notice) - 1] = 0;
PHeadSetB((LPBYTE)&m_Notice, 0x0D, sizeof(PMSG_NOTICE) - sizeof(m_Notice.Notice) + (wcslen((WCHAR*)m_Notice.Notice) * 2 + 2));
IOCP.DataSend(aIndex, (LPBYTE)&this->m_Notice , this->m_Notice.h.size );
}
void TNotice::GCNoticeSend(int aIndex, BYTE type, BYTE count, BYTE opacity, WORD delay, DWORD color, BYTE speed, char* message, ...) // OK
{
char buff[256] = { };
va_list arg;
va_start(arg, message);
vsprintf_s(buff, message, arg);
va_end(arg);
int size = strlen(buff);
size = ((size>MAX_MESSAGE_SIZE) ? MAX_MESSAGE_SIZE : size);
PMSG_NOTICE_SEND pMsg;
pMsg.header.set((LPBYTE)&pMsg, 0x0D, (sizeof(pMsg) - (sizeof(pMsg.message) - (size + 1))));
pMsg.type = type;
pMsg.count = count;
pMsg.opacity = opacity;
pMsg.delay = delay;
pMsg.color = color;
pMsg.speed = speed;
memcpy(pMsg.message, buff, size);
pMsg.message[size] = 0;
IOCP.DataSend(aIndex, (BYTE*)&pMsg, pMsg.header.size);
}
void TNotice::GCNoticeSendToAll(BYTE type, BYTE count, BYTE opacity, WORD delay, DWORD color, BYTE speed, char* message, ...) // OK
{
char buff[256] = { 0};
va_list arg;
va_start(arg, message);
vsprintf_s(buff, message, arg);
va_end(arg);
int size = strlen(buff);
size = ((size>MAX_MESSAGE_SIZE) ? MAX_MESSAGE_SIZE : size);
PMSG_NOTICE_SEND pMsg;
pMsg.header.set((LPBYTE)&pMsg, 0x0D, (sizeof(pMsg) - (sizeof(pMsg.message) - (size + 1))));
pMsg.type = type;
pMsg.count = count;
pMsg.opacity = opacity;
pMsg.delay = delay;
pMsg.color = color;
pMsg.speed = speed;
memcpy(pMsg.message, buff, size);
pMsg.message[size] = 0;
for (int n = g_ConfigRead.server.GetObjectStartUserIndex(); n < g_ConfigRead.server.GetObjectMax(); n++)
{
if (gObjIsConnectedGP(n) != 0)
{
IOCP.DataSend(n, (BYTE*)&pMsg, pMsg.header.size);
}
}
}
YesKilling monsters appears in the League announcement
How to solve this problem
https://ibb.co/bzMRdDw
The source code of the message has been corrected, please check againCode: [Select]
void TNotice::MakeNoticeMsg(void * lpNotice, BYTE btType, char * szNoticeMsg)
{
PMSG_NOTICE* pNotice = (PMSG_NOTICE*)lpNotice;
pNotice->type = btType;
memcpy(pNotice->Notice, szNoticeMsg, strlen(szNoticeMsg));
wsprintf(pNotice->Notice, szNoticeMsg);
PHeadSetB((LPBYTE)pNotice, 0x0D, strlen(pNotice->Notice) + sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + 1);
// PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
//
// pNotice->dwColor = 0;
//
// char szTempMsg[4096] = { 256, };
// memset(pNotice->Notice, 256, sizeof(pNotice->Notice));
//
// va_list pArguments;
// //va_start(pArguments, szNoticeMsg);
// vsprintf(szTempMsg, szNoticeMsg, pArguments);
// va_end(pArguments);
//
// MultiByteToWideChar(DEFAULT_CODEPAGE, 0, (char*)szNoticeMsg, strlen(szNoticeMsg), (WCHAR*)szTempMsg, sizeof(szTempMsg));
// memcpy(pNotice->Notice, szTempMsg, sizeof(pNotice->Notice));
// pNotice->Notice[sizeof(pNotice->Notice) - 2] = 0;
// pNotice->Notice[sizeof(pNotice->Notice) - 1] = 0;
// PHeadSetB((LPBYTE)pNotice, 0x0D, sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + (wcslen((WCHAR*)pNotice->Notice) * 2 + 2));
}
void TNotice::MakeNoticeMsgEx(void * lpNotice, BYTE btType, char * szNoticeMsg, ...)
{
PMSG_NOTICE* pNotice = (PMSG_NOTICE*)lpNotice;
pNotice->type = btType;
va_list pArguments;
va_start(pArguments, szNoticeMsg);
vsprintf((char*)pNotice->Notice, (char*)szNoticeMsg, pArguments);
va_end(pArguments);
PHeadSetB((LPBYTE)pNotice, 0x0D, strlen(pNotice->Notice) + sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + 1);
/*PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
pNotice->dwColor = 0;
char szTempMsg[4096] = { 0, };
memset(pNotice->Notice, 0, sizeof(pNotice->Notice));
va_list pArguments;
va_start(pArguments, szNoticeMsg);
vsprintf(szTempMsg, szNoticeMsg, pArguments);
va_end(pArguments);
MultiByteToWideChar(DEFAULT_CODEPAGE, 0, (char*)szTempMsg, strlen(szTempMsg), (WCHAR*)pNotice->Notice, sizeof(pNotice->Notice));
pNotice->Notice[sizeof(pNotice->Notice) - 2] = 0;
pNotice->Notice[sizeof(pNotice->Notice) - 1] = 0;
PHeadSetB((LPBYTE)pNotice, 0x0D, sizeof(PMSG_NOTICE) - sizeof(pNotice->Notice) + (wcslen((WCHAR*)pNotice->Notice) * 2 + 2));*/
}
void TNotice::SetNoticeProperty(void * lpNotice, BYTE btType, DWORD dwColor, BYTE btCount, WORD wDelay, BYTE btSpeed)
{
PMSG_NOTICE * pNotice =(PMSG_NOTICE *) lpNotice;
pNotice->type = btType;
pNotice->dwColor = dwColor;
pNotice->btCount = btCount;
pNotice->wDelay = wDelay;
pNotice->btSpeed = btSpeed;
}
void TNotice::SendNoticeToAllUser(void * lpNotice)
{
PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
for ( int n = g_ConfigRead.server.GetObjectStartUserIndex() ; n < g_ConfigRead.server.GetObjectMax() ; n++)
{
if ( gObj[n].Connected == PLAYER_PLAYING )
{
if ( gObj[n].Type == OBJ_USER )
{
IOCP.DataSend(n, (unsigned char*)pNotice , pNotice->h.size );
}
}
}
}
void TNotice::SendNoticeToUser(int aIndex, void * lpNotice)
{
PMSG_NOTICE * pNotice = (PMSG_NOTICE *)lpNotice;
IOCP.DataSend(aIndex, (unsigned char*)pNotice, pNotice->h.size );
}
void TNotice::AllSendServerMsg(LPSTR chatmsg)
{
PMSG_NOTICE pNotice;
MakeNoticeMsg((TNotice *)&pNotice, 0, chatmsg);
for ( int n = g_ConfigRead.server.GetObjectStartUserIndex() ; n < g_ConfigRead.server.GetObjectMax() ; n++)
{
if ( gObj[n].Connected == PLAYER_PLAYING )
{
if ( gObj[n].Type == OBJ_USER )
{
IOCP.DataSend(n, (unsigned char*)&pNotice , pNotice.h.size );
}
}
}
}
void TNotice::GCServerMsgStringSend(LPSTR szMsg, int aIndex, BYTE type)
{
PMSG_NOTICE pNotice;
MakeNoticeMsg(&pNotice, type, szMsg);
IOCP.DataSend(aIndex, (unsigned char*)&pNotice, pNotice.h.size);
}
TNotice::TNotice(BYTE btType)
{
this->m_Notice.btCount = 1;
this->m_Notice.btSpeed = 20;
this->m_Notice.dwColor = _ARGB(255, 255, 200, 80 );
this->m_Notice.wDelay = 0;
this->m_Notice.type = btType;
}
void TNotice::SendToAllUser(LPSTR szMsg, ...)
{
va_list pArguments;
va_start(pArguments, szMsg);
vsprintf(this->m_Notice.Notice, (char*)szMsg, pArguments);
va_end(pArguments);
PHeadSetB((LPBYTE)&this->m_Notice, 0x0D, strlen(this->m_Notice.Notice) + sizeof(PMSG_NOTICE) - sizeof(this->m_Notice.Notice) + 1);
for (int n = g_ConfigRead.server.GetObjectStartUserIndex(); n < g_ConfigRead.server.GetObjectMax(); n++)
{
if (gObj[n].Connected == PLAYER_PLAYING)
{
if (gObj[n].Type == OBJ_USER)
{
IOCP.DataSend(n, (LPBYTE)&this->m_Notice, this->m_Notice.h.size);
}
}
}
}
void TNotice::SendToUser(int aIndex, LPSTR szMsg, ...)
{
char szTempMsg[4096] = { 0, };
memset(m_Notice.Notice, 0, sizeof(m_Notice.Notice));
va_list pArguments;
va_start(pArguments, szMsg);
vsprintf(szTempMsg, szMsg, pArguments);
va_end(pArguments);
MultiByteToWideChar(DEFAULT_CODEPAGE, 0, (char*)szTempMsg, strlen(szTempMsg), (WCHAR*)m_Notice.Notice, sizeof(m_Notice.Notice));
m_Notice.Notice[sizeof(m_Notice.Notice) - 2] = 0;
m_Notice.Notice[sizeof(m_Notice.Notice) - 1] = 0;
PHeadSetB((LPBYTE)&m_Notice, 0x0D, sizeof(PMSG_NOTICE) - sizeof(m_Notice.Notice) + (wcslen((WCHAR*)m_Notice.Notice) * 2 + 2));
IOCP.DataSend(aIndex, (LPBYTE)&this->m_Notice , this->m_Notice.h.size );
}
void TNotice::GCNoticeSend(int aIndex, BYTE type, BYTE count, BYTE opacity, WORD delay, DWORD color, BYTE speed, char* message, ...) // OK
{
char buff[256] = { };
va_list arg;
va_start(arg, message);
vsprintf_s(buff, message, arg);
va_end(arg);
int size = strlen(buff);
size = ((size>MAX_MESSAGE_SIZE) ? MAX_MESSAGE_SIZE : size);
PMSG_NOTICE_SEND pMsg;
pMsg.header.set((LPBYTE)&pMsg, 0x0D, (sizeof(pMsg) - (sizeof(pMsg.message) - (size + 1))));
pMsg.type = type;
pMsg.count = count;
pMsg.opacity = opacity;
pMsg.delay = delay;
pMsg.color = color;
pMsg.speed = speed;
memcpy(pMsg.message, buff, size);
pMsg.message[size] = 0;
IOCP.DataSend(aIndex, (BYTE*)&pMsg, pMsg.header.size);
}
void TNotice::GCNoticeSendToAll(BYTE type, BYTE count, BYTE opacity, WORD delay, DWORD color, BYTE speed, char* message, ...) // OK
{
char buff[256] = { 0};
va_list arg;
va_start(arg, message);
vsprintf_s(buff, message, arg);
va_end(arg);
int size = strlen(buff);
size = ((size>MAX_MESSAGE_SIZE) ? MAX_MESSAGE_SIZE : size);
PMSG_NOTICE_SEND pMsg;
pMsg.header.set((LPBYTE)&pMsg, 0x0D, (sizeof(pMsg) - (sizeof(pMsg.message) - (size + 1))));
pMsg.type = type;
pMsg.count = count;
pMsg.opacity = opacity;
pMsg.delay = delay;
pMsg.color = color;
pMsg.speed = speed;
memcpy(pMsg.message, buff, size);
pMsg.message[size] = 0;
for (int n = g_ConfigRead.server.GetObjectStartUserIndex(); n < g_ConfigRead.server.GetObjectMax(); n++)
{
if (gObjIsConnectedGP(n) != 0)
{
IOCP.DataSend(n, (BYTE*)&pMsg, pMsg.header.size);
}
}
}
Is this solved by compiling the source again and correcting what was mentioned?
me pasa con los mix de crear el hammer, crear las blessed archangel,desbloquear los set bloodangel, me podrias pasar tu mix.bmd??? he probado con otros pero sigue igual y algunos no son compatibles o si tenes el cliente me lo pasarias porq tengo 2 clientes de la misma vercion y en ninguno anda esos mix
Te compartiria pero nose si te generara problemas, ya que estube agregando nuevos Mix.....
Ejemplo. Upgrade de set holyangel a (awakening, blue eye, silverheart, manticore, brilliant) y otros mix nuevos..
(https://ibb.co/CJJ4yJv)
pasamelo si podes, lo probare igual aver si asi me anda :(
ya te lo mande por MP