⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mu_wed_zs.txt

📁 玩过奇迹私服的都知道有转生系统 现提供转生所用的 SQL存储过程 雨天工作室:天才一叼叼
💻 TXT
字号:
CREATE PROCEDURE  ZS
               @ACC VARCHAR(10), 	       
               
               @CLZB VARCHAR(5),
               @JCZB CHAR(5),
               @NAME VARCHAR(10),
               @PASS VARCHAR(10),
               @XZZS VARCHAR(5),
               @ZSJGSJ SMALLINT,
               
               
               @ZSJS INT,
AS
SET NOCOUNT ON
DECLARE        @ACCQX CHAR(1)
DECLARE        @CGXS INT
DECLARE        @Class tinyint
DECLARE        @DEXTERITY SMALLINT
DECLARE        @ENERGY SMALLINT
DECLARE        @EXPERIENCE INT
DECLARE        @ITEMS VARBINARY(1200)	--前12件物品
DECLARE        @JDJ SMALLINT
DECLARE        @MONEY INT
DECLARE        @MDATE DATETIME
DECLARE        @MANA REAL,@LIFE REAL
DECLARE        @MAPNUMBER SMALLINT
DECLARE        @MAPPOSX SMALLINT
DECLARE        @MAPPOSY SMALLINT
DECLARE        @MJSJ DATETIME
DECLARE        @PKLEVEL INT
DECLARE        @PPKTIME INT
DECLARE        @PKCOUNT INT
DECLARE        @RITEMS VARBINARY(1200)
DECLARE        @STRENGTH SMALLINT
DECLARE        @USERCLEVEL SMALLINT
DECLARE        @VITALITY SMALLINT
DECLARE        @XSZSCLEVEL SMALLINT
DECLARE        @XSZSCOUNT INT
DECLARE        @XZSCOUNT INT
DECLARE        @XCZSSJ VARCHAR(50)
DECLARE        @YNAME VARCHAR(10)
DECLARE        @YMONEY INT
DECLARE        @YZSTIME DATETIME
DECLARE        @ZSLEVELUPPOINT INT
DECLARE        @ZSSJ DATETIME
DECLARE        @ZZSCOUNT INT
DECLARE        @ZCOUNT INT
DECLARE        @ZSCOUNT SMALLINT
DECLARE        @CLEVEL SMALLINT


/*判断在线*/
SET @XZSCOUNT=0
SET @ZCOUNT=0
SET @ZCOUNT=DBO.JC_USER_ONLINE(@ACC)
IF @ZCOUNT >= 1
	BEGIN
		SELECT '用户在线上请先下线。'
		SET NOCOUNT OFF
		RETURN
	END
SELECT @YMONEY=MONEY,@YNAME=NAME,@ITEMS=INVENTORY,@MDATE=MDATE,@Class=Class,@USERCLEVEL=CLEVEL,@PPKTIME=PKTIME,@PKCOUNT=PKLEVEL FROM CHARACTER WHERE NAME = @NAME AND ACCOUNTID=@ACC
IF @YNAME IS NULL OR @YNAME = ''
	BEGIN
		SELECT '角色名不存在请从试。'
		SET NOCOUNT OFF
		RETURN
	END
/*--------------------------检查是否装备物品----------------------*/
DECLARE @I INT
IF(@JCZB = 'YTRUE')
	BEGIN
		SET @I=0
		WHILE @I<12
		BEGIN
			IF SUBSTRING(@ITEMS,@I*10+1,1)<>0XFF
				BREAK
			SET @I=@I+1
		END
		IF @I<12	--错误退出
		BEGIN
			SELECT '转生时身上不得装备任何物品 !'
			RETURN
		END
	END
/*-----------------------------------------------------------------*/
SELECT @ACCQX=QX FROM MEMB_INFO WHERE MEMB___ID=@ACC 
IF @ACCQX='A'
	BEGIN
		SELECT '会员请在会员转生处转生:)'
				SET NOCOUNT OFF
				RETURN
			
	END
IF @ACCQX='B'
	BEGIN
		  SELECT @ZSCOUNT=zscount FROM GMmanner WHERE QX='B'
                  SET @XZSCOUNT=@ZSCOUNT
	END

