المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : C-Sro Upgrade items


Dev.Myth
31-12-2016, 01:43 PM
السلام عليكم
مشكله مع الـ Upgrade Items بعد الإستخدام بتجيب DC لكن العمليه بتتنفذ والجيم سيرفر طبعاً بيجيب كده :
AQ succeeded but AsyncQueryCompleted() error occurred [AQType: 40]

حاولت اعمل حاجات كتيره علشان احاول احلها بس مش عارف اصلاً انا بقيت ماشى صح ولا غلط ولا انا بقيت بعمل ايه وديه اخر حاجه وصلت ليها
ده البروسيدور


USE [Test]
GO
/****** Object: StoredProcedure [dbo].[_STRG_EQUIP_ITEM_UPGRADE] Script Date: 31/12/2016 11:51:19 ص ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_STRG_EQUIP_ITEM_UPGRADE]
@CharID INT,
@UgdSuccess TINYINT,
@UgdEquipSlot TINYINT,
@UgdStoneSlot TINYINT,
@UgdRefItemID INT = 0,
@UgdOptLevel TINYINT = 0,
@UgdVariance BIGINT = 0,
@UgdData INT = 0,
@UgdCreateName VARCHAR(64) = '',
@UgdMagParamNum TINYINT = 0,
@UgdMagParam1 BIGINT = 0,
@UgdMagParam2 BIGINT = 0,
@UgdMagParam3 BIGINT = 0,
@UgdMagParam4 BIGINT = 0,
@UgdMagParam5 BIGINT = 0,
@UgdMagParam6 BIGINT = 0,
@UgdMagParam7 BIGINT = 0,
@UgdMagParam8 BIGINT = 0,
@UgdMagParam9 BIGINT = 0,
@UgdMagParam10 BIGINT = 0,
@UgdMagParam11 BIGINT = 0,
@UgdMagParam12 BIGINT = 0
AS
DECLARE @UgdEquipID64 BIGINT
DECLARE @UgdEquipRefID INT
DECLARE @UgdEquipSerial64 BIGINT
DECLARE @UgdEquipTID2 TINYINT
DECLARE @UgdEquipTID3 TINYINT
DECLARE @UgdEquipItemClass TINYINT

DECLARE @UgdStoneID64 BIGINT
DECLARE @UgdStoneRefID INT
DECLARE @UgdStoneSerial64 BIGINT
DECLARE @UgdStoneCount INT
DECLARE @CheckTID3_1 INT
DECLARE @CheckTID3_2 INT

SET @UgdEquipID64 = 0
SET @UgdEquipRefID = 0
SET @UgdEquipSerial64 = 0
SET @UgdEquipTID2 = 0
SET @UgdEquipTID3 = 0
SET @UgdEquipItemClass = 0

SET @UgdStoneRefID = 0
SET @UgdStoneID64 = 0
SET @UgdStoneSerial64 = 0
SET @UgdStoneCount = 0
SET @CheckTID3_1 = 0
SET @CheckTID3_2 = 0

-- ى—…ê·¸ë*ˆى‌´ë“œ ى„±ê³µ / ى‹¤يŒ¨ى—گ 대ي•œ 결과값 ى*€ى‍¥

DECLARE @UpgradeResult TABLE
(
Type TINYINT,
RefItemID INT,
Slot TINYINT,
[Count] INT,
ID64 BIGINT,
Serial64 BIGINT
)

-- ي•´ë‹¹ ى؛گë¦*ي„°ê°€ ى،´ى‍¬ي•کëٹ”ى§€ ي™•ى‌¸
IF NOT EXISTS ( SELECT * FROM _Char WITH (NOLOCK) WHERE CharID = @CharID )
BEGIN
INSERT @UpgradeResult VALUES( 0, -1, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

-- ى—…ê·¸ë*ˆى‌´ë“œي•* ى‍¥ë¹„ ى•„ى‌´ي…œê³¼ ى„±ى‍¥ى„‌ى‌ک ItemID를 ي™•ى‌¸
SELECT @UgdEquipID64 = ISNULL( MAX(ItemID), 0 ) FROM _Inventory WITH (NOLOCK) WHERE CharID = @CharID AND Slot = @UgdEquipSlot
SELECT @UgdStoneID64 = ISNULL( MAX(ItemID), 0 ) FROM _Inventory WITH (NOLOCK) WHERE CharID = @CharID AND Slot = @UgdStoneSlot

IF( @UgdEquipID64 = 0 OR @UgdStoneID64 = 0 )
BEGIN
INSERT @UpgradeResult VALUES( 0, -2, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

-- ى—…ê·¸ë*ˆى‌´ë“œي•* ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک ëچ°ى‌´ي„°ë¥¼ ى–»ى–´ىک¨ë‹¤!!!
SELECT @UgdEquipRefID = ISNULL( MAX(RefItemID), 0 ), @UgdEquipSerial64 = ISNULL( MAX(Serial64), 0 )
FROM _Items AS I WITH (NOLOCK)
JOIN _ItemPool AS IP WITH (NOLOCK) ON I.ID64 = IP.ItemID
WHERE ID64 = @UgdEquipID64 AND IP.InUse = 1

IF( @UgdEquipRefID = 0 OR @UgdEquipSerial64 = 0 )
BEGIN
INSERT @UpgradeResult VALUES( 0, -3, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

-- ي•´ë‹¹ ى—…ê·¸ë*ˆى‌´ë“œي•* ى•„ى‌´ي…œى‌´ ى‍¥ë¹„ ى•„ى‌´ي…œى‌´ê³* 11ى°¨ ى‌´ىƒپ, Rarityê°€ 2(ë*ˆى–´) OR 6(ë*ˆى–´ى…‹يٹ¸)ى‌¸ى§€ ي™•ى‌¸ (11ى°¨ ى‌´ىƒپë§Œ ى—…ê·¸ë*ˆى‌´ë“œ ê°€ëٹ¥!!!)
SELECT @UgdEquipTID2 = ISNULL( MAX(ROC.TypeID2), 0 ), @UgdEquipTID3 = ISNULL( MAX(ROC.TypeID3), 0 ), @UgdEquipItemClass = ( ( ISNULL( MAX(ROI.ItemClass), 0 ) + 2 ) / 3 )
FROM _RefObjCommon AS ROC JOIN _RefObjItem AS ROI ON ROC.Link = ROI.ID
WHERE ROC.ID = @UgdEquipRefID AND ROC.TypeID1= 3 AND ROC.TypeID2 = 1 AND ROI.ItemClass > 30

IF( @UgdEquipTID2 = 0 OR @UgdEquipTID3 = 0 OR @UgdEquipItemClass = 0 )
BEGIN
INSERT @UpgradeResult VALUES( 0, -4, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END
-- ى„±ى‍¥ى„‌ ى•„ى‌´ي…œى—گ 대ي•œ ëچ°ى‌´ي„°ë¥¼ ى–»ى–´ىک¨ë‹¤.
SELECT @UgdStoneRefID = ISNULL( MAX(RefItemID), 0 ), @UgdStoneCount = ISNULL( MAX(Data), 0 ), @UgdStoneSerial64= ISNULL( MAX(Serial64), 0 )
FROM _Items AS I WITH (NOLOCK)
JOIN _ItemPool AS IP WITH (NOLOCK) ON I.ID64 = IP.ItemID
WHERE ID64 = @UgdStoneID64 AND IP.InUse = 1

IF( @UgdStoneRefID = 0 OR @UgdStoneSerial64 = 0 OR @UgdStoneCount = 0 )
BEGIN
INSERT @UpgradeResult VALUES( 0, -5, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

-- ى„±ى‍¥ى„‌ ى•„ى‌´ي…œى‌´ ى‹¤ى*œ ى„±ى‍¥ى„‌ ى•„ى‌´ي…œ يƒ€ى‍…ى‌¸ى§€ ي™•ى‌¸ي•کى‍گ!!!
-- ى„±ى‍¥ى„‌ى‌ک FreeParam1 : 대ىƒپ ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک ى°¨ىˆک
-- ى„±ى‍¥ى„‌ى‌ک FreeParam2 : 대ىƒپ ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک TypeID2
-- ى„±ى‍¥ى„‌ى‌ک FreeParam3 : 대ىƒپ ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک TypeID3(비يٹ¸ë§ˆىٹ¤ي‚¹)
-- ى„±ى‍¥ى„‌ى‌ک FreeParam4 : 대ىƒپ ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک TypeID3(비يٹ¸ë§ˆىٹ¤ي‚¹)
SELECT @CheckTID3_1 = ISNULL( MAX(ROI.Param3), 0 ), @CheckTID3_2 = ISNULL( MAX(ROI.Param4), 0 )
FROM _RefObjCommon AS ROC JOIN _RefObjItem AS ROI ON ROC.Link = ROI.ID
WHERE ROC.ID = @UgdStoneRefID AND ROI.Param1 = @UgdEquipItemClass AND ROI.Param2 = @UgdEquipTID2

IF ( @CheckTID3_1 = 0 AND @CheckTID3_2 = 0 )
BEGIN
INSERT @UpgradeResult VALUES( 0, -6, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

DECLARE @Cnt TINYINT
DECLARE @TID3_1 TINYINT
DECLARE @TID3_2 TINYINT
DECLARE @IsEqualTID3 TINYINT

SET @Cnt = 0
SET @TID3_1 = 0
SET @TID3_2 = 0
SET @IsEqualTID3 = 0

WHILE( @Cnt <= 3 )
BEGIN
SET @TID3_1 = ( @CheckTID3_1 / POWER( 2 , 8 * @Cnt ) ) & 0xFF
SET @TID3_2 = ( @CheckTID3_2 / POWER( 2 , 8 * @Cnt ) ) & 0xFF

IF( @UgdEquipTID3 IN ( @TID3_1, @TID3_2) )
BEGIN
-- ى‍¥ë¹„ ى•„ى‌´ي…œê³¼ ى„±ى‍¥ى„‌ى‌ک 대ىƒپ TID3ى‌´ ëڈ™ى‌¼ي•ک구ë‚ک!!!
SET @IsEqualTID3 = 1
BREAK
END

SET @Cnt = @Cnt + 1
END

-- ى‍¥ë¹„ ى•„ى‌´ي…œê³¼ ى„±ى‍¥ى„‌ى‌ک 대ىƒپ TID3ى‌´ ëڈ™ى‌¼ي•کى§€ ى•ٹ구ë‚ک!!!
IF( @IsEqualTID3 = 0 )
BEGIN
INSERT @UpgradeResult VALUES( 0, -7, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

DECLARE @ErrorCode INT
SET @ErrorCode = 0

BEGIN TRANSACTION

-- ى‌¼ë‹¨ ى—…ê·¸ë*ˆى‌´ë“œ ى„±ê³µ/ى‹¤يŒ¨ ى—¬ë¶€ë¥¼ ë–*ë‚کى„œ ى„±ى‍¥ى„‌ى‌€ ى‚*ى*œي•´ى£¼ى‍گ!!!
IF( @UgdStoneCount > 1 )
BEGIN
-- ى„±ى‍¥ى„‌ى‌ک ê°¯ىˆکê°€ 1ى‌´ىƒپى‌´ë‹¤;;;
UPDATE _Items Set Data = @UgdStoneCount - 1 WHERE ID64 = @UgdStoneID64
IF( @@ERROR <> 0 )
BEGIN
ROLLBACK TRANSACTION
INSERT @UpgradeResult VALUES( 0, -8, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

SET @UgdStoneCount = @UgdStoneCount -1
END
ELSE
BEGIN
EXEC @ErrorCode = _STRG_DEL_ITEM_NoTX 1, @CharID, @UgdStoneSlot
IF( @ErrorCode < 0 )
BEGIN
ROLLBACK TRANSACTION
INSERT @UpgradeResult VALUES( 0, -9, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

SET @UgdStoneCount = 0
END

SET @UgdStoneCount = @UgdStoneCount - 1

IF( @UgdSuccess = 1 )
BEGIN
-- ي•´ë‹¹ ى‍¥ë¹„ ى•„ى‌´ي…œى‌„ ى—…ê·¸ë*ˆى‌´ë“œ ي•کى‍گ!!!
IF NOT EXISTS ( SELECT * FROM _RefObjCommon WHERE ID = @UgdRefItemID )
BEGIN
ROLLBACK TRANSACTION
INSERT @UpgradeResult VALUES( 0, -10, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

-- ىٹ¹ê³„ي•œ ىکµë*ˆë²¨ى‌€ 12ى‌´ي•کى‌´ë‹¤!!! (12ى°¨ ى‌´ىƒپى‌€ ىکµë*ˆë²¨ 15ê°€ ىµ‌ىک¤!!!)
DECLARE @MAX_OPT_LEVEL TINYINT
SET @MAX_OPT_LEVEL = 15
IF( @UgdOptLevel > @MAX_OPT_LEVEL )
BEGIN
ROLLBACK TRANSACTION
INSERT @UpgradeResult VALUES( 0, -11, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

-- 매ى§پىکµى…ک ê°¯ىˆکëٹ” 12개를 ى´ˆê³¼ي•* ىˆک ى—†ë‹¤!!!
DECLARE @MAX_MGC_OPT_NUM TINYINT
SET @MAX_OPT_LEVEL = 12
IF( @UgdMagParamNum > @MAX_MGC_OPT_NUM )
BEGIN
ROLLBACK TRANSACTION
INSERT @UpgradeResult VALUES( 0, -12, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

-- 문ى*œê°€ ى—†ë‹¤ë©´ ي•´ë‹¹ ى•„ى‌´ي…œى‌„ ى—…ê·¸ë*ˆى‌´ë“œ ي•کى‍گ!!!
UPDATE _Items SET RefItemID = @UgdRefItemID, OptLevel = @UgdOptLevel, Variance = @UgdVariance, Data = @UgdData, CreaterName = @UgdCreateName,
MagParamNum = @UgdMagParamNum, MagParam1 = @UgdMagParam1, MagParam2 = @UgdMagParam2, MagParam3 = @UgdMagParam3,
MagParam4 = @UgdMagParam4, MagParam5 = @UgdMagParam5, MagParam6 = @UgdMagParam6, MagParam7 = @UgdMagParam7, MagParam8 = @UgdMagParam8,
MagParam9 = @UgdMagParam9, MagParam10 = @UgdMagParam10, MagParam11 = @UgdMagParam11, MagParam12 = @UgdMagParam12
WHERE ID64 = @UgdEquipID64
IF( @@ROWCOUNT = 0 OR @@ERROR <> 0 )
BEGIN
ROLLBACK TRANSACTION
INSERT @UpgradeResult VALUES( 0, -13, 0, 0, 0, 0 )
SELECT * FROM @UpgradeResult
RETURN
END

-- يٹ¹ىˆک ى—کë¦*ى‹œë¥´ى—گ ى‌کي•´ ى¦‌ê°€ëگœ ىکµë*ˆë²¨ى‌´ ى‍ˆىœ¼ë©´ ى‚*ى*œي•´ى£¼ى‍گ!!!
IF EXISTS (SELECT * FROM sysobjects WHERE Name = '_BindingOptionWithItem' AND Type = 'U' )
BEGIN
DELETE _BindingOptionWithItem WHERE nItemDBID = @UgdEquipID64 AND bOptType = 2
END

-- Type : 1 (ى•„ى‌´ي…œ ى—…ê·¸ë*ˆى‌´ë“œ), TypeID : 2 ( ى•„ى‌´ي…œ ى‚*ى*œ )
INSERT @UpgradeResult VALUES( 1, @UgdRefItemID, @UgdEquipSlot, 0, @UgdEquipID64, @UgdEquipSerial64 )

END

-- Type : 1 (ى•„ى‌´ي…œ ى—…ê·¸ë*ˆى‌´ë“œ), TypeID : 2 ( ى•„ى‌´ي…œ ى‚*ى*œ )
-- ى„±ى‍¥ى„‌ ى‚*ى*œى—گ 대ي•œ ë،œê·¸ë¥¼ 기ë،‌ي•کى‍گ!!!
INSERT @UpgradeResult VALUES( 2, @UgdStoneRefID, @UgdStoneSlot, @UgdStoneCount, @UgdStoneID64, @UgdStoneSerial64 )

COMMIT TRANSACTION

SELECT * FROM @UpgradeResult


التابل

nItemDBID bOptType nSlot nOptID nOptLvl nOptValue nParam1 nParam2
174 1 0 31734 1 0 32166 0
174 1 1 0 0 0 0 0
174 1 2 0 0 0 0 0
189 1 0 31738 2 0 32161 0
189 1 1 31743 1 0 32163 0
189 1 2 31755 2 0 32167 0
468 1 0 31734 1 0 32166 0
468 1 1 0 0 0 0 0
468 1 2 0 0 0 0 0
832 1 0 60046 2 0 101626 0
832 1 1 0 0 0 0 0
832 1 2 0 0 0 0 0
1171 1 0 0 0 0 0 0
1171 1 1 60045 1 0 101626 0
1171 1 2 0 0 0 0 0
1182 1 0 0 0 0 0 0
1182 1 1 0 0 0 0 0
1182 1 2 60047 3 0 101626 0
1724 1 0 31756 3 0 32167 0
1724 1 1 31751 1 0 32165 0
1724 1 2 0 0 0 0 0
1732 1 0 0 0 0 0 0
1732 1 1 31730 3 0 32159 0
1732 1 2 0 0 0 0 0
1826 1 0 31753 3 0 32165 0
1826 1 1 31755 2 0 32167 0
2556 1 0 0 0 0 0 0
2556 1 1 31739 3 0 32161 0
2556 1 2 31747 5 0 32163 0
2803 1 0 31753 3 0 32165 0
2803 1 1 31756 3 0 32167 0
2803 1 2 31739 3 0 32161 0
3088 1 0 31739 3 0 32161 0
3088 1 1 31756 3 0 32167 0
3088 1 2 31753 3 0 32165 0
3283 1 0 0 0 0 0 0
3283 1 1 0 0 0 0 0
3283 1 2 0 0 0 0 0
3725 1 0 31737 1 0 32161 0
3725 1 1 0 0 0 0 0
3725 1 2 0 0 0 0 0
4090 1 0 60046 2 0 101626 0
4090 1 1 0 0 0 0 0
4090 1 2 0 0 0 0 0
4864 1 0 31738 2 0 32161 0
4864 1 1 0 0 0 0 0
4864 1 2 0 0 0 0 0
4872 1 0 31751 1 0 32165 0
4872 1 1 0 0 0 0 0
4872 1 2 31754 1 0 32167 0
4873 1 0 0 0 0 0 0
4873 1 1 31738 2 0 32161 0
4873 1 2 31743 1 0 32163 0
4874 1 0 31737 1 0 32161 0
4874 1 1 0 0 0 0 0
4874 1 2 0 0 0 0 0
4931 1 0 0 0 0 0 0
5039 1 0 60096 1 0 101636 0
5039 1 1 0 0 0 0 0
5039 1 2 0 0 0 0 0
5394 1 2 60085 5 0 101633 0
5403 1 2 60126 1 0 101642 0
5489 1 0 0 0 0 0 0
5489 1 1 60091 1 0 101635 0
5503 1 0 60090 5 0 101634 0
5503 1 1 0 0 0 0 0
5503 1 2 0 0 0 0 0
5563 1 0 0 0 0 0 0
5563 1 1 0 0 0 0 0
5563 1 2 60123 3 0 101641 0
5775 1 0 0 0 0 0 0
5775 1 1 60097 2 0 101636 0
5775 1 2 0 0 0 0 0
103428 1 0 33061 1 0 35027 0
103428 1 1 33053 1 0 35025 0
NULL NULL NULL NULL NULL NULL NULL NULL

وده التصميم بتاعه :


nItemDBID bigint Unchecked
bOptType tinyint Unchecked
nSlot tinyint Unchecked
nOptID int Unchecked
nOptLvl tinyint Unchecked
nOptValue int Unchecked
nParam1 int Checked
nParam2 int Checked



وده كمان له علاقه بالموضوع وحاسس ان المشكله فيه مش عارف ليه :D


USE [test]
GO
/****** Object: StoredProcedure [dbo].[_STRG_DEL_ITEM_NoTX] Script Date: 31/12/2016 12:48:10 م ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[_STRG_DEL_ITEM_NoTX]
@DelFromPC_Inv AS TINYINT,
@CharID AS BIGINT, -- 매직 큐브 추가로 인해 확장
@Slot AS TINYINT

as
declare @Rvalue int
declare @ItemToDel bigint

if (@DelFromPC_Inv = 1)
select @ItemToDel = ItemID FROM _Inventory WHERE CharID = @CharID AND Slot = @Slot
else if ( @DelFromPC_Inv = 2 )
select @itemToDel = ItemID FROM _InventoryForLinkedStorage WHERE LinkedItemID = @CharID AND Slot = @Slot
else if ( @DelFromPC_Inv = 3 ) -- #ifdef ADD_TRADE_BAG_INVENTORY
select @itemToDel = ItemID FROM _TradeBagInventory WHERE CharID = @CharID AND Slot = @Slot
else if ( @DelFromPC_Inv = 4 ) -- #ifdef ADD_TRADE_EQUIP_INVENTORY
select @itemToDel = ItemID FROM _TradeEquipInventory WHERE CharID = @CharID AND Slot = @Slot
--#ifdef PET_SYSTEM_RENEWAL
else if( @DelFromPC_Inv = 5 )
select @ItemToDel = ItemID FROM _EquipInvCos WHERE NewCOSID = @CharID AND Slot = @Slot
--#endif // PET_SYSTEM_RENEWAL
else
select @ItemToDel = ItemID FROM _InvCOS WHERE COSID = @CharID AND Slot = @Slot

if (@ItemToDel IS NULL or @ItemToDel = 0)
return -1

----------------------------------------
-- 졸라 이 아래쪽 순전히 펫 소환아이템 때문에
-- 들어간 코드이다. 분명 overhead이긴 하지만
-- _STRG_DEL_ITEM 의 신뢰도와 게임서버 코드 복잡도
-- 증가를 유발하지 않기 위해 어쩔 수 없는 판단이었다. T_T
----------------------------------------
declare @BoundCOS int
declare @RefItemID int
select @RefItemID = RefItemID, @BoundCOS = Data from _Items where ID64 = @ItemToDel
if (@@ROWCOUNT = 0)
return -2

----------------------------------------
-- 혹시 이눔 PET 소환아이템인가?
----------------------------------------
declare @TypeID1 tinyint
declare @TypeID2 tinyint
declare @TypeID3 tinyint
select @TypeID1 = TypeID1, @TypeID2 = TypeID2, @TypeID3 = TypeID3 from _RefObjCommon where ID = @RefItemID
if (@TypeID1 = 3 and @TypeID2 = 2 and @TypeID3 = 1 )
begin
----------------------------------------
-- 엮여있는 PET 이 있으면 그넘 삭제
----------------------------------------
if (@BoundCOS <> 0)
begin
exec @Rvalue = _DeleteCharCOS_NoTX @BoundCOS
if (@Rvalue < 0)
return @Rvalue
end
end

----------------------------------------
-- 혹시 이눔 LinkedStorage아이템인가?
----------------------------------------
else if( @TypeID1 = 3 and @TypeID2 = 2 and @TypeID3 = 3 )
begin
----------------------------------------
-- 엮여있는 Storage 있으면 그넘 삭제
----------------------------------------
if (@BoundCOS <> 0)
begin
IF( NOT EXISTS( select LinkedItemID from _InventoryForLinkedStorage where LinkedItemID = @ItemToDel ) )
BEGIN return -1000 END
IF( EXISTS( select top 1 ItemID from _InventoryForLinkedStorage where LinkedItemID = @ItemToDel and ItemID <> 0 and ItemID IS NOT NULL ) )
BEGIN
update _ItemPool Set InUse = 0 from _ItemPool as IP join _InventoryForLinkedStorage as IFLS on IP.ItemID = IFLS.ItemID
where IFLS.LinkedItemID = @ItemToDel AND IFLS.ItemID <> 0
END
DELETE FROM _InventoryForLinkedStorage where LinkedItemID = @ItemToDel
IF( @@ERROR <> 0 )
BEGIN return -2 END
end
end


-- ADD_BINDING_OPTION_INSTANCE_TABLE
----------------------------------------------------------
-- 삭제 대상 아이템에 묶인 바인드 옵션 삭제
----------------------------------------------------------
if exists (select 1 from _BindingOptionWithItem with (nolock) where nItemDBID = @ItemToDel)
begin -- 데이터가 들어 있다면..
delete from _BindingOptionWithItem where nItemDBID = @ItemToDel
if (@@ERROR <> 0 OR @@ROWCOUNT = 0)
begin
rollback transaction
return -5
end
end
-- ADD_BINDING_OPTION_INSTANCE_TABLE

----------------------------------------------------------
-- 슬롯 비우기
----------------------------------------------------------
if (@DelFromPC_Inv = 1 )
update _Inventory SET ItemID = 0 WHERE CharID = @CharID AND Slot = @Slot
else if (@DelFromPC_Inv = 2 )
update _InventoryForLinkedStorage SET ItemID = 0 WHERE LinkedItemID = @CharID AND Slot = @Slot
else if (@DelFromPC_Inv = 3 ) -- #ifdef ADD_TRADE_BAG_INVENTORY
update _TradeBagInventory SET ItemID = 0 WHERE CharID = @CharID AND Slot = @Slot
else if (@DelFromPC_Inv = 4 ) -- #ifdef ADD_TRADE_EQUIP_INVENTORY
update _TradeEquipInventory SET ItemID = 0 WHERE CharID = @CharID AND Slot = @Slot
-- #ifdef PET_SYSTEM_RENEWAL
else if( @DelFromPC_Inv = 5 )
update _EquipInvCos SET ItemID = 0 WHERE NEWCOSID = @CharID AND Slot = @Slot
--#endif // PET_SYSTEM_RENEWAL
else
update _InvCOS SET ItemID = 0 WHERE COSID = @CharID AND Slot = @Slot

if (@@error <> 0 OR @@rowcount = 0)
return -3
-- SYSTEM_RENT_ITEM
----------------------------------------------------------
-- 삭제 대상 아이템에 묶인 임대 정보 삭제
----------------------------------------------------------
if exists (select 1 from _RentItemInfo with (nolock) where nItemDBID = @ItemToDel)
begin
delete from _RentItemInfo where nItemDBID = @ItemToDel
if (@@ERROR <> 0 OR @@ROWCOUNT = 0)
begin
rollback transaction
return -6
end
end
-- SYSTEM_RENT_ITEM
----------------------------------------------------------
-- 해당 아이템 삭제
----------------------------------------------------------
exec @Rvalue = _STRG_FREE_ITEM_NoTX @ItemToDel
if (@Rvalue < 0)

return -4

return 1




_InventoryForLinkedStorage
Invalid Object Name
و
ItemID
LinkedItemID
Slot
Invaild Culmn name



IF EXISTS (SELECT * FROM sysobjects WHERE Name = '_BindingOptionWithItem' AND Type = 'U' )
BEGIN
DELETE _BindingOptionWithItem WHERE nItemDBID = @UgdEquipID64 AND bOptType = 2
END


دلوقتى انا عاوز افهم انا ماشى صح ولا ده اصلاً ملهوش علاقه بالموضوع ولا في ايه بالظبط واحل المشكله ديه ازاى :D ؟
ولو حد عنده حل للمشكله يقول عليه بصرف النظر اذا كان يخص Vsro أو C-sro المهم نعرف ايه اللى بيعمل المشكله ديه البروسيدور سليم ومفهوش مشاكل وانا مش عارف صراحه ممكن تكون فين

طبعاً عارف ان معظم اللى اشتغلو على الملفات ديه عارفين الموضوع ده فقولت أعمل بيه موضوع واجيبه هنا علشان كلنا نبص بصه سوا :D واى حد عنده رأى او جرب حاجه ونفعت معاه يقولنا :)

Levi
31-12-2016, 03:00 PM
هو في vsro كل ده مش موجود اصلاً
بمعني ان الحوار مش مستاهل كل procedures دي كلها .. هو تابل واحد و procedure و واحد كمان عشان يعملو exec
بس كل ده اكيد في حاجه
+ ان c-sro مخلتفه جداً عن vsro صراحه مجربت ادخلها لانها شبه المتاها و مفيش ناس كتير اشتغلت فيها ..
قارن بينه وبين الموضوع ده هتلاقي ان في اختلاف مع العلم
. البروسيدير طبعا بيتغير ع حسب لي عملو
هنا (http://silkroad4arab.com/vb/showthread.php?t=579425)

Dev.Myth
01-01-2017, 05:47 AM
هو في vsro كل ده مش موجود اصلاً
بمعني ان الحوار مش مستاهل كل procedures دي كلها .. هو تابل واحد و procedure و واحد كمان عشان يعملو exec
بس كل ده اكيد في حاجه
+ ان c-sro مخلتفه جداً عن vsro صراحه مجربت ادخلها لانها شبه المتاها و مفيش ناس كتير اشتغلت فيها ..
قارن بينه وبين الموضوع ده هتلاقي ان في اختلاف مع العلم
. البروسيدير طبعا بيتغير ع حسب لي عملو
هنا (http://silkroad4arab.com/vb/showthread.php?t=579425)

طبعاً فاهم الفرق لكن ديه هتلاقيها اكيد سكرول وشغلها كله على RefItem و RefObjcommon بس هنا مش شغاله على RefObjCommon بس لوحدها ديه مربوطه بجداول تانيه وسيستم خاص ليها هيا ومكان مخصوص ليها فى ال alchemy وكل حاجه على حدى فمشكلة الديسكونكت ديه بتيجى بعد ماالعمليه بتتنفذ وتبان قصادك النتايج يعنى ديه لو مثلاً بتستخدمها مع ال alchemy العادى فانت بتربطها بيه وخلاص يعنى اعتقادى هنا ان المشكله ديه حلها عند نقطة النهايه وخاصةً فى ال alchemy فيه حاجه ناقصه بس ايه هيا مش قادر لسه اوصلها علشان كده عملت موضوع هنا واللى يقدر يوصل لحاجه يتفضل :D
وعلفكره C-sro اكبر مشاكلها هيا ديه وكام بروسيدور تانين والباقى كله كلام تافه حاجات فى F10 وشغل اى حد يقدر يعدل عليه :)
يعنى لو قدرنا نصلح الكلام ده أى حد بعد كده هيقدر يشتغل على ملفات C-Sro وطبعاً ديه خياال مقارنه بVsro فهيا جمبها ولا حاجه صراحه :D

Dev.Myth
01-01-2017, 12:42 PM
تعديل كمان
نفس المشكله موجوده فى الماجيك بوب Magic pop
متهيقلى كده المشكله ممكن تكون فى الجيم سيرفر لو حد فاضى يدينا رأيه ياريت يتفضل ده هيفيد ناس كتير :)

Levi
01-01-2017, 03:00 PM
اكيد و مؤكد بيبقي في البروسيديرز .. اكيد 100%

مش هتلاقي حد لعب في حكايه c-sro كتير

انصحك بلاش منها خليها vsro والمصحف جميله :birgits_tiredcoffee

Dev.Myth
01-01-2017, 05:04 PM
اكيد و مؤكد بيبقي في البروسيديرز .. اكيد 100%

مش هتلاقي حد لعب في حكايه c-sro كتير

انصحك بلاش منها خليها vsro والمصحف جميله :birgits_tiredcoffee


بقيت شاكك ان المشكله تكون فى البروسيدور لأن نفس المشكله موجوده فى الماجيك بوب ديه حاجه فى السيستم نفسه وشكلها ملهاش علاقه بالبروسيدور بس انا وراها :D
C-SRO فيها سيستمات زى مابيقول الكتاب بصراحه وبعدين VSRO سهله وممكن اعمل فيها اى حاجه نفسى فيها :D
بس انا حاسس 70% إن المشكله فى الجيم سيرفر والمشكله انى مش بفهم قد كده فيه

Jayden
02-01-2017, 04:10 AM
البروسيدر ده معقد جدا والموضوع يتعمل بأبسط من كده وانا شاكك انها ممكن تكون من RETURN اللى موجوده كتير دى
وزى ما قولتلك الموضوع ابسط من كده بص مثلا على موضوعى بتاع الModel Switchers وخد نفس الفكرة على ال Upgrade

Dev.Myth
02-01-2017, 10:19 AM
البروسيدر ده معقد جدا والموضوع يتعمل بأبسط من كده وانا شاكك انها ممكن تكون من RETURN اللى موجوده كتير دى
وزى ما قولتلك الموضوع ابسط من كده بص مثلا على موضوعى بتاع الModel Switchers وخد نفس الفكرة على ال Upgrade

ده سيستم لوحده زى السوكت او البلص وعرفت اوصل للسيستم بتاعه مفهوش مشكله
وعلشان كده مليان ومعقد شويتين و نفس المشكله قابلتنى فى الماجيك بوب انا عاوز اعرف هيا ممكن تكون من الجيم سيرفر ولا لأ؟ لأن كمان الجيم سيرفر اللى شغال بيه ده بيطلعلى GreenBook وده المفروض ميكونش موجود فى ملفات C-Sro ده غير ان فيه برضو مشكله فى الF10 لما تيجى تشترى اى حاجه جديده غير اللى موجوده فى VSro
لو الجيم سيرفر ملهوش علاقه يبقى على ما أعتقد واللى انا شاكك فيه ان المشكله تكون فى @UpgradeResult او السطر الاخير ده
عموماً انا هشوف موضوعك برضو يمكن اطلع منه بحاجه ونسيب الموضوع مفتوح يمكن انا اقدر اوصل لشئ او حد غيرى

Jayden
03-01-2017, 01:52 AM
ممكن برضو يكون من ال Gameserver
ال GS ملوش امان ابدا اسألنى أنا ^^
بس برضو انا متأكد ان الموضوع يتعمل ابسط من كده بكتير ده بروسيدر بطىء جدا

Dev.Myth
03-01-2017, 04:15 PM
ممكن برضو يكون من ال Gameserver
ال GS ملوش امان ابدا اسألنى أنا ^^
بس برضو انا متأكد ان الموضوع يتعمل ابسط من كده بكتير ده بروسيدر بطىء جدا

ارخم حاجه ومش بفهم فيه بجد رخم اوى :@
و انت كده مش واصله ليك لسه :D
ده سيستم زى البلص والسوكت كده موجود فى Y فلازم يكون معقد كده وكبير لأن ليه كذا مرحله وكذا امر وشروط كتيره وشغاال تمام 10/10 بدون اى مشاكل وبتتنفذ العمليات وبتشوف النتيجه بس بعد ده كله تلاقى نفسك طلعت DC ونفس المشكله فى الماجيك بوب برضو تنجح العمليه وتشوف النتايج بعد كده DC انا متأكد إن فيه حاجه مشتركه مابينهم بس اللى محيرنى هيا فى الداتا بيز ولا الجيم سيرفر -.- ؟
لو الداتا بيز تبقى مش صعبه اوى لكن لو الجيم السيرفر انا كده هتقعد :D
عموماً انا مستنى اللى معدل على الداتا بيز اللى انا شغال بيها وبيقول انها عنده شغاله كويس ومفيش دى سى طلبت منه الداتا بس هوا عنده امتحانات وكده فهجرب بيها لو اتحلت تبقى مش من الجيم سيرفر وده اللى انا بتمناه :D
ولو متحلتش هطلب منه الملفات اللى فاتح بيها وهاعرف المشكله فين وسببها ايه واضيفها هنا ان شاء الله

Dev.Myth
05-01-2017, 12:32 AM
تم معرفة سبب المشكله وحلها :)
سبب المشكله ان ال Upgrade لو اكتر من واحده هتاخد DC لازم وانت بتضرب تكون بتستخدم واحده بس .!
الحل النهائى ليها : انك تغير ال Max stuck بتاعها ل 1 بس علشان متتحطش فوق بعض وتعمل معاك المشكله ديه :)
حوار تافهه بس دوخنى وشككنى فى نفسى :D سبحان الله ديماً الحلول بتكون بسيطه وقدام عنينا بس احنا اللى بنعقدها يالا حصل خير :D

Jayden
05-01-2017, 04:19 AM
وال Magic pop كان ايه علاقتها طيب :D

Dev.Myth
05-01-2017, 04:27 AM
وال Magic pop كان ايه علاقتها طيب :D

لأ ديه موال تانى بجد مش هزار ال NPC بعد مايفتح مش بيرضى يدخل على الصفحه وده شكله مشكله فى السكريبت بس اياً يكن اهون مليون مره من انى امد ايدى او حتى أتجرأ وافتح شغل فى الجيم سيرفر :D
دانا لاقيت جداول مش موجوده والدنيا خربانه خالص :D
وبعانى من العشا النهارده لحد دلوقتى بس فصلت على كده والحمد لله النتايج كلها ايجابى والاهم انى بعيد عن الجيم سيرفر ولله الحمد :V
اقفل ياحج الموضوع الحمد لله مرضيه كده بس التفكير بصوت عالى مفيد تصدق ؟ ههههههههه :D

Jayden
05-01-2017, 04:44 AM
نصيحة منى ارجع ل vsro عشان صحتك
يغلق :D
##