Kayıt
22 Ağustos 2010
Mesajlar
1.866
Beğeniler
515
Takımı
Seçiniz...


Bu sorunun kaynaklanma sebebi, AddNewChar kısmının char kurulunca _CharSkill tablosuna BASE (ilk kullanım) skillerinin eklenmemesi.
Sorunu çözmek için Clean DB'de bulunan AddNewChar'ı kullanmamız gerekli.
Tabi Clean olduğu için, char kurulunca 1 Page Açık, 0 Gold, 0 Sp, 1 Level vb. şeklinde başlayacaktır.
Siz bunları kendinize göre düzenleyip kullanabilir ve sorununuzu çözebilirsiniz.

Aşağıdaki kod'u kopyalayıp, New Query diyerek okutun.
_AddNewChar prosedürünüz değişecek olup sorununuz çözülecektir.


Kod:
USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[_AddNewChar]    Script Date: 22.02.2017 16:41:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO




ALTER PROCEDURE [dbo].[_AddNewChar]
    @UserJID            INT,      
    --@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,      
    @RefShield            INT,      
    @DurMail            tinyINT,      
    @DurPants            tinyINT,      
    @DurBoots            tinyINT,      
    @DurWeapon            tinyINT,      
    @DurShield            tinyINT,      
    @DefaultArrow        INT      
AS  
   
SET NOCOUNT ON    

    DECLARE @Slot  INT      
    DECLARE @temp  INT      
           
    DECLARE @NewCharID  INT      
    SET @NewCharID = 0      
     
     
    -----------------------------------------------------------------------------      
    -- 1. ij¸¯ÅÍ ½½·Ô ³Ñ¹ö°¡ validÇÑ °ÍÀÎÁö, ±×¸®°í ºó½½·ÔÀÌ ¸Â´ÂÁö ¸ÕÀú üũÇÑ´Ù.      
    -----------------------------------------------------------------------------      
       
    -- start by novice.      
    SELECT @temp = count(CharID) FROM _User WITH (NOLOCK) WHERE UserJID = @UserJID      
         
    IF (@temp >= 4)      
    BEGIN      
        -- ³Ê¹« ¸¹ÀÚ³ª      
        RETURN -2      
    END      
    -- finish by novice.      
     
    -----------------------------------------------------------------------------      
    -- 2. ij¸¯ÅÍ Ãß°¡Ç챉      
    -----------------------------------------------------------------------------      
    IF (@CharScale > 68) -- 0100 0100 --> 68 ÀÌ´Ù!      
    BEGIN      
        -- ij¸¯ÅÍ »ý¼º ½ÇÆÐ! ½ºÄÉÀÏ °ªÀÌ ÀÌ»óÇÏ´Ù!        
        RETURN -3      
    END
       
    EXEC @temp = _IsExistingCharName @CharName      
    IF (@temp <> 0)      
    BEGIN      
        -- ÀÌ¹Ì »ç¿ëÁßÀÎ À̸§À̶ó´Âµ¥?      
        RETURN -4      
    END      
   