SELECT @ZZSCOUNT=ZSCS,@ZSSJ=ZSTIME,@XCZSSJ=CONVERT(VARCHAR,DATEADD(MINUTE,@ZSJGSJ,ZSTIME),111) + ' ' + CONVERT(VARCHAR,DATEADD(MINUTE,@ZSJGSJ,ZSTIME),8)  FROM WEB_ZS WHERE NAME=@NAME
/*-----------------------判断修正转生数据-----------------------------*/
IF(@ZSSJ IS NULL)
	BEGIN
		SET @ZSSJ=GETDATE()
	END
IF(@MDATE >= @ZSSJ)
	BEGIN
		IF(@XZZS = 'STRUE')
			BEGIN
				SELECT '你的转生数据有误请联系管理员进行修正后再转生'
				SET NOCOUNT OFF
				RETURN
			END
		IF(@XZZS = 'YTRUE')
			BEGIN
				SET @ZCOUNT=0											
				SELECT @ZCOUNT=COUNT(*) FROM WEB_ZS WHERE NAME=@NAME
				IF @ZCOUNT > 0
					BEGIN
						UPDATE WEB_ZS SET ZSTIME=GETDATE(),BSCS=0,CZCS=0,ZSCLEVEL=1,ZSCS=0,CJZSCS=0,ZJZSCS=0,GJZSCS=0,LEVELUPPOINT=0 WHERE NAME=@NAME
					END
				ELSE
					BEGIN
						INSERT INTO WEB_ZS(ACC,NAME,ZSTIME,ZSCLEVEL,ZSCS,CJZSCS,GJZSCS,ZJZSCS,LEVELUPPOINT,BSCS,CZCS) VALUES(@ACC,@NAME,GETDATE(),1,0,0,0,0,0,0,0)
					END
				SELECT @ZZSCOUNT=ZSCS,@ZSSJ=ZSTIME FROM WEB_ZS WHERE NAME=@NAME
				SET @ZSJGSJ=0
			END
	END
/*--------------------------检查转生时间-------------------------------*/

IF(@ZZSCOUNT IS NULL OR @ZZSCOUNT <= 0)
	BEGIN
		SET @ZSJGSJ=0
		SET @ZZSCOUNT=0
	END

IF(DATEADD(MINUTE,@ZSJGSJ,@ZSSJ) > GETDATE())
	BEGIN
		SELECT '你现在还不能转生,你的下次转生时间为' + @XCZSSJ
		SET NOCOUNT OFF
		RETURN
	END

IF @ZZSCOUNT >= @XZSCOUNT
	BEGIN
		SELECT '对不起你不能再转生了!!您已经转生了'+ CONVERT(VARCHAR,@ZZSCOUNT) +'!请马上去升级会员哦!'
		SET NOCOUNT OFF
		RETURN
	END

/*------------判断是否是新手转生------------------*/
DECLARE  @ZSCLEVEL SMALLINT
DECLARE  @ZSZSCLEVEL SMALLINT
DECLARE  @GSZSCLEVEL  SMALLINT 
DECLARE  @ZSZSCOUNT SMALLINT
select 
@ZSCLEVEL=zsclevel,@XSZSCOUNT=xszscount,@ZSZSCOUNT=zszscount,@XSZSCLEVEL=xszsclevel,@ZSZSCLEVEL=zszsclevel,@GSZSCLEVEL=gszsclevel FROM GMmanner WHERE QX='B'
  
IF (@ZZSCOUNT < @XSZSCOUNT )
	BEGIN
		
				SET @MONEY=100000000
			
		
		SET @CLEVEL=@XSZSCLEVEL
	END
IF(@ZZSCOUNT>=@XSZSCOUNT AND @ZZSCOUNT<@ZSZSCOUNT)
BEGIN
		
				SET @MONEY=100000000
			
		
		SET @CLEVEL=@ZSZSCLEVEL
	END
IF(@ZZSCOUNT>=@ZSZSCOUNT AND @ZZSCOUNT<@XZSCOUNT)

				SET @MONEY=100000000
			
		
		SET @CLEVEL=@GSZSCLEVEL


