Advertisement
s00rk

Restrict GM Names

Jul 13th, 2011
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.04 KB | None | 0 0
  1. USE [GunzDB]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[spInsertChar]    Script Date: 07/13/2011 15:36:39 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. /* ??? ?? */
  9. ALTER PROC [dbo].[spInsertChar]
  10.     @AID        INT,
  11.     @CharNum    SMALLINT,
  12.     @Name       VARCHAR(24),
  13.     @Sex        tinyint,
  14.     @Hair       INT,  
  15.     @Face       INT,
  16.     @Costume    INT
  17. AS
  18. SET NOCOUNT ON
  19. BEGIN TRAN
  20. DECLARE @Block VARCHAR(100)
  21. DECLARE @V_Position INT
  22. DECLARE @V_RetValue INT
  23. SET @Block = ''
  24. SET @V_Position = 1
  25. SET @V_RetValue = 0
  26. WHILE @V_Position <= DATALENGTH(@Name) AND @V_RetValue = 0
  27. BEGIN
  28.         SET @Block = @Block + SUBSTRING(@Name,@V_Position,1)
  29.         IF @V_Position = 4
  30.             IF @Block = '[GM]' OR @Block = '[AM]' OR @Block = '[GA]'
  31.                 SET @V_RetValue = 1
  32.         IF @V_Position = 5
  33.             IF @Block = '[ADM]' OR @Block = '[MOD]'
  34.                 SET @V_RetValue = 1
  35.        
  36.         SET @V_Position = @V_Position + 1
  37. END
  38.  
  39. IF EXISTS (SELECT CID FROM CHARACTER WHERE (AID=@AID AND CharNum=@CharNum) OR (Name=@Name) OR @V_RetValue = 1)
  40. BEGIN  
  41.     ROLLBACK TRAN
  42.     RETURN(-1)
  43. END
  44.  
  45. DECLARE @CharIdent  INT
  46. DECLARE @ChestCIID  INT
  47. DECLARE @LegsCIID   INT
  48. DECLARE @MeleeCIID  INT
  49. DECLARE @PrimaryCIID    INT
  50. DECLARE @SecondaryCIID  INT
  51. DECLARE @Custom1CIID    INT
  52. DECLARE @Custom2CIID    INT
  53.  
  54. DECLARE @ChestItemID    INT
  55. DECLARE @LegsItemID INT
  56. DECLARE @MeleeItemID    INT
  57. DECLARE @PrimaryItemID  INT
  58. DECLARE @SecondaryItemID  INT
  59. DECLARE @Custom1ItemID  INT
  60. DECLARE @Custom2ItemID  INT
  61.  
  62. SET @SecondaryCIID = NULL
  63. SET @SecondaryItemID = NULL
  64.  
  65. SET @Custom1CIID = NULL
  66. SET @Custom1ItemID = NULL
  67.  
  68. SET @Custom2CIID = NULL
  69. SET @Custom2ItemID = NULL
  70.  
  71. INSERT INTO CHARACTER (AID, Name, CharNum, Level, Sex, Hair, Face, XP, BP, FR, CR, ER, WR,
  72.                            GameCount, KillCount, DeathCount, RegDate, PlayTime, DeleteFlag)
  73. VALUES (@AID, @Name, @CharNum, 1, @Sex, @Hair, @Face, 0, 0, 0, 0, 0, 0, 0, 0, 0, GETDATE(), 0, 0)
  74. IF 0 <> @@ERROR BEGIN
  75.     ROLLBACK TRAN
  76.     RETURN (-1)
  77. END
  78.  
  79.  
  80. SET @CharIdent = @@IDENTITY
  81.  
  82.   /* Melee */
  83.   SET @MeleeItemID =
  84.     CASE @Costume
  85.     WHEN 0 THEN 1
  86.     WHEN 1 THEN 2
  87.     WHEN 2 THEN 1
  88.     WHEN 3 THEN 2
  89.     WHEN 4 THEN 2
  90.     WHEN 5 THEN 1
  91.     END
  92.  
  93.   INSERT INTO CharacterItem (CID, ItemID) VALUES (@CharIdent, @MeleeItemID)
  94.   IF 0 <> @@ERROR BEGIN
  95.     ROLLBACK TRAN
  96.     RETURN (-1)
  97.   END
  98.  
  99.   SET @MeleeCIID = @@IDENTITY
  100.  
  101.   /* Primary */
  102.   SET @PrimaryItemID =
  103.     CASE @Costume
  104.     WHEN 0 THEN 5001
  105.     WHEN 1 THEN 5002
  106.     WHEN 2 THEN 4005
  107.     WHEN 3 THEN 4001
  108.     WHEN 4 THEN 4002
  109.     WHEN 5 THEN 4006
  110.     END
  111.  
  112.   INSERT INTO CharacterItem (CID, ItemID) VALUES (@CharIdent, @PrimaryItemID)
  113.   IF 0 <> @@ERROR BEGIN
  114.     ROLLBACK TRAN
  115.     RETURN (-1)
  116.   END
  117.  
  118.   SET @PrimaryCIID = @@IDENTITY
  119.  
  120.   /* Secondary */
  121. IF @Costume = 0 OR @Costume = 2 BEGIN
  122.   SET @SecondaryItemID =
  123.     CASE @Costume
  124.     WHEN 0 THEN 4001
  125.     WHEN 1 THEN 0
  126.     WHEN 2 THEN 5001
  127.     WHEN 3 THEN 4006
  128.     WHEN 4 THEN 0
  129.     WHEN 5 THEN 4006
  130.     END
  131.  
  132.   IF @SecondaryItemID <> 0 BEGIN
  133.     INSERT INTO CharacterItem (CID, ItemID) VALUES (@CharIdent, @SecondaryItemID)
  134.     IF 0 <> @@ERROR BEGIN
  135.     ROLLBACK TRAN
  136.     RETURN (-1)
  137.     END
  138.  
  139.     SET @SecondaryCIID = @@IDENTITY
  140.   END
  141. END
  142.   SET @Custom1ItemID =
  143.     CASE @Costume
  144.     WHEN 0 THEN 30301
  145.     WHEN 1 THEN 30301
  146.     WHEN 2 THEN 30401
  147.     WHEN 3 THEN 30401
  148.     WHEN 4 THEN 30401
  149.     WHEN 5 THEN 30101
  150.     END
  151.  
  152.   /* Custom1 */
  153.   INSERT INTO CharacterItem (CID, ItemID) VALUES (@CharIdent, @Custom1ItemID)
  154.   IF 0 <> @@ERROR BEGIN
  155.     ROLLBACK TRAN
  156.     RETURN (-1)
  157.   END
  158.  
  159.   SET @Custom1CIID = @@IDENTITY
  160.  
  161.   /* Custom2 */
  162. IF @Costume = 4 OR @Costume = 5
  163. BEGIN
  164.   SET @Custom2ItemID =
  165.     CASE @Costume
  166.     WHEN 0 THEN 0
  167.     WHEN 1 THEN 0
  168.     WHEN 2 THEN 0
  169.     WHEN 3 THEN 0
  170.     WHEN 4 THEN 30001
  171.     WHEN 5 THEN 30001
  172.     END
  173.  
  174.   IF @Custom2ItemID <> 0
  175.   BEGIN
  176.     INSERT INTO CharacterItem (CID, ItemID) VALUES (@CharIdent, @Custom2ItemID)
  177.     IF 0 <> @@ERROR BEGIN
  178.     ROLLBACK TRAN
  179.     RETURN (-1)
  180.     END
  181.  
  182.     SET @Custom2CIID = @@IDENTITY
  183.   END
  184. END
  185.  
  186.  
  187. IF @Sex = 0     /* ??? ?? */
  188. BEGIN
  189.  
  190.   /* Chest */
  191.   SET @ChestItemID =
  192.     CASE @Costume
  193.     WHEN 0 THEN 21001
  194.     WHEN 1 THEN 21001
  195.     WHEN 2 THEN 21001
  196.     WHEN 3 THEN 21001
  197.     WHEN 4 THEN 21001
  198.     WHEN 5 THEN 21001
  199.     END
  200.  
  201.  
  202.   INSERT INTO CharacterItem (CID, ItemID) VALUES (@CharIdent, @ChestItemID)
  203.   IF 0 <> @@ERROR BEGIN
  204.     ROLLBACK TRAN
  205.     RETURN (-1)
  206.   END
  207.  
  208.   SET @ChestCIID = @@IDENTITY
  209.  
  210.   /* Legs */
  211.   SET @LegsItemID =
  212.     CASE @Costume
  213.     WHEN 0 THEN 23001
  214.     WHEN 1 THEN 23001
  215.     WHEN 2 THEN 23001
  216.     WHEN 3 THEN 23001
  217.     WHEN 4 THEN 23001
  218.     WHEN 5 THEN 23001
  219.     END
  220.  
  221.  
  222.   INSERT INTO CharacterItem (CID, ItemID) VALUES (@CharIdent, @LegsItemID)
  223.   IF 0 <> @@ERROR BEGIN
  224.     ROLLBACK TRAN
  225.     RETURN (-1)
  226.   END
  227.  
  228.   SET @LegsCIID = @@IDENTITY
  229.  
  230. END
  231. ELSE
  232. BEGIN           /* ??? ?? */
  233.  
  234.   /* Chest */
  235.   SET @ChestItemID =
  236.     CASE @Costume
  237.     WHEN 0 THEN 21501
  238.     WHEN 1 THEN 21501
  239.     WHEN 2 THEN 21501
  240.     WHEN 3 THEN 21501
  241.     WHEN 4 THEN 21501
  242.     WHEN 5 THEN 21501
  243.     END
  244.  
  245.  
  246.   INSERT INTO CharacterItem (CID, ItemID) VALUES (@CharIdent, @ChestItemID)
  247.   IF 0 <> @@ERROR BEGIN
  248.     ROLLBACK TRAN
  249.     RETURN (-1)
  250.   END
  251.   SET @ChestCIID = @@IDENTITY
  252.  
  253.   /* Legs */
  254.   SET @LegsItemID =
  255.     CASE @Costume
  256.     WHEN 0 THEN 23501
  257.     WHEN 1 THEN 23501
  258.     WHEN 2 THEN 23501
  259.     WHEN 3 THEN 23501
  260.     WHEN 4 THEN 23501
  261.     WHEN 5 THEN 23501
  262.     END
  263.  
  264.  
  265.   INSERT INTO CharacterItem (CID, ItemID) VALUES (@CharIdent, @LegsItemID)
  266.   IF 0 <> @@ERROR BEGIN
  267.     ROLLBACK TRAN
  268.     RETURN (-1)
  269.   END
  270.   SET @LegsCIID = @@IDENTITY
  271.  
  272. END  
  273.  
  274. UPDATE CHARACTER
  275. SET chest_slot = @ChestCIID, legs_slot = @LegsCIID, melee_slot = @MeleeCIID,
  276.     primary_slot = @PrimaryCIID, secondary_slot = @SecondaryCIID, custom1_slot = @Custom1CIID,
  277.     custom2_slot = @Custom2CIID,
  278.     chest_itemid = @ChestItemID, legs_itemid = @LegsItemID, melee_itemid = @MeleeItemID,
  279.     primary_itemid = @PrimaryItemID, secondary_itemid = @SecondaryItemID, custom1_itemid = @Custom1ItemID,
  280.     custom2_itemid = @Custom2ItemID
  281. WHERE CID=@CharIdent
  282. IF 0 = @@ROWCOUNT BEGIN
  283.     ROLLBACK TRAN
  284.     RETURN (-1)
  285. END
  286. COMMIT TRAN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement