🏠 Home 

Location Fineder for Neal.fun

Bot for Neal.fun site that allows you to skip all unnecesarry locations until you find your desired one!


Install this script?
// ==UserScript==
// @name         Location Fineder for Neal.fun
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Bot for Neal.fun site that allows you to skip all unnecesarry locations until you find your desired one!
// @author       Danylo, discord: codemeteor
// @match        https://neal.fun/wonders-of-street-view/
// @license      Code Meteor Team (CMT)
// @grant        none
// ==/UserScript==
(function() {
'use strict';
// Function to check if the keyword is met in the HTML
function checkKeyword() {
const keyword = keywordInput.value.trim();
const locationDiv = document.querySelector('.info-location');
if (keyword && locationDiv && locationDiv.textContent.includes(keyword)) {
clearInterval(interval);
} else {
// Press the "Random" button if the keyword doesn't match
const randomButton = document.querySelector('button.random');
if (randomButton) {
randomButton.click();
}
}
}
// Create GUI elements
const guiContainer = document.createElement('div');
guiContainer.id = 'botGuiContainer';
guiContainer.innerHTML = `
<style>
#botGuiContainer {
position: fixed;
top: 10px;
left: 10px;
z-index: 9999;
padding: 20px;
border-radius: 10px;
display: none;
animation: fadeIn 0.3s ease-in-out;
background: rgba(10, 0, 10, 1) url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAOCAYAAAASVl2WAAAAiklEQVQYlY2QMQqCQBBF3xqBgZiDwBR/D0xE8IXZjvFkM8XMwCTMDF8IgAVJnJmDDkM2ThDIJYjAAhA+Zb+wM+h2VZBGSN0MBIz3BVKyixvBzBGObL4Vwb0x1Q0kZShGHDziz5M2TxQwsAHc/LvZBJfIoAAAAASUVORK5CYII=");
position: relative; /* Added position relative */
background-size: 400px; /* Set background size to 400px */
width: 525px; /* Set width to 400px */
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
#botGuiContainer.show {
display: block;
}
#startStopCheckbox {
margin-right: 15px;
margin-top: 5px;
}
#startStopLabel {
font-weight: bold;
margin-right: 10px;
color: white; /* Change text color to white */
}
#keywordInput {
margin-top: 10px;
padding: 8px;
border-radius: 5px;
border: 1px solid #ccc;
background-color: #333;
color: white;
width: 100%;
box-sizing: border-box;
}
#delaySlider {
margin-top: 10px;
width: 100%;
}
#delayText {
margin-top: 5px;
color: white;
}
#watermark {
position: absolute; /* Positioned within the GUI container */
bottom: 10px;
left: 400px; /* Position the watermark 400px from the left side of the screen */
color: #888;
font-size: 12px;
z-index: -1; /* Ensure the watermark is behind other elements */
}
/* Dots animation */
#dotsBackground {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
pointer-events: none;
z-index: -1;
background-size: 50px 50px;
background-image: radial-gradient(circle, #888 1px, transparent 1px), radial-gradient(circle, #888 1px, transparent 1px);
background-position: 0 0, 25px 25px;
background: rgba(100, 0, 60, 1)
opacity: 0.5;
animation: dotsAnimation 10s infinite linear;
}
@keyframes dotsAnimation {
from {
background-position: 0 0, 25px 25px;
}
to {
background-position: 50px 0, 75px 75px;
}
}
#findNextButton {
margin-top: 10px;
padding: 10px 20px;
border: none;
border-radius: 5px;
background-color: #666;
color: white;
cursor: pointer;
}
#findNextButton:hover {
background-color: #999;
}
</style>
<div id="dotsBackground"></div>
<input type="checkbox" id="startStopCheckbox">
<label for="startStopCheckbox" id="startStopLabel">Start bot?</label>
<input type="text" id="keywordInput" placeholder="Enter Location">
<input type="range" min="0" max="1500" value="1000" id="delaySlider">
<div id="delayText"></div> <!-- Element for displaying delay text -->
<div id="watermark">Bot made by Danylo</div> <!-- Watermark -->
<button id="findNextButton">Find Next</button> <!-- Button to find next -->
`;
document.body.appendChild(guiContainer);
const startStopCheckbox = document.getElementById('startStopCheckbox');
const keywordInput = document.getElementById('keywordInput');
const delaySlider = document.getElementById('delaySlider');
const delayText = document.getElementById('delayText'); // Get the delay text element
const findNextButton = document.getElementById('findNextButton'); // Get the find next button
let interval;
// Function to start/stop the bot based on checkbox state
function toggleBot() {
if (startStopCheckbox.checked) {
startStopLabel.textContent = 'Stop bot?';
interval = setInterval(checkKeyword, delaySlider.value); // Use the delay from the slider
} else {
startStopLabel.textContent = 'Start bot?';
clearInterval(interval);
}
}
// Function to update delay text
function updateDelayText() {
const delayValue = parseInt(delaySlider.value);
if (delayValue === 0) {
delayText.textContent = 'Find as fast as possible';
} else {
delayText.textContent = `Delay: ${delayValue}ms`;
}
}
// Function to handle "Find Next" button click
function findNext() {
startStopCheckbox.checked = true; // Check the checkbox
startStopCheckbox.dispatchEvent(new Event('change')); // Dispatch change event
const randomButton = document.querySelector('button.random');
if (randomButton) {
randomButton.click();
}
}
// Toggle GUI visibility on pressing the "Insert" key
document.addEventListener('keydown', function(event) {
if (event.code === 'Insert') {
guiContainer.classList.toggle('show');
}
});
// Add event listeners
startStopCheckbox.addEventListener('change', toggleBot);
delaySlider.addEventListener('input', updateDelayText); // Update delay text when slider value changes
findNextButton.addEventListener('click', findNext); // Add click event listener to find next button
// Initial update of delay text
updateDelayText();
})();