xy2_

true update drop script

Jan 10th, 2016
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.37 KB | None | 0 0
  1. --[[ hacked together by true for pwn adventure z contest ]]--
  2.  
  3. -- user variables
  4. show_monster_list = false
  5.  
  6. -- addresses
  7. ADDR_ENEMY_TP = 0x0363
  8. ADDR_ENEMY_X = 0x036b
  9. ADDR_ENEMY_HP = 0x037b
  10. ADDR_ENEMY_Y = 0x0373
  11.  
  12. ADDR_ITEM_X = 0x0598
  13. ADDR_ITEM_Y = 0x05a8
  14. ADDR_ITEM_ID = 0x0588
  15. ADDR_ITEM_TP = 0x05e8
  16. ADDR_ITEM_CT = 0x05f8
  17.  
  18. ADDR_SCRN_X = 0x00c0
  19. ADDR_SCRN_Y = 0x00c1
  20. ADDR_ENEMY_KI = 0x0025
  21. ADDR_GEN_BASE = 0x04c6
  22.  
  23. -- lists
  24. items = {
  25. "axe",
  26. "sword",
  27. "pistol",
  28. "smg",
  29. "lmg",
  30. "ak",
  31. "shotgun",
  32. "sniper",
  33. "handcannon",
  34. "rocket",
  35. "grenade",
  36. "bandage",
  37. "healthkit",
  38. "fuel",
  39. "sticks",
  40. "cloth",
  41. "shirt",
  42. "pants",
  43. "metal",
  44. "gem",
  45. "gunpowder",
  46. "campfire",
  47. "sneakers",
  48. "wizardhat",
  49. "armor",
  50. "tinfoilhat",
  51. "ghillie",
  52. "coffee",
  53. "wine"
  54. }
  55.  
  56. itemtype_zombie = {
  57. "none", "stick",
  58. "cloth", "shirt", "pants", "stick",
  59. "gunpowder", "gunpowder", "gunpowder", "gunpowder",
  60. "metal", "metal", "metal", "metal",
  61. "gem", "stick"
  62. }
  63.  
  64. -- rng "noise" table
  65. rand = {
  66. 0xcb,0x38,0x35,0xa2,0x7b,0x12,0xc2,0xe8,0x8c,0x30,0x99,0x10,0x9b,0xdc,0x0b,0x67,
  67. 0x61,0x65,0xe5,0xad,0xb4,0x2c,0xcf,0xf7,0xd5,0x22,0x64,0xbd,0x4a,0x2f,0x71,0x4c,
  68. 0x45,0xe6,0xb3,0x0c,0xa3,0x43,0x80,0xd3,0x23,0xfe,0x6e,0x96,0x74,0x2d,0x3c,0xac,
  69. 0x8f,0xc9,0x00,0x29,0xb8,0x0a,0xbc,0xd4,0x2a,0x34,0xe1,0xaf,0x1a,0x07,0xbb,0x5c,
  70. 0x85,0x91,0xb0,0x75,0xf4,0x44,0x1d,0xf3,0xa4,0xe9,0x84,0xa9,0x62,0x86,0x59,0x53,
  71. 0x6f,0x77,0x4d,0xd8,0x01,0x7c,0x05,0xf0,0x7d,0x28,0x40,0x66,0x9e,0x1c,0xfa,0x79,
  72. 0xde,0x93,0x50,0xf9,0xd6,0xc3,0x6a,0x3e,0xaa,0x87,0xdd,0x1b,0x37,0x57,0x1f,0x90,
  73. 0xcd,0x3b,0x7f,0xda,0x19,0xe0,0xa0,0x25,0xf6,0xd0,0x03,0xc5,0xfb,0x5b,0xab,0x94,
  74. 0x08,0xa6,0x18,0xce,0x0e,0x55,0xb7,0x21,0x15,0xc0,0x72,0xfc,0xae,0x63,0xc4,0x97,
  75. 0x4b,0x04,0x6d,0x2b,0x83,0x4e,0x11,0x02,0xed,0x3f,0xb9,0x41,0x5e,0x13,0x51,0xee,
  76. 0xf2,0x0f,0x6b,0x3d,0xc7,0x46,0x60,0x78,0xb5,0xbf,0xa5,0x5f,0x17,0x58,0x73,0xb6,
  77. 0x9a,0x9c,0xf5,0x33,0x82,0x54,0xec,0x49,0x52,0x0d,0xd9,0x47,0xe4,0x31,0xfd,0xd7,
  78. 0x48,0x20,0xcc,0x92,0x5a,0x7a,0x39,0xef,0x36,0x9d,0xf8,0x27,0x56,0xea,0x24,0x32,
  79. 0x16,0x8e,0xc6,0x9f,0xa1,0x8b,0xa8,0xb1,0xc1,0x76,0xf1,0x1e,0x3a,0x8d,0xb2,0x69,
  80. 0x70,0x98,0x2e,0x5d,0xdf,0x42,0x68,0x06,0xdb,0x26,0xe7,0x89,0xd1,0xa7,0x88,0x09,
  81. 0x6c,0x8a,0x81,0xeb,0x95,0xe2,0xca,0xc8,0xd2,0xff,0x4f,0xe3,0xbe,0x7e,0x14,0xba
  82. }
  83.  
  84.  
  85. --------
  86.  
  87. -- emulates the result of the random function in the game...literal interpretation from the code
  88. function rand_itemdrop(idx, killval)
  89. local temp = {0, 0}
  90.  
  91. local sx = memory.readbyte(ADDR_SCRN_X)
  92. local sy = memory.readbyte(ADDR_SCRN_Y)
  93. local kidx = memory.readbyte(ADDR_ENEMY_KI) + idx
  94. local genb = {
  95. memory.readbyte(ADDR_GEN_BASE),
  96. memory.readbyte(ADDR_GEN_BASE + 1)
  97. }
  98.  
  99. temp[1] = sx + genb[1]
  100. temp[2] = sy + genb[2]
  101.  
  102. temp[1] = rand[((((kidx + killval) ) + temp[1]) % 256) + 1]
  103. temp[2] = rand[((((kidx + killval) * 2) + temp[2]) % 256) + 1]
  104.  
  105. ret = bit.bxor(temp[1], temp[2])
  106.  
  107. return (ret % 16) + 1
  108. end
  109.  
  110.  
  111. while true do
  112. local ytext_e = 8
  113. local ytext_i = 8
  114.  
  115. if show_monster_list then
  116. gui.text(00, ytext_e, "EnX")
  117. gui.text(32, ytext_e, "EnY")
  118. gui.text(64, ytext_e, "EnHP")
  119. gui.text(96, ytext_e, "EnTy")
  120. end
  121.  
  122. for i = 0, 7 do
  123. local etype = memory.readbyte(i + ADDR_ENEMY_TP)
  124.  
  125. if (etype ~= 255) then
  126. ytext_e = ytext_e + 8
  127.  
  128. local ex = memory.readbyte(i + ADDR_ENEMY_X)
  129. local ey = memory.readbyte(i + ADDR_ENEMY_Y)
  130. local hp = memory.readbyte(i + ADDR_ENEMY_HP)
  131. local ki = memory.readbyte(i + ADDR_ENEMY_KI)
  132.  
  133. -- left monster list
  134. if show_monster_list then
  135. gui.text(00, ytext_e, tostring(ex))
  136. gui.text(32, ytext_e, tostring(ey))
  137. gui.text(64, ytext_e, tostring(hp))
  138. gui.text(96, ytext_e, tostring(etype))
  139. end
  140.  
  141. -- hp and next item drop overlay
  142. gui.text(ex + 11, ey + 20, tostring(hp))
  143. gui.text(ex + 11, ey + 27, itemtype_zombie[rand_itemdrop(i, 8)])
  144. end
  145. end
  146.  
  147. for i = 0, 15 do
  148. ytext_i = ytext_i + 8
  149.  
  150. ix = memory.readbyte(i + ADDR_ITEM_X)
  151. iy = memory.readbyte(i + ADDR_ITEM_Y)
  152. id = memory.readbyte(i + ADDR_ITEM_ID)
  153. it = memory.readbyte(i + ADDR_ITEM_TP) + 1
  154. ic = memory.readbyte(i + ADDR_ITEM_CT)
  155.  
  156. -- dropped item overlay
  157. if id == 18 then
  158. if ic == 1 then
  159. gui.text(ix + 8, iy + 14, items[it])
  160. else
  161. gui.text(ix + 8, iy + 14, items[it].."("..tostring(ic)..")")
  162. end
  163. end
  164. end
  165.  
  166. emu.frameadvance()
  167. end
Advertisement
Add Comment
Please, Sign In to add comment