给0.97D加入角色生成时间
Published: Comment: No Comments
Last Modified:2024-06-18 18:27:58
由于0.97D没有角色的生成时间,而自己又正好想要做个调用的测试
首先建立一个角色的生成时间表
ALTER TABLE Character
ADD [MDate] [smalldatetime] NULL;
然后删除默认的角色存储过程
DROP PROCEDURE dbo.WZ_CreateCharacter;
GO
最后重新建立添加了建立角色时间的 角色的存储过程
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[WZ_CreateCharacter]
@AccountID varchar(10),
@Name varchar(10),
@Class tinyint
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @Result tinyint
SET @Result = 0x00
IF EXISTS (SELECT Name FROM Character WHERE Name = @Name)
BEGIN
SET @Result = 0x01
GOTO ProcEnd
END
BEGIN TRAN
IF NOT EXISTS (SELECT Id FROM AccountCharacter WHERE Id = @AccountID)
BEGIN
INSERT INTO AccountCharacter (Id, GameID1, GameID2, GameID3, GameID4, GameID5, GameIDC)
VALUES (@AccountID, @Name, NULL, NULL, NULL, NULL, NULL)
SET @Result = @@Error
END
ELSE
BEGIN
DECLARE @g1 varchar(10), @g2 varchar(10), @g3 varchar(10), @g4 varchar(10), @g5 varchar(10)
SELECT @g1=GameID1, @g2=GameID2, @g3=GameID3, @g4=GameID4, @g5=GameID5
FROM AccountCharacter
WHERE Id = @AccountID
IF((@g1 IS NULL) OR (Len(@g1) = 0))
BEGIN
UPDATE AccountCharacter
SET GameID1 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
END
ELSE IF((@g2 IS NULL) OR (Len(@g2) = 0))
BEGIN
UPDATE AccountCharacter
SET GameID2 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
END
ELSE IF((@g3 IS NULL) OR (Len(@g3) = 0))
BEGIN
UPDATE AccountCharacter
SET GameID3 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
END
ELSE IF((@g4 IS NULL) OR (Len(@g4) = 0))
BEGIN
UPDATE AccountCharacter
SET GameID4 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
END
ELSE IF((@g5 IS NULL) OR (Len(@g5) = 0))
BEGIN
UPDATE AccountCharacter
SET GameID5 = @Name
WHERE Id = @AccountID
SET @Result = @@Error
END
ELSE
BEGIN
SET @Result = 0x03
GOTO TranProcEnd
END
END
IF (@Result <> 0)
BEGIN
GOTO TranProcEnd
END
ELSE
BEGIN
INSERT INTO Character (AccountID, Name, cLevel, LevelUpPoint, Class, Strength, Dexterity, Vitality, Energy, Inventory, MagicList, Life, MaxLife, Mana, MaxMana, BP, MaxBP, MapNumber, MapPosX, MapPosY, Quest, DbVersion, EffectList, MDate)
SELECT @AccountID AS AccountID, @Name AS Name, Level, LevelUpPoint, @Class AS Class, Strength, Dexterity, Vitality, Energy, Inventory, MagicList, Life, MaxLife, Mana, MaxMana, 0, 0, MapNumber, MapPosX, MapPosY, Quest, DbVersion, EffectList, getdate() As MDate
FROM DefaultClassType WHERE Class = @Class
SET @Result = @@Error
END
TranProcEnd:
IF (@Result <> 0)
ROLLBACK TRAN
ELSE
COMMIT TRAN
ProcEnd:
SET NOCOUNT OFF
SET XACT_ABORT OFF
SELECT CASE @Result
WHEN 0x00 THEN 0x01
WHEN 0x01 THEN 0x00
WHEN 0x03 THEN 0x03
ELSE 0x02
END AS Result
END
GO