عرض مشاركة واحدة
قديم 04-07-2014, 04:25 PM   #7

Hero
عضو مشارك



الصورة الرمزية Hero


• الانـتـسـاب » Jan 2014
• رقـم العـضـويـة » 116050
• المشـــاركـات » 7,017
• الـدولـة » Egypt
• الـهـوايـة » ;"#string n = "C
• اسـم الـسـيـرفـر » No Server
• الـجـنـس » Male
• نقـاط التقييم » 85
Hero جـيـد

Hero غير متواجد حالياً



افتراضي



انا كنت بحاول افهمك هيا ازاى بس دى المختصر
Query
كود PHP:
USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[_SMC_EDIT_ITEM]    Script Date: 06/15/2012 19:51:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO


ALTER  procedure 
[dbo].[_SMC_EDIT_ITEM]
----------------------------------------------------- 
params to find target item
    
@TargetStorage    int,                /* 0 = inventory, 1 = chest, 2 = guild chest, 3 = Avatar Inventory */
    
@OwnerName    varchar(128),        /* account id or char id */
    
@Slot            int,
    @
ItemIDToEdit    bigint,    /* just for check validity */
    
----------------------------------------------------- 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 <> and @TargetStorage <> and @TargetStorage <> and @TargetStorage <> 3)
    
begin
        select 
-1    -- invalid target storage
        
return
    
end
    
declare @ownerid int
    
declare @ItemID bigint
    set 
@ownerid 0
    set 
@ItemID 0
    
if (@TargetStorage 0)
    
begin
        select 
@ownerid charid from _char where charname16 = @OwnerName
        
if (@@rowcount or @ownerid or @ownerid is null)
        
begin
            select 
-2    -- can't find owner
            return
        end
        select @ItemID = ItemID from _inventory where charid = @ownerid and slot = @slot
    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    -- can'
t find owner
            
return
        
end
        select 
@ItemID ItemID from _chest where userjid = @ownerid and slot = @slot
    end
    
else if (@TargetStorage 2)
    
begin
        select 
@ownerid = [idfrom _guild where [name] = @ownername
        
if (@@rowcount or @ownerid or @ownerid is null)
        
begin
            select 
-2    -- can't find owner
            return
        end
        select @ItemID = ItemID from _guildchest where guildid = @ownerid and slot = @slot
    end
    else
    begin
        select @ownerid = charid from _char where charname16 = @OwnerName
        if (@@rowcount = 0 or @ownerid = 0 or @ownerid is null)
        begin
            select -2    -- can'
t find owner
            
return
        
end
        select 
@ItemID ItemID from _InventoryForAvatar where charid = @ownerid and slot = @slot
    end


    
if (@ItemID or @ItemID is null)
    
begin
        select 
-3    -- can't find the item
        return
    end
    if (@ItemID <> @ItemIDToEdit)
    begin
        select -4    -- it'
s not the one that you wanna edit
        
return 
    
end
    
declare @tid1 int
    
declare @tid2 int
    select 
@tid1 TypeID1, @tid2 TypeID2 from _RefObjCommon where ID = @RefItemID
    
if (@tid1 <> 3)
    
begin
        select 
-5    -- about to assign non-item object
        
return
    
end
    
if (@tid2 <> 1)        -- is equipment
    begin
        
-- can't assign magic param or optlevel to non-equip item
        if (@MagParamNum > 0 or @OptLvl > 0)
        begin
            select -6
            return
        end
    end
    
    ----------------------------------------------------
    -- step 2. correct some non-critical parameters
    ----------------------------------------------------
    if (@OptLvl > 255)
    begin
        set @OptLvl = 255    -- clamp optlevel to 255
    end    
    if (LEN(@szCreater) = 0)
        set @szCreater = NULL
    
    ----------------------------------------------------
    -- step 3. modify target item to desired values
    ----------------------------------------------------
    if (@MagParamNum = 0)
    begin
        update _Items 
        set RefItemID = @RefItemID, OptLevel = @OptLvl, Variance = @Variance, Data = @Data, CreaterName = @szCreater, MagParamNum = 0 
        where id64 = @ItemID
    end
    else
    begin
        update _Items 
        set  RefItemID = @RefItemID, OptLevel = @OptLvl, Variance = @Variance, Data = @Data, CreaterName = @szCreater, 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
        where id64 = @ItemID
    end
        
    if (@@error <> 0 or @@rowcount = 0)
    begin
        select -7
        return
    end
    select 1
    return 
اعمل ال Query دى و كل حاجة هتبقا تمام


توقيع Hero :
...!!


رد مع اقتباس