Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Nova 3205 server file + client

Experienced Elementalist
Joined
Apr 25, 2014
Messages
229
Reaction score
7
how come I cannot connect to my ODBC???

----

solved...port have to change to1433
 
Last edited:
Experienced Elementalist
Joined
Apr 25, 2014
Messages
229
Reaction score
7
Is this file work for cosair version, too?

Hey guys,

I played around with the pearl shop, and updated the cashproduct table, activating pretty much all items (be prepared for a full, full pearl shop)

the file goes in ..\NovaServer\GameCommonDataUnpack\DataSheet\LocalDataSheet

Make a backup of #NA#DataSheet_CashProduct.xlsx just in case before overwriting. Hope you enjoy!

Link:
 
Experienced Elementalist
Joined
Apr 25, 2014
Messages
229
Reaction score
7
It should, but you will miss all the new stuff added after the nova version.
nope,,its not working in cosair version....

after I replaced the file, the login server flash and close

 
Newbie Spellweaver
Joined
Sep 24, 2021
Messages
10
Reaction score
1
ther is commands line to run the server in less memory like 8go ? for single Player
 
Junior Spellweaver
Joined
May 27, 2022
Messages
118
Reaction score
51
ther is commands line to run the server in less memory like 8go ? for single Player
no. 8GB is fine for the client but the server far more. Even for a single player.

You might get away with 64GB and a really large page file on a fast M.2 SSD drive for Nova but forget about running this commercial level server on a toy computer (I consider anything with less than 16gb a toy). You need serious computer hardware to run it. My corsair setup runs on 256GB memory.
 
Newbie Spellweaver
Joined
Dec 26, 2011
Messages
7
Reaction score
0
Is it possible to run this in a light mode with less resources. I mean from a dev point of view this should be possible. WTF is causing this RAM need. Is it monolith, can we turn off some parts?
 
Junior Spellweaver
Joined
Sep 5, 2022
Messages
117
Reaction score
32
Is it possible to run this in a light mode with less resources. I mean from a dev point of view this should be possible. WTF is causing this RAM need. Is it monolith, can we turn off some parts?

It's pointless. There is nothing to disable in the bdo except npc and mobs, and this must be done correctly and for a long time.
 
Junior Spellweaver
Joined
Sep 5, 2022
Messages
117
Reaction score
32
ep 112Gb enough...

One empty channel takes up 115 GB. To cut something from the server, you need to edit many files that are not related to the DataSheet.
You may even have to inject CrimsonDesertServer_ReleaseOp_x64_Corsair_Ida.exe to ignore errors.
 
Initiate Mage
Joined
Dec 6, 2022
Messages
1
Reaction score
0
Please DM me the links and I can rehost in a way they don't get taken down
 
Joined
Jan 13, 2011
Messages
774
Reaction score
177
Me change system to new Windows Server 2022 + MS SQL Server 2019CU18.
And when starting Field Server catch error:
Code:
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoSqlHappenOdbcError","ErrorString":"SQL실행중 ODBC오류가 발생했습니다.","Log":"Thd(8664):DB(d:/bdo_server/GameServerData/field.dsn:CrimsonDesert)(42000:[Microsoft][ODBC SQL Server Driver][SQL Server]Could not find stored procedure 'PaGamePublic.uspCleanupFieldRepository'.)=>sql.clearnupFieldRepository()=>(gm::GameModulePattern::Reload/D:\Global_Alpha\code\CrimsonDesert\src\GameModule\GameModulePattern.cpp/1843)=>Last(//-1)" }
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"5","ErrorNo":"eErrNoDbInternalError","ErrorString":"처리 중 내부 오류가 발생했습니다.","Log":"sql.clearnupFieldRepository(), sqlRv(1)" }
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoCantReload","ErrorString":"Reload 할 수 없습니다.","Log":"ErrNo(1815705047)" }
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoTimerDaemonFailInitializeFunction","ErrorString":"Timer데몬이 초기화 함수 호출에 실패했다.","Log":"ErrNo(1370852844)" }
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoTimerDaemonCantStart","ErrorString":"Timer데몬을 시작할 수 없습니다.","Log":"ErrNo(2051413970)" }

>>Could not find stored procedure 'PaGamePublic.uspCleanupFieldRepository'

Does anyone know how fix it?



