This script adds a one click training function to company training.
// ==UserScript==
// @author Xiphias[187717]
// @name Torn City - One click Company training by Xiphias[187717]
// @description This script adds a one click training function to company training.
// @include http://www.torn.com/companies.php*
// @include http://torn.com/companies.php*
// @include https://www.torn.com/companies.php*
// @include https://torn.com/companies.php*
// @version 1.0.4
// @namespace https://greasyfork.org/users/3898
// ==/UserScript==
var emplUrl = 'step=trainemp&ID=';
window.timesTrained = 0;
$('body').ajaxComplete(function (e, xhr, settings) {
var url = settings.url;
if (url.indexOf(emplUrl) >= 0) {
var employeeID = getIDFromUrl(url);
addTrainXTimesButton(employeeID);
}
});
/**
* @param url {String} Employee train href
*/
function getIDFromUrl(url) {
var idRegex = /ID=(\d+)/;
var match = idRegex.exec(url);
if (match) {
return match[1];
} else {
return '0';
}
}
function addTrainXTimesButton(employeeID) {
var newElements = '<span style="position: relative; left: 2px; border-right: 2px solid #444; margin-right: -2px;"></span><a id="trainXtimesBtn' + employeeID + '" href="#nogo" style="position: relative; left: 10px;"><b>Train times.</b></a><input style="position: relative; padding-left: 3px; left: -50px; background-color: #ebebeb; height: 18px; width: 18px;" placeholder="20" id="trainXtimesInput' + employeeID + '" ></span>';
$('.train-info.confirm.p10').find('[href*="trainemp2&ID=' + employeeID + '"]').parent().append(newElements);
$('#trainXtimesBtn' + employeeID).on('click', function () {
window.timesTrained = 0;
var times = getTimesToTrain(employeeID);
repeatTrains(employeeID, times);
});
}
function sendTrainRequest(employeeID) {
$.get('companies.php?rfcv=' + getCookie('rfc_v'), {
step : 'trainemp2',
ID : employeeID
}, function( result ) {
var $employees = $('#employees');
console.log(result);
var data = JSON.parse(result);
if (data.success) {
window.timesTrained += 1;
var times = "times";
if (window.timesTrained == 1) {
times = "time";
}
var $employees = $('#employees');
var usernameID = $employees.find('.user.name > [title*="' + employeeID + '"]').attr('title');
var username = usernameID.replace(/\s*\[\d+\]/, '');
$employees.find('#emp_message').attr('class', data['class']).html("You have successfully trained " + username + " " + timesTrained + " " + times + ".").show();
} else {
$employees.find('#emp_message').attr('class', data['class']).html("You failed to train your employee.").show();
}
});
}
function repeatTrains(employeeID, times) {
var i = 0,
howManyTimes = times;
if (times == 0)
return;
function f() {
sendTrainRequest(employeeID);
i++;
if (i < howManyTimes) {
setTimeout(f, 500);
}
}
f();
}
function getTimesToTrain(employeeID) {
var timesString = $('#trainXtimesInput' + employeeID).val();
try {
if (timesString.length == 0 || timesString == "undefined") {
return 20;
}
times = parseInt(timesString);
if (times > 20) {
return 20;
} else if (times < 0) {
return 0;
} else if (times >= 0 && times <= 20) {
return times;
} else {
return 0;
}
} catch (e) {
console.log(e);
return 0;
}
}