Показать сообщение отдельно
Непрочитано 04.12.2010, 13:13   #33
Аватар для Mag_i_str
Пользователь

Автор темы (Топик Стартер) Re: Season 6 ENC 2.0.4.0

Код:
if exists (select * from dbo.sysobjects where id =  object_id(N'[dbo].[ExtWarehouse]') and OBJECTPROPERTY(id,  N'IsUserTable') = 1)
drop table [dbo].[ExtWarehouse]
GO

CREATE TABLE [dbo].[ExtWarehouse] (
    [AccountID] [varchar] (10) COLLATE Latin1_General_CS_AS NOT NULL ,
    [Items] [varbinary] (1920) NULL ,
    [Money] [int] NULL ,
    [EndUseDate] [smalldatetime] NULL ,
    [DbVersion] [tinyint] NULL ,
    [pw] [smallint] NULL ,
    [VaultID] [int] NOT NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ExtWarehouse] ADD 
    CONSTRAINT [DF_ExtWarehouse_Money] DEFAULT (0) FOR [Money],
    CONSTRAINT [DF_ExtWarehouse_DbVersion] DEFAULT (0) FOR [DbVersion],
    CONSTRAINT [DF_ExtWarehouse_pw] DEFAULT (0) FOR [pw],
    CONSTRAINT [DF_ExtWarehouse_NUMBER] DEFAULT (1) FOR [VaultID]
GO

ALTER TABLE [dbo].[warehouse] ADD
    [VaultID] [int] NOT NULL DEFAULT (1)
GO

CREATE PROCEDURE [dbo].[ENC_ChangeVault]
@login varchar(10),
@futureVaultID int
AS
Begin
SET NOCOUNT ON
DECLARE
@actualVaultID int,
@actualVaultItem varbinary(1920),
@futureVaultItem varbinary(1920),
@actualMoney int,
@futureMoney int

IF NOT EXISTS ( SELECT * FROM warehouse WHERE AccountID = @login )
    Begin
    INSERT INTO warehouse (AccountID, Money, EndUseDate, DbVersion, VaultID) VALUES (@login,0, getdate(), 3, 1)
    End

IF (@futureVaultID <= 0)
    Begin
    SELECT @futureVaultID = 1
    End

SELECT @actualVaultID = VaultID FROM warehouse WHERE AccountID = @login

IF (@actualVaultID <> @futureVaultID)
    Begin
    IF EXISTS ( SELECT * FROM ExtWarehouse WHERE VaultID = @futureVaultID AND AccountID = @login )
        Begin
        SELECT @actualVaultItem = Items FROM warehouse WHERE AccountID = @login
        SELECT @actualMoney = Money FROM warehouse WHERE AccountID = @login
        SELECT @futureVaultItem = Items FROM ExtWarehouse WHERE AccountID = @login and VaultID=@futureVaultID
        SELECT @futureMoney = Money FROM ExtWarehouse WHERE AccountID = @login and VaultID=@futureVaultID
        UPDATE warehouse SET Items = @futureVaultItem, Money = @futureMoney, VaultID = @futureVaultID WHERE AccountID = @login

        IF EXISTS ( SELECT * FROM ExtWarehouse WHERE VaultID = @actualVaultID AND AccountID = @login )
            Begin
            UPDATE ExtWarehouse SET Items = @actualVaultItem, Money =  @actualMoney WHERE AccountID = @login AND VaultID = @actualVaultID
            End

        ELSE
            Begin
            INSERT INTO ExtWarehouse (AccountID, Items, Money,  EndUseDate, DbVersion, VaultID) VALUES (@login, @actualVaultItem,  @actualMoney, getdate(), 3, @actualVaultID)
            End
        End

    ELSE
        Begin
        SELECT @actualVaultItem = Items FROM warehouse WHERE AccountID = @login
        SELECT @actualMoney = Money FROM warehouse WHERE AccountID = @login
        UPDATE warehouse SET Items = NULL, Money = 0, VaultID = @futureVaultID WHERE AccountID = @login

        IF EXISTS ( SELECT * FROM ExtWarehouse WHERE VaultID = @actualVaultID AND AccountID = @login )
            Begin
            UPDATE ExtWarehouse SET Items = @actualVaultItem, Money =  @actualMoney WHERE AccountID = @login AND VaultID = @actualVaultID
            End

        ELSE
            Begin
            INSERT INTO ExtWarehouse (AccountID, Items, Money,  EndUseDate, DbVersion, VaultID) VALUES (@login, @actualVaultItem,  @actualMoney, getdate(), 3, @actualVaultID)
            End
        End
    End
End

GO

IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'NewCharactersFixs' AND type = 'TR')
DROP TRIGGER NewCharactersFixs
GO

CREATE TRIGGER [NewCharactersFixs] ON [dbo].[Character] 
FOR INSERT 
AS
BEGIN
    IF ( SELECT Class FROM INSERTED ) = 96
    BEGIN
        UPDATE Character SET MagicList=Null, Quest=Null,  Inventory=0x00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        WHERE Class='96'
    END
END
Поправленная версия кода
__________________
Слушай:
Свернуть ↑Развернуть ↓
Mag_i_str вне форума Отправить сообщение для Mag_i_str с помощью ICQ Отправить сообщение для Mag_i_str с помощью Skype™ Ответить с цитированием