搜索
 找回密码
 加入

1310登陆时的问题,解决了的请进。。。

jinwenjian 2010-9-26 16:01:00 1557
登陆游戏如果帐号或密码输入错误,怎么总是提示错误255,请问如何能将提示改为“帐号或密码错误”这样的提示,我试着按1299哪样改了下面的SET @nRet = 0 换为 SET @nRet = 2 或3,结果都是无论输什么号都能进游戏,但库中没有该帐号

下面是登陆时的存贮过程,请高手指点1310中该如何改

CREATE PROCEDURE [dbo].[ACCOUNT_LOGIN]
        @AccountID        varchar(21),
        @Password        varchar(32),
        @nRet                smallint        OUTPUT
AS
DECLARE @pwd varchar(32), @Authority int, @count int, @Nation int, @CharNum int
BEGIN

        -- <RETRIEVE ACCOUNT DATA>
        SELECT @pwd = strPasswd, @Authority = strAuthority FROM TB_USER WHERE strAccountID = @AccountID
        -- </RETRIEVE ACCOUNT DATA>

        -- <ACCOUNT DOES NOT EXIST>
        IF @@ROWCOUNT = 0
        BEGIN
                SET @nRet = 0
                RETURN
        END
        -- </ACCOUNT DOES NOT EXIST>

        -- <BANNED>
        IF @Authority = 255
        BEGIN
                SET @nRet = 0
                RETURN
        END
        -- </BANNED>
       
        -- <EMPTY PASSWORD>
        ELSE IF @pwd IS NULL
        BEGIN
                SET @nRet = 0
                RETURN
        END
        -- </EMPTY PASSWORD>

        -- <INVALID PASSWORD>       
        ELSE IF @pwd <>  @Password
        BEGIN
                SET @nRet = 0
                RETURN
        END
        -- </INVALID PASSWORD>

        -- <RETRIEVE NATION AND CHARACTER COUNT>
        SELECT @Nation = bNation, @CharNum = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
        -- </RETRIEVE NATION AND CHARACTER COUNT>

        -- <NO NATION SELECTED>
        IF @@ROWCOUNT = 0 OR @CharNum = 0
        BEGIN
                SET @nRet = 1
        END
        -- </NO NATION SELECTED>
        ELSE
        -- <NATION ALREADY SELECTED>
        BEGIN
                SET @nRet = @Nation + 1
        END
        -- </NATION ALREADY SELECTED>
END
GO

8 回复

1111
2009-9-13 04:54:36
点击查看详情
换L啊 和储存啊
28085279
2009-9-13 09:52:50
1310的数据库密码是MD5格式的
jinwenjian
2009-9-13 12:02:28
楼主
我改成不是MD5格式了,和1299的一样
ctgwglzc
2009-9-13 16:33:32
L程序有问题
214550663
2009-9-13 16:57:59
28085279 你的1310服务端,进游戏到选择人物那里就没反应了。
talkweb
2009-9-14 12:04:57
CREATE PROCEDURE [dbo].[ACCOUNT_LOGIN]
        @AccountID        varchar(21),
        @Password        varchar(32),
        @nRet                smallint        OUTPUT
AS
DECLARE @pwd varchar(32), @Authority int, @count int, @Nation int, @CharNum int
BEGIN

        -- <RETRIEVE ACCOUNT DATA>
        SELECT @pwd = strPasswd, @Authority = strAuthority FROM TB_USER WHERE strAccountID = @AccountID
        -- </RETRIEVE ACCOUNT DATA>

        -- <ACCOUNT DOES NOT EXIST>
        IF @@ROWCOUNT = 0
        BEGIN
                SET @nRet = 0
                RETURN
        END
        -- </ACCOUNT DOES NOT EXIST>

        -- <BANNED>
        IF @Authority = 255
        BEGIN
                SET @nRet = 0
                RETURN
        END
        -- </BANNED>
       
        -- <EMPTY PASSWORD>
        ELSE IF @pwd IS NULL
        BEGIN
                SET @nRet = 0
                RETURN
        END
        -- </EMPTY PASSWORD>

        -- <INVALID PASSWORD>       
       --ELSE IF @pwd <>  SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', @Password)), 3, 32)
            
        ELSE IF @pwd <>   master.dbo.xp_md5(@Password)
        BEGIN
                SET @nRet = 0
                RETURN
        END
        -- </INVALID PASSWORD>

        -- <RETRIEVE NATION AND CHARACTER COUNT>
        SELECT @Nation = bNation, @CharNum = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
        -- </RETRIEVE NATION AND CHARACTER COUNT>

        -- <NO NATION SELECTED>
        IF @@ROWCOUNT = 0 OR @CharNum = 0
        BEGIN
                SET @nRet = 1
        END
        -- </NO NATION SELECTED>
        ELSE
        -- <NATION ALREADY SELECTED>
        BEGIN
                SET @nRet = @Nation + 1
        END
        -- </NATION ALREADY SELECTED>
END



GO
talkweb
2009-9-14 12:06:00
安装方法】
  ① 通过执行 SQL 语句注册存储过程:
     打开 Master 数据库,然后执行下面 SQL 语句
     EXEC sp_addextendedproc 'xp_md5', 'd:\pathname\xp_md5.dll'

     如果注册的文件不包含路径,只有文件名,MSSQL会在这个文件夹里面找这个.dll
     C:\Program Files\Microsoft SQL Server\MSSQL\Binn


CREATE FUNCTION [dbo].[fn_md5x] (@data IMAGE, @len INT = -1)
RETURNS CHAR(32) AS
BEGIN
  DECLARE @hash CHAR(32)
  EXEC master.dbo.xp_md5 @data, @len, @hash OUTPUT
  RETURN @hash
END




CREATE FUNCTION [dbo].[fn_md5] (@data TEXT)
RETURNS CHAR(32) AS
BEGIN
  DECLARE @hash CHAR(32)
  EXEC master.dbo.xp_md5 @data, -1, @hash OUTPUT
  RETURN @hash
END




   dbo.fn_md5(@Password)
feifeixia
2010-9-26 16:01:00
看不懂!
高级模式
游客