Market requester

Market Framework

目前为 2017-10-20 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/34365/225084/Market%20requester.js

// ==UserScript==
// @name         Market requester
// @version      0.2
// @description  Market Framework
// @author       A Meaty Alt
// @match        http://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=35
// @require      https://greasyfork.org/scripts/32927-md5-hash/code/MD5%20Hash.js?version=225078
// @grant        none
// ==/UserScript==

var allStats;
function loadAllStats(){
    return new Promise(function(resolve){
        $.get("http://fairview.deadfrontier.com/onlinezombiemmo/dfdata/get_allstats.php?printvars=1",
              function(result){
            allStats = result;
            resolve();
        });
    });
}

function codeNameToPublicName(codeName){
    if(codeName.indexOf("ammo") > -1){
        return ammoSwitch(codeName);
    }
    if(codeName.indexOf("_cooked") > -1){
        var uncookedCodeName = codeName.replace("_cooked", "");
        return "Cooked " + codeNameToPublicName(uncookedCodeName);
    }
    if(allStats){
        var patternItemNumber = new RegExp(codeName+"\&(.*?)_");
        var itemNumber = allStats.match(patternItemNumber)[1];
        var patternItem = new RegExp(itemNumber+"_name=(.*?)\&");
        return allStats.match(patternItem)[1];
    }
    else{
        loadAllStats()
        .then(() => {
            var patternItemNumber = new RegExp(codeName+"\&(.*?)_");
            var itemNumber = allStats.match(patternItemNumber)[1];
            var patternItem = new RegExp(itemNumber+"_name=(.*?)\&");
            return allStats.match(patternItem)[1];
        });
    }
    function ammoSwitch(codeName){
        if(codeName == "32ammo")
            return ".32";
        else if(codeName == "35ammo")
            return ".35";
        else if(codeName == "35ammo")
            return ".35";
        else if(codeName == "357ammo")
            return ".357";
        else if(codeName == "38ammo")
            return ".38";
        else if(codeName == "40ammo")
            return ".40";
        else if(codeName == "45ammo")
            return ".45";
        else if(codeName == "50ammo")
            return ".50";
        else if(codeName == "55ammo")
            return ".55";
        else if(codeName == "55rifleammo")
            return "5.5";
        else if(codeName == "75rifleammo")
            return "7.5";
        else if(codeName == "9rifleammo")
            return "9mm r";
        else if(codeName == "127rifleammo")
            return "12.7";
        else if(codeName == "14rifleammo")
            return "14mm";
        else if(codeName == "20gaugeammo")
            return "20 g";
        else if(codeName == "16gaugeammo")
            return "16 g";
        else if(codeName == "12gaugeammo")
            return "12 g";
        else if(codeName == "10gaugeammo")
            return "10 g";
        else if(codeName == "grenadeammo")
            return "grenade";
        else if(codeName == "heavygrenadeammo")
            return "y grenade";
    }
}

function browseItem(params, itemName){
    return new Promise((resolve, reject) => {
        var tradezone = params.match(/tradezone=(.*?)\&/)[1];
        $.post("http://meaty.dfprofiler.com/browsemarketplace.php?function=browseMarket",
               "tradezone="+tradezone+"&search="+itemName+"&category=0",
               (response) => {
            if(response[0])
                resolve(response.slice(1, response.length));
            else
                reject(response[1]);
        });
    });
}
function getLowestPrice(params, itemName){
    return new Promise((resolve, reject) => {
        var tradezone = params.match(/tradezone=(.*?)\&/)[1];
        $.post("http://meaty.dfprofiler.com/browsemarketplace.php?function=browseForCheapest",
               "tradezone="+tradezone+"&search="+itemName+"&category=0",
               (response) => {
            resolve(response);
        });
    });
}
function sellItem(pageTime, params, itemCode){
    return new Promise((resolve, reject) => {
        getLowestPrice(params, itemName)
        .then((price) => {
            var priceToSell = price - 10;
            var sc = params.match(/sc=(.*?)\&/)[1];
            var userId = params.match(/userID=(.*?)\&/)[1];
            var hashedPassword = params.match(/password=(.*?)\&/)[1];
            var postBody = "&pagetime="+pageTime+"&templateID=undefined&sc="+sc+"&creditsnum=0&buynum=0&renameto=&expected_itemprice=-1&expected_itemtype2=&expected_itemtype="+itemCode+"&itemnum2=0&itemnum="+i+"&priceToSell="+price+"&action=newsell&userID="+userId+"&password="+hashedPassword;
            $.post("http://fairview.deadfrontier.com/onlinezombiemmo/inventory_new.php",
                   "hash="+hash(postBody)+"&"+postBody,
                   (response) => {
                if(response)
                    resolve();
                else
                    reject();
            });
        });
    });
}