|
本文为 其乐用户(UID:1501635) 发布的原创文章,转摘前请联系该用户获得许可
本帖最后由 1501635 于 2025-7-14 02:11 编辑
让Gemini写了一个Steam展柜助手
默认只会在Steam主页,艺术作品页面显示
点击对应的窗口会会复制对应的代码 之后按下F12去控制台里面输入就行了
经过本人实测,以及多次修正可以正常使用
greasyfork安装地址
- <blockquote>// ==UserScript==
- // @name Steam展柜自定义快速工具
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description 快速作品编辑工具
- // @author Your name
- // @match https://steamcommunity.com/id/*/
- // @match https://steamcommunity.com/sharedfiles/edititem/767/3/
- // @grant GM_openInTab
- // @grant GM_setClipboard
- // @grant GM_notification
- // @require https://code.jquery.com/jquery-3.6.0.min.js
- // ==/UserScript==
- (function() {
- 'use strict';
- // 添加自定义样式 - Steam官方风格
- const css = `
- .custom-steam-tool-btn {
- background: linear-gradient(135deg, #67c1f5 0%, #417a9b 100%);
- color: #ffffff;
- border: 1px solid #1999d3;
- border-radius: 3px;
- padding: 8px 16px;
- font-weight: normal;
- cursor: pointer;
- font-family: "Motiva Sans", Arial, sans-serif;
- font-size: 13px;
- text-shadow: 1px 1px 0px rgba(0, 0, 0, 0.3);
- box-shadow: 0 0 2px rgba(103, 193, 245, 0.3);
- transition: all 0.2s ease;
- position: relative;
- z-index: 9999;
- margin-left: 10px;
- }
- .custom-steam-tool-btn:hover {
- background: linear-gradient(135deg, #78c9f7 0%, #4a8bb5 100%);
- box-shadow: 0 0 5px rgba(103, 193, 245, 0.5);
- transform: translateY(-1px);
- }
- .custom-steam-tool-btn:active {
- background: linear-gradient(135deg, #417a9b 0%, #67c1f5 100%);
- transform: translateY(0);
- }
- .custom-dropdown {
- position: fixed;
- background: linear-gradient(135deg, #1e2328 0%, #2a475e 100%);
- border: 1px solid #67c1f5;
- border-radius: 5px;
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6), 0 0 10px rgba(103, 193, 245, 0.3);
- min-width: 300px;
- z-index: 10000;
- display: none;
- overflow: hidden;
- font-family: "Motiva Sans", Arial, sans-serif;
- backdrop-filter: blur(10px);
- transform: scaleY(0);
- transform-origin: top;
- transition: all 0.3s ease-out;
- }
- .custom-dropdown.show {
- transform: scaleY(1);
- }
- .custom-dropdown a {
- display: block;
- padding: 12px 16px;
- color: #c6d4df;
- text-decoration: none;
- border-bottom: 1px solid rgba(42, 71, 94, 0.5);
- transition: all 0.2s ease;
- font-size: 13px;
- position: relative;
- }
- .custom-dropdown a:hover {
- background: linear-gradient(90deg, rgba(103, 193, 245, 0.2) 0%, rgba(103, 193, 245, 0.1) 100%);
- color: #67c1f5;
- padding-left: 20px;
- }
- .custom-dropdown a:last-child {
- border-bottom: none;
- }
- .custom-dropdown a::before {
- content: "▶";
- margin-right: 10px;
- color: #67c1f5;
- font-size: 10px;
- opacity: 0;
- transition: all 0.2s ease;
- }
- .custom-dropdown a:hover::before {
- opacity: 1;
- }
- .code-notification {
- position: fixed;
- bottom: 80px;
- right: 20px;
- background: linear-gradient(135deg, rgba(30, 35, 40, 0.95) 0%, rgba(42, 71, 94, 0.95) 100%);
- border: 1px solid #67c1f5;
- border-radius: 5px;
- padding: 16px 20px;
- color: #c6d4df;
- font-size: 13px;
- z-index: 100000;
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6), 0 0 10px rgba(103, 193, 245, 0.3);
- max-width: 400px;
- font-family: "Motiva Sans", Arial, sans-serif;
- animation: slideIn 0.3s ease-out;
- backdrop-filter: blur(10px);
- }
- .code-notification strong {
- color: #67c1f5;
- display: block;
- margin-bottom: 8px;
- font-size: 14px;
- font-weight: normal;
- }
- .code-notification p {
- margin: 6px 0;
- line-height: 1.5;
- }
- .code-notification .hotkey {
- background: rgba(103, 193, 245, 0.3);
- padding: 2px 6px;
- border-radius: 3px;
- font-family: monospace;
- font-size: 12px;
- border: 1px solid rgba(103, 193, 245, 0.5);
- }
- .code-tip {
- padding: 12px 16px;
- color: #a9cf46;
- font-size: 12px;
- line-height: 1.5;
- border-top: 1px solid rgba(42, 71, 94, 0.5);
- background: rgba(42, 71, 94, 0.3);
- }
- .bottom-btn-container {
- position: fixed;
- bottom: 20px;
- right: 20px;
- z-index: 9999;
- display: flex;
- flex-direction: column;
- align-items: flex-end;
- }
- .top-right-btn-container {
- position: fixed;
- top: 20px;
- right: 20px;
- z-index: 9999;
- display: flex;
- flex-direction: row;
- align-items: center;
- }
- .dropdown-top-right {
- transform-origin: top right;
- }
- @keyframes slideIn {
- from {
- transform: translateY(20px) scale(0.95);
- opacity: 0;
- }
- to {
- transform: translateY(0) scale(1);
- opacity: 1;
- }
- }
- .plugin-check-info {
- position: fixed;
- top: 60px;
- right: 20px;
- background: linear-gradient(135deg, rgba(30, 35, 40, 0.9) 0%, rgba(42, 71, 94, 0.9) 100%);
- border: 1px solid #67c1f5;
- border-radius: 5px;
- padding: 12px 16px;
- color: #c6d4df;
- font-size: 12px;
- z-index: 9998;
- max-width: 300px;
- font-family: "Motiva Sans", Arial, sans-serif;
- backdrop-filter: blur(10px);
- animation: slideIn 0.3s ease-out;
- }
- .plugin-check-info .status-ok {
- color: #a9cf46;
- }
- .plugin-check-info .status-warning {
- color: #ffa500;
- }
- .plugin-check-info .status-error {
- color: #ff6b6b;
- }
- `;
- $('<style>').html(css).appendTo('head');
- // 插件冲突检查功能
- function checkPluginConflicts() {
- const conflicts = [];
- const warnings = [];
- // 检查常见的Steam插件元素
- const steamPluginSelectors = [
- '.custom-steam-tool-btn',
- '[id*="steam"]',
- '[class*="steam"]',
- '[id*="enhance"]',
- '[class*="enhance"]'
- ];
- steamPluginSelectors.forEach(selector => {
- const elements = $(selector);
- if (elements.length > 1 && selector === '.custom-steam-tool-btn') {
- conflicts.push('检测到多个Steam工具按钮');
- }
- });
- // 检查固定定位元素
- const fixedElements = $('*').filter(function() {
- return $(this).css('position') === 'fixed' &&
- $(this).css('z-index') > 9000 &&
- !$(this).hasClass('custom-steam-tool-btn') &&
- !$(this).hasClass('custom-dropdown');
- });
- if (fixedElements.length > 3) {
- warnings.push('检测到多个固定定位元素,可能存在UI冲突');
- }
- return { conflicts, warnings };
- }
- // 显示插件检查结果
- function showPluginCheckResult(result) {
- if (result.conflicts.length === 0 && result.warnings.length === 0) {
- return;
- }
- let content = '<div class="plugin-check-info">';
- content += '<strong>插件兼容性检查</strong><br>';
- if (result.conflicts.length > 0) {
- content += '<div class="status-error">冲突:</div>';
- result.conflicts.forEach(conflict => {
- content += `<div>• ${conflict}</div>`;
- });
- }
- if (result.warnings.length > 0) {
- content += '<div class="status-warning">警告:</div>';
- result.warnings.forEach(warning => {
- content += `<div>• ${warning}</div>`;
- });
- }
- content += '</div>';
- const checkInfo = $(content);
- $('body').append(checkInfo);
- // 5秒后自动关闭
- setTimeout(() => {
- checkInfo.fadeOut(500, () => checkInfo.remove());
- }, 5000);
- }
- // 个人主页功能 - 仅在个人资料主页生效
- if (window.location.href.match(/https:\/\/steamcommunity\.com\/id\/[^\/]+\/?$/)) {
- // 执行插件冲突检查
- setTimeout(() => {
- const checkResult = checkPluginConflicts();
- showPluginCheckResult(checkResult);
- }, 1000);
- // 创建按钮和下拉菜单
- const profileBtn = $(`
- <button class="custom-steam-tool-btn" id="steam-custom-btn">
- <i class="fa fa-magic" style="margin-right: 5px;"></i> 展柜工具
- </button>
- `);
- const dropdown = $(`
- <div class="custom-dropdown" id="steam-custom-dropdown">
- <a href="#" class="dropdown-item" data-count="1">打开1个艺术作品编辑界面</a>
- <a href="#" class="dropdown-item" data-count="3">打开3个艺术作品编辑界面</a>
- <a href="#" class="dropdown-item" data-count="5">打开5个艺术作品编辑界面</a>
- <a href="#" class="dropdown-item" data-count="9">打开9个艺术作品编辑界面</a>
- </div>
- `);
- // 添加到页面 - 优先使用页面原有位置,否则使用固定位置
- const headerActions = $('.profile_header_actions');
- if (headerActions.length) {
- const container = $('<div style="position: relative; display: inline-block;">')
- .append(profileBtn);
- headerActions.append(container);
- } else {
- $('body').append(profileBtn);
- profileBtn.css({
- position: 'fixed',
- top: '20px',
- right: '20px',
- zIndex: '9999'
- });
- }
- // 将下拉菜单添加到body
- $('body').append(dropdown);
- // 按钮点击事件 - 带边缘检测和渐变动画
- profileBtn.on('click', function(e) {
- e.stopPropagation();
- // 获取按钮位置
- const btnRect = this.getBoundingClientRect();
- const windowWidth = window.innerWidth;
- const windowHeight = window.innerHeight;
- // 计算下拉菜单位置
- let top = btnRect.bottom + 10;
- let left = btnRect.left;
- // 检测底部边缘
- if (top + 250 > windowHeight) {
- top = btnRect.top - 255;
- dropdown.addClass('dropdown-top-right');
- } else {
- dropdown.removeClass('dropdown-top-right');
- }
- // 检测右侧边缘
- if (left + 300 > windowWidth) {
- left = windowWidth - 310;
- }
- // 应用位置并显示
- dropdown.css({
- top: top + 'px',
- left: left + 'px',
- display: 'block'
- });
- // 触发渐变动画
- setTimeout(() => {
- dropdown.addClass('show');
- }, 10);
- });
- // 下拉菜单项点击事件
- dropdown.on('click', '.dropdown-item', function(e) {
- e.preventDefault();
- const count = parseInt($(this).data('count'));
- for (let i = 0; i < count; i++) {
- GM_openInTab('https://steamcommunity.com/sharedfiles/edititem/767/3/', {active: false});
- }
- hideDropdown();
- });
- // 隐藏下拉菜单函数
- function hideDropdown() {
- dropdown.removeClass('show');
- setTimeout(() => {
- dropdown.hide();
- }, 300);
- }
- // 点击页面其他地方关闭下拉菜单
- $(document).on('click', function() {
- hideDropdown();
- });
- }
- // 展柜编辑页面功能 - 仅在特定URL生效
- if (window.location.href === 'https://steamcommunity.com/sharedfiles/edititem/767/3/') {
- // 执行插件冲突检查
- setTimeout(() => {
- const checkResult = checkPluginConflicts();
- showPluginCheckResult(checkResult);
- }, 1000);
- // 创建按钮和下拉菜单
- const editorBtn = $(`
- <button class="custom-steam-tool-btn" id="steam-code-btn">
- <i class="fa fa-code" style="margin-right: 5px;"></i> 快速代码
- </button>
- `);
- const codeDropdown = $(`
- <div class="custom-dropdown dropdown-top-right" id="steam-code-dropdown">
- <a href="#" class="code-item" data-code="unnamed">无名代码</a>
- <a href="#" class="code-item" data-code="artwork">艺术作品代码</a>
- <a href="#" class="code-item" data-code="workshop">创意工坊代码</a>
- <a href="#" class="code-item" data-code="guide">指南代码</a>
- <a href="#" class="code-item" data-code="screenshot">屏幕截图代码</a>
- <div class="code-tip">
- 💡 使用提示:无名代码需配合其它代码使用<br>
- 先使用其它代码,再使用无名代码<br>
- 即可无需输入作品名字发布
- </div>
- </div>
- `);
- // 创建右上角按钮容器
- const topRightContainer = $('<div class="top-right-btn-container"></div>');
- topRightContainer.append(editorBtn);
- $('body').append(topRightContainer);
- // 将下拉菜单添加到body
- $('body').append(codeDropdown);
- // 按钮点击事件 - 右上角位置优化
- editorBtn.on('click', function(e) {
- e.stopPropagation();
- // 获取按钮位置
- const btnRect = this.getBoundingClientRect();
- const windowWidth = window.innerWidth;
- // 计算下拉菜单位置 - 固定在右上角
- let top = btnRect.bottom + 10;
- let left = btnRect.right - 300; // 菜单宽度300px,右对齐
- // 确保不超出窗口边界
- if (left < 10) {
- left = 10;
- }
- // 应用位置并显示
- codeDropdown.css({
- top: top + 'px',
- left: left + 'px',
- display: 'block'
- });
- // 触发渐变动画
- setTimeout(() => {
- codeDropdown.addClass('show');
- }, 10);
- });
- // 代码菜单项点击事件
- codeDropdown.on('click', '.code-item', function(e) {
- e.preventDefault();
- const codeType = $(this).data('code');
- let code = '';
- let codeName = '';
- switch(codeType) {
- case 'unnamed':
- code = `v_trim=_=>{return _},$J('#title').val(' \\n'+Array.from(Array(126),_=>'\\t').join(''));`;
- codeName = "无名代码";
- break;
- case 'artwork':
- code = `$J('#image_width').val(1000).attr('id',''),$J('#image_height').val(1).attr('id','');`;
- codeName = "艺术作品代码";
- break;
- case 'workshop':
- code = `$J('[name=consumer_app_id]').val(480);$J('[name=file_type]').val(0);$J('[name=visibility]').val(0);`;
- codeName = "创意工坊代码";
- break;
- case 'guide':
- code = `$J('[name=consumer_app_id]').val(480);$J('[name=file_type]').val(9);$J('[name=visibility]').val(0);`;
- codeName = "指南代码";
- break;
- case 'screenshot':
- code = `$J('#image_width').val(1000).attr('id',''),$J('#image_height').val(1).attr('id',''),$J('[name=file_type]').val(5);`;
- codeName = "屏幕截图代码";
- break;
- }
- // 复制代码到剪贴板
- GM_setClipboard(code);
- // 显示通知
- showCodeNotification(codeName, code);
- hideCodeDropdown();
- });
- // 显示代码通知
- function showCodeNotification(name, code) {
- const notification = $(`
- <div class="code-notification">
- <strong>✅ ${name} 已复制!</strong>
- <p>代码内容: <code style="word-break: break-all; display: inline-block; background: rgba(0,0,0,0.4); padding: 4px 8px; border-radius: 3px; margin-top: 5px; border: 1px solid rgba(103, 193, 245, 0.3);">${code}</code></p>
- <p>📋 请按 <span class="hotkey">F12</span> 打开浏览器开发者工具</p>
- <p>⚡ 在 Console/控制台 标签页中粘贴代码并回车执行</p>
- </div>
- `);
- $('body').append(notification);
- // 6秒后自动关闭
- setTimeout(() => {
- notification.fadeOut(500, () => notification.remove());
- }, 6000);
- }
- // 隐藏代码下拉菜单函数
- function hideCodeDropdown() {
- codeDropdown.removeClass('show');
- setTimeout(() => {
- codeDropdown.hide();
- }, 300);
- }
- // 点击页面其他地方关闭下拉菜单
- $(document).on('click', function() {
- hideCodeDropdown();
- });
- }
- })();
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
×
1、转载或引用本网站内容,必须注明本文网址:https://keylol.com/t1008335-1-1。如发文者注明禁止转载,则请勿转载
2、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任
3、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利
4、所有帖子仅代表作者本人意见,不代表本社区立场
|