Rise Of Nations Script | UNIT ESP, SMART SELL, CLEAR ALERTS



Created by regen#4390

Features:

  • UNIT ESP
  • SMART SELL
  • CLEAR ALERTS
_G.ReserveFlow = 1
_G.SellAmount = 1
_G.SellResource = [==[Electronics]==]
_G.ESPToggle = false
_G.AlertToggle = false
_G.SelectedCountry = ""
_G.SelectedCities = {}
_G.MaxBuildings = 1
_G.SelectedBuilding = ""

local IgnoredAlerts = {
 ["Trade accepted"] = true,
 ["Trade offer declined"] = true,
 ["Trade Cancelled"] = true,
 ["Alliance declined"] = true,
 ["Modifier Lost!"] = true,
 ["New Modifier!"] = true,
 ["Trade Declined"] = true,
 ["Trade declined"] = true,
 ["Faction Disbanded"] = true,
 ["Independence!"] = true,
}

local IgnoredResources = {
 ["Electronics"] = true,
 ["Consumer Goods"] = true,
 ["Fertilizer]"] = true,
 ["Motor Parts"] = true,
 ["Aircraft Parts"] = true,
 ["Oil"] = true,
}

local Gui = loadstring(game:HttpGet([==[https://raw.githubusercontent.com/bloodball/-back-ups-for-libs/main/wall%20v3]==]))()
_G.MainColor = Color3.fromRGB(48,48,48)
_G.SecondaryColor = Color3.fromRGB(48,48,48)
_G.TertiaryColor = Color3.fromRGB(32,32,32)
_G.ArrowColor = Color3.fromRGB(255,255,255)
_G.MainTextColor = Color3.fromRGB(255,255,255)
_G.PointerColor = Color3.fromRGB(255,255,255)
_G.ButtonTextColor = Color3.fromRGB(255,255,255)
_G.SliderColor = Color3.fromRGB(128,0,0)
_G.ButtonColor = Color3.fromRGB(48,48,48)
_G.ToggleColor = Color3.fromRGB(48,48,48)
_G.DraggerCircleColor = Color3.fromRGB(255,255,255)
_G.BindColor3 = Color3.fromRGB(48,48,48)
local Window = Gui:CreateWindow([==[Rise of Nations]==])
local Folder = Window:CreateFolder([==[Sell Bot]==])
local FolderBuild = Window:CreateFolder([==[Build Bot]==])
local FolderMisc = Window:CreateFolder([==[Misc]==])

local GetChildren = game.GetChildren
local FirstChild = game.FindFirstChild
local RunService = game.RunService
local GameGui = game.Players.LocalPlayer.PlayerGui.GameGui.MainFrame
local ReplicatedStorage = game.ReplicatedStorage
local Resources = ReplicatedStorage.Assets.Resources
local Units = workspace.Units
local Countries = workspace.Countries
local CountryData = workspace.CountryData
local ManageAlliance = workspace.GameManager.ManageAlliance
local CreateBuilding = workspace.GameManager.CreateBuilding
local CamVal = Enum.RenderPriority.Camera.Value
local BasePlate = workspace.Baseplate.Cities

local FunctionDump = workspace.FunctionDump
local GetRevenue = require(FunctionDump.ValueCalc.CountryRevenue)
local GetExpenses = require(FunctionDump.ValueCalc.CountryExpenses)
local GetCitiesComposition = require(FunctionDump.ValueCalc.GetCities).Composition
local ResourcesTbl = {Names = {}, Data = {}}
local MinedResources = {Names = {}}
local TradeData = {Sell = {[1] = [==[]==], [2] = [==[]==], [3] = 0, [4] = 1, [5] = [==[]==]}}
local Buildings = {
 "Electronics Factory",
 "Steel ManuFactory",
 "Aircraft Manufactory",
 "Fertilizer Factory",
 "Motor Factory",
 "Civilian Factory",
 "Airport",
 "Recruitment Center",
 "Develop City",
 "Fortifications",
 "Mines"
}

for _,v in next, GetChildren(Resources) do
 local BuyPrice, SellPrice = v.Value, v.Value * .8
 ResourcesTbl.Data[v.Name] = {BuyPrice = 0, SellPrice = 0}
 ResourcesTbl.Data[v.Name].BuyPrice = math.floor(BuyPrice)
 ResourcesTbl.Data[v.Name].SellPrice = math.floor(SellPrice)
 table.insert(ResourcesTbl.Names, v.Name)
 if not IgnoredResources[v.Name] then MinedResources.Names[v.Name] = true end
end


local function ToggleTags()
 for _,v in next, GetChildren(Units) do
   local Tag = FirstChild(v, [==[Tag]==])
   if Tag then Tag.Enabled = true end
 end
end

local function GetMyCountry()
 local Country = game.Players.LocalPlayer.leaderstats.Country.Value

 return Country
end

local function GetBalance(Country)
 local Balance = tonumber(GetRevenue(Country) - GetExpenses(Country))

 return Balance
end

local function GetResourceFlow(Resource)
 local Flow = CountryData[GetMyCountry()].Resources[Resource].Flow.Value

 return Flow
end

local function GetAI()
 local AI = {Names = {}}

 for _,v in next, GetChildren(Countries) do
   local Name = v.Name
   local Len = string.len(Name) - 2
   local Subbed = string.sub(Name, 1, Len)

   if string.match(Name, [==[AI]==], Len) then
     table.insert(AI.Names, Subbed)
   end
 end

 return AI
end

local function RemoveTrades(Resource)
 local Trades = CountryData[GetMyCountry()].Resources[Resource].Trade
 if not GetChildren(Trades) then return end

 for _,v in next, GetChildren(Trades) do
   ManageAlliance:FireServer(v.Name, [==[TradeCancel]==], Resource)
   task.wait(1)
 end

 task.wait(5)
end

local function Sell()
 RemoveTrades(_G.SellResource)
 local AI = GetAI().Names
 local ResourceSellPrice = ResourcesTbl.Data[_G.SellResource].SellPrice
 local Counter = 0

 table.sort(AI, function(a,b) return GetBalance(a) > GetBalance(b) end)
 _G.ResourceFlow = GetResourceFlow(_G.SellResource)

 for _,v in ipairs(AI) do
   local CountriesBalance = GetBalance(v)
   Counter = Counter + 2
   task.wait(Counter)

   if _G.ResourceFlow <= _G.ReserveFlow then break end

   for i = 1, _G.ResourceFlow do
     if ResourceSellPrice * i <= CountriesBalance * .75 then
       _G.SellAmount = i
     end
   end

   _G.ResourceFlow = _G.ResourceFlow - _G.SellAmount
   TradeData.Sell[2] = [==[Sell]==]
   TradeData.Sell[3] = _G.SellAmount - _G.ReserveFlow
   TradeData.Sell[4] = 1
   TradeData.Sell[5] = [==[Trade]==]

   ManageAlliance:FireServer(v, [==[ResourceTrade]==], TradeData.Sell)
 end
end

RunService:BindToRenderStep([==[Unit ESP]==], CamVal, function()
 if not _G.ESPToggle then return end
 task.spawn(ToggleTags)
end)

GameGui.ChildAdded:Connect(function(Child)
 if ( _G.AlertToggle and Child.Name == [==[AlertSample]==] ) then
   local Title = FirstChild(Child, [==[Title]==])
   if Title and IgnoredAlerts[Title.Text] then task.wait(0.1) Child:Destroy() end
 end
end)

local function GetCapturedCounties()
 local CountriesComposition = GetCitiesComposition(GetMyCountry())
 local Captured = {}

 for i,_ in next, CountriesComposition do
   table.insert(Captured, i)
 end

 return Captured
end

local function GetMyCities(Country)
 local Selected = GetCitiesComposition(GetMyCountry())[Country]

 return Selected
end

local function HasBuilding(City, Building)
 if FirstChild(City.Buildings, Building) then
   return true
 else
   return false
 end
end

local function MakeBuilding(Building)
 local Cities = _G.SelectedCities
 local Counter = 0

 for _,v in next, Cities do
   local City = BasePlate[GetMyCountry()][v.Name]
   if not HasBuilding(City, Building) then
     if Counter >= (_G.MaxBuildings) then break end
     Counter = Counter + 1
     task.wait(0.1)
     CreateBuilding:FireServer({City}, Building)
   end
 end
end

local function SmartMine()
 local Cities = _G.SelectedCities
 local Mineable = MinedResources.Names
 local Counter = 0

 for _,v in next, Cities do
   local City = BasePlate[GetMyCountry()][v.Name]
   if not HasBuilding(City, "Mines") then
     if Counter > _G.MaxBuildings then break end
     for _,v2 in next, GetChildren(City.Resources) do
       if Mineable[v2.Name] then
         Counter = Counter + 1
         task.wait(0.1)
         CreateBuilding:FireServer({City}, "Mines")
         break
       end
     end
   end
 end
end

_G.CapturedCountries = GetCapturedCounties()


Folder:Dropdown([==[Resources]==],ResourcesTbl.Names,true,function(Val)
 _G.SellResource = Val
 TradeData.Sell[1] = tostring(Val)

 return Val
end)

Folder:Slider([==[Reserve Flow]==],{min = 1, max = 100, precise = false},function(Val)
 _G.ReserveFlow = Val

 return Val
end)

Folder:Button([==[Send]==],function()
 Sell()
end)

FolderMisc:Toggle([==[Unit ESP]==],function(Bool)
 _G.ESPToggle = Bool

 return Bool
end)

FolderMisc:Toggle([==[Clear Alerts]==],function(Bool)
 _G.AlertToggle = Bool

 return Bool
end)

local DropDown
DropDown = FolderBuild:Dropdown([==[Country]==],_G.CapturedCountries,true,function(Val)
 _G.CapturedCountries = GetCapturedCounties()
 _G.SelectedCountry = Val
 _G.SelectedCities = GetMyCities(_G.SelectedCountry)

 DropDown:Refresh(_G.CapturedCountries)
 return Val
end)

FolderBuild:Dropdown([==[Building]==],Buildings,true,function(Val)
 _G.SelectedBuilding = Val

 return Val
end)

FolderBuild:Slider([==[Max Amount]==],{min = 1, max = 1000, precise = false},function(Val)
 _G.MaxBuildings = Val

 return Val
end)

FolderBuild:Button([==[Build]==],function()
 if _G.SelectedBuilding == "Mines" then
   task.spawn(SmartMine())
 else
   task.spawn(MakeBuilding(_G.SelectedBuilding))
 end
end)

ENJOY!

Warning: DO NOT DOWNLOAD anything from this page, you’re only here to copy the script!