Greasy Fork is available in English.

『净网卫士』 Krunker 汉化版

Krunker 是一个最近热门的在线像素风枪战游戏。时间短,节奏快。适合工作之余休息娱乐一下。翻译为中文,精简页面。

// ==UserScript==
// @author            Hunlongyu
// @name              『净网卫士』 Krunker 汉化版
// @namespace         https://github.com/Hunlongyu
// @icon              https://i.loli.net/2019/04/22/5cbd720718fdb.png
// @description       Krunker 是一个最近热门的在线像素风枪战游戏。时间短,节奏快。适合工作之余休息娱乐一下。翻译为中文,精简页面。
// @version           0.1.0
// @include           https://krunker.io/*
// @grant             GM_addStyle
// @run-at            document-end
// @supportURL        https://gist.github.com/Hunlongyu/f893c353054d34fb8262b4492da138a1
// @note              2019/07/04 v0.1.0 初始化,完成基础功能。
// ==/UserScript==

(function () {
  'use strict'

  let css = `
    * {
      font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,SimSun,sans-serif;
    }
    #aHolder, #infoHolder, #advertiseButton {display: none !important;}
  `
  GM_addStyle(css)

  // MENU
  document.getElementById('menuItemContainer').innerHTML = document.getElementById('menuItemContainer').innerHTML
  .replace(/>Profile</g, '>个人中心<')
  .replace(/>Shop</g, '>商城<')
  .replace(/>Social</g, '>社交<')
  .replace(/>Maps</g, '>地图<')
  .replace(/>Mods</g, '>Mod<')
  .replace(/>Settings</g, '>设置<')

  document.getElementById('windowHeader').addEventListener('DOMNodeInserted', function (e) {
    globalModalEvent(e.target.textContent)
  })

  function globalModalEvent (e) {
    console.log(e, 'globalModalEvent')
    if (e === 'Account') { // 个人中心
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/>Name</g, '>名字<')
      .replace(/>Clan</g, '>家族<')
      .replace(/>None</g, '>无<')
      .replace(/>Level</g, '>等级<')
      .replace(/>Score</g, '>积分<')
      .replace(/>KR</g, '>KR币<')
      .replace(/>Kills</g, '>击杀<')
      .replace(/>Deaths</g, '>死亡<')
      .replace(/>KDR</g, '>击杀死亡比<')
      .replace(/>Games Played</g, '>游戏次数<')
      .replace(/>Games Won</g, '>胜利次数<')
      .replace(/>W\/L</g, '>胜利失败比<')
      .replace(/>Time Played</g, '>游戏时长<')
      .replace(/>Logout</g, '>退出账号<')
    }
    if (e === 'Store') { // 商城
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/>Prize Wheels</g, '>抽奖转盘<')
      .replace(/>Unlock new weapon skins and items</g, '>解锁新的武器皮肤和物品<')
      .replace(/>By purchasing you agree to the </g, '>购买即表示您同意<')
      .replace(/>Terms</g, '>本条款<')
      .replace(/>Purchase KR</g, '>充值 KR<')
      .replace(/> Any </g, '> 所有 <')
      .replace(/> Snipers Only! </g, '> 狙击手 <')
      .replace(/> Outfits Only! </g, '> 服装 <')
      .replace(/>Popular!</g, '>流行<')
      .replace(/>Off</g, '>折扣<')
      .replace(/ in account/g, '')
    }
    if (e === 'Custom Maps') { // 地图
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/>Map Editor</g, '>地图编辑器<')
      .replace(/>Publish Map</g, '>发布地图<')
      .replace(/>Map Community</g, '>地图社区<')
      .replace(/>Hot</g, '>热门<')
      .replace(/>New</g, '>最新<')
      .replace(/>Favorites</g, '>最爱<')
      .replace(/>My Maps</g, '>我的地图<')
      .replace(/>Search</g, '>搜索<')
      .replace(/>No Maps found</g, '>没有发现地图<')
    }
    if (e === 'Mod Manager') {
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/>Mod Guide</g, '>Mod指南<')
      .replace(/>Mods List</g, '>Mod列表<')
      .replace(/>Publish Mod</g, '>发布Mod<')
      .replace(/>Viewer</g, '>查看<')
      .replace(/>drop mod file here or click</g, '>拖动Mod文件到这里,或者点击加载<')
      .replace(/Paste Mod Url/g, '复制Mod链接')
      .replace(/>Load Mod</g, '>加载Mod<')
    }
    if (e === 'Game Settings') { // 游戏设置
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/>Change Controls</g, '>改变控制方式<')
      .replace(/>Reset Settings</g, '>恢复默认设置<')
      .replace(/>Servers</g, '>服务器<')
      .replace(/>Default Region </g, '>默认地区<')
      .replace(/>Frankfurt</g, '>法兰克福(德国)<')
      .replace(/>Silicon Valley</g, '>硅谷(美国)<')
      .replace(/>Sydney</g, '>悉尼(澳大利亚)<')
      .replace(/>Tokyo</g, '>东京(日本)<')
      .replace(/>Miami</g, '>迈阿密(美国)<')
      .replace(/>Singapore</g, '>新加坡<')
      .replace(/>Quality</g, '>画质<')
      .replace(/Resolution /g, '分辨率')
      .replace(/Particles /g, '粒子效果')
      .replace(/Muzzle Flash /g, '枪焰')
      .replace(/>Interface</g, '>界面<')
      .replace(/Show UI /g, '显示界面')
      .replace(/Show Chat Box /g, '显示聊天框')
      .replace(/Show Kill Feed /g, '显示杀敌特效')
      .replace(/Show Player Messages /g, '显示玩家消息')
      .replace(/Show Unboxings /g, '显示 Unboxings')
      .replace(/Show Ping /g, '显示 Ping 值')
      .replace(/Show FPS /g, '显示 FPS 值')
      .replace(/Crosshair Dot /g, '准心圆点')
      .replace(/Crosshair Color /g, '准心颜色')
      .replace(/Crosshair Shadow /g, '准心阴影')
      .replace(/>Gameplay</g, '>游戏<')
      .replace(/>Sensitivity /g, '>鼠标灵敏度')
      .replace(/>Aim Sensitivity /g, '>瞄准镜灵敏度')
      .replace(/Field of View /g, '视野')
      .replace(/Weapon FOV /g, '武器视距')
      .replace(/Invert Y-Axis /g, '反转Y轴')
      .replace(/>Audio</g, '>音频<')
      .replace(/Sound /g, '声音')
      .replace(/Voice Volume /g, '音量')
      .replace(/>Editing</g, '>编辑<')
      .replace(/Weapon Bobbing /g, '武器后座力')
      .replace(/Show Weapon /g, '显示武器')
      .replace(/Depth Map /g, '深度图')
      .replace(/Green Screen /g, '绿屏')
      .replace(/>Shaders</g, '>着色器<')
      .replace(/Ambient Shading /g, '环境阴影')
      .replace(/Load Mods /g, '加载 Mod')
      .replace(/Scope Image /g, '范围图像')
    }
    if (e === 'Change Controls') { // 控制方式
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/Forward/g, '前进')
      .replace(/Backward/g, '后退')
      .replace(/Left/g, '向左')
      .replace(/Right/g, '向右')
      .replace(/Reload/g, '装弹')
      .replace(/Aim/g, '瞄准')
      .replace(/Inspect/g, '检查')
      .replace(/Spray/g, '喷图')
      .replace(/Jump/g, '跳跃')
      .replace(/Crouch/g, '下蹲')
      .replace(/Next Weapon/g, '下一个武器')
      .replace(/Previous Weapon/g, '上一个武器')
      .replace(/Chat/g, '聊天')
      .replace(/Voice/g, '语音')
      .replace(/Player List/g, '玩家列表')
      .replace(/Interact/g, '交互')
    }
    if (e === 'Host Custom Game') { // 主机
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/>Select Maps</g, '>选择地图<')
      .replace(/Burg/g, 'Burg 城堡')
      .replace(/Littletown/g, 'Littletown 小镇')
      .replace(/Sandstorm/g, 'Sandstorm 沙漠')
      .replace(/Subzero/g, 'Subzero 雪地')
      .replace(/Community Maps /g, '社区地图')
      .replace(/>Select</g, '>点击选择<')
      .replace(/>Select Maps</g, '>选择地图<')
      .replace(/Raw Map Data/g, '地图数据源')
      .replace(/Map Data/g, '地图数据')
      .replace(/>Add Mod Pack</g, '>添加Mod<')
      .replace(/Community Mods /g, '社区Mod')
      .replace(/Mod URL/g, 'Mod链接')
      .replace(/>Select Modes</g, '>选择模式<')
      .replace(/Free for All/g, '自由模式')
      .replace(/Team Deathmatch/g, '队伍死亡竞赛')
      .replace(/Capture the Flag/g, '夺旗模式')
      .replace(/Parkour/g, '跑酷模式')
      .replace(/Hide &amp; Seek/g, '捉迷藏模式')
      .replace(/Infected/g, '僵尸模式')
      .replace(/Race/g, '竞速模式')
      .replace(/Boss Hunt/g, '追杀模式')
      .replace(/Competitive/g, '竞技模式')
      .replace(/Simon Says/g, '得令模式')
      .replace(/Gun Game/g, '枪战模式')
      .replace(/>Select Classes</g, '>选择类型<')
      .replace(/Triggerman/g, 'Triggerman(突击步枪)')
      .replace(/Hunter/g, 'Hunter(狙击步枪)')
      .replace(/Run N Gun/g, 'Run N Gun(冲锋枪)')
      .replace(/Spray N Pray/g, 'Spray N Pray(轻型机关枪)')
      .replace(/Vince/g, 'Vince(霰弹枪)')
      .replace(/Detective/g, 'Detective(左轮手枪)')
      .replace(/Marksman/g, 'Marksman(半自动步枪)')
      .replace(/Rocketeer/g, 'Rocketeer(火箭弹)')
      .replace(/Agent/g, 'Agent(乌兹枪)')
      .replace(/Runner/g, 'Runner(双拳)')
      .replace(/Bowman/g, 'Bowman(弩)')
      .replace(/>Settings</g, '>设置<')
      .replace(/>Players/g, '>玩家数量')
      .replace(/>Min Players/g, '>最少玩家数量')
      .replace(/Lives/g, '存活')
      .replace(/Minutes/g, '游戏时长(分钟)')
      .replace(/Gravity/g, '重力')
      .replace(/Jump Force/g, '跳跃能力')
      .replace(/Time Scale/g, '时间段')
      .replace(/Strafe Speed/g, '横向速度')
      .replace(/Health Multiplier/g, '生命值')
      .replace(/Team 1 Name/g, '队伍1的名字')
      .replace(/Team 2 Name/g, '队伍2的名字')
      .replace(/Select Team /g, '选择队伍')
      .replace(/Spectating /g, '观看')
      .replace(/Kill Rewards /g, '击杀奖励')
      .replace(/Sliding /g, '滑步')
      .replace(/Auto Jump /g, '自动跳跃')
      .replace(/3rd Person /g, '第三人称视角')
      .replace(/Nametags /g, '')
      .replace(/Hide/g, '隐藏')
      .replace(/Private /g, '不公开')
      .replace(/>Host Presets</g, '>主机预设<')
      .replace(/Preset name/g, '预设名称')
      .replace(/>Load</g, '>加载<')
      .replace(/>Save</g, '>保存<')
      .replace(/>Delete</g, '>删除<')
      .replace(/>Start Game</g, '>开始游戏<')
    }
    if (e === 'Server Browser') { // 服务器
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/Host Game</g, '添加主机<')
      .replace(/placeholder="Search"/g, 'placeholder="搜索"')
      .replace(/>Hide Full</g, '>隐藏人满房间<')
      .replace(/Custom Games/g, '自定义游戏')
      .replace(/online/g, '在线')
      .replace(/Silicon Valley/g, '硅谷(美国)')
      .replace(/Miami/g, '迈阿密(美国)')
      .replace(/Frankfurt /g, '法兰克福(德国)')
      .replace(/Tokyo /g, '东京(日本)')
      .replace(/Singapore /g, '新加坡')
      .replace(/Sydney /g, '悉尼(澳大利亚)')
      .replace(/total/g, '')
    }
    if (e === 'Change Loadout') { // 修改角色属性
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/Host Game</g, '添加主机<')
      .replace(/Class/g, '角色')
      .replace(/Primary/g, '主要武器')
      .replace(/Secondary/g, '次级武器')
      .replace(/Melee/g, '近战')
      .replace(/Hat/g, '帽子')
      .replace(/Body/g, '身体')
      .replace(/>Spray</g, '>喷图<')
    }
    if (e === 'Select Class') { // 选择角色
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/Assault Rifle/g, '突击步枪')
      .replace(/Sniper Rifle/g, '狙击步枪')
      .replace(/Submachine Gun/g, '冲锋枪')
      .replace(/Light Machine Gun/g, '轻型机关枪')
      .replace(/Shotgun/g, '霰弹枪')
      .replace(/Revolver/g, '左轮手枪')
      .replace(/Semi Auto/g, '半自动步枪')
      .replace(/Rocket Launcher/g, '火箭弹')
      .replace(/Akimbo Uzi/g, '乌兹枪')
      .replace(/Hands/g, '双拳')
      .replace(/Crossbow/g, '弩')
    }
    if (e === 'Clans') { // 家族
      document.getElementById('menuWindow').innerHTML = document.getElementById('menuWindow').innerHTML
      .replace(/>Create Clan</g, '>创建家族<')
      .replace(/Clan Name/g, '家族名称')
      .replace(/>Create</g, '>创建<')
      .replace(/>Submit</g, '>提交<')
      .replace(/Join Clan /g, '加入家族')
      .replace(/View Clans/g, '浏览家族')
    }
  }

  // 右上角功能按钮
  document.getElementById('challButton').innerHTML = document.getElementById('challButton').innerHTML
  .replace(/>Challenge Mode</g, '>挑战模式<')
  document.getElementById('stremButton').innerHTML = document.getElementById('stremButton').innerHTML
  .replace(/>Stream Mode</g, '>流模式<')
  document.getElementById('spectButton').innerHTML = document.getElementById('spectButton').innerHTML
  .replace(/>Spectate</g, '>观看<')

  // logo 下的三个按钮
  document.getElementById('subLogoButtons').innerHTML = document.getElementById('subLogoButtons').innerHTML
  .replace(/>Host Game</g, '>主机<')
  .replace(/>Invite</g, '>邀请<')
  .replace(/>Server Browser</g, '>服务器<')

  // 角色属性
  document.getElementById('menuClassSubtext').innerHTML = document.getElementById('menuClassSubtext').innerHTML
  .replace(/Assault Rifle/g, '突击步枪')
  .replace(/Sniper Rifle/g, '狙击步枪')
  .replace(/Submachine Gun/g, '冲锋枪')
  .replace(/Light Machine Gun/g, '轻型机关枪')
  .replace(/Shotgun/g, '霰弹枪')
  .replace(/Revolver/g, '左轮手枪')
  .replace(/Semi Auto/g, '半自动步枪')
  .replace(/Rocket Launcher/g, '火箭弹')
  .replace(/Akimbo Uzi/g, '乌兹枪')
  .replace(/Hands/g, '双拳')
  .replace(/Crossbow/g, '弩')
  document.getElementById('customizeButton').innerHTML = document.getElementById('customizeButton').innerHTML
  .replace(/Customize/g, '自定义角色')

  // 聊天框
  document.getElementById('chatUI').innerHTML = document.getElementById('chatUI').innerHTML
  .replace(/Enter Message/g, '输入消息')

  // 中心界面
  document.getElementById('instructionHolder').addEventListener('DOMNodeInserted', function (e) {
    globalCenterEvent()
  })
  function globalCenterEvent () {
    document.getElementById('instructionHolder').innerHTML = document.getElementById('instructionHolder').innerHTML
    .replace(/>CLICK TO PLAY</g, '>点击开始游戏<')
    .replace(/>Game is full.</g, '>房间人数已满<')
    .replace(/>Kicked for inactivity</g, '>因长时间不活跃被提出房间<')
    .replace(/>Try seeking a new game by clicking </g, '>尝试寻找新的房间<')
    .replace(/>here</g, '>查找<')
    .replace(/>If you have any extensions. Disable them</g, '>如果你有任何扩展,尝试禁用它们<')
  }
  document.getElementById('instructionHolder').innerHTML = document.getElementById('instructionHolder').innerHTML
  .replace(/>CLICK TO PLAY</g, '>点击开始游戏<')
  .replace(/>Game is full.</g, '>房间人数已满<')
  .replace(/>Kicked for inactivity</g, '>因长时间不活跃被提出房间<')
  .replace(/>Try seeking a new game by clicking </g, '>尝试寻找新的房间<')
  .replace(/>here</g, '>查找<')
  .replace(/>If you have any extensions. Disable them</g, '>如果你有任何扩展,尝试禁用它们<')

  // 右上角按钮
  document.getElementById('advertiseButton').innerHTML = document.getElementById('advertiseButton').innerHTML
  .replace(/>Download Client</g, '>下载客户端<')
})()