Token导航 LogoToken导航TokenDH.com
待分类需要联网github未标认证来源可访问许可证需确认审计通过

msw-defaultplayerMSW 默认播放器

Agent Skill

msw-defaultplayer 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

423

周安装

18

GitHub Stars

公开资料未说明

下载量

148
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:msw-defaultplayer(MSW 默认播放器)
来源仓库:https://github.com/msw-git/msw-ai-coding-plugins-official
仓库路径:skills/msw-defaultplayer
安装命令:
npx skills add https://github.com/msw-git/msw-ai-coding-plugins-official --skill msw-defaultplayer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/msw-git/msw-ai-coding-plugins-official --skill msw-defaultplayer

简介

msw-defaultplayer 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。

  • 适合围绕仓库状态、代码变更或协作事项进行整理和分析。
  • 通过 npx skills add 命令安装,需结合原始 README 核验具体用法。
  • 安装前建议确认权限范围、维护状态及是否触发联网或命令执行。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

MSW DefaultPlayer

DefaultPlayer 모델 파일 직접 조회/수정, 컴포넌트 관리, 이동/물리/HP/카메라 설정.

코스튬/아바타 장비msw-costume 스킬을 참조. 코스튬은 DefaultPlayer뿐 아니라 모든 엔티티에 적용 가능하므로 별도 스킬로 분리되어 있다.

DefaultPlayer 개요

DefaultPlayer란?

메이플스토리 월드 메이커(Maker)의 워크스페이스에 기본 제공되는 플레이어 캐릭터 모델이다.

  • 모든 유저가 월드에 접속하면 이 모델을 기반으로 플레이어 엔티티가 생성된다.
  • DefaultUserEnterLeaveLogicPlayerUri 프로퍼티에 사용할 모델 ID가 지정된다.

파일 위치 및 구조

DefaultPlayer는 두 개의.model 파일로 구성된다:

파일경로역할
Player.model./Global/Player.model베이스 모델. Components 목록과 Properties 링크를 정의
DefaultPlayer.model./Global/DefaultPlayer.modelPlayer를 상속(BaseModelId: "player"). Values를 오버라이드
중요: 두 파일 모두 ./Global/ 폴더에 위치한다. 커스텀 스크립트 파일은 ./RootDesk/MyDesk/에 생성한다.

DefaultPlayer는.model 파일로 직접 편집한다

DefaultPlayer는 ./Global/DefaultPlayer.model 파일을 직접 읽고 수정하여 관리한다.

  • 속성값 변경: DefaultPlayer.modelValues 배열에서 해당 항목의 Value를 수정
  • 컴포넌트 추가/제거: DefaultPlayer.modelComponents 배열을 수정
  • 베이스 컴포넌트 목록 확인: Player.modelComponents 배열 참조

파일 구조 상세

Player.model (베이스)

경로: ./Global/Player.model
EntryKey: model://player
  • Components: 플레이어의 기본 컴포넌트 전체 목록 (MOD.Core.* 네이티브 컴포넌트)
  • Properties: 모델 프로퍼티 → 컴포넌트 프로퍼티 링크 정의 (인스펙터에서 편집 가능한 프로퍼티)
  • Values: 비어 있음 (기본값은 엔진이 제공)

DefaultPlayer.model (오버라이드)

경로: ./Global/DefaultPlayer.model
EntryKey: model://defaultplayer
BaseModelId: "player"
  • Components: DefaultPlayer에 추가된 컴포넌트만 (예: script.PlayerHit, script.PlayerAttack)
  • Values: 오버라이드할 설정값 배열

DefaultPlayer 기본 컴포넌트 목록

Player.model로부터 상속되는 네이티브 컴포넌트:

