عرض مشاركة واحدة
قديم 07-01-2017, 05:24 AM   #18

Dev.Myth
عضو فضى



الصورة الرمزية Dev.Myth

مشرف قسم CrossFire

• الانـتـسـاب » May 2010
• رقـم العـضـويـة » 70996
• المشـــاركـات » 3,554
• الـدولـة » مــصــر
• الـهـوايـة » Silkroad Service
• اسـم الـسـيـرفـر » Private Server
• الـجـنـس » Male
• نقـاط التقييم » 15
Dev.Myth صـاعـد

Dev.Myth غير متواجد حالياً


إرسال رسالة عبر Yahoo إلى Dev.Myth

افتراضي رد: استفسار بخصوص _AddNewChar



المشاركة الأصلية كتبت بواسطة thedeathlist عفوا ,,, لايمكنك مشاهده الروابط لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
55059332    -- Ä³¸¯Å͸¦ »ý¼ºÇϴ ÇÁ·Î½ÃÀú¸¦ ¼öÁ¤ÇÏ¿© Ä³¸¯ÅÍ »ý¼º ½Ã, _CharTrijob¿¡ ·¹Äڵ带 Ãß°¡Çϵµ·Ï ÇÑ´Ù.
CREATE PROCEDURE [dbo].[_AddNewChar_THINH]
    @
UserJID            INT,
    @
Accname             Varchar(64),
    --@
CharSlot            INT,
    @
RefCharID            INT,
    @
CharName            varchar (64),
    @
CharScale            tinyINT,
    @
StartRegionID            INT,
    @
StartPos_X            real,
    @
StartPos_Y            real,
    @
StartPos_Z            real,
    @
DefaultTeleport            INT,
    @
RefMailID            INT,
    @
RefPantsID            INT,
    @
RefBootsID            INT,
    @
RefWeaponID            INT,
    @
DurMail            tinyINT,
    @
DurPants            tinyINT,
    @
DurBoots            tinyINT,
    @
DurWeapon            tinyINT,
    @
DefaultArrow            INT
AS
SET NOCOUNT ON
    
DECLARE @temp            INT    
    
DECLARE @NewCharID        INT
    SET 
@NewCharID 0    
    
    
-----------------------------------------------------------------------------
    -- 
1. Ä³¸¯ÅÍ ½½·Ô ³Ñ¹ö°¡ validÇÑ °ÍÀÎÁö, ±×¸®°í ºó½½·ÔÀÌ ¸Â´ÂÁö ¸ÕÀú Ã¼Å©ÇÑ´Ù.
    
-----------------------------------------------------------------------------
    
/* -- commented by novice. for server integration.
    IF (@CharSlot = 0)
        BEGIN SELECT @temp = CharID1 FROM _User  WITH (NOLOCK) WHERE UserJID = @UserJID END
    ELSE IF (@CharSlot = 1)
        BEGIN SELECT @temp = CharID2 FROM _User  WITH (NOLOCK) WHERE UserJID = @UserJID END
    ELSE IF (@CharSlot = 2)
        BEGIN SELECT @temp = CharID3 FROM _User  WITH (NOLOCK) WHERE UserJID = @UserJID END
    ELSE    
        BEGIN    -- °¡´ÉÇѠij¸¯ÅÍ ½½·ÔÀº 1,2,3 ÀÌ·¸°Ô 3°³ »ÓÀ̶ó°í!
            ROLLBACK TRANSACTION
            RETURN -1
        END
    IF (@temp <> 0)
    BEGIN
        -- ºó ½½·ÔÀÌ ¾Æ´Ï¹Ç·Î ¹«È¿!
        ROLLBACK TRANSACTION
        RETURN -2
    END
    */
    
-- start by novice.
    
