xdhhw1 发表于 2008-6-20 23:32:16

求助:如何解决选择角色时重复选择国家问题?

找来找去都找不到答案,请知道的朋友解答下吧。

谢谢。

ctgwglzc 发表于 2008-6-20 23:55:58

1、首先清空你库中所有角色和帐号(必须,如果不,那下面的做了也枉然)

涉及到以下4个表中数据,必须清掉
1.account_chart
2.userdata
3.TB_user
4.warehuse
最好看下knight表,把骑士团信息也给清掉

ctgwglzc 发表于 2008-6-20 23:57:39

2、修改ACCOUNT_LOGIN存储过程为


CREATE PROCEDURE ACCOUNT_LOGIN
@AccountID varchar(21),
@Password varchar(13),
@nRetsmallint OUTPUT
AS
-- Myst tarafından kodlanmıştır ( burayı değiştiren toptur )
select @nRet = count(straccountid) from tb_user where straccountid = @AccountID
if @nRet = 0
begin
insert into tb_user (straccountid, strpasswd, strSocNo, idays) values (@AccountID, @password, 1, '6')
end

-- tid login method by samma 2004.02.24
DECLARE @Nation tinyint, @CharNum smallint
SET @Nation = 0
SET @CharNum = 0
DECLARE @pwd varchar(13)
SET @pwd = null
SELECT @pwd = strPasswd FROM . WHERE strAccountID = @AccountIDandidays>0
IF @pwd IS null
BEGIN
SET @nRet = 0
             --SET @nRet = 4
RETURN
END
ELSE IF @pwd <> @Password
BEGIN
SET @nRet = 0
             --SET @nRet = 3
RETURN
END
DECLARE @gokhantasci varchar(21)
select @gokhantasci = count(straccountid)FROM premium_service WHERE strAccountID = @AccountID
if @gokhantasci = 0
begin
insert into PREMIUM_SERVICE (strAccountID, strType, nDays) VALUES (@AccountID, 1, 3)
end
SELECT @Nation = bNation, @CharNum = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
IF @@ROWCOUNT = 0
BEGIN
SET @nRet = 1
RETURN
END
IF @CharNum = 0
BEGIN
SET @nRet = 1
RETURN
END
ELSE
BEGIN
SET @nRet = @Nation+1
             --SET @nRet = 1
RETURN
END
GO

ctgwglzc 发表于 2008-6-20 23:58:42

3.修改myst_login存储过程为

CREATE PROCEDURE Account_LOGIN
@AccountID        varchar(21),
@Password        varchar(13),
@nRet                smallint        OUTPUT

AS


DECLARE @Nation tinyint, @CharNum smallint
SET @Nation = 0
SET @CharNum = 0

DECLARE @pwd varchar(13)

SET @pwd = null

SELECT @pwd = strPasswd FROM . WHERE strAccountID = @AccountID
IF @pwd IS null
BEGIN
        SET @nRet = 0
        RETURN
END

ELSE IF @pwd <> @Password
BEGIN
        SET @nRet = 0
        RETURN
END

SELECT @Nation = bNation, @CharNum = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
IF @@ROWCOUNT = 0
BEGIN
        SET @nRet = 1
        RETURN
END
IF @CharNum >= 0
BEGIN
        SET @nRet = 1
        RETURN
END
ELSE
BEGIN
        SET @nRet = @Nation+1
        RETURN
END
GO

ctgwglzc 发表于 2008-6-20 23:59:55

4、如果还不行,建议换库吧

现在一大把土人的数据库都解决了这个问题,
你稍加修改就OK了

xdhhw1 发表于 2008-6-22 09:19:27

收到!!!感谢塞外飞雪!

天剑风小流 发表于 2008-6-22 21:38:04

唉,多用搜索~~~~~~~~~~~

vvforgs 发表于 2008-6-22 23:34:12

我非常虔诚地按照你的办法做了3遍
每次的测试结果都是账号只能登陆一次
下次再登陆就提示密码错误

ctgwglzc 发表于 2008-6-23 00:25:32

不知你的这个回答和我的那个过程有何区别

原帖由 vvforgs 于 2008-6-22 23:34 发表 http://www.kofans.cn/bbs/static/image/common/back.gif
我非常虔诚地按照你的办法做了3遍
每次的测试结果都是账号只能登陆一次
下次再登陆就提示密码错误
http://www.kofans.cn/bbs/viewthread.php?tid=6978&highlight=%C3%DC%C2%EB%B4%ED%CE%F3


原帖由 xdhhw1 于 2008-6-22 09:19 发表 http://www.kofans.cn/bbs/static/image/common/back.gif
收到!!!感谢塞外飞雪!
不知是否解决问题?

vvforgs 发表于 2008-6-23 08:26:09

就是这样啊
我account_login换成你上面的代码
账号就只能登陆一次
用我发的那段代码
又跳不过种族选择
页: [1] 2
查看完整版本: 求助:如何解决选择角色时重复选择国家问题?