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.
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
İ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.
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
#Konu içerisinde ki kodlar alıntı yapılmış olup, anlatımı tarafıma aittir.
 
Son düzenleme:
Yukarı Alt