SELECT @temp count(CharIDFROM _User WITH (NOLOCKWHERE UserJID = @UserJID
    
IF (@temp >= 3)
    
BEGIN
        
-- ³&#202;¹« ¸¹ÀÚ³ª
        
RETURN -2
    END
    
-- finish by novice.
    -----------------------------------------------------------------------------
    -- 
2. &#196;³¸¯ÅÍ Ãß°¡Çϱâ
    
-----------------------------------------------------------------------------
    IF (@
CharScale 68)    -- 0100 0100 --> 68 &#192;Ì´Ù!
    
BEGIN
        
-- &#196;³¸¯ÅÍ »ý¼º ½ÇÆÐ! ½ºÄÉÀÏ °ªÀÌ ÀÌ»óÇÏ´Ù! 
        
RETURN -3
    END
    EXEC 
@temp _IsExistingCharName @CharName
    
IF (@temp <> 0)
    
BEGIN
        
-- &#192;̹̠»ç¿ëÁßÀΠÀ̸§À̶ó´Âµ¥?
        
RETURN -4
    END

    BEGIN TRANSACTION


    INSERT INTO _Char 
(    RefObjIDCharName16ScaleStrengthIntellectLatestRegion,PosXPosYPosZAppointedTeleportInventorySize,
                
LastLogoutCurLevelMaxLevelRemainGoldRemainStatPointRemainSkillPointHPMPJobLvl_TraderJobLvl_HunterJobLvl_Robber)
           
VALUES (@RefCharID, @CharName, @CharScale2020, @StartRegionID, @StartPos_X, @StartPos_Y, @StartPos_Z, @DefaultTeleport45,
                
GetDate(), 11000200,200111)
    
    
SET @NewCharID = @@IDENTITY


--    INSERT INTO _User VALUES (@UserJID, @NewCharID)


    IF (@@
ERROR <> OR @@ROWCOUNT 0)
    
BEGIN
        
-- &#196;³¸¯ÅÍ »ý¼º ½ÇÆÐ!
        
ROLLBACK TRANSACTION
        
RETURN -5
    END
    INSERT INTO _User VALUES 
(@UserJID, @NewCharID)



    
/* -- commented by novice. for server integration.
    IF (@CharSlot = 0)        
    BEGIN
        UPDATE _User  SET CharID1 = @NewCharID WHERE UserJID= @UserJID
    END
    ELSE IF (@CharSlot = 1)
    BEGIN
        UPDATE _User    SET CharID2 = @NewCharID WHERE UserJID= @UserJID
    END
    ELSE IF (@CharSlot = 2)
    BEGIN
        UPDATE _User    SET CharID3 = @NewCharID WHERE UserJID = @UserJID
    END
    IF (@@ERROR <> 0)
    BEGIN
        -- 'UserÅ×À̺íÀǠij¸¯ÅÍ ½½·Ô ¼¼ÆÃ ½ÇÆÐ!
        ROLLBACK TRANSACTION
        RETURN -6
    END
    */
    
    
-- start by novice.
    -- &
#192;ÌÁ¦ Slot ¾È¾´´Ù.. ±×³É Insert ¸¸..
--    INSERT INTO _User VALUES (@UserJID, @NewCharID)
    -- 
finish by novice.
    -----------------------------------------------------------------------------  
     -- 
3. &#192;åºñ ½½·Ô Ã¤¿ì±â  
     
-- [&#192;κ¥Å丮 ½½·Ô 48°³] + [Àåºñ½½·Ô 13°³]  
     
-----------------------------------------------------------------------------  
    
INSERT INTO _Inventory(CharIDSlotItemID
        
SELECT @NewCharIDCNT0
        FROM _RefDummySlot  WITH 
(NOLOCK)
        
WHERE CNT 61

    
IF (@@ERROR <> 0)
    
BEGIN
        
-- &#192;κ¥Å丮 »ý¼º ½ÇÆÐ!
        
ROLLBACK TRANSACTION
        
RETURN -7
    END    
    
    
-- µ&#240;ÆúÆ®·Î ¼±ÅÃÇÑ ¾ÆÀÌÅÛÀ» ´Ù½Ã ³Ö¾îÁÖÀÚ...
    /* ¿ä·± ¼ø¼*·Î  Á¤ÀǵǾî ÀÖ´Ù.
     0: EQUIP_SLOT_HELM
     1: EQUIP_SLOT_MAIL,
     2: EQUIP_SLOT_SHOULDERGUARD,
     3: EQUIP_SLOT_GAUNTLET,
     4: EQUIP_SLOT_PANTS,
     5: EQUIP_SLOT_BOOTS,
     6: EQUIP_SLOT_WEAPON,
     7: EQUIP_SLOT_SHIELD or ARROW,
     8: EQUIP_SLOT_EARRING,
     9: EQUIP_SLOT_NECKLACE,
    10: EQUIP_SLOT_L_RING,
    11: EQUIP_SLOT_R_RING,
    */
    
    
DECLARE @ItemID BIGINT
    SET 
@ItemID 0

    
-- »&#243;°©
    
IF (@RefMailID <> 0)
    
BEGIN
        EXEC 
@ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID1, @RefMailID, @DurMail
        
IF (@ItemID <= 0)
        
BEGIN
            ROLLBACK TRANSACTION
            
RETURN -8
        END
    END
    
-- ¹&#217;Áö
    
IF (@RefPantsID <> 0)
    
BEGIN
        EXEC 
@ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID4, @RefPantsID, @DurPants
        
IF (@ItemID <= 0)
        
BEGIN
            ROLLBACK TRANSACTION
            
RETURN -9
        END
    END
    
-- Boots
    
IF (@RefBootsID <> 0)
    
BEGIN
        EXEC 
@ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID5, @RefBootsID, @DurBoots
        
IF (@ItemID <= 0)
        
BEGIN
            ROLLBACK TRANSACTION
            
RETURN -10
        END
    END
    
-- Weapon
    
IF (@RefWeaponID <> 0)
    
BEGIN
        EXEC 
@ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID6, @RefWeaponID, @DurWeapon
        
IF (@ItemID <= 0)
        
BEGIN
            ROLLBACK TRANSACTION
            
RETURN -11
        END
    END
    
-- &#200;¤½Ã default·Î ¼±ÅÃÇÑ ¹«±â°¡ È°À̶ó¸é È*»ì 250°³µéÀ̠ȰÅëµµ ÇÔ²² ÁØ´Ù. ÁÒÄ¡?
    
IF (@DefaultArrow <> 0)
    
BEGIN
        EXEC 
@ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID7, @DefaultArrow250
        
IF (@ItemID <= 0)
        
BEGIN
            ROLLBACK TRANSACTION
            
RETURN -12
        END
    END
    
-----------------------------------------------------------------------------
    -- default 
skill³&#214;¾îÁÖ±â
    
-----------------------------------------------------------------------------
    DECLARE @
country tinyINT
    EXEC 
@country _GetObjCountry @RefCharID
    
    INSERT INTO _CharSkillMastery 
(CharIDMasteryID, [Level])
    
SELECT    @NewCharIDMasteryID0
    FROM    _RefCharDefault_SkillMastery WITH 
(NOLOCK)
    
WHERE    Race = @country or Race 3
    
IF (@@error <> 0)
    
BEGIN
        ROLLBACK TRANSACTION
        
RETURN -13
    END
    INSERT INTO _CharSkill 
(CharID,SkillID,Enable)
    
SELECT    @NewCharIDSkillID1
    FROM     _RefCharDefault_Skill WITH 
(NOLOCK)
    
WHERE    Race = @country or Race 3
    
IF (@@error <> 0)
    
BEGIN
        ROLLBACK TRANSACTION
        
RETURN -14
    END

    
-----------------------------------------------------------------------------
    -- 
TutorialQuest³&#214;¾îÁÖ±â
    
-----------------------------------------------------------------------------
    
INSERT INTO _CharQuest (CharIDQuestIDStatusAchievementCountStartTimeEndTimeQuestData1QuestData2)
    
SELECT @NewCharIDQuestID40getdate(), getdate(), 00
    FROM _RefCharDefault_Quest WITH 
(NOLOCK)
    
WHERE Race = @country or Race 3
    
IF (@@error <> 0)
    
BEGIN
        ROLLBACK TRANSACTION
        
RETURN -15
    END
    
-----------------------------------------------------------------------------
    -- Static 
Avatar Initial Record ³&#214;±â
    
-----------------------------------------------------------------------------
    
INSERT INTO _StaticAvatar(CharIDvalues(@NewCharID)
    IF (@@
ERROR <> 0)
    
BEGIN
        ROLLBACK TRANSACTION
        
RETURN -16
    END    

    
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    --        
PATCH_READY ¹«&#191;ª°ú »ï°¢´ë¸³2 (ÃÖÀÎÈ£)
    
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    -----------------------------------------------------------------------------
    -- 
Trijob &#195;¤¿ö³Ö±â!!!!!
    
-----------------------------------------------------------------------------
    
INSERT INTO _CharTrijob VALUES (@NewCharID01000)
    IF (@@
ERROR <> 0)
    
BEGIN
        
-- &#192;κ¥Å丮 »ý¼º ½ÇÆÐ!
        
ROLLBACK TRANSACTION
        
RETURN -17
    END    

    
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    --        
PATCH_READY ¹«&#191;ª°ú »ï°¢´ë¸³2 (ÃÖÀÎÈ£)
    
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
insert _AccountJID values(@Accname, @UserJID,0)
    -----------------------------------------------------------------------------
    -- 
CharList&#191;¡ ID ³Ö¾îÁÖ±â
    
-----------------------------------------------------------------------------
    
INSERT _CharNameList VALUES(@CharName, @NewCharID)
    
COMMIT TRANSACTION

    exec _ADD_ITEM_EXTERN 
@CharName,'ITEM_ETC_E060118_60EXP_HELP',1,1
    exec _ADD_ITEM_EXTERN 
@CharName,'ITEM_ETC_E060118_100EXP_HELP',1,1

    
-- Quick Slot &#193;¤º¸ ÀúÀå¿ë!!!  
    
exec _AddNewClientConfig @NewCharID  -- by novice...... for saving client configurations...  

    RETURN @
NewCharID

    1    1    0    0    0    0    NULL    0
1827133900    
-- 2008.12.19  woos0
----------------------------------------------------------------------------------
-- &
#200;®ÀåÇϴ Àκ¥Å丮¿¡ ¸ÂÃç ÃÖ´ë Çѵµ¼ö¿¡ ´ëÇÑ DummySlot (_RefDummySlot) À»
-- &#199;öÀç±îÁö »ý¼ºÇѠij¸¯ÅÍ¿¡ ³Ö¾îÁØ´Ù. (ÀÌÈÄ »ý¼ºÇϴ ij¸¯Åʹ ¼öÁ¤µÈ _AddNewChar¿¡¼* Ã³¸®)
--
-- 
±â&#193;¸ 61°³ ( 13(Àåºñ) + 32(±âº»Àκ¥) + 16(Äù½ºÆ®È®Àå) ) ¿¡¼* È®ÀåÇÏ¿©
-- &#199;öÀç 109°³ ( 13(Àåºñ) + 32(±âº»Àκ¥) + 20(Äù½ºÆ®È®Àå) + 32(½ÇÅ© È®Àå ¾ÆÀÌÅÛ) + 10(ÃßÈÄ ±âȹ) )
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
-- &
#192;̹ø È®ÀåÀ¸·Î 109°³ ±îÁö °¡¹Ç·Î, ÇÁ·Î½ÃÀú »óÀ¸·Î À妽º °ªÀΠ61 ~ 108 ¸¦ ÀÔ·ÂÇØµµ µÇÁö¸¸,
-- &#195;ßÈÄ Çѹø ´õ È®ÀåÇÒ °¡´É¼ºÀ» ¿°µÎÇÏ¿© ½ÃÀ۽ຯ¼ö µÎ°³¸¦ ´õ ¹Þµµ·Ï ÇÏ¿´´Ù.
----------------------------------------------------------------------------------

CREATE PROCEDURE _InsertDummySlotForExtention
    
@BeginIndex    tinyint,
    @
EndIndex    tinyint
AS

-- &
#192;Ô·ÂÇÑ À妽º ¹øÈ£ À¯È¿¼º °Ë»ç
---------------------------------
IF(@
BeginIndex > @EndIndex)
BEGIN
    
PRINT('½ÃÀÛ À妽º ¹øÈ£°¡ ³¡ À妽º ¹øÈ£º¸´Ù Å©´Ù!!!')
    RETURN
END

-- &#195;ß°¡ÇÒ ´õ¹Ì½½·Ô¿¡ À̹̠´Ù¸¥ ¾ÆÀÌÅÛÀÌ ÀÖ´ÂÁö È®ÀÎ
---------------------------------------------------
IF 
EXISTS (SELECT CharID FROM _Inventory WHERE Slot >= @BeginIndex AND Slot <= @EndIndex AND ItemID <> 0)
BEGIN
    
PRINT('Ãß°¡ÇÒ ´õ¹Ì½½·Ô¿¡ À̹̠´Ù¸¥ ¾ÆÀÌÅÛÀÌ ÀÖ´Ù!!!')
    RETURN
END

-- ±â&#193;¸ Àκ¥Å丮¿¡ À妽º ¹üÀ§¿¡ ÇØ´çÇϴ ½½·ÔÀÌ ÀÖÀ»°æ¿ì »èÁ¦
--------------------------------------------------------------
DELETE _Inventory
WHERE Slot 
>= @BeginIndex AND Slot <= @EndIndex


BEGIN TRANSACTION

-- ±â&#193;¸ _Inventory¿¡ Ãß°¡µÇ´Â DummySlot Ãß°¡
--------------------------------------------
INSERT _Inventory (CharIDSlotItemID)
SELECT _Char.CharId_RefDummySlot.cnt0
FROM _Char
_RefDummySlot
WHERE _RefDummySlot
.cnt >= @BeginIndex and _RefDummySlot.cnt <= @EndIndex and _Char.CharId <> 0
ORDER BY _Char
.charid ASC


IF(@@ERROR 0)
BEGIN
    COMMIT TRANSACTION
END
ELSE
BEGIN
    ROLLBACK TRANSACTION
END    

    0    0    0    0    0    0    NULL    0 
للأسف مش ده !
واضح انهم مقفولين من كل حته :(
كده مفيش غير انك تمسح اللى عندك _AddNewChar و _AddTimeJob وتضيف دول بعد ماتمسحهم عن طريق New Query على SRO_VT_SHARD ولو مرضاش يتمسح معاك يبقى انا كده حلولى خلصت :D

التحميل فى المرفقات علشان المنتدى مش هيطلع الاكواد مظبوطه :)


الملفات المرفقة عفوا ,,, لايمكنك مشاهده المرفق لانك غير مسجل لدينا [ للتسجيل اضغط هنا ]
توقيع Dev.Myth :


رد مع اقتباس