Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
S
srvpro2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
srvpro2
Commits
ed9e336c
Commit
ed9e336c
authored
Feb 14, 2026
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
welcome module
parent
638f3121
Pipeline
#43197
passed with stages
in 1 minute and 33 seconds
Changes
8
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
43 additions
and
5 deletions
+43
-5
AGENTS.md
AGENTS.md
+6
-2
config.example.yaml
config.example.yaml
+1
-0
src/config.ts
src/config.ts
+1
-0
src/feats/feats-module.ts
src/feats/feats-module.ts
+2
-0
src/feats/welcome.ts
src/feats/welcome.ts
+30
-0
src/room/room-event-register.ts
src/room/room-event-register.ts
+1
-1
src/room/room.ts
src/room/room.ts
+1
-1
src/services/emitter.ts
src/services/emitter.ts
+1
-1
No files found.
AGENTS.md
View file @
ed9e336c
...
@@ -11,6 +11,10 @@
...
@@ -11,6 +11,10 @@
-
如果 Room 的事件不够,可以加,然后在对应的点加 dispatch。
-
如果 Room 的事件不够,可以加,然后在对应的点加 dispatch。
-
Room 的事件不要依赖 YGOProMsgStart 或者 YGOProMsgWin 这样的直接消息事件(经常会不准,这些事件只适合用来构建 replay),应该依赖 Room 专用事件。
-
Room 的事件不要依赖 YGOProMsgStart 或者 YGOProMsgWin 这样的直接消息事件(经常会不准,这些事件只适合用来构建 replay),应该依赖 Room 专用事件。
-
定义 middleware 如果不是拦截消息,必须 return next()
-
定义 middleware 如果不是拦截消息,必须 return next()
-
引用规范:
-
目录内引用:同级文件使用
`'./xxx'`
,子目录文件使用
`'../xxx'`
-
目录外引用:必须通过 index.ts 引用,如
`'../room'`
`'../client'`
(指向 index.ts)
-
禁止直接引用具体文件:不要使用
`'../room/room'`
`'../client/client'`
这样的路径
## 模块结构
## 模块结构
...
@@ -30,13 +34,13 @@
...
@@ -30,13 +34,13 @@
## 参考项目
## 参考项目
可以参考电脑的下面的项目,用来参考
可以参考电脑的下面的项目,用来参考
。这些代码只能看,不能改。~ 指代这台电脑的 HOME 目录。
-
ygopro-msg-encode(js 协议库): ~/ygo/ygopro-msg-encode
-
ygopro-msg-encode(js 协议库): ~/ygo/ygopro-msg-encode
-
koishipro-core.js(wasm 层): ~/ygo/koishipro-core.js
-
koishipro-core.js(wasm 层): ~/ygo/koishipro-core.js
-
ocgcore(YGOPro ocgcore 内核): ~/ygo/ygopro/ocgcore
-
ocgcore(YGOPro ocgcore 内核): ~/ygo/ygopro/ocgcore
-
ygopro(YGOPro 主程序服务端): ~/ygo/ygopro/gframe
-
ygopro(YGOPro 主程序服务端): ~/ygo/ygopro/gframe
-
srvpro(本项目的上一代): ~/ygo/
ygopro/
srvpro-koishi
-
srvpro(本项目的上一代): ~/ygo/srvpro-koishi
-
yuzuthread(多线程执行器): ~/test/yuzuthread
-
yuzuthread(多线程执行器): ~/test/yuzuthread
-
typed-reflector(反射器): ~/test/koishi-related/typed-reflector
-
typed-reflector(反射器): ~/test/koishi-related/typed-reflector
-
nfkit(工具库,事件触发器,IoC): ~/test/nfkit
-
nfkit(工具库,事件触发器,IoC): ~/test/nfkit
config.example.yaml
View file @
ed9e336c
...
@@ -19,6 +19,7 @@ DECK_EXTRA_MAX: "15"
...
@@ -19,6 +19,7 @@ DECK_EXTRA_MAX: "15"
DECK_SIDE_MAX
:
"
15"
DECK_SIDE_MAX
:
"
15"
DECK_MAX_COPIES
:
"
3"
DECK_MAX_COPIES
:
"
3"
OCGCORE_DEBUG_LOG
:
"
"
OCGCORE_DEBUG_LOG
:
"
"
WELCOME
:
"
"
HOSTINFO_LFLIST
:
"
0"
HOSTINFO_LFLIST
:
"
0"
HOSTINFO_RULE
:
"
0"
HOSTINFO_RULE
:
"
0"
HOSTINFO_MODE
:
"
0"
HOSTINFO_MODE
:
"
0"
...
...
src/config.ts
View file @
ed9e336c
...
@@ -29,6 +29,7 @@ export const defaultConfig = {
...
@@ -29,6 +29,7 @@ export const defaultConfig = {
DECK_SIDE_MAX
:
'
15
'
,
DECK_SIDE_MAX
:
'
15
'
,
DECK_MAX_COPIES
:
'
3
'
,
DECK_MAX_COPIES
:
'
3
'
,
OCGCORE_DEBUG_LOG
:
''
,
OCGCORE_DEBUG_LOG
:
''
,
WELCOME
:
''
,
...(
Object
.
fromEntries
(
...(
Object
.
fromEntries
(
Object
.
entries
(
DefaultHostinfo
).
map
(([
key
,
value
])
=>
[
Object
.
entries
(
DefaultHostinfo
).
map
(([
key
,
value
])
=>
[
`HOSTINFO_
${
key
.
toUpperCase
()}
`
,
`HOSTINFO_
${
key
.
toUpperCase
()}
`
,
...
...
src/feats/feats-module.ts
View file @
ed9e336c
import
{
createAppContext
}
from
'
nfkit
'
;
import
{
createAppContext
}
from
'
nfkit
'
;
import
{
ClientVersionCheck
}
from
'
./client-version-check
'
;
import
{
ClientVersionCheck
}
from
'
./client-version-check
'
;
import
{
ContextState
}
from
'
../app
'
;
import
{
ContextState
}
from
'
../app
'
;
import
{
Welcome
}
from
'
./welcome
'
;
export
const
FeatsModule
=
createAppContext
<
ContextState
>
()
export
const
FeatsModule
=
createAppContext
<
ContextState
>
()
.
provide
(
ClientVersionCheck
)
.
provide
(
ClientVersionCheck
)
.
provide
(
Welcome
)
.
define
();
.
define
();
src/feats/welcome.ts
0 → 100644
View file @
ed9e336c
import
{
ChatColor
}
from
'
ygopro-msg-encode
'
;
import
{
Context
}
from
'
../app
'
;
import
{
OnRoomJoin
}
from
'
../room/room-event/on-room-join
'
;
declare
module
'
../room
'
{
interface
Room
{
welcome
:
string
;
welcome2
:
string
;
}
}
export
class
Welcome
{
private
welcomeMessage
=
this
.
ctx
.
getConfig
(
'
WELCOME
'
);
constructor
(
private
ctx
:
Context
)
{
this
.
ctx
.
middleware
(
OnRoomJoin
,
async
(
event
,
client
,
next
)
=>
{
const
room
=
event
.
room
;
if
(
this
.
welcomeMessage
)
{
await
client
.
sendChat
(
this
.
welcomeMessage
,
ChatColor
.
GREEN
);
}
if
(
room
.
welcome
)
{
await
client
.
sendChat
(
room
.
welcome
,
ChatColor
.
BABYBLUE
);
}
if
(
room
.
welcome2
)
{
await
client
.
sendChat
(
room
.
welcome2
,
ChatColor
.
PINK
);
}
return
next
();
});
}
}
src/room/room-event-register.ts
View file @
ed9e336c
...
@@ -3,7 +3,7 @@ import { Context } from '../app';
...
@@ -3,7 +3,7 @@ import { Context } from '../app';
import
{
getSpecificFields
}
from
'
../utility/metadata
'
;
import
{
getSpecificFields
}
from
'
../utility/metadata
'
;
import
{
RoomMethodOptions
}
from
'
../utility/decorators
'
;
import
{
RoomMethodOptions
}
from
'
../utility/decorators
'
;
import
{
Room
}
from
'
./room
'
;
import
{
Room
}
from
'
./room
'
;
import
{
Client
}
from
'
../client
/client
'
;
import
{
Client
}
from
'
../client
'
;
import
{
YGOProCtosBase
}
from
'
ygopro-msg-encode
'
;
import
{
YGOProCtosBase
}
from
'
ygopro-msg-encode
'
;
import
{
RoomManager
}
from
'
./room-manager
'
;
import
{
RoomManager
}
from
'
./room-manager
'
;
import
{
makeArray
}
from
'
nfkit
'
;
import
{
makeArray
}
from
'
nfkit
'
;
...
...
src/room/room.ts
View file @
ed9e336c
...
@@ -61,7 +61,7 @@ import {
...
@@ -61,7 +61,7 @@ import {
}
from
'
koishipro-core.js
'
;
}
from
'
koishipro-core.js
'
;
import
{
YGOProResourceLoader
}
from
'
./ygopro-resource-loader
'
;
import
{
YGOProResourceLoader
}
from
'
./ygopro-resource-loader
'
;
import
{
blankLFList
}
from
'
../utility/blank-lflist
'
;
import
{
blankLFList
}
from
'
../utility/blank-lflist
'
;
import
{
Client
}
from
'
../client
/client
'
;
import
{
Client
}
from
'
../client
'
;
import
{
RoomMethod
}
from
'
../utility/decorators
'
;
import
{
RoomMethod
}
from
'
../utility/decorators
'
;
import
{
YGOProCtosDisconnect
}
from
'
../utility/ygopro-ctos-disconnect
'
;
import
{
YGOProCtosDisconnect
}
from
'
../utility/ygopro-ctos-disconnect
'
;
import
{
DuelStage
}
from
'
./duel-stage
'
;
import
{
DuelStage
}
from
'
./duel-stage
'
;
...
...
src/services/emitter.ts
View file @
ed9e336c
import
{
AppContext
,
ProtoMiddlewareDispatcher
}
from
'
nfkit
'
;
import
{
AppContext
,
ProtoMiddlewareDispatcher
}
from
'
nfkit
'
;
import
{
Client
}
from
'
../client
/client
'
;
import
{
Client
}
from
'
../client
'
;
export
class
Emitter
extends
ProtoMiddlewareDispatcher
<
[
client
:
Client
]
>
{
export
class
Emitter
extends
ProtoMiddlewareDispatcher
<
[
client
:
Client
]
>
{
constructor
(
private
ctx
:
AppContext
)
{
constructor
(
private
ctx
:
AppContext
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment