Apenas letras e números em nome de guilds.
Não sei se há um tópico com o mesmo intuito que este(eu ao menos não vi); caso haja, algum moderador exclua este.
Bom, como muitos sabem, ao criar guild o gameserver por padrão, bloqueia alguns simobolos, como: @, !, #, $, %, entre outros. E alguns não são bloqueados.
A procedure postada a seguir, foi retirada de um servidor 97d.
Quem quiser usá-la em seu servidor, faça antes o backup da procedure original.
- Como faço um backup da procedure original?
- Abra seu query analyzer
- Conecte-se ao sql server
- No painel à esquerda - chamado "Object Browser" - clique no + na opção "MuOnline"
- Clique no + Stored Procedures
- Procure a procedure WZ_GuildCreate e clique com o botão direito do mouse no mesmo.
- Vá em "Script Object To File As > Alter"
- Salve em qualquer local do seu computador.
- Pronto, o backup da procedure está feito.
Após ter feito o backup, vá no query analyzer, copie o código abaixo e dê F5:
Código:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER procedure WZ_GuildCreate
@GuildName nvarchar(50),
@MasterName nvarchar(10)
as
IF (SELECT COUNT(*) FROM guild where G_Name=@GuildName )=0
BEGIN
DECLARE @p INTEGER
DECLARE @ErrorCode int
SET @ErrorCode = 0
SET XACT_ABORT OFF
Set nocount on
begin transaction
SELECT @p = PATINDEX('%[^a-zA-Z0-9]%',@GuildName)
IF(@p > 0)
BEGIN
SET @ErrorCode = 1
END
IF(@ErrorCode = 0)
BEGIN
INSERT INTO Guild (G_Name,G_Master,G_Score) values (@GuildName, @MasterName, 1)
IF(@@Error <> 0)
BEGIN
SET @ErrorCode = 1
END
END
IF(@ErrorCode = 0)
BEGIN
INSERT GuildMember (Name, G_Name, G_Level) values (@MasterName, @GuildName, 1)
IF (@@Error <> 0)
BEGIN
SET @ErrorCode = 2
END
END
IF(@ErrorCode <> 0)
rollback transaction
ELSE
commit transaction
select @ErrorCode
Set nocount off
SET XACT_ABORT ON
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Jogadores que tentarem criar guilds com simbolos que não foram bloqueados por padrão no gameserver, terá uma mensagem de erro, informando que a guild já existe(mesmo não sendo existente), impedindo-o que poça prosseguir com o mesmo.
Administradores que queiram liberar underline "_", em nome de guilds, basta procurar no código: '%[^a-zA-Z0-9]%' e modificá-lo para: '%[^a-zA-Z0-9_]%'.
- Mas pra que isso?
Simples. Como todos sabem, nenhuma segurança é 100%, sempre há um novo modo de burlar. E com essa procedure, você evitará de ter seu gameserver derrubado por programas como wpe pro.
- Como eles derrubam?
Não me pergunte, pois isso não sei informar.
Está procedure foi modificada por mim, e não apresenta nenhum tipo de falha.
Fiz e re-fiz diversos testes, e em todos obtive resultado positivo.
Lembrando, está procedure é para versões 97d.
Caso alguém tenha este problemas em gameservers superiores a está versão, basta informar a versão do muserver que irei modificá-la.
Obs: não será possível testar-la em meu computador, sendo assim, o mesmo membro que tenha pedido, terá que testá-lo.
Créditos
Procedure: WebZen
Modificação: Ðαяk Ðimeηsiση
Abraços.