컴포넌트역할
TransformComponent위치, 회전, 크기
MovementComponent이동 속도, 점프력 제어
RigidbodyComponent물리(중력, 발판), 메이플스토리 이동
KinematicbodyComponentRectTileMap 상하좌우 이동
SideviewbodyComponentSideViewRectTileMap 횡스크롤 이동
StateComponent상태 머신 (Walk, Jump, Dead 등)
AvatarRendererComponent아바타 렌더링, 색상, 감정표현
AvatarStateAnimationComponent상태 → 아바타 애니메이션 연결
CostumeManagerComponent장비/코스튬 관리 → 상세는 msw-costume 스킬 참조
CameraComponent카메라 추적 설정
PlayerControllerComponent입력-액션 매핑, 조건 처리
PlayerComponentHP, 사망/부활, PVP, 맵 이동
ChatBalloonComponent채팅 풍선
NameTagComponent이름표
DamageSkinSettingComponent데미지 스킨
DamageSkinSpawnerComponent데미지 스킨 스폰
HitEffectSpawnerComponent히트 이펙트 스폰
TriggerComponent충돌 감지
InventoryComponent인벤토리

DefaultPlayer.model에서 추가된 스크립트 컴포넌트:

컴포넌트역할
script.PlayerHit플레이어 피격 로직
script.PlayerAttack플레이어 공격 로직

핵심 컴포넌트 빠른 참조

컴포넌트역할핵심 프로퍼티/메서드
PlayerComponentHP, 사망/부활, PVP, 맵 이동Hp, MaxHp, PVPMode, RespawnDuration, RespawnPosition, UserId, IsDead(), ProcessDead(), ProcessRevive(), MoveToMapPosition()
PlayerControllerComponent입력→액션 매핑, 조건 제어SetActionKey(key, actionName), ActionAttack(), ActionJump(), LookDirectionX
MovementComponent이동 속도/점프 상위 인터페이스InputSpeed(기본 1.0), JumpForce(기본 1), Jump(), Stop()
RigidbodyComponent메이플 사이드뷰 물리 (중력/발판)Gravity, WalkAcceleration, WalkSpeed, AddForce(), IsOnGround()
KinematicbodyComponentRectTile 탑뷰 상하좌우 이동(RectTile 맵 모드 전용)
SideviewbodyComponentSideViewRectTile 사이드뷰(SideViewRectTile 맵 모드 전용)
AvatarRendererComponent아바타 렌더링/색상/감정표현SetColor(), SetAlpha(), PlayEmotion(), PlayRate
StateComponent상태 머신 (Walk/Jump/Dead)CurrentStateName, ChangeState(), DeadEvent/ReviveEvent
NameTagComponent이름표Name, FontSize, FontColor, NameTagRUID
ChatBalloonComponent채팅 풍선Message, ChatModeEnabled, ShowDuration
CameraComponent카메라 추적DeadZone, SoftZone, Damping, ScreenOffset
TriggerComponent충돌 감지BoxSize, Offset, CollisionGroup

DefaultPlayer Values 구조

DefaultPlayer.modelValues 배열 항목 형식:

{
  "TargetType": "컴포넌트명 또는 null",
  "Name": "프로퍼티명",
  "ValueType": {
    "$type": "MODNativeType",
    "type": "타입 정보"
  },
  "Value": 값
}

TargetType 규칙

  • null: Player.model의 Properties에 정의된 모델 프로퍼티 (Properties 링크를 통해 실제 컴포넌트 프로퍼티로 연결됨)
  • "MOD.Core.컴포넌트명": 특정 네이티브 컴포넌트의 프로퍼티를 직접 오버라이드
  • "script.스크립트명": 커스텀 스크립트 컴포넌트의 프로퍼티

모델 프로퍼티 (TargetType: null)

Player.model의 Properties에서 정의된 링크를 통해 실제 컴포넌트 프로퍼티로 매핑된다.

모델 프로퍼티명원본 컴포넌트.프로퍼티설명기본값
speedMovementComponent.InputSpeed이동 속도1.0
jumpForceMovementComponent.JumpForce점프 높이1.0
walkAccelerationRigidbodyComponent.WalkAcceleration가속/감속1.0
gravityRigidbodyComponent.Gravity중력1.0
cameraDeadZoneCameraComponent.DeadZone카메라 데드존{x: 0.052, y: 0.08}
cameraSoftZoneCameraComponent.SoftZone카메라 소프트존{x: 0.268, y: 0.7}
cameraDampingCameraComponent.Damping카메라 부드러운 추적{x: 2.5, y: 3.9}
cameraScreenCameraComponent.ScreenOffset데드존 중심점{x: 0.5, y: 0.655}
cameraDutchCameraComponent.DutchAngle카메라 회전0.0
cameraOffsetCameraComponent.CameraOffset카메라 위치 오프셋{x: 0.0, y: 0.0}
nameTagNameTagComponent.Name이름표""
damageSkinIdDamageSkinSettingComponent.DamageSkinId데미지 스킨 타입DataRef
damageDelayPerAttackDamageSkinSettingComponent.DelayPerAttack데미지 딜레이0.05
triggerBodyBoxSizeTriggerComponent.BoxSize충돌 감지 영역 크기{x: 0.66, y: 0.7}
triggerBodyBoxOffsetTriggerComponent.BoxOffset충돌 감지 영역 오프셋{x: 0.0, y: 0.35}
triggerBodyColliderOffsetTriggerComponent.ColliderOffset충돌체 오프셋{x: 0.0, y: 0.35}
maxHpPlayerComponent.MaxHp최대 HP1000

