Market requester

Market Framework

当前为 2017-10-20 提交的版本,查看 最新版本

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

  1. // ==UserScript==
  2. // @name Market requester
  3. // @version 0.5
  4. // @description Market Framework
  5. // @author A Meaty Alt
  6. // @match http://fairview.deadfrontier.com/onlinezombiemmo/index.php?page=35
  7. // @require https://greasyfork.org/scripts/32927-md5-hash/code/MD5%20Hash.js?version=225078
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. var allStats;
  12. function loadAllStats(){
  13. return new Promise(function(resolve){
  14. $.get("https://fairview.deadfrontier.com/onlinezombiemmo/dfdata/get_allstats.php?printvars=1",
  15. function(result){
  16. allStats = result;
  17. resolve();
  18. });
  19. });
  20. }
  21.  
  22. function codeNameToPublicName(codeName){
  23. return new Promise((resolve) => {
  24. if(codeName.indexOf("ammo") > -1){
  25. resolve(ammoSwitch(codeName));
  26. }
  27. if(codeName.indexOf("_cooked") > -1){
  28. var uncookedCodeName = codeName.replace("_cooked", "");
  29. resolve("Cooked " + codeNameToPublicName(uncookedCodeName));
  30. }
  31. if(allStats){
  32. var patternItemNumber = new RegExp(codeName+"\&(.*?)_");
  33. var itemNumber = allStats.match(patternItemNumber)[1];
  34. var patternItem = new RegExp(itemNumber+"_name=(.*?)\&");
  35. resolve(allStats.match(patternItem)[1]);
  36. }
  37. else{
  38. loadAllStats()
  39. .then(() => {
  40. var patternItemNumber = new RegExp(codeName+"\&(.*?)_");
  41. var itemNumber = allStats.match(patternItemNumber)[1];
  42. var patternItem = new RegExp(itemNumber+"_name=(.*?)\&");
  43. resolve(allStats.match(patternItem)[1]);
  44. });
  45. }
  46. });
  47. function ammoSwitch(codeName){
  48. if(codeName == "32ammo")
  49. return ".32";
  50. else if(codeName == "35ammo")
  51. return ".35";
  52. else if(codeName == "35ammo")
  53. return ".35";
  54. else if(codeName == "357ammo")
  55. return ".357";
  56. else if(codeName == "38ammo")
  57. return ".38";
  58. else if(codeName == "40ammo")
  59. return ".40";
  60. else if(codeName == "45ammo")
  61. return ".45";
  62. else if(codeName == "50ammo")
  63. return ".50";
  64. else if(codeName == "55ammo")
  65. return ".55";
  66. else if(codeName == "55rifleammo")
  67. return "5.5";
  68. else if(codeName == "75rifleammo")
  69. return "7.5";
  70. else if(codeName == "9rifleammo")
  71. return "9mm r";
  72. else if(codeName == "127rifleammo")
  73. return "12.7";
  74. else if(codeName == "14rifleammo")
  75. return "14mm";
  76. else if(codeName == "20gaugeammo")
  77. return "20 g";
  78. else if(codeName == "16gaugeammo")
  79. return "16 g";
  80. else if(codeName == "12gaugeammo")
  81. return "12 g";
  82. else if(codeName == "10gaugeammo")
  83. return "10 g";
  84. else if(codeName == "grenadeammo")
  85. return "grenade";
  86. else if(codeName == "heavygrenadeammo")
  87. return "y grenade";
  88. }
  89. }
  90.  
  91. function browseItem(params, itemName){
  92. return new Promise((resolve, reject) => {
  93. var tradezone = params.match(/tradezone=(.*?)\&/)[1];
  94. $.post("http://meaty.dfprofiler.com/browsemarketplace.php?function=browseMarket",
  95. "tradezone="+tradezone+"&search="+itemName+"&category=0",
  96. (response) => {
  97. if(response[0])
  98. resolve(response.slice(1, response.length));
  99. else
  100. reject(response[1]);
  101. });
  102. });
  103. }
  104. function getLowestPrice(params, itemName){
  105. return new Promise((resolve, reject) => {
  106. var tradezone = params.match(/tradezone=(.*?)\&/)[1];
  107. $.post("http://meaty.dfprofiler.com/browsemarketplace.php?function=browseForCheapest",
  108. "tradezone="+tradezone+"&search="+itemName+"&category=0",
  109. (response) => {
  110. resolve(response);
  111. });
  112. });
  113. }
  114. function sellItem(pageTime, params, itemCode, invPosition, myAmount){
  115. return new Promise((resolve, reject) => {
  116. codeNameToPublicName(itemCode)
  117. .then((itemName) => {
  118. getLowestPrice(params, itemName)
  119. .then((price) => {
  120. var priceToSell = Math.round(price*myAmount - 10);
  121. var sc = params.match(/sc=(.*?)\&/)[1];
  122. var userId = params.match(/userID=(.*?)\&/)[1];
  123. var hashedPassword = params.match(/password=(.*?)\&/)[1];
  124. var postBody = "&pagetime="+pageTime+"&templateID=undefined&sc="+sc+"&creditsnum=0&buynum=0&renameto=&expected_itemprice=-1&expected_itemtype2=&expected_itemtype="+itemCode+"&itemnum2=0&itemnum="+invPosition+"&priceToSell="+price+"&action=newsell&userID="+userId+"&password="+hashedPassword;
  125. $.post("https://fairview.deadfrontier.com/onlinezombiemmo/inventory_new.php",
  126. "hash="+hash(postBody)+"&"+postBody,
  127. (response) => {
  128. if(response)
  129. resolve();
  130. else
  131. reject();
  132. });
  133. });
  134. });
  135.  
  136. });
  137. }