- Joined
- Feb 3, 2010
- Messages
- 429
- Reaction score
- 81
така ето един лек Update на Antidupe system-a в файловете на DarkMaster beta 25
просто пуснете този код в SQL Analizer(сложил съм го в PHP таг за да не заема много място)
Ето едно PHP с което ще виждате IP-тата,причината за бана и броя на това което са правили(в случая дупили, но ако имате и други подобни скриптове можете да им задавате причини и да им записва отделен брой)
не съм тествал, но мисля че работи не извади errors SQL-a правено е на SQL 2012, а разбрах че има разлика за Arrays и затова, ако има проблем кажете ще видя да го оправя
КАКВО НОВО:
- слага на съндъка парола за да им засече дупенето, ако ползват съндък
- банва всичките акаунти на този играч
- записва всичко в лесен и прост лог, но разбира се пази и стария понеже с стария можете да видите всички дупени items и кога са го правили
(заема памет и затова, ако някой има добър shrink ще е добре, ако може да го сподели)
това беше най-доброто, което се сетих за момента
ако се сетя за по добро ще го Update 
а ето и едно SQL кодче(тоест го пускате през SQL Analizer) за да ги отблокирате точно дадено ацц или IP, ако решите
просто пуснете този код в SQL Analizer(сложил съм го в PHP таг за да не заема много място)
PHP:
USE [MuOnline]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Banned_log](
[IP] [varchar](15) NOT NULL,
[Reason] [varchar](100) NOT NULL,
[number] [bigint] NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Banned_log] ADD DEFAULT ((0)) FOR [number]
GO
USE [MuOnline]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[trg_CheckSameID] ON [dbo].[Character]
FOR UPDATE
AS
BEGIN
IF UPDATE(inventory)
BEGIN
SET NOCOUNT ON
DECLARE
@wh_acid varchar(10),
@wh_data binary(1200),
@wh_type binary(1),
@wh_serial binary(4),
@cr_user varchar(10),
@cr_acid varchar(10),
@cr_data binary(760),
@cr_type binary(1),
@cr_serial binary(4),
@al_acid varchar(10),
@j int,
@k int,
@find bit
SELECT @cr_acid=i.accountid,
@cr_data=i.inventory
FROM inserted i
SET @j=0
SET @find=0
WHILE @j<76 AND @cr_data IS NOT NULL
BEGIN
SET @cr_type=SUBSTRING(@cr_data,@j*10+1,1)
SET @cr_serial=SUBSTRING(@cr_data,@j*10+4,4)
IF @cr_type<>0xFF AND @cr_serial<>0x00000000
BEGIN
SELECT @al_acid=items_acid FROM allitemslog WHERE items_type=@cr_type AND items_serial=@cr_serial
IF @al_acid IS NULL
INSERT INTO allitemslog (items_type,items_serial,items_acid) VALUES (@cr_type,@cr_serial,@cr_acid)
ELSE
BEGIN
UPDATE allitemslog SET items_acid=@cr_acid WHERE items_type=@cr_type AND items_serial=@cr_serial
SELECT @wh_data=items FROM warehouse WHERE accountid=@al_acid
SET @k=0
WHILE @k<120 AND @wh_data IS NOT NULL
BEGIN
SET @wh_type=SUBSTRING(@wh_data,@k*10+1,1)
SET @wh_serial=SUBSTRING(@wh_data,@k*10+4,4)
IF @wh_type=@cr_type AND @wh_serial=@cr_serial
SET @find=1
SET @k=@k+1
END
END
END
SET @j=@j+1
END
IF @find=1
BEGIN
Declare @IP nvarchar(15);
Declare @all_accs Table(number int IDENTITY(1,1),acc char(10))
Declare @accs_count int;
INSERT INTO copylog (copy_whdata,copy_acid,copy_date) VALUES (@wh_data,@al_acid,getdate())
-- this is wer u can add more punishment like ban or lock characters
UPDATE Character SET CtlCode=1 WHERE accountid=@al_acid
Set @IP = (Select IP From MEMB_STAT Where memb___id=@al_acid)
Insert Into @all_accs Select memb___id From MEMB_STAT Where IP=@IP
SET @accs_count = (Select Max(number) From @all_accs)
while (@accs_count > 0)
BEGIN
Declare @next char(10);
SET @next = (Select acc From @all_accs Where number = @accs_count)
Update MEMB_INFO Set bloc_code = 1 Where memb___id=@next
SET @accs_count = @accs_count -1
END
Declare @check int
SET @check = (Select Count(*) From Banned_log Where IP=@IP AND Reason='Dupe')
if (@check>0)
BEGIN
Update Banned_Log Set number = number + 1 Where IP=@IP AND Reason='Dupe'
END
else
BEGIN
Insert Into Banned_log values(@IP,'Dupe',0)
END
Update warehouse Set pw=4917 Where AccountID=@al_acid
END
SET NOCOUNT OFF
END
END
Ето едно PHP с което ще виждате IP-тата,причината за бана и броя на това което са правили(в случая дупили, но ако имате и други подобни скриптове можете да им задавате причини и да им записва отделен брой)
PHP:
<table>
<tr><th>IP</th><th>Reason</th><th>Count</th></tr>
<?php
$row = mssql_query("Select * From Banned_log");
for($i = 0; $i < mssql_num_rows(@row);$i++)
{
$rows = mssql_fetch_row($row);
echo"<tr><td>$rows[0]</td><td>$rows[1]</td><td>$rows[2]</td></tr>";
}
?>
</table>
не съм тествал, но мисля че работи не извади errors SQL-a правено е на SQL 2012, а разбрах че има разлика за Arrays и затова, ако има проблем кажете ще видя да го оправя
КАКВО НОВО:
- слага на съндъка парола за да им засече дупенето, ако ползват съндък
- банва всичките акаунти на този играч
- записва всичко в лесен и прост лог, но разбира се пази и стария понеже с стария можете да видите всички дупени items и кога са го правили
това беше най-доброто, което се сетих за момента
а ето и едно SQL кодче(тоест го пускате през SQL Analizer) за да ги отблокирате точно дадено ацц или IP, ако решите
PHP:
Declare @IP varchar(15)
Declare @username varchar(10)
SET @IP='vuvedi IP-to v kavi4kite ako iska6 po IP ina4e prosto napi6i NULL'
SET @username='vuvedi username v kavi4kite ako iska6 po username ina4e prosto napi6i NULL'
if (@IP = 'NULL' AND @username <> 'NULL')
BEGIN
Update MEMB_INFO Set bloc_code = 0 Where memb___id=@username
Update Character Set CtlCode = NULL Where AccountID=@username
END
else if (@IP <> 'NULL' AND @username = 'NULL')
BEGIN
Declare @all_accs Table(number int IDENTITY(1,1),acc char(10))
Declare @accs_count int;
Insert Into @all_accs Select memb___id From MEMB_STAT Where IP=@IP
SET @accs_count = (Select Max(number) From @all_accs)
while (@accs_count > 0)
BEGIN
Declare @next char(10);
SET @next = (Select acc From @all_accs Where number = @accs_count)
Update MEMB_INFO Set bloc_code = 0 Where memb___id=@next
Update Character Set CtlCode = NULL Where AccountID=@next
SET @accs_count = @accs_count -1
END
END
Last edited: