3 tane kilitleme ile ilgili prosedür var,tabi itemleri kilitleme ile ilgili prosedürlerde var
Öncelikle tablomuzun QA kodu:
Kod:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ITEMKILIT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ITEMKILIT]
GO
CREATE TABLE [dbo].[ITEMKILIT] (
[strAccountId] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[strPasswd] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[sonuc] [int] NULL ,
[c1] [varchar] (1600) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[c2] [varchar] (1600) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[c3] [varchar] (1600) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[banka] [varchar] (1600) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO
İlk prosedür: item_kilitle
Kod:
/*
prosedür yapan: ozocozo
konu: item kilitleme,saklama
exec item_kilitle 'kullanıcı adı','item şifresi'
*/
CREATE PROCEDURE item_kilitle
@kulid nvarchar(255),@sifre nvarchar(255)
AS
declare @item1 varchar(1600), @item2 varchar(1600), @item3 varchar(1600),@banka varchar(1600)
/* charların itemlerini ve banka itemlerini alalım */
select @item1 = strItem from userdata where struserid = (select strcharid1 from account_char where straccountid = @kulid and strcharid1 is not null )
select @item2 = strItem from userdata where struserid = (select strcharid2 from account_char where straccountid = @kulid and strcharid2 is not null )
select @item3 = strItem from userdata where struserid = (select strcharid3 from account_char where straccountid = @kulid and strcharid3 is not null )
select @banka = WarehouseData from WAREHOUSE where strAccountID = @kulid
--itemlerini kaydedelim ;)
INSERT INTO ITEMKILIT (strAccountID, strPasswd,sonuc, c1, c2, c3, banka) VALUES (@kulid, @sifre,'5', @item1, @item2, @item3,@banka )
-- itemlerini göçürtek :D
Update USERDATA Set stritem = '' where strUserId = (select strcharid1 from account_char where straccountid = @kulid and strcharid1 is not null )
Update USERDATA Set stritem = '' where strUserId = (select strcharid2 from account_char where straccountid = @kulid and strcharid2 is not null )
Update USERDATA Set stritem = '' where strUserId = (select strcharid3 from account_char where straccountid = @kulid and strcharid3 is not null )
Update WAREHOUSE Set WarehouseData = '' where strAccountID = @kulid
--prosedür buraya kadar ;)
GO
2. prosedür: item_aç
Kod:
/*
prosedür yapan: ozocozo
konu: itemi kilitli olan charın kilidini açma(oyuna girerken)
*/
CREATE PROCEDURE item_aç
@kulid nvarchar(255)
as
DECLARE @itemm1 nvarchar(1600),@itemm2 nvarchar(1600),@itemm3 nvarchar(1600),@banka nvarchar(1600),
@char1 nvarchar(21),@char2 nvarchar(21),@char3 nvarchar(21)
-- yedek itemleri alalım
select @itemm1 = c1 from ITEMKILIT where strAccountID = @kulid
select @itemm2 = c2 from ITEMKILIT where strAccountID = @kulid
select @itemm3 = c3 from ITEMKILIT where strAccountID = @kulid
select @banka = banka from ITEMKILIT where strAccountID = @kulid
--aldık
-- charlara el atak
select @char1 = strcharid1 from account_char where straccountid = @kulid and strcharid1 is not null
select @char2 = strcharid2 from account_char where straccountid = @kulid and strcharid2 is not null
select @char3 = strcharid3 from account_char where straccountid = @kulid and strcharid3 is not null
-- attık itemleri salıyoruz ;)
Update USERDATA Set stritem = @itemm1 where strUserId = @char1
Update USERDATA Set stritem = @itemm2 where strUserId = @char2
Update USERDATA Set stritem = @itemm3 where strUserId = @char3
Update WAREHOUSE Set WarehouseData = @banka where strAccountID = @kulid
GO
3. prosedür : item_kaldır
Kod:
/*
prosedür yapan: ozocozo
konu: item kilitli olan kullanıcının kilidini kaldırma resmen!..
*/
CREATE PROCEDURE item_kaldır
@kulid nvarchar(255)
as
DECLARE @itemm1 varchar(1600),@itemm2 varchar(1600),@itemm3 varchar(1600),@banka varchar(1600),
@char1 nvarchar(21),@char2 nvarchar(21),@char3 nvarchar(21)
-- yedek itemleri alalım
select @itemm1 = c1 from ITEMKILIT where strAccountID = @kulid
select @itemm2 = c2 from ITEMKILIT where strAccountID = @kulid
select @itemm3 = c3 from ITEMKILIT where strAccountID = @kulid
select @banka = banka from ITEMKILIT where strAccountID = @kulid
--aldık
-- charlara el atak
select @char1 = strcharid1 from account_char where straccountid = @kulid and strcharid1 is not null
select @char2 = strcharid2 from account_char where straccountid = @kulid and strcharid2 is not null
select @char3 = strcharid3 from account_char where straccountid = @kulid and strcharid3 is not null
--itemlerini geri verelim
Update USERDATA Set stritem = @itemm1 where strUserId = @char1
Update USERDATA Set stritem = @itemm2 where strUserId = @char2
Update USERDATA Set stritem = @itemm3 where strUserId = @char3
Update WAREHOUSE Set WarehouseData = @banka where strAccountID = @kulid
-- kilitlilerden silelim ;)
delete from ITEMKILIT where strAccountID = @kulid
GO
prosedürler bitti ama olay henüz bitmedi!!
ACCOUNT_LOGINE eklenicek; (AS altına)
Kod:
decare @x int
select @x = sonuc from ITEMKILIT where strAccountID = @AccountID
if @x = 1
begin
exec item_aç @AccountID
end
ACCOUNT_LOGOUT; (uygun bir yere)
Kod:
update ITEMKILIT set sonuc = 0 where strAccountID = @AccountID
UPDATE_USER_DATA;
Kod:
bu proc yok :haha:
yapıcağınız: eğer itemkilitteki sonuc 1 ise itemleri güncellesin
eğer itemkillittle kayıt yoksa kaydetmesin
UPDATE_WAREHOUSE;
Kod:
bu proc yok :haha:
yapıcağınız: eğer itemkilitteki sonuc 1 ise itemleri güncellesin
eğer itemkillittle kayıt yoksa kaydetmesin
1 dakikada 1 çalışan job yapın ve aşağıdaki komutu şey edin;
Kod:
silmişim siz yazın
currenuserde olmayan accountların ITEMKILITteki sonuc değerini 0 yapsn
bide bunlarım UMG_ ile başlıyanları var gerekirse onları yapın
Eksik proc varmı hatırlamıyorum,format atmıştım db silidndi
metin belgesindekileri aldım x)
Şimdi nsl işletceksiniz x)
Çalışma işlemi:
şiimdi üyeliğin ITEMKILIT tablosundaki sonuc değeri 0 ise itemleri kilitlidir x)
1 ise normal açıktır
Adamlar itemlerinin kilitlerini falan nerden açıcaklar diyorsanız;
ya program yada php site yapın
(örn ben anticheat içinde yaptım oyuna girerken yazıyorsun)
ID: kullanıcı adı
Şifre: İtem şifresi
|OK| -> ok butonu
OK butonuna bastığında kullancı adını ITEMKILIT tablosunda arasın,bulursa şifresini seçsin şifresi doğruysa
kullancının itemkilit tablosundaki sonuc değerini 1 yapsn
Öncelikle tablomuzun QA kodu:
Kod:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ITEMKILIT]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ITEMKILIT]
GO
CREATE TABLE [dbo].[ITEMKILIT] (
[strAccountId] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[strPasswd] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[sonuc] [int] NULL ,
[c1] [varchar] (1600) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[c2] [varchar] (1600) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[c3] [varchar] (1600) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[banka] [varchar] (1600) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO
İlk prosedür: item_kilitle
Kod:
/*
prosedür yapan: ozocozo
konu: item kilitleme,saklama
exec item_kilitle 'kullanıcı adı','item şifresi'
*/
CREATE PROCEDURE item_kilitle
@kulid nvarchar(255),@sifre nvarchar(255)
AS
declare @item1 varchar(1600), @item2 varchar(1600), @item3 varchar(1600),@banka varchar(1600)
/* charların itemlerini ve banka itemlerini alalım */
select @item1 = strItem from userdata where struserid = (select strcharid1 from account_char where straccountid = @kulid and strcharid1 is not null )
select @item2 = strItem from userdata where struserid = (select strcharid2 from account_char where straccountid = @kulid and strcharid2 is not null )
select @item3 = strItem from userdata where struserid = (select strcharid3 from account_char where straccountid = @kulid and strcharid3 is not null )
select @banka = WarehouseData from WAREHOUSE where strAccountID = @kulid
--itemlerini kaydedelim ;)
INSERT INTO ITEMKILIT (strAccountID, strPasswd,sonuc, c1, c2, c3, banka) VALUES (@kulid, @sifre,'5', @item1, @item2, @item3,@banka )
-- itemlerini göçürtek :D
Update USERDATA Set stritem = '' where strUserId = (select strcharid1 from account_char where straccountid = @kulid and strcharid1 is not null )
Update USERDATA Set stritem = '' where strUserId = (select strcharid2 from account_char where straccountid = @kulid and strcharid2 is not null )
Update USERDATA Set stritem = '' where strUserId = (select strcharid3 from account_char where straccountid = @kulid and strcharid3 is not null )
Update WAREHOUSE Set WarehouseData = '' where strAccountID = @kulid
--prosedür buraya kadar ;)
GO
2. prosedür: item_aç
Kod:
/*
prosedür yapan: ozocozo
konu: itemi kilitli olan charın kilidini açma(oyuna girerken)
*/
CREATE PROCEDURE item_aç
@kulid nvarchar(255)
as
DECLARE @itemm1 nvarchar(1600),@itemm2 nvarchar(1600),@itemm3 nvarchar(1600),@banka nvarchar(1600),
@char1 nvarchar(21),@char2 nvarchar(21),@char3 nvarchar(21)
-- yedek itemleri alalım
select @itemm1 = c1 from ITEMKILIT where strAccountID = @kulid
select @itemm2 = c2 from ITEMKILIT where strAccountID = @kulid
select @itemm3 = c3 from ITEMKILIT where strAccountID = @kulid
select @banka = banka from ITEMKILIT where strAccountID = @kulid
--aldık
-- charlara el atak
select @char1 = strcharid1 from account_char where straccountid = @kulid and strcharid1 is not null
select @char2 = strcharid2 from account_char where straccountid = @kulid and strcharid2 is not null
select @char3 = strcharid3 from account_char where straccountid = @kulid and strcharid3 is not null
-- attık itemleri salıyoruz ;)
Update USERDATA Set stritem = @itemm1 where strUserId = @char1
Update USERDATA Set stritem = @itemm2 where strUserId = @char2
Update USERDATA Set stritem = @itemm3 where strUserId = @char3
Update WAREHOUSE Set WarehouseData = @banka where strAccountID = @kulid
GO
3. prosedür : item_kaldır
Kod:
/*
prosedür yapan: ozocozo
konu: item kilitli olan kullanıcının kilidini kaldırma resmen!..
*/
CREATE PROCEDURE item_kaldır
@kulid nvarchar(255)
as
DECLARE @itemm1 varchar(1600),@itemm2 varchar(1600),@itemm3 varchar(1600),@banka varchar(1600),
@char1 nvarchar(21),@char2 nvarchar(21),@char3 nvarchar(21)
-- yedek itemleri alalım
select @itemm1 = c1 from ITEMKILIT where strAccountID = @kulid
select @itemm2 = c2 from ITEMKILIT where strAccountID = @kulid
select @itemm3 = c3 from ITEMKILIT where strAccountID = @kulid
select @banka = banka from ITEMKILIT where strAccountID = @kulid
--aldık
-- charlara el atak
select @char1 = strcharid1 from account_char where straccountid = @kulid and strcharid1 is not null
select @char2 = strcharid2 from account_char where straccountid = @kulid and strcharid2 is not null
select @char3 = strcharid3 from account_char where straccountid = @kulid and strcharid3 is not null
--itemlerini geri verelim
Update USERDATA Set stritem = @itemm1 where strUserId = @char1
Update USERDATA Set stritem = @itemm2 where strUserId = @char2
Update USERDATA Set stritem = @itemm3 where strUserId = @char3
Update WAREHOUSE Set WarehouseData = @banka where strAccountID = @kulid
-- kilitlilerden silelim ;)
delete from ITEMKILIT where strAccountID = @kulid
GO
prosedürler bitti ama olay henüz bitmedi!!
ACCOUNT_LOGINE eklenicek; (AS altına)
Kod:
decare @x int
select @x = sonuc from ITEMKILIT where strAccountID = @AccountID
if @x = 1
begin
exec item_aç @AccountID
end
ACCOUNT_LOGOUT; (uygun bir yere)
Kod:
update ITEMKILIT set sonuc = 0 where strAccountID = @AccountID
UPDATE_USER_DATA;
Kod:
bu proc yok :haha:
yapıcağınız: eğer itemkilitteki sonuc 1 ise itemleri güncellesin
eğer itemkillittle kayıt yoksa kaydetmesin
UPDATE_WAREHOUSE;
Kod:
bu proc yok :haha:
yapıcağınız: eğer itemkilitteki sonuc 1 ise itemleri güncellesin
eğer itemkillittle kayıt yoksa kaydetmesin
1 dakikada 1 çalışan job yapın ve aşağıdaki komutu şey edin;
Kod:
silmişim siz yazın
currenuserde olmayan accountların ITEMKILITteki sonuc değerini 0 yapsn
bide bunlarım UMG_ ile başlıyanları var gerekirse onları yapın
Eksik proc varmı hatırlamıyorum,format atmıştım db silidndi
metin belgesindekileri aldım x)
Şimdi nsl işletceksiniz x)
Çalışma işlemi:
şiimdi üyeliğin ITEMKILIT tablosundaki sonuc değeri 0 ise itemleri kilitlidir x)
1 ise normal açıktır
Adamlar itemlerinin kilitlerini falan nerden açıcaklar diyorsanız;
ya program yada php site yapın
(örn ben anticheat içinde yaptım oyuna girerken yazıyorsun)
ID: kullanıcı adı
Şifre: İtem şifresi
|OK| -> ok butonu
OK butonuna bastığında kullancı adını ITEMKILIT tablosunda arasın,bulursa şifresini seçsin şifresi doğruysa
kullancının itemkilit tablosundaki sonuc değerini 1 yapsn