SET @ZZSCOUNT = @ZZSCOUNT + 1
/*---------------判断是否够等级-----------------*/
IF (@USERCLEVEL < @CLEVEL)
	BEGIN
		SELECT '兄弟啊!你的等级还不够再去练练吧!!转生需要'+ CONVERT(VARCHAR,@CLEVEL) +'级哦!'
		SET NOCOUNT OFF
		RETURN
	END
/*---------------判断是否红名或魔头-----------------*/
IF(@PKLEVEL = 0)
	BEGIN
		IF(@PKCOUNT > 3)			
			BEGIN
				SELECT '系统提示:目前不允许红名和魔头转生!'
				SET NOCOUNT OFF
				RETURN
			END
		IF(@PKCOUNT <= 3 AND @PPKTIME > 0)			
			BEGIN
				SELECT '系统提示:你的杀人通缉时间还没过,不能转生。\N如果你不是红名而又出现这种情况,请用“清洗红名”功能进行免费洗名。'
				SET NOCOUNT OFF
				RETURN
			END
		SET @ZCOUNT=0
/*---------------------判断身上是否有中够的钱转生---------------------------------*/
IF (@YMONEY < @MONEY)
	BEGIN
		SELECT '你的帐号余额不足!转生需要'+ CONVERT(VARCHAR,@MONEY) +'MONEY!'
		SET NOCOUNT OFF
		RETURN
	END
	
/*--------------------------------转生--------------------------------------*/
DECLARE @ERC INT
SET @ERC = 1
BEGIN TRAN
IF (@class = 0)
 BEGIN   
 exec check_class @class
   END
END
IF (@class = 16)
 BEGIN   
 exec check_class @class
END
IF (@class =32)
 BEGIN   
 exec check_class @class
END
IF (@class = 48)
 BEGIN   
 exec check_class @class
END
IF (@class = 64)
 BEGIN   
 exec check_class @class
END


	BEGIN
		IF (@ZZSCOUNT < @XZSCOUNT)
			
		
	  	SET @ZSLEVELUPPOINT=300 +  @ZZSCOUNT * 150
		IF (@CLZB = 'YTRUE')
			BEGIN
				UPDATE CHARACTER SET INVENTORY=CAST(REPLICATE(CHAR(0XFF),760) AS VARBINARY(760)), 
MONEY=MONEY-@MONEY,
STRENGTH=@STRENGTH,
CLEVEL=@ZSCLEVEL,
LEVELUPPOINT=@ZSLEVELUPPOINT,
DEXTERITY=@DEXTERITY,
VITALITY=@VITALITY,
ENERGY=@ENERGY,
MAGICLIST=NULL,
MANA=@MANA,
MAXMANA=@MANA,
LIFE=@LIFE,
MAXLIFE=@LIFE,
MAPNUMBER=@MAPNUMBER,
MAPPOSX=@MAPPOSX,
MAPPOSY=@MAPPOSY,
PKLEVEL=3,
PKTIME=0,
PKCOUNT=0,
EXPERIENCE=0,
CLEVEL=2 
WHERE NAME=@NAME 
				
SET @ERC=2
			END
                       BEGIN
                          UPDATE WEB_ZS

AS
ZSTIME=@XCZSSJ,
ZSCLEVEL=@ZSCLEVEL,
ZSCS=@ZZSCOUNT,
LEVELUPPOINT=@ZSLEVELUPPOINT
WHERE NAME=@NAME AND ACC=@ACC
                       END
IF @ERC >= 1
	BEGIN
		SET @ZZSCOUNT = @ZZSCOUNT
		SELECT '恭喜您!您目前转生为'+ CONVERT(VARCHAR,@ZZSCOUNT) + '转了,您被扣除'+ CONVERT(VARCHAR,@MONEY) +'MU币.'
		COMMIT TRAN
		SET NOCOUNT OFF
		RETURN
	END
ELSE
	BEGIN
		SELECT'系统不能记录你的转身信息'
		ROLLBACK
		SET NOCOUNT OFF
		RETURN
	END
COMMIT TRAN
SET NOCOUNT OFF
	
END
GO

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -