[Share]SMC Create Item +255

Results 1 to 12 of 12
  1. #1
    Member darkhole1123 is offline
    MemberRank
    Apr 2009 Join Date
    77Posts

    [Share]SMC Create Item +255

    im gonna show you the way to create items on smc mor than +12








    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)


  2. #2
    Elite Member badibatu is offline
    Member +Rank
    Sep 2011 Join Date
    122Posts

    Re: [Share]SMC Create Item +255

    Useful post thank you ^^

  3. #3
    Sorcerer Supreme arabianfox is offline
    Member +Rank
    Nov 2011 Join Date
    292Posts

    Re: [Share]SMC Create Item +255

    thank you but i try this and not working for me...
    maximum + is +12 and maximum + via GM console is +8

    any ideas !!!

  4. #4
    Member Yamaxanadu is offline
    MemberRank
    Nov 2011 Join Date
    38Posts

    Re: [Share]SMC Create Item +255

    max + is 255 since client will crash if it higher. Needs to be edited, but im not a coder ;)

  5. #5
    Member darkhole1123 is offline
    MemberRank
    Apr 2009 Join Date
    77Posts

    Re: [Share]SMC Create Item +255

    Quote Originally Posted by Yamaxanadu View Post
    max + is 255 since client will crash if it higher. Needs to be edited, but im not a coder ;)
    ehmmm, in the code if value is higher than 255 its setted to 255

  6. #6
    Newbie ladykiller is offline
    MemberRank
    Nov 2011 Join Date
    4Posts

    Re: [Share]SMC Create Item +255

    hey guys, i wonder can we make Nasrun +8 on smc?
    That Nasrun will have +8 and get skills:

    Destroy the Devil

    Eccentric Demon

    Mob Defense Ignore

    Evolution of Mob Defense Ignore

    The Devil's Confusion
    Last edited by ladykiller; 25-12-11 at 07:37 AM.

  7. #7
    Member nikoladin is offline
    MemberRank
    Nov 2011 Join Date
    62Posts

    Re: [Share]SMC Create Item +255

    PHP Code:
    Msg 137Level 15State 2Procedure _SMC_ADD_ITEMLine 256
    Must 
    declare the scalar variable "@OwnerID".
    Msg 137Level 15State 2Procedure _SMC_ADD_ITEMLine 258
    Must 
    declare the scalar variable "@OwnerID".
    Msg 137Level 15State 2Procedure _SMC_ADD_ITEMLine 260
    Must 
    declare the scalar variable "@OwnerID".
    Msg 137Level 15State 2Procedure _SMC_ADD_ITEMLine 262
    Must 
    declare the scalar variable "@OwnerID"
    has failed
    :S

  8. #8

    Re: [Share]SMC Create Item +255

    not work :S +8

  9. #9
    Elite Member yona1006 is offline
    Member +Rank
    Dec 2011 Join Date
    Valencia, VenezLocation
    130Posts

    Re: [Share]SMC Create Item +255

    solo sale es +8 disculpa mi español

    sorry for me spanish

  10. #10
    Member darkhole1123 is offline
    MemberRank
    Apr 2009 Join Date
    77Posts

    Re: [Share]SMC Create Item +255

    Quote Originally Posted by PlayCreeDSRO View Post
    not work :S +8
    Quote Originally Posted by yona1006 View Post
    solo sale es +8 disculpa mi español

    sorry for me spanish
    smc by its self can create up to +12, why +8 if limit was changed to be greater than that

  11. #11

    Re: [Share]SMC Create Item +255

    and how to do out + 12 or + 255 if already change that

  12. #12
    Moderator Blacksheep25 is offline
    ModeratorRank
    Jan 2009 Join Date
    715Posts

    Re: [Share]SMC Create Item +255

    Quote Originally Posted by ladykiller View Post
    hey guys, i wonder can we make Nasrun +8 on smc?
    That Nasrun will have +8 and get skills:

    Destroy the Devil

    Eccentric Demon

    Mob Defense Ignore

    Evolution of Mob Defense Ignore

    The Devil's Confusion
    you can make Nasrun +8 ingame and get those skills. Ive tested making Devil S +8 and you get the skills but didnt try using normal devil spirit ;)



Advertisement