Advertisement
Guest User

Untitled

a guest
May 12th, 2013
715
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ALTER PROCEDURE [dbo].[CREATE_NEW_CHAR]
  2.  
  3. @nRet       SMALLINT OUTPUT,
  4. @AccountID  CHAR(21),
  5. @INDEX      tinyint,
  6. @CharID CHAR(21),
  7. @Race       tinyint,
  8. @Class  SMALLINT,
  9. @Hair       tinyint,
  10. @Face       tinyint,
  11. @Str        tinyint,
  12. @Sta        tinyint,
  13. @Dex        tinyint,
  14. @Intel      tinyint,
  15. @Cha        tinyint
  16.  
  17. AS
  18.  
  19. DECLARE @ROW tinyint, @Nation tinyint, @Zone tinyint, @PosX INT, @PosZ INT, @x INT, @c INT, @bValid tinyint
  20.     SET @ROW = 0    SET @Nation = 0  SET @Zone = 0  SET @PosX = 0 SET @PosZ = 0
  21.     SET @x = 1
  22.     SET @bValid = 1
  23.  
  24.         IF LEN(LTRIM(@CharID)) < 3  -- LEN() does an RTRIM()
  25.         BEGIN
  26.           SET @nRet = 7
  27.           RETURN
  28.         END
  29.  
  30.     WHILE (@x <= LEN(@CharID))
  31.     BEGIN
  32.         SET @c = ASCII(SUBSTRING(@CharID, @x, 1))
  33.         IF ((@c NOT BETWEEN ASCII('a') AND ASCII('z'))
  34.             AND (@c NOT BETWEEN ASCII('A') AND ASCII('Z'))
  35.             AND (@c NOT BETWEEN ASCII('0') AND ASCII('9'))
  36.             AND (@c NOT IN (ASCII('_'), ASCII('-'), ASCII(':'))))
  37.         BEGIN
  38.             SET @bValid = 0
  39.             BREAK
  40.         END
  41.         SET @x = @x + 1
  42.     END
  43.  
  44.     IF (@bValid = 0)
  45.     BEGIN
  46.         SET @nRet = 5
  47.         RETURN
  48.     END
  49.  
  50.     SELECT @Nation = bNation, @ROW = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
  51.    
  52.     IF @ROW >= 5    SET @nRet =  1
  53.    
  54.     IF @Nation = 1 AND @Race > 10   SET @nRet = 2
  55.     ELSE IF @Nation = 2 AND @Race < 10  SET @nRet = 2
  56.     ELSE IF @Nation <>1 AND @Nation <> 2    SET @nRet = 2
  57.  
  58.     IF @nRet > 0
  59.         RETURN
  60.    
  61.     SELECT @ROW = COUNT(*) FROM USERDATA WHERE strUserId = @CharID
  62.     IF @ROW > 0
  63.     BEGIN
  64.         SET @nRet =  3
  65.         RETURN
  66.     END
  67.  
  68.     --SET @Zone = @Nation
  69.     SET @Zone=21
  70.     SELECT @PosX = InitX, @PosZ = InitZ  FROM ZONE_INFO WHERE ZoneNo = @Zone
  71.    
  72.  
  73. BEGIN TRAN 
  74.     IF @INDEX = 0
  75.         UPDATE ACCOUNT_CHAR SET strCharID1 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
  76.     ELSE IF @INDEX = 1
  77.         UPDATE ACCOUNT_CHAR SET strCharID2 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
  78.     ELSE IF @INDEX = 2
  79.         UPDATE ACCOUNT_CHAR SET strCharID3 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
  80.     ELSE IF @INDEX = 3
  81.         UPDATE ACCOUNT_CHAR SET strCharID4 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
  82.     ELSE IF @INDEX = 4
  83.         UPDATE ACCOUNT_CHAR SET strCharID5 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
  84.    
  85.  
  86.     INSERT INTO USERDATA (strUserId, Nation, Race, Class, HairColor, Face, Strong, Sta, Dex, Intel, Cha, Zone, PX, PZ )
  87.     VALUES   (@CharID, @Nation, @Race, @Class, @Hair, @Face, @Str, @Sta, @Dex, @Intel, @Cha, @Zone, @PosX, @PosZ )
  88.    
  89.    
  90.     IF @@ERROR <> 0
  91.     BEGIN    
  92.         ROLLBACK TRAN
  93.         SET @nRet =  4
  94.         RETURN
  95.     END
  96.    
  97. COMMIT TRAN
  98. SET @nRet =  0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement