Dev.Ri3o |
11-11-2016 08:59 PM |
Auto Plus Notice With New Feature
http://www4.0zz0.com/2015/11/27/18/243536469.gif
http://www4.0zz0.com/2015/11/27/18/884808031.gif
http://www4.0zz0.com/2015/11/27/18/702514124.gif
Auto Plus Notice By Item Code And Item Name
فى ناس كتير بتحتاج ال Auto Plus Notice انا لقيت ان موضوع Mido مش شغال ومش عارف ازاى ان فى ناس بتقول شغال وانها جربتو فصلحت الغلط اللى فى Procedure ال AddLogItem وعدلت على ال Procedure عشان لو عايز اسم ال Items هو اللى يظهر مش ال Code بتاعه فى ال RefObjCommon
http://www4.0zz0.com/2015/11/27/18/171651594.gif
اول حاجة هتنزل اى واحد من البرامج دى
https://files.fm/u/qd7hzhtt
او
https://www.sendspace.com/file/ade7bu
او
https://www.sendspace.com/file/jgvwdb
http://www4.0zz0.com/2015/11/27/18/171651594.gif
تانى حاجة هتعمل ال Queries دى
1
كود:
USE [SRO_VT_SHARDLOG]
GO
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_PlusNotice_Sent]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[PlusNotice] DROP CONSTRAINT [DF_PlusNotice_Sent]
END
GO
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_PlusNotice_Date]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[PlusNotice] DROP CONSTRAINT [DF_PlusNotice_Date]
END
GO
USE [SRO_VT_SHARDLOG]
GO
/****** Object: Table [dbo].[PlusNotice] Script Date: 09/11/2013 12:37:51 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[PlusNotice]') AND type in (N'U'))
DROP TABLE [dbo].[PlusNotice]
GO
USE [SRO_VT_SHARDLOG]
GO
/****** Object: Table [dbo].[PlusNotice] Script Date: 09/11/2013 12:37:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[PlusNotice](
[Sent] [int] NOT NULL,
[message] [varchar](max) NOT NULL,
[Date] [datetime] NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[PlusNotice] ADD CONSTRAINT [DF_PlusNotice_Sent] DEFAULT ((0)) FOR [Sent]
GO
ALTER TABLE [dbo].[PlusNotice] ADD CONSTRAINT [DF_PlusNotice_Date] DEFAULT (getdate()) FOR [Date]
GO
http://www4.0zz0.com/2015/11/27/18/171651594.gif
2
كود:
USE [SRO_VT_SHARD]
GO
/****** Object: Table [dbo].[_ItemName] Script Date: 09/11/2013 12:38:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[_ItemName](
[CodeName128] [varchar](50) NOT NULL,
[Name] [varchar](50) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
http://www4.0zz0.com/2015/11/27/18/171651594.gif
3
كود:
USE [SRO_VT_SHARDLOG]
GO
/****** Object: Table [dbo].[_LogItemPlus] Script Date: 09/11/2013 12:37:14 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[_LogItemPlus]') AND type in (N'U'))
DROP TABLE [dbo].[_LogItemPlus]
GO
USE [SRO_VT_SHARDLOG]
GO
/****** Object: Table [dbo].[_LogItemPlus] Script Date: 09/11/2013 12:37:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[_LogItemPlus](
[ID] [int] IDENTITY(1,1) NOT NULL,
[CharID] [varchar](10) NOT NULL,
[Serial64] [varchar](64) NOT NULL,
[Plus] [text] NOT NULL,
[Data] [datetime] NOT NULL,
[Lido] [int] NOT NULL,
CONSTRAINT [PK__LogItemPlus1_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
http://www4.0zz0.com/2015/11/27/18/171651594.gif
ولو عايز ال Notice تظهر ب Code ال Item فى ال RefObjCommon
هتعمل ال Procdure ده
كود:
USE [SRO_VT_LOG]
GO
/****** Object: StoredProcedure [dbo].[_AddLogItem] Script Date: 09/15/2013 20:20:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[_AddLogItem]
@CharID int,
@ItemRefID int,
@ItemSerial bigint,
@dwData int,
@TargetStorage tinyint,
@Operation tinyint,
@Slot_From tinyint,
@Slot_To tinyint,
@EventPos varchar(64),
@strDesc varchar(128),
@Gold bigint -- #ifdef EXTEND_GOLD_TYPE »?AO
as
declare @len_pos int
declare @len_desc int
declare @strDesc_separado varchar(128)
declare @len_desc1 int
set @len_pos = len(@EventPos)
set @len_desc = len(@strDesc)
if (@len_pos > 0 and @len_desc > 0)
begin
insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, EventPos, strDesc, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @EventPos, @strDesc, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
end
else if (@len_pos > 0 and @len_desc = 0)
begin
insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, EventPos, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @EventPos, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
end
else if (@len_pos = 0 and @len_desc > 0)
begin
insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, strDesc, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @strDesc, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
end
else if (@len_pos = 0 and @len_desc = 0)
begin
insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
end
-- A¯·? ¾?A??U ±¸AOA?¸é!
-- #define LOG_ITEMEVENT_BUY_CASHITEM (BYTE)35
if (@Operation = 35)
begin
insert _LogCashItem (RefItemID, CharID, Cnt, EventTime, Serial64)
values(@ItemRefID, @CharID, @dwData, GetDate(), @ItemSerial)
end
if (@Operation = 90 OR @Operation = 160)
begin
set @len_desc1 = CHARINDEX (']',@strDesc)
if(@len_desc1 = 9)
begin
set @strDesc = SUBSTRING(@strDesc,0,9)
set @strDesc_separado = SUBSTRING(@strDesc, 8, 1)
end
else if(@len_desc1 = 10)
begin
set @strDesc = SUBSTRING(@strDesc,0,10)
set @strDesc_separado = SUBSTRING(@strDesc, 8, 2)
end
if(@strDesc_separado >= 8)
begin
--set @strDesc_separado = @len_desc1
insert _LogItemPlus(CharID, Serial64, Plus, Data, Lido) values(@CharID, @ItemSerial, @strDesc_separado, GetDate(), '0')
end
end
if(@Operation = 90)
begin
declare @iname varchar(129)
declare @iid int
declare @cname varchar(64)
select @iid = RefItemID from SRO_VT_SHARD.dbo._Items where Serial64 = @ItemSerial
select @iname = CodeName128 from SRO_VT_SHARD.dbo._RefObjCommon where id = @iid
select @cname = CharName16 from SRO_VT_SHARD.dbo._Char where CharID = @CharID
if(@strDesc_separado >= 8)
insert PlusNotice(Sent, Message)values(0,'[' +@cname + '] has increased [' + @iname + '] to [Lvl ' + CAST(@strDesc_separado AS NVARCHAR) + ']')
end
والصور من العضو Ruxana
http://www8.0zz0.com/2016/11/11/20/232525047.jpg
http://www4.0zz0.com/2015/11/27/18/171651594.gif
ولو عايز تخلى ال Notice تظهر بأسم ال Item
هتعمل ال Procedure ده بدل اللى فوق
كود:
USE [SRO_VT_SHARLOG]
GO
/****** Object: StoredProcedure [dbo].[_AddLogItem] Script Date: 09/15/2013 20:20:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[_AddLogItem]
@CharID int,
@ItemRefID int,
@ItemSerial bigint,
@dwData int,
@TargetStorage tinyint,
@Operation tinyint,
@Slot_From tinyint,
@Slot_To tinyint,
@EventPos varchar(64),
@strDesc varchar(128),
@Gold bigint -- #ifdef EXTEND_GOLD_TYPE »?AO
as
declare @len_pos int
declare @len_desc int
declare @strDesc_separado varchar(128)
declare @len_desc1 int
set @len_pos = len(@EventPos)
set @len_desc = len(@strDesc)
if (@len_pos > 0 and @len_desc > 0)
begin
insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, EventPos, strDesc, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @EventPos, @strDesc, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
end
else if (@len_pos > 0 and @len_desc = 0)
begin
insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, EventPos, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @EventPos, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
end
else if (@len_pos = 0 and @len_desc > 0)
begin
insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, strDesc, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @strDesc, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
end
else if (@len_pos = 0 and @len_desc = 0)
begin
insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³?¼
end
-- A¯·? ¾?A??U ±¸AOA?¸é!
-- #define LOG_ITEMEVENT_BUY_CASHITEM (BYTE)35
if (@Operation = 35)
begin
insert _LogCashItem (RefItemID, CharID, Cnt, EventTime, Serial64)
values(@ItemRefID, @CharID, @dwData, GetDate(), @ItemSerial)
end
if (@Operation = 90 OR @Operation = 160)
begin
set @len_desc1 = CHARINDEX (']',@strDesc)
if(@len_desc1 = 9)
begin
set @strDesc = SUBSTRING(@strDesc,0,9)
set @strDesc_separado = SUBSTRING(@strDesc, 8, 1)
end
else if(@len_desc1 = 10)
begin
set @strDesc = SUBSTRING(@strDesc,0,10)
set @strDesc_separado = SUBSTRING(@strDesc, 8, 2)
end
if(@strDesc_separado >= 8)
begin
--set @strDesc_separado = @len_desc1
insert _LogItemPlus(CharID, Serial64, Plus, Data, Lido) values(@CharID, @ItemSerial, @strDesc_separado, GetDate(), '0')
end
end
if(@Operation = 90)
begin
declare @iname varchar(129)
declare @iid int
declare @cname varchar(64)
declare @RealName Varchar(Max)
select @iid = RefItemID from SRO_VT_SHARD.dbo._Items where Serial64 = @ItemSerial
select @iname = CodeName128 From SRO_VT_SHARD.dbo._RefObjCommon where id = @iid
Select @RealName = Name From SRO_VT_SHARD.dbo._itemName Where CodeName128 = @iname
select @cname = CharName16 from SRO_VT_SHARD.dbo._Char where CharID = @CharID and
if(@strDesc_separado >= 12)
insert PlusNotice(Sent, Message)values(0,'[' +@cname + '] has increased [' + @RealName + '] to [Lvl ' + CAST(@strDesc_separado AS NVARCHAR) + ']')
end
بعد اما تعمل ال Procedure ده هتخش على Tabel ال _ItemName وتضيف فى ال CodeName128 ال Code بتاع ال Item فى ال RefObjCommon و فى ال Name هتضيف اسم الايتم اللى يعازو يظهر زى كدة
http://www8.0zz0.com/2016/11/11/20/255078649.png
والصور من العضو Ruxana
http://www8.0zz0.com/2016/11/11/20/232525047.jpg
http://www4.0zz0.com/2015/11/27/18/171651594.gif
اقتباس:
المشاركة الأصلية كتبت بواسطة elbattawy1st
(المشاركة 5284370)
تسلم ايديك يامعلم بس بعد اذنك طبعا فى اضافه على الموضوع بتاعك
الاضافه هتكون كالتالى:
- يعمل notice ل sets
- الايتم الا هاتترفع فيها adv هيتكب فى notice الا انها معاه adv
- الايتم الا هاتترفع و مفهاش adv هينكتب الا مش معاه Adv
- الايتم الا هاتترفع ب Adv هينكتب فى notice ان البلاير استخدم adv كذا فى رفع الايتم
كدا اعتقد ان السيستم كامل ^_^
الناس الا شغال برنامج vsro Multi Tools
تستخدم السيستم دا هنا
الناس الا شغال برنامج AutoPlus Notice
تستخدم السيستم دا هنا
Guide :
- فك الضغط و اعمل exec لتابل و البروسيدور
- ضيف سطور addlogitem
- غير اسم داتا ELBATTAWY_SYSTEMS لداتا بتاعتك الا فيها التابل و البروسيدور
- ضيف سطور بتاعت تابل ItemsName علشان اسم الايتم يظهر فى الجيم عندك (افتح ملف دا من الميديا textdata_equip&skill.txt جيب منه الاكواد بالاسماء الايتم و ضيفها فى التابل)
- افتح البروسيدور و دور على Set @MaxPlus = '1' غير رقم 1 دا الارقم انت عاوزه يبدا البوت يدى notice بالايتم
ملحوطه : السيستم مش هيشتغل لو تابل itemsName مفهوش كود الايتم (بمعنى انت لو مش عاوز ديجرى معين ميتعملش ليه notice ماضيفِش اكواد الديجرى فى تابل ItemsName)
وبكدا السيستم شغال تمام و لو فى اقتراحات او اى مشاكل انا موجود
وتسلم ايديك مره تانيه على السيستم بتاعك و اسف على الاطاله ^_^
|
http://www4.0zz0.com/2015/11/27/18/735351340.gif
|