BEGIN TRANSACTION
   
    -- Àδø½Ã½ºÅÛÀÌ Àû¿ëµÇ¸é¼ ¸¶Áö¸·¿¡ WorldID¿Í 1°ªÀ» ´õ ³Ö¾î ÁÖ¾ú´Ù!    
    INSERT INTO _Char (RefObjID, CharName16, Scale, Strength, Intellect, LatestRegion,PosX, PosY, PosZ, AppointedTeleport, InventorySize,    
                LastLogout, CurLevel, MaxLevel, RemainGold, RemainStatPoint, RemainSkillPoint, HP, MP, JobLvl_Trader, JobLvl_Hunter, JobLvl_Robber, WorldID)    
    VALUES (@RefCharID, @CharName, @CharScale, 20, 20, @StartRegionID, @StartPos_X, @StartPos_Y, @StartPos_Z, @DefaultTeleport, 45,    
                GetDate(), 1, 1, 0, 0, 0, 200,200, 1, 1, 1, 1)    
   
    SET @NewCharID = @@IDENTITY      
    IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)      
    BEGIN      
        -- ij¸¯ÅÍ »ý¼º ½ÇÆÐ!      
        ROLLBACK TRANSACTION      
        RETURN -5      
    END      
       
         
    -- start by novice.      
    -- ÀÌÁ¦ Slot ¾È¾´´Ù.. ±×³É Insert ¸¸..      
    INSERT INTO _User VALUES (@UserJID, @NewCharID)      
    -- finish by novice.      
     
     
     -----------------------------------------------------------------------------      
     -- 3-1. Àåºñ ½½·Ô ä¿ì±â      
     -- [Àκ¥Å丮 ½½·Ô 96°³] + [Àåºñ½½·Ô 13°³] <- Àκ¥Å丮 È®Àå ¼ºñ½º ÈÄ 48°³¿¡¼ 96°³·Î Áõ°¡!!!(woos0)
     -----------------------------------------------------------------------------      
     --PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!      
     INSERT INTO _Inventory(CharID, Slot, ItemID)      
      SELECT @NewCharID, cnt, 0      
       FROM _RefDummySlot with( nolock )      
        WHERE cnt < 109      

         
    IF (@@ERROR <> 0)      
    BEGIN      
        -- Àκ¥Å丮 »ý¼º ½ÇÆÐ!      
        ROLLBACK TRANSACTION      
        RETURN -7        
    END      

    --PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!      
         
    -- µðÆúÆ®·Î ¼±ÅÃÇÑ ¾ÆÀÌÅÛÀ» ´Ù½Ã ³Ö¾îÁÖÀÚ...      
    /* ¿ä·± ¼ø¼·Î  Á¤ÀǵǾî ÀÖ´Ù.      
    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      
    -- »ó°©      
    IF (@RefMailID <> 0)      
    BEGIN      
        EXEC @ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID, 1, @RefMailID, @DurMail      
        IF (@ItemID <= 0)      
        BEGIN      
            ROLLBACK TRANSACTION      
            RETURN -8      
        END      
    END      
    -- ¹ÙÁö      
    IF (@RefPantsID <> 0)      
    BEGIN      
        EXEC @ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID, 4, @RefPantsID, @DurPants      
        IF (@ItemID <= 0)      
        BEGIN      
            ROLLBACK TRANSACTION      
            RETURN -9      
        END      
    END      
    -- Boots      
    IF (@RefBootsID <> 0)      
    BEGIN      
        EXEC @ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID, 5, @RefBootsID, @DurBoots      
        IF (@ItemID <= 0)      
        BEGIN      
            ROLLBACK TRANSACTION      
            RETURN -10      
        END      
    END      
    -- Weapon      
    IF (@RefWeaponID <> 0)      
    BEGIN      
        EXEC @ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID, 6, @RefWeaponID, @DurWeapon      
        IF (@ItemID <= 0)      
        BEGIN      
            ROLLBACK TRANSACTION      
            RETURN -11      
        END      
    END      
    -- ¹æÆÐ      
    IF (@RefShield <> 0)      
    BEGIN      
        EXEC @ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID, 7, @RefShield, @DurShield      
        IF (@ItemID <= 0)      
        BEGIN      
            ROLLBACK TRANSACTION      
            RETURN -12      
        END      
    END      
    -- Ȥ½Ã default·Î ¼±ÅÃÇÑ ¹«±â°¡ È°À̶ó¸é È»ì 250°³µéÀÌ È°Åëµµ ÇÔ²² ÁØ´Ù. ÁÒÄ¡?      
    IF (@DefaultArrow <> 0)      
    BEGIN      
        EXEC @ItemID =  _FN_ADD_INITIAL_EQUIP @NewCharID, 7, @DefaultArrow, 250      
        IF (@ItemID <= 0)      
        BEGIN      
            ROLLBACK TRANSACTION      
            RETURN -13      
        END      
    END


     -----------------------------------------------------------------------------      
     -- 3-2. ¾Æ¹ÙŸ Inventory ½½·Ô ä¿ì±â      
     -- [¾Æ¹ÙŸ Àκ¥Å丮 ½½·Ô 5°³]
     -- APPLY_AVATAR_SYSTEMÀÌ Àû¿ëµÇ¸é¼ Ãß°¡µÇ´Â ºÎºÐ
     -----------------------------------------------------------------------------      
     --PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!      
     INSERT INTO _InventoryForAvatar(CharID, Slot, ItemID)      
      SELECT @NewCharID, cnt, 0
       FROM _RefDummySlot with( nolock )      
        WHERE cnt < 5

         
    IF (@@ERROR <> 0)      
    BEGIN      
        -- ¾Æ¹ÙŸ Àκ¥Å丮 »ý¼º ½ÇÆÐ!      
        ROLLBACK TRANSACTION      
        RETURN -14
    END      
    --PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!PATCH WARNING!!!      
         
    -----------------------------------------------------------------------------      
    -- default skill³Ö¾îÁÖ±â      
    -----------------------------------------------------------------------------      
    DECLARE @country tinyINT      
    EXEC @country = _GetObjCountry @RefCharID      
         
    INSERT INTO _CharSkillMastery (CharID, MasteryID, Level)      
    SELECT @NewCharID, MasteryID, 0      
    FROM _RefCharDefault_SkillMastery  with(nolock)    
    WHERE Race = @country or Race = 3      
    IF (@@error <> 0)      
    BEGIN      
        ROLLBACK TRANSACTION      
        RETURN -15      
    END      
    INSERT INTO _CharSkill (CharID,SkillID,Enable)      
    SELECT @NewCharID, SkillID, 1      
    FROM  _RefCharDefault_Skill  with(nolock)    
    WHERE Race = @country or Race = 3      
    IF (@@error <> 0)      
    BEGIN      
        ROLLBACK TRANSACTION      
        RETURN -16      
    END      
    -----------------------------------------------------------------------------      
    -- ±âº» Äù½ºÆ® ³Ö¾îÁÖ±â
    -----------------------------------------------------------------------------      
    INSERT INTO _CharQuest (CharID, QuestID, Status, AchievementCount, StartTime, EndTime, QuestData1, QuestData2)      
    SELECT @NewCharID, ID, 1, 0, getdate(), getdate(), 0, 0      
    FROM _RefQuest
    WHERE CodeName in (SELECT CodeName FROM _RefCharDefault_Quest  with(nolock) WHERE (Race = @country or Race = 3) and RequiredLevel = 1 and Service = 1)
    IF (@@error <> 0)
    BEGIN
        ROLLBACK TRANSACTION      
        RETURN -17      
    END  
    -----------------------------------------------------------------------------      
    -- Static Avatar Initial Record ³Ö±â      
    -----------------------------------------------------------------------------      
    INSERT INTO _StaticAvatar(CharID) values(@NewCharID)      
    IF (@@ERROR <> 0)      
    BEGIN      
        ROLLBACK TRANSACTION      
        RETURN -18      
    END        
         
    -----------------------------------------------------------------------------      
    -- Trijob ä¿ö³Ö±â!!!!!      
    -----------------------------------------------------------------------------      
    INSERT INTO _CharTrijob VALUES (@NewCharID, 0, 1, 0, 0, 0)      
    IF (@@ERROR <> 0)      
    BEGIN      
        -- Àκ¥Å丮 »ý¼º ½ÇÆÐ!      
        ROLLBACK TRANSACTION      
        RETURN -19      
    END        
         
    -----------------------------------------------------------------------------      
    -- CharList¿¡ ID ³Ö¾îÁÖ±â      
    -----------------------------------------------------------------------------      
    INSERT _CharNameList VALUES(@CharName, @NewCharID)      
         
    exec _ADD_ITEM_EXTERN @CharName,'ITEM_ETC_E060118_60EXP_HELP',1,1    
    exec _ADD_ITEM_EXTERN @CharName,'ITEM_ETC_E060118_100EXP_HELP',1,1    
    exec _ADD_ITEM_EXTERN @CharName,'ITEM_ETC_SCROLL_RETURN_NEWBIE_01',20,1    
         
    -- Quick Slot Á¤º¸ ÀúÀå¿ë!!!      
    exec _AddNewClientConfig @NewCharID  -- by novice...... for saving client configurations...      

COMMIT TRANSACTION      
         
RETURN @NewCharID
 
Yukarı Alt