Auto Banir
Bom como tem muita gente sofrendo com serves e com os hacks uhashs
resolvi posta esse tuto pelo menos para segurar o famoso Dupe hack,eu postei a query,de ant dupe no serve,mais caso algumm ''hackerzão'' conseguir dupar e so por o auto ban em kem dupar no serve XD
Aki estão os passos,siga tudo certinho que não dará possiveis erros
1 - Vá em Iniciar / Programas / Microsoft SQL Server / Query Analyzer
2 - Será aberto um recorrente que diz conectar ao SQL Server, ai você vai entrar com seu loguin e senha do sql.
3 - Após logar no sql,use a data base MuOnline e copie este texto
if exists(select * from dbo.sysobjects where type='p' and name='WZ_GetItemSerial')<br /> drop procedure WZ_GetItemSerial<br /> go<br /> CREATE procedure WZ_GetItemSerial<br /> as<br /> BEGIN<br /> DECLARE @ItemSerial int<br /> set nocount on<br /> begin transaction<br /> update GameServerInfo set @ItemSerial = ItemCount = (case when ItemCount < 0x7effffff then ItemCount+1<br /> else 1<br /> end )<br /> if(@@error <> 0)<br /> begin<br /> rollback transaction<br /> select-1<br /> end<br /> else<br /> begin<br /> commit transaction<br /> select @ItemSerial<br /> end<br /> END<br /> <br /> GO<br /> if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_CheckSameID]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)<br /> drop trigger [dbo].[trg_CheckSameID]<br /> GO<br /> <br /> if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AllItemsLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)<br /> drop table [dbo].[AllItemsLog]<br /> GO<br /> <br /> if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CopyLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)<br /> drop table [dbo].[CopyLog]<br /> GO<br /> <br /> CREATE TABLE [dbo].[AllItemsLog] (<br /> [items_id] [int] IDENTITY (1, 1) NOT NULL ,<br /> [items_type] [binary] (1) NOT NULL ,<br /> [items_serial] [binary] (4) NOT NULL ,<br /> [items_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL<br /> ) ON [PRIMARY]<br /> GO<br /> <br /> CREATE TABLE [dbo].[CopyLog] (<br /> [copy_id] [int] IDENTITY (1, 1) NOT NULL ,<br /> [copy_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,<br /> [copy_whdata] [binary] (1200) NOT NULL ,<br /> [copy_date] [datetime] NOT NULL<br /> ) ON [PRIMARY]<br /> GO<br /> <br /> ALTER TABLE [dbo].[AllItemsLog] ADD<br /> CONSTRAINT [DF_CT_ITEM_item] DEFAULT (0) FOR [items_type],<br /> CONSTRAINT [DF_CT_ITEM_itemid] DEFAULT (0) FOR [items_serial],<br /> CONSTRAINT [DF_CT_ITEM_itemrole] DEFAULT ('\') FOR [items_acid]<br /> GO<br /> <br /> CREATE INDEX [IX_CT_ITEM] ON [dbo].[AllItemsLog]([items_type], [items_serial]) ON [PRIMARY]<br /> GO<br /> <br /> ALTER TABLE [dbo].[CopyLog] ADD<br /> CONSTRAINT [DF_CopyLog_copy_date] DEFAULT (getdate()) FOR [copy_date]<br /> GO<br /> <br /> <br /> SET QUOTED_IDENTIFIER ON<br /> GO<br /> SET ANSI_NULLS ON<br /> GO<br /> <br /> CREATE TRIGGER [dbo].[trg_CheckSameID] ON [dbo].[character]<br /> FOR UPDATE<br /> AS<br /> BEGIN<br /> IF UPDATE(inventory)<br /> BEGIN<br /> SET NOCOUNT ON<br /> DECLARE<br /> @wh_acid varchar(10),<br /> @wh_data binary(1200),<br /> @wh_type binary(1),<br /> @wh_serial binary(4),<br /> <br /> @cr_user varchar(10),<br /> @cr_acid varchar(10),<br /> @cr_data binary(760),<br /> @cr_type binary(1),<br /> @cr_serial binary(4),<br /> <br /> @al_acid varchar(10),<br /> @j int,<br /> @k int,<br /> @find bit<br /> <br /> SELECT @cr_acid=i.accountid,<br /> @cr_data=i.inventory<br /> FROM inserted i<br /> <br /> SET @j=0<br /> SET @find=0<br /> <br /> WHILE @j<76 AND @cr_data IS NOT NULL<br /> BEGIN<br /> SET @cr_type=SUBSTRING(@cr_data,@j*10+1,1)<br /> SET @cr_serial=SUBSTRING(@cr_data,@j*10+4,4)<br /> IF @cr_type<>0xFF AND @cr_serial<>0x00000000<br /> BEGIN<br /> SELECT @al_acid=items_acid FROM allitemslog WHERE items_type=@cr_type AND items_serial=@cr_serial<br /> <br /> <br /> IF @al_acid IS NULL<br /> INSERT INTO allitemslog (items_type,items_serial,items_acid) VALUES (@cr_type,@cr_serial,@cr_acid)<br /> ELSE<br /> BEGIN<br /> UPDATE allitemslog SET items_acid=@cr_acid WHERE items_type=@cr_type AND items_serial=@cr_serial<br /> <br /> <br /> SELECT @wh_data=items FROM warehouse WHERE accountid=@al_acid<br /> <br /> SET @k=0<br /> WHILE @k<120 AND @wh_data IS NOT NULL<br /> BEGIN<br /> SET @wh_type=SUBSTRING(@wh_data,@k*10+1,1)<br /> SET @wh_serial=SUBSTRING(@wh_data,@k*10+4,4)<br /> IF @wh_type=@cr_type AND @wh_serial=@cr_serial<br /> SET @find=1<br /> SET @k=@k+1<br /> END<br /> END<br /> END<br /> SET @j=@j+1<br /> END<br /> IF @find=1<br /> BEGIN<br /> INSERT INTO copylog (copy_whdata,copy_acid,copy_date) VALUES (@wh_data,@al_acid,getdate())<br /> -- this is wer u can add more punishment like ban or lock characters<br /> UPDATE Character SET CtlCode=1 WHERE accountid=@al_acid<br /> END<br /> SET NOCOUNT OFF<br /> END<br /> END<br /> GO<br /> SET QUOTED_IDENTIFIER OFF<br /> GO<br /> SET ANSI_NULLS ON<br /> GO<br /> DECLARE @al_acid char(50)<br /> set @al_acid = 'ASUS'<br /> UPDATE Character SET CtlCode=1 WHERE accountid=@al_acid<br /> go<br /> select * from AllItemsLog<br /> select * from CopyLog
4 - Presione F5 e depois Ctrl N
5 - Vai abrir 1 outra tela ,copie o texto abaixo
select * from AllItemsLog
select * from CopyLog
6 - De F5 e Ctrl N novamente e mais 1 vez vai abrir uma outra tela ,ai você ira colar o código abaixo !
select * from CopyLog
7 - Presione F5 e está tudo pronto ,e em seguida feche todas as janelas abertas,salvando todos os logs onde você quiser
PS:Faça isso somente com os players ke estiverem online no servidor
Bom e possivel de alguns chars tomarem block veja um exemplo de situaçao e de como tirar o auto ban:
Exemplo de sit.
Se um player tem 2 items com o mesmo serial no inventario vai ser block !!
Sendo qe todos os itens comprados em NPCS recebem o Serial 00000 Entao se o cara tem apenas 2 potions compradas no Npc, vai reconhecer como Dup e todos Serao Block !
Como tirar o AutoBan:
è so vcs deletarem as Triggers que foram criadas pelo codigo , que para de dar Block se haver de bugar
Postar um comentário