컴포넌트 직접 오버라이드 (TargetType: 특정 컴포넌트)

모델 프로퍼티 링크가 아닌, 컴포넌트 프로퍼티를 직접 오버라이드하는 값:

TargetTypeName설명기본값
MOD.Core.CameraComponentZoomRatioMax카메라 최대 줌 비율500.0
MOD.Core.MovementComponentJumpForce점프력 (직접 오버라이드)1.0
MOD.Core.MovementComponentInputSpeed이동 속도 (직접 오버라이드)1.0
script.PlayerHitCollisionGroup피격 충돌 그룹CollisionGroup ID
script.PlayerHitBoxSize피격 충돌 영역 크기{x: 0.45, y: 0.7}
script.PlayerHitColliderOffset피격 충돌 오프셋{x: 0.0, y: 0.35}

맵 모드별 이동 컴포넌트

TileMapMode↔Body 매핑 테이블은 msw-general/references/platform.md §4 참조. 맵 모드에 따라 RigidbodyComponent / KinematicbodyComponent / SideviewbodyComponent 중 하나가 활성화된다.

플레이어 식별 방법 (스크립트 참조)

  • entity.PlayerComponent ~= nil → 해당 엔티티가 플레이어인지 확인
  • _UserService.LocalPlayer → 나의 플레이어 엔티티 (클라이언트 전용)
  • _UserService:GetUserEntityByUserId(userId) → 특정 유저의 플레이어 엔티티

주요 서비스 요약 (스크립트 참조)

서비스역할핵심 API
_UserService유저 관리, 입장/퇴장LocalPlayer, UserEntities, GetUserEntityByUserId(), UserEnterEvent/UserLeaveEvent
_TeleportService텔레포트/맵 이동TeleportToEntity(), TeleportToMapPosition(), WarpUserToWorldAsync()
_CameraService카메라 제어SwitchCameraTo(), ZoomTo(), ZoomReset()
DefaultUserEnterLeaveLogic유저 입장/퇴장 로직PlayerUri(플레이어 모델 ID), StartPoint(시작 맵)

DefaultPlayer 수정 방법

속성값(Values) 수정

./Global/DefaultPlayer.model 파일을 열어 ContentProto.Json.Values 배열에서 해당 항목의 Value를 수정한다.

예: 이동 속도를 2.0으로 변경

Values 배열에서 Name"speed"인 항목을 찾아 Value를 수정:

{
  "TargetType": null,
  "Name": "speed",
  "ValueType": { ... },
  "Value": 2.0
}

또는 컴포넌트 직접 오버라이드 항목에서 MovementComponentInputSpeed:

{
  "TargetType": "MOD.Core.MovementComponent",
  "Name": "InputSpeed",
  "ValueType": { ... },
  "Value": 2.0
}
참고: 모델 프로퍼티(TargetType: null, Name: "speed")와 컴포넌트 직접 오버라이드(TargetType: "MOD.Core.MovementComponent", Name: "InputSpeed")가 모두 존재할 수 있다. 양쪽을 일관되게 수정해야 한다.

예: 점프력 1.5 + HP 2000으로 변경

Values 배열에서 각각의 항목을 찾아 수정:

// jumpForce 모델 프로퍼티
{ "TargetType": null, "Name": "jumpForce", "Value": 1.5 }

// MovementComponent 직접 오버라이드
{ "TargetType": "MOD.Core.MovementComponent", "Name": "JumpForce", "Value": 1.5 }

