1. Сначала нужно УДАЛИТЬ таблицу PostRegistry в базе RF_World DB, после чего запустить:
Цитата:
Цитата:
/****** Object: Table [dbo].[tbl_PostRegistry] Script Date: 03/21/2008 05:37:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tbl_PostRegistry](
[serial] [int] IDENTITY(0,1) NOT NULL,
[dck] [bit] NULL CONSTRAINT [DF_tbl_PostRegistry_dck] DEFAULT ((0)),
[sendserial] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_sendserial] DEFAULT ((0)),
[sendname] [varchar](17) NULL,
[recvname] [varchar](17) NULL,
[title] [varchar](21) NULL,
[content] [varchar](201) NULL,
[k] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_k] DEFAULT (0xFFFFFFFF),
[d] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_d] DEFAULT ((0)),
[u] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_u] DEFAULT (0x0FFFFFFF),
[gold] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_gold] DEFAULT ((0)),
[sendrace] [smallint] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_sendrace] DEFAULT ((0)),
[userdgr] [smallint] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_userdgr] DEFAULT ((0)),
[uid] [bigint] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_uid] DEFAULT ((0)),
CONSTRAINT [PK__tbl_PostRegistry__40657506] PRIMARY KEY CLUSTERED
(
[serial] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
2. Затем удаляем таблицу PostStorage в той же базе (RF_World) и запускаем следующий запрос:
USE [RF_World]
GO
/****** Object: Table [dbo].[tbl_PostStorage] Script Date: 03/21/2008 05:37:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tbl_PostStorage](
[serial] [int] IDENTITY(1,1) NOT NULL,
[postinx] [smallint] NOT NULL CONSTRAINT [DF_tbl_PostStorage_postinx] DEFAULT (0xFF),
[owner] [int] NOT NULL,
[dck] [bit] NOT NULL CONSTRAINT [DF_tbl_PostStorage_dck] DEFAULT ((1)),
[poststate] [tinyint] NOT NULL,
[sendname] [varchar](17) NULL,
[recvname] [varchar](17) NULL,
[title] [varchar](21) NULL,
[content] [varchar](201) NULL,
[k] [int] NOT NULL CONSTRAINT [DF_tbl_PostStorage_k] DEFAULT (0xFFFFFFFF),
[d] [int] NOT NULL CONSTRAINT [DF_tbl_PostStorage_d] DEFAULT ((0)),
[u] [int] NOT NULL CONSTRAINT [DF_tbl_PostStorage_u] DEFAULT (0x0FFFFFFF),
[gold] [int] NOT NULL,
[err] [tinyint] NOT NULL CONSTRAINT [DF_tbl_PostStorage_err] DEFAULT ((0)),
[sindex] [smallint] NOT NULL CONSTRAINT [DF__tbl_PostS__sinde__0798A2AC] DEFAULT (0xFF),
[uid] [bigint] NOT NULL CONSTRAINT [DF_tbl_PostStorage_uid] DEFAULT ((0)),
CONSTRAINT [PK__tbl_PostStorage__7FB6BE6B] PRIMARY KEY CLUSTERED
(
[serial] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
3. Теперь нужно изменить кое-что в Zoneserver, убираем символ подчеркивания "_" из _SQLExecDirect и меняем на 00 в хексе (с помощью хекс-редактора, например, UltraEdit)
Нужно изменить во всех запросах из ZoneServer (их всего два или три)
5. Самое простое. Добавляем данные в обе таблицы, если их там еще нет.
PostSystemManager не будет в них ничего записывать, хотя отправка писем будет работать, но адресат не получит ничего. Теме не менее, есть один трюк. Сколько строчек вы создадите в таблице PostStorage, такой будет лимит писем на вашем сервере.
PostStorage будет незаполненным. Как только вы запустите Зону, она создаст 5000 пустых строк - это нормально. Они используются для копий писем в меню игры. Также там хранится информация о том, было ли письмо прочитано адресатом. В любом случае, вам нужно будет создать хотя бы 10 строк перед запуском Зоны.
Таким образом у нас будет 10 + 5000 строк
Все готово! Вы можете запускать Зону и дождаться, когда она создаст строки в таблице. Дайте ей хотя бы 5 минут :)
ЗАМЕЧАНИЕ: После первого запуска у вас могут возникнуть проблемы/ошибки, связанные с работой сервера. Все нормально - просто перезапустите все сервера и все будет в порядке.
Я думаю, это из-за PostSystemManager - он пытается подготовить нужные таблицы к использованию. Хотим напомнить, что существую баги с почтовой системой, поэтому включайте ее на свой страх и риск!
ОГРАНИЧЕНИЯ:
Золото = 50 000 максимум
Предметы = Все продаваемые и "торгуемые"
Исправляем Mail PostRegistry
Цитата:
USE [RF_World]
GO
/****** Object: Table [dbo].[tbl_PostRegistry] Script Date: 03/21/2008 05:37:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tbl_PostRegistry](
[serial] [int] IDENTITY(0,1) NOT NULL,
[dck] [bit] NULL CONSTRAINT [DF_tbl_PostRegistry_dck] DEFAULT ((1)),
[sendserial] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_sendserial] DEFAULT ((0)),
[sendname] [varchar](17) NULL,
[recvname] [varchar](17) NULL,
[title] [varchar](21) NULL,
[content] [varchar](201) NULL,
[k] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_k] DEFAULT (0xFFFFFFFF),
[d] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_d] DEFAULT ((0)),
[u] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_u] DEFAULT (0x0FFFFFFF),
[gold] [int] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_gold] DEFAULT ((0)),
[sendrace] [smallint] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_sendrace] DEFAULT ((0)),
[userdgr] [smallint] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_userdgr] DEFAULT ((0)),
[uid] [bigint] NOT NULL CONSTRAINT [DF_tbl_PostRegistry_uid] DEFAULT ((0)),
CONSTRAINT [PK__tbl_PostRegistry__40657506] PRIMARY KEY CLUSTERED
(
[serial] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
Исправляем Mail PostStorage
Цитата:
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tbl_PostStorage](
[serial] [int] IDENTITY(1,1) NOT NULL,
[postinx] [smallint] NOT NULL CONSTRAINT [DF_tbl_PostStorage_postinx] DEFAULT (0xFF),
[owner] [int] NOT NULL,
[dck] [bit] NOT NULL CONSTRAINT [DF_tbl_PostStorage_dck] DEFAULT ((1)),
[poststate] [tinyint] NOT NULL,
[sendname] [varchar](17) NULL,
[recvname] [varchar](17) NULL,
[title] [varchar](21) NULL,
[content] [varchar](201) NULL,
[k] [int] NOT NULL CONSTRAINT [DF_tbl_PostStorage_k] DEFAULT (0xFFFFFFFF),
[d] [int] NOT NULL CONSTRAINT [DF_tbl_PostStorage_d] DEFAULT ((0)),
[u] [int] NOT NULL CONSTRAINT [DF_tbl_PostStorage_u] DEFAULT (0x0FFFFFFF),
[gold] [int] NOT NULL,
[err] [tinyint] NOT NULL CONSTRAINT [DF_tbl_PostStorage_err] DEFAULT ((0)),
[sindex] [smallint] NOT NULL CONSTRAINT [DF__tbl_PostS__sinde__0798A2AC] DEFAULT (0xFF),
[uid] [bigint] NOT NULL CONSTRAINT [DF_tbl_PostStorage_uid] DEFAULT ((0)),
CONSTRAINT [PK__tbl_PostStorage__7FB6BE6B] PRIMARY KEY CLUSTERED
(
[serial] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
гайд этот с зарубежного форума эмм... а, это - регзонэ.
это и под 223/2232 пойдёт.
Но та самая проблемная таблица после фикса переполняется... можно написать задание или тригер на очистку и всё. :)
Правда особо тут ничего нового... но принцип этот можно позаимствовать и против дюпов (копирование вещей) и много еще куда при доработке и логике в других талицах.