您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
P-GO SEARCHを自動でサーチ
// ==UserScript== // @name P-GO Auto SEARCH // @version 0.40 // @description P-GO SEARCHを自動でサーチ // @match https://pmap.kuku.lu/* // @grant none // @namespace https://greasyfork.org/users/89773 // ==/UserScript== (function() { 'use strict'; //keyの設定不要 var latlng; //座標はダイアログから設定 //範囲指定 var x = 7; //東→に var y = 7; //南↓に //未確定ソースを確定に 下を'var kakutei = true;'に var kakutei; //間隔指定 var x_margin = 0.0025; var y_margin = 0.002; //localStorageに保存してたらそっちを優先 if (localStorage.getItem("x")) x = localStorage.getItem("x"); if (localStorage.getItem("y")) y = localStorage.getItem("y"); if (localStorage.getItem("x_margin")) x_margin = localStorage.getItem("x_margin"); if (localStorage.getItem("y_margin")) y_margin = localStorage.getItem("y_margin"); if (!latlng){ if (localStorage.getItem("latlng")){ latlng = localStorage.getItem("latlng"); if (!latlng.match(/\d+\.\d+,\s?\d+\.\d+/)) latlng = dialog('不正値'); }else{ latlng = dialog(); } latlng = latlng.split(','); latlng = [Number(latlng[0]), Number(latlng[1])]; } function gene(latlng, range, adjust){ var list=[]; for (var i=0; i<range.lat; i++){ var v = floatFormat((latlng[0] - y_margin*i)); var r = (!adjust && i%2 !== 0) ? range.lng-1 : range.lng; for (var j=0; j<r; j++){ var w = floatFormat((latlng[1] + x_margin*j)); if (i%2 !== 0) w = floatFormat(w + x_margin/2); list.push([v, w]); } } return list; } function dialog(messege){ messege = messege ? messege+'\n' : ''; var latlng = window.prompt(messege+"起点座標を入力", "35.690695, 139.699694"); if (!latlng.match(/\d+\.\d+,\s?\d+\.\d+/)){ latlng = dialog('不正値'); }else{ localStorage.setItem("latlng", latlng); } return latlng; } function floatFormat(number){ var _pow = Math.pow(10, 6); return Math.round(number * _pow) / _pow; } var list = gene(latlng, {lat: y, lng: x}); if (kakutei){ var t_lat = 1; var t_lng = 3; var m_lat = y_margin * t_lat; var m_lng = x_margin * t_lng; var c_lat = localStorage.getItem("lat") ? localStorage.getItem("lat") : 0; var c_lng = localStorage.getItem("lng") ? localStorage.getItem("lng") : 0; var adjust = (t_lat%2 !== 0 && c_lat%2 !== 0) ? floatFormat(x_margin/2) : 0; list = gene([latlng[0] - m_lat*c_lat, latlng[1] + m_lng*c_lng + adjust], {lat: t_lat, lng: t_lng}, true); setInterval(function(){ c_lat++; if (c_lat>10){ c_lat = 0; c_lng++; localStorage.setItem("lng", c_lng); } localStorage.setItem("lat", c_lat); adjust = (t_lat%2 !== 0 && c_lat%2 !== 0) ? floatFormat(x_margin/2) : 0; list = gene([latlng[0] - m_lat*c_lat, latlng[1] + m_lng*c_lng + adjust], {lat: t_lat, lng: t_lng}, true); for (var i=0; i<list.length; i++){ L.circle([list[i][0], list[i][1]], 150, {opacity: 0.2, fillOpacity: 0.1, color: 'red'}).addTo(map); } }, 60*60*1000); } var jump, random, lat, lng, marker, timeout; var auto = true; var done = true; var count = Math.floor( Math.random() * list.length ); var key = $('head').text().match(/uukey=(.*?)\&/)[1]; var version = $('head').text().match(/sysversion=(.*?)\&/)[1]; var option = { opacity: 0.8, zIndexOffset: 999999, icon : L.icon({ iconUrl: 'https://github.com/pointhi/leaflet-color-markers/raw/master/img/marker-icon-red.png', shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }) }; var searching, searchcircle, search_marker, search_circle; function addMarker(lat, lng){ search_marker=L.marker([lat, lng], { zIndexOffset: 999999, icon: L.icon({ iconUrl: 'https://img-pmap.aquapal-cdn.net/img/icon_search2.png', iconSize: [40, 40] }) }).on( 'click', function() { if (!searching){ searching = true; search(lat, lng); } }).addTo(map); search_circle=L.circle([lat, lng], 150, {opacity: 0.1, color: 'green'}).addTo(map); } function search(s_lat, s_lng){ if (!searchcircle && done){ done = false; if (random){ count = Math.floor( Math.random() * list.length ); }else{ count++; if (count>=list.length) count = 0; } lat = list[count][0]; lng = list[count][1]; console.info(count + ': ' + lat + ', ' + lng); if (marker) map.removeLayer(marker); marker = L.marker([lat, lng], option).addTo(map); if (jump) map.setView([lat, lng], 17); }else if(s_lat && s_lng){ lat = s_lat; lng = s_lng; } research_key = "psearch-"+uuid(); viewTopMessage("リクエスト"); $.ajax({ url: "https://sv-webdb1.pmap.kuku.lu/_server.php", type: "GET", data: { uukey: key, sysversion: version, action: 'addServerQueue', run_key: research_key, loc1: lat, loc2: lng }, timeout: 6000, cache: false }).done(function(data, status, xhr) { if (data.match("REQ_CAPTCHA")){ $.getScript("https://www.google.com/recaptcha/api.js", function(){ openAlertWindow('<center><div class="g-recaptcha" data-callback="syncerRecaptchaCallback" data-sitekey="'+parseValue(data.split("NG:")[1]).sitekey+'"></div></center>'); }); var Interval = setInterval(function(){ if($('#area_topmessage a').text()=='確認成功'){ clearInterval(Interval); search(); } }, 1000); }else{ var t = 5; if(data.match("連打")){ viewTopMessage("連打"); }else if(data.match("busy")){ viewTopMessage("大混雑"); }else if (data.match("OK")){ done = true; searching = false; t = 10; viewTopMessage("更新中"); research_runserver = parseValue(data.split("OK:")[1]); if (research_timeout) { clearInterval(research_timeout); research_timeout = false; } research_timeout = setInterval(researchResult, 1000); } nextRefreshResearch(t); if (!searchcircle || t<10) timeout = setTimeout(function(){search();}, t*1000); } }).fail(function(xhr, status, error) { search(); }); } var interval = setInterval(function(){ if (auto) search(); for (var i=0; i<list.length; i++){ L.circle([list[i][0], list[i][1]], 150, {opacity: 0.2, fillOpacity: 0.1, color: 'red'}).addTo(map); } map.on('click', function(e) { if (searchcircle){ if(!$(e.originalEvent.target).is('.leaflet-control, .leaflet-control img')){ console.info(e.latlng+''); map.removeLayer(search_marker); map.removeLayer(search_circle); addMarker(e.latlng.lat, e.latlng.lng); } } }); var _class='leaflet-bar leaflet-control leaflet-control-custom leaflet-control-command-interior'; var css ='width:80px;height:35px;padding:10px;text-align:center;cursor:pointer;background:#'; $('.leaflet-bottom.leaflet-left').append( $('<div>', { id: 'search', class: _class, html: '<img src="https://img-pmap.aquapal-cdn.net/img/icon_searchcircle2.png" width="30" style="opacity:0.5;">', click: function(){ if (searchcircle) { searchcircle = false; $(this).children().css('opacity', 0.5); map.removeLayer(search_marker); map.removeLayer(search_circle); } else { searchcircle = true; auto = false; clearTimeout(timeout); $('#Auto').css('background', '#ffffff'); $(this).children().css('opacity', 1); addMarker(map.getCenter().lat, map.getCenter().lng); } clearTimeout(timeout); timeout = searching = false; } }), $('<div>', { text: '再指定', class: _class, style: css + 'ffffff;', on: { click: function(){ dialog(); location.reload(); } } }), $('<div>', { text: 'Random', class: _class, style: css + (random ? 'dddddd;' : 'ffffff;'), on: { click: function(){ if (random) { random = false; $(this).css('background', '#ffffff'); } else { random = true; $(this).css('background', '#dddddd'); } } } }), $('<div>', { text: 'Jamp', class: _class, style: css + (jump ? 'dddddd;' : 'ffffff;'), on: { click: function(){ if (jump) { jump = false; $(this).css('background', '#ffffff'); } else { jump = true; $(this).css('background', '#dddddd'); } } } }), $('<div>', { text: 'Auto', id: 'Auto', class: _class, style: css + (auto ? 'dddddd;' : 'ffffff;'), on: { click: function(){ if (auto) { auto = false; clearTimeout(timeout); $(this).css('background', '#ffffff'); } else { auto = true; searchcircle = false; $('#search').children().css('opacity', 0.5); map.removeLayer(search_marker); map.removeLayer(search_circle); search(); $(this).css('background', '#dddddd'); } } } }) ); if($('#Auto').length>0) clearInterval(interval); }, 1000); })();