// maxHp 모델 프로퍼티
{ "TargetType": null, "Name": "maxHp", "Value": 2000 }

새 Values 항목 추가

Values 배열에 새 항목을 추가하여 기본값을 오버라이드할 수 있다. ValueType 형식을 정확히 맞춰야 한다.

주요 ValueType 패턴:

// float (System.Single)
"ValueType": {
  "$type": "MODNativeType",
  "type": "System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
}

// int (System.Int64)
"ValueType": {
  "$type": "MODNativeType",
  "type": "System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
}

// string
"ValueType": {
  "$type": "MODNativeType",
  "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
}

// Vector2 (MODVector2)
"ValueType": {
  "$type": "MODNativeType",
  "type": "MOD.Core.MODVector2, MOD.Core, Version=1.11.0.0, Culture=neutral, PublicKeyToken=null"
}
// Value 형식: { "$type": "MOD.Core.MODVector2, MOD.Core", "x": 0.0, "y": 0.0 }

// DataRef (MODDataRef)
"ValueType": {
  "$type": "MODNativeType",
  "type": "MOD.Core.MODDataRef, MOD.Core, Version=1.11.0.0, Culture=neutral, PublicKeyToken=null"
}
// Value 형식: { "$type": "MOD.Core.MODDataRef, MOD.Core", "DataId": "hex..." }

// CollisionGroup
"ValueType": {
  "$type": "MODNativeType",
  "type": "MOD.Core.Physics.CollisionGroup, MOD.Core, Version=1.11.0.0, Culture=neutral, PublicKeyToken=null"
}
// Value 형식: { "$type": "MOD.Core.Physics.CollisionGroup, MOD.Core", "Id": "hex..." }

// boolean (System.Boolean) — Enable=false/true에 사용
"ValueType": {
  "$type": "MODNativeType",
  "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
}
// Value 형식: true 또는 false

컴포넌트 추가

./Global/DefaultPlayer.modelContentProto.Json.Components 배열에 항목 추가.

커스텀 스크립트 컴포넌트 추가:

"Components": [
  "script.PlayerHit",
  "script.PlayerAttack",
  "script.MyCustomComponent"
]
커스텀 스크립트(.mlua)는 반드시 ./RootDesk/MyDesk/에 생성해야 한다. 스크립트를 먼저 작성한 후 Components 배열에 "script.스크립트명"으로 추가한다.

네이티브 컴포넌트 추가 (예: SpriteRendererComponent):

"Components": [
  "script.PlayerHit",
  "script.PlayerAttack",
  "MOD.Core.SpriteRendererComponent"
]

컴포넌트 제거

DefaultPlayer.modelComponents 배열에서 해당 항목을 제거한다. 관련 Values 항목도 함께 제거해야 한다.

주의: Player.model(베이스)에서 상속된 컴포넌트는 DefaultPlayer.model의 Components에 없으므로, 베이스 컴포넌트를 제거하려면 Player.model 자체를 수정해야 한다. 일반적으로 베이스 컴포넌트 제거는 권장하지 않는다.

DefaultPlayer 숨기기

DefaultPlayer는 base model 상속 컴포넌트이므로 삭제 불가. Enable=false로 비활성화하는 것이 유일한 방법이다.

컴포넌트 유지/비활성화 분류

컴포넌트완전 숨기기아바타만 숨기기비고
TransformComponent유지유지필수
PlayerComponent유지유지필수 — 비활성화 시 입장 실패
StateComponent유지유지비활성화 시 다른 컴포넌트 에러
MovementComponent유지유지이동 필요 시 유지
CameraComponent유지유지카메라 필요 시 유지
AvatarRendererComponent비활성화비활성화핵심 — 이것만 꺼도 안 보임
AvatarStateAnimationComponent비활성화비활성화
CostumeManagerComponent비활성화비활성화
PlayerControllerComponent비활성화유지이동 차단 여부에 따라
ChatBalloonComponent비활성화비활성화
NameTagComponent비활성화비활성화
DamageSkinSettingComponent비활성화비활성화
DamageSkinSpawnerComponent비활성화비활성화
HitComponent비활성화비활성화
HitEffectSpawnerComponent비활성화비활성화
TriggerComponent비활성화비활성화
InventoryComponent비활성화비활성화
RigidbodyComponent비활성화맵 모드 유지MapleTile 맵일 때
SideviewbodyComponent비활성화맵 모드 유지SideViewRectTile 맵일 때
KinematicbodyComponentEnableShadow=falseEnableShadow=false그림자만 제거

