// ==UserScript==
// @name P-GO Auto SEARCH
// @version 0.25
// @description P-GOを自動で
// @match https://pmap.kuku.lu/*
// @grant none
// @namespace https://greasyfork.org/users/89773
// ==/UserScript==
(function() {
'use strict';
var latlng = [35.690695, 139.699694]; //座標[緯度, 経度] (デフォルトは新宿駅)
var x = 7; //東に→
var y = 7; //南に↓
//未確定ソースを確定に 下を'var kakutei = true;'に
var kakutei;
function floatFormat(number){
var _pow = Math.pow(10, 6);
return Math.round(number * _pow) / _pow;
}
var x_margin = 0.0025;
var y_margin = 0.002;
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;
}
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 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]
})
};
function serch(){
if (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);
}
research_key = "psearch-"+uuid();
viewTopMessage("リクエスト");
$.ajax({
url: "https://sv-webdb1.pmap.kuku.lu/_server.php",
type: "GET",
data: {
action: 'addServerQueue',
//p-goのソースをuukeyで検索して&uukey=***&sysversionの***を下を'***'に入れてね
uukey: '',
sysversion: 1001,
run_key: research_key,
loc1: lat,
loc2: lng
},
timeout: 6000,
cache: false
}).done(function(data, status, xhr) {
var t = 5;
if(data.match("連打")){
viewTopMessage("連打");
}else if(data.match("busy")){
viewTopMessage("大混雑");
}else if (data.match("OK")){
done = true;
t = 20;
viewTopMessage("更新中");
research_runserver = parseValue(data.split("OK:")[1]);
if (research_timeout) {
clearInterval(research_timeout);
research_timeout = false;
}
research_timeout = setInterval(researchResult, 1000);
}
nextRefreshResearch(t);
timeout = setTimeout(function(){serch();}, t*1000);
}).fail(function(xhr, status, error) {
serch();
});
}
setTimeout(function(){
if (auto) serch();
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);
}
var _class='leaflet-bar leaflet-control leaflet-control-custom leaflet-control-command-interior';
var css ='background:white;width:80px;height:35px;padding:10px;text-align:center;cursor:pointer;background:#';
$('.leaflet-bottom.leaflet-left').append(
$('<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',
class: _class,
style: css + (auto ? 'dddddd;' : 'ffffff'),
on: {
click: function(){
if (auto) {
auto = false;
clearTimeout(timeout);
$(this).css('background', '#ffffff');
} else {
auto = true;
serch();
$(this).css('background', '#dddddd');
}
}
}
})
);
}, 3000);
})();