// ==UserScript== // @name Torn圣诞小镇掉落物品坐标显示 // @namespace WH // @version 0.2 // @description 在地图界面上方显示附近的宝箱、物品、钥匙坐标,兼容手机APP Torn PDA及Alook // @author Woohoo[2687093] // @match https://www.torn.com/* // @grant none // ==/UserScript== (function () { 'use strict'; const ___window___ = window || window.unsafeWindow; if (___window___.WHLOOTPOS||___window___.WHTRANS) return; ___window___.WHLOOTPOS = true; const $ = ___window___.jQuery; if (/christmas_town\.php/.test(window.location.href)) { const $root = document.querySelector('#christmastownroot'); const chestTypeDict = {'1': '金', '2': '银', '3': '铜',}; const chestTypeColorDict = {'1': 'gold', '2': 'silver', '3': 'sandybrown',}; const lootTypeDict = {'chests': '宝箱', 'gifts': '礼物箱',} const intervalID = window.setInterval(() => { const $city_wrapper = $root.querySelector('#ct-wrap'); if ($city_wrapper) { const $pos = $city_wrapper.querySelector('.map-title span[class^="position___"]') || $city_wrapper.querySelector('.status-title span[class^="position___"]'); if(!$pos) return; const $pos_spl = $pos.innerText.trim().split(','); const player_position={}; player_position.x=parseInt($pos_spl[0]); player_position.y=parseInt($pos_spl[1]); const $wh_loot_container = $root.querySelector('#wh-loot-container'); if (!$wh_loot_container) { const insert_html = `
附近物品
物品
箱子
`; $($city_wrapper).before(insert_html); } let item_list = []; const items = $root.querySelectorAll('div.grid-layer div.items-layer div.ct-item'); items.forEach(e => { const item_props = {x: 0, y: 0, name: '', type: '', url: '',}; item_props.x = parseInt(e.style.left.replaceAll('px', '')) / 30; item_props.y = -parseInt(e.style.top.replaceAll('px', '')) / 30; const srcSpl = e.firstElementChild.src.trim().split('/'); item_props.name = srcSpl[6]; item_props.type = srcSpl[8].slice(0, 1); item_props.url = e.firstElementChild.src; item_list[item_list.length] = item_props; }); const $wh_loot_container_items = $root.querySelector('#wh-loot-container-items'); const $wh_loot_container_chests = $root.querySelector('#wh-loot-container-chests'); let item_count = 0, chest_count = 0; if ($wh_loot_container_items) $wh_loot_container_items.innerHTML = ``; if ($wh_loot_container_chests) $wh_loot_container_chests.innerHTML = ``; item_list.forEach(e => { let path='·'; if (e.xplayer_position.y) path='↖'; if (e.x===player_position.x&&e.y>player_position.y) path='↑'; if (e.x>player_position.x&&e.y>player_position.y) path='↗'; if (e.x>player_position.x&&e.y===player_position.y) path='→'; if (e.x>player_position.x&&e.y${path}[${e.x},${e.y}] - ${chestTypeDict[e.type]}${lootTypeDict[e.name]}` } else { item_count++; $wh_loot_container_items.innerHTML += `${path}[${e.x},${e.y}] - ${lootTypeDict[e.name] || '?钥匙'}` } }); $root.querySelector('#wh-loot-item-count').innerText = `(${item_count})`; if (item_count === 0) $wh_loot_container_items.innerText = `暂未发现`; $root.querySelector('#wh-loot-chest-count').innerText = `(${chest_count})`; if (chest_count === 0) $wh_loot_container_chests.innerText = `暂未发现`; } }, 1200); } }());