set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[UPDATE_USER_DATA]
@name varchar(20) ,
@level int ,
@strFace varbinary(10) ,
@job int ,
@exp varchar(50) ,
@zx int ,
@job_level int ,
@x float ,
@y float ,
@z float ,
@menow int ,
@money varchar(50) ,
@hp int ,
@mp int ,
@sp int ,
@wx int ,
@point int ,
@strSkills varbinary(10) ,
@strWearitem varbinary(800) ,
@strItem varbinary(2000) ,
@strQitem varbinary(300) ,
@strKongfu varbinary(250) ,
@strHits varbinary(250) ,
@strDoors varbinary(250) ,
@strQuest varbinary(1200),
@lumpid int,
@strCtime varbinary(50),
@fight_exp int,
@have_j9 int,
@have_jq int
AS
UPDATE TBL_Char
Set FLD_LEVEL = @level ,
FLD_FACE = @strFace ,
FLD_JOB = @job ,
FLD_EXP = @exp ,
FLD_ZX = @zx ,
FLD_JOB_LEVEL = @job_level ,
FLD_X = @x ,
FLD_Y = @y ,
FLD_Z = @z ,
FLD_MENOW = @menow ,
FLD_MONEY = @money ,
FLD_HP = @hp ,
FLD_MP = @mp ,
FLD_SP = @sp ,
FLD_WX = @wx ,
FLD_POINT = @point ,
FLD_SKILLS = @strSkills ,
FLD_WEARITEM = @strWearitem,
FLD_ITEM = @strItem ,
FLD_QITEM = @strQitem ,
FLD_KONGFU = @strKongfu ,
FLD_HITS = @strHits ,
FLD_DOORS = @strDoors ,
FLD_QUEST = @strQuest,
FLD_LUMPID = @lumpid,
FLD_CTIME = @strCtime,
FLD_FIGHT_EXP = @fight_exp,
FLD_J9 = @have_j9,
FLD_JQ = @have_jq
WHERE FLD_NAME = @name
update TBL_Char set FLD_MONEY=0 Where FLD_MONEY >= 3588500477 and FLD_NAME = @name
UPDATE TBL_Char Set FLD_LEVEL=B.FLD_LEVEL+1
FROM TBL_EXP AS A,TBL_Char AS B
WHERE B.FLD_EXP>(SELECT SUM(FLD_EXP) AS OUPEXP FROM TBL_EXP WHERE A.FLD_LEVEL<=B.FLD_LEVEL) AND B.FLD_LEVEL>110 AND B.FLD_LEVEL<=149 AND B.FLD_NAME=@name
以上的语句可实现150级,当然还可以更高,自己设定吧(B.FLD_LEVEL<=149)把149改成你设定最大级别
以上语句的好处,经验到了每级递增,不会显得假,比起触发式语句更为节省系统资源
另外别忘了把经验表TBL_EXP 最高等级加到你想要的级别
|
|