- Kayıt
- 22 Ağustos 2010
- Mesajlar
- 1.866
- Beğeniler
- 514
- Takımı
- Seçiniz...

Merhaba arkadaşlar bu topic'te sizlere Thief'lerin yaptığı kervan pet bugunu engellemeyi anlatacağım.
İlk olarak her zaman ki gibi DB yedeğimizi alıyoruz.
Konuyu daha fazla açacak olursak şöyle anlatayım;
Traderler pet açarken bir şehirden diğer şehire ışınlanabiliyor ya da thiefler pet açarken town'a girebiliyor.
Bu yapacağınız işlem pet açan kişiye 5 saliselik ufak bir delay yapıyor, bu yüzden oyuncu bu süre içerisinde bir işlem gerçekleştiremiyor, hareket edemiyor.
SRO_VT_SHARD > Stored Prosedured > _AddNewCos
Prosedürünü açın, prosedürün en alt kısmı bu şekildedir;
Kod:
comit tran[/FONT][/CENTER]
[FONT=Tahoma]
[CENTER]return @CoS_ID
Bu son iki satırı silip yerine aşağıdaki satırları ekleyip F5 ile okutun.
İsteyenler ise aşağıdaki kodu komple Yeni Query açarak içine yapıştırıp F5 yapsın.
_AddNewCos prosedürünüz komple değişecektir.
#Konu içerisinde ki kodlar alıntı yapılmış olup, anlatımı tarafıma aittir.
Kod:
commit tran
declare @bla varchar(max);
select @bla = codename128 from _refobjcommon where ID = @ReFObjID
if @bla like '%COS_T%'
begin
WAITFOR DELAY '0:00:00.5' --süre
END
return @CoS_ID
_AddNewCos prosedürünüz komple değişecektir.
Kod:
USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_AddNewCOS] Script Date: 14.07.2016 19:41:24 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_AddNewCOS]
@OwnerCharID int,
@RefObjID int,
@Level int,
@HP int,
@MP int,
@HGP int,
@KeeperNPC int,
@State int,
@InventorySize int,
@itemID int,
@PickItemConfig tinyint,
@RentEndTime smalldatetime
as
begin tran
declare @COS_ID int
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- pet_skill_item (ÃÖ¼±È£)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
declare @MaxInventorySize tinyint
select @MaxInventorySize = InventorySize
from _RefObjCommon, _RefObjChar
where _RefObjCommon.ID = @RefObjID and _RefObjCommon.Link = _RefObjChar.ID
if( @@rowcount = 0 or @MaxInventorySize < @InventorySize )
begin
rollback tran
return -5
end
insert into _CharCOS values (@OwnerCharID, @RefObjID, @HP, @MP, @KeeperNPC, @State, NULL, @Level, 0, @HGP, @PickItemConfig, @RentEndTime)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
set @COS_ID = @@identity
if (@COS_ID = 0 OR @@error <> 0)
begin
rollback tran
return -1
end
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- pet_skill_item (ÃÖ¼±È£)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
if (@MaxInventorySize > 0)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
begin
declare @Slot int
set @Slot = 0
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- pet_skill_item (ÃÖ¼±È£)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
while (@Slot < @MaxInventorySize)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
begin
insert into _InvCOS values(@COS_ID, @Slot, 0)
if (@@error <> 0)
begin
-- Àκ¥Å丮 »ý¼º ½ÇÆÐ!
rollback tran
return -2
end
set @Slot = @Slot + 1
end
end
if( @itemID <> 0 )
begin
update _Items set Data = @COS_ID where ID64 = @itemID
if( @@error <> 0 or @@rowcount = 0 )
begin
rollback transaction
return -4
end
end
commit tran
declare @bla varchar(max);
select @bla = codename128 from _refobjcommon where ID = @ReFObjID
if @bla like '%COS_T%'
begin
WAITFOR DELAY '0:00:00.5' --süre
END
return @CoS_ID
Son düzenleme: