ط§ظ„ط¨ظ‚ط§ط، ظ…ط³ط¬ظ„ ط¯ط§ط¦ظ…ط¢
ط§ظ„ط¥ط¹ظ„ط§ظ†ط§طھ
04-07-2014 10:17 PM
™DesertStorm™
##
04-07-2014 10:06 PM
abed2006 حاضر
يغلق
04-07-2014 07:03 PM
™DesertStorm™
ليك استفسارين فى الموضوع
04-07-2014 05:52 PM
Hero اعمل موضوع تانى و اقفل موضوعك
04-07-2014 04:41 PM
abed2006 مش عارف حاسس ان الحاجة صعبة ومعقدة معاية
04-07-2014 04:40 PM
abed2006 شكرا HERO تعبك معاية والله

بس انا اول مرة بجرب اعمل سرفر فا لسة مش عارف حاجة ولا عارف اتعامل ولا عارف اعمل اية

دا شرح ال+

انا عاوز شرح ال NPC
شرح تغير اسم السرفر من السلاح بس يارب تكون سهلة مش معقدة وصعبة
04-07-2014 04:25 PM
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 دى و كل حاجة هتبقا تمام
04-07-2014 04:16 PM
abed2006 معلش يا جماعة هتعبكو معاية انا معرفتش اتعامل عاوز شرح بصورة ممكن

شرح بالصورة لى تغير اسم السلاح يعنى ازاى اشيل اسم كاست واى واكتب اسم السرفر

دى حاجة الحاجة التانية عاوز شرح بالصورة طريقة ان انا اشيل npc
واحط انا npc بايتم صن دجرى 14
04-07-2014 03:23 PM
Hero تحت امرك
04-07-2014 03:18 PM
abed2006 شكرا الف الف شكرا تعبتكم معاية

وجارى التجربة ويارب اعرف اتعامل عشان دى اول مرة

لية اعمل فيها سرفر وعدل على الحاجات دى

شكرا مرة تانية تسلمو ايديكم
04-07-2014 02:27 PM
Hero يا باشا الكونسل اخرو +8
عدل اللى انت عيزة من ال SMC
و ال Query دى اعملة


كود PHP:
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 <> and @TargetStorage <> and @TargetStorage <> and @TargetStorage <> 3)  
 
begin  
  select 
-1cast(as bigint), cast(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 or @ownerid or @ownerid is null)  
  
begin  
   select 
-2cast(as bigint), cast(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 or ItemID is nullorder by slot asc  
  
if (@@rowcount 0)  
  
begin  
   select 
-3cast(as bigint), cast(as bigint) -- chest full  
   
return  
  
end  
 end  
 
else if (@TargetStorage 2)  
 
begin  
  select 
@ownerid = [IDfrom _guild where [name] = @ownername  
  
if (@@rowcount or @ownerid or @ownerid is null)  
  
begin  
   select 
-2cast(as bigint), cast(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     -- أ‡أپ·أژ½أƒأپ® أ‡أڈµأ¥أ„أڑµù(¾أ†¹أ™أ…¸ ½½·أ”أ€آ؛ 0123أ€أŒ´أ™.)  
  
order by slot asc  
  
  
if (@@rowcount 0)  
  
begin  
   select 
-3cast(as bigint), cast(as bigint) -- inventory full  
   
return  
  
end  
 end  
   
  
 
if (@empty_slot or @empty_slot is null)  
 
begin   
  select 
-4cast(as bigint), cast(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 
-5cast(as bigint), cast(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 addequip and pet @data setting  
 
----------------------------------------------------  
 declare @
IS_EQUIP int  
 
declare @IS_PET int  
  
 set 
@IS_EQUIP 0  
 set 
@IS_PET 0  
  
 
if (@tid1 and @tid2 1)  
  
set @IS_EQUIP 1  
 
else if (@tid1 and @tid2 and @tid3 and (@tid4 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 )  
   
set @Data 0  
  
else  
  
begin  
   
declare @MaxCount int  
   select 
@MaxCount MaxStack from _RefObjItem where ID = @RefItemID  
   
   
if (@Data <= or @Data > @MaxCount)    
    
set @Data = @MaxCount    
  end  
  
  set 
@OptLvl 0  
 end  
  
  
 
----------------------------------------------------------  
 -- 
Step3create 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 
-7cast(as bigint), cast(as bigint)  
  return  
 
end  
 
if (@MagParamNum 0)  
 
begin  
  update _Items set RefItemID 
= @RefItemIDOptLevel = @OptLvlVariance = @VarianceData = @DataMagParamNum 0Serial64 = @Serial64   
  where ID64 
= @NewItemID  
 end  
 
else  
 
begin  
  update _Items set RefItemID 
= @RefItemIDOptLevel = @OptLvlVariance = @VarianceData = @DataMagParamNum = @MagParamNum,   
    
MagParam1 = @MagParam1MagParam2 = @MagParam2MagParam3 = @MagParam3MagParam4 = @MagParam4,  
    
MagParam5 = @MagParam5MagParam6 = @MagParam6MagParam7 = @MagParam7MagParam8 = @MagParam8,  
    
MagParam9 = @MagParam9MagParam10= @MagParam10MagParam11 = @MagParam11MagParam12 = @MagParam12Serial64 = @Serial64  
  where ID64 
= @NewItemID  
 end  
 
if (@@error <> 0)  
 
begin  
  rollback transaction  
  select 
-8cast(as bigint), cast(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 or @@error <> 0)  
 
begin  
  rollback transaction  
  select 
-9cast(as bigint), cast(as bigint)  
  return  
 
end  
   
 commit transaction  
 select 
@empty_slot, @NewItemID, @Serial64  
 
return 
شايف السطر دى
كود PHP:
if (@OptLvl 0)  
    
set @OptLvl 0  
   
else if (@OptLvl 12)  
    
set @OptLvl 12 
غيرة بة دى
كود PHP:
if (@OptLvl 0)  
    
set @OptLvl 0  
   
else if (@OptLvl 255)  
    
set @OptLvl 255 
تانى حاجة اسم السلاح من
textdata_equip&skill
ال NPC زى ما قالك الاستاذ POP و لو عايز تمسح السطر عادى برضو
و بلنسبة لية ال 4 NPC بتوع Castaway هتلقيهم فوق فى اول الصفحة
بتاعت التاب Ref.Nest
04-07-2014 12:56 PM
pop2009 اولا بخصوص اول سوال الكونسول اخرو +8 بس و لو عايز تعمل + اكتر من كده يبقى من smc و لو عايز تضيف لحد ايتيمز بى اى + انت عايزه من غير الحوارات ده كلها استخدم الكويرى ده اكتب اسم الاكونت و كود الايتيمز الى انت عايز تتحط فى الاكونت ده و عيش
كود PHP:
USE SRO_VT_SHARD
--Usage:
--
exec _ADD_ITEM_EXTERN 'CHarName','ItemsCodeName',Count,OptLvl
declare @CHarName varCHar(64

set @CHarName 'Your Char Name here'

exec _ADD_ITEM_EXTERN @CHarName,'ITEM_CH_M_LIGHT_11_HA_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_M_LIGHT_11_SA_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_M_LIGHT_11_BA_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_M_LIGHT_11_LA_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_M_LIGHT_11_FA_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_M_LIGHT_11_AA_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_RING_11_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_RING_11_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_EARRING_11_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_NECKLACE_11_SET_B_RARE',1,12
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_TBLADE_11_SET_A_RARE',1,13
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_BOW_11_SET_B_RARE',1,13
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_SHIELD_11_SET_B_RARE',1,13
exec _ADD_ITEM_EXTERN 
@CHarName,'ITEM_CH_BLADE_11_SET_B_RARE',1,13 
بخصوص الاسم الى على السلاح روح فى المديا فى Textdata_Object و اعمل Search على اسامى الاسلحه الى انت عايز تعدل على اسمها و عيش
بخصوص السوال الثالث ده هيكون عن طريق الداتا بيز Table اسمو RefNest هات كود npc و اعمل السيرفير بتاعو 0 مكان 1 كده هيتشال من الجيم
يا رب اكون عرفت اساعدك
04-07-2014 12:27 PM
abed2006
مسااااااااااااااااااااعدة لو سمحتم


اولا: انا عندى بعمل سيرفر بى كاست واى تمام

عملت اكونت جى ام بكتب فى الكونسلى كود سلاح وايتم

المهم وانا بكتب اخرو +8 دا بى اكونت الجى ام وانا عاوز اكتب اكتر من كد
المفروض انو يكتب فى الكونسل ++ اكتر من كدة يعنى من الاخر عاوز ازود نسبة ال++
بحيث اكتب فى الكونسل يجيب ال+ اللى انا عاوزو ولا لازم اخوش فى sql واعدل من جوة
وانا كول ايتم اعملو لاى حد اعمل كدة من ال sql انا عاوز اكتبو من الكونسل ع طول
.................................................. .................................................. ..............
ثانيا: عندى فى السلاح مكتوب اسم السرفر كاست واى

اا عاوز اشيل اسم السرفر واحط اسم السرفر بتاعى
.................................................. ..........................................
ثالثا : عندى فى السرفر كاست واى NPC كتير عاوز اشيلهم
واحط انا اللى انا عاوز وازاى احط فيهم الايتم واعدل على الايتم وسعرو


ضوابط المشاركة
تستطيع إضافة مواضيع جديدة
تستطيع الرد على المواضيع
تستطيع إرفاق ملفات
تستطيع تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة


الساعة الآن 12:21 PM.