首先,大家研究的那种取消T键和D键以及分线防复制的思路都是不正确的,不过增加了复制的难度而以,不是真正的治根的方法。我的这种方法大部分源程序来源于别人写的,是谁写的我也不知道,转贴的人太多了。不过当时他没有能解决掉清除复制品和踢人下线的这两个问题,复制品照样可以转给别人,并且实时检测非常浪费内存,等于没有作用。先在你的memb_info 表中加入一个字段FZ,类型为int,默认值是0,用做记录复制次数
在autogmgg 表中加入一个字段gq,类型为int,默认值是0,用做清除过期的公告
原理:复制成功后自动改了仓库密码使用户无法打开仓库,并且自动记录并且发布到自动公告中去,在下线时自动清空仓库,超过三次自动封账号。 本文来自织梦
以前这种方法因为没办法及时把用户踢下线而无法正常使用,现在这种解决方法应当不存在了,我用了一个月基本没有人敢复制了。前题是你已经清除掉了那些已经被复制过的物品,这个方法不会清除0编号的物品,对已经复制过的物品也无效果。
第一段,触发器,直接在查询分析器中对着你的数据表运行就可以了 织梦内容管理系统
--建立数据表 copyright dedecms
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 内容来自dedecms
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 (0) FOR [items_acid]
GO copyright dedecms
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 dedecms.com
--建触发器 织梦内容管理系统
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
--从旧主人仓库中查找是否还有同样ID物品
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())
update memb_info set fz=fz+1 where memb___id= @al_acid
--注意这里的PW=多少改成自已才知道的4位数字密码
update warehouse set pw=5555 WHERE accountid=@al_acid 织梦好,好织梦
--修改仓库密码第一次发的有问题这里多了一行,现在改好了 dedecms.com
INSERT INTO autogmgg (Valid,SvrID,Type,BeginTM,EndTM,DispJG,WorkMINU,LoopMINU,Notice,gq) values (1,0,0,getdate(),getdate()+2,15,15,15,@al_acid+'在'+convert(varchar(10),getdate(),111)+' '+convert(varchar(10),getdate(),8)+'进行了复制行为,已经被记录,并且被自动清空仓库,超过三次自动删除此账号',1)
END
SET NOCOUNT OFF
END
END 内容来自dedecms
第二段。下线自动清空仓库,改回密码,打开企业管理器,选中你的数据表,选中存贮过程,选中WZ_DISCONNECT_MEMB,点右键选属性,就可以看见代码了,在
UPDATE MEMB_STAT
这句代码下面加入
update memb_info set bloc_code=1 where memb___id=@uid and fz > 3
--超过三次被自动封好
update warehouse set items = null , pw=0 WHERE accountid= @uid and pw=5555
--这里是你上面设置的那个密码5555,把它改成只有你知道的,要和上面一样才行 本文来自织梦
第三段,清除过期的公告,和第二段的加入方法一样
在这个存贮过程MyGSFun_SBKEND,中加入,加在这句下面"set @ec=0"
--自动删除过期的复制品广告
delete from autogmgg where gq=1 and getdate()-BeginTM>1
--删除结束后面的那个1表示删除过期一天的复制公告,如果为2表明公告二天。
1.76精品传奇_1.76天下毁灭_1.76复古传奇_英雄合击_中变靓装传奇_无忧传奇
传奇花屏补丁,花屏补丁,土城花屏补丁,盟重土城花屏补丁下载,土城花屏补丁下载,沙巴克花屏补丁,传奇土城花屏补丁下载
网站每天发布最新、最好的传奇版本下载和与传奇服务端配套开区传奇模版,网游技术教程全部免费下载!
无忧网络是目前唯一家所有的传奇服务端,传奇私服花屏补丁,盟重花屏补丁和传奇客户端下载都经过站长亲自测试并配有真实测试图!
所有的工具软件和传奇版本在发布之前,都会经过站长亲自测试,保证chuanqisf可以进入游戏,所有软件都无毒无插件!
本站声明:本站所有技术资料与下载资源均为网络搜集整理,并不代表本站的观点与立场,如有侵犯您的权益,请来信指出,本站将立即改正Copyright © 2002-2014 无忧网络 版权所有蜀ICP备09041899号