Market requester

Market Framework

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

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/34365/225113/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. codeNameToPublicName(uncookedCodeName)
  30. .then((uncookedName) => resolve("Cooked " + uncookedName));
  31. }
  32. if(allStats){
  33. var patternItemNumber = new RegExp(codeName+"\&(.*?)_");
  34. var itemNumber = allStats.match(patternItemNumber)[1];
  35. var patternItem = new RegExp(itemNumber+"_name=(.*?)\&");
  36. resolve(allStats.match(patternItem)[1]);
  37. }
  38. else{
  39. loadAllStats()
  40. .then(() => {
  41. var patternItemNumber = new RegExp(codeName+"\&(.*?)_");
  42. var itemNumber = allStats.match(patternItemNumber)[1];
  43. var patternItem = new RegExp(itemNumber+"_name=(.*?)\&");
  44. resolve(allStats.match(patternItem)[1]);
  45. });
  46. }
  47. });
  48. function ammoSwitch(codeName){
  49. if(codeName == "32ammo")
  50. return ".32";
  51. else if(codeName == "35ammo")
  52. return ".35";
  53. else if(codeName == "35ammo")
  54. return ".35";
  55. else if(codeName == "357ammo")
  56. return ".357";
  57. else if(codeName == "38ammo")
  58. return ".38";
  59. else if(codeName == "40ammo")
  60. return ".40";
  61. else if(codeName == "45ammo")
  62. return ".45";
  63. else if(codeName == "50ammo")
  64. return ".50";
  65. else if(codeName == "55ammo")
  66. return ".55";
  67. else if(codeName == "55rifleammo")
  68. return "5.5";
  69. else if(codeName == "75rifleammo")
  70. return "7.5";
  71. else if(codeName == "9rifleammo")
  72. return "9mm r";
  73. else if(codeName == "127rifleammo")
  74. return "12.7";
  75. else if(codeName == "14rifleammo")
  76. return "14mm";
  77. else if(codeName == "20gaugeammo")
  78. return "20 g";
  79. else if(codeName == "16gaugeammo")
  80. return "16 g";
  81. else if(codeName == "12gaugeammo")
  82. return "12 g";
  83. else if(codeName == "10gaugeammo")
  84. return "10 g";
  85. else if(codeName == "grenadeammo")
  86. return "grenade";
  87. else if(codeName == "heavygrenadeammo")
  88. return "y grenade";
  89. }
  90. }
  91.  
  92. function browseItem(params, itemName){
  93. return new Promise((resolve, reject) => {
  94. var tradezone = params.match(/tradezone=(.*?)\&/)[1];
  95. $.post("http://meaty.dfprofiler.com/browsemarketplace.php?function=browseMarket",
  96. "tradezone="+tradezone+"&search="+itemName+"&category=0",
  97. (response) => {
  98. if(response[0])
  99. resolve(response.slice(1, response.length));
  100. else
  101. reject(response[1]);
  102. });
  103. });
  104. }
  105. function getLowestPrice(params, itemName){
  106. return new Promise((resolve, reject) => {
  107. var tradezone = params.match(/tradezone=(.*?)\&/)[1];
  108. $.post("http://meaty.dfprofiler.com/browsemarketplace.php?function=browseForCheapest",
  109. "tradezone="+tradezone+"&search="+itemName+"&category=0",
  110. (response) => {
  111. resolve(response);
  112. });
  113. });
  114. }
  115. function sellItem(pageTime, params, itemCode, invPosition, myAmount){
  116. return new Promise((resolve, reject) => {
  117. codeNameToPublicName(itemCode)
  118. .then((itemName) => {
  119. getLowestPrice(params, itemName)
  120. .then((price) => {
  121. var priceToSell = Math.round(price*myAmount - 10);
  122. var sc = params.match(/sc=(.*?)\&/)[1];
  123. var userId = params.match(/userID=(.*?)\&/)[1];
  124. var hashedPassword = params.match(/password=(.*?)\&/)[1];
  125. 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+"&price="+priceToSell+"&action=newsell&userID="+userId+"&password="+hashedPassword;
  126. $.post("https://fairview.deadfrontier.com/onlinezombiemmo/inventory_new.php",
  127. "hash="+hash(postBody)+"&"+postBody,
  128. (response) => {
  129. if(response)
  130. resolve();
  131. else
  132. reject();
  133. });
  134. });
  135. });
  136.  
  137. });
  138. }