搜索
 找回密码
 加入

无聊中,发个多功能的存储(爆点、负钱、负经验、卡团)~

Rayman 2009-9-27 10:45:58 2125
本帖最后由 Rayman 于 2009-6-20 17:32 编辑

  1. /****** Object:  Stored Procedure dbo.LOAD_USER_DATA    Script Date: 2009-04-10 11:09 am ******/
  2. --最后修改:BY Slleo

  3. CREATE PROCEDURE LOAD_USER_DATA
  4. @AccountID        char(21),
  5. @id                char(21),
  6. @nRet                smallint OUTPUT

  7. AS

  8. --GM号的登陆
  9. Declare @isGM int,@nzone int,@knights int,@exp int,@gold int
  10. SELECT @isGM = Authority,@nzone=zone,@gold=gold  FROM USERDATA WHERE strUserID =@id
  11. --如果不是GM号,则强制检查能力点是否异常
  12. IF @isGM<>0
  13. BEGIN
  14.         exec S_CheckPoint @id
  15. END

  16. --把非GM号移到DLW
  17. if @nzone=21 and @isGM<>0
  18. begin
  19.         update userdata set zone=30,PX=50000,PZ=25500,PY=8340 WHERE strUserId = @id
  20. end

  21. --修正卡团现象
  22. IF @knights=0
  23. BEGIN
  24.         delete from knights_user WHERE strUserId = @id
  25. END

  26. --修正负经验
  27. IF @exp<0
  28. BEGIN
  29.         UPDATE USERDATA SET exp=100,hp=100 WHERE strUserId = @id
  30. END

  31. --修正负金钱
  32. if @gold < 0
  33. begin
  34. update userdata set gold = abs(@gold) where struserid = @id
  35. end

  36. --对登陆者的时间进行记录
  37. BEGIN
  38.         INSERT INTO S_UserLog (strAccountID,strUserID, LoginDate,strAction) VALUES (@AccountID,@id, getdate(),'Login')
  39. END


  40. --以下开始自动二转
  41. DECLARE @class char(21),@levelim int
  42. set @class = (select class from userdata where struserid = @id)
  43. Select @levelim = [Level] FROM USERDATA WHERE strUserID = @id
  44. if @class = 105 AND @levelim > 59
  45. begin
  46. update userdata set class = 106 where struserid = @id
  47. end
  48. if @class = 107 AND @levelim > 59
  49. begin
  50. update userdata set class = 108 where struserid = @id
  51. end
  52. if @class = 109 AND @levelim > 59
  53. begin
  54. update userdata set class = 110 where struserid = @id
  55. end
  56. if @class = 111 AND @levelim > 59
  57. begin
  58. update userdata set class = 112 where struserid = @id
  59. end
  60. if @class = 205 AND @levelim > 59
  61. begin
  62. update userdata set class = 206 where struserid = @id
  63. end
  64. if @class = 207 AND @levelim > 59
  65. begin
  66. update userdata set class = 208 where struserid = @id
  67. end
  68. if @class = 209 AND @levelim > 59
  69. begin
  70. update userdata set class = 210 where struserid = @id
  71. end
  72. if @class = 211 AND @levelim > 59
  73. begin
  74. update userdata set class = 212 where struserid = @id
  75. end

  76. --以下是此存储原来拥有的部分,不可删除
  77. DECLARE @charid1 char(21), @charid2 char(21), @charid3 char(21)
  78. DECLARE @True smallint
  79. SET @charid1 = null
  80. SET @charid2 = null
  81. SET @charid3 = null
  82. SET @True = 0
  83. SET @nRet = 0

  84. SELECT @charid1 = strCharID1, @charid2 = strCharID2, @charid3 = strCharID3 FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
  85. IF @id = @charid1 or @id = @charid2 or @id = @charid3
  86.         SET @True = 1
  87. IF @True = 0
  88. BEGIN
  89.         SET @nRet = 0
  90.         RETURN
  91. END
  92. SELECT Nation, Race, Class, HairColor, Rank, Title, [Level], [Exp], Loyalty, Face, City, Knights, Fame,
  93.          Hp, Mp, Sp, Strong, Sta, Dex, Intel, Cha, Authority, Points, Gold, [Zone], Bind, PX, PZ, PY, dwTime, strSkill, strItem,strSerial, sQuestCount, strQuest, MannerPoint, LoyaltyMonthly
  94.         FROM        USERDATA WHERE strUserId = @id

  95. SET @nRet = @@RowCount

  96. RETURN
  97. GO
复制代码
其实原理很简单,也是小儿科,但是解决了现存1299很多库的问题:负钱,负经验,卡团,爆点(涉及到另一个存储)等。此存储适用于1299,13xx,我觉得2.0也稍加修改可以用,虽然2.0的我没见过,但存储都大同小异。

评分

1

查看全部评分

10 回复

arbies
2009-6-24 17:32:17
点击查看详情
客观地讲,这种修正金钱的方法对于玩家是不公平的,由于服务器的限制而白白没了21E!

改进一下,在修正为绝对值的同时,能不能在其他地方返还这21E呢,例如仓库,例如往身上加金条
xz7323746
2009-6-25 06:23:59
好东西。
ykp!
2009-6-28 18:46:32
Ty For Share !
ctgwglzc
2009-6-28 20:22:39
客观地讲,这种修正金钱的方法对于玩家是不公平的,由于服务器的限制而白白没了21E!

改进一下,在修正为绝对值的同时,能不能在其他地方返还这21E呢,例如仓库,例如往身上加金条
arbies 发表于 2009-6-24 17:32

感觉钱多变付的人不值得同情
无敌小生
2009-8-9 14:44:39
{:1_204:}CT说的是实话哈哈
kfyyq
2009-8-10 15:58:49
你少发个存储过程,有毛用啊?哗众取宠!
Rayman
2009-8-12 03:03:45
楼主
楼上所说的少个存储,因为已经不重要了,你指的是:
--如果不是GM号,则强制检查能力点是否异常

IF @isGM<>0

BEGIN

        exec S_CheckPoint @id

END


在1299中,我是利用S_CheckPoint来检测人物点是否异常,但1310以后的版本,这几行删除好了,用不上了。
yl79401
2009-9-25 17:11:52
这么好的东西,不顶,还顶什么呢。
我顶
狂顶
再顶
继续顶
我再顶
加油顶
我一直顶
顶完了吧
大家来一起顶,哇哈哈,喝爽歪歪,精神好呀!
luluji
2009-9-27 10:45:58
说真的,1310我还没有真的用过?
12下一页
高级模式
游客