4/11/2025, 7:42:01 PM
当前为
// ==UserScript==
// @name Torn Crime Success Rates Logger
// @namespace Violentmonkey Scripts
// @match https://www.torn.com/factions.php?step=your&type=1*
// @grant GM_xmlhttpRequest
// @version 1.0
// @license MIT
// @author BillyBourbon/Bilbosaggings[2323763]
// @description 4/11/2025, 7:42:01 PM
// ==/UserScript==
const webAppUrl = 'URL_HERE';
(async () => {
const getCurrentTornUser = () => {
const user = JSON.parse(document.getElementById("torn-user").value)
return user
}
console.log("Getting Crime Success Rates");
while(document.querySelectorAll('.waitingJoin___jq10k').length === 0){
await new Promise(resolve => setTimeout(resolve, 2000));
// console.log("No Joinable Crimes Present Yet")
}
const crimesSuccessOutputObject = { };
const crimeWrappers = document.querySelectorAll('.wrapper___U2Ap7');
crimeWrappers.forEach(crime=>{
const crimeTitle = crime.querySelector('.panelTitle___aoGuV').innerHTML.split(' ').join('_');
const crimeTier = crime.querySelector('.levelValue___TE4qC').innerHTML;
const roles = crime.querySelectorAll('.waitingJoin___jq10k');
if(!crimesSuccessOutputObject[crimeTitle]){
crimesSuccessOutputObject[crimeTitle] = {
tier : crimeTier,
roles : { }
}
}
roles.forEach(role=>{
const roleName = role.querySelector('.title___UqFNy').innerHTML;
const roleSuccess = role.querySelector('.successChance___ddHsR').innerHTML;
crimesSuccessOutputObject[crimeTitle].roles[roleName] = roleSuccess;
})
})
const user = getCurrentTornUser()
const obj = {
user : {
id : user.id,
name : user.playername
},
rolesObject : crimesSuccessOutputObject
}
console.log(JSON.stringify(obj))
try {
jsonResponse = await new Promise((resolve, reject) => {
GM_xmlhttpRequest({
method: 'POST',
url: webAppUrl,
data : JSON.stringify(obj),
headers : { 'Content-Type' : 'application/json' },
onload: function (response) {
console.log("Response: ", response)
if (response.status >= 200 && response.status < 300) {
try {
const responseData = JSON.parse(response.responseText);
resolve(responseData);
} catch (error) {
reject(new Error("Failed to parse JSON"));
}
} else {
reject(new Error(`API request failed with status: ${response.status}`));
}
},
onerror: function (error) {
reject(new Error(`API request failed with error: ${error}`));
}
});
});
console.log(jsonResponse);
return jsonResponse;
} catch (error) {
console.error(`Attempt 1 failed: ${error.message}`);
}
})()