Midget1337
12-02-2014, 04:34 AM
بسم الله الرحمن الرحيم
في الموضوع دا هوريكم ازاي تعملوا تسجيل لجميع الايبيهات لأي حد يخش السيرفر عندك (غير الايبي بتاع عمل الأكونت اللي هوا في TB_USER )..بمعنى ان كل ما واحد يفتح شخصية يتسجل الايبي اللي هوا داخل منه.
النتيجة النهائية :
http://img837.imageshack.us/img837/926/eevx.png
كام ملاحظة بس للناس :
1-لازم تكون الـ Logs عندك شغالة.. بمعنى ان في ناس ممكن بتكون شغالة ببرنامج Evangelion أو srZor و بيقفلوا الـ option بتاع الـ Logs..لازم تفتحوها..
لو انتا مش بتستعمل بالبرنامج دا خلاص يبقى شغالة عندك.
2-الموضوع دا هيتقل الـ Log database بتاعتك و هيبقى فيها داتا كتير..من وقت للتاني امسح الـ table اللي بيتخزنوا عليه(اللي هوا IP_LOGS_ ) لأن كل ما شخصية تخش الجيم بيتضافلها سطر في الداتا.
3-اللي عاوز ينقل الموضوع برة على منتدى تاني ينقوله بس يدي الحقوق لأصحابها عشان الناس تعرف مين اللي عمله :) .
4-لو انتا شغال بـ Proxy زي مثلا HyperFilter .. الموضوع دا مش هينفع معاك لأن كل الشخصيات هتبقى متسجلة بـ IP واحد اللي هوا بتاع الحماية (البروكسي).
نبدأ الشغل :
أول حاجة هتعمل الـ Table دا :
USE [SRO_VT_LOG]
GO
/****** Object: Table [dbo].[_IP_LOGS] Script Date: 02/12/2014 02:33:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[_IP_LOGS](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[CharName] [varchar](50) NOT NULL,
[IP] [varchar](50) NOT NULL,
[LogTime] [smalldatetime] NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
--لاحظ انك هتغير اسم الداتابيز SRO_VT_LOG باللي عندك
تاني حاجة و أهم حاجة .. تعديل على Procedure اسمها AddLogChar_
هنعمل زي اللي في الصورة :
http://i.imgur.com/8BrxP3F.png
بعد ما تفتح الـ Procedure تنزل لتحت خالص في اخرها و تعمل سطر جديد و تضيف الكود دا فيها :
IF @EventID = 4 /*This eventID is triggered whenever a character logs in*/
BEGIN
DECLARE @Cname varchar(50) = (SELECT Charname16 from SRO_VT_SHARD.dbo._Char WHERE CharID=@CharID)
DECLARE @IP bigint = @Data2
DECLARE @ip1 int;
DECLARE @ip2 int; /* Made by Midget1337 - www.silkroad4arab.com */
DECLARE @ip3 int; /*All rights reserved */
DECLARE @ip4 int;
DECLARE @LeftOver bigint;
DECLARE @finalip varchar(50);
SET @ip1 = @IP / 16777216 /*First IP segment*/
SET @LeftOver = @IP - (@ip1 * 16777216)
SET @ip2 = @LeftOver / 65536 /*Second IP segment*/
SET @LeftOver = @LeftOver - (@ip2 * 65536)
SET @ip3 = @LeftOver / 256 /*Third IP segment*/
SET @ip4 = @LeftOver - (@ip3 * 256) /*Fourth IP segment*/
SET @finalip = /*Putting the segments together and reversing them*/
CONVERT(varchar, @ip4)+
'.'+CONVERT(varchar, @ip3)+
'.'+CONVERT(varchar, @ip2)+
'.'+CONVERT(varchar, @ip1)
INSERT INTO _IP_LOGS (CharName,IP,LogTime) values (@Cname,@finalip,GETDATE())
END
--لاحظ انك هتغير اسم الداتابيز SRO_VT_SHARD باللي عندك
بس لحد هنا خلصنا الشغل..اللي عاوز يعرف الايبي بتاع واحد فاتح مثلا يعمل الكويري دا :
SELECT TOP 1 * FROM _IP_LOGS
WHERE CharName = 'Character name'
ORDER BY LogTime DESC
مش مطلوب منكم غير حاجة واحدة.. تدعولي بالنجاح و خصوصا السنة دي :D
في الموضوع دا هوريكم ازاي تعملوا تسجيل لجميع الايبيهات لأي حد يخش السيرفر عندك (غير الايبي بتاع عمل الأكونت اللي هوا في TB_USER )..بمعنى ان كل ما واحد يفتح شخصية يتسجل الايبي اللي هوا داخل منه.
النتيجة النهائية :
http://img837.imageshack.us/img837/926/eevx.png
كام ملاحظة بس للناس :
1-لازم تكون الـ Logs عندك شغالة.. بمعنى ان في ناس ممكن بتكون شغالة ببرنامج Evangelion أو srZor و بيقفلوا الـ option بتاع الـ Logs..لازم تفتحوها..
لو انتا مش بتستعمل بالبرنامج دا خلاص يبقى شغالة عندك.
2-الموضوع دا هيتقل الـ Log database بتاعتك و هيبقى فيها داتا كتير..من وقت للتاني امسح الـ table اللي بيتخزنوا عليه(اللي هوا IP_LOGS_ ) لأن كل ما شخصية تخش الجيم بيتضافلها سطر في الداتا.
3-اللي عاوز ينقل الموضوع برة على منتدى تاني ينقوله بس يدي الحقوق لأصحابها عشان الناس تعرف مين اللي عمله :) .
4-لو انتا شغال بـ Proxy زي مثلا HyperFilter .. الموضوع دا مش هينفع معاك لأن كل الشخصيات هتبقى متسجلة بـ IP واحد اللي هوا بتاع الحماية (البروكسي).
نبدأ الشغل :
أول حاجة هتعمل الـ Table دا :
USE [SRO_VT_LOG]
GO
/****** Object: Table [dbo].[_IP_LOGS] Script Date: 02/12/2014 02:33:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[_IP_LOGS](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[CharName] [varchar](50) NOT NULL,
[IP] [varchar](50) NOT NULL,
[LogTime] [smalldatetime] NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
--لاحظ انك هتغير اسم الداتابيز SRO_VT_LOG باللي عندك
تاني حاجة و أهم حاجة .. تعديل على Procedure اسمها AddLogChar_
هنعمل زي اللي في الصورة :
http://i.imgur.com/8BrxP3F.png
بعد ما تفتح الـ Procedure تنزل لتحت خالص في اخرها و تعمل سطر جديد و تضيف الكود دا فيها :
IF @EventID = 4 /*This eventID is triggered whenever a character logs in*/
BEGIN
DECLARE @Cname varchar(50) = (SELECT Charname16 from SRO_VT_SHARD.dbo._Char WHERE CharID=@CharID)
DECLARE @IP bigint = @Data2
DECLARE @ip1 int;
DECLARE @ip2 int; /* Made by Midget1337 - www.silkroad4arab.com */
DECLARE @ip3 int; /*All rights reserved */
DECLARE @ip4 int;
DECLARE @LeftOver bigint;
DECLARE @finalip varchar(50);
SET @ip1 = @IP / 16777216 /*First IP segment*/
SET @LeftOver = @IP - (@ip1 * 16777216)
SET @ip2 = @LeftOver / 65536 /*Second IP segment*/
SET @LeftOver = @LeftOver - (@ip2 * 65536)
SET @ip3 = @LeftOver / 256 /*Third IP segment*/
SET @ip4 = @LeftOver - (@ip3 * 256) /*Fourth IP segment*/
SET @finalip = /*Putting the segments together and reversing them*/
CONVERT(varchar, @ip4)+
'.'+CONVERT(varchar, @ip3)+
'.'+CONVERT(varchar, @ip2)+
'.'+CONVERT(varchar, @ip1)
INSERT INTO _IP_LOGS (CharName,IP,LogTime) values (@Cname,@finalip,GETDATE())
END
--لاحظ انك هتغير اسم الداتابيز SRO_VT_SHARD باللي عندك
بس لحد هنا خلصنا الشغل..اللي عاوز يعرف الايبي بتاع واحد فاتح مثلا يعمل الكويري دا :
SELECT TOP 1 * FROM _IP_LOGS
WHERE CharName = 'Character name'
ORDER BY LogTime DESC
مش مطلوب منكم غير حاجة واحدة.. تدعولي بالنجاح و خصوصا السنة دي :D