Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz..
Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
iSRO-R Yardım Error when entering a name during character creation.
- Konuyu Başlatan lima009
- Başlangıç tarihi
I'm still getting the same error. I checked ADDNewChar and it's working fine.
USE [SILKROAD_R_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_AddNewChar] Script Date: 29/01/2026 15:04:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--NEW
ALTER PROCEDURE [dbo].[_AddNewChar]
@UserJID 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 @temp INT
-----------------------------------------------------------------------------
-- 1. 선 체크!
-----------------------------------------------------------------------------
SELECT @temp = count(CharID) FROM _User WITH (NOLOCK) WHERE UserJID = @UserJID
IF (@temp >= 8)
BEGIN
-- 너무 많자나
RETURN -2
END
IF (@CharScale > 68) -- 0100 0100 --> 68 이다!
BEGIN
-- 캐릭터 생성 실패! 스케일 값이 이상하다!
RETURN -3
END
EXEC @temp = _IsExistingCharName @CharName
IF (@temp <> 0)
BEGIN
-- 이미 사용중인 이름이라는데?
RETURN -4
END
DECLARE @IsMale TINYINT
SELECT @IsMale = ROCH.CharGender
FROM _RefObjChar AS ROCH WITH (NOLOCK)
INNER JOIN _RefObjCommon AS ROC WITH (NOLOCK) ON ROC.Link = ROCH.ID AND ROC.ID = @RefCharID
IF @@ROWCOUNT = 0 OR @@ERROR <> 0 OR @IsMale IS NULL
BEGIN
RETURN -24
END
DECLARE @NewCharID INT
SET @NewCharID = 0
BEGIN TRANSACTION
-----------------------------------------------------------------------------
-- 2. 캐릭터 추가하기
-----------------------------------------------------------------------------
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, 77,
CONVERT(SMALLDATETIME, '2079-01-06'), 1, 1, 0, 0, 250000, 200,200, 1, 1, 1, 1)
SET @NewCharID = @@IDENTITY
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
-- 캐릭터 생성 실패!
ROLLBACK TRANSACTION
RETURN -5
END
INSERT INTO _User VALUES (@UserJID, @NewCharID)
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
-- 유저 테이블에 추가 실패!
ROLLBACK TRANSACTION
RETURN -6
END
-----------------------------------------------------------------------------
-- 3-1. 장비 슬롯 채우기
-----------------------------------------------------------------------------
-- 디폴트로 선택한 아이템을 다시 넣어주자...
/* 요런 순서로 정의되어 있다.
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
-----------------------------------------------------------------------------
-- 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
-----------------------------------------------------------------------------
-- default Quest 넣어주기
-----------------------------------------------------------------------------
INSERT INTO _CharQuest (CharID, QuestID, Status, AchievementCount, StartTime, EndTime, QuestData1, QuestData2)
SELECT @NewCharID, RQ.ID, 1, 0, getdate(), getdate(), 0, 0
FROM _RefQuest AS RQ WITH (NOLOCK)
JOIN _RefCharDefault_Quest AS RDQ WITH (NOLOCK)
ON RDQ.CodeName = RQ.CodeName AND ((RDQ.Race = @country or RDQ.Race = 3) and RDQ.RequiredLevel = 1 and RDQ.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
-- #ifdef REMOVE_DEFAULT_FRIEND_GROUP_IN_DATABASE
-- 더이상 0번 default 친구그룹은 추가하지 않는다.
-- #else REMOVE_DEFAULT_FRIEND_GROUP_IN_DATABASE
-----------------------------------------------------------------------------
-- 친구그룹 생성 추가
-----------------------------------------------------------------------------
--INSERT _FriendGroup Values (@NewCharID, 0, 'N/A')
--IF (@@ERROR <> 0)
--BEGIN
-- ROLLBACK TRANSACTION
-- RETURN -20 -- 그룹추가 실패!
--END
-- #endif REMOVE_DEFAULT_FRIEND_GROUP_IN_DATABASE
-----------------------------------------------------------------------------
-- TradeConflictJob 채워넣기!!!!!
-----------------------------------------------------------------------------
INSERT INTO _CharTradeConflictJob VALUES (@NewCharID, GetDate(), 1, 0, 0, 0, 0, 0 ,0)
IF (@@ERROR <> 0)
BEGIN
-- 무역과 직업대립 데이터 넣기 실패...!
ROLLBACK TRANSACTION
RETURN -22
END
-----------------------------------------------------------------------------
-- NewTrade 채워넣기!!!!!
-----------------------------------------------------------------------------
INSERT INTO _CharNewTrade VALUES (@NewCharID, 0, 0)
IF (@@ERROR <> 0)
BEGIN
-- 무역과 직업대립 데이터 넣기 실패...!
ROLLBACK TRANSACTION
RETURN -23
END
-----------------------------------------------------------------------------
-- CharList에 ID 넣어주기
-----------------------------------------------------------------------------
INSERT _CharNameList VALUES(@CharName, @NewCharID)
IF (@@ERROR <> 0)
BEGIN
-- 무역과 직업대립 데이터 넣기 실패...!
ROLLBACK TRANSACTION
RETURN -24
END
COMMIT TRANSACTION
-- Quick Slot 초기 데이터
EXEC _AddNewClientConfig @NewCharID
-- 위업 관련 초기 데이터
EXEC _Achievement_AddNewChar @NewCharID
RETURN @NewCharID
Üst üste post gönderildiği için tek mesajda birleştirildi:
USE [SILKROAD_R_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_AddNewChar] Script Date: 29/01/2026 15:04:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--NEW
ALTER PROCEDURE [dbo].[_AddNewChar]
@UserJID 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 @temp INT
-----------------------------------------------------------------------------
-- 1. 선 체크!
-----------------------------------------------------------------------------
SELECT @temp = count(CharID) FROM _User WITH (NOLOCK) WHERE UserJID = @UserJID
IF (@temp >= 8)
BEGIN
-- 너무 많자나
RETURN -2
END
IF (@CharScale > 68) -- 0100 0100 --> 68 이다!
BEGIN
-- 캐릭터 생성 실패! 스케일 값이 이상하다!
RETURN -3
END
EXEC @temp = _IsExistingCharName @CharName
IF (@temp <> 0)
BEGIN
-- 이미 사용중인 이름이라는데?
RETURN -4
END
DECLARE @IsMale TINYINT
SELECT @IsMale = ROCH.CharGender
FROM _RefObjChar AS ROCH WITH (NOLOCK)
INNER JOIN _RefObjCommon AS ROC WITH (NOLOCK) ON ROC.Link = ROCH.ID AND ROC.ID = @RefCharID
IF @@ROWCOUNT = 0 OR @@ERROR <> 0 OR @IsMale IS NULL
BEGIN
RETURN -24
END
DECLARE @NewCharID INT
SET @NewCharID = 0
BEGIN TRANSACTION
-----------------------------------------------------------------------------
-- 2. 캐릭터 추가하기
-----------------------------------------------------------------------------
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, 77,
CONVERT(SMALLDATETIME, '2079-01-06'), 1, 1, 0, 0, 250000, 200,200, 1, 1, 1, 1)
SET @NewCharID = @@IDENTITY
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
-- 캐릭터 생성 실패!
ROLLBACK TRANSACTION
RETURN -5
END
INSERT INTO _User VALUES (@UserJID, @NewCharID)
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
-- 유저 테이블에 추가 실패!
ROLLBACK TRANSACTION
RETURN -6
END
-----------------------------------------------------------------------------
-- 3-1. 장비 슬롯 채우기
-----------------------------------------------------------------------------
-- 디폴트로 선택한 아이템을 다시 넣어주자...
/* 요런 순서로 정의되어 있다.
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
-----------------------------------------------------------------------------
-- 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
-----------------------------------------------------------------------------
-- default Quest 넣어주기
-----------------------------------------------------------------------------
INSERT INTO _CharQuest (CharID, QuestID, Status, AchievementCount, StartTime, EndTime, QuestData1, QuestData2)
SELECT @NewCharID, RQ.ID, 1, 0, getdate(), getdate(), 0, 0
FROM _RefQuest AS RQ WITH (NOLOCK)
JOIN _RefCharDefault_Quest AS RDQ WITH (NOLOCK)
ON RDQ.CodeName = RQ.CodeName AND ((RDQ.Race = @country or RDQ.Race = 3) and RDQ.RequiredLevel = 1 and RDQ.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
-- #ifdef REMOVE_DEFAULT_FRIEND_GROUP_IN_DATABASE
-- 더이상 0번 default 친구그룹은 추가하지 않는다.
-- #else REMOVE_DEFAULT_FRIEND_GROUP_IN_DATABASE
-----------------------------------------------------------------------------
-- 친구그룹 생성 추가
-----------------------------------------------------------------------------
--INSERT _FriendGroup Values (@NewCharID, 0, 'N/A')
--IF (@@ERROR <> 0)
--BEGIN
-- ROLLBACK TRANSACTION
-- RETURN -20 -- 그룹추가 실패!
--END
-- #endif REMOVE_DEFAULT_FRIEND_GROUP_IN_DATABASE
-----------------------------------------------------------------------------
-- TradeConflictJob 채워넣기!!!!!
-----------------------------------------------------------------------------
INSERT INTO _CharTradeConflictJob VALUES (@NewCharID, GetDate(), 1, 0, 0, 0, 0, 0 ,0)
IF (@@ERROR <> 0)
BEGIN
-- 무역과 직업대립 데이터 넣기 실패...!
ROLLBACK TRANSACTION
RETURN -22
END
-----------------------------------------------------------------------------
-- NewTrade 채워넣기!!!!!
-----------------------------------------------------------------------------
INSERT INTO _CharNewTrade VALUES (@NewCharID, 0, 0)
IF (@@ERROR <> 0)
BEGIN
-- 무역과 직업대립 데이터 넣기 실패...!
ROLLBACK TRANSACTION
RETURN -23
END
-----------------------------------------------------------------------------
-- CharList에 ID 넣어주기
-----------------------------------------------------------------------------
INSERT _CharNameList VALUES(@CharName, @NewCharID)
IF (@@ERROR <> 0)
BEGIN
-- 무역과 직업대립 데이터 넣기 실패...!
ROLLBACK TRANSACTION
RETURN -24
END
COMMIT TRANSACTION
-- Quick Slot 초기 데이터
EXEC _AddNewClientConfig @NewCharID
-- 위업 관련 초기 데이터
EXEC _Achievement_AddNewChar @NewCharID
RETURN @NewCharID
Oyla
0
Bu konuyu görüntüleyen kullanıcılar
Toplam: 2 (Kullanıcı: 0, ziyaretçi: 2)
Benzer konular
- Cevaplar
- 0
- Görüntüleme
- 260
- Cevaplar
- 14
- Görüntüleme
- 4K
- Soru
vSRO Çözüldü
GameServer Runtime Error (VSRO 1.188) !!!
- Cevaplar
- 5
- Görüntüleme
- 356
iSRO-R Çözüldü
How can I fix error C7?
- Cevaplar
- 2
- Görüntüleme
- 139
- Cevaplar
- 0
- Görüntüleme
- 223