If me create empty procedure 'PaGamePublic.uspCleanupFieldRepository' with returns @rv = 0 but still:
Code:
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoSqlHappenOdbcError","ErrorString":"SQL실행중 ODBC오류가 발생했습니다.","Log":"Thd(7128):DB(d:/bdo_server/GameServerData/field.dsn:CrimsonDesert)(42000:[Microsoft][ODBC SQL Server Driver][SQL Server]Could not find stored procedure 'PaGamePublic.uspCleanupFieldRepository'.)=>sql.clearnupFieldRepository()=>(gm::GameModulePattern::Reload/D:\Global_Alpha\code\CrimsonDesert\src\GameModule\GameModulePattern.cpp/1843)=>Last(//-1)" }
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"5","ErrorNo":"eErrNoDbInternalError","ErrorString":"처리 중 내부 오류가 발생했습니다.","Log":"sql.clearnupFieldRepository(), sqlRv(1)" }
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoCantReload","ErrorString":"Reload 할 수 없습니다.","Log":"ErrNo(1815705047)" }
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoTimerDaemonFailInitializeFunction","ErrorString":"Timer데몬이 초기화 함수 호출에 실패했다.","Log":"ErrNo(1370852844)" }
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoTimerDaemonCantStart","ErrorString":"Timer데몬을 시작할 수 없습니다.","Log":"ErrNo(2051413970)" }
 
Last edited:
Joined
Sep 23, 2012
Messages
470
Reaction score
178
Me change system to new Windows Server 2022 + MS SQL Server 2019CU18.
And when starting Field Server catch error:
Code:
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoSqlHappenOdbcError","ErrorString":"SQL실행중 ODBC오류가 발생했습니다.","Log":"Thd(8664):DB(d:/bdo_server/GameServerData/field.dsn:CrimsonDesert)(42000:[Microsoft][ODBC SQL Server Driver][SQL Server]Could not find stored procedure 'PaGamePublic.uspCleanupFieldRepository'.)=>sql.clearnupFieldRepository()=>(gm::GameModulePattern::Reload/D:\Global_Alpha\code\CrimsonDesert\src\GameModule\GameModulePattern.cpp/1843)=>Last(//-1)" }
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"5","ErrorNo":"eErrNoDbInternalError","ErrorString":"처리 중 내부 오류가 발생했습니다.","Log":"sql.clearnupFieldRepository(), sqlRv(1)" }
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoCantReload","ErrorString":"Reload 할 수 없습니다.","Log":"ErrNo(1815705047)" }
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoTimerDaemonFailInitializeFunction","ErrorString":"Timer데몬이 초기화 함수 호출에 실패했다.","Log":"ErrNo(1370852844)" }
{"Date":"2022-12-16 16:02:59","ThreadId":"0x21D8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoTimerDaemonCantStart","ErrorString":"Timer데몬을 시작할 수 없습니다.","Log":"ErrNo(2051413970)" }

>>Could not find stored procedure 'PaGamePublic.uspCleanupFieldRepository'

Does anyone know how fix it?



If me create empty procedure 'PaGamePublic.uspCleanupFieldRepository' with returns @rv = 0 but still:
Code:
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoSqlHappenOdbcError","ErrorString":"SQL실행중 ODBC오류가 발생했습니다.","Log":"Thd(7128):DB(d:/bdo_server/GameServerData/field.dsn:CrimsonDesert)(42000:[Microsoft][ODBC SQL Server Driver][SQL Server]Could not find stored procedure 'PaGamePublic.uspCleanupFieldRepository'.)=>sql.clearnupFieldRepository()=>(gm::GameModulePattern::Reload/D:\Global_Alpha\code\CrimsonDesert\src\GameModule\GameModulePattern.cpp/1843)=>Last(//-1)" }
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"5","ErrorNo":"eErrNoDbInternalError","ErrorString":"처리 중 내부 오류가 발생했습니다.","Log":"sql.clearnupFieldRepository(), sqlRv(1)" }
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoCantReload","ErrorString":"Reload 할 수 없습니다.","Log":"ErrNo(1815705047)" }
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoTimerDaemonFailInitializeFunction","ErrorString":"Timer데몬이 초기화 함수 호출에 실패했다.","Log":"ErrNo(1370852844)" }
{"Date":"2022-12-16 20:27:43","ThreadId":"0x1BD8","LogType":"00","LogLevel":"6","ErrorNo":"eErrNoTimerDaemonCantStart","ErrorString":"Timer데몬을 시작할 수 없습니다.","Log":"ErrNo(2051413970)" }

try this