파일 편집 — Values에 Enable=false 추가

./Global/DefaultPlayer.modelContentProto.Json.Values 배열에 항목 추가. 기존에 없는 컴포넌트 Enable 항목은 새로 추가한다.

{
  "TargetType": "MOD.Core.AvatarRendererComponent",
  "Name": "Enable",
  "ValueType": {
    "$type": "MODNativeType",
    "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  },
  "Value": false
}

동일 패턴으로 비활성화할 컴포넌트마다 항목 추가. 그림자 제거는:

{
  "TargetType": "MOD.Core.KinematicbodyComponent",
  "Name": "EnableShadow",
  "ValueType": {
    "$type": "MODNativeType",
    "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
  },
  "Value": false
}

파일 저장 후 Maker Refresh 필수.


DefaultPlayer 컴포넌트 확장 패턴

  • 비아바타 플레이어: AvatarRendererComponent 비활성화 → SpriteRendererComponent 추가 → SpriteRUID 설정.
  • 충돌 설정: TriggerComponent의 Values에서 ColliderType, CollisionGroup 조정.
  • SpawnLocation: 맵(.map) 파일에서 Special → SpawnLocation 배치 (부활 위치).

워크플로우

플레이어 기본 속성 수정 (이동 속도, 점프력, HP 등)

1. ./Global/DefaultPlayer.model 파일 읽기 → Values 배열 확인
2. 수정할 프로퍼티 항목을 찾아 Value 변경
3. 모델 프로퍼티(TargetType: null)와 컴포넌트 직접 오버라이드가 모두 있는 경우 양쪽 일관 수정
4. 파일 저장

플레이어에 커스텀 스크립트 추가

1. ./RootDesk/MyDesk/ 에 새 .mlua 스크립트 작성 (msw-scripting 스킬 참조)
2. ./Global/DefaultPlayer.model 의 Components 배열에 "script.스크립트명" 추가
3. 필요 시 Values 배열에 스크립트 프로퍼티 기본값 추가
4. Maker Refresh 요청 (.codeblock 자동 생성)

카메라 설정 변경

1. ./Global/DefaultPlayer.model 읽기
2. Values에서 cameraDeadZone, cameraSoftZone, cameraDamping, cameraScreen, cameraDutch, cameraOffset 수정
3. 파일 저장

경계 및 주의사항

담당 영역

  • DefaultPlayer/Player 모델 파일(.model) 조회/수정
  • 컴포넌트 추가/제거 (Components 배열)
  • 이동/물리/HP/카메라 설정 (Values 배열)

비담당 영역

  • 코스튬/아바타 장비 → msw-costume 스킬
  • UI 에디터 → ./ui/ 폴더의.ui 파일 (전용 스킬)
  • 맵 편집 → ./map/ 폴더의.map 파일 (전용 스킬, NPC/몬스터 스폰 포함)
  • 일반 스크립트/리소스 → 각 전용 스킬

제약

  1. Global/ 폴더 주의: DefaultPlayer.model과 Player.model은 ./Global/에 있다. 이 폴더는 엔진 기본 템플릿 전용이므로 신규 파일 생성은 권장하지 않는다.
  2. 커스텀 스크립트 위치: 새 스크립트 파일은 반드시 ./RootDesk/MyDesk/에 생성한다.
  3. 맵 모드 주의: 맵 모드(MapleTile/RectTile/SideViewRectTile)에 따라 활성 이동 컴포넌트가 다르다.
  4. ValueType 정확성: Values 항목 추가 시 ValueType 형식(특히 어셈블리 버전)을 기존 항목과 일치시켜야 한다.
  5. Maker Refresh: 스크립트 추가/수정 후에는 Maker Refresh가 필요하다 (.codeblock 자동 생성).

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

33.27%
按下载量换算49

Claude

31.46%
按下载量换算47

Cursor

19.33%
按下载量换算29

Gemini CLI

8.89%
按下载量换算13

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills