• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

kick

Предвестник
Administrator
Сообщения
7 051
Розыгрыши
21
Решения
1
Репутация
5 925
Реакции
6 622
Баллы
2 688
Делаем аккаунт премиум:
update user_account set pay_stat = 0 where account = 'ИМЯ АККАУНТА'

Изменение ника:
update user_data set char_name = 'Новый ник' where char_name= 'старый ник'

Добавление какого-то итема всем игрокам:

Чары будут создаваться 76 лвл:
Удаление всех чаров:
Проверка итема на две стопки, обычно при попытке дюпа или ошибки сервера:

Проверка итема на две стопки, обычно при попытке дюпа или ошибки сервера:

Итем у всех чаров:
use lin2world
select ud.char_name, ui.amount, ud.create_date, ui.item_id, ui.char_id from user_item ui, user_data ud where ui.char_id=ud.char_id and ui.item_type=57 order by amount desc

Удаление ивентовых вещей:

Заменить у всех один итем на другой:
UPDATE user_item SET item_type=6656 WHERE item_type=9720

Если у кого то будет ошибка отсутствия базы для логов:

Скрипт на создание аккаунта:


Вайп двумя запросами:

Более полная версия вайпа:

Скрипт откатывает все скиллы во время рестарта:
use lin2worldupdate dbo.user_skill Set to_end_time = 0 where to_end_time >1000
delete from dbo.user_ActiveSkill
delete from dbo.user_item where char_id=0

Сброс штрафа на вступление и прием в клан

Бэкап (простой скрипт)(заменить f:\sqlbups на свой адрес папки с бэкапом, папку создать заранее!!):

Удаляем вещи:
USE lin2world;DELETE
FROM
user_item
WHERE
item_type IN (ИД_ПУХИ, ИД_ПУХИ2, ИД_ПУХИ3, ...);

Добавляем итем всем персонажем:

Чистим базу от умерших чаров. Не забываем делать бекап.

Удаляем ненужных чаров:

Удаляем всех чаров:

Удаляем все аккаунты:
USE lin2dbGO


TRUNCATE TABLE ssn
TRUNCATE TABLE user_account
TRUNCATE TABLE user_auth
TRUNCATE TABLE user_count
TRUNCATE TABLE user_info
TRUNCATE TABLE hauthd_log

Вайп сервера:
Код:
/**************************************************************************This script will delete data from every table in the database except
those specified in the @NoDeleteLst.


@NoDeleteLst =     Comma seperated list of all tables you DO NOT want this
        script to delete.
      
        Example:
        SET @NoDeleteLst = "Application,App_Parameter,Parameter"
      
        The above will keep the script from deleting from the
        Application,App_Parameter and Parameter tables.


NOTE:    SCROLL TO MIDDLE OF SCRIPT TO SET @NoDeleteLst.
***************************************************************************/


--Make sure fnSplit2 exists. If not...create it
if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[fnSplit2]") and xtype in (N"FN", N"IF", N"TF"))
drop function [dbo].[fnSplit2]
GO


SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO


CREATE FUNCTION fnSplit2(@sText varchar(8000), @sDelim varchar(20) = " ")
RETURNS @retArray TABLE (idx smallint Primary Key, value varchar(8000))
/********************************************************************************
*************************************
This function parses a delimited string and returns it as an ID"d table.


Parameter Definition:
---------------------------------
@sText = Delimited string to be parsed.
@sDelim = Delimitation character used to seperate list ov values.


RETURNS:
---------------------------
Returns the table defined below:


Column         Description
----------        ------------------
idx        ID column for array
value        Value split from list.


********************************************************************************
*************************************/
AS
BEGIN
DECLARE @idx smallint,
    @value varchar(8000),
    @bcontinue bit,
    @iStrike smallint,
    @iDelimlength tinyint


IF @sDelim = "Space"
    BEGIN
    SET @sDelim = " "
    END


SET @idx = 1
SET @sText = LTrim(RTrim(@sText))
SET @iDelimlength = DATALENGTH(@sDelim)
SET @bcontinue = 1


IF NOT ((@iDelimlength = 0) or (@sDelim = "Empty"))
    BEGIN
    WHILE @bcontinue = 1
        BEGIN


--If you can find the delimiter in the text, retrieve the first element and
--insert it with its index into the return table.
        IF CHARINDEX(@sDelim, @sText)>0
            BEGIN
            SET @value = SUBSTRING(@sText,1, CHARINDEX(@sDelim,@sText)-1)
                BEGIN
                INSERT @retArray (idx, value)
                VALUES (@idx, @value)
                END
          
--Trim the element and its delimiter from the front of the string.
            --Increment the index and loop.
SET @iStrike = DATALENGTH(@value) + @iDelimlength
            SET @idx = @idx + 1
            SET @sText = LTrim(Right(@sText,DATALENGTH(@sText) - @iStrike))
      
            END
        ELSE
            BEGIN
--If you can’t find the delimiter in the text, @sText is the last value in
--@retArray.
SET @value = @sText
                BEGIN
                INSERT @retArray (idx, value)
                VALUES (@idx, @value)
                END
            --Exit the WHILE loop.
SET @bcontinue = 0
            END
        END
    END
ELSE
    BEGIN
    WHILE @bcontinue=1
        BEGIN
        --If the delimiter is an empty string, check for remaining text
        --instead of a delimiter. Insert the first character into the
        --retArray table. Trim the character from the front of the string.
--Increment the index and loop.
        IF DATALENGTH(@sText)>1
            BEGIN
            SET @value = SUBSTRING(@sText,1,1)
                BEGIN
                INSERT @retArray (idx, value)
                VALUES (@idx, @value)
                END
            SET @idx = @idx+1
            SET @sText = SUBSTRING(@sText,2,DATALENGTH(@sText)-1)
          
            END
        ELSE
            BEGIN
            --One character remains.
            --Insert the character, and exit the WHILE loop.
            INSERT @retArray (idx, value)
            VALUES (@idx, @sText)
            SET @bcontinue = 0  
            END
    END


END


RETURN
END


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------


-------------------------------------------------------------------------------------------------------
--SET NO-DELETE LIST HERE (tbls you dont want to delete from) - Comma seperated list. "tbl1,tbl2,tbl3"
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
DECLARE @tbls TABLE(IDX int IDENTITY(1,1), Tbl varchar(255))
DECLARE @Tbl varchar(255)


INSERT INTO @tbls(Tbl)
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = "BASE TABLE"
AND LEFT(TABLE_NAME,2) <> "dt"


--Disable Constraints
PRINT "-----------------------------------------------" + CHAR(13) + CHAR(13)
DECLARE curDeleteDB CURSOR FOR
SELECT DISTINCT Tbl
FROM @tbls


OPEN curDeleteDB


FETCH NEXT FROM curDeleteDB
INTO @tbl


WHILE (@@fetch_status <> -1)
BEGIN
    IF (@@fetch_status <> -2)
    BEGIN
        PRINT "Disabling constraints/triggers for - " + @tbl
        EXEC("ALTER TABLE [" + @tbl + "] NOCHECK CONSTRAINT ALL")
        EXEC("ALTER TABLE [" + @tbl + "] DISABLE TRIGGER ALL")
    END
    FETCH NEXT FROM curDeleteDB
    INTO @tbl
END
CLOSE curDeleteDB
DEALLOCATE curDeleteDB


--Delete Data
PRINT "-----------------------------------------------" + CHAR(13) + CHAR(13)
DECLARE curDeleteDB CURSOR FOR
SELECT DISTINCT Tbl
FROM @tbls


OPEN curDeleteDB


FETCH NEXT FROM curDeleteDB
INTO @tbl


