这段时间小编连续接到好几个新手奇迹私服gm的来信,他们都遇到了一个相同的问题。那就是在服务器中玩家不经过盟主同意直接进入其他玩家的战盟,并且当前战盟无法将其踢出去的问题。经过小编仔细的研究发生目前这种情况并不是说对方的技术有多么的厉害,如果对方真的有那么厉害的话就不单单是加其他盟的问题了,而是直接捣毁你的服务器让你血本无归。经过分析小编绝对对方应该是发现了什么bug达到的这个效果。
经过对数据库及其存贮程序进行分析,原来是其存贮过程有误,别人可以再建立新盟,建立新盟时用别人盟名,这样盟会建立成功,他入了别人盟,原盟主也无法将他踢出,这主要是数据库中的存贮过程WZ_GuildCreate缺少对盟重名判断所致。
现已经将其存贮过程纠正,如果有这个问题的,请将下边代码直接替换掉原来的存贮过程就可以了。
更改方法:打开 SQL企业管理器 ,找到并打开 MuOline 数据库(这应当会吧),再点里边的“存贮过程”,然后会看到一个存贮过程WZ_GuildCreate,双击WZ_GuildCreate,会打开一个对话框,中间白色的编辑区就是源代码区了,把先内容删除,把下边的内容复制上去就可以了。(为了,建议你先把先来的代码保存起来)。
说这么详细,大家应该会了吧?
我的:11220200 MU当家的
希望同MU GM们交流经验及心得!
CREATE procedure WZ_GuildCreate
@GuildName nvarchar(50),
@MasterName nvarchar(10)
as
if (SELECT COUNT(*) FROM guild where G_Name=@GuildName )=0
BEGIN ,
DECLARE @ErrorCode int
SET @ErrorCode = 0
SET XACT_ABORT OFF
Set nocount on
begin transaction
-- 望萄蒂 儅撩棻. copyright
INSERT INTO Guild (G_Name, G_Master) valueS (@GuildName, @MasterName) 本文来自织梦
IF ( @@Error <> 0 )
本文来自织梦
BEGIN
copyright
SET @ErrorCode = 1
.com
END
-- 望萄蒂 薑鼻瞳戲煎 儅撩 棻賊
IF ( @ErrorCode = 0 )
BEGIN
,
-- 望萄 葆蝶攪煎 蹺陛棻.
INSERT GuildMember (Name, G_Name, G_Level) valueS (@MasterName, @GuildName, 1)
IF ( @@Error <> 0 )
BEGIN
SET @ErrorCode = 2 .com
END
END
IF ( @ErrorCode <> 0 )
rollback transaction
ELSE
commit transaction
select @ErrorCode
,
Set nocount off
SET XACT_ABORT ON
END
GO
上面小编介绍的几个方法应该基本上解决奇迹sf中未经盟主同意加盟问题,小编在其中一个遇到这样问题的新手奇迹私服gm的服务器中做过验证,使用上面的方法之后游戏中并没有在出现这种情况。由于初步判断是bug导致小编并没有绝对把握这个方法能够疯掉这个bug,但是应该问题不会很大如果还有玩家实用上面的方法后再次出现这个问题,请第一时间联系我们。
|