Add database setup (LosaGame, LosaGame_log, LosaLogData, Backup, backup/restore) and the tested one-PC server config

This commit is contained in:
LosaDev committed 2026-11-07 20:41:23 +07:00
1 parent 224e4bc926
commit 16966077f1
373 files changed
+2411724 -448

No files matched your search

+5
View File
@@ -202,3 +202,8 @@ Verified 2026-11-07: `ls_billingsvr` Release|Win32 builds with 0 errors with no
The XTrap code is only compiled in Shipping configurations with `XTRAP` defined. Those configurations no longer link without the vendor SDK; build Debug or Release.
Script: `vendor-strip.js` (latin1 byte-safe, CRLF kept).
## Database setup and one-PC server config (added 2026-11-07)
- New `database\`: creates `LosaGame`, `LosaGame_log`, `LosaLogData` and an empty `Backup` (`game_region_backup_*` create their own tables in it), the SQL login `lstggame`, `LosaGame_log` from the 2021 release (no 2014 script exists), the `src\sql\20120504` scripts as UTF-8, the stub procedures, parameter fixes, 2021 features/core procedures and first tournament of the tested local setup, test accounts, `backup.sql` / `restore.sql` with `.bat` wrappers, and `setup-db.bat`. The encode key is asked for instead of a fixed test value. Tested on SQL Server 2022 Express: only the known messages of the 2012 scripts (22 old procedures, one old view); backup + restore OK.
- `server-config\` is now the tested one-PC set (`PW=CHANGE_ME`, `192.168.1.10` = your LAN address). The previous content (a modified private server's set) moved to `server-config\_original-release\`.
+27
View File
@@ -0,0 +1,27 @@
-- LosaDev 2014: creates LosaGame, LosaGame_log, LosaLogData and Backup (empty). Run first.
-- Backup stays empty: procedures such as game_practice_rank_reward and game_region_backup_point create
-- their own tables in it (SELECT ... INTO [Backup].dbo.<name>), so the game login must own it.
-- sqlcmd -S <server> -E -f 65001 -v DB_COLLATE=DEFAULT -i 00_create_databases.sql
-- DB_COLLATE=DEFAULT = the instance's collation (recommended: install SQL Server with
-- Korean_Wansung_CI_AS so Korean text in varchar columns survives). Otherwise e.g. Korean_Wansung_CI_AS.
USE [master]
GO
DECLARE @c nvarchar(128) = N'$(DB_COLLATE)', @sql nvarchar(max), @db sysname
IF @c = N'DEFAULT' SET @c = N''
DECLARE d CURSOR LOCAL FAST_FORWARD FOR SELECT v FROM (VALUES (N'LosaGame'), (N'LosaGame_log'), (N'LosaLogData'), (N'Backup')) t(v)
OPEN d
FETCH NEXT FROM d INTO @db
WHILE @@FETCH_STATUS = 0
BEGIN
IF DB_ID(@db) IS NULL
BEGIN
SET @sql = N'CREATE DATABASE ' + QUOTENAME(@db) + CASE WHEN LEN(@c) > 0 THEN N' COLLATE ' + @c ELSE N'' END
EXEC (@sql)
PRINT 'created ' + @db
END
ELSE PRINT @db + ' already exists (kept)'
FETCH NEXT FROM d INTO @db
END
CLOSE d
DEALLOCATE d
GO
+16
View File
@@ -0,0 +1,16 @@
-- LosaDev 2014: SQL logins the DB agents use (ID= in each ls_dbagent.ini). The password comes from
-- the DB_PASSWORD variable (setup-db.bat asks for it); put the same value in PW= of the ls_dbagent.ini files.
USE [master]
GO
IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = N'lstggame')
CREATE LOGIN [lstggame] WITH PASSWORD = N'$(DB_PASSWORD)', CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF, DEFAULT_DATABASE = [master]
ELSE
ALTER LOGIN [lstggame] WITH PASSWORD = N'$(DB_PASSWORD)'
GO
IF NOT EXISTS (SELECT 1 FROM sys.server_principals WHERE name = N'lstgweb')
CREATE LOGIN [lstgweb] WITH PASSWORD = N'$(DB_PASSWORD)', CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF, DEFAULT_DATABASE = [master]
ELSE
ALTER LOGIN [lstgweb] WITH PASSWORD = N'$(DB_PASSWORD)'
GO
ALTER LOGIN [lstgweb] DISABLE
GO
+597
View File
@@ -0,0 +1,597 @@
-- LosaDev 2014: LosaGame_log from the 2021 release (the 2014 release has no script for it; its procedures
-- write log_cash, log_agree, log_play_exec and other tables of this database). CREATE DATABASE block taken out.
USE [master]
GO
/****** Object: Database [LosaGame_log] Script Date: 5/4/2025 8:44:49 PM ******/
-- (LosaDev) CREATE DATABASE [LosaGame_log] is done by 00_create_databases.sql
GO
ALTER DATABASE [LosaGame_log] SET COMPATIBILITY_LEVEL = 160
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [LosaGame_log].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [LosaGame_log] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [LosaGame_log] SET ANSI_NULLS OFF
GO
ALTER DATABASE [LosaGame_log] SET ANSI_PADDING OFF
GO
ALTER DATABASE [LosaGame_log] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [LosaGame_log] SET ARITHABORT OFF
GO
ALTER DATABASE [LosaGame_log] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [LosaGame_log] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [LosaGame_log] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [LosaGame_log] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [LosaGame_log] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [LosaGame_log] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [LosaGame_log] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [LosaGame_log] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [LosaGame_log] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [LosaGame_log] SET DISABLE_BROKER
GO
ALTER DATABASE [LosaGame_log] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [LosaGame_log] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [LosaGame_log] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [LosaGame_log] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [LosaGame_log] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [LosaGame_log] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [LosaGame_log] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [LosaGame_log] SET RECOVERY SIMPLE
GO
ALTER DATABASE [LosaGame_log] SET MULTI_USER
GO
ALTER DATABASE [LosaGame_log] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [LosaGame_log] SET DB_CHAINING OFF
GO
ALTER DATABASE [LosaGame_log] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF )
GO
ALTER DATABASE [LosaGame_log] SET TARGET_RECOVERY_TIME = 60 SECONDS
GO
ALTER DATABASE [LosaGame_log] SET DELAYED_DURABILITY = DISABLED
GO
ALTER DATABASE [LosaGame_log] SET ACCELERATED_DATABASE_RECOVERY = OFF
GO
ALTER DATABASE [LosaGame_log] SET QUERY_STORE = ON
GO
ALTER DATABASE [LosaGame_log] SET QUERY_STORE (OPERATION_MODE = READ_WRITE, CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 30), DATA_FLUSH_INTERVAL_SECONDS = 900, INTERVAL_LENGTH_MINUTES = 60, MAX_STORAGE_SIZE_MB = 1000, QUERY_CAPTURE_MODE = AUTO, SIZE_BASED_CLEANUP_MODE = AUTO, MAX_PLANS_PER_QUERY = 200, WAIT_STATS_CAPTURE_MODE = ON)
GO
USE [LosaGame_log]
GO
/****** Object: User [lstggame] Script Date: 5/4/2025 8:44:49 PM ******/
CREATE USER [lstggame] FOR LOGIN [lstggame] WITH DEFAULT_SCHEMA=[dbo]
GO
/****** Object: Table [dbo].[log_cash] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_cash](
[idx] [int] IDENTITY(1,1) NOT NULL,
[accountIDX] [int] NOT NULL,
[userIP] [varchar](16) NOT NULL,
[DBID] [varchar](16) NOT NULL,
[applyType] [char](2) NOT NULL,
[amount] [int] NOT NULL,
[note] [varchar](500) NOT NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_class_buytime] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_class_buytime](
[idx] [int] IDENTITY(1,1) NOT NULL,
[classType] [int] NOT NULL,
[buyTime] [bigint] NOT NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_class_rental_history] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_class_rental_history](
[idx] [int] IDENTITY(1,1) NOT NULL,
[accountIDX] [int] NOT NULL,
[friendIDX] [int] NOT NULL,
[classType] [int] NOT NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_data_clover] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_data_clover](
[idx] [int] IDENTITY(1,1) NOT NULL,
[accountIDX] [int] NOT NULL,
[friendIDX] [int] NOT NULL,
[eventType] [smallint] NOT NULL,
[CloverCount] [int] NOT NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Index [index] Script Date: 5/4/2025 8:44:49 PM ******/
CREATE CLUSTERED INDEX [index] ON [dbo].[log_data_clover]
(
[idx] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_event_marble] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_event_marble](
[idx] [int] IDENTITY(1,1) NOT NULL,
[accountidx] [int] NOT NULL,
[userID] [varchar](20) NOT NULL,
[cpType] [int] NOT NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_event_openbeta_coin] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_event_openbeta_coin](
[idx] [int] IDENTITY(1,1) NOT NULL,
[accountIDX] [int] NOT NULL,
[coin] [int] NOT NULL,
[flag] [int] NOT NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_guild_mark] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_guild_mark](
[idx] [int] IDENTITY(1,1) NOT NULL,
[guildIDX] [int] NOT NULL,
[accountIDX] [int] NOT NULL,
[havepeso] [bigint] NOT NULL,
[markprice] [int] NOT NULL,
[nowmark] [int] NOT NULL,
[changemark] [int] NOT NULL,
[flag] [int] NOT NULL,
[userIP] [varchar](15) NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_league_cheer] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_league_cheer](
[idx] [int] IDENTITY(1,1) NOT NULL,
[cheerIDX] [int] NOT NULL,
[startDate] [int] NOT NULL,
[accountIDX] [int] NOT NULL,
[leagueIDX] [int] NOT NULL,
[teamIDX] [int] NOT NULL,
[regDate] [datetime] NOT NULL,
[insertDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_league_info_user] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_league_info_user](
[idx] [int] IDENTITY(1,1) NOT NULL,
[infoIDX] [int] NULL,
[leagueIDX] [int] NULL,
[leagueName] [nvarchar](20) NULL,
[maxRound] [smallint] NULL,
[bannerA] [int] NULL,
[bannerB] [int] NULL,
[modeType] [int] NULL,
[maxcount] [tinyint] NULL,
[autoType] [tinyint] NULL,
[announce] [nvarchar](512) NULL,
[recruitDate] [int] NULL,
[waitDate] [int] NULL,
[regDate] [datetime] NULL,
[insertDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_league_list] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_league_list](
[idx] [int] IDENTITY(1,1) NOT NULL,
[leagueIDX] [int] NULL,
[accountIDX] [int] NULL,
[startDate] [int] NULL,
[endDate] [int] NULL,
[leagueType] [tinyint] NULL,
[leagueState] [tinyint] NULL,
[regDate] [datetime] NULL,
[insertDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_league_list_user] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_league_list_user](
[idx] [int] IDENTITY(1,1) NOT NULL,
[leagueIDX] [int] NULL,
[accountIDX] [int] NULL,
[startDate] [int] NULL,
[endDate] [int] NULL,
[leagueType] [tinyint] NULL,
[leagueState] [tinyint] NULL,
[regDate] [datetime] NULL,
[insertDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_league_round_user] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_league_round_user](
[idx] [int] IDENTITY(1,1) NOT NULL,
[roundIDX] [int] NULL,
[infoIDX] [int] NULL,
[roundType1_playDate] [int] NULL,
[roundType1_presentCode1] [int] NULL,
[roundType1_presentCode2] [int] NULL,
[roundType1_presentCode3] [int] NULL,
[roundType1_presentCode4] [int] NULL,
[roundType2_playDate] [int] NULL,
[roundType2_presentCode1] [int] NULL,
[roundType2_presentCode2] [int] NULL,
[roundType2_presentCode3] [int] NULL,
[roundType2_presentCode4] [int] NULL,
[roundType3_playDate] [int] NULL,
[roundType3_presentCode1] [int] NULL,
[roundType3_presentCode2] [int] NULL,
[roundType3_presentCode3] [int] NULL,
[roundType3_presentCode4] [int] NULL,
[roundType4_playDate] [int] NULL,
[roundType4_presentCode1] [int] NULL,
[roundType4_presentCode2] [int] NULL,
[roundType4_presentCode3] [int] NULL,
[roundType4_presentCode4] [int] NULL,
[roundType5_playDate] [int] NULL,
[roundType5_presentCode1] [int] NULL,
[roundType5_presentCode2] [int] NULL,
[roundType5_presentCode3] [int] NULL,
[roundType5_presentCode4] [int] NULL,
[roundType6_playDate] [int] NULL,
[roundType6_presentCode1] [int] NULL,
[roundType6_presentCode2] [int] NULL,
[roundType6_presentCode3] [int] NULL,
[roundType6_presentCode4] [int] NULL,
[roundType7_playDate] [int] NULL,
[roundType7_presentCode1] [int] NULL,
[roundType7_presentCode2] [int] NULL,
[roundType7_presentCode3] [int] NULL,
[roundType7_presentCode4] [int] NULL,
[roundType8_playDate] [int] NULL,
[roundType8_presentCode1] [int] NULL,
[roundType8_presentCode2] [int] NULL,
[roundType8_presentCode3] [int] NULL,
[roundType8_presentCode4] [int] NULL,
[roundType9_playDate] [int] NULL,
[roundType9_presentCode1] [int] NULL,
[roundType9_presentCode2] [int] NULL,
[roundType9_presentCode3] [int] NULL,
[roundType9_presentCode4] [int] NULL,
[roundType10_playDate] [int] NULL,
[roundType10_presentCode1] [int] NULL,
[roundType10_presentCode2] [int] NULL,
[roundType10_presentCode3] [int] NULL,
[roundType10_presentCode4] [int] NULL,
[roundType11_playDate] [int] NULL,
[roundType11_presentCode1] [int] NULL,
[roundType11_presentCode2] [int] NULL,
[roundType11_presentCode3] [int] NULL,
[roundType11_presentCode4] [int] NULL,
[regDate] [datetime] NULL,
[insertDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_league_team] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_league_team](
[idx] [int] IDENTITY(1,1) NOT NULL,
[teamIDX] [int] NULL,
[leagueIDX] [int] NULL,
[startDate] [int] NULL,
[teamName] [nvarchar](20) NULL,
[leaderIDX] [int] NULL,
[leagueStartPosition] [smallint] NULL,
[leaguePosition] [smallint] NULL,
[maxcount] [tinyint] NULL,
[cheerPoint] [int] NULL,
[currentRound] [tinyint] NULL,
[factionPoint] [int] NULL,
[factionType] [tinyint] NULL,
[regDate] [datetime] NULL,
[insertDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_league_team_member] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_league_team_member](
[idx] [int] IDENTITY(1,1) NOT NULL,
[teamMemberIDX] [int] NULL,
[startDate] [int] NULL,
[accountIDX] [int] NULL,
[leagueIDX] [int] NULL,
[teamIDX] [int] NULL,
[joinType] [tinyint] NULL,
[regDate] [datetime] NULL,
[insertDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_league_team_member_user] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_league_team_member_user](
[idx] [int] IDENTITY(1,1) NOT NULL,
[teamMemberIDX] [int] NOT NULL,
[startDate] [int] NOT NULL,
[accountIDX] [int] NOT NULL,
[leagueIDX] [int] NOT NULL,
[teamIDX] [int] NOT NULL,
[joinType] [tinyint] NOT NULL,
[regDate] [datetime] NOT NULL,
[insertDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_league_team_user] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_league_team_user](
[idx] [int] IDENTITY(1,1) NOT NULL,
[teamIDX] [int] NULL,
[leagueIDX] [int] NULL,
[startDate] [int] NULL,
[teamName] [nvarchar](20) NULL,
[leaderIDX] [int] NULL,
[leagueStartPosition] [smallint] NULL,
[leaguePosition] [smallint] NULL,
[maxcount] [tinyint] NULL,
[cheerPoint] [int] NULL,
[currentRound] [tinyint] NULL,
[factionPoint] [int] NULL,
[factionType] [tinyint] NULL,
[regDate] [datetime] NULL,
[insertDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_level_playtime] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_level_playtime](
[idx] [int] IDENTITY(1,1) NOT NULL,
[userLevel] [int] NOT NULL,
[playTime] [bigint] NOT NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_mannerpoint] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_mannerpoint](
[idx] [int] IDENTITY(1,1) NOT NULL,
[playType] [int] NOT NULL,
[modeType] [int] NOT NULL,
[sub1Type] [int] NOT NULL,
[sub2Type] [int] NOT NULL,
[reportIDX] [int] NULL,
[reportNick] [varchar](20) NULL,
[reportpubIP] [varchar](15) NOT NULL,
[reportpriIP] [varchar](15) NOT NULL,
[receiveIDX] [nchar](10) NULL,
[receiveNick] [varchar](20) NULL,
[receivepubIP] [varchar](15) NOT NULL,
[roomInfo] [varchar](2000) NULL,
[chatInfo] [varchar](3000) NULL,
[note] [varchar](500) NULL,
[reason] [varchar](2000) NULL,
[flag] [tinyint] NOT NULL,
[resultType] [tinyint] NOT NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_mannerpoint_sitevisit] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_mannerpoint_sitevisit](
[idx] [int] IDENTITY(1,1) NOT NULL,
[accountIDX] [int] NOT NULL,
[point] [smallint] NOT NULL,
[userIP] [varchar](15) NOT NULL,
[regDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[log_tooni_migration] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[log_tooni_migration](
[idx] [int] IDENTITY(1,1) NOT NULL,
[TooniIDX] [int] NOT NULL,
[TooniID] [varchar](32) NOT NULL,
[AccountIDX] [int] NOT NULL,
[RegDate] [datetime] NOT NULL,
CONSTRAINT [PK_log_tooni_migration] PRIMARY KEY CLUSTERED
(
[RegDate] ASC,
[idx] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Index [accountidx] Script Date: 5/4/2025 8:44:49 PM ******/
CREATE NONCLUSTERED INDEX [accountidx] ON [dbo].[log_data_clover]
(
[accountIDX] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
/****** Object: Index [regDate] Script Date: 5/4/2025 8:44:49 PM ******/
CREATE NONCLUSTERED INDEX [regDate] ON [dbo].[log_data_clover]
(
[regDate] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
/****** Object: Index [NC_log_tooni_migration_AccountIDX] Script Date: 5/4/2025 8:44:49 PM ******/
CREATE NONCLUSTERED INDEX [NC_log_tooni_migration_AccountIDX] ON [dbo].[log_tooni_migration]
(
[AccountIDX] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
/****** Object: Index [NC_log_tooni_migration_TooniID] Script Date: 5/4/2025 8:44:49 PM ******/
CREATE NONCLUSTERED INDEX [NC_log_tooni_migration_TooniID] ON [dbo].[log_tooni_migration]
(
[TooniID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
ALTER TABLE [dbo].[log_class_buytime] ADD CONSTRAINT [DF_log_class_buytime_classType] DEFAULT ((0)) FOR [classType]
GO
ALTER TABLE [dbo].[log_class_buytime] ADD CONSTRAINT [DF_log_class_buytime_buyTime] DEFAULT ((0)) FOR [buyTime]
GO
ALTER TABLE [dbo].[log_class_buytime] ADD CONSTRAINT [DF_log_class_buytime_regDate] DEFAULT (getdate()) FOR [regDate]
GO
ALTER TABLE [dbo].[log_class_rental_history] ADD CONSTRAINT [DF_log_class_rental_history_classType] DEFAULT ((0)) FOR [classType]
GO
ALTER TABLE [dbo].[log_class_rental_history] ADD CONSTRAINT [DF_log_class_rental_history_regDate] DEFAULT (getdate()) FOR [regDate]
GO
ALTER TABLE [dbo].[log_data_clover] ADD CONSTRAINT [DF_log_clover_friendIdx] DEFAULT ((0)) FOR [friendIDX]
GO
ALTER TABLE [dbo].[log_data_clover] ADD CONSTRAINT [DF_log_clover_regDate] DEFAULT (getdate()) FOR [regDate]
GO
ALTER TABLE [dbo].[log_event_marble] ADD CONSTRAINT [DF_log_event_marble_regDate] DEFAULT (getdate()) FOR [regDate]
GO
ALTER TABLE [dbo].[log_event_openbeta_coin] ADD CONSTRAINT [DF_log_event_openbeta_coin_flag] DEFAULT ((0)) FOR [flag]
GO
ALTER TABLE [dbo].[log_event_openbeta_coin] ADD CONSTRAINT [DF_log_event_openbeta_coin_regDate] DEFAULT (getdate()) FOR [regDate]
GO
ALTER TABLE [dbo].[log_guild_mark] ADD CONSTRAINT [DF_log_guild_mark_flag] DEFAULT ((0)) FOR [flag]
GO
ALTER TABLE [dbo].[log_guild_mark] ADD CONSTRAINT [DF_log_guild_mark_regDate] DEFAULT (getdate()) FOR [regDate]
GO
ALTER TABLE [dbo].[log_league_cheer] ADD CONSTRAINT [DF_log_league_cheer_insertDate] DEFAULT (getdate()) FOR [insertDate]
GO
ALTER TABLE [dbo].[log_league_info_user] ADD CONSTRAINT [DF_log_league_info_user_insertDate] DEFAULT (getdate()) FOR [insertDate]
GO
ALTER TABLE [dbo].[log_league_list] ADD CONSTRAINT [DF_log_league_list_insertDate] DEFAULT (getdate()) FOR [insertDate]
GO
ALTER TABLE [dbo].[log_league_list_user] ADD CONSTRAINT [DF_log_league_list_user_insertDate] DEFAULT (getdate()) FOR [insertDate]
GO
ALTER TABLE [dbo].[log_league_round_user] ADD CONSTRAINT [DF_log_league_round_user_insertDate] DEFAULT (getdate()) FOR [insertDate]
GO
ALTER TABLE [dbo].[log_league_team] ADD CONSTRAINT [DF_log_league_team_leagueStartPosition] DEFAULT ((0)) FOR [leagueStartPosition]
GO
ALTER TABLE [dbo].[log_league_team] ADD CONSTRAINT [DF_log_league_team_insertDate] DEFAULT (getdate()) FOR [insertDate]
GO
ALTER TABLE [dbo].[log_league_team_member] ADD CONSTRAINT [DF_log_league_team_member_insertDate] DEFAULT (getdate()) FOR [insertDate]
GO
ALTER TABLE [dbo].[log_league_team_member_user] ADD CONSTRAINT [DF_log_league_team_member_user_insertDate] DEFAULT (getdate()) FOR [insertDate]
GO
ALTER TABLE [dbo].[log_league_team_user] ADD CONSTRAINT [DF_log_league_team_user_insertDate] DEFAULT (getdate()) FOR [insertDate]
GO
ALTER TABLE [dbo].[log_level_playtime] ADD CONSTRAINT [DF_log_level_playtime_userLevel] DEFAULT ((0)) FOR [userLevel]
GO
ALTER TABLE [dbo].[log_level_playtime] ADD CONSTRAINT [DF_log_level_playtime_playTime] DEFAULT ((0)) FOR [playTime]
GO
ALTER TABLE [dbo].[log_level_playtime] ADD CONSTRAINT [DF_log_level_playtime_regDate] DEFAULT (getdate()) FOR [regDate]
GO
ALTER TABLE [dbo].[log_mannerpoint] ADD CONSTRAINT [DF_log_mannerpoint_flag] DEFAULT ((0)) FOR [flag]
GO
ALTER TABLE [dbo].[log_mannerpoint] ADD CONSTRAINT [DF_log_mannerpoint_resultType] DEFAULT ((0)) FOR [resultType]
GO
ALTER TABLE [dbo].[log_tooni_migration] ADD DEFAULT (getdate()) FOR [RegDate]
GO
/****** Object: StoredProcedure [dbo].[game_item_etc_get_self_index] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[game_item_etc_get_self_index]
(
@accountIDX int
)
AS
SELECT TOP 1 idx FROM userItemEtcDB WHERE accountIDX = @accountIDX ORDER BY idx DESC
GO
/****** Object: StoredProcedure [dbo].[log_data_clover_add] Script Date: 5/4/2025 8:44:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create PROCEDURE [dbo].[log_data_clover_add]
(
@userIDX int
, @FriendIDX int
, @Type smallint
, @Count int
)
AS
SET NOCOUNT ON
-- 클로버 정보가 없을때 insert
INSERT INTO dbo.log_data_clover( accountIDX, friendIDX, eventType, CloverCount, regDate )
VALUES( @userIDX, @FriendIDX, @Type, @Count, GETDATE() );
GO
USE [master]
GO
ALTER DATABASE [LosaGame_log] SET READ_WRITE
GO
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+129
View File
@@ -0,0 +1,129 @@
-- LosaDev 2014: src\sql\20120504\lostsaga_etc.sql as UTF-8 (functions, users). One old view fails; expected.
USE [LosaGame]
GO
/****** 개체: User [lstggame] 스크립트 날짜: 05/04/2012 14:09:58 ******/
CREATE USER [lstggame] FOR LOGIN [lstggame] WITH DEFAULT_SCHEMA=[dbo]
GO
/****** 개체: User [lstgweb] 스크립트 날짜: 05/04/2012 14:09:58 ******/
CREATE USER [lstgweb] FOR LOGIN [lstgweb] WITH DEFAULT_SCHEMA=[dbo]
GO
/****** 개체: UserDefinedFunction [dbo].[DEFINE_REGION_LIMIT_SE_RENSPOINT] 스크립트 날짜: 05/04/2012 14:09:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[DEFINE_REGION_LIMIT_SE_RENSPOINT]
(
)
RETURNS int
As
BEGIN
DECLARE @returnVal int
SET @returnVal = 5
RETURN @returnVal
END
GO
/****** 개체: UserDefinedFunction [dbo].[DEFINE_REGION_LIMIT_RENSPOINT] 스크립트 날짜: 05/04/2012 14:09:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[DEFINE_REGION_LIMIT_RENSPOINT]
(
)
RETURNS int
As
BEGIN
DECLARE @returnVal int
SET @returnVal = 5
RETURN @returnVal
END
GO
/****** 개체: UserDefinedFunction [dbo].[DEFINE_SERVER_CONNECTION_MAX_COUNT] 스크립트 날짜: 05/04/2012 14:09:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[DEFINE_SERVER_CONNECTION_MAX_COUNT]
(
)
RETURNS int
AS
BEGIN
DECLARE @maxcount int
SET @maxcount = 2500
RETURN @maxcount
END
GO
/****** 개체: View [dbo].[userMannerpointDB] 스크립트 날짜: 05/04/2012 14:09:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[userMannerpointDB]
AS
SELECT receiveIDX as 'accountIDX', receivepoint as 'point', reportpubIP as 'userIP', regDate FROM LosaGame_log.DBO.log_mannerpoint
UNION ALL
SELECT accountIDX, point, userIP, regDate FROM LosaGame_log.DBO.log_mannerpoint_sitevisit
GO
/****** 개체: View [dbo].[userQuestView] 스크립트 날짜: 05/04/2012 14:09:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[userQuestView] AS
SELECT * FROM (
SELECT idx, accountIDX, 1 as pos, quest1_type as quest_type, quest1_value1 as quest_value1, quest1_value2 as quest_value2, quest1_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 2 as pos, quest2_type as quest_type, quest2_value1 as quest_value1, quest2_value2 as quest_value2, quest2_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 3 as pos, quest3_type as quest_type, quest3_value1 as quest_value1, quest3_value2 as quest_value2, quest3_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 4 as pos, quest4_type as quest_type, quest4_value1 as quest_value1, quest4_value2 as quest_value2, quest4_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 5 as pos, quest5_type as quest_type, quest5_value1 as quest_value1, quest5_value2 as quest_value2, quest5_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 6 as pos, quest6_type as quest_type, quest6_value1 as quest_value1, quest6_value2 as quest_value2, quest6_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 7 as pos, quest7_type as quest_type, quest7_value1 as quest_value1, quest7_value2 as quest_value2, quest7_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 8 as pos, quest8_type as quest_type, quest8_value1 as quest_value1, quest8_value2 as quest_value2, quest8_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 9 as pos, quest9_type as quest_type, quest9_value1 as quest_value1, quest9_value2 as quest_value2, quest9_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 10 as pos, quest10_type as quest_type, quest10_value1 as quest_value1, quest10_value2 as quest_value2, quest10_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 11 as pos, quest11_type as quest_type, quest11_value1 as quest_value1, quest11_value2 as quest_value2, quest11_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 12 as pos, quest12_type as quest_type, quest12_value1 as quest_value1, quest12_value2 as quest_value2, quest12_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 13 as pos, quest13_type as quest_type, quest13_value1 as quest_value1, quest13_value2 as quest_value2, quest13_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 14 as pos, quest14_type as quest_type, quest14_value1 as quest_value1, quest14_value2 as quest_value2, quest14_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 15 as pos, quest15_type as quest_type, quest15_value1 as quest_value1, quest15_value2 as quest_value2, quest15_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 16 as pos, quest16_type as quest_type, quest16_value1 as quest_value1, quest16_value2 as quest_value2, quest16_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 17 as pos, quest17_type as quest_type, quest17_value1 as quest_value1, quest17_value2 as quest_value2, quest17_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 18 as pos, quest18_type as quest_type, quest18_value1 as quest_value1, quest18_value2 as quest_value2, quest18_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 19 as pos, quest19_type as quest_type, quest19_value1 as quest_value1, quest19_value2 as quest_value2, quest19_time as quest_time FROM userQuestDB WITH (nolock)
UNION ALL
SELECT idx, accountIDX, 20 as pos, quest20_type as quest_type, quest20_value1 as quest_value1, quest20_value2 as quest_value2, quest20_time as quest_time FROM userQuestDB WITH (nolock)
) as a
WHERE quest_type <> 0
GO
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+59
View File
@@ -0,0 +1,59 @@
-- LosaDev 2014: fixes for the 2014 servers on top of the May 2012 scripts, plus test accounts.
USE [LosaGame];
GO
-- 1. The 2014 game server sends its 64-bit server ID (query 3), the 2012 procedure expected the row index.
ALTER PROCEDURE [dbo].[game_server_connection_on]
(
@serverID bigint
)
AS
UPDATE define_game_server SET [status] = 1 WHERE serverID = @serverID
GO
-- 2. Second encryption key (query 5, game_encode_get_fix_key). The login key's ID part is encrypted
-- with it. Shorter than 16 characters.
IF NOT EXISTS (SELECT * FROM define_encode_key)
INSERT INTO define_encode_key (encodeKey, regDate) VALUES ('$(ENCODE_KEY)', getdate());
GO
-- 3. Test accounts. The game server (Korea mode) checks userMemberDB.userID + userLoginDB.encodeKey;
-- there is no password check on the server: the launcher/web normally writes a fresh encodeKey
-- and passes it to the client (tools\start-client.ps1 does that here).
CREATE PROCEDURE [dbo].[lshub_add_test_account]
(
@userID varchar(12)
, @nickName varchar(20)
)
AS
SET NOCOUNT ON
IF EXISTS (SELECT * FROM userMemberDB WHERE userID = @userID) RETURN
INSERT INTO userMemberDB (userID, nickName, userPWD, EMail, mailling, userType, joinType, limitType, limitDate, regDate)
VALUES (@userID, @nickName, '', '', 0, 0, 0, 0, '1999-01-01', getdate())
DECLARE @accountIDX int = (SELECT accountIDX FROM userMemberDB WHERE userID = @userID)
INSERT INTO userGameDB (accountIDX, userState, gameMoney, playTime, conn_count, userLevel, userEXP, rencpoint, renspoint, relateLevel, regionType, connDate, regDate)
VALUES (@accountIDX, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '2000-01-01', getdate())
INSERT INTO userRecordBattleDB (accountIDX, regDate) VALUES (@accountIDX, getdate())
INSERT INTO userLoginDB (accountIDX, encodeKey, gameServerID, connDate) VALUES (@accountIDX, '111111111111111', 0, getdate())
GO
-- Resets the login key before a client start (what the web login did). Returns the key.
CREATE PROCEDURE [dbo].[lshub_set_login_key]
(
@userID varchar(12)
, @encodeKey char(15)
)
AS
SET NOCOUNT ON
UPDATE userLoginDB SET encodeKey = @encodeKey, gameServerID = 0, connDate = getdate()
WHERE accountIDX = (SELECT accountIDX FROM userMemberDB WHERE userID = @userID)
SELECT encodeKey, (SELECT TOP 1 encodeKey FROM define_encode_key ORDER BY idx DESC) AS secondKey
FROM userLoginDB WHERE accountIDX = (SELECT accountIDX FROM userMemberDB WHERE userID = @userID)
GO
EXEC lshub_add_test_account 'test1', 'Tester1';
EXEC lshub_add_test_account 'test2', 'Tester2';
-- GM: the game server treats a nickname that starts with an [ID_LIKE] prefix from
-- ls_gamesvr\config\sp2_developerID.ini (here "[GM]") as a developer.
EXEC lshub_add_test_account 'gmtest1', '[GM]Admin';
GO
+84
View File
@@ -0,0 +1,84 @@
-- LosaDev 2014: procedures whose 2012 parameter list is shorter than what the 2014 game server sends
-- ("has too many arguments specified"). The extra parameters get defaults; behaviour otherwise unchanged.
USE [LosaGame];
GO
-- query 22: the 2014 server pages the gear list (last index, account, page size)
ALTER PROCEDURE [dbo].[game_item_extra_get_list]
(
@lastIndex int
, @accountIDX int = 0
, @pageSize int = 0
)
AS
SET NOCOUNT ON
SELECT TOP (CASE WHEN @pageSize > 0 THEN @pageSize ELSE 2147483647 END) idx
, item1_type, item1_reinforce, item1_slotindex, item1_tradetype, item1_limitType, item1_mcustom, item1_fcustom, item1_limitDate
, item2_type, item2_reinforce, item2_slotindex, item2_tradetype, item2_limitType, item2_mcustom, item2_fcustom, item2_limitDate
, item3_type, item3_reinforce, item3_slotindex, item3_tradetype, item3_limitType, item3_mcustom, item3_fcustom, item3_limitDate
, item4_type, item4_reinforce, item4_slotindex, item4_tradetype, item4_limitType, item4_mcustom, item4_fcustom, item4_limitDate
, item5_type, item5_reinforce, item5_slotindex, item5_tradetype, item5_limitType, item5_mcustom, item5_fcustom, item5_limitDate
, item6_type, item6_reinforce, item6_slotindex, item6_tradetype, item6_limitType, item6_mcustom, item6_fcustom, item6_limitDate
, item7_type, item7_reinforce, item7_slotindex, item7_tradetype, item7_limitType, item7_mcustom, item7_fcustom, item7_limitDate
, item8_type, item8_reinforce, item8_slotindex, item8_tradetype, item8_limitType, item8_mcustom, item8_fcustom, item8_limitDate
, item9_type, item9_reinforce, item9_slotindex, item9_tradetype, item9_limitType, item9_mcustom, item9_fcustom, item9_limitDate
, item10_type, item10_reinforce, item10_slotindex, item10_tradetype, item10_limitType, item10_mcustom, item10_fcustom, item10_limitDate
FROM userItemExtraDB WHERE accountIDX = @accountIDX AND idx > @lastIndex ORDER BY idx
GO
-- query 26: same paging for the decoration item list (last index, account, page size)
ALTER PROCEDURE [dbo].[game_item_get_data_list]
(
@lastIndex int
, @accountIDX int = 0
, @pageSize int = 0
)
AS
SET NOCOUNT ON
SELECT TOP (CASE WHEN @pageSize > 0 THEN @pageSize ELSE 2147483647 END)
idx, item1_type, item1_code, item2_type, item2_code, item3_type, item3_code,
item4_type, item4_code, item5_type, item5_code, item6_type, item6_code,
item7_type, item7_code, item8_type, item8_code, item9_type, item9_code,
item10_type, item10_code, item11_type, item11_code, item12_type, item12_code,
item13_type, item13_code, item14_type, item14_code, item15_type, item15_code,
item16_type, item16_code, item17_type, item17_code, item18_type, item18_code,
item19_type, item19_code, item20_type, item20_code
FROM userItemDB WHERE accountIDX = @accountIDX AND idx > @lastIndex ORDER BY idx
GO
-- query 12: the 2014 server adds the relative grade init code as 15th value (not stored here)
ALTER PROCEDURE [dbo].[game_game_save]
(
@accountIDX int
, @userState int
, @gameMoney bigint
, @conn_count int
, @connDate datetime
, @userLevel int
, @userEXP int
, @playTime int
, @regionType int
, @userFishingLevel int
, @userFishingEXP int
, @refillData int
, @userExcavationLevel int
, @userExcavationEXP int
, @relativeInitCode int = 0
)
AS
UPDATE userGameDB SET
gameMoney = @gameMoney
, userState = @userState
, playTime = playTime + Round((@playTime/1000)/60,0)
, conn_count = @conn_count
, userLevel = @userLevel
, userEXP = @userEXP
, userFishingLevel = @userFishingLevel
, userFishingEXP = @userFishingEXP
, regionType = @regionType
, connDate = @connDate
, refillData = @refillData
, userExcavationLevel = @userExcavationLevel
, userExcavationEXP = @userExcavationEXP
WHERE accountIDX = @accountIDX
GO
File diff suppressed because it is too large. Load diff
+21
View File
@@ -0,0 +1,21 @@
-- First regular tournament (Faction War / LS Cup panel). The main server only continues a row that exists;
-- nothing creates the first one. leagueType 1 = TYPE_REGULAR, leagueState 1 = STATE_TEAM_APP, accountIDX 0 = no owner.
-- Dates are YYMMDDHHMM in a DWORD (Help::ConvertCTimeToDate). Since 2022 that is above the int range, so the
-- int columns hold the wrapped value; the server reads the same bits back as a DWORD.
-- Starts on the last Monday 03:00 and runs next_tournament_hour (336) hours, like sp2_tournament_regular.ini.
USE [LosaGame]
GO
IF NOT EXISTS (SELECT 1 FROM dbo.userLeagueListDB WHERE leagueType = 1)
BEGIN
DECLARE @s datetime, @e datetime, @a bigint, @b bigint
SET @s = DATEADD(hour, 3, DATEADD(day, -(DATEDIFF(day, 0, GETDATE()) % 7), DATEDIFF(day, 0, GETDATE())))
SET @e = DATEADD(hour, 336, @s)
SET @a = CAST(YEAR(@s) % 100 AS bigint) * 100000000 + MONTH(@s) * 1000000 + DAY(@s) * 10000 + DATEPART(hour, @s) * 100
SET @b = CAST(YEAR(@e) % 100 AS bigint) * 100000000 + MONTH(@e) * 1000000 + DAY(@e) * 10000 + DATEPART(hour, @e) * 100
IF @a > 2147483647 SET @a = @a - 4294967296
IF @b > 2147483647 SET @b = @b - 4294967296
INSERT INTO dbo.userLeagueListDB (accountIDX, startDate, endDate, leagueType, leagueState, regDate)
VALUES (0, @a, @b, 1, 1, GETDATE())
END
SELECT idx, startDate, endDate, leagueType, leagueState FROM dbo.userLeagueListDB
GO
+266
View File
@@ -0,0 +1,266 @@
-- Generated. Real tables and procedures from the 2021 release for features that were stubs in the 2014 testbed.
USE [LosaGame]
GO
IF OBJECT_ID('dbo.game_character_get_list') IS NOT NULL DROP PROCEDURE dbo.game_character_get_list
GO
CREATE PROCEDURE [dbo].[game_character_get_list]
(
@accountIDX INT
)
AS
SET NOCOUNT ON
SELECT idx, ClassType,
CI_type, CI_gender, CI_beard, CI_face, CI_hair, CI_skinColor, CI_hairColor, CI_trinket, CI_underwear,
EI1_type, EI2_type, EI3_type, EI4_type, CI_position,
limitTime, limitType, leaderType, rentalType, rentalTime, awakeType, awakeTime
FROM dbo.userCharacterDB WITH(NOLOCK)
WHERE accountIDX = @accountIDX
ORDER BY idx ASC
GO
IF OBJECT_ID('dbo.game_class_get_list') IS NOT NULL DROP PROCEDURE dbo.game_class_get_list
GO
CREATE PROCEDURE [dbo].[game_class_get_list]
(
@accountIDX INT
)
AS
SET NOCOUNT ON
SELECT idx,
class1_type, class1_level, class1_expert, class1_stat, class2_type, class2_level, class2_expert, class2_stat,
class3_type, class3_level, class3_expert, class3_stat, class4_type, class4_level, class4_expert, class4_stat,
class5_type, class5_level, class5_expert, class5_stat, class6_type, class6_level, class6_expert, class6_stat,
class7_type, class7_level, class7_expert, class7_stat, class8_type, class8_level, class8_expert, class8_stat,
class9_type, class9_level, class9_expert, class9_stat, class10_type, class10_level, class10_expert, class10_stat
FROM dbo.userClassDB WITH(NOLOCK)
WHERE accountIDX = @accountIDX
ORDER BY idx ASC
GO
IF OBJECT_ID('dbo.game_game_get_data') IS NOT NULL DROP PROCEDURE dbo.game_game_get_data
GO
CREATE PROCEDURE [dbo].[game_game_get_data]
(
@userID varchar(12)
)
As
SET NOCOUNT ON
DECLARE @CURRENTDATE DATETIME
DECLARE @CONNECTDATE DATETIME
SET @CURRENTDATE = GETDATE();
SET @CONNECTDATE = ( SELECT conndate FROM dbo.userGameDB WHERE accountIDX IN ( SELECT accountIDX FROM dbo.userMemberDB WHERE userID = @userID ))
BEGIN
IF( @CURRENTDATE < @CONNECTDATE )
SET @CONNECTDATE = @CURRENTDATE
END
SELECT a.accountIDX, b.userID, b.nickName, a.userState, a.gameMoney
, a.conn_count, @CONNECTDATE, a.userLevel, a.userEXP--, a.relateLevel
, b.eventType, isNull(c.class,0) as 'class', b.joinType, b.regDate, a.regionType
, a.rencpoint, a.renspoint, isNull(c.region,0) as 'region', b.cpType, ISNULL(d.cpID, '') AS 'cpID'
, ISNULL(d.note, '') AS 'cpUNIQ', b.limitType, b.limitDate, a.userFishingLevel, a.userFishingEXP
, a.refillData, a.userExcavationLevel, a.userExcavationEXP, a.userHerocEXP, a.userHerosEXP, a.practice
FROM userGameDB a WITH( NOLOCK )
JOIN userMemberDB b WITH( NOLOCK )
ON a.accountIDX = b.accountIDX
LEFT JOIN userRankingDB c WITH( NOLOCK )
ON a.accountIDX = c.accountIDX
LEFT JOIN userCooperationDB d WITH( NOLOCK )
ON a.accountIDX=d.accountIDX WHERE b.userID = @userID
GO
IF OBJECT_ID('dbo.game_game_save') IS NOT NULL DROP PROCEDURE dbo.game_game_save
GO
CREATE PROCEDURE [dbo].[game_game_save]
(
@accountIDX int
, @userState int
, @gameMoney bigint
, @conn_count int
, @connDate datetime
, @userLevel int
, @userEXP int
, @playTime int
, @regionType int
, @userFishingLevel int
, @userFishingEXP int
, @refillData int
, @userExcavationLevel int
, @userExcavationEXP int
, @init_time int
)
As
SET NOCOUNT ON
IF @userLevel < 50
BEGIN
-- 기존 루틴 그대로
UPDATE dbo.userGameDB
SET gameMoney = @gameMoney
, userState = @userState
, playTime = playTime + Round((@playTime/1000)/60,0)
, conn_count = @conn_count
, userLevel = @userLevel
, userEXP = @userEXP
, userFishingLevel = @userFishingLevel
, userFishingEXP = @userFishingEXP
, regionType = @regionType
, connDate = @connDate
, refillData = @refillData
, userExcavationLevel = @userExcavationLevel
, userExcavationEXP = @userExcavationEXP
, Practice = 0
WHERE accountIDX = @accountIDX
END
ELSE
BEGIN
--
IF( EXISTS( SELECT * FROM dbo.userRelativeLevelDB WITH( NOLOCK )
WHERE accountIDX = @accountIDX ) )
BEGIN
UPDATE dbo.userGameDB
SET gameMoney = @gameMoney
, userState = @userState
, playTime = playTime + Round((@playTime/1000)/60,0)
, conn_count = @conn_count
--, userLevel = @userLevel
, userEXP = @userEXP
, userFishingLevel = @userFishingLevel
, userFishingEXP = @userFishingEXP
, regionType = @regionType
, connDate = @connDate
, refillData = @refillData
, userExcavationLevel = @userExcavationLevel
, userExcavationEXP = @userExcavationEXP
, Practice = 0
WHERE accountIDX = @accountIDX
UPDATE dbo.userRelativeLevelDB
SET init_time = @init_time
WHERE accountIDX = @accountIDX
END
ELSE
BEGIN
-- 기존 루틴 그대로 : 혹시나 ?
UPDATE dbo.userGameDB
SET gameMoney = @gameMoney
, userState = @userState
, playTime = playTime + Round((@playTime/1000)/60,0)
, conn_count = @conn_count
, userLevel = @userLevel
, userEXP = @userEXP
, userFishingLevel = @userFishingLevel
, userFishingEXP = @userFishingEXP
, regionType = @regionType
, connDate = @connDate
, refillData = @refillData
, userExcavationLevel = @userExcavationLevel
, userExcavationEXP = @userExcavationEXP
, Practice = 0
WHERE accountIDX = @accountIDX
END
END
GO
IF OBJECT_ID('dbo.game_item_extra_get_list') IS NOT NULL DROP PROCEDURE dbo.game_item_extra_get_list
GO
CREATE PROCEDURE [dbo].[game_item_extra_get_list]
(
@idx INT
, @accountIDX INT
, @getCount int
)
AS
SET NOCOUNT ON
SELECT TOP (@getCount) idx,
item1_type, item1_reinforce, item1_slotindex, item1_tradetype, item1_limitType, item1_mcustom, item1_fcustom, item1_failexp, item1_limitDate,
item2_type, item2_reinforce, item2_slotindex, item2_tradetype, item2_limitType, item2_mcustom, item2_fcustom, item2_failexp, item2_limitDate,
item3_type, item3_reinforce, item3_slotindex, item3_tradetype, item3_limitType, item3_mcustom, item3_fcustom, item3_failexp, item3_limitDate,
item4_type, item4_reinforce, item4_slotindex, item4_tradetype, item4_limitType, item4_mcustom, item4_fcustom, item4_failexp, item4_limitDate,
item5_type, item5_reinforce, item5_slotindex, item5_tradetype, item5_limitType, item5_mcustom, item5_fcustom, item5_failexp, item5_limitDate,
item6_type, item6_reinforce, item6_slotindex, item6_tradetype, item6_limitType, item6_mcustom, item6_fcustom, item6_failexp, item6_limitDate,
item7_type, item7_reinforce, item7_slotindex, item7_tradetype, item7_limitType, item7_mcustom, item7_fcustom, item7_failexp, item7_limitDate,
item8_type, item8_reinforce, item8_slotindex, item8_tradetype, item8_limitType, item8_mcustom, item8_fcustom, item8_failexp, item8_limitDate,
item9_type, item9_reinforce, item9_slotindex, item9_tradetype, item9_limitType, item9_mcustom, item9_fcustom, item9_failexp, item9_limitDate,
item10_type, item10_reinforce, item10_slotindex, item10_tradetype, item10_limitType, item10_mcustom, item10_fcustom, item10_failexp, item10_limitDate
FROM dbo.userItemExtraDB WITH (NOLOCK)
WHERE accountIDX = @accountIDX
AND idx > @idx
ORDER BY idx ASC
GO
IF OBJECT_ID('dbo.game_guild_login_get_data') IS NOT NULL DROP PROCEDURE dbo.game_guild_login_get_data
GO
-- =============================================
-- Subject : dbo.game_guild_login_get_data
-- DBA : KeuN
-- DATE : 2015-08-24 09:43
-- Description : 길드원 데이터 SELECT (길드본부 추가)
-- =============================================
CREATE PROCEDURE [dbo].[game_guild_login_get_data]
(
@ACCOUNT_IDX int
)
AS
SET NOCOUNT ON
DECLARE @GUILD_IDX INT = 0;
DECLARE @GUILD_HQ TINYINT = 0;
-- 길드 본부 활성화 여부 확인
SET @GUILD_IDX = (SELECT guildIDX FROM dbo.userGuildInfoDB WHERE AccountIDX=@ACCOUNT_IDX)
IF (@GUILD_IDX<>0) or (@GUILD_IDX IS NOT NULL)
BEGIN
IF EXISTS (SELECT * FROM dbo.userGuildHQDB WHERE GuildIDX=@GUILD_IDX)
BEGIN
SET @GUILD_HQ=1
END
END
-- 사용자 길드 관련 데이터 세팅
SELECT B.idx, B.guildName, B.guildmark, A.guildPosition, A.msg, A.AttendDate, A.GuildRankDate, A.regDate, @GUILD_HQ
FROM dbo.userGuildInfoDB as A WITH(READUNCOMMITTED) INNER JOIN dbo.userGuildDB AS B WITH(READUNCOMMITTED)
ON A.guildIDX = B.idx
WHERE A.accountIDX = @ACCOUNT_IDX
AND A.guildJoinType in (-1, 1)
GO
IF OBJECT_ID('dbo.game_guild_get_list') IS NOT NULL DROP PROCEDURE dbo.game_guild_get_list
GO
CREATE PROCEDURE [dbo].[game_guild_get_list]
(
@topn int
, @idx int
)
AS
SET NOCOUNT ON
SELECT TOP (@topn) a.idx, a.guildName, a.aboutguild, a.guildmark, a.point, a.maxcount, a.regDate,
a.membercount, a.todaypoint, a.guildLevel,
b.type1_win, b.type1_lose, b.type1_kill, b.type1_death
FROM dbo.userGuildDB a WITH(NOLOCK)
INNER JOIN dbo.userRecordGuildDB b WITH(NOLOCK)
ON a.idx = b.guildIDX
WHERE a.idx < @idx
ORDER BY a.idx DESC
GO
USE [LosaGame]
GO
-- game_friend_list_asc names this index in a table hint; the 2012 table does not have it.
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name='idx_userAccIDX' AND object_id=OBJECT_ID('dbo.userFriendDB'))
CREATE CLUSTERED INDEX idx_userAccIDX ON dbo.userFriendDB (userAccIDX)
GO
+21
View File
@@ -0,0 +1,21 @@
-- LosaDev 2014: database users for the DB agent logins (db_owner, like the original service).
USE [LosaGame_log]
GO
IF USER_ID(N'lstggame') IS NULL CREATE USER [lstggame] FOR LOGIN [lstggame]
ALTER ROLE [db_owner] ADD MEMBER [lstggame]
GO
USE [Backup]
GO
IF USER_ID(N'lstggame') IS NULL CREATE USER [lstggame] FOR LOGIN [lstggame]
ALTER ROLE [db_owner] ADD MEMBER [lstggame]
GO
USE [LosaLogData]
GO
IF USER_ID(N'lstggame') IS NULL CREATE USER [lstggame] FOR LOGIN [lstggame]
ALTER ROLE [db_owner] ADD MEMBER [lstggame]
GO
USE [LosaGame]
GO
IF USER_ID(N'lstggame') IS NULL CREATE USER [lstggame] FOR LOGIN [lstggame]
ALTER ROLE [db_owner] ADD MEMBER [lstggame]
GO
+60
View File
@@ -0,0 +1,60 @@
# Database setup (2014)
Creates the four databases the 2014 servers use, with the original names:
| Database | Used by |
|---|---|
| `LosaGame` | game data and accounts (DB agent `ls_dbagent_game`) |
| `LosaGame_log` | logs written by procedures in `LosaGame` |
| `LosaLogData` | log server (DB agent `ls_dbagent_log`); only procedures, the log queries are stubs |
| `Backup` | stays empty: `game_region_backup_point` / `game_region_backup_compen` create their own tables in it |
This is the set used by the tested local setup (2026-11-07: nine servers, three accounts reach the lobby and the headquarters tutorial).
## Expected messages
Tested on SQL Server 2022 Express. Every script runs clean except two that come from the May 2012 base scripts:
- `04_LosaGame_procs.sql`: 153 "Invalid column name" messages = 22 old procedures written for newer tables. None of them is called by the 2014 servers.
- `05_LosaGame_etc.sql`: one old view (`userMannerpointDB`) fails the same way.
`LosaGame_log` comes from the 2021 release (the 2014 release has no script for it). 8 of the 23 log tables the old 2012 procedures write exist there; the other 15 belong to the old publisher web site (real-name check, recommend events, parent consent). 33 procedures use them and none is called by the servers (`ls_query.ini`), so nothing in game is affected.
## Needs
- SQL Server 2019 or newer (Express is enough) with **SQL Server and Windows authentication** (mixed mode).
- `sqlcmd` on PATH.
- Recommended: instance collation `Korean_Wansung_CI_AS`, like the original service.
## Setup
```bat
setup-db.bat .\SQLEXPRESS
```
It asks for the **DB agent password** (SQL login `lstggame`, used by both DB agents) and the **encode key** (15 characters, stored as the second key row; the login key tool must use the same value). Logs go to `logs\`.
**The 2014 DB agents expect the password encoded**: run `ls_dbagent.exe -x <password>` and put its output in `PW=` of both `ls_dbagent.ini` files. A disabled login `lstgweb` is also created only because the 2012 script creates a user for it.
| Script | Does |
|---|---|
| `00_create_databases.sql` | creates `LosaGame`, `LosaGame_log`, `LosaLogData`, `Backup` |
| `01_logins.sql` | SQL login `lstggame` (and the disabled `lstgweb`) |
| `02_LosaGame_log.sql` | `LosaGame_log` tables from the 2021 release |
| `03`-`05` | the 2014 release's `src\sql\20120504` scripts (tables, procedures, functions), UTF-8 |
| `06_LosaGame_stubs.sql`, `07_LosaLogData_stubs.sql` | empty stand-in procedures for the queries in `ls_query.ini` the 2012 scripts do not have (about 175 in LosaGame); replace one with a real procedure to make that feature work |
| `08_fixes_and_accounts.sql` | 64-bit server ID, the encode key, test accounts `test1`, `test2`, `gmtest1`, the login-key helper |
| `09_param_fixes.sql` | procedures whose 2012 parameter list is shorter than what the 2014 server sends |
| `10_features_from_2021.sql`, `12_core_procs_from_2021.sql` | columns, tables and procedures from the 2021 release that 2014 features need (pets, faction, costumes, ...) |
| `11_first_tournament.sql` | the first tournament row |
| `13_users.sql` | `lstggame` becomes `db_owner` of all four databases |
| `optional\test-heroes.sql` | six permanent heroes for the test accounts (Savage Berserker first: the headquarters tutorial needs it) |
## Backup and restore
```bat
backup.bat D:\LosaBackup .\SQLEXPRESS
restore.bat 20261107_1400 D:\LosaBackup .\SQLEXPRESS
```
`backup.bat` writes `<database>_<yyyyMMdd_HHmm>.bak` for all four databases (online). `restore.bat` asks first and replaces all four: **stop every server before restoring**. It restores to the paths stored in the backup (same server); on another server use `RESTORE DATABASE ... WITH MOVE` by hand.
+9
View File
@@ -0,0 +1,9 @@
@echo off
rem LosaDev 2014: backup.bat [folder] [server] (defaults: D:\LosaBackup, .\SQLEXPRESS)
setlocal
set DIR=%~1
if "%DIR%"=="" set DIR=D:\LosaBackup
set SRV=%~2
if "%SRV%"=="" set SRV=.\SQLEXPRESS
if not exist "%DIR%" mkdir "%DIR%"
sqlcmd -S "%SRV%" -E -b -v BACKUP_DIR="%DIR%" -i "%~dp0backup.sql"
+26
View File
@@ -0,0 +1,26 @@
-- LosaDev 2014: full backup of LosaGame, LosaGame_log, LosaLogData and Backup.
-- sqlcmd -S <server> -E -v BACKUP_DIR="D:\LosaBackup" -i backup.sql (or backup.bat)
-- One file per database: <db>_yyyyMMdd_HHmm.bak in BACKUP_DIR (the folder must exist and the SQL
-- Server service account needs write access). Online backup: the servers may keep running.
USE [master]
GO
SET NOCOUNT ON
DECLARE @dir nvarchar(400) = N'$(BACKUP_DIR)', @stamp nvarchar(20) = FORMAT(GETDATE(), 'yyyyMMdd_HHmm'), @db sysname, @file nvarchar(600)
IF RIGHT(@dir, 1) = N'\' SET @dir = LEFT(@dir, LEN(@dir) - 1)
DECLARE d CURSOR LOCAL FAST_FORWARD FOR SELECT v FROM (VALUES (N'LosaGame'), (N'LosaGame_log'), (N'LosaLogData'), (N'Backup')) t(v)
OPEN d
FETCH NEXT FROM d INTO @db
WHILE @@FETCH_STATUS = 0
BEGIN
IF DB_ID(@db) IS NOT NULL
BEGIN
SET @file = @dir + N'\' + @db + N'_' + @stamp + N'.bak'
BACKUP DATABASE @db TO DISK = @file WITH INIT, CHECKSUM, STATS = 25
PRINT 'backup ' + @db + ' -> ' + @file
END
ELSE PRINT 'skip ' + @db + ' (does not exist)'
FETCH NEXT FROM d INTO @db
END
CLOSE d
DEALLOCATE d
GO
+29
View File
@@ -0,0 +1,29 @@
-- Test heroes for the three test accounts. A new account owns no hero, so the game opens with a
-- "no hero available" popup. Six permanent heroes each (limitType 1 = CPT_MORTMAIN). Class 6, Savage
-- Berserker, comes first and is the leader (leaderType 1): the headquarters tutorial is written for
-- that hero and gets stuck with another one. Same columns as game_character_add. Safe to run
-- again: accounts that already own a hero are skipped.
USE [LosaGame]
GO
DECLARE @acc int
DECLARE acc CURSOR LOCAL FAST_FORWARD FOR
SELECT accountIDX FROM dbo.userMemberDB m
WHERE m.userID IN ('test1', 'test2', 'gmtest1')
AND NOT EXISTS (SELECT 1 FROM dbo.userCharacterDB c WHERE c.accountIDX = m.accountIDX)
OPEN acc
FETCH NEXT FROM acc INTO @acc
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO dbo.userCharacterDB (accountIDX, ClassType, CI_type, CI_gender, CI_beard, CI_face, CI_hair, CI_skinColor, CI_hairColor, CI_trinket, CI_underwear, CI_position, EI1_type, EI2_type, EI3_type, EI4_type, limitTime, limitType, leaderType, rentalType, rentalTime)
SELECT @acc, h.class, 1, 1, 1, 1, 1, 1, 1, 1, 1, h.pos, 0, 0, 0, 0, 0, 1, CASE WHEN h.class = 6 THEN 1 ELSE 0 END, 0, 0
FROM (VALUES (6, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5)) AS h(class, pos)
ORDER BY h.pos
-- Tutorial set = class type * 100 (User::_OnLeaderCreate). Skills only count when the hero's gear
-- set matches it, so the tutorial must be the Savage set.
UPDATE dbo.userGameDB SET userState = 600 WHERE accountIDX = @acc
FETCH NEXT FROM acc INTO @acc
END
CLOSE acc
DEALLOCATE acc
SELECT m.userID, COUNT(c.idx) AS heroes FROM dbo.userMemberDB m LEFT JOIN dbo.userCharacterDB c ON c.accountIDX = m.accountIDX GROUP BY m.userID
GO
+12
View File
@@ -0,0 +1,12 @@
@echo off
rem LosaDev 2014: restore.bat <stamp> [folder] [server] stamp = yyyyMMdd_HHmm of the backup files
rem Stop every game server first. The three databases are replaced.
setlocal
if "%~1"=="" echo Usage: restore.bat ^<yyyyMMdd_HHmm^> [folder] [server] & exit /b 1
set DIR=%~2
if "%DIR%"=="" set DIR=D:\LosaBackup
set SRV=%~3
if "%SRV%"=="" set SRV=.\SQLEXPRESS
choice /m "Replace LosaGame, LosaGame_log, LosaLogData and Backup on %SRV% with the %~1 backup"
if errorlevel 2 exit /b 1
sqlcmd -S "%SRV%" -E -b -v BACKUP_DIR="%DIR%" STAMP="%~1" -i "%~dp0restore.sql"
+30
View File
@@ -0,0 +1,30 @@
-- LosaDev 2014: restores LosaGame, LosaGame_log, LosaLogData and Backup from backup.sql files.
-- sqlcmd -S <server> -E -v BACKUP_DIR="D:\LosaBackup" STAMP="20261107_1400" -i restore.sql (or restore.bat)
-- STAMP = the yyyyMMdd_HHmm part of the file names. STOP ALL GAME SERVERS FIRST: each database is
-- set to single user and replaced. The files go back to the paths stored in the backup, so restore
-- on the same server; on another server use RESTORE ... WITH MOVE by hand (see README.md).
USE [master]
GO
SET NOCOUNT ON
DECLARE @dir nvarchar(400) = N'$(BACKUP_DIR)', @stamp nvarchar(20) = N'$(STAMP)', @db sysname, @file nvarchar(600), @sql nvarchar(400)
IF RIGHT(@dir, 1) = N'\' SET @dir = LEFT(@dir, LEN(@dir) - 1)
DECLARE d CURSOR LOCAL FAST_FORWARD FOR SELECT v FROM (VALUES (N'LosaGame'), (N'LosaGame_log'), (N'LosaLogData'), (N'Backup')) t(v)
OPEN d
FETCH NEXT FROM d INTO @db
WHILE @@FETCH_STATUS = 0
BEGIN
SET @file = @dir + N'\' + @db + N'_' + @stamp + N'.bak'
IF DB_ID(@db) IS NOT NULL
BEGIN
SET @sql = N'ALTER DATABASE ' + QUOTENAME(@db) + N' SET SINGLE_USER WITH ROLLBACK IMMEDIATE'
EXEC (@sql)
END
RESTORE DATABASE @db FROM DISK = @file WITH REPLACE, CHECKSUM
SET @sql = N'ALTER DATABASE ' + QUOTENAME(@db) + N' SET MULTI_USER'
EXEC (@sql)
PRINT 'restored ' + @db + ' from ' + @file
FETCH NEXT FROM d INTO @db
END
CLOSE d
DEALLOCATE d
GO
+35
View File
@@ -0,0 +1,35 @@
@echo off
rem LosaDev 2014: creates LosaGame, LosaGame_log, LosaLogData and Backup and fills them.
rem Usage: setup-db.bat [server] (default .\SQLEXPRESS; Windows login with sysadmin rights)
rem Needs sqlcmd (SQL Server command line tools) on PATH. Asks for the DB agent password.
rem Logs go to logs\. Existing databases are kept; scripts that already ran give "already exists" errors.
setlocal
cd /d "%~dp0"
set SRV=%~1
if "%SRV%"=="" set SRV=.\SQLEXPRESS
if "%DB_COLLATE%"=="" set DB_COLLATE=DEFAULT
set /p DB_PASSWORD=Password for the DB agent logins (same as PW= in ls_dbagent.ini):
set /p ENCODE_KEY=Encode key, 15 characters:
if "%DB_PASSWORD%"=="" echo No password given. & exit /b 1
if not exist logs mkdir logs
call :run 00_create_databases.sql
call :run 01_logins.sql
call :run 02_LosaGame_log.sql
call :run 03_LosaGame_tables.sql
call :run 04_LosaGame_procs.sql
call :run 05_LosaGame_etc.sql
call :run 06_LosaGame_stubs.sql
call :run 07_LosaLogData_stubs.sql
call :run 08_fixes_and_accounts.sql
call :run 09_param_fixes.sql
call :run 10_features_from_2021.sql
call :run 11_first_tournament.sql
call :run 12_core_procs_from_2021.sql
call :run 13_users.sql
findstr /b /c:"Msg " logs\*.log >nul && (echo Some statements failed: search logs\*.log for "Msg ".) || echo Done, no errors.
exit /b 0
:run
echo running %1
sqlcmd -S "%SRV%" -E -I -f 65001 -v DB_COLLATE="%DB_COLLATE%" DB_PASSWORD="%DB_PASSWORD%" ENCODE_KEY="%ENCODE_KEY%" -i "%1" -o "logs\%~n1.log"
exit /b 0
+22 -18
View File
@@ -1,27 +1,31 @@
# Server config set (2014 source, 178 heroes)
# Server config (2014, one PC)
A complete server config set taken from a **community-run 2014 private server** (2022), including:
A complete config for running all nine 2014 servers on one Windows PC, taken from the tested local setup (2026-11-07: three accounts reach the lobby, tutorial and market work). Ports `14xxx`. `_original-release\` keeps what this folder held before (the config set of a modified private server, with gameplay tables).
- Infrastructure configs for every server (`global_define.ini`, `ls_*` ini files, `ls_config_*.ini`)
- `ls_dbagent\ls_query.ini`, the full query map for the DB agent
- `ls_gamesvr\config\` and `ls_mainsvr\config\`, the gameplay tables
## Folder layout
This is **not** an official default set. That server had its own changes, for example a custom
anti-cheat switch (`[KamuEAC]` in `ls_config_game.ini`) and an `ExternalIP` key in the game
server ini. Values like event dates, shop items and prices are that server's choices.
Each folder is one server process. Copy the built `.exe` into its folder plus the DLLs it needs from `src\lib\`. `global_define.ini` stays in the parent folder of the server folders.
## What was changed before publishing
| Folder | Program |
|---|---|
| `ls_dbagent_game` | `ls_dbagent.exe` (database `LosaGame`) |
| `ls_dbagent_log` | `ls_dbagent.exe` (database `LosaLogData`) |
| `ls_dbagent_logsvr` | `ls_dbagent.exe` in log server mode |
| `ls_mainsvr`, `ls_billingsvr`, `ls_gamesvr`, `ls_relaysvr`, `ls_loginsvr`, `ls_filewritesvr` | the server of the same name |
Only these things, everything else is byte-for-byte as it was:
Start each from its own folder with `-c <its ini>`, in this order: the three DB agents, main, billing, game, relay, login, file write.
- Real IP addresses were replaced with `127.0.0.1` (including the guild mark and custom texture URLs).
- SQL logins and passwords in the `ls_dbagent` ini files were replaced with placeholders.
Encode your own password with `ls_dbagent.exe -x yourpassword`.
- Publisher URLs, keys and hashes in `ls_billingsvr\ls_config_billingsvr.ini` were emptied.
- `ls_mainsvr\ls_auth.ini` (GM tool accounts) was emptied. Add your own accounts.
- Publisher and operator host names were replaced (2026-11-07): URLs now start with `http://127.0.0.1/` (same path), in `ls_gamesvr\config\` `config.ini`, `sp2_guild.ini`, `sp2_custom_texture.ini`, `sp2_channeling_wemade.ini`, `sp2_shop_item_chr_info.ini` and `sp2_shop_item_extra1_info.ini` (1 584 URLs, mostly the old image CDN).
## Before the first start
Files are encoded in CP949 (Korean). Edit them with an editor that keeps that encoding.
1. Create the databases with `database\setup-db.bat` (see `database\README.md`).
2. `PW=` in `ls_dbagent_game\ls_dbagent.ini` and `ls_dbagent_log\ls_dbagent.ini` (`CHANGE_ME` now) takes the **encoded** password: `ls_dbagent.exe -x <password>`. `ID=lstggame`, `Port=1433` (SQL Server port).
3. The 2014 servers bind to the PC's LAN address, not to `127.0.0.1`. `192.168.1.10` in this set stands for that address: replace it everywhere (`global_define.ini`, the server lists, `LogServerIP`, `FileWriteServerInfo.ini`) with your PC's IPv4 address.
## Values that matter
The shop, gacha, gear and medal files and `sp2_mode_select.ini` in `ls_gamesvr\config\` were matched to the 2014 client on 2026-11-07. Maps the client lacks were removed from the mode lists. Files with server-only keys stay as they were: `sp2_item.ini`, `sp2_etcitem_info.ini`, `sp2_shop.ini`, `sp2_super_gashapon_present.ini`, `sp2_medalitem_info.ini`.
- The Indonesia mode of this source expired in 2016 (license date), so the servers run the **Korea** locale `119483910`.
- `ls_dbagent_game\ls_query.ini`: query `7=game_login_get_data STR` (the 2014 server sends one value).
- GM: nickname under `[ID]` in `ls_gamesvr\config\sp2_developerID.ini`.
- Plaza maps the 2014 client does not have were removed from `ls_gamesvr\config\sp2_mode_select.ini`; Shuffle Bonus and Factory are switched off there.
The client launch line and the login key tool are on the wiki page "2014 Source", section "Run it locally".
+27
View File
@@ -0,0 +1,27 @@
# Server config set (2014 source, 178 heroes)
A complete server config set taken from a **community-run 2014 private server** (2022), including:
- Infrastructure configs for every server (`global_define.ini`, `ls_*` ini files, `ls_config_*.ini`)
- `ls_dbagent\ls_query.ini`, the full query map for the DB agent
- `ls_gamesvr\config\` and `ls_mainsvr\config\`, the gameplay tables
This is **not** an official default set. That server had its own changes, for example a custom
anti-cheat switch (`[KamuEAC]` in `ls_config_game.ini`) and an `ExternalIP` key in the game
server ini. Values like event dates, shop items and prices are that server's choices.
## What was changed before publishing
Only these things, everything else is byte-for-byte as it was:
- Real IP addresses were replaced with `127.0.0.1` (including the guild mark and custom texture URLs).
- SQL logins and passwords in the `ls_dbagent` ini files were replaced with placeholders.
Encode your own password with `ls_dbagent.exe -x yourpassword`.
- Publisher URLs, keys and hashes in `ls_billingsvr\ls_config_billingsvr.ini` were emptied.
- `ls_mainsvr\ls_auth.ini` (GM tool accounts) was emptied. Add your own accounts.
- Publisher and operator host names were replaced (2026-11-07): URLs now start with `http://127.0.0.1/` (same path), in `ls_gamesvr\config\` `config.ini`, `sp2_guild.ini`, `sp2_custom_texture.ini`, `sp2_channeling_wemade.ini`, `sp2_shop_item_chr_info.ini` and `sp2_shop_item_extra1_info.ini` (1 584 URLs, mostly the old image CDN).
Files are encoded in CP949 (Korean). Edit them with an editor that keeps that encoding.
The shop, gacha, gear and medal files and `sp2_mode_select.ini` in `ls_gamesvr\config\` were matched to the 2014 client on 2026-11-07. Maps the client lacks were removed from the mode lists. Files with server-only keys stay as they were: `sp2_item.ini`, `sp2_etcitem_info.ini`, `sp2_shop.ini`, `sp2_super_gashapon_present.ini`, `sp2_medalitem_info.ini`.
@@ -0,0 +1,21 @@
;Server address
[Main]
1 = 127.0.0.1:40000
[Billing]
max=1
1 = 127.0.0.1:14011
[DBA_Game]
max=1
1 = 127.0.0.1:30101
[DBA_Log]
max=1
1 = 127.0.0.1:30102
[Log]
max=1
1 = 127.0.0.1:14113
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,2 @@
[config]
AutoRun=0
@@ -0,0 +1,75 @@
[SECURITY]
ON = 1
[NETWORK]
MgameServerIP = 127.0.0.1
MgameServerPORT = 15141
WemadeServerIP = 127.0.0.1
WemadeServerPORT = 20021
WemadeBuyServerIP = 127.0.0.1
WemadeBuyServerPORT = 37220
ToonilandServerIP = 127.0.0.1
ToonilandServerPORT = 8104
NexonSessionServerURL =
NexonSessionServerPORT = 10101
NexonSoqpIP = 127.0.0.1
NexonHash =
LOGDBIP = 127.0.0.1
LOGDBPORT = 30001
UseMonitoring = 0
[MemoryPool]
server_pool = 32
monitoring_pool = 10
ThreadPool = 16
DataPool = 3000
BillingPool = 5000
BillingInfoPool = 5000
[Server Session Buffer]
SendBufferSize = 16384
RecvBufferSize = 16384
[MgameServer Buffer]
SendBufferSize = 163840
RecvBufferSize = 163840
[BuddyServer Buffer]
SendBufferSize = 163840
RecvBufferSize = 163840
[WemadeServer Buffer]
SendBufferSize = 163840
RecvBufferSize = 163840
[Monitoring Session Buffer]
SendBufferSize = 16384
[Local]
Version = 119483910
;521837584 800125411
[Channeling]
WemadeFillURL=
WemadeGetURL =
WemadeOutputURL =
WemadePresentURL =
WemadeSubsCheckURL =
WemadeSubsRetractURL =
WemadePresentCashURL =
WemadeMakeCode=100103
[BillInfoTimeout]
MaxAliveTime=300000
@@ -0,0 +1,41 @@
[NETWORK]
IP = 127.0.0.1
PORT = 14030
[MemoryPool]
user_pool = 100
limit_user= 100
; 10만 바이트 파일까지 받을 수 있으므로 10만 이상으로 설정
[Session Buffer]
SendBufferSize = 131072
RecvBufferSize = 131072
[SECURITY]
ON = 1
ONE_SEC_RCV = 1000
[WriteFile]
Max=3
Ext1 = jpg
Path1 = C:\lsupload\upFiles\guildmark
TempPath1 = C:\lsupload\FileWriteServer\TempGuildMark
ErrorPath1= C:\lsupload\FileWriteServer\ErrorGuildMark
Ext2 = lsc
Path2 = C:\lsupload\upFiles\gear
TempPath2 = C:\lsupload\FileWriteServer\TempGear
ErrorPath2= C:\lsupload\FileWriteServer\ErrorGear
Ext3 = lsc
Path3 = C:\lsupload\upFiles\skin
TempPath3 = C:\lsupload\FileWriteServer\TempSkin
ErrorPath3 = C:\lsupload\FileWriteServer\ErrorSkin
[UserUpload]
Use = 1
Path = C:\lsupload\upFiles\skin
TempPath = C:\lsupload\FileWriteServer\TempSkin
ErrorPath = C:\lsupload\FileWriteServer\ErrorSkin
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,4 @@
[common]
default_max_char_slot = 60
limite_max_char_slot = 600
@@ -0,0 +1,217 @@
[fatigue_point]
max_count = 1
max_fatigue = 1.0f
fatigue1_peso = 100000000
fatigue1_rate = 1.0f
[first_connect]
; peso=5000
peso=400000
[tutorial_bonus]
BonusStep = 12
BonusPeso = 10000
BonusEventPeso = 1000000
[levelup]
; levelup_bonus_peso x Level만큼 보상 받음
levelup_bonus_peso = 100
[gradeup]
gradeup_bonus_peso = 500
[exp_peso]
; peso_rate = 100.0f
peso_rate = 400.0f
[shop]
sell_return_rate = 0.0f
[NextTeam]
contirbute_per_rate = 0.7f
kill_death_lever_rate = 0.3f
[guild]
CreatePeso = 50000
MarkChangePeso = 50000
[CharBonus]
MaxSize = 4
PossessionCnt_1 = 5
PossessionBonus_1 = 1.0f
PossessionCnt_2 = 4
PossessionBonus_2 = 0.9f
PossessionCnt_3 = 3
PossessionBonus_3 = 0.7f
PossessionCnt_4 = 2
PossessionBonus_4 = 0.4f
[result_correction]
PCRoomBonusExp = 2.0f
PCRoomBonusPeso = 1.0f
GuildPointCorrection = 5
ModeConsecutivelyBonus = 0.05f
ModeConsecutivelyMaxBonus = 0.50f
[guild_manage]
mark_block_url = http://127.0.0.1/guild/guild_mark_mmt.asp?guildIDX=%d&markIDX=%d
[pcroom]
; 1 = 지급, 0 = 미지급
bonus = 1
; 친구보너스 (클라이언트 sp2.ini에도 설정해야함)
[friend_bonus]
; 친구 승락 후 보너스가 적용되기까지 딜레이 시간
before_min = 30
; 친구보너스 수준
bonus = 0.2f
max_bonus = 0.4f
;PC방일대 친구 보너스
pcroom_bonus = 0.5f
pcroom_max_bonus = 1.0f
; 1이면 방에 있는 유저만 친구 확인, 0이면 전체 접속 유저중 친구 확인
is_room_friend_cnt = 1
; 진영전
[ladder]
bonus = 0.00f
LadderTeamLimitGrade = 10
LimitCampPoint = 10
CampBonusCorrectionA = 0.475f
CampBonusCorrectionB = 0.525f
CampBonusDefaultA = 25000.0f
CampBonusDefaultB = 1000.0f
CampBonusMinEntry = 50
CampBonusMaxEntry = 1000
; // 연승 보너스
[victories_bonus]
bonus_rate = 0.1f
; 친구설정 (클라이언트 sp2.ini에도 설정해야함)
[friend_manager]
default_slot_size = 100
[event]
rand_seed = 100
[refill_coin]
; refill_coin_max = 9999개 초과 불가.
refill_coin_max = 12
refill_coin_cnt = 1
refill_coin_sec = 600
[hero_rank]
top100_sync_hour = 8
user_data_sync_hour = 8
[award_etcitem_bonus]
etcitem_type = 1000925
present_ment = 58
abuse_point = 100
;어뷰즈 포인트 default = 1
[quest_abuse]
abuse_second = 50
abuse_developer_pass = 1
abuse_logout = 1
; 절친 정보
[best_friend]
; 절친 최대 명 수 - 절친 맺을 수 있는 친구 수
default_best_friend_count = 5
; 절친 해제시 대기 시간 - 절친 해제하면 아래 시간 만큼 대기하다 삭제됨 - 대기하는 동안 절친 카운트 유지
best_friend_dismiss_delay_hour = 120
; 용병 대여 정보
[char_rental]
; 용병 대여 분 - 대여한 용병을 아래 "분" 만큼 이용 가능
; char_rental_minute = 30
char_rental_minute = 120
; 용병 대여 후 해당 절친 유저에게 다시 대여 가능한 시간 - 동일한 유저에게는 아래 시간 이후부터 대여 가능
; best_friend_char_rental_delay_hour = 24
best_friend_char_rental_delay_hour = 21
; 용병 대여 횟수 - 절친들에게 용병을 아래 수 만큼만 대여가능함 : 위의 best_friend_char_rental_delay_hour시간이 지나면 다시 대여 가능
char_rental_count = 1
; 용병 대여 레벨 - 이 값의 레벨 이상부터 용병 대여 가능
char_rental_grade = 20
; 대여 상태로 전환 가능한 용병 최대 개수 - 공급자가 아래 개수만큼 세팅 가능
; max_char_rent_set = 2
max_char_rent_set = 6
; 친구 클로버 시스템
[FRIEND_CLOVER]
; 유저가 클로버를 가질수 있는 최대 갯수.
MaxCloverCount = 5
; 유저 초기 클로버 갯수 (제거됨)
;CloverDefaultCount = 5
; 친구가 된후 일정 시간이 지나야 클로버 선물 가능. ( 단위 : Min. Test )
GiveCloverTimeMinute = 2
; 클로버 충전시 충전 갯수
CloverCharge_Count = 5
; 충전되는 시간 설정. (단위:초)
; 온라인 상태에서 10분마다 1개씩 추가로 충전
CloverCharge_Time = 600
; 한번에 클로버 보낼 수 있는 갯수.
CloverSendCount = 1
; 한번에 클로버 받을 수 있는 갯수.
CloverReceiveCount = 1
; 친구에게 보낼수 있는 텀. 18시간 * 60 = 1080. 분 단위로..
CloverSendTime = 3
; 받기전 클로버를 받을 수 있는 시간. 17시간 30분 * 60 = 1050 (삭제됨)
CloverReceiveTime = 1050
; 전체 리필 시간. ( 기준: 04:00 시 )
CloverRefill_Hour = 4
CloverRefill_Min = 0
; 리필테스트시 _test 를 1로 / Cycle = 7 면 7분마다 리필
CloverRefill_Test = 0
CloverRefill_Cycle = 59
; 레이드 코인 정보
[refill_raid]
; 최대 레이드코인 수
ticket_max = 5
; 획득시간에 늘어날 레이드코인 수
ticket_cnt = 5
; 레이드코인 획득하는 시간
ticket_time = 5
; 첫로그인시 지급받는 레이드 코인 갯수.
default_cnt = 5
@@ -0,0 +1,12 @@
[limit_common]
soldier_count = 300
deco_table_count = 500
etc_item_table_count = 120
progress_quest_table_count = 90
complete_quest_table_count = 180
growth_table_count = 150
fish_inven_table_count = 280
extra_item_table_count = 300
medal_table_count = 140
peso_acquired_count = 10000000
peso_possession_count = 50000000
@@ -0,0 +1,97 @@
[info]
change =0
max_player = 4
[round]
max_round = 1
max_start_pos = 2
win_need_round = 1
round_time = 150000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 2000
final_result_state_time = 28000
use_view_mode = 0
view_check_time = 300000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
win_team_score_rate = 1
no_limite_symbol = 1
score_gauge_deth_time_rate = 1.0f
score_gauge_max_rate = 1.0f
score_gauge_const_value = 300000
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 30000
mode_record_point_time = 300000
mode_point_max_time = 300000
mode_plus_bonus = 0.0f
PesoCorrection = 5.00f
ExpCorrection = 0.75f
[revival_time]
default_time = 10000
increase_time = 10000
max_time = 30000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 1
vote_round_time = 0
vote_process_time = 20000
; // 특별상 모드별 설정
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 100
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
;-------------<OBJECT GROUP LIST>-----------------
; // 아이템 제공 .... 각 맵별 지정
;-------------<MAPITEM GROUP LIST>-----------------
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,263 @@
[info]
change = 1
max_player = 10
; 셔플모드 세팅
[shuffle_round]
shuffle_max_round = 1
shuffle_win_need_round = 1
shuffle_round_time = 300000
[round]
max_round = 1
half_round = 0
max_start_pos = 2
win_need_round = 1
round_time = 480000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 0
final_result_state_time = 8000
tournament_room_final_result_time = 8000
use_view_mode = 1
view_check_time = 4900000
room_close_time = 490000
sham_battle_close_time = 490000
exit_room_time = 500
score_gap_const = 0.5
score_gap_rate_const = 1.5f
ladder_score_gap_const = 0.5f
ladder_score_gap_rate_const = 2.0f
win_score_constant = 2.5f
win_team_score_rate = 1
abuse_min_damage = 1
char_limit_check_min = 1000
[king_ping_check]
; 서버에서 왕의 핑 수준을 king_ping_time 단위로 체크.
; 체크 시점에 왕으로 부터 받은 핑이 king_ping_cnt 이하라면
; 연결상태가 나쁜것으로 보고 왕관을 강제로 떨어뜨리게 처리.
; king_ping_time 이 0이면 체크하지 않는다
king_ping_time = 10000
king_ping_cnt = 5
[record]
kill_death_point = 10
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 5
mode_point_time = 60000
mode_record_point_time = 600000
mode_plus_bonus = 0.0f
;25% /1.875f
PesoCorrection = 5.00f
ExpCorrection = 2.625f
ScoreCorrection = 0.5f
LadderScoreCorrection = 1.0f
[ladder_point]
mode_ladder_point = 2.5f
mode_ladder_level_correction = 0.2f
mode_ladder_guild_team_one = 1.5f
mode_ladder_guild_team_two = 1.5f
mode_same_camp_penalty = 1.0f
max_influence_size = 6
influence_gap_1 = 20.0f
influence_bonus_1 = 1.25f
influence_gap_2 = 16.0f
influence_bonus_2 = 1.25f
influence_gap_3 = 12.0f
influence_bonus_3 = 1.25f
influence_gap_4 = 6.0f
influence_bonus_4 = 1.20f
influence_gap_5 = 4.0f
influence_bonus_5 = 1.10f
influence_gap_6 = 0.001f
influence_bonus_6 = 1.0f
[revival_time]
;부활시간
default_time = 2000
;사망시 부활증가시간
increase_time = 1000
;최대증가되는 부활시간
max_time = 10000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 0
vote_round_time = 320000
vote_process_time = 20000
; // 특별상
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 2
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
;// 왕관 실 위치 세팅
;클라이언트의 경우 가세팅(임시세팅)으로 적용됨.
[doublecrown1_object_group1]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown1_wear_generate1_blue]
pos_cnt = 1
pos1_x = -2400.0f
pos1_z = 0.0f
[doublecrown1_wear_generate1_red]
pos_cnt = 1
pos1_x = 2400.0f
pos1_z = 0.0f
[doublecrown1_object_group2]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown1_wear_generate2_blue]
pos_cnt = 1
pos1_x = -1050.0f
pos1_z = 1600.0f
[doublecrown1_wear_generate2_red]
pos_cnt = 1
pos1_x = 1050.0f
pos1_z = 1600.0f
[doublecrown1_object_group3]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown1_wear_generate3_blue]
pos_cnt = 1
pos1_x = -1300.0f
pos1_z = 2200.0f
[doublecrown1_wear_generate3_red]
pos_cnt = 1
pos1_x = 1300.0f
pos1_z = 2200.0f
[doublecrown2_object_group1]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown2_wear_generate1_blue]
pos_cnt = 1
pos1_x = -1000.0f
pos1_z = -1100.0f
[doublecrown2_wear_generate1_red]
pos_cnt = 1
pos1_x = 1000.0f
pos1_z = -1100.0f
[doublecrown2_object_group2]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown2_wear_generate2_blue]
pos_cnt = 1
pos1_x = -1000.0f
pos1_z = 800.0f
[doublecrown2_wear_generate2_red]
pos_cnt = 1
pos1_x = 1000.0f
pos1_z = 800.0f
[doublecrown2_object_group3]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown2_wear_generate3_blue]
pos_cnt = 1
pos1_x = -900.0f
pos1_z = -1200.0f
[doublecrown2_wear_generate3_red]
pos_cnt = 1
pos1_x = 900.0f
pos1_z = 900.0f
; 7월 3일 추가 사항
[crown_point]
;//최대 점수
max_crown_point = 100.0f
;//감소 값
crown_decrease_point = 2.0f
;//ms기준 감소 tick
crown_decrease_time = 2000
;//양팀간 인원 차이에 따른 감소값 보정
crown_member_balance_count = 7
crown_member_balance1 = 0.50f
crown_member_balance2 = 1.00f
crown_member_balance3 = 1.50f
crown_member_balance4 = 2.00f
crown_member_balance5 = 2.50f
crown_member_balance6 = 3.00f
crown_member_balance7 = 3.50f
;//점수 구간별 감소 보정
crown_point_balance_count = 3
crown_point_balance1_point_start = 0
crown_point_balance1_point_end = 20
crown_point_balance1_value = 0.0f
crown_point_balance2_point_start = 21
crown_point_balance2_point_end = 50
crown_point_balance2_value = 1.0f
crown_point_balance3_point_start = 51
crown_point_balance3_point_end = 100
crown_point_balance3_value = 3.0f
; 게이지 회복 (킬, 드랍)
[recovery]
last_attack_kill_recovery_rate = 0.001f
best_attack_kill_recovery_rate = 0.001f
last_drop_kill_recovery_rate = 0.001f
best_drop_kill_recovery_rate = 0.001f
@@ -0,0 +1,263 @@
[info]
change = 1
max_player = 10
; 셔플모드 세팅
[shuffle_round]
shuffle_max_round = 1
shuffle_win_need_round = 1
shuffle_round_time = 300000
[round]
max_round = 1
half_round = 0
max_start_pos = 2
win_need_round = 1
round_time = 480000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 0
final_result_state_time = 8000
tournament_room_final_result_time = 8000
use_view_mode = 1
view_check_time = 4900000
room_close_time = 490000
sham_battle_close_time = 490000
exit_room_time = 500
score_gap_const = 0.5
score_gap_rate_const = 1.5f
ladder_score_gap_const = 0.5f
ladder_score_gap_rate_const = 2.0f
win_score_constant = 2.5f
win_team_score_rate = 1
abuse_min_damage = 1
char_limit_check_min = 1000
[king_ping_check]
; 서버에서 왕의 핑 수준을 king_ping_time 단위로 체크.
; 체크 시점에 왕으로 부터 받은 핑이 king_ping_cnt 이하라면
; 연결상태가 나쁜것으로 보고 왕관을 강제로 떨어뜨리게 처리.
; king_ping_time 이 0이면 체크하지 않는다
king_ping_time = 10000
king_ping_cnt = 5
[record]
kill_death_point = 10
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 5
mode_point_time = 60000
mode_record_point_time = 600000
mode_plus_bonus = 0.0f
;25% /1.875f
PesoCorrection = 5.00f
ExpCorrection = 2.625f
ScoreCorrection = 0.5f
LadderScoreCorrection = 1.0f
[ladder_point]
mode_ladder_point = 2.5f
mode_ladder_level_correction = 0.2f
mode_ladder_guild_team_one = 1.5f
mode_ladder_guild_team_two = 1.5f
mode_same_camp_penalty = 1.0f
max_influence_size = 6
influence_gap_1 = 20.0f
influence_bonus_1 = 1.25f
influence_gap_2 = 16.0f
influence_bonus_2 = 1.25f
influence_gap_3 = 12.0f
influence_bonus_3 = 1.25f
influence_gap_4 = 6.0f
influence_bonus_4 = 1.20f
influence_gap_5 = 4.0f
influence_bonus_5 = 1.10f
influence_gap_6 = 0.001f
influence_bonus_6 = 1.0f
[revival_time]
;부활시간
default_time = 2000
;사망시 부활증가시간
increase_time = 1000
;최대증가되는 부활시간
max_time = 10000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 0
vote_round_time = 320000
vote_process_time = 20000
; // 특별상
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 2
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
;// 왕관 실 위치 세팅
;클라이언트의 경우 가세팅(임시세팅)으로 적용됨.
[doublecrown1_object_group1]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown1_wear_generate1_blue]
pos_cnt = 1
pos1_x = -2400.0f
pos1_z = 0.0f
[doublecrown1_wear_generate1_red]
pos_cnt = 1
pos1_x = 2400.0f
pos1_z = 0.0f
[doublecrown1_object_group2]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown1_wear_generate2_blue]
pos_cnt = 1
pos1_x = -1050.0f
pos1_z = 1600.0f
[doublecrown1_wear_generate2_red]
pos_cnt = 1
pos1_x = 1050.0f
pos1_z = 1600.0f
[doublecrown1_object_group3]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown1_wear_generate3_blue]
pos_cnt = 1
pos1_x = -1300.0f
pos1_z = 2200.0f
[doublecrown1_wear_generate3_red]
pos_cnt = 1
pos1_x = 1300.0f
pos1_z = 2200.0f
[doublecrown2_object_group1]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown2_wear_generate1_blue]
pos_cnt = 1
pos1_x = -1000.0f
pos1_z = -1100.0f
[doublecrown2_wear_generate1_red]
pos_cnt = 1
pos1_x = 1000.0f
pos1_z = -1100.0f
[doublecrown2_object_group2]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown2_wear_generate2_blue]
pos_cnt = 1
pos1_x = -1000.0f
pos1_z = 800.0f
[doublecrown2_wear_generate2_red]
pos_cnt = 1
pos1_x = 1000.0f
pos1_z = 800.0f
[doublecrown2_object_group3]
wear_item_cnt = 2
wear_item1_name = 블루왕관
wear_item2_name = 레드왕관
[doublecrown2_wear_generate3_blue]
pos_cnt = 1
pos1_x = -900.0f
pos1_z = -1200.0f
[doublecrown2_wear_generate3_red]
pos_cnt = 1
pos1_x = 900.0f
pos1_z = 900.0f
; 7월 3일 추가 사항
[crown_point]
;//최대 점수
max_crown_point = 100.0f
;//감소 값
crown_decrease_point = 2.0f
;//ms기준 감소 tick
crown_decrease_time = 2000
;//양팀간 인원 차이에 따른 감소값 보정
crown_member_balance_count = 7
crown_member_balance1 = 0.50f
crown_member_balance2 = 1.00f
crown_member_balance3 = 1.50f
crown_member_balance4 = 2.00f
crown_member_balance5 = 2.50f
crown_member_balance6 = 3.00f
crown_member_balance7 = 3.50f
;//점수 구간별 감소 보정
crown_point_balance_count = 3
crown_point_balance1_point_start = 0
crown_point_balance1_point_end = 20
crown_point_balance1_value = 0.0f
crown_point_balance2_point_start = 21
crown_point_balance2_point_end = 50
crown_point_balance2_value = 1.0f
crown_point_balance3_point_start = 51
crown_point_balance3_point_end = 100
crown_point_balance3_value = 3.0f
; 게이지 회복 (킬, 드랍)
[recovery]
last_attack_kill_recovery_rate = 0.001f
best_attack_kill_recovery_rate = 0.001f
last_drop_kill_recovery_rate = 0.001f
best_drop_kill_recovery_rate = 0.001f
@@ -0,0 +1,105 @@
[info]
change = 0
max_player = 16
[round]
max_round = 1
max_start_pos = 2
ready_state_time = 10000
result_state_time = 12000
final_result_wait_state_time = 0
final_result_state_time = 30000
use_view_mode = 1
view_check_time = 4900000
room_close_time = 490000
sham_battle_close_time = 490000
exit_room_time = 500
win_team_score_rate = 1
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
;모든 NPC를 다 잡으면 승 : 아니면 패
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 60000
mode_record_point_time = 600000
mode_point_max_time = 199999999
mode_plus_bonus = 0.0f
;25% /1.25f
PesoCorrection = 5.00f
ExpCorrection = 1.75f
[MonsterRewardRate]
MaxDamageRank = 4
DamageRank_1 = 1.00f
DamageRank_2 = 1.00f
DamageRank_3 = 1.00f
DamageRank_4 = 1.00f
[ladder_point]
mode_ladder_point = 2.5f
mode_ladder_level_correction = 0.2f
mode_ladder_guild_team_one = 2.0f
mode_ladder_guild_team_two = 2.0f
max_influence_size = 6
influence_gap_1 = 20.0f
influence_bonus_1 = 1.25f
influence_gap_2 = 16.0f
influence_bonus_2 = 1.25f
influence_gap_3 = 12.0f
influence_bonus_3 = 1.25f
influence_gap_4 = 6.0f
influence_bonus_4 = 1.20f
influence_gap_5 = 4.0f
influence_bonus_5 = 1.10f
influence_gap_6 = 0.001f
influence_bonus_6 = 1.0f
; // 미사용
[statpoint]
level_per_stat_point = 3
[revival_time]
default_time = 2000
increase_time = 0
max_time = 2000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴 투표 정보
[vote_info]
vote_adoption_per = 0.70f
vote_user_pool = 2
vote_round_win = 0
vote_round_time = 320000
vote_process_time = 20000
; // 특별상
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 0
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 1800000
@@ -0,0 +1,105 @@
[info]
change = 0
max_player = 16
[round]
max_round = 1
max_start_pos = 2
ready_state_time = 10000
result_state_time = 12000
final_result_wait_state_time = 0
final_result_state_time = 30000
use_view_mode = 1
view_check_time = 4900000
room_close_time = 490000
sham_battle_close_time = 490000
exit_room_time = 500
win_team_score_rate = 1
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
;모든 NPC를 다 잡으면 승 : 아니면 패
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 60000
mode_record_point_time = 600000
mode_point_max_time = 199999999
mode_plus_bonus = 0.0f
;25% /1.25f
PesoCorrection = 20.00f
ExpCorrection = 18.0f
[MonsterRewardRate]
MaxDamageRank = 4
DamageRank_1 = 1.00f
DamageRank_2 = 1.00f
DamageRank_3 = 1.00f
DamageRank_4 = 1.00f
[ladder_point]
mode_ladder_point = 2.5f
mode_ladder_level_correction = 0.2f
mode_ladder_guild_team_one = 2.0f
mode_ladder_guild_team_two = 2.0f
max_influence_size = 6
influence_gap_1 = 20.0f
influence_bonus_1 = 1.25f
influence_gap_2 = 16.0f
influence_bonus_2 = 1.25f
influence_gap_3 = 12.0f
influence_bonus_3 = 1.25f
influence_gap_4 = 6.0f
influence_bonus_4 = 1.20f
influence_gap_5 = 4.0f
influence_bonus_5 = 1.10f
influence_gap_6 = 0.001f
influence_bonus_6 = 1.0f
; // 미사용
[statpoint]
level_per_stat_point = 3
[revival_time]
default_time = 2000
increase_time = 0
max_time = 2000
select_char_time = 10000
drop_item_live_time = 30000
; // 강퇴 투표 정보
[vote_info]
vote_adoption_per = 0.70f
vote_user_pool = 2
vote_round_win = 0
vote_round_time = 320000
vote_process_time = 20000
; // 특별상
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 0
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 1800000
@@ -0,0 +1,96 @@
[info]
change =0
max_player = 4
[round]
max_round = 1
max_start_pos = 2
win_need_round = 1
round_time = 150000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 2000
final_result_state_time = 28000
use_view_mode = 0
view_check_time = 300000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
win_team_score_rate = 1
no_limite_symbol = 1
score_gauge_deth_time_rate = 1.0f
score_gauge_max_rate = 1.0f
score_gauge_const_value = 300000
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 30000
mode_record_point_time = 300000
mode_point_max_time = 300000
mode_plus_bonus = 0.0f
PesoCorrection = 5.00f
ExpCorrection = 0.75f
[revival_time]
default_time = 10000
increase_time = 10000
max_time = 30000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 1
vote_round_time = 0
vote_process_time = 20000
; // 특별상 모드별 설정
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 100
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
;-------------<OBJECT GROUP LIST>-----------------
; // 아이템 제공 .... 각 맵별 지정
;-------------<MAPITEM GROUP LIST>-----------------
@@ -0,0 +1,96 @@
[info]
change =0
max_player = 4
[round]
max_round = 1
max_start_pos = 2
win_need_round = 1
round_time = 150000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 2000
final_result_state_time = 28000
use_view_mode = 0
view_check_time = 300000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
win_team_score_rate = 1
no_limite_symbol = 1
score_gauge_deth_time_rate = 1.0f
score_gauge_max_rate = 1.0f
score_gauge_const_value = 300000
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 30000
mode_record_point_time = 300000
mode_point_max_time = 300000
mode_plus_bonus = 0.0f
PesoCorrection = 20.00f
ExpCorrection = 18.0f
[revival_time]
default_time = 10000
increase_time = 10000
max_time = 30000
select_char_time = 10000
drop_item_live_time = 30000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 1
vote_round_time = 0
vote_process_time = 20000
; // 특별상 모드별 설정
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 100
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
;-------------<OBJECT GROUP LIST>-----------------
; // 아이템 제공 .... 각 맵별 지정
;-------------<MAPITEM GROUP LIST>-----------------
@@ -0,0 +1,253 @@
[info]
change = 1
max_player = 8
[round]
max_round = 1
half_round = 0
max_start_pos = 2
round_time = 100000
ready_state_time = 2000
result_state_time = 8000
final_result_wait_state_time = 0
final_result_state_time = 8000
tournament_room_final_result_time = 8000
use_view_mode = 0
view_check_time = 30000
room_close_time = 110000
sham_battle_close_time = 110000
exit_room_time = 500
; Champion Only
fight_victory_bonus_rate = 0.1f
max_fight_victory_bonus_count = 10
fight_abuse_time = 30000
fight_abuse_cheer_time = 1000
fight_cheer_peso_const = 62
fight_cheer_max_const = 50
fight_cheer_awaiter_const = 24
fight_cheer_champion_const = 2
score_gap_const = 0.5
score_gap_rate_const = 1.5f
ladder_score_gap_const = 0.5f
ladder_score_gap_rate_const = 2.0f
win_score_constant = 2.5f
win_team_score_rate = 1
abuse_min_damage = 1
char_limit_check_min = 1000
[record]
kill_death_point = 10
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 5
mode_point_time = 60000
mode_record_point_time = 600000
mode_plus_bonus = 0.25f
;25% /1.25f
PesoCorrection = 5.00f
ExpCorrection = 1.75f
[revival_time]
default_time = 500
increase_time = 0
max_time = 500
select_char_time = 8000
drop_item_live_time = 60000
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 0
vote_round_time = 320000
vote_process_time = 20000
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 2
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
[fight_npc]
fight_npc_stage_cnt = 5
fight_npc_cnt = 13
fight_npc1_stage1_code = 100101
fight_npc1_stage2_code = 100102
fight_npc1_stage3_code = 100103
fight_npc1_stage4_code = 100104
fight_npc1_stage5_code = 100105
fight_npc2_stage1_code = 100401
fight_npc2_stage2_code = 100402
fight_npc2_stage3_code = 100403
fight_npc2_stage4_code = 100404
fight_npc2_stage5_code = 100405
fight_npc3_stage1_code = 100601
fight_npc3_stage2_code = 100602
fight_npc3_stage3_code = 100603
fight_npc3_stage4_code = 100604
fight_npc3_stage5_code = 100605
fight_npc4_stage1_code = 100901
fight_npc4_stage2_code = 100902
fight_npc4_stage3_code = 100903
fight_npc4_stage4_code = 100904
fight_npc4_stage5_code = 100905
fight_npc5_stage1_code = 101201
fight_npc5_stage2_code = 101202
fight_npc5_stage3_code = 101203
fight_npc5_stage4_code = 101204
fight_npc5_stage5_code = 101205
fight_npc6_stage1_code = 101301
fight_npc6_stage2_code = 101302
fight_npc6_stage3_code = 101303
fight_npc6_stage4_code = 101304
fight_npc6_stage5_code = 101305
fight_npc7_stage1_code = 101401
fight_npc7_stage2_code = 101402
fight_npc7_stage3_code = 101403
fight_npc7_stage4_code = 101404
fight_npc7_stage5_code = 101405
fight_npc8_stage1_code = 101501
fight_npc8_stage2_code = 101502
fight_npc8_stage3_code = 101503
fight_npc8_stage4_code = 101504
fight_npc8_stage5_code = 101505
fight_npc9_stage1_code = 101601
fight_npc9_stage2_code = 101602
fight_npc9_stage3_code = 101603
fight_npc9_stage4_code = 101604
fight_npc9_stage5_code = 101605
fight_npc10_stage1_code = 101701
fight_npc10_stage2_code = 101702
fight_npc10_stage3_code = 101703
fight_npc10_stage4_code = 101704
fight_npc10_stage5_code = 101705
fight_npc11_stage1_code = 101901
fight_npc11_stage2_code = 101902
fight_npc11_stage3_code = 101903
fight_npc11_stage4_code = 101904
fight_npc11_stage5_code = 101905
fight_npc12_stage1_code = 102001
fight_npc12_stage2_code = 102002
fight_npc12_stage3_code = 102003
fight_npc12_stage4_code = 102004
fight_npc12_stage5_code = 102005
fight_npc13_stage1_code = 102101
fight_npc13_stage2_code = 102102
fight_npc13_stage3_code = 102103
fight_npc13_stage4_code = 102104
fight_npc13_stage5_code = 102105
new_challenger_duration = 4000
npc_continue_duration = 10000
;------------------------/ Item Reset
[fight1_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = 550.0f
pos2_x = 200.0f
pos2_z = 550.0f
pos3_x = 0.0f
pos3_z = 550.0f
[fight2_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -800.0f
pos2_x = 200.0f
pos2_z = -800.0f
pos3_x = 0.0f
pos3_z = -800.0f
[fight3_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -2900.0f
pos2_x = 200.0f
pos2_z = -2900.0f
pos3_x = 0.0f
pos3_z = -2900.0f
[fight4_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -2880.0f
pos2_x = 200.0f
pos2_z = -2880.0f
pos3_x = 0.0f
pos3_z = -2880.0f
[fight5_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -920.0f
pos2_x = 200.0f
pos2_z = -920.0f
pos3_x = 0.0f
pos3_z = -920.0f
[fight6_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -700.0f
pos2_x = 200.0f
pos2_z = -700.0f
pos3_x = 0.0f
pos3_z = -700.0f
@@ -0,0 +1,253 @@
[info]
change = 1
max_player = 8
[round]
max_round = 1
half_round = 0
max_start_pos = 2
round_time = 100000
ready_state_time = 2000
result_state_time = 8000
final_result_wait_state_time = 0
final_result_state_time = 8000
tournament_room_final_result_time = 8000
use_view_mode = 0
view_check_time = 30000
room_close_time = 110000
sham_battle_close_time = 110000
exit_room_time = 500
; Champion Only
fight_victory_bonus_rate = 0.1f
max_fight_victory_bonus_count = 10
fight_abuse_time = 30000
fight_abuse_cheer_time = 1000
fight_cheer_peso_const = 62
fight_cheer_max_const = 50
fight_cheer_awaiter_const = 24
fight_cheer_champion_const = 2
score_gap_const = 0.5
score_gap_rate_const = 1.5f
ladder_score_gap_const = 0.5f
ladder_score_gap_rate_const = 2.0f
win_score_constant = 2.5f
win_team_score_rate = 1
abuse_min_damage = 1
char_limit_check_min = 1000
[record]
kill_death_point = 10
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 5
mode_point_time = 60000
mode_record_point_time = 600000
mode_plus_bonus = 0.25f
;25% /1.25f
PesoCorrection = 5.00f
ExpCorrection = 1.75f
[revival_time]
default_time = 500
increase_time = 0
max_time = 500
select_char_time = 8000
drop_item_live_time = 60000
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 0
vote_round_time = 320000
vote_process_time = 20000
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 2
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
[fight_npc]
fight_npc_stage_cnt = 5
fight_npc_cnt = 13
fight_npc1_stage1_code = 100101
fight_npc1_stage2_code = 100102
fight_npc1_stage3_code = 100103
fight_npc1_stage4_code = 100104
fight_npc1_stage5_code = 100105
fight_npc2_stage1_code = 100401
fight_npc2_stage2_code = 100402
fight_npc2_stage3_code = 100403
fight_npc2_stage4_code = 100404
fight_npc2_stage5_code = 100405
fight_npc3_stage1_code = 100601
fight_npc3_stage2_code = 100602
fight_npc3_stage3_code = 100603
fight_npc3_stage4_code = 100604
fight_npc3_stage5_code = 100605
fight_npc4_stage1_code = 100901
fight_npc4_stage2_code = 100902
fight_npc4_stage3_code = 100903
fight_npc4_stage4_code = 100904
fight_npc4_stage5_code = 100905
fight_npc5_stage1_code = 101201
fight_npc5_stage2_code = 101202
fight_npc5_stage3_code = 101203
fight_npc5_stage4_code = 101204
fight_npc5_stage5_code = 101205
fight_npc6_stage1_code = 101301
fight_npc6_stage2_code = 101302
fight_npc6_stage3_code = 101303
fight_npc6_stage4_code = 101304
fight_npc6_stage5_code = 101305
fight_npc7_stage1_code = 101401
fight_npc7_stage2_code = 101402
fight_npc7_stage3_code = 101403
fight_npc7_stage4_code = 101404
fight_npc7_stage5_code = 101405
fight_npc8_stage1_code = 101501
fight_npc8_stage2_code = 101502
fight_npc8_stage3_code = 101503
fight_npc8_stage4_code = 101504
fight_npc8_stage5_code = 101505
fight_npc9_stage1_code = 101601
fight_npc9_stage2_code = 101602
fight_npc9_stage3_code = 101603
fight_npc9_stage4_code = 101604
fight_npc9_stage5_code = 101605
fight_npc10_stage1_code = 101701
fight_npc10_stage2_code = 101702
fight_npc10_stage3_code = 101703
fight_npc10_stage4_code = 101704
fight_npc10_stage5_code = 101705
fight_npc11_stage1_code = 101901
fight_npc11_stage2_code = 101902
fight_npc11_stage3_code = 101903
fight_npc11_stage4_code = 101904
fight_npc11_stage5_code = 101905
fight_npc12_stage1_code = 102001
fight_npc12_stage2_code = 102002
fight_npc12_stage3_code = 102003
fight_npc12_stage4_code = 102004
fight_npc12_stage5_code = 102005
fight_npc13_stage1_code = 102101
fight_npc13_stage2_code = 102102
fight_npc13_stage3_code = 102103
fight_npc13_stage4_code = 102104
fight_npc13_stage5_code = 102105
new_challenger_duration = 4000
npc_continue_duration = 10000
;------------------------/ Item Reset
[fight1_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = 550.0f
pos2_x = 200.0f
pos2_z = 550.0f
pos3_x = 0.0f
pos3_z = 550.0f
[fight2_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -800.0f
pos2_x = 200.0f
pos2_z = -800.0f
pos3_x = 0.0f
pos3_z = -800.0f
[fight3_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -2900.0f
pos2_x = 200.0f
pos2_z = -2900.0f
pos3_x = 0.0f
pos3_z = -2900.0f
[fight4_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -2880.0f
pos2_x = 200.0f
pos2_z = -2880.0f
pos3_x = 0.0f
pos3_z = -2880.0f
[fight5_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -920.0f
pos2_x = 200.0f
pos2_z = -920.0f
pos3_x = 0.0f
pos3_z = -920.0f
[fight6_mapitem_group1]
pos_cnt = 2
pos1_x = -200.0f
pos1_z = -700.0f
pos2_x = 200.0f
pos2_z = -700.0f
pos3_x = 0.0f
pos3_z = -700.0f
@@ -0,0 +1,95 @@
[info]
change =0
max_player = 4
[round]
max_round = 1
max_start_pos = 2
win_need_round = 1
round_time = 150000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 2000
final_result_state_time = 28000
use_view_mode = 0
view_check_time = 300000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
win_team_score_rate = 1
no_limite_symbol = 1
score_gauge_deth_time_rate = 1.0f
score_gauge_max_rate = 1.0f
score_gauge_const_value = 300000
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 30000
mode_record_point_time = 300000
mode_point_max_time = 300000
mode_plus_bonus = 0.0f
PesoCorrection = 5.00f
ExpCorrection = 0.75f
[revival_time]
default_time = 10000
increase_time = 10000
max_time = 30000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 1
vote_round_time = 0
vote_process_time = 20000
; // 특별상 모드별 설정
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 100
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
;-------------<OBJECT GROUP LIST>-----------------
; // 아이템 제공 .... 각 맵별 지정
;-------------<MAPITEM GROUP LIST>-----------------
@@ -0,0 +1,95 @@
[info]
change =0
max_player = 4
[round]
max_round = 1
max_start_pos = 2
win_need_round = 1
round_time = 150000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 2000
final_result_state_time = 28000
use_view_mode = 0
view_check_time = 300000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
win_team_score_rate = 1
no_limite_symbol = 1
score_gauge_deth_time_rate = 1.0f
score_gauge_max_rate = 1.0f
score_gauge_const_value = 300000
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 30000
mode_record_point_time = 300000
mode_point_max_time = 300000
mode_plus_bonus = 0.0f
PesoCorrection = 5.00f
ExpCorrection = 5.0f
[revival_time]
default_time = 10000
increase_time = 10000
max_time = 30000
select_char_time = 10000
drop_item_live_time = 30000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 1
vote_round_time = 0
vote_process_time = 20000
; // 특별상 모드별 설정
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 100
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
;-------------<OBJECT GROUP LIST>-----------------
; // 아이템 제공 .... 각 맵별 지정
;-------------<MAPITEM GROUP LIST>-----------------
@@ -0,0 +1,176 @@
[info]
change = 0
max_player = 10
[round]
max_round = 1
half_round = 0
max_start_pos = 2
win_need_round = 3
round_time = 180000
ready_state_time = 4000
result_state_time = 7000
final_result_wait_state_time = 0
final_result_state_time = 8000
tournament_room_final_result_time = 8000
use_view_mode = 1
view_check_time = 300000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
win_team_score_rate = 1
abuse_min_damage = 0
char_limit_check_min = 1000
[record]
kill_death_point = 10
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 5
mode_ladder_point_round= 5
mode_point_time = 60000
mode_point_max_time = 900000
mode_record_point_time = 600000
mode_plus_bonus = 0.25f
;25% /1.25f
PesoCorrection = 5.00f
ExpCorrection = 1.75f
ScoreCorrection = 0.50f
LadderScoreCorrection = 1.00f
[revival_time]
default_time = 2000
increase_time = 0
max_time = 2000
select_char_time = 5000
drop_item_live_time = 10000
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 2
vote_round_time = 0
vote_process_time = 20000
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 2
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
;---------------------------------------------// Soccer Ball
[football1_object_group1]
ball_struct_cnt = 1
ball_struct1_num = 1
ball_struct1_pos_x = 0.0f
ball_struct1_pos_y = 1500.0f
ball_struct1_pos_z = 0.0f
ball_struct1_range = 250.0f
ball_struct1_supplytime = 4000
ball_start_position_cnt = 13
ball_start1_pos_x = 0.0f
ball_start1_pos_z = 0.0f
ball_start2_pos_x = 0.0f
ball_start2_pos_z = 150.0f
ball_start3_pos_x = 0.0f
ball_start3_pos_z = -150.0f
ball_start4_pos_x = 0.0f
ball_start4_pos_z = 300.0f
ball_start5_pos_x = 0.0f
ball_start5_pos_z = -300.0f
ball_start6_pos_x = 200.0f
ball_start6_pos_z = 100.0f
ball_start7_pos_x = 200.0f
ball_start7_pos_z = 200.0f
ball_start8_pos_x = 200.0f
ball_start8_pos_z = -100.0f
ball_start9_pos_x = 200.0f
ball_start9_pos_z = -200.0f
ball_start10_pos_x = -200.0f
ball_start10_pos_z = 100.0f
ball_start11_pos_x = -200.0f
ball_start11_pos_z = 200.0f
ball_start12_pos_x = -200.0f
ball_start12_pos_z = -100.0f
ball_start13_pos_x = -200.0f
ball_start13_pos_z = -200.0f
[football1_object_group2]
ball_struct_cnt = 1
ball_struct1_num = 2
ball_struct1_pos_x = 0.0f
ball_struct1_pos_y = 1500.0f
ball_struct1_pos_z = 0.0f
ball_struct1_range = 250.0f
ball_struct1_supplytime = 4000
ball_start_position_cnt = 13
ball_start1_pos_x = 0.0f
ball_start1_pos_z = 0.0f
ball_start2_pos_x = 0.0f
ball_start2_pos_z = 150.0f
ball_start3_pos_x = 0.0f
ball_start3_pos_z = -150.0f
ball_start4_pos_x = 0.0f
ball_start4_pos_z = 300.0f
ball_start5_pos_x = 0.0f
ball_start5_pos_z = -300.0f
ball_start6_pos_x = 200.0f
ball_start6_pos_z = 100.0f
ball_start7_pos_x = 200.0f
ball_start7_pos_z = 200.0f
ball_start8_pos_x = 200.0f
ball_start8_pos_z = -100.0f
ball_start9_pos_x = 200.0f
ball_start9_pos_z = -200.0f
ball_start10_pos_x = -200.0f
ball_start10_pos_z = 100.0f
ball_start11_pos_x = -200.0f
ball_start11_pos_z = 200.0f
ball_start12_pos_x = -200.0f
ball_start12_pos_z = -100.0f
ball_start13_pos_x = -200.0f
ball_start13_pos_z = -200.0f
@@ -0,0 +1,6 @@
[common]
parse_rapid_packet = 0
nagle_algorithm = 1
plaza_nagle_algorithm = 1
char_change_udp = 1
whole_chat_on = 1
@@ -0,0 +1,10 @@
[common]
max_ini = 1
;RELOAD_HACK = 0, RELOAD_USERDISPERSION = 1, RELOAD_PROCESS = 2, RELOAD_CLASS = 3, RELOAD_DECO = 4,
;RELOAD_ETC = 5, RELOAD_EVENT = 6, RELOAD_QUEST = 7, RELOAD_MODE = 8, RELOAD_PRESENT = 9, RELOAD_EXCAVATION = 10,
;RELOAD_FISHING = 11, RELOAD_ITEMCOMPOUND = 12, RELOAD_EXTRAITEM = 13, RELOAD_TRADE = 14, RELOAD_LEVELMATCH = 15,
;RELOAD_ITEMINIT_CONTROL = 16, RELOAD_CONFIG = 17, RELOAD_ALCHEMIC_MGR = 18, RELOAD_PET = 19, RELOAD_AWAKE = 20,
;RELOAD_MISSION = 21, RELOAD_ROLLBOOK = 22, RELOAD_COSTUMESHOP = 23, RELOAD_COSTUME = 24, RELOAD_MEDAL = 25
;RELOAD_SETITEM = 26, RELOAD_SUPERGASHAPON = 27, RELOAD_ACCESSORY = 28
ini_type1 = 17
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,111 @@
[info]
change = 0
const_max_player = 32
[round]
max_round = 1
max_start_pos = 5
round_time = 300000
ready_state_time = 4000
result_state_time = 15000
final_result_state_time = 15000
use_view_mode = 0
view_check_time = 0
room_close_time = 0
exit_room_time = 50
win_team_score_rate = 1
abuse_min_damage = 1
score_list_cnt = 4
score1 = 1
score2 = 1
score3 = 1
score4 = 1
char_limit_check_min = 0
etcitem_check_time = 600000
[record]
kill_death_point = 10
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point = 0
mode_point_time = 540000
; // 미사용
[statpoint]
level_per_stat_point = 3
[revival_time]
default_time = 0
increase_time = 0
max_time = 0
select_char_time = 10000
drop_item_live_time = 30000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 0
vote_round_time = 0
vote_process_time = 20000
; 개발자K
[character]
max_character = 1
character1_code = 1
character1_start_time = 0
character1_start_x = 0.0f
character1_start_z = -260.0f
; AI 몬스터
[monster_info]
monster_code = 2.3.4.5.6.7.8.9.10
monster_drop_item = 1000
monster_limit_count = 3
monster_startx_1 = 650.0f
monster_startz_1 = -2500.0f
monster_startx_2 = -650.0f
monster_startz_2 = -2500.0f
monster_startx_3 = 1.0f
monster_startz_3 = -3000.0f
;monster_startx_1 = 1.0f
;monster_startz_1 = -2500.0f
;monster_startx_2 = 1.0f
;monster_startz_2 = -1900.0f
;monster_startx_3 = 1.0f
;monster_startz_3 = -3000.0f
;monster_startx_4 = 650.0f
;monster_startz_4 = -2500.0f
;monster_startx_5 = -650.0f
;monster_startz_5 = -2500.0f
@@ -0,0 +1,133 @@
[info]
change = 0
max_player = 10
[round]
max_round = 1
half_round = 0
max_start_pos = 2
win_need_round = 3
round_time = 180000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 0
final_result_state_time = 8000
use_view_mode = 1
view_check_time = 30000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
prisioner_wait_time = 5000
win_team_score_rate = 1
abuse_min_damage = 1
char_limit_check_min = 1000
[record]
kill_death_point = 10
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 5
mode_ladder_point_round= 5
mode_point_time = 60000
mode_point_max_time = 900000
mode_record_point_time = 600000
mode_plus_bonus = 0.2f
ScoreCorrection = 0.5f
LadderScoreCorrection = 1.0f
;25% /1.25f
PesoCorrection = 5.00f
ExpCorrection = 1.75f
[ladder_point]
mode_hero_expert = 10
mode_ladder_point = 1.5f
mode_ladder_level_correction = 0.2f
mode_ladder_guild_team_one = 1.5f
mode_ladder_guild_team_two = 1.5f
mode_same_camp_penalty = 1.0f
max_influence_size = 6
influence_gap_1 = 20.0f
influence_bonus_1 = 1.25f
influence_gap_2 = 16.0f
influence_bonus_2 = 1.25f
influence_gap_3 = 12.0f
influence_bonus_3 = 1.25f
influence_gap_4 = 6.0f
influence_bonus_4 = 1.20f
influence_gap_5 = 4.0f
influence_bonus_5 = 1.10f
influence_gap_6 = 0.001f
influence_bonus_6 = 1.0f
[HeroTitleBonus]
MaxBonus = 8
Title1_Type = 1
Title1_Bonus= 2.00f
Title2_Type = 2
Title2_Bonus= 1.00f
Title3_Type = 3
Title3_Bonus= 0.50f
Title4_Type = 4
Title4_Bonus= 0.25f
Title5_Type = 5
Title5_Bonus= 0.15f
Title6_Type = 6
Title6_Bonus= 0.10f
Title7_Type = 7
Title7_Bonus= 0.05f
Title8_Type = 8
Title8_Bonus= 0.03f
; // °­Åð
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 2
vote_round_time = 0
vote_process_time = 20000
; // Ưº°»ó
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 2
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
[revival_time]
default_time = 8000
increase_time = 0
max_time = 8000
select_char_time = 10000
drop_item_live_time = 90000
@@ -0,0 +1,260 @@
[info]
change = 0
max_player = 10
[round]
max_round = 1
half_round = 0
max_start_pos = 2
win_need_round = 2
round_time = 300000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 0
final_result_state_time = 8000
tournament_room_final_result_time = 8000
use_view_mode = 1
view_check_time = 300000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
crown_rate = 0
win_team_score_rate = 1
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
; ★ 스코어 밸런스 --------------------------
win_team_score_time = 27000
lose_team_score_time = 27000
draw_score_time = 27000
;인원에 따라 시간 변동 비율
team_score_decrease_rate = 0.25f
; 인원 핸디캡
many_people_extra_rate = 1.0f
; 라운드 시간에 따른 게이지 변화
score_gauge_max_rate = 1.0f
score_gauge_const_value = 300000
score_gauge_deth_time_rate = 2.0f
;----------------------------------------------
[king_ping_check]
; 서버에서 왕의 핑 수준을 king_ping_time 단위로 체크.
; 체크 시점에 왕으로 부터 받은 핑이 king_ping_cnt 이하라면
; 연결상태가 나쁜것으로 보고 왕관을 강제로 떨어뜨리게 처리.
; king_ping_time 이 0이면 체크하지 않는다
king_ping_time = 10000
king_ping_cnt = 5
[record]
kill_death_point = 10
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 5
mode_ladder_point_round= 5
mode_point_time = 60000
mode_point_max_time = 900000
mode_record_point_time = 600000
mode_plus_bonus = 0.25f
;25% /1.25f
;1.75f => 5f
PesoCorrection = 5.00f
ExpCorrection = 1.75f
ScoreCorrection = 0.5f
LadderScoreCorrection = 1.0f
[ladder_point]
mode_ladder_point = 2.5f
mode_ladder_level_correction = 0.2f
mode_ladder_guild_team_one = 1.5f
mode_ladder_guild_team_two = 1.5f
max_influence_size = 6
influence_gap_1 = 20.0f
influence_bonus_1 = 1.25f
influence_gap_2 = 16.0f
influence_bonus_2 = 1.25f
influence_gap_3 = 12.0f
influence_bonus_3 = 1.25f
influence_gap_4 = 6.0f
influence_bonus_4 = 1.20f
influence_gap_5 = 4.0f
influence_bonus_5 = 1.10f
influence_gap_6 = 0.001f
influence_bonus_6 = 1.0f
; // 미사용
[statpoint]
level_per_stat_point = 3
[revival_time]
default_time = 5000
increase_time = 5000
max_time = 30000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴 투표 정보
[vote_info]
vote_adoption_per = 0.70f
vote_user_pool = 2
vote_round_win = 1
vote_round_time = 0
vote_process_time = 20000
; // 특별상 모드별 설정
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 2
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
;-------------<OBJECT GROUP LIST>-----------------
[hidden1_object_group1]
wear_item_cnt = 1
wear_item1_name = 왕관
[hidden1_wear_generate1]
pos_cnt = 4
pos1_x = 0.0f
pos1_z = 0.0f
pos2_x = 0.0f
pos2_z = 0.0f
pos3_x = 0.0f
pos3_z = 0.0f
pos4_x = 0.0f
pos4_z = 0.0f
[hidden1_object_group2]
wear_item_cnt = 1
wear_item1_name = 왕관
[hidden1_wear_generate2]
pos_cnt = 4
pos1_x = 0.0f
pos1_z = 1000f
pos2_x = 0.0f
pos2_z = 1000f
pos3_x = 0.0f
pos3_z = 1000f
pos4_x = 0.0f
pos4_z = 1000f
[hidden1_object_group3]
wear_item_cnt = 1
wear_item1_name = 왕관
[hidden1_wear_generate3]
pos_cnt = 4
pos1_x = 0.0f
pos1_z = 900.0f
pos2_x = 0.0f
pos2_z = 900.0f
pos3_x = 0.0f
pos3_z = 900.0f
pos4_x = 0.0f
pos4_z = 900.0f
[hidden2_object_group1]
wear_item_cnt = 1
wear_item1_name = 왕관
[hidden2_wear_generate1]
pos_cnt = 5
pos1_x = 0.0f
pos1_z = 0.0f
pos2_x = -1000.0f
pos2_z = -1100.0f
pos3_x = 1000.0f
pos3_z = -1100.0f
pos4_x = 1000.0f
pos4_z = 700.0f
pos5_x = -1000.0f
pos5_z = 700.0f
[hidden2_object_group2]
wear_item_cnt = 1
wear_item1_name = 왕관
[hidden2_wear_generate2]
pos_cnt = 4
pos1_x = 0.0f
pos1_z = 1800.0f
pos2_x = -1000.0f
pos2_z = 800.0f
pos3_x = 1000.0f
pos3_z = 800.0f
pos4_x = 0.0f
pos4_z = -100.0f
[hidden2_object_group3]
wear_item_cnt = 1
wear_item1_name = 왕관
[hidden2_wear_generate3]
pos_cnt = 5
pos1_x = 0.0f
pos1_z = -200.0f
pos2_x = -900.0f
pos2_z = -1200.0f
pos3_x = 900.0f
pos3_z = 900.0f
pos4_x = -1800.0f
pos4_z = -200.0f
pos5_x = 1800.0f
pos5_z = 0.0f
[hidden901_object_group1]
wear_item_cnt = 1
wear_item1_name = 왕관
[hidden901_wear_generate1]
pos_cnt = 4
pos1_x = 0.0f
pos1_z = 900.0f
pos2_x = 0.0f
pos2_z = 900.0f
pos3_x = 0.0f
pos3_z = 900.0f
pos4_x = 0.0f
pos4_z = 900.0f
; // 아이템 제공 .... 각 맵별 지정
;-------------<MAPITEM GROUP LIST>-----------------
@@ -0,0 +1,109 @@
[info]
max_player = 16
[round]
max_round = 1
max_start_pos = 2
ready_state_time = 10000
result_state_time = 12000
final_result_wait_state_time = 0
final_result_state_time = 8000
use_view_mode = 1
view_check_time = 4900000
room_close_time = 490000
sham_battle_close_time = 490000
exit_room_time = 500
win_team_score_rate = 1
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
;모든 NPC를 다 잡으면 승 : 아니면 패
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 60000
mode_record_point_time = 600000
mode_point_max_time = 199999999
mode_plus_bonus = 0.0f
;25% /1.25f
PesoCorrection = 5.00f
ExpCorrection = 1.75f
[ladder_point]
mode_ladder_point = 2.5f
mode_ladder_level_correction = 0.2f
mode_ladder_guild_team_one = 2.0f
mode_ladder_guild_team_two = 2.0f
max_influence_size = 6
influence_gap_1 = 20.0f
influence_bonus_1 = 1.25f
influence_gap_2 = 16.0f
influence_bonus_2 = 1.25f
influence_gap_3 = 12.0f
influence_bonus_3 = 1.25f
influence_gap_4 = 6.0f
influence_bonus_4 = 1.20f
influence_gap_5 = 4.0f
influence_bonus_5 = 1.10f
influence_gap_6 = 0.001f
influence_bonus_6 = 1.0f
; // 미사용
[statpoint]
level_per_stat_point = 3
[revival_time]
default_time = 2000
increase_time = 0
max_time = 2000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴 투표 정보
[vote_info]
vote_adoption_per = 0.62f
vote_user_pool = 2
vote_round_win = 0
vote_round_time = 320000
vote_process_time = 20000
; // 특별상
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 0
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 1800000
; // 몬스터 KO 보상 비율
[MonsterRewardRate]
MaxDamageRank = 4
DamageRank_1 = 50
DamageRank_2 = 25
DamageRank_3 = 15
DamageRank_4 = 10
;-------------<OBJECT GROUP LIST>-----------------
; // 아이템 제공 .... 각 맵별 지정
;-----------------------------------------------------------------
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,3 @@
[info]
max_list = 0
@@ -0,0 +1,97 @@
[info]
change = 0
max_player = 16
[round]
max_round = 1
max_start_pos = 2
ready_state_time = 10000
result_state_time = 12000
final_result_wait_state_time = 0
final_result_state_time = 8000
use_view_mode = 1
view_check_time = 4900000
room_close_time = 490000
sham_battle_close_time = 490000
exit_room_time = 500
win_team_score_rate = 1
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
;모든 NPC를 다 잡으면 승 : 아니면 패
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 60000
mode_record_point_time = 600000
mode_point_max_time = 199999999
mode_plus_bonus = 0.0f
;25% /1.25f
PesoCorrection = 5.00f
; ExpCorrection = 1.75f
ExpCorrection = 4.00f
[ladder_point]
mode_ladder_point = 2.5f
mode_ladder_level_correction = 0.2f
mode_ladder_guild_team_one = 2.0f
mode_ladder_guild_team_two = 2.0f
max_influence_size = 6
influence_gap_1 = 20.0f
influence_bonus_1 = 1.25f
influence_gap_2 = 16.0f
influence_bonus_2 = 1.25f
influence_gap_3 = 12.0f
influence_bonus_3 = 1.25f
influence_gap_4 = 6.0f
influence_bonus_4 = 1.20f
influence_gap_5 = 4.0f
influence_bonus_5 = 1.10f
influence_gap_6 = 0.001f
influence_bonus_6 = 1.0f
; // 미사용
[statpoint]
level_per_stat_point = 3
[revival_time]
default_time = 2000
increase_time = 0
max_time = 2000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴 투표 정보
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 0
vote_round_time = 320000
vote_process_time = 20000
; // 특별상
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 0
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 1800000
@@ -0,0 +1,144 @@
[info]
change =0
max_player = 16
;레이드 추가 정보
boss_cnt_sec = 10
boss_cnt_offset_sec = 1
; 최대 기여도 계산 배수.
max_contribute_amplify = 4
; 최대 기여도 포인트값.
max_contribute_point = 1000000
[round]
max_round = 1
max_start_pos = 1
win_need_round = 1
round_time = 150000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 2000
final_result_state_time = 28000
use_view_mode = 0
view_check_time = 300000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
win_team_score_rate = 1
no_limite_symbol = 1
score_gauge_deth_time_rate = 1.0f
score_gauge_max_rate = 1.0f
score_gauge_const_value = 300000
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 1
mode_record_point_time = 300000
mode_point_max_time = 300000
mode_plus_bonus = 0.0f
;25% /1.25f
PesoCorrection = 5.00f
ExpCorrection = 1.75f
[revival_time]
default_time = 8000
increase_time = 8000
max_time = 8000
select_char_time = 10000
drop_item_live_time = 10000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 1
vote_round_time = 0
vote_process_time = 20000
; // 특별상 모드별 설정
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 100
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
; 게이지 회복 (킬, 드랍)
[recovery]
last_attack_kill_recovery_rate = 0.001f
best_attack_kill_recovery_rate = 0.001f
last_drop_kill_recovery_rate = 0.001f
best_drop_kill_recovery_rate = 0.001f
;------------------------//헌터코인 관련 세팅
[star_item]
;별 나오는 간격
star_activate_time = 100
;별생성 대기시간
star_wait_time = 1
;별 생성시 튕겨나가는 수치조절
star_float_power_min = 1000
star_float_power_max = 2000
star_float_speed_min = 150
star_float_speed_max = 500
;드랍존에 떨어져서 사망 한경우
;유저가 드랍존에 떨어진 경우
drop_die_decrease_rate = 0.0f
drop_decrease_rate = 0.0f
;------------- 추가된 정보.
;별 생성 갯수 플레이어당
star_cnt_by_player = 7
;------------- 추가된 정보.
; 헌터코인 보상 관련 셋팅
[raward_item]
reward_item_type = 3
reward_item_period = 7
reward_item_index = 1005216
reward_item_ment = 1099
;-------------<OBJECT GROUP LIST>-----------------
; // 아이템 제공 .... 각 맵별 지정
;-------------<MAPITEM GROUP LIST>-----------------
@@ -0,0 +1,327 @@
[info]
change =0
max_player = 16
;레이드 추가 정보
boss_cnt_sec = 10
boss_cnt_offset_sec = 1
; 최대 기여도 계산 배수.
max_contribute_amplify = 4
; 최대 기여도 포인트값.
max_contribute_point = 1000000
[round]
max_round = 1
max_start_pos = 1
win_need_round = 1
round_time = 150000
ready_state_time = 4000
result_state_time = 12000
final_result_wait_state_time = 2000
final_result_state_time = 28000
use_view_mode = 0
view_check_time = 300000
room_close_time = 300000
sham_battle_close_time = 300000
exit_room_time = 500
win_team_score_rate = 1
no_limite_symbol = 1
score_gauge_deth_time_rate = 1.0f
score_gauge_max_rate = 1.0f
score_gauge_const_value = 300000
abuse_min_damage = 1
;용병고용시간 감소 체크주기
char_limit_check_min = 1000
[record]
kill_death_point = 0
win_point = 30
draw_point = 20
lose_point = 10
[point]
mode_point_round = 0
mode_point_time = 1
mode_record_point_time = 300000
mode_point_max_time = 300000
mode_plus_bonus = 0.0f
;25% /1.25f
PesoCorrection = 20.00f
ExpCorrection = 80.0f
[revival_time]
default_time = 8000
increase_time = 8000
max_time = 8000
select_char_time = 10000
drop_item_live_time = 30000
; // 강퇴
[vote_info]
vote_adoption_per = 0.79f
vote_user_pool = 2
vote_round_win = 1
vote_round_time = 0
vote_process_time = 20000
; // 특별상 모드별 설정
[SpacialAward]
AwardType = 21
LimitTime = 60000
LimitUserCount = 100
MaxUserCount = 16
AwardCorrection = 100.0f
AwardRandSeed = 100
AwardMaxTime = 900000
; 게이지 회복 (킬, 드랍)
[recovery]
last_attack_kill_recovery_rate = 0.001f
best_attack_kill_recovery_rate = 0.001f
last_drop_kill_recovery_rate = 0.001f
best_drop_kill_recovery_rate = 0.001f
;------------------------//헌터코인 관련 세팅
[star_item]
;별 나오는 간격
star_activate_time = 100
;별생성 대기시간
star_wait_time = 1
;별 생성시 튕겨나가는 수치조절
star_float_power_min = 1000
star_float_power_max = 2000
star_float_speed_min = 150
star_float_speed_max = 500
;드랍존에 떨어져서 사망 한경우
;유저가 드랍존에 떨어진 경우
drop_die_decrease_rate = 0.0f
drop_decrease_rate = 0.0f
;------------- 추가된 정보.
;별 생성 갯수 플레이어당
star_cnt_by_player = 7
;------------- 추가된 정보.
; 헌터코인 보상 관련 셋팅
[raward_item]
reward_item_type = 3
reward_item_period = 7
reward_item_index = 1005216
reward_item_ment = 1099
[map_area_weapon]
map_area_weapon_cnt = 1
map_area_weapon1_name = 1403GA_Lava
map_area_weapon1_pos_x = 0.0f
map_area_weapon1_pos_y = 0.0f
map_area_weapon1_pos_z = 0.0f
;-------------<OBJECT GROUP LIST>-----------------
; // 아이템 제공 .... 각 맵별 지정
;-------------<MAPITEM GROUP LIST>-----------------
[raid2_mapitem_group1]
supply_time_cnt = 16
supply_time1 = 0
supply_time2 = 0
supply_time3 = 0
supply_time4 = 0
supply_time5 = 30000
supply_time6 = 30000
supply_time7 = 30000
supply_time8 = 60000
supply_time9 = 90000
supply_time10 = 90000
supply_time11 = 90000
supply_time12 = 120000
supply_time13 = 150000
supply_time14 = 150000
supply_time15 = 150000
supply_time16 = 180000
supply1_item_cnt = 1
supply1_item1_name = 러버콘
supply1_pos_cnt = 1
supply1_pos1_x = -455.0f
supply1_pos1_z = 231.0f
supply2_item_cnt = 1
supply2_item1_name = 러버콘
supply2_pos_cnt = 1
supply2_pos1_x = 455.0f
supply2_pos1_z = 231.0f
supply3_item_cnt = 1
supply3_item1_name = 러버콘
supply3_pos_cnt = 1
supply3_pos1_x = -455.0f
supply3_pos1_z = -213.0f
supply4_item_cnt = 1
supply4_item1_name = 러버콘
supply4_pos_cnt = 1
supply4_pos1_x = 455.0f
supply4_pos1_z = -213.0f
supply5_item_cnt = 1
supply5_item1_name = 붉은벽돌
supply5_pos_cnt = 4
supply5_pos1_x = -1379.0f
supply5_pos1_z = -120.0f
supply5_pos2_x = -1180.0f
supply5_pos2_z = -301.0f
supply5_pos3_x = -955.0f
supply5_pos3_z = -572.0f
supply5_pos4_x = -1623.0f
supply5_pos4_z = -599.0f
supply6_item_cnt = 1
supply6_item1_name = 시멘트벽돌
supply6_pos_cnt = 4
supply6_pos1_x = 1379.0f
supply6_pos1_z = -120.0f
supply6_pos2_x = 1180.0f
supply6_pos2_z = -301.0f
supply6_pos3_x = 955.0f
supply6_pos3_z = -572.0f
supply6_pos4_x = 1623.0f
supply6_pos4_z = -599.0f
supply7_item_cnt = 1
supply7_item1_name = 붉은벽돌
supply7_pos_cnt = 2
supply7_pos1_x = -313.0f
supply7_pos1_z = -138.0f
supply7_pos2_x = 0.0f
supply7_pos2_z = 153.0f
supply8_item_cnt = 1
supply8_item1_name = 불발핵폭탄
supply8_pos_cnt = 2
supply8_pos1_x = -1030.0f
supply8_pos1_z = 590.0f
supply8_pos2_x = 1030.0f
supply8_pos2_z = 590.0f
supply9_item_cnt = 1
supply9_item1_name = 시멘트벽돌
supply9_pos_cnt = 4
supply9_pos1_x = -1479.0f
supply9_pos1_z = -120.0f
supply9_pos2_x = -1280.0f
supply9_pos2_z = -301.0f
supply9_pos3_x = -1055.0f
supply9_pos3_z = -572.0f
supply9_pos4_x = -1723.0f
supply9_pos4_z = -599.0f
supply10_item_cnt = 1
supply10_item1_name = 붉은벽돌
supply10_pos_cnt = 4
supply10_pos1_x = 1479.0f
supply10_pos1_z = -120.0f
supply10_pos2_x = 1280.0f
supply10_pos2_z = -301.0f
supply10_pos3_x = 1055.0f
supply10_pos3_z = -572.0f
supply10_pos4_x = 1723.0f
supply10_pos4_z = -599.0f
supply11_item_cnt = 1
supply11_item1_name = 시멘트벽돌
supply11_pos_cnt = 2
supply11_pos1_x = -1130.0f
supply11_pos1_z = 590.0f
supply11_pos2_x = 1130.0f
supply11_pos2_z = 590.0f
supply12_item_cnt = 1
supply12_item1_name = 불발핵폭탄
supply12_pos_cnt = 2
supply12_pos1_x = 413.0f
supply12_pos1_z = -138.0f
supply12_pos2_x = -413.0f
supply12_pos2_z = -138.0f
supply13_item_cnt = 1
supply13_item1_name = 붉은벽돌
supply13_pos_cnt = 4
supply13_pos1_x = -1279.0f
supply13_pos1_z = -120.0f
supply13_pos2_x = -1080.0f
supply13_pos2_z = -301.0f
supply13_pos3_x = -855.0f
supply13_pos3_z = -572.0f
supply13_pos4_x = -1523.0f
supply13_pos4_z = -599.0f
supply14_item_cnt = 1
supply14_item1_name = 시멘트벽돌
supply14_pos_cnt = 4
supply14_pos1_x = 1279.0f
supply14_pos1_z = -120.0f
supply14_pos2_x = 1080.0f
supply14_pos2_z = -301.0f
supply14_pos3_x = 855.0f
supply14_pos3_z = -572.0f
supply14_pos4_x = 1523.0f
supply14_pos4_z = -599.0f
supply15_item_cnt = 1
supply15_item1_name = 붉은벽돌
supply15_pos_cnt = 2
supply15_pos1_x = -930.0f
supply15_pos1_z = 590.0f
supply15_pos2_x = 930.0f
supply15_pos2_z = 590.0f
supply16_item_cnt = 1
supply16_item1_name = 불발핵폭탄
supply16_pos_cnt = 2
supply16_pos1_x = 213.0f
supply16_pos1_z = -138.0f
supply16_pos2_x = -213.0f
supply16_pos2_z = -138.0f
@@ -0,0 +1,303 @@
[common]
max_load = 14
;아래는 DB에 셋팅된 시작날짜와 같아야 함
load_date_1 = 2104040200
load_date_2 = 2104180200
load_date_3 = 2105090200
load_date_4 = 2105230200
load_date_5 = 2106060200
load_date_6 = 2106200200
load_date_7 = 2107040200
load_date_8 = 2107180200
load_date_9 = 2108010200
load_date_10 =2108150200
load_date_11 =2108290200
load_date_12 =2109120200
load_date_13 =2109260200
load_date_14 =2110100200
;battle_reward_peso = 각 라운드별 경기 종료시 지급 보상
;camp_blue_win_table = 1
;camp_red_win_table = 2
;camp_blue_lose_table = 3
;camp_red_lose_table = 4
;camp_draw_table = 5
;max_round_reward = 9 (전체 라운드 숫자 + 1, 우승 포함)
;reward_table1 = 첫시작 라운드 보상 테이블 셋팅
;1st - 보상
[2104040200]
battle_reward_peso=10000
camp_blue_win_table = 1
camp_red_win_table = 2
camp_blue_lose_table = 3
camp_red_lose_table = 4
camp_draw_table = 5
max_round_reward = 9
reward_table1 = 21
reward_table2 = 22
reward_table3 = 23
reward_table4 = 24
reward_table5 = 25
reward_table6 = 26
reward_table7 = 27
reward_table8 = 28
reward_table9 = 29
; 보상 : [정부] vs [반란] [4월 18일 진행]
[2104180200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 9
reward_table1 = 21
reward_table2 = 22
reward_table3 = 23
reward_table4 = 24
reward_table5 = 25
reward_table6 = 26
reward_table7 = 27
reward_table8 = 28
reward_table9 = 29
;보상: [정부] vs [반란] [3월 21일 진행]
[2105090200]
battle_reward_peso= 10000
camp_blue_win_table = 11
camp_blue_lose_table = 12
camp_red_win_table = 13
camp_red_lose_table = 14
camp_draw_table = 15
max_round_reward = 9
reward_table1 = 21
reward_table2 = 22
reward_table3 = 23
reward_table4 = 24
reward_table5 = 25
reward_table6 = 26
reward_table7 = 27
reward_table8 = 28
reward_table9 = 29
;보상: [정부] vs [반란] [4월 4일 진행]
[2105230200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2106060200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2106200200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2107040200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2107180200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2108010200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2108150200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2108290200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2109120200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2109260200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
[2110100200]
battle_reward_peso=10000
camp_blue_win_table = 6
camp_blue_lose_table = 7
camp_red_win_table = 8
camp_red_lose_table = 9
camp_draw_table = 10
max_round_reward = 7
reward_table1 = 23
reward_table2 = 24
reward_table3 = 25
reward_table4 = 26
reward_table5 = 27
reward_table6 = 28
reward_table7 = 29
@@ -0,0 +1,666 @@
[common]
max_table = 39
present_sender = DeveloperK
camp_peso_reward_ment = 1005
camp_peso_reward_period = 7
cheer_peso_reward_ment = 1009
cheer_peso_reward_period = 7
; PresentType = 1(용병),2(치장),3(권한),4(페소),5(장비),6(장비상자),7(치장, 선택가능), 8(경험치),9(메달)
;1용병 : 코드, 기간(s)
;2치장 : 부위, 코드
;3권한 : 코드, 수량
;4페소 : 지급량, X
;5장비 : 코드, (강화값x10000)+기간(h)
;5성장장비 : 코드, 100000000 + (강화값x10000) + 기간(h)
;6장비보급 : 코드(machine_code), 되팔기 가격
;7치장(적용용병 선택가능) : 부위(성별5,머리2,머리색4,얼굴1,피부3,기본옷7, 여자는 +1000), 코드
;8경험치 : 경험치, X
;9메달 : 코드, 기간(h)
;----------------------------------------------// 유미라 vs 마이 []
;1st블루진영 승리 - 유미라 2시간
[table1]
max_present = 1
present1_type = 1
present1_ment = 1005
present1_period = 7
present1_value1 = 80
present1_value2 = 7200
;1st블루진영 패배 - 없음
[table2]
max_present = 0
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 1
present1_value2 = 0
;1st레드진영 승리 - 마이 2시간
[table3]
max_present = 1
present1_type = 1
present1_ment = 1005
present1_period = 7
present1_value1 = 77
present1_value2 = 7200
;1st레드진영 패배 - 없음
[table4]
max_present = 0
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 0
present1_value2 = 0
;1st무승부 - 1000페소
[table5]
max_present = 1
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 1000
present1_value2 = 0
;----------------------------------------------// [정부] vs [반란] [4월 18일]
;2th블루진영 승리 - 레어 영구장비
[table6]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 48
present1_value2 = 0
;2th블루진영 패배 - 영구장비 보급
[table7]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 2
present1_value2 = 0
;2th레드진영 승리 - 레어 영구장비
[table8]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 48
present1_value2 = 0
;2th레드진영 패배 - 영구장비 보급
[table9]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 2
present1_value2 = 0
;2th무승부 - 1000페소
[table10]
max_present = 1
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 1000
present1_value2 = 0
;----------------------------------------------// 정부 군 vs 반란 군 [12월 28일 진행]
;3rd블루진영 승리 - 레어 영구장비
[table11]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 48
present1_value2 = 0
;3rd블루진영 패배 - 영구장비 보급
[table12]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 2
present1_value2 = 0
;3rd레드진영 승리 - 레어 영구장비
[table13]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 48
present1_value2 = 0
;3rd레드진영 패배 - 영구장비 보급
[table14]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 2
present1_value2 = 0
;3rd무승부 - 1000페소
[table15]
max_present = 1
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 1000
present1_value2 = 0
;----------------------------------------------// 정부 군 vs 반란 군 [1월 11일 진행]
;4th블루진영 승리 - 레어 영구장비
[table16]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 48
present1_value2 = 0
;4th블루진영 패배 - 영구장비 보급
[table17]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 2
present1_value2 = 0
;4th레드진영 승리 - 레어 영구장비
[table18]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 48
present1_value2 = 0
;4th레드진영 패배 - 영구장비 보급
[table19]
max_present = 1
present1_ment = 1005
present1_period = 7
present1_type = 6
present1_value1 = 2
present1_value2 = 0
;4th무승부 - 1000페소
[table20]
max_present = 1
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 1000
present1_value2 = 0
;----------------------------------------------//
;1st - 256강 //10000 GP
[table21]
max_present = 1
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 10000
present1_value2 = 0
;1st - 128강 //25000 GP
[table22]
max_present = 1
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 25000
present1_value2 = 0
;1st - 64강 //50000 GP
[table23]
max_present = 1
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 50000
present1_value2 = 0
;1st - 32강 //75000 GP + Perm. Chest
[table24]
max_present = 2
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 75000
present1_value2 = 0
present2_type = 6
present2_ment = 1005
present2_period = 7
present2_value1 = 32
present2_value2 = 1
;1st - 16강 //100000 GP + Perm. Chest
[table25]
max_present = 2
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 100000
present1_value2 = 0
present2_type = 6
present2_ment = 1005
present2_period = 7
present2_value1 = 32
present2_value2 = 1
;1st - 8강 //150000 GP + Perm. Rare Chest
[table26]
max_present = 2
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 150000
present1_value2 = 0
present2_type = 6
present2_ment = 1005
present2_period = 7
present2_value1 = 48
present2_value2 = 1
;1st - 4강 //250000 GP + Perm. Rare Chest + Style Package
[table27]
max_present = 3
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 250000
present1_value2 = 0
present2_type = 6
present2_ment = 1005
present2_period = 7
present2_value1 = 48
present2_value2 = 1
present3_type = 3
present3_ment = 1005
present3_period = 7
present3_value1 = 3000020
present3_value2 = 1
;1st - 준우승 //500,000 GP + Perm. Rare Chest + Perm. Hero Package
[table28]
max_present = 3
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 500000
present1_value2 = 0
present2_type = 6
present2_ment = 1005
present2_period = 7
present2_value1 = 48
present2_value2 = 1
present3_type = 3
present3_ment = 1005
present3_period = 7
present3_value1 = 3000019
present3_value2 = 1
;1st - 우승 //1,000,000 GP + Rare Gear Package + Perm. Hero Package + Medal
[table29]
max_present = 4
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 1000000
present1_value2 = 0
present2_type = 3
present2_ment = 1005
present2_period = 7
present2_value1 = 3000787
present2_value2 = 1
present3_type = 3
present3_ment = 1005
present3_period = 7
present3_value1 = 3000019
present3_value2 = 1
present4_type = 9
present4_ment = 1005
present4_period = 7
present4_value1 = 962
present4_value2 = 0
;---------------------------// 11월 11일 LSNC 보상
;----------------------------------------------//
;1st - 512강
[table30]
max_present = 1
;10만 페소
present1_ment = 1005
present1_period = 7
present1_type = 4
present1_value1 = 100000
present1_value2 = 0
;1st - 256강
[table31]
max_present = 1
;15만 페소
present1_ment = 1005
present1_period = 7
present1_type = 4
present1_value1 = 150000
present1_value2 = 0
;1st - 128강
[table32]
max_present = 1
;20만 페소
present1_ment = 1005
present1_period = 7
present1_type = 4
present1_value1 = 200000
present1_value2 = 0
;1st - 64강
[table33]
max_present = 1
;25만 페소
present1_ment = 1005
present1_period = 7
present1_type = 4
present1_value1 = 250000
present1_value2 = 0
;1st - 32강
[table34]
max_present = 3
;본선대회 예비 엔트리
present1_ment = 1005
present1_period = 7
present1_type = 3
present1_value1 = 1004035
present1_value2 = 1
;25만 페소
present2_ment = 1005
present2_period = 7
present2_type = 4
present2_value1 = 250000
present2_value2 = 0
;100% 강화카드 1장
present3_ment = 1005
present3_period = 7
present3_type = 3
present3_value1 = 1000931
present3_value2 = 1
;1st - 16강
[table35]
max_present = 3
;본선대회 진출권
present1_ment = 1005
present1_period = 7
present1_type = 3
present1_value1 = 1004034
present1_value2 = 1
;25만 페소
present2_ment = 1005
present2_period = 7
present2_type = 4
present2_value1 = 250000
present2_value2 = 0
;100% 강화카드 2장
present3_ment = 1005
present3_period = 7
present3_type = 3
present3_value1 = 1000931
present3_value2 = 2
;1st - 8강
[table36]
max_present = 3
;본선대회 진출권
present1_ment = 1005
present1_period = 7
present1_type = 3
present1_value1 = 1004034
present1_value2 = 1
;25만 페소
present2_ment = 1005
present2_period = 7
present2_type = 4
present2_value1 = 250000
present2_value2 = 0
;100% 강화카드 3장
present3_ment = 1005
present3_period = 7
present3_type = 3
present3_value1 = 1000931
present3_value2 = 3
;1st - 4강
[table37]
max_present = 4
;본선대회 진출권
present1_ment = 1005
present1_period = 7
present1_type = 3
present1_value1 = 1004034
present1_value2 = 1
;25만 페소
present2_ment = 1005
present2_period = 7
present2_type = 4
present2_value1 = 250000
present2_value2 = 0
;100% 강화카드 4장
present3_ment = 1005
present3_period = 7
present3_type = 3
present3_value1 = 1000931
present3_value2 = 4
;레어 영구장비보급
present4_ment = 1005
present4_period = 7
present4_type = 6
present4_value1 = 48
present4_value2 = 19200
;1st - 준우승
[table38]
max_present = 4
;본선대회 진출권
present1_ment = 1005
present1_period = 7
present1_type = 3
present1_value1 = 1004034
present1_value2 = 1
;50만 페소
present2_ment = 1005
present2_period = 7
present2_type = 4
present2_value1 = 500000
present2_value2 = 0
;100% 강화카드 5장
present3_ment = 1005
present3_period = 7
present3_type = 3
present3_value1 = 1000931
present3_value2 = 5
;레어 영구장비보급
present4_ment = 1005
present4_period = 7
present4_type = 6
present4_value1 = 48
present4_value2 = 19200
;1st - 우승
[table39]
max_present = 4
;100만 페소
present1_type = 4
present1_ment = 1005
present1_period = 7
present1_value1 = 1000000
present1_value2 = 0
;본선대회 진출권
present2_ment = 1005
present2_period = 7
present2_type = 3
present2_value1 = 1004034
present2_value2 = 1
;100% 강화카드 10장
present3_ment = 1005
present3_period = 7
present3_type = 3
present3_value1 = 1000931
present3_value2 = 10
;레어풀셋 패키지
present4_ment = 1005
present4_period = 7
present4_type = 3
present4_value1 = 3000787
present4_value2 = 1
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,235 @@
[Common]
count = 30
[equipCode0]
npccode = 100106
itemcode0 = 1
itemcode1 = 100001
itemcode2 = 200001
itemcode3 = 300001
[equipCode1]
npccode = 100406
itemcode0 = 4
itemcode1 = 100004
itemcode2 = 200004
itemcode3 = 300004
[equipCode2]
npccode = 101206
itemcode0 = 12
itemcode1 = 100012
itemcode2 = 200012
itemcode3 = 300012
[equipCode3]
npccode = 101306
itemcode0 = 13
itemcode1 = 100013
itemcode2 = 200013
itemcode3 = 300013
[equipCode4]
npccode = 101406
itemcode0 = 14
itemcode1 = 100014
itemcode2 = 200014
itemcode3 = 300014
[equipCode5]
npccode = 101606
itemcode0 = 16
itemcode1 = 100016
itemcode2 = 200016
itemcode3 = 300016
[equipCode6]
npccode = 101906
itemcode0 = 19
itemcode1 = 100019
itemcode2 = 200019
itemcode3 = 300019
[equipCode7]
npccode = 102006
itemcode0 = 20
itemcode1 = 100020
itemcode2 = 200020
itemcode3 = 300020
[equipCode8]
npccode = 102706
itemcode0 = 27
itemcode1 = 100027
itemcode2 = 200027
itemcode3 = 300027
[equipCode9]
npccode = 102806
itemcode0 = 28
itemcode1 = 100028
itemcode2 = 200028
itemcode3 = 300028
[equipCode10]
npccode = 103706
itemcode0 = 37
itemcode1 = 100037
itemcode2 = 200037
itemcode3 = 300037
[equipCode11]
npccode = 103806
itemcode0 = 38
itemcode1 = 100038
itemcode2 = 200038
itemcode3 = 300038
[equipCode12]
npccode = 104006
itemcode0 = 40
itemcode1 = 100040
itemcode2 = 200040
itemcode3 = 300040
[equipCode13]
npccode = 104906
itemcode0 = 49
itemcode1 = 100049
itemcode2 = 200049
itemcode3 = 300049
[equipCode14]
npccode = 105006
itemcode0 = 50
itemcode1 = 100050
itemcode2 = 200050
itemcode3 = 300050
[equipCode15]
npccode = 105806
itemcode0 = 58
itemcode1 = 100058
itemcode2 = 200058
itemcode3 = 300058
[equipCode16]
npccode = 105906
itemcode0 = 59
itemcode1 = 100059
itemcode2 = 200059
itemcode3 = 300059
[equipCode17]
npccode = 107306
itemcode0 = 73
itemcode1 = 100073
itemcode2 = 200073
itemcode3 = 300073
;--------AI º¸Åë ³­À̵µ
[equipCode18]
npccode = 100107
itemcode0 = 1
itemcode1 = 111086
itemcode2 = 211017
itemcode3 = 311001
[equipCode19]
npccode = 100407
itemcode0 = 4
itemcode1 = 111052
itemcode2 = 211070
itemcode3 = 311056
[equipCode20]
npccode = 101207
itemcode0 = 12
itemcode1 = 111037
itemcode2 = 211030
itemcode3 = 311037
[equipCode21]
npccode = 101307
itemcode0 = 13
itemcode1 = 111049
itemcode2 = 211040
itemcode3 = 311045
[equipCode22]
npccode = 101407
itemcode0 = 14
itemcode1 = 111033
itemcode2 = 211092
itemcode3 = 311020
[equipCode23]
npccode = 101607
itemcode0 = 16
itemcode1 = 111104
itemcode2 = 211050
itemcode3 = 311111
[equipCode24]
npccode = 102007
itemcode0 = 20
itemcode1 = 111058
itemcode2 = 211075
itemcode3 = 311124
[equipCode25]
npccode = 103707
itemcode0 = 37
itemcode1 = 111041
itemcode2 = 211110
itemcode3 = 311044
[equipCode26]
npccode = 103807
itemcode0 = 38
itemcode1 = 111048
itemcode2 = 211073
itemcode3 = 311083
[equipCode27]
npccode = 104007
itemcode0 = 40
itemcode1 = 111054
itemcode2 = 211063
itemcode3 = 311122
[equipCode28]
npccode = 104907
itemcode0 = 49
itemcode1 = 111056
itemcode2 = 211056
itemcode3 = 311098
[equipCode29]
npccode = 105807
itemcode0 = 58
itemcode1 = 111076
itemcode2 = 211048
itemcode3 = 311049
[equipCode30]
npccode = 105907
itemcode0 = 59
itemcode1 = 111040
itemcode2 = 211120
itemcode3 = 311131
@@ -0,0 +1,7 @@
[cloud]
1 = 127.0.0.1
[admin]
1 = 127.0.0.1
@@ -0,0 +1,356 @@
;item_code : 아이템 코드
;grade_min_level : 착용 가능한 용병단 계급
;use_period : 아이템 유지시간(단위 시간 : 분)
;hero_count: 착용 가능한 용병 카운트, 모든 용병
;hero_class_type1 : 착용 가능한 용병 번호
;hero_min_level1 : 위의 용병의 착용 가능한 Lv
;ability_min : 최소 능력치
;ability_max : 최대 능력치
;ability_gap : 능력치 구간
;sell_peso : 판매 했을 때 받는 페소
; 액세서리는 서버에 지정되어있는 아이템으로만 기간제 아이템 보급 가능함
; 따라서 클라이언트 및 서버의 아이템 코드는 시간별로 각자 따야됨
; 해당사항은 수정되어야함
[common]
accessory_cnt = 24
;-------------------------------------------------------------// 30일
;학살자 반지
[accessory1]
item_code = 1000001
grade_min_leve = 1
use_period = 43200
hero_count = 0
;hero_class_type1 = 0
;hero_min_level1 = 0
ability_min = 1500
ability_max = 2500
ability_gap = 100
sell_peso = 1000
;금강 반지
[accessory2]
item_code = 1000002
grade_min_level = 2
use_period = 43200
hero_count = 0
ability_min = 1000
ability_max = 20000
ability_gap = 100
sell_peso = 1000
;리플렉스 반지
[accessory3]
item_code = 1000008
grade_min_level = 2
use_period = 43200
hero_count = 0
ability_min = 1000
ability_max = 3000
ability_gap = 100
sell_peso = 1000
;스티픈 반지
[accessory4]
item_code = 1000009
grade_min_level = 2
use_period = 43200
hero_count = 0
ability_min = 1000
ability_max = 4000
ability_gap = 100
sell_peso = 1000
;이글아이 목걸이
[accessory5]
item_code = 2000001
grade_min_level = 1
use_period = 43200
ability_min = 1200000
ability_max = 1800000
ability_gap = 10000
sell_peso = 1000
;깃털 목걸이
[accessory6]
item_code = 2000002
grade_min_level = 2
use_period = 43200
hero_count = 0
ability_min = 700
ability_max = 900
ability_gap = 10
sell_peso = 1000
;스플레시 목걸이
[accessory7]
item_code = 2000006
grade_min_level = 2
use_period = 43200
hero_count = 0
ability_min = 1000
ability_max = 15000
ability_gap = 100
sell_peso = 1000
;배니쉬 목걸이
[accessory8]
item_code = 2000008
grade_min_level = 2
use_period = 43200
hero_count = 0
ability_min = 15000
ability_max = 40000
ability_gap = 1000
sell_peso = 1000
;맹공 팔찌
[accessory9]
item_code = 3000001
grade_min_level = 2
use_period = 43200
hero_count = 0
ability_min = 1100
ability_max = 1250
ability_gap = 10
sell_peso = 1000
;보호 팔찌
[accessory10]
item_code = 3000002
grade_min_level = 1
use_period = 43200
hero_count = 0
ability_min = 1000
ability_max = 20000
ability_gap = 1000
sell_peso = 1000
;불괴 팔찌
[accessory11]
item_code = 3000003
grade_min_level = 2
use_period = 43200
hero_count = 0
ability_min = 500
ability_max = 900
ability_gap = 10
sell_peso = 1000
;어웨이크닝 팔찌
[accessory12]
item_code = 3000004
grade_min_level = 2
use_period = 43200
hero_count = 0
ability_min = 1000
ability_max = 7000
ability_gap = 100
sell_peso = 1000
;-------------------------------------------------------------// 1일 추 후 수정으로 삭제해야됨
;학살자 반지
[accessory13]
item_code = 1000011
grade_min_leve = 1
use_period = 1440
hero_count = 0
;hero_class_type1 = 0
;hero_min_level1 = 0
ability_min = 1500
ability_max = 2500
ability_gap = 100
sell_peso = 1000
;금강 반지
[accessory14]
item_code = 1000012
grade_min_level = 2
use_period = 1440
hero_count = 0
ability_min = 1000
ability_max = 20000
ability_gap = 100
sell_peso = 1000
;리플렉스 반지
[accessory15]
item_code = 1000018
grade_min_level = 2
use_period = 1440
hero_count = 0
ability_min = 1000
ability_max = 3000
ability_gap = 100
sell_peso = 1000
;스티픈 반지
[accessory16]
item_code = 1000019
grade_min_level = 2
use_period = 1440
hero_count = 0
ability_min = 1000
ability_max = 4000
ability_gap = 100
sell_peso = 1000
;이글아이 목걸이
[accessory17]
item_code = 2000011
grade_min_level = 1
use_period = 1440
ability_min = 1200000
ability_max = 1800000
ability_gap = 10000
sell_peso = 1000
;깃털 목걸이
[accessory18]
item_code = 2000012
grade_min_level = 2
use_period = 1440
hero_count = 0
ability_min = 700
ability_max = 900
ability_gap = 10
sell_peso = 1000
;스플레시 목걸이
[accessory19]
item_code = 2000016
grade_min_level = 2
use_period = 1440
hero_count = 0
ability_min = 1000
ability_max = 15000
ability_gap = 1000
sell_peso = 1000
;배니쉬 목걸이
[accessory20]
item_code = 2000018
grade_min_level = 2
use_period = 1440
hero_count = 0
ability_min = 15000
ability_max = 40000
ability_gap = 1000
sell_peso = 1000
;맹공 팔찌
[accessory21]
item_code = 3000011
grade_min_level = 2
use_period = 1440
hero_count = 0
ability_min = 1100
ability_max = 1250
ability_gap = 10
sell_peso = 1000
;보호 팔찌
[accessory22]
item_code = 3000012
grade_min_level = 1
use_period = 1440
hero_count = 0
ability_min = 1000
ability_max = 20000
ability_gap = 1000
sell_peso = 1000
;불괴 팔찌
[accessory23]
item_code = 3000013
grade_min_level = 2
use_period = 1440
hero_count = 0
ability_min = 500
ability_max = 900
ability_gap = 10
sell_peso = 1000
;어웨이크닝 팔찌
[accessory24]
item_code = 3000014
grade_min_level = 2
use_period = 1440
hero_count = 0
ability_min = 1000
ability_max = 7000
ability_gap = 100
sell_peso = 1000
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,63 @@
[common]
max_authority = 10
[authority1]
name = 인간남자
code = 1001
need_peso = 5000
need_cash = 0
[authority2]
name = 인간여자
code = 1002
need_peso = 5000
need_cash = 0
[authority3]
name = 엘프남자
code = 2001
need_peso = 5000
need_cash = 0
[authority4]
name = 엘프여자
code = 2002
need_peso = 5000
need_cash = 0
[authority5]
name = 드워프남자
code = 3001
need_peso = 5000
need_cash = 0
[authority6]
name = 드워프여자
code = 3002
need_peso = 5000
need_cash = 0
[authority7]
name = 리더교체
code = 4001
need_peso = 500
need_cash = 0
[authority8]
name = 용병해고
code = 4002
need_peso = 500
need_cash = 0
[authority9]
name = 파산
code = 4003
need_peso = 0
need_cash = 0
[authority10]
name = UI초기화
code = 4004
need_peso = 0
need_cash = 0
@@ -0,0 +1,2 @@
[config]
AutoRun =1
@@ -0,0 +1,189 @@
[info]
change = 0
award_time = 17000
SendAwardCount = 4
MaxAward = 27
[Award1]
Type = 1
Title = 챔피온
Bonus = 0.05f
[Award2]
Type = 2
Title = 광전사
Bonus = 0.04f
[Award3]
Type = 3
Title = 난타왕
Bonus = 0.04f
[Award4]
Type = 4
Title = 지름신
Bonus = 0.03f
[Award5]
Type = 5
Title = 낚시왕
Bonus = 0.03f
[Award6]
Type = 6
Title = 동네북
Bonus = 0.03f
[Award7]
Type = 7
Title = 몸 빵
Bonus = 0.03f
[Award8]
Type = 8
Title = 스파이
Bonus = 0.01f
[Award9]
Type = 9
Title = 콤보킹
Bonus = 0.04f
;----------------// PowerStone
[Award10]
Type = 10
Title = 수호자
Bonus = 0.04f
[Award11]
Type = 11
Title = 파괴자
Bonus = 0.04f
[Award12]
Type = 12
Title = 삽질맨
Bonus = 0.01f
;----------------// Prisoner
[Award13]
Type = 13
Title = 구원자
Bonus = 0.04f
[Award14]
Type = 14
Title = 처형자
Bonus = 0.03f
[Award15]
Type = 15
Title = 종결자
Bonus = 0.04f
[Award16]
Type = 16
Title = 심청이
Bonus = 0.03f
;----------------// Hidden Crown
[Award17]
Type = 17
Title = 근위대
Bonus = 0.03f
[Award18]
Type = 18
Title = 임금님
Bonus = 0.04f
[Award19]
Type = 19
Title = 특공대
Bonus = 0.04f
[Award20]
Type = 20
Title = 반역자
Bonus = 0.01f
;----------------// Special
[Award21]
Type = 21
Title = 특별상
Bonus = 0.00f
;----------------// Soccer
[Award22]
Type = 22
Title = 득점왕
Bonus = 0.04f
[Award23]
Type = 23
Title = 도움왕
Bonus = 0.03f
[Award24]
Type = 24
Title = 자책골
Bonus = 0.01f
[Award25]
Type = 25
Title = 수문장
Bonus = 0.04f
;----------------// Gangsi
[Award26]
Type = 26
Title = 강시왕
Bonus = 0.05f
[Award27]
Type = 27
Title = 생존자
Bonus = 0.05f
[AwardRandBonus]
MaxBonus = 10
Bonus1_Rand = 2500
Bonus1_Multiply = 1.0f
Bonus2_Rand = 2000
Bonus2_Multiply = 2.0f
Bonus3_Rand = 1500
Bonus3_Multiply = 3.0f
Bonus4_Rand = 1250
Bonus4_Multiply = 4.0f
Bonus5_Rand = 1000
Bonus5_Multiply = 5.0f
Bonus6_Rand = 750
Bonus6_Multiply = 6.0f
Bonus7_Rand = 500
Bonus7_Multiply = 7.0f
Bonus8_Rand = 250
Bonus8_Multiply = 8.0f
Bonus9_Rand = 150
Bonus9_Multiply = 9.0f
Bonus10_Rand = 100
Bonus10_Multiply = 10.0f
@@ -0,0 +1,20 @@
[Info]
battleroom_create_max_user = 2
[reserve_create]
MAX_NAME = 3
NAME_0 = Lost Mutant
NAME_1 = Fight with me ! !
NAME_2 = Bring it on ! ! !
NAME_3 = Join us~!
NAME_4 = Mutant
MAX_PLAYER = 8
MAX_OBSERVER = 4
default_catchmode_level = 10
[ExtraOption]
enable_level = 20
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,594 @@
[Info]
MaxManual = 38
[Manual1]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual2]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual3]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
4SpaceLine = 18
4Color1 = 0xFF6E6E6E
4Text1 =STR(4)
[Manual4]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual5]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual6]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual7]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual8]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
;4SpaceLine = 18
;4Color1 = 0xFF6E6E6E
;4Text1 = # 입니다.
[Manual9]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual10]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual11]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
4SpaceLine = 18
4Color1 = 0xFF6E6E6E
4Text1 =STR(4)
[Manual12]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
4SpaceLine = 18
4Color1 = 0xFF6E6E6E
4Text1 =STR(4)
;--------------------------------------------올빙고보상
[Manual13]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
4SpaceLine = 18
4Color1 = 0xFF6E6E6E
4Text1 =STR(4)
5SpaceLine = 18
5Color1 = 0xFF6E6E6E
5Text1 =STR(5)
;--------------------------------------------고정빙고 메뉴얼
[Manual14]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual15]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual16]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual17]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual18]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual19]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual20]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual21]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual22]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual23]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual24]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual25]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual26]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual27]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual28]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual29]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual30]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual31]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual32]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual33]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual34]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual35]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual36]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual37]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
[Manual38]
1SpaceLine = 0
1Color1 = 0xFF3A3A3A
1Text1 =STR(1)
2SpaceLine = 27
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 18
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
@@ -0,0 +1,119 @@
;---------------------------------------------------------------------
;
; 아래의 순서에 맞게 셋팅해 주시면 됩니다.
; Manual1 : 빙고 시작 (5줄 제한)
; Manual2 : 올빙고 (5줄 제한)
; Manual3 : 숫자뽑기 아이템 없음. (2줄 제한)
; Manual4 : 숫자섞기 아이템 없음. (2줄 제한)
; Manual5 : 보상바꾸기 아이템 없음. (2줄 제한)
; Manual6 : 스페셜숫자 아이템 없음. (2줄 제한)
; Manual7 : 빙고중
;
;---------------------------------------------------------------------
[info]
MaxManual = 10
[Manual1]
1SpaceLine = 0
1Color1 = 0xFF6E6E6E
1Text1 =STR(1)
1Color2 = 0xFF117021
1Text2 =STR(2)
2SpaceLine = 0
2Color1 = 0xFF6E6E6E
2Text1 =STR(3)
2Color2 = 0xFF6E6E6E
2Text2 =STR(4)
3SpaceLine = 0
3Color1 = 0xFF6E6E6E
3Text1 =STR(5)
4SpaceLine = 0
4Color1 = 0xFF6E6E6E
4Text1 =STR(6)
5SpaceLine = 0
5TextPiece = 1
5Color1 = 0xFF6E6E6E
5Text1 =STR(7)
[Manual2]
1SpaceLine = 0
1Color1 = 0xFF6E6E6E
1Text1 =STR(1)
2SpaceLine = 0
2Color1 = 0xFF117021
2Text1 = <ITEM>
2Color2 = 0xFF6E6E6E
2Text2 =STR(2)
3SpaceLine = 0
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
4SpaceLine = 0
4Color1 = 0xFF6E6E6E
4Text1 =STR(4)
5SpaceLine = 0
5Color1 = 0xFF6E6E6E
5Text1 =STR(5)
[Manual3]
1SpaceLine = 0
1Color1 = 0xFF6E6E6E
1Text1 =STR(1)
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
[Manual4]
1SpaceLine = 0
1Color1 = 0xFF6E6E6E
1Text1 =STR(1)
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
[Manual5]
1SpaceLine = 0
1Color1 = 0xFF6E6E6E
1Text1 =STR(1)
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
[Manual6]
1SpaceLine = 0
1Color1 = 0xFF6E6E6E
1Text1 =STR(1)
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
[Manual7]
1SpaceLine = 0
1Color1 = 0xFF6E6E6E
1Text1 =STR(1)
2SpaceLine = 0
2Color1 = 0xFF6E6E6E
2Text1 =STR(2)
3SpaceLine = 0
3Color1 = 0xFF6E6E6E
3Text1 =STR(3)
3Color2 = 0xFF117021
3Text2 =STR(4)
4SpaceLine = 0
4Color1 = 0xFF6E6E6E
4Text1 =STR(5)
@@ -0,0 +1 @@
; 접근 제한 IP 설정.
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,2 @@
[SeasonDate]
LastSeasonDate=2021052513
@@ -0,0 +1,10 @@
[web]
login = http://127.0.0.1/
headquater = http://127.0.0.1/
headquarter_mini= http://127.0.0.1/
formality_entry =
;guild_homepage = http://127.0.0.1/
guild_homepage = http://127.0.0.1/
guild_mark_page =
cash_entry =
cash = http://127.0.0.1/login
@@ -0,0 +1,52 @@
;각성 공통 내용 포함
[common]
;각성 타입 최대수
max_awake = 2
;각성재료 구성 요소 최대 수
max_material = 4
;최대 각성 기간
max_awake_period = 31
max_awake_product = 4
;각성별 필요 재료 ( 증가 일수에 따른 필요 재료 수 등을 위해선 따로 추가 필요 )
[material1]
material_type = 1
material_code = 0
material_need_cnt = 50
[material2]
material_type = 2
material_code = 100001
material_need_cnt = 50
[material3]
material_type = 1
material_code = 0
material_need_cnt = 200
[material4]
material_type = 2
material_code = 100001
material_need_cnt = 200
;need_awake ( 1 : 일반 각성, 2 : 초월 각성 )
[awake_product1]
need_awake = 1
need_mtrl = 1
need_day = 1
[awake_product2]
need_awake = 1
need_mtrl = 3
need_day = 7
[awake_product3]
need_awake = 2
need_mtrl = 2
need_day = 1
[awake_product4]
need_awake = 2
need_mtrl = 4
need_day = 7
@@ -0,0 +1,28 @@
[clover]
;시간은 분단위로 계산
;충전시간
charging_time = 10
;어뷰징 방지 (분) : 친구를 맺은 뒤 해당 시간이 지나야 클로버 선물이 가능하다.
abusing_time = 1080
;보내기 시간 (분)
send_time_gap = 1080
;받기 시간 (분) : 해당 시간이 지나면 받기 버튼이 사라짐.
recieve_time_gap = 1050
;충전될 클로버 수량 (메세지 표시용)
charging_count = 5
Loaded 100 of 373 files, more files were not shown because too many files have changed in this diff. Show more