theballaam96

doublebeaver.lua

Sep 27th, 2018
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. xmin = 150.1; -- Hole exists as far left as x=125.1. Limit is just for finding the beaver spot found beforehand
  2. xmax = 164.1;
  3. zmin = 124.9;
  4. zmax = 163.9;
  5. y = -30;
  6. y_velocity = -100;
  7. start_frame = 222309;
  8. end_frame = 222329
  9. beavers_found = 0;
  10. x_start = xmin;
  11. z_start = zmin;
  12. savestate.loadslot(0);
  13.  
  14. x10 = x_start * 10;
  15. z10 = z_start * 10;
  16.  
  17. function writeBeaverPosition(x10_copy,z10_copy)
  18. x = x10_copy / 10;
  19. z = z10_copy / 10;
  20. mainmemory.writefloat(0x4975EC,x,true);
  21. mainmemory.writefloat(0x4975F4,z,true);
  22. end
  23.  
  24. function getTime()
  25. lag_factor = 3; -- emu lag
  26. diff = lag_factor * (end_frame - start_frame) / 60;
  27. zprog = z10 - (zmin * 10);
  28. xprog = x10 - (xmin * 10);
  29. totalprog = (zprog * ((xmax * 10) - (xmin * 10) + 1)) + xprog + 1;
  30. maxprog = (((zmax * 10) - (zmin * 10) + 1) * ((xmax * 10) - (xmin * 10) + 1));
  31.  
  32. timeleft = math.floor(100 * (maxprog - totalprog) * diff) / 100;
  33. minleft = math.floor(timeleft / 60);
  34. hourleft = math.floor(minleft / 60);
  35. minleft_actual = minleft - (60 * hourleft);
  36. secleft_actual = math.floor(100 * (timeleft - (60 * minleft))) / 100;
  37.  
  38. timestring = hourleft.."h"..minleft_actual.."m"..secleft_actual.."s";
  39. return timestring;
  40. end
  41.  
  42. function drawGUI()
  43. zprog = z10 - (zmin * 10);
  44. xprog = x10 - (xmin * 10);
  45. totalprog = (zprog * ((xmax * 10) - (xmin * 10) + 1)) + xprog + 1;
  46. maxprog = (((zmax * 10) - (zmin * 10) + 1) * ((xmax * 10) - (xmin * 10) + 1));
  47. totalprogperc = math.floor(1000 * (totalprog / maxprog)) / 10;
  48. row = 0;
  49. gui.text(32, 32 + (16 * row), "Beaver: "..totalprog.."/"..maxprog.." ("..totalprogperc.."%)", nil, 'topleft')
  50. row = row + 1;
  51. gui.text(32, 32 + (16 * row), "Double Beavers: "..beavers_found.."/"..totalprog, nil, 'topleft')
  52. row = row + 2;
  53. gui.text(32, 32 + (16 * row), "X: "..(x10 / 10), nil, 'topleft')
  54. row = row + 1;
  55. gui.text(32, 32 + (16 * row), "Z: "..(z10 / 10), nil, 'topleft')
  56. row = row + 2;
  57.  
  58. timeremaining = getTime();
  59. gui.text(32, 32 + (16 * row), "Est. Time Left: "..timeremaining, nil, 'topleft')
  60. row = row + 1;
  61. end
  62.  
  63. function checkBeaver()
  64. frame = emu.framecount();
  65. if frame == end_frame then
  66. beaver_count = mainmemory.readbyte(0x4AC3D5);
  67. beaver_score = 12 - beaver_count;
  68. if beaver_score > 1 then -- Double Beaver
  69. print("------------------")
  70. print(beaver_score.."x Beaver!")
  71. print("X: "..x..", Z: "..z)
  72. beavers_found = beavers_found + 1;
  73. end
  74. savestate.loadslot(0);
  75. mainmemory.writefloat(0x4975F0,y,true); -- Y value
  76. mainmemory.writefloat(0x497630,y_velocity,true); -- Y Velocity
  77. if x10 == (xmax * 10) then
  78. if z10 < (zmax * 10) then
  79. x10 = xmin * 10;
  80. z10 = z10 + 1;
  81. else
  82. client.pause();
  83. print("Test over!")
  84. end
  85. else
  86. x10 = x10 + 1;
  87. end
  88. end
  89. end
  90.  
  91. function everyframe()
  92. drawGUI();
  93. writeBeaverPosition(x10,z10);
  94. checkBeaver();
  95. if not client.ispaused() then
  96. writeBeaverPosition(x10,z10);
  97. drawGUI();
  98. checkBeaver();
  99. end
  100. end
  101.  
  102. event.onframeend(everyframe, "Every Frame")
  103. event.onloadstate(everyframe, "Every Frame")
Advertisement
Add Comment
Please, Sign In to add comment