[Share]SMC Create Item +255

12/24/2011 22:06 PortalDark#1
im gonna show you the way to create items on smc mor than +12

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]




Code:
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
look for this

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

Code:
if (@OptLvl < 0)  
    set @OptLvl = 0  
   else if (@OptLvl > 255)  
    set @OptLvl = 255
same with _SMC_EDIT_ITEM

for the ones to create via gm console, ill look for i, since i may bug something in the way

im not pretty sure if 255 is max or if server gonna accept it(if anyone know max value, post here)

Note:
this may help
Quote:
Originally Posted by whyt3boi View Post
If this works the same way as changing it in the database. If you go over a certain + it will have no effect. Damage will be substantially lower than your normal +. Try using +50 or 70 first. There is a limit. Simply because the game does not have an algorithm that goes that high.
12/24/2011 22:13 vorosmihaly#2
it's useless,the server won't handle it over +12 :)
so it'll have the same dmg as a +12 one would
12/24/2011 22:15 PortalDark#3
dont know if server will only make item with same stats like +12, but bragging is cool
12/24/2011 22:40 Xuz#4
gonna try it when i get back to house
SWFiles :D
Ty <3 IAM NOT GAY
12/25/2011 00:09 whyt3boi#5
If this works the same way as changing it in the database. If you go over a certain + it will have no effect. Damage will be substantially lower than your normal +. Try using +50 or 70 first. There is a limit. Simply because the game does not have an algorithm that goes that high.
12/25/2011 00:13 Paravibez#6
limit is without any dc or client close +249 on the weapons
12/25/2011 01:31 Keyeight#7
im gonna try it later and till you if it work`s fine or no

any way thx alot for sharing your work
12/25/2011 01:42 Nezekan#8
Quote:
Originally Posted by Atrox2011 View Post
limit is without any dc or client close +249 on the weapons
it should be 255 (or 254) if I remember it correctly
12/25/2011 01:43 18andLife#9
Quote:
Originally Posted by Nezekan View Post
it should be 255 (or 254) if I remember it correctly
The highest plus item you can equip is +249
12/25/2011 04:57 whyt3boi#10
I don't know why you are all interested in this. Having a weapon with +200 or +250 is not going to do anything. There is no damage difference. It will change the stats but your damage will not be any higher. It stops after a certain amount.
12/25/2011 07:31 !x_~!#11
Well , Thanks
12/25/2011 08:52 lesderid#12
Quote:
Originally Posted by whyt3boi View Post
I don't know why you are all interested in this. Having a weapon with +200 or +250 is not going to do anything. There is no damage difference. It will change the stats but your damage will not be any higher. It stops after a certain amount.
Maybe it overflows after a while, would be kinda funny.
12/25/2011 09:44 silkbotter#13
Quote:
Originally Posted by vorosmihaly View Post
it's useless,the server won't handle it over +12 :)
so it'll have the same dmg as a +12 one would
nono. that's wrong!
i iguarantee you that the server can handle way more.
i used to dupe on sjsro and i had a +74 glavie which made too much damage.people thought i had an edited char cuz i told them that the glavie was +13.
so it actually does more damage ;)
12/25/2011 10:42 hamada619#14
first it's for SWSRO files not for vsro so gtfo
12/25/2011 11:27 Xuz#15
Quote:
Originally Posted by hamada619 View Post
first it's for SWSRO files not for vsro so gtfo
OMG first retard in the thread...Whalecum
there is no difference between SW or Vsro in this case