搜索
 找回密码
 加入

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

xdhhw1 2008-6-23 08:26:09 2320
找来找去都找不到答案,请知道的朋友解答下吧。

谢谢。

12 回复

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存储过程为


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

  12. -- tid login method by samma 2004.02.24
  13. DECLARE @Nation tinyint, @CharNum smallint
  14. SET @Nation = 0
  15. SET @CharNum = 0
  16. DECLARE @pwd varchar(13)
  17. SET @pwd = null
  18. SELECT @pwd = strPasswd FROM [dbo].[TB_USER] WHERE strAccountID = @AccountID  and  idays>0
  19. IF @pwd IS null
  20. BEGIN
  21. SET @nRet = 0
  22.              --SET @nRet = 4
  23. RETURN
  24. END
  25. ELSE IF @pwd <> @Password
  26. BEGIN
  27. SET @nRet = 0
  28.              --SET @nRet = 3
  29. RETURN
  30. END
  31. DECLARE @gokhantasci varchar(21)
  32. select @gokhantasci = count(straccountid)  FROM premium_service WHERE strAccountID = @AccountID
  33. if @gokhantasci = 0
  34. begin
  35. insert into PREMIUM_SERVICE (strAccountID, strType, nDays) VALUES (@AccountID, 1, 3)
  36. end
  37. SELECT @Nation = bNation, @CharNum = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
  38. IF @@ROWCOUNT = 0
  39. BEGIN
  40. SET @nRet = 1
  41. RETURN
  42. END
  43. IF @CharNum = 0
  44. BEGIN
  45. SET @nRet = 1
  46. RETURN
  47. END
  48. ELSE
  49. BEGIN
  50. SET @nRet = @Nation+1
  51.              --SET @nRet = 1
  52. RETURN
  53. END
  54. GO
复制代码
ctgwglzc
2008-6-20 23:58:42

3.修改myst_login存储过程为

  1. CREATE PROCEDURE Account_LOGIN
  2. @AccountID        varchar(21),
  3. @Password        varchar(13),
  4. @nRet                smallint        OUTPUT

  5. AS


  6. DECLARE @Nation tinyint, @CharNum smallint
  7. SET @Nation = 0
  8. SET @CharNum = 0

  9. DECLARE @pwd varchar(13)

  10. SET @pwd = null

  11. SELECT @pwd = strPasswd FROM [dbo].[TB_USER] WHERE strAccountID = @AccountID
  12. IF @pwd IS null
  13. BEGIN
  14.         SET @nRet = 0
  15.         RETURN
  16. END

  17. ELSE IF @pwd <> @Password
  18. BEGIN
  19.         SET @nRet = 0
  20.         RETURN
  21. END

  22. SELECT @Nation = bNation, @CharNum = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
  23. IF @@ROWCOUNT = 0
  24. BEGIN
  25.         SET @nRet = 1
  26.         RETURN
  27. END
  28. IF @CharNum >= 0
  29. BEGIN
  30.         SET @nRet = 1
  31.         RETURN
  32. END
  33. ELSE
  34. BEGIN
  35.         SET @nRet = @Nation+1
  36.         RETURN
  37. END
  38. 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 发表
我非常虔诚地按照你的办法做了3遍
每次的测试结果都是账号只能登陆一次
下次再登陆就提示密码错误

http://www.kofans.cn/bbs/viewthr ... C%C2%EB%B4%ED%CE%F3


原帖由 xdhhw1 于 2008-6-22 09:19 发表
收到!!!感谢塞外飞雪!

不知是否解决问题?
vvforgs
2008-6-23 08:26:09
就是这样啊
我account_login换成你上面的代码
账号就只能登陆一次
用我发的那段代码
又跳不过种族选择
12下一页
高级模式
游客