linux Admin
Mensajes : 16 Fecha de inscripción : 01/12/2008
| Tema: [Guia] Baneando a los que dupean Lun Dic 01, 2008 4:38 pm | |
| hola, esta guia sirve para que las personas que dupean en sus server, sean baneadas automaticamente despues de desconectarse del servidor, asi seran castigados todos los jugadores ilegales del server. aqui estan los pasos 1- vas a inicio/programas/microsof sql server/analizador de consultas 2- se abrira un recuado que dice conectar a sql server, ahi tiene que salir tine que salir el nombre dle servidor, sino sale lo agregas, colocas aceptar 3-copias este texto: - Código:
-
[color=green]use muonline if exists(select * from dbo.sysobjects where type='p' and name='WZ_GetItemSerial') drop procedure WZ_GetItemSerial go CREATE procedure WZ_GetItemSerial as BEGIN DECLARE @ItemSerial int set nocount on begin transaction update GameServerInfo set @ItemSerial = ItemCount = (case when ItemCount < 0x7effffff then ItemCount+1 else 1 end ) if(@@error <> 0) begin rollback transaction select-1 end else begin commit transaction select @ItemSerial end END
GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[trg_CheckSameID]') and OBJECTPROPERTY(id, N'IsTrigger') = 1) drop trigger [dbo].[trg_CheckSameID] GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AllItemsLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[AllItemsLog] GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CopyLog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[CopyLog] GO
CREATE TABLE [dbo].[AllItemsLog] ( [items_id] [int] IDENTITY (1, 1) NOT NULL , [items_type] [binary] (1) NOT NULL , [items_serial] [binary] (4) NOT NULL , [items_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[CopyLog] ( [copy_id] [int] IDENTITY (1, 1) NOT NULL , [copy_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [copy_whdata] [binary] (1200) NOT NULL , [copy_date] [datetime] NOT NULL ) ON [PRIMARY] GO
ALTER TABLE [dbo].[AllItemsLog] ADD CONSTRAINT [DF_CT_ITEM_item] DEFAULT (0) FOR [items_type], CONSTRAINT [DF_CT_ITEM_itemid] DEFAULT (0) FOR [items_serial], CONSTRAINT [DF_CT_ITEM_itemrole] DEFAULT ('\') FOR [items_acid] GO
CREATE INDEX [IX_CT_ITEM] ON [dbo].[AllItemsLog]([items_type], [items_serial]) ON [PRIMARY] GO
ALTER TABLE [dbo].[CopyLog] ADD CONSTRAINT [DF_CopyLog_copy_date] DEFAULT (getdate()) FOR [copy_date] GO
SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO
CREATE TRIGGER [dbo].[trg_CheckSameID] ON [dbo].[character] FOR UPDATE AS BEGIN IF UPDATE(inventory) BEGIN SET NOCOUNT ON DECLARE @wh_acid varchar(10), @wh_data binary(1200), @wh_type binary(1), @wh_serial binary(4),
@cr_user varchar(10), @cr_acid varchar(10), @cr_data binary(760), @cr_type binary(1), @cr_serial binary(4),
@al_acid varchar(10), @j int, @k int, @find bit
SELECT @cr_acid=i.accountid, @cr_data=i.inventory FROM inserted i
SET @j=0 SET @find=0
WHILE @j<76 AND @cr_data IS NOT NULL BEGIN SET @cr_type=SUBSTRING(@cr_data,@j*10+1,1) SET @cr_serial=SUBSTRING(@cr_data,@j*10+4,4) IF @cr_type<>0xFF AND @cr_serial<>0x00000000 BEGIN SELECT @al_acid=items_acid FROM allitemslog WHERE items_type=@cr_type AND items_serial=@cr_serial
IF @al_acid IS NULL INSERT INTO allitemslog (items_type,items_serial,items_acid) VALUES (@cr_type,@cr_serial,@cr_acid) ELSE BEGIN UPDATE allitemslog SET items_acid=@cr_acid WHERE items_type=@cr_type AND items_serial=@cr_serial
SELECT @wh_data=items FROM warehouse WHERE accountid=@al_acid
SET @k=0 WHILE @k<120 AND @wh_data IS NOT NULL BEGIN SET @wh_type=SUBSTRING(@wh_data,@k*10+1,1) SET @wh_serial=SUBSTRING(@wh_data,@k*10+4,4) IF @wh_type=@cr_type AND @wh_serial=@cr_serial SET @find=1 SET @k=@k+1 END END END SET @j=@j+1 END IF @find=1 BEGIN INSERT INTO copylog (copy_whdata,copy_acid,copy_date) VALUES (@wh_data,@al_acid,getdate()) -- this is wer u can add more punishment like ban or lock characters UPDATE Character SET CtlCode=1 WHERE accountid=@al_acid END SET NOCOUNT OFF END END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO DECLARE @al_acid char(50) set @al_acid = 'ASUS' UPDATE Character SET CtlCode=1 WHERE accountid=@al_acid go select * from AllItemsLog select * from CopyLog[/color]
4- precionas F5 y ctrl N 5- se abrira otro recuadro, en este recuadro copias esto otro: - Código:
-
[color=green][font=Arial Black]use MuOnline select * from AllItemsLog select * from CopyLog[/font][/color] 6- presionas F5 y crtl N 7- se abrira otro recuadro y copias esto otro: - Código:
-
[color=green]use MuOnline select * from CopyLog[/color] 8- presionas F5 y estas listo, luego cierra las ventatas y guarda los cambios, te guardara unos block de notas, guardalos en donde tu quieras PD: para que te resulte tienes que tener usuarios online espero que les sive cualquier duda con este antidupe por sql me avisan por el foro byeeeeeeee Por favor realicen un BackUp (copia de seguridad) de su base de datos MuOnline, antes de ejecutar este script. Fue testeado en 97, 97+99 y 99. | |
|
J0RG325
Mensajes : 1 Fecha de inscripción : 03/12/2008
| Tema: Re: [Guia] Baneando a los que dupean Miér Dic 03, 2008 3:33 am | |
| SI SUPUESTAMENTE SAVES DEVERIAS DECIRLES A LOS USUARIOS QUE ESTA CONSULTA NO SIRVE, TIENEN QUE CORREGIRLA PORQUE LA QUE TU PUSISTE BANEA A LAS PERSONAS POR ERROR, Y ESE ERROR SE TIENE QUE CORREGIR.
NO SAVES NADA. | |
|