mgr.inz.Player I post too much Reputation: 218
Joined: 07 Nov 2008 Posts: 4438 Location: W kraju nad Wisla. UTC+01:00
|
Posted: Sun Jun 12, 2011 8:02 am Post subject: LUA Script used to make 'terraria materials spawner'. |
|
|
Code: | -- SPAWN POINT PATTERN, left side
searchthis=[[
?? ?? ?? ?? 01 01 01 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
?? ?? ?? ?? 00 01 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
?? ?? ?? ?? 01 01 1E ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
?? ?? ?? ?? 01 01 01 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
?? ?? ?? ?? 01 01 1E ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
?? ?? ?? ?? 00 01 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
]]
searchthis=string.gsub(searchthis,"\n"," ")
ms = createMemScan()
FL = createFoundList(ms)
memscanusedbefore=false
WorldHeight = 1200
spawnpoint_table = {}
function findSpawnpoints()
control_setCaption(UDF1, "Terraria Materials Spawner. Searching...")
if (memscanusedbefore==true) then foundlist_deinitialize(FL) end
memscanusedbefore=true
memscan_firstScan(ms, soExactValue, vtByteArray, rtRounded, searchthis,
"", 0x00000000, 0x7fffffff, "+W-X-C", fsmNotAligned, "",
true, false, false, false)
memscan_waitTillDone(ms)
foundlist_initialize(FL)
spawnpoint_table = {}
FlCount = foundlist_getCount(FL)
if (FlCount == 0 ) then return end
WorldHeight=(combobox_getItemIndex(CBworldSize)+2)*600
for index=0,FlCount-1 do
address = tonumber(foundlist_getAddress(FL,index),16)
nextcolumncheck = readBytes(address+WorldHeight*24, 24*6, true)
if (nextcolumncheck ~= nil) then
if (nextcolumncheck[24*0+6]==1 and nextcolumncheck[24*1+6]==1 and nextcolumncheck[24*2+6]==1 and
nextcolumncheck[24*3+6]==30 and nextcolumncheck[24*4+6]==30 and nextcolumncheck[24*5+6]==0) then
table.insert(spawnpoint_table,address)
end
end
end
end
function SpawnPointQuickCheck(spawnpointID)
quickSpawnPointCheck_bytes = readBytes(spawnpoint_table[spawnpointID], 24*7, true)
if (quickSpawnPointCheck_bytes == nil) then return false
else
if (quickSpawnPointCheck_bytes[24*0+6]==1 and quickSpawnPointCheck_bytes[24*1+6]==0 and
quickSpawnPointCheck_bytes[24*2+6]==30 and quickSpawnPointCheck_bytes[24*3+6]==1 and
quickSpawnPointCheck_bytes[24*4+6]==30 and quickSpawnPointCheck_bytes[24*5+6]==0) then
return true end
return false
end
end
function button1click(secondtry)
if (terrariaexeopened==false) then return end
-- first time click check
if ((# spawnpoint_table) == 0) then
findSpawnpoints()
if ((# spawnpoint_table) == 0) then
control_setCaption(UDF1, "Terraria Materials Spawner. No trainer spawn points.")
return false
end
end
-- first time click check
control_setCaption(UDF1, "Terraria Materials Spawner")
material = combobox_getItemIndex(CBmaterial)+6
spawnsuccess = false
--lua tables starts from 1
for index=1,(# spawnpoint_table) do
if (SpawnPointQuickCheck(index) == true) then
spawnsuccess=true
writeBytes(spawnpoint_table[index]+2*24*WorldHeight+24*0,255,255,255,255,1,1,material)
writeBytes(spawnpoint_table[index]+2*24*WorldHeight+24*1,255,255,255,255,1,1,material)
writeBytes(spawnpoint_table[index]+2*24*WorldHeight+24*2,255,255,255,255,1,1,material)
writeBytes(spawnpoint_table[index]+2*24*WorldHeight+24*3,255,255,255,255,1,1,material)
writeBytes(spawnpoint_table[index]+2*24*WorldHeight+24*4,255,255,255,255,1,1,material)
writeBytes(spawnpoint_table[index]+3*24*WorldHeight+24*0,255,255,255,255,1,1,material)
writeBytes(spawnpoint_table[index]+3*24*WorldHeight+24*1,255,255,255,255,1,1,material)
writeBytes(spawnpoint_table[index]+3*24*WorldHeight+24*2,255,255,255,255,1,1,material)
writeBytes(spawnpoint_table[index]+3*24*WorldHeight+24*3,255,255,255,255,1,1,material)
writeBytes(spawnpoint_table[index]+3*24*WorldHeight+24*4,255,255,255,255,1,1,material)
end
end
if (spawnsuccess == true) then beep() end
if ((spawnsuccess == false) and (secondtry~="secondtry")) then
spawnpoint_table = {}
button1click("secondtry")
end
end
function button2click()
if (terrariaexeopened==false) then return end
beep()
spawnpoint_table = {}
button1click()
end
terrariaexeopened=false
function onOpenProcess(processid)
terrariaexeopened=true
end
addresslist=getAddressList()
memrec0 = addresslist_getMemoryRecordByID(addresslist, 0)
memrec0_hotkey0=memoryrecord_getHotkeyByID(memrec0,0)
memoryrecordhotkey_onHotkey(memrec0_hotkey0,button1click)
memrec1 = addresslist_getMemoryRecordByID(addresslist, 1)
memrec1_hotkey0=memoryrecord_getHotkeyByID(memrec1,0)
memoryrecordhotkey_onHotkey(memrec1_hotkey0,button2click)
strings_add(getAutoAttachList(), "terraria.exe")
form_show(UDF1)
function HelpButton1Click(sender)
form_hide(UDF2)
end
function CEButton4Click(sender)
form_show(UDF2)
end
CBmaterial=component_findComponentByName(UDF1, "TerrariaMaterialComboBox1")
CBworldSize=component_findComponentByName(UDF1, "worldSizeComboBox1")
function CloseClick()
closeCE()
return caFree --onClick doesn't care, but onClose would like a result
end
control_setCaption(UDF1, "Terraria Materials Spawner")
function CELabel1Click(sender)
shellExecute('http://tnij.org/TMST_youtube')
end
function CELabel2Click(sender)
shellExecute('http://tnij.org/TMST_forumthread')
end |
_________________
|
|