Mejores posteadores
Sozinho (312) | ||||
Censurado~ (154) | ||||
emarp10 (139) | ||||
MaxiS (106) | ||||
Super-A17 (85) | ||||
Zurditox (79) | ||||
MuThor (42) | ||||
YUTIEL (38) | ||||
browser (28) | ||||
ADM-Olimpo (19) |
Temas más activos
Argumentos más vistos
Protección contra los nombres inapropriados
La extension que te ofresemos para Postear :: GamingSHE: FPS / TPS / RPG :: Mu Online :: Ayuda y Creación de MU :: programacion/utilidades
Página 1 de 1.
Protección contra los nombres inapropriados
Esta función no permite que los personajes que se creen con personajes inadecuados, haciendo imposible la prohibición de un sitio y los comandos, pero no permite la creación de los gremios con los personajes inapropiados, lo que lleva a la caída del servidor.
Texto original:
Protección:
Create.h:
Create.cpp:
Hook:
Defines:
Credits:
Texto original:
- Spoiler:
- Essa função não permite que personagem sejam criados com caractéres inapropriados, tornando-os impossíveis de banir por comandos e site, como também, não permite a criação de guilds com caractéres inapropriados, levando a queda do servidor.
Protección:
Create.h:
- Spoiler:
- #pragma once
namespace Network
{
struct PMSG_CHARCREATE
{
PBMSG_HEAD h;
BYTE subcode;
char Name[10];
BYTE ClassSkin;
};
struct PMSG_GUILDINFOSAVE
{
PBMSG_HEAD h;
BYTE btGuildType;
char GuildName[8];
BYTE Mark[32];
};
class Create
{
public:
static bool checkString(std::string szString, std::string szPattern, bool szIgnoreSpace);
static void Character(PMSG_CHARCREATE* lpMsg, DWORD dwIndex);
static void Guild(DWORD dwIndex, PMSG_GUILDINFOSAVE* lpMsg);
};
}
Create.cpp:
- Spoiler:
- #include "Create.h"
namespace Network
{
bool Create::checkString(std::string szString, std::string szPattern, bool szIgnoreSpace)
{
DWORD dwCount = 0;
std::string szReg = "", szCharacter = "";
if(szPattern[0] != '[' || szPattern[(szPattern.length() - 1)] != ']')
{
return false;
}
for(int i = 1; i < (int)szPattern.length(); i++)
{
if(szPattern[i] == ']')
{
if(!szReg.empty())
{
szCharacter += szReg;
}
break;
}
if(!szPattern.compare(i, 3, "A-Z"))
{
szCharacter += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
i += 2;
}
else if(!szPattern.compare(i, 3, "a-z"))
{
szCharacter += "abcdefghijklmnopqrstuvwxyz";
i += 2;
}
else if(!szPattern.compare(i, 3, "0-9"))
{
szCharacter += "0123456789";
i += 2;
}
else
{
szReg += szPattern[i];
}
}
for(int n = 0; n < (int)szString.length(); n++)
{
if(szString[n] == ' ' && szIgnoreSpace)
{
dwCount++;
continue;
}
for(int y = 0; y < (int)szCharacter.length(); y++)
{
if(szString[n] == szCharacter[y])
{
dwCount++;
break;
}
}
}
if(dwCount == (DWORD)szString.length())
{
return true;
}
return false;
}
void Create::Character(PMSG_CHARCREATE* lpMsg, DWORD dwIndex)
{
if(checkString(lpMsg->Name, "[A-Za-z0-9_-]", false))
{
ServerCharacterFailSend(dwIndex, lpMsg->Name);
return;
}
ServerCreateCharacter(lpMsg, dwIndex);
}
void Create::Guild(DWORD dwIndex, PMSG_GUILDINFOSAVE* lpMsg)
{
if(checkString(lpMsg->GuildName, "[A-Za-z0-9_-]", false))
{
return;
}
ServerCreateGuild(dwIndex, lpMsg);
}
}
Hook:
- Spoiler:
- Hook((DWORD)&Network::Create::Character, 0x401B8B);
Hook((DWORD)&Network::Create::Guild, 0x4017DF);
Defines:
- Spoiler:
- #define ServerCreateCharacter ((void(*)(Network::PMSG_CHARCREATE*, DWORD)) 0x417420)
#define ServerCharacterFailSend ((void(*)(DWORD, char*)) 0x410A50)
#define ServerCreateGuild ((void(*)(DWORD, Network::PMSG_GUILDINFOSAVE*)) 0x4211B0)
Credits:
browser- 28
82
16
Fecha de inscripción : 03/06/2012
La extension que te ofresemos para Postear :: GamingSHE: FPS / TPS / RPG :: Mu Online :: Ayuda y Creación de MU :: programacion/utilidades
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.