02-20-2018, 08:13 PM
(This post was last modified: 06-24-2018, 10:38 AM by HusbandoMax.)
This script is intended for abandoned houses left on a random lockout and will iterate through the menus for you.
It's intended to be used as a Shortcut User Function. Minion Button > Shortcuts > User Functions (bottom) > New, name it w/e you want, like BuyHouse, and paste the code below as the function.
You then have to create a keybind or a Button Bind, whichever you prefer. This function will act as a toggle, first use = enabled, 2nd use = disabled, etc.
Just making a small edit till Kali gets on next. ~HusbandoMax
It's intended to be used as a Shortcut User Function. Minion Button > Shortcuts > User Functions (bottom) > New, name it w/e you want, like BuyHouse, and paste the code below as the function.
You then have to create a keybind or a Button Bind, whichever you prefer. This function will act as a toggle, first use = enabled, 2nd use = disabled, etc.
Just making a small edit till Kali gets on next. ~HusbandoMax
Code:
local delay = 250 --Delay between purchase attempts, 1000 is 1 second
local buytype = 0 --0 is Private Individual, 1 is Free Company, 2 is Relocation...
if BuyHouseVar == nil then
BuyHouseVar = true
BuyHouseStep = 0
BuyHouseLast = 0
BuyHousePushButton = 24
if GetGameRegion() == 1 then BuyHousePushButton = 25 end
else
BuyHouseVar = not BuyHouseVar
end
function BuyHouseFunction()
d("BuyHouseStep: "..tostring(BuyHouseStep))
if BuyHouseVar and TimeSince(BuyHouseLast) > delay then
local PlacardID = 0
local el = EntityList("nearest,contentid=2002736")
if table.valid(el) then
for k,v in pairs(el) do
PlacardID = v.id
end
end
if BuyHouseStep == 0 then
if IsControlOpen("HousingSignBoard") then
BuyHouseStep = 1
else
Player:SetTarget(PlacardID)
Player:Interact(PlacardID)
end
end
if BuyHouseStep == 1 then
if IsControlOpen("SelectYesno") then
BuyHouseStep = 3
elseif IsControlOpen("SelectString") and not IsControlOpen("HousingSignBoard") then
BuyHouseStep = 2
elseif IsControlOpen("HousingSignBoard") then
local ctrl = GetControl("HousingSignBoard")
if ctrl:GetRawData()[1].value.A == 1 then
ctrl:PushButton(BuyHousePushButton,2)
end
end
end
if BuyHouseStep == 2 then
if IsControlOpen("SelectYesno") then
BuyHouseStep = 3
elseif IsControlOpen("SelectString") then
GetControl("SelectString"):Action("SelectIndex",buytype)
elseif IsControlOpen("HousingSignBoard") then
BuyHouseStep = 1
end
end
if BuyHouseStep == 3 then
if IsControlOpen("SelectYesno") then
UseControlAction("SelectYesno","Yes")
elseif Player:GetTarget() == nil then
BuyHouseStep = 0
BuyHouseLast = Now()
end
end
end
end
RegisterEventHandler("Gameloop.Update", BuyHouseFunction)