- CREATE PROCEDURE CREATE_NEW_CHAR
- @nRet smallint OUTPUT,
- @AccountID char(21),
- @index tinyint,
- @CharID char(21),
- @Race tinyint,
- @Class smallint,
- @Hair tinyint,
- @Face tinyint,
- @Str tinyint,
- @Sta tinyint,
- @Dex tinyint,
- @Intel tinyint,
- @Cha tinyint
- AS
- DECLARE @Row tinyint, @Nation tinyint, @Zone tinyint, @PosX int, @PosZ int
- SET @Row = 0 SET @Nation = 0 SET @Zone = 0 SET @PosX = 0 SET @PosZ = 0
- SELECT @Nation = bNation, @Row = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
- IF @Row >= 5 SET @nRet = 1
- IF @Nation = 1 AND @Race > 10 SET @nRet = 2
- ELSE IF @Nation = 2 AND @Race < 10 SET @nRet = 2
- ELSE IF @Nation <>1 AND @Nation <> 2 SET @nRet = 2
- IF @nRet > 0
- RETURN
- SELECT @Row = COUNT(*) FROM USERDATA WHERE strUserId = @CharID
- IF @Row > 0
- BEGIN
- SET @nRet = 3
- RETURN
- END
- SET @Zone=21
- SELECT @PosX = InitX, @PosZ = InitZ FROM ZONE_INFO WHERE ZoneNo = @Zone
- select @row = 3
- if @CharID like '%___%'
- if @CharID like '%_%'
- if @CharID like '%__%'
- if @CharID like '%:%'
- if @CharID like '%::%'
- begin
- SET @nRet = 3
- RETURN
- END
- BEGIN TRAN
- IF @index = 0
- UPDATE ACCOUNT_CHAR SET strCharID1 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
- ELSE IF @index = 1
- UPDATE ACCOUNT_CHAR SET strCharID2 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
- ELSE IF @index = 2
- UPDATE ACCOUNT_CHAR SET strCharID3 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
- ELSE IF @index = 3
- UPDATE ACCOUNT_CHAR SET strCharID4 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
- ELSE IF @index = 4
- UPDATE ACCOUNT_CHAR SET strCharID5 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
- INSERT INTO USERDATA (strUserId, Nation, Race, Class, HairColor, Face, Strong, Sta, Dex, Intel, Cha, Zone, PX, PZ )
- VALUES (@CharID, @Nation, @Race, @Class, @Hair, @Face, @Str, @Sta, @Dex, @Intel, @Cha, @Zone, @PosX, @PosZ )
- exec baslangicitem @CharID
- update userdata set Class = 106 , strong = '255' , sta = '180' ,strskill = '?????P<???' , [level] = '83' , hp='5000' ,mp='5000' ,exp = '1' where struserid = @CharID and @Class = 101
- update userdata set Class = 108 , strong = '71' , dex = '255' , sta = '169' ,strskill ='P<' , [level] = '83' , hp ='5000' ,mp='5000' ,exp = '1' where struserid = @CharID and @Class = 102
- update userdata set Class = 110 , strong = '71' , sta = '100' , cha = '194' , intel = '162' ,strskill ='P<' , [level] = '83' , hp='5000' ,mp='5000' ,exp = '1' where struserid = @CharID and @Class = 103
- update userdata set Class = 112 , strong = '110' , sta = '120' , intel = '230' ,strskill ='P<' , [level] = '83' where struserid = @CharID and @Class = 104
- update userdata set Class = 206 , strong = '255' , sta = '180' ,strskill ='P<' , [level] = '83' , hp='5000' ,mp='5000' ,exp = '1' where struserid = @CharID and @Class = 201
- update userdata set Class = 208 , strong = '71' , dex = '255' , sta = '169' ,strskill ='P<' , [level] = '83' , hp='5000' ,mp='5000' ,exp = '1' where struserid = @CharID and @Class = 202
- update userdata set Class = 210 , strong = '71' , sta = '100' , cha = '194' , intel = '162' ,strskill ='P<' , [level] = '83' , hp='5000' ,mp='5000' ,exp = '1' where struserid = @CharID and @Class = 203
- update userdata set Class = 212 , strong = '110' , sta = '120' , intel = '230' ,strskill ='P<' , [level] = '83' , hp='5000' ,mp='5000' ,exp = '1' where struserid = @CharID and @Class = 204
- update userdata set Class = 106 where struserid = @CharID and @Class = 101
- update userdata set Class = 108 where struserid = @CharID and @Class = 102
- update userdata set Class = 110 where struserid = @CharID and @Class = 103
- update userdata set Class = 112 where struserid = @CharID and @Class = 104
- update userdata set Class = 206 where struserid = @CharID and @Class = 201
- update userdata set Class = 208 where struserid = @CharID and @Class = 202
- update userdata set Class = 210 where struserid = @CharID and @Class = 203
- update userdata set Class = 212 where struserid = @CharID and @Class = 204
- IF @@ERROR <> 0
- BEGIN
- ROLLBACK TRAN
- SET @nRet = 4
- RETURN
- END
- COMMIT TRAN
- SET @nRet = 0
- GO
复制代码 |