WHILE (@@fetch_status <> -1)
BEGIN
    IF (@@fetch_status <> -2)
    BEGIN
        PRINT "Deleting from - " + @tbl
        EXEC("DELETE FROM [" + @tbl + "]")


        --If table has IDENTITY column reset the seed
        IF EXISTS
        (
            SELECT * FROM INFORMATION_SCHEMA.COLUMNS
            WHERE COLUMNPROPERTY(OBJECT_ID("dbo." + @tbl) ,COLUMN_NAME,"IsIdentity") = 1
            AND TABLE_NAME = @tbl
        )
        BEGIN
            EXEC("DBCC CHECKIDENT (""" + @tbl + """, RESEED, 0)")
        END
    END
    FETCH NEXT FROM curDeleteDB
    INTO @tbl
END
CLOSE curDeleteDB
DEALLOCATE curDeleteDB


--Re-Enable Constraints
PRINT "-----------------------------------------------" + CHAR(13) + CHAR(13)
DECLARE curDeleteDB CURSOR FOR
SELECT DISTINCT Tbl
FROM @tbls


OPEN curDeleteDB


FETCH NEXT FROM curDeleteDB
INTO @tbl


WHILE (@@fetch_status <> -1)
BEGIN
    IF (@@fetch_status <> -2)
    BEGIN
        PRINT "Enabling constraints/triggers for - " + @tbl
        EXEC("ALTER TABLE [" + @tbl + "] CHECK CONSTRAINT ALL")
        EXEC("ALTER TABLE [" + @tbl + "] ENABLE TRIGGER ALL")
    END
    FETCH NEXT FROM curDeleteDB
    INTO @tbl
END
CLOSE curDeleteDB
DEALLOCATE curDeleteDB
SET NOCOUNT OFF

Бесконечные соски:
Код:
ALTER PROCEDURE [DBO].[lin_AmountChange] (
@char_id INT,
@item_id INT,
@change INT,
@item_type INT,
@bZeorDelete INT = 0
)
AS
SET NOCOUNT ON


DECLARE @nResultAmount INT
SET @nResultAmount = -1


IF(select top 1 amount from user_item where char_id = @char_id AND item_id = @item_id ) + @change >= 0
begin
select @item_type=item_type from user_item where item_id = @item_id
if @item_type in (1463, 1464, 1465, 1466, 1467,2510, 2511, 2512, 2513, 2514, 3948, 3949, 3950, 3951, 3952)
begin
SELECT 10
end
else begin
UPDATE user_item SET amount = amount + @change WHERE char_id = @char_id AND item_id = @item_id


IF NOT @@ROWCOUNT = 1
SELECT -1
ELSE
SELECT @nResultAmount = ISNULL(amount, -1) FROM user_item WHERE char_id = @char_id AND item_id = @item_id
IF ( @nResultAmount = 0 AND @bZeorDelete = 1)
BEGIN
DELETE user_item WHERE char_id = @char_id AND item_id = @item_id
-- UPDATE user_item SET char_id = 0, item_type = 0 WHERE char_id = @char_id AND item_id = @item_id
END


SELECT @nResultAmount
end
end
else
select -1
GO

Убираем лаг сосок:
lin2world_index_create.sql:
Код:
USE [lin2world]
GO
/****** Object:  StoredProcedure [dbo].[lin_Reindex]    Script Date: 10/07/2006 06:00:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[lin_Reindex]   
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

DECLARE @TableName varchar(255)

DECLARE TableCursor CURSOR FOR
SELECT table_name FROM information_schema.tables
WHERE table_type = 'base table'

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
DBCC DBREINDEX(@TableName,' ',90)
FETCH NEXT FROM TableCursor INTO @TableName
END

CLOSE TableCursor

DEALLOCATE TableCursor
END
lin2world_index_exec.sql:
Код:
DECLARE @RC int
EXECUTE @RC = [lin2world].[dbo].[lin_Reindex]
 
Реакции: rikktor

    Mangol

    Баллов: 14
    Без комментариев
к мануалу есть 2 уточнения\улучшения

1. update user_account set pay_stat = 0 where account = 'ИМЯ АККАУНТА'

это не премиум аккаунт, это БАН аккаунта, через данную фичу обычно работает подтверждение аккаунта через почту, и пока pay_stat=0, зайти нельзя. У корейцев этот параметр использовался как ID оплаты аккаунты, 1 = оплачен и доступен, 0 - отключен

2. Универсальный скрипт для вайпа любой базы
EXEC sp_MSForEachTable 'TRUNCATE TABLE ?'

через цикл вайпает все таблицы в базе
 
Реакции: Grand и kick

    kick

    Баллов: 25
    За сообщение