الموقع العربي الاول للعبة Silkroad Online

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الاسئلة و الاستفسارات لعمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=226)
-   -   سؤال بعد اذنكووو (https://silkroad4arab.com/vb/showthread.php?t=420370)

rooney20 20-03-2012 12:26 AM

سؤال بعد اذنكووو
 
هو ازاى ازود نسبة Pluse فى السيرفر ؟؟؟؟

OoReMooO 20-03-2012 03:10 AM

دا شرح كان عامله branz فى الموضوع اللى اتقفل بتاع الاستفسارات

ان شاء الله انا ناوى اقول للناس ازاى تغير البلاس Rate من 2 ل 3 و 4 و 5

نبدا على بركه الله

الاول هنفتح الSQL

و بعدين ندور على RefObjItem

وبعدين Edit


تمام كده

هنلاقى الارقام دى

2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043

نبدا مثلا ب 2033
هتلاقى حاجه اسمها params

حلو

لقيتها يا عم ؟!!
عدل بقى عندك كل البارمس اللى موجوده ب اى رقم انت عاوزه مع العلم ان 2033 ده 1X

و كل زياده = 1x زياده


مثال انا عندى الحاجه

168101125 هنخليها 840505625 و كده احنا خلينا الرات 5x

مثال تانى

كانت 168101125هتبقى 326202210 وده معناه ان اللاكى بودر بقى 2X

و متنساش تعمل Restart لل game server


rooney20 20-03-2012 01:35 PM

ممكن الشرح بالصور عشان مش فاهم حاجة

branz 20-03-2012 02:32 PM

أتفضل يا باشا وركـز فيها كويس

أنت هتلاقى ان البـلس اخره 12 فى الداتا بيز هتخليه اخره 12 او 15 او 255 اخرها 255 وتابع الصور

http://img708.imageshack.us/img708/8...apimage5kv.png

http://img829.imageshack.us/img829/7...apimage6lg.png

كود:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go



----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
-- 20_SMC__ShardDB.sql  _SMC_ADD_ITEM ¼öÁ¤ 
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------

 ----------------------------------------------------------------------- 
ALTER      procedure [dbo].[_SMC_ADD_ITEM] 
----------------------------------------------------- params to find target item 
 @TargetStorage int,  /* 0 = inventory, 1 = chest , 2 = guild chest, 3 = Avatar Inventory */ 
 @OwnerName varchar(128), 
 ----------------------------------------------------- params to modify the item 
 @RefItemID  int, 
 @OptLvl  tinyint, 
 @Variance  bigint, 
 @Data  int, 
 @szCreater  varchar(32), 
 @MagParamNum int, 
 @MagParam1 bigint, 
 @MagParam2 bigint, 
 @MagParam3 bigint, 
 @MagParam4 bigint, 
 @MagParam5 bigint, 
 @MagParam6 bigint, 
 @MagParam7 bigint, 
 @MagParam8 bigint, 
 @MagParam9 bigint, 
 @MagParam10 bigint, 
 @MagParam11 bigint, 
 @MagParam12 bigint 
as 
 ---------------------------------------------------- 
 -- step 1. check validity of parameters 
 ---------------------------------------------------- 
 if (@TargetStorage <> 0 and @TargetStorage <> 1 and @TargetStorage <> 2 and @TargetStorage <> 3) 
 begin 
  select -1, cast(0 as bigint), cast(0 as bigint) -- invalid target storage 
  return 
 end 
 declare @ownerid int 
 declare @ItemID bigint 
 set @ownerid = 0 
 set @ItemID = 0 
 declare @empty_slot int 
 set @empty_slot = -1 
 if (@TargetStorage = 0) 
 begin 
  select @ownerid = charid from _char where charname16 = @OwnerName 
  if (@@rowcount = 0 or @ownerid = 0 or @ownerid is null) 
  begin 
  select -2, cast(0 as bigint), cast(0 as bigint)-- can't find owner 
  return 
  end 
 
  select top 1 @empty_slot = slot from _inventory   
  where charid = @ownerid and slot >= 13   
  and itemid = 0   
  and slot < (select top 1 InventorySize from _Char where CharID = @ownerid) 
  order by slot asc 
 
  if (@@rowcount = 0) 
  begin 
  select -3, cast(0 as bigint), cast(0 as bigint) -- inventory full 
  return 
  end 
 end 
 else if (@TargetStorage = 1) 
 begin 
  select @ownerid = JID from _AccountJID where AccountID = @ownername 
  if (@@rowcount = 0 or @ownerid = 0 or @ownerid is null) 
  begin 
  select -2, cast(0 as bigint), cast(0 as bigint) -- can't find owner 
  return 
  end 
  select top 1 @empty_slot = slot from _chest where userjid = @ownerid and (itemid = 0 or ItemID is null) order by slot asc 
  if (@@rowcount = 0) 
  begin 
  select -3, cast(0 as bigint), cast(0 as bigint) -- chest full 
  return 
  end 
 end 
 else if (@TargetStorage = 2) 
 begin 
  select @ownerid = [ID] from _guild where [name] = @ownername 
  if (@@rowcount = 0 or @ownerid = 0 or @ownerid is null) 
  begin 
  select -2, cast(0 as bigint), cast(0 as bigint) -- can't find owner 
  return 
  end   
  select top 1 @empty_slot = slot from _guildchest where guildid = @ownerid and (itemid = 0 or ItemID is null) order by slot asc 
  if (@@rowcount = 0) 
  begin 
  select -3, cast(0 as bigint), cast(0 as bigint) -- chest full 
  return 
  end   
   
  -- ±æµå ·¹º§¿¡ µû¸¥ ±æµå ½½·Ô¼ö Á¦ÇÑÀ» È®ÀÎÇÏÀÚ. 
  declare @lvl tinyint 
  declare @max_slot tinyint 
  select @lvl = Lvl from _guild where [id] = @ownerid 
  set @max_slot = 30 * (@lvl - 1) - 1 
 
  if @empty_slot > @max_slot   
  begin 
  select -3, cast(0 as bigint), cast(0 as bigint) -- chest full 
  return 
  end     
 end 
 else 
 begin 
  select @ownerid = charid from _char where charname16 = @OwnerName 
  if (@@rowcount = 0 or @ownerid = 0 or @ownerid is null) 
  begin 
  select -2, cast(0 as bigint), cast(0 as bigint)-- can't find owner 
  return 
  end 
 
  select top 1 @empty_slot = slot from _InventoryForAvatar 
  where charid = @ownerid 
  and itemid = 0   
  and slot < 4    -- ÇÁ·Î½ÃÁ® ÇϵåÄÚµù(¾Æ¹ÙŸ ½½·ÔÀº 0, 1, 2, 3ÀÌ´Ù.) 
  order by slot asc 
 
  if (@@rowcount = 0) 
  begin 
  select -3, cast(0 as bigint), cast(0 as bigint) -- inventory full 
  return 
  end 
 end 
   
 
 if (@empty_slot < 0 or @empty_slot is null) 
 begin   
  select -4, cast(0 as bigint), cast(0 as bigint)  -- unknown error ??? 
  return 
 end 
   
 declare @tid1 int 
 declare @tid2 int 
 declare @tid3 int 
  declare @tid4 int 
   
 select @tid1 = TypeID1, @tid2 = TypeID2, @tid3 = TypeID3, @tid4 = TypeID4 from _RefObjCommon where ID = @RefItemID 
 if (@tid1 <> 3) 
 begin 
  select -5, cast(0 as bigint), cast(0 as bigint) -- about to assign non-item object 
  return 
 end 
 if (@tid2 <> 1)  -- is not equipment 
 begin 
  -- can't assign magic param or optlevel to non-equip item 
  if (@MagParamNum > 0 or @OptLvl > 0) 
  begin 
  select -6, cast(0 as bigint), cast(0 as bigint) 
  return 
  end 
 end 
   
 ---------------------------------------------------- 
 -- step 2. correct some non-critical parameters 
 ---------------------------------------------------- 
 if (@tid2 = 3 and @Data = 0) -- can't assign overlap count 0 to expendable item 
 begin 
  set @Data = 1 
 end 
 
 if (LEN(@szCreater) = 0) 
  set @szCreater = NULL 
 
 ---------------------------------------------------- 
 -- step add. equip and pet @data setting 
 ---------------------------------------------------- 
 declare @IS_EQUIP int 
 declare @IS_PET int 
 
 set @IS_EQUIP = 0 
 set @IS_PET = 0 
 
 if (@tid1 = 3 and @tid2 = 1) 
  set @IS_EQUIP = 1 
 else if (@tid1 = 3 and @tid2 = 2 and @tid3 = 1 and (@tid4 = 1 or @tid4 = 2)) 
  set @IS_PET = 1 
 
 if (@IS_EQUIP = 1) 
 begin 
 
    -- Àß ¸øµÈ ID·Î select Çϰí ÀÖÀ½. ¼öÁ¤ (by binu 2008-10-17)
    --    select @Data = Dur_L from _RefObjItem where ID =  @RefItemID
    select @Data = Dur_L from _RefObjItem where ID = (select Link from _RefObjCommon where ID = @RefItemID )
   
  if (@OptLvl < 0) 
    set @OptLvl = 0 
  else if (@OptLvl > 12) 
    set @OptLvl = 12 
 
 end 
 else 
 begin 
 
  if( @IS_PET = 1 ) 
  set @Data = 0 
  else 
  begin 
  declare @MaxCount int 
  select @MaxCount = MaxStack from _RefObjItem where ID = @RefItemID 
   
  if (@Data <= 0 or @Data > @MaxCount)   
    set @Data = @MaxCount   
  end 
 
  set @OptLvl = 0 
 end 
 
 
 ---------------------------------------------------------- 
 -- Step3. create item and set to associated storage 
 ---------------------------------------------------------- 
 set xact_abort on 
begin transaction 
   
 declare @NewItemID  bigint 
 declare @Serial64 bigint 
 set @NewItemID  = 0 
 set @Serial64 = 0 
 exec @NewItemID = _STRG_ALLOC_ITEM_NoTX @Serial64 OUTPUT 
 if (@NewItemID = 0) 
 begin 
  rollback transaction 
  select -7, cast(0 as bigint), cast(0 as bigint) 
  return 
 end 
 if (@MagParamNum = 0) 
 begin 
  update _Items set RefItemID = @RefItemID, OptLevel = @OptLvl, Variance = @Variance, Data = @Data, MagParamNum = 0, Serial64 = @Serial64   
  where ID64 = @NewItemID 
 end 
 else 
 begin 
  update _Items set RefItemID = @RefItemID, OptLevel = @OptLvl, Variance = @Variance, Data = @Data, MagParamNum = @MagParamNum,   
    MagParam1 = @MagParam1, MagParam2 = @MagParam2, MagParam3 = @MagParam3, MagParam4 = @MagParam4, 
    MagParam5 = @MagParam5, MagParam6 = @MagParam6, MagParam7 = @MagParam7, MagParam8 = @MagParam8, 
    MagParam9 = @MagParam9, MagParam10= @MagParam10, MagParam11 = @MagParam11, MagParam12 = @MagParam12, Serial64 = @Serial64 
  where ID64 = @NewItemID 
 end 
 if (@@error <> 0) 
 begin 
  rollback transaction 
  select -8, cast(0 as bigint), cast(0 as bigint) 
  return 
 end 
 if (@TargetStorage = 0) 
  update _Inventory set ItemID = @NewItemID where CharID = @OwnerID and Slot = @empty_slot 
 else if (@TargetStorage = 1) 
  update _chest set ItemID = @NewItemID where UserJID = @OwnerID and slot = @empty_slot 
 else if (@TargetStorage = 2) 
  update _guildchest set ItemID = @NewItemID where guildid = @OwnerID and slot = @empty_slot 
 else 
  update _InventoryForAvatar set ItemID = @NewItemID where CharID = @OwnerID and Slot = @empty_slot 
   
 if (@@rowcount = 0 or @@error <> 0) 
 begin 
  rollback transaction 
  select -9, cast(0 as bigint), cast(0 as bigint) 
  return 
 end 
   
 commit transaction 
 select @empty_slot, @NewItemID, @Serial64 
 return

كود:

if (@OptLvl < 0) 
    set @OptLvl = 0 
  else if (@OptLvl > 12) 
    set @OptLvl = 12

كود:

if (@OptLvl < 0) 
    set @OptLvl = 0 
  else if (@OptLvl > 255) 
    set @OptLvl = 255

يغلق


الساعة الآن 10:38 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.