Code:
USE [GAME]
GO
/****** Object:  StoredProcedure [PaGamePublic].[uspCleanupFieldRepository]    Script Date: 16.12.2022 21:27:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [PaGamePublic].[uspCleanupFieldRepository]
	 [USER=1333386369]Explo[/USER]rationType		BIGINT						-- 유지보수를 위해서 C++에서 정의한 값을 사용한다.(탐험)
	 [USER=874269]Int[/USER]imacyType			BIGINT						-- 유지보수를 위해서 C++에서 정의한 값을 사용한다.(친밀도)
	,@fromPcWorkingType		TINYINT						-- 작업종류(PcWorkingType와 연결됨)
	 [USER=357510]top[/USER]cWorkingType		TINYINT						-- 작업종류(PcWorkingType와 연결됨)
	,@removableWorkingType0	TINYINT						-- 이미 존재하는 녀석을 삭제해야 하는 경우 삭제될 녀석의 PcWorkingType
	,@removableWorkingType1	TINYINT						-- 이미 존재하는 녀석을 삭제해야 하는 경우 삭제될 녀석의 PcWorkingType
	,@currentTime			DATETIME					-- 서버 시간으로 체크한다.
	 [USER=2000318537]Serv[/USER]antWhereType		TINYINT						-- 탈것 소유자 타입 ( only 0 = 유저 )
	 [USER=237450]GuiL[/USER]dItemKeyString	VARCHAR(MAX)				-- 길드 아이템키 목록
	 [USER=237450]GuiL[/USER]dItemKeyCount		INT							-- 길드 아이템키 갯수
	,@campingWhereType		TINYINT						-- 캠프 servantWhereType (only 4 = 캠프)
	 [USER=333975]Sym[/USER]No					NVARCHAR(50)		OUTPUT	-- 실패한 경우에만 의미있음
AS
/*!
 *  \brief		필드저장소 정리
 *	\remarks	1.(성능을 위해서) 가능하면 게임서비스중에 바로 삭제를 하지말고, 점검시간에 삭제하도록 하자.
 *				2.삭제가 안된다고 서비스에 문제가 있는 것은 아니므로 transaction처리를 하지 않는다.
 *				  => 또한 성능을 우선시 한다.
 *				3.무결성을 위해서 순서가 중요하다. 함부로 변경하지 말아라!
 *				4.서비스중에 호출되는 것이 아니다. 필드서버 기동시나, 점검시에 호출된다.
 *				5.PC의 작업상태가 @fromPcWorkingType 인 녀석을 [USER=357510]top[/USER]cWorkingType 으로 변경한다.
 *  \author		지희환
 */
BEGIN
	SET NOCOUNT ON										-- Count-set결과를생성하지말아라.
	SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
	SET LOCK_TIMEOUT 180000								-- 함부로변경금지, 변경필요시DBA와협의.(3분)
	SET XACT_ABORT ON
	
	DECLARE @rv		INT = 0								-- 0:성공, 음수:오류코드, 양수:사용하면안됨(ODBC오류로처리함)

	/**********************************************************************************************
	** 작업시작(이하에만기술)
	**********************************************************************************************/
	--BEGIN TRAN uspCleanupFieldRepository_Tx1	-- 트랜잭션 이름과 순서를 명시한다

	DECLARE	@eItemWhereTypeInventory			TINYINT	= PaGameEnum.eItemWhereTypeInventory()
	DECLARE	@eItemWhereTypeEquip				TINYINT = PaGameEnum.eItemWhereTypeEquip()
	DECLARE	@eItemWhereTypeDrop					TINYINT = PaGameEnum.eItemWhereTypeDrop()
	DECLARE	@eItemWhereTypeServantInventory		TINYINT = PaGameEnum.eItemWhereTypeServantInventory()
	DECLARE	@rvTmp								INT		= 0;

	-- Non Player가 소유한 아이템은 드랍/삭제등이 된 아이템이므로 정리함.
	DELETE FROM PaGamePrivate.TblItemRepository WHERE (_itemWhereType = @eItemWhereTypeDrop) AND (_isValid <> 0)

	-- 공용대포에 실린 포탄 삭제
	DELETE FROM PaGamePrivate.TblItemRepository WHERE (_itemWhereType = @eItemWhereTypeServantInventory) AND (_ownerNo = 0) AND (_isValid <> 0)

	-- 삭제된 일꾼에게 할당된 작업삭제
	DELETE TWorkerWorking 
	   FROM PaGamePrivate.TblWorkerWorking AS TWorkerWorking 
	   WHERE TWorkerWorking._workerNo NOT IN( SELECT _workerNo FROM PaGamePrivate.TblWorker WHERE _workerNo = TWorkerWorking._workerNo AND _deleteDate IS NULL )


	-- 플레이중으로 설정된 녀석을 logout된 것으로 변경시켜야 한다.
	UPDATE PaGamePrivate.TblPcWorking
		SET	_pcWorkingType	= [USER=357510]top[/USER]cWorkingType
		WHERE (@fromPcWorkingType = _pcWorkingType)


	-- 삭제일자가 지난 캐릭터 삭제. 단, 관련 모든 data삭제해야함.
	DECLARE	CursorDeletedCharacter CURSOR LOCAL FAST_FORWARD
		FOR SELECT _userNo, _characterNo FROM PaGamePrivate.TblCharacterInformation WHERE (_deletedDate IS NOT NULL) AND (_deletedDate <= @currentTime) AND (_isValid <> 0)
	OPEN CursorDeletedCharacter
	IF(0 <> @@CURSOR_ROWS)
	 BEGIN
		DECLARE [USER=1335]user[/USER]No			BIGINT
		DECLARE [USER=1333352388]Character[/USER]No	BIGINT
		FETCH NEXT FROM CursorDeletedCharacter INTO [USER=1335]user[/USER]No, [USER=1333352388]Character[/USER]No
		WHILE(0 = @@FETCH_STATUS)
		 BEGIN
			EXEC @rvTmp = PaGamePublic.uspDeleteCharacter__XXX	 [USER=1333352388]Character[/USER]No
																,@removableWorkingType0
																,@removableWorkingType1
																,FALSE
																 [USER=2000318537]Serv[/USER]antWhereType
																 [USER=333975]Sym[/USER]No					OUTPUT
			
			FETCH NEXT FROM CursorDeletedCharacter INTO [USER=1335]user[/USER]No, [USER=1333352388]Character[/USER]No
		 END
	 END
	CLOSE CursorDeletedCharacter
	DEALLOCATE CursorDeletedCharacter

	-- 길드 아이템키 목록 갱신
	DELETE FROM PaOperationPublic.Dim_GuildItemKey	-- 초기화

	INSERT INTO PaOperationPublic.Dim_GuildItemKey ( _itemKey )	-- 목록 갱신
	SELECT DISTINCT(itemKey) FROM PaGamePublic.ufnParseItemListByExpelFromGuild [USER=237450]GuiL[/USER]dItemKeyString,',')	

	IF  [USER=237450]GuiL[/USER]dItemKeyCount <> @@ROWCOUNT)
	 BEGIN
		SET @rv		= -1
		SET [USER=333975]Sym[/USER]No	=	N'eErrNoInsertFailGuildItemKey'
	 END

	DELETE WW
		FROM PaGamePrivate.TblWorkerWorking WW
			INNER JOIN PaGamePrivate.TblWorker WK
				ON WW._workerNo = WK._workerNo
			LEFT OUTER JOIN PaGamePrivate.TblGuildMember GM
				ON WK._ownerUserNo = GM._userNo
			LEFT OUTER JOIN PaGamePrivate.TblHouseholdTent HT
				ON WW._toVariable = HT._householdNo
		WHERE _workingType = 4 AND 
			((GM._guildNo IS NULL) OR (GM._guildNo <> HT._buildGuildNo) OR (HT._householdNo IS NULL) OR (HT._buildDestroyedDate IS NOT NULL))

	-- 캠프 일괄적으로 해체처리를 해줍니다.
	UPDATE PaGamePrivate.TblServantRepository
		SET _stateType				= 0
			,_ownerCharacterNo		= NULL
			,_lastServerNo			= NULL
		WHERE (_whereType = @campingWhereType) AND (_stateType	= 1)

	/**********************************************************************************************
	** 작업종료(이상에만기술)
	**********************************************************************************************/

LABEL_END:
	/*
	--IF(0 = @rv)
	-- BEGIN
	--	COMMIT TRAN
	-- END
	--ELSE
	-- BEGIN
	--	ROLLBACK TRAN
	-- END
	*/
	
	RETURN(@rv)
END
 
Joined
Jan 13, 2011
Messages
774
Reaction score
177
Big thanks, but forum parser - deletes some symbols

but MS SQL says:
Code:
Msg 102, Level 15, State 1, Procedure uspCleanupFieldRepository, Line 89 [Batch Start Line 7]
Incorrect syntax near     [USER=237450]GuiL[/USER]dItemKeyString'.
Msg 102, Level 15, State 1, Procedure uspCleanupFieldRepository, Line 91 [Batch Start Line 7]
Incorrect syntax near ')'.

Plz attach as .txt-file
 
Last edited:
Joined
Sep 23, 2012
Messages
470
Reaction score
178
Big thanks, but forum parser - deletes some symbols

but MS SQL says:
Code:
Msg 102, Level 15, State 1, Procedure uspCleanupFieldRepository, Line 89 [Batch Start Line 7]
Incorrect syntax near     [USER=237450]GuiL[/USER]dItemKeyString'.
Msg 102, Level 15, State 1, Procedure uspCleanupFieldRepository, Line 91 [Batch Start Line 7]
Incorrect syntax near ')'.

Plz attach as .txt-file

try this
 
Joined
Jan 13, 2011
Messages
774
Reaction score
177
Yah it's fine and MS SQL says:
The module 'uspCleanupFieldRepository' depends on the missing object 'PaGamePublic.uspDeleteCharacter__XXX'. The module will still be created; however, it cannot run successfully until the object exists
 
Back
Top