It is currently Thu Apr 27, 2017 9:35 pm

Contact Us | All times are UTC - 6 hours [ DST ]



Welcome
Welcome to Tropico Modding

You are currently viewing our boards as a guest, which gives you limited access to view most discussions and access our other features. By joining our free community, you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content, and access many other special features. In addition, registered members also see less advertisements. Registration is fast, simple, and absolutely free, so please, join our community today!





 Page 1 of 1 [ 16 posts ] 
Author Message
 Post subject: LUA Compiler?
PostPosted: Sat Dec 31, 2016 6:53 am 
Member

Joined: Sun Dec 04, 2016 7:00 am
Posts: 2
Has thanked: 0 time
Have thanks: 0 time
Waterborne: Hidden
Espionage: Hidden
Once you've decompiled and edited the files, how do you go about recompiling them back into LUA files Tropico 5 will read?


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Sat Dec 31, 2016 8:07 am 
Member

Joined: Sun Dec 04, 2016 7:00 am
Posts: 2
Has thanked: 0 time
Have thanks: 0 time
Waterborne: Hidden
Espionage: Hidden
Okay, I seem to be getting somewhere with this now. But now instead of having to individually compile each file using "luac -o {filename}.luad {filename}.lua" in the command prompt, how do I batch file that process with a "for /R" command?


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Sat Mar 04, 2017 9:36 am 
Participant

Joined: Sat Sep 12, 2015 4:14 pm
Posts: 13
Has thanked: 0 time
Have thanks: 0 time
Waterborne: Yes
Espionage: Yes
Yeah, I'd like to know this too, been wanting to mod squad numbers and colors for quite a while but don't know how to compile.


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Sun Mar 05, 2017 10:21 am 
Site Admin
User avatar

Joined: Sat Jun 28, 2014 8:59 pm
Posts: 332
Location: Wisconsin
Has thanked: 1 time
Have thanks: 83 time
Waterborne: Yes
Espionage: Yes
LUA files don't need to be compiled in order to run them.


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Sat Apr 08, 2017 12:50 am 
Participant

Joined: Sat Apr 08, 2017 12:48 am
Posts: 10
Has thanked: 0 time
Have thanks: 1 time
Waterborne: Yes
Espionage: Yes
So wait, if it doesn't need to be compiled, how come when I decompiled your MassUpgrader file (with the instructions provided), it won't work?

I tried adding a few lines you missed - Creamery, for instance - and even without those edits. Firing up a new game with the decompiled version doesn't load it.

Also, I'm going to take this opportunity to pick your brain. How do I get the BTweak function to alter second iterations of a building's objects?
For instance, a building that has multiple Upgrade and/or ApplyModifier sections. I can only seem to get it to alter the first iteration listed in the file for the building.


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Wed Apr 12, 2017 9:53 pm 
Site Admin
User avatar

Joined: Sat Jun 28, 2014 8:59 pm
Posts: 332
Location: Wisconsin
Has thanked: 1 time
Have thanks: 83 time
Waterborne: Yes
Espionage: Yes
PhilCobb wrote:
So wait, if it doesn't need to be compiled, how come when I decompiled your MassUpgrader file (with the instructions provided), it won't work?


Sometimes the decompiler does not do a perfect job and creates errors.

PhilCobb wrote:
I tried adding a few lines you missed - Creamery, for instance - and even without those edits. Firing up a new game with the decompiled version doesn't load it.


No need to alter that mod. Mod loader has a function called MakeMassUprade() built in. Just create a new mod that uses it. See the mod loader documentation thread

PhilCobb wrote:
Also, I'm to take this opportunity to pick your brain. How do I get the BTweak function to alter second iterations of a building's objects?
For instance, a building that has multiple Upgrade and/or ApplyModifier sections. I can only seem to get it to alter the first iteration listed in the file for the building.

It's not possible using BTweak. You'll need to modify the building template manually.


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Thu Apr 13, 2017 11:48 pm 
Participant

Joined: Sat Apr 08, 2017 12:48 am
Posts: 10
Has thanked: 0 time
Have thanks: 1 time
Waterborne: Yes
Espionage: Yes
So wait, Darth - How would I modify the building templates manually? Do you mean decompile, edit, recompile and repack?
You just went over the fact that the decompiler (at least in my case) has issues.
So ... not to come off like an idiot or anything but I'm kinda at a loss for how to do that. I've seen some lines in mods (yours and others') that use a "table.insert" line but ... am I on the right track here, or no?


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Fri Apr 14, 2017 1:17 pm 
Site Admin
User avatar

Joined: Sat Jun 28, 2014 8:59 pm
Posts: 332
Location: Wisconsin
Has thanked: 1 time
Have thanks: 83 time
Waterborne: Yes
Espionage: Yes
PhilCobb wrote:
So wait, Darth - How would I modify the building templates manually? Do you mean decompile, edit, recompile and repack?
You just went over the fact that the decompiler (at least in my case) has issues.
So ... not to come off like an idiot or anything but I'm kinda at a loss for how to do that. I've seen some lines in mods (yours and others') that use a "table.insert" line but ... am I on the right track here, or no?
As a general rule I never encourage directly modifying game files and then repacking them. It's always best to modify as little as possible to prevent conflicts or issues if/when patches or DLCs get released. I highly doubt there will be any more but it's still a good practice to follow. What I mean by manually is creating your own lua code to modify the building template table for whatever building you are attempting to modify. BTweak was designed as a quick and simple shortcut function to modify things like building properties, not components with multiple instances (like standingcomponent, upgrade, or applymodifier).

Modifying components with multiple instances requires you to create code that loops through them so you are only changing the correct one. The game has a built in function that helps.
FindAllComponentsTemplate()
Below is an example modifying the Airport's upgrades. It changes the Diplomatic Flights upgrade cost to 747. It also changes the BudgetMax cost of the upgrade from 10 to 11 and changes the USA standing from 10 to 11.
OnMsg.DataLoaded = function()
   local template = DataInstances.BuildingTemplate["Airport"]
   local upgrades = template:FindAllComponentsTemplate("Upgrade")
   for x = 1, #upgrades do
      local upgrade = upgrades[x]
      if upgrade.Id == "Diplomatic Flights" then
         upgrade.Cost = 747
      end
   end
   local modifiers = template:FindAllComponentsTemplate("ApplyModifier")
   for y = 1, #modifiers do
      local modifier = modifiers[y]
      if modifier.EnabledBy == "Diplomatic Flights" and modifier.PropName == "BudgetMax" then
         modifier.Value = 11
      end
   end
   local standings = template:FindAllComponentsTemplate("StandingComponent")
   for z = 1, #standings do
      local standing = standings[z]
      if standing.EnabledBy == "Diplomatic Flights" and standing.Type == "USA" then
         standing.Amount = 11
      end
   end
   DebugPrint("AIRPORT TEMPLATE:\n" .. TableToLuaCode(DataInstances.BuildingTemplate["Airport"]) .. "\n")
end

The DebugPrint can be commented out but it will spit some useful information to your log file so you can see how a template is organized. Below is what the log file will show. You can see that the changes above have taken place.
AIRPORT TEMPLATE:
{
   file_name = "Data/BuildingTemplate/Airport",
   name = "Airport",
   PlaceObj('BuildingProperties', {
      'Model', "Airport",
      'Flammable', false,
      'Name', T{5547, "stripped"},
      'NamePlural', T{11492, "stripped"},
      'OrbisPhonText', T{28976, "stripped"},
      'Description', T{5548, "stripped"},
      'MenuText', T{5549, "stripped"},
      'BaseBudgetMin', 200,
      'BaseBudgetMax', 420,
      'TourismRatingContribution', 10,
      'asphalt_road', true,
      'TerrainName', "square1",
      'SelectionSound', "airport_select_sound",
   }),
   PlaceObj('Airports', {
      'MonthsBetweenAirplanes', 8,
      'TouristFamilies', 6,
   }),
   PlaceObj('Construction', {
      'Research', "8.1. Airport",
      'Category', "tourism",
      'Position', 11,
      'ConstructionCost', 20000,
      'ConstructionPoints', 2000,
      'Era', 3,
   }),
   PlaceObj('Crime', {
      'BaseAmount', 10,
      'Radius', 20000,
   }),
   PlaceObj('Pollution', {
      'Radius', 20000,
   }),
   PlaceObj('StandingComponent', {
      'Type', "capitalists",
      'Amount', 5,
   }),
   PlaceObj('StandingComponent', {
      'Type', "globalists",
      'Amount', 10,
   }),
   PlaceObj('Workplace', {
      'BaseMaxWorkers', 4,
      'BaseInherentEducationRequired', 4,
      'BaseInherentWealthProvided', 4,
      'BaseInherentJobQuality', 50,
      'Manageable', true,
      'WorkerProfession', "Clerk",
   }),
   PlaceObj('Upgrade', {
      'Id', "Charter Flights",
      'Name', T{5550, "stripped"},
      'Rollover', T{5551, "stripped"},
      'StartTurnedOn', false,
      'Cost', 5000,
      'StartingEra', 3,
   }),
   PlaceObj('Funding', {
      'EnabledBy', "Charter Flights",
      'BaseAmount', 750,
   }),
   PlaceObj('Upgrade', {
      'EraFrom', 3,
      'Id', "Diplomatic Flights",
      'Name', T{5552, "stripped"},
      'Rollover', T{5553, "stripped"},
      'StartTurnedOn', false,
      'Cost', 747,
   }),
   PlaceObj('ApplyModifier', {
      'EnabledBy', "Diplomatic Flights",
      'Category', "Building Properties",
      'PropName', "BudgetMin",
      'Description', T{5554, "stripped"},
      'Percent', true,
      'Value', 10,
   }),
   PlaceObj('ApplyModifier', {
      'EnabledBy', "Diplomatic Flights",
      'Category', "Building Properties",
      'PropName', "BudgetMax",
      'Description', T{5555, "stripped"},
      'Percent', true,
      'Value', 11,
   }),
   PlaceObj('StandingComponent', {
      'EnabledBy', "Diplomatic Flights",
      'Type', "China",
      'Amount', 10,
   }),
   PlaceObj('StandingComponent', {
      'EnabledBy', "Diplomatic Flights",
      'Type', "USA",
      'Amount', 11,
   }),
   PlaceObj('StandingComponent', {
      'EnabledBy', "Diplomatic Flights",
      'Type', "USSR",
      'Amount', 10,
   }),
   PlaceObj('StandingComponent', {
      'EnabledBy', "Diplomatic Flights",
      'Type', "Russia",
      'Amount', 10,
   }),
   PlaceObj('StandingComponent', {
      'EnabledBy', "Diplomatic Flights",
      'Type', "Middle East",
      'Amount', 10,
   }),
   PlaceObj('StandingComponent', {
      'EnabledBy', "Diplomatic Flights",
      'Type', "EU",
      'Amount', 10,
   }),
}


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Sat Apr 15, 2017 2:06 am 
Participant

Joined: Sat Apr 08, 2017 12:48 am
Posts: 10
Has thanked: 0 time
Have thanks: 1 time
Waterborne: Yes
Espionage: Yes
OnMsg.DataLoaded = function()
   local template = DataInstances.BuildingTemplate["ChocolateFactory"]
   local upgrades = template:FindAllComponentsTemplate("Upgrade")
   for x = 1, #upgrades do
      local upgrade = upgrades[x]
      if upgrade.Id == "Central Air Conditioning" then
      upgrade.StartingEra = 2
      if upgrade.Id == "Libertad Chocolate" then
      upgrade.StartingEra = 2
      if upgrade.Id == "Natural Surroagates" then
      upgrade.StartingEra = 2
       end
   end

   DebugPrint("CHOCOLATE FACTORY TEMPLATE:\n" .. TableToLuaCode(DataInstances.BuildingTemplate["ChocolateFactory"]) .. "\n")
end


Okay so, let's get dirty.
I went with the Chocolate Factory because it has 3 upgrades, and it's a good place to start learning. Above is what I've come up with. It doesn't work. I have a few thoughts as to why, but I'd rather get your professional opinion. A few questions while I'm trying to figure it out.

What the heck is the x = 1 line for? If I'm only setting stuff up under local as upgrades, then do I still need to use different for X/Y/Z statements?
I'm running all this in Notepad++ so I think I've got an idea of spacing to keep things organized but I'm just kind of lost on most of the syntax. I've got a lot of other issues, creating upgrades for things (that doesn't get recognized at all, even trying to register the mod), and creating resources (I took at look at the Beans/Rice/Tomatoes fix-up job you did at it looks a lot harder than what you put in the ModLoader 2.4 thread). But I won't get into those now. I'm trying to take it slow. Is there a way you can slow it down and parse the sections and help me understand what each line is for and where I went wrong?


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Sat Apr 15, 2017 10:19 am 
Site Admin
User avatar

Joined: Sat Jun 28, 2014 8:59 pm
Posts: 332
Location: Wisconsin
Has thanked: 1 time
Have thanks: 83 time
Waterborne: Yes
Espionage: Yes
PhilCobb wrote:
Okay so, let's get dirty.
I went with the Chocolate Factory because it has 3 upgrades, and it's a good place to start learning. Above is what I've come up with. It doesn't work. I have a few thoughts as to why, but I'd rather get your professional opinion. A few questions while I'm trying to figure it out.
It's not working due to a few syntax errors. The game won't even load the file if there are syntax errors. You're missing end statements with your if statements. Alternatively you could use elseif's. Also "Natural Surrogates" not "Natural Surroagates"
OnMsg.DataLoaded = function()
   local template = DataInstances.BuildingTemplate["ChocolateFactory"]
   local upgrades = template:FindAllComponentsTemplate("Upgrade")       
   for x = 1, #upgrades do                                                                       
      local upgrade = upgrades[x]
      if upgrade.Id == "Central Air Conditioning" then
         upgrade.StartingEra = 2
      elseif upgrade.Id == "Libertad Chocolate" then
         upgrade.StartingEra = 2
      elseif upgrade.Id == "Natural Surrogates" then
         upgrade.StartingEra = 2
      end
   end
   DebugPrint("CHOCOLATE FACTORY TEMPLATE:\n" .. TableToLuaCode(DataInstances.BuildingTemplate["ChocolateFactory"]) .. "\n")
end

Honestly you don't really need any if statements at all since you are changing every upgrade.
OnMsg.DataLoaded = function()
   local template = DataInstances.BuildingTemplate["ChocolateFactory"]
   local upgrades = template:FindAllComponentsTemplate("Upgrade")       
   for x = 1, #upgrades do                                                                       
      upgrades[x].StartingEra = 2
   end
   DebugPrint("CHOCOLATE FACTORY TEMPLATE:\n" .. TableToLuaCode(DataInstances.BuildingTemplate["ChocolateFactory"]) .. "\n")
end

PhilCobb wrote:
What the heck is the x = 1 line for? If I'm only setting stuff up under local as upgrades, then do I still need to use different for X/Y/Z statements?
I'm running all this in Notepad++ so I think I've got an idea of spacing to keep things organized but I'm just kind of lost on most of the syntax. I've got a lot of other issues, creating upgrades for things (that doesn't get recognized at all, even trying to register the mod), and creating resources (I took at look at the Beans/Rice/Tomatoes fix-up job you did at it looks a lot harder than what you put in the ModLoader 2.4 thread). But I won't get into those now. I'm trying to take it slow. Is there a way you can slow it down and parse the sections and help me understand what each line is for and where I went wrong?
Sure. You could reuse the same variable x for all three loops in my example with the airport. As a habit I don't reuse variable names, even loop counters. Your best bet for understanding LUA syntax is not going to be an explanation of this little code snippet. There are plenty of LUA tutorials on the web that will do a far better job explaining basic LUA.


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Sun Apr 16, 2017 1:22 am 
Participant

Joined: Sat Apr 08, 2017 12:48 am
Posts: 10
Has thanked: 0 time
Have thanks: 1 time
Waterborne: Yes
Espionage: Yes
So, maybe I'm an idiot, but I've copied from your ModLoader Discussion thread to attempt to register the mod. Won't register.

Also I've tried to copy and repurpose some of your instructional code for the Airport, and apply it to a 2nd upgrade on the Logging Camp, just for shiggles. It doesn't work.
I've looked at it, checked templating, checked pretty much everything I can think of, and I can't get it to take.

I'm kind of at a loss and I'm about ready to give up. Is there something simple I'm just ... not getting?

-- This belongs at or very near the top of your mod file
local MyMod = {
   Name = "ColonialReforestation",
   NameText = "Colonial Reforestation",
   Author = "PhilCobb",
   Version = "0.1",
   VersionN = 0.1
}
local loadfail, mdata, mcfg, ModT = ModRegister(MyMod)
if loadfail then
   DebugPrint(loadfail .. "\n")
   return
end

-- Colonial Reforestation

OnMsg.DataLoaded = function()
   local template = DataInstances.BuildingTemplate["LoggingCamp"]
   local upgrades = template:FindAllComponentsTemplate("Upgrade")
   for x = 1, #upgrades do
      local upgrade = upgrades[x]
      if upgrade.Id == "Reforestation" then
         upgrade.StartingEra = 1
      end
   end
end


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Mon Apr 17, 2017 9:24 pm 
Site Admin
User avatar

Joined: Sat Jun 28, 2014 8:59 pm
Posts: 332
Location: Wisconsin
Has thanked: 1 time
Have thanks: 83 time
Waterborne: Yes
Espionage: Yes
PhilCobb wrote:
So, maybe I'm an idiot, but I've copied from your ModLoader Discussion thread to attempt to register the mod. Won't register.

Syntax Error. Tropico 5 doesn't do decimals so VersionN should be 1 not .01. This is what is keeping the file from being loaded. Once you fix that you will find that ModLoader will reject the mod because there is no config variables. If you don't intend to have config variables for your mod you must still set Config = {}
-- This belongs at or very near the top of your mod file
local MyMod = {
   Name = "ColonialReforestation",
   NameText = "Colonial Reforestation",
   Author = "PhilCobb",
   Version = "0.1",
   VersionN = 001,
   Config = {}
}
local loadfail, mdata, mcfg, ModT = ModRegister(MyMod)
if loadfail then
   DebugPrint(loadfail .. "\n")
   return
end

-- Colonial Reforestation

OnMsg.DataLoaded = function()
   local template = DataInstances.BuildingTemplate["LoggingCamp"]
   local upgrades = template:FindAllComponentsTemplate("Upgrade")
   for x = 1, #upgrades do
      local upgrade = upgrades[x]
      if upgrade.Id == "Reforestation" then
         upgrade.StartingEra = 1
      end
   end
end


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Mon Apr 17, 2017 10:13 pm 
Participant

Joined: Sat Apr 08, 2017 12:48 am
Posts: 10
Has thanked: 0 time
Have thanks: 1 time
Waterborne: Yes
Espionage: Yes
No decimals. Funny brackets. Got it.

Edit: After missing a comma, and fixing what you advised ... it worked, much to my own surprise. Now to go and try and do everything else. Next would be to create a custom upgrade to multiple buildings, but I'll try and screw that up before I ask for too much more help. Thanks for your assistance up to this point.


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Wed Apr 19, 2017 2:16 am 
Participant

Joined: Sat Apr 08, 2017 12:48 am
Posts: 10
Has thanked: 0 time
Have thanks: 1 time
Waterborne: Yes
Espionage: Yes
Had a few issues, I think I worked them out but I will get back to you if they aren't.

One that I'm kind of stumped on is changing the ProductionRaw/Production cycles on the Cattle Ranch/Factory Farm, respectively. I've got them built like your examples, but they don't seem to be taking.

OnMsg.DataLoaded = function()

   -- Cattle Factory Farm Production Increase
   local template = DataInstances.BuildingTemplate["FactoryFarmCattle"]
   
   local productions = template.FindAllComponentsTemplate("Production")
   for b = 1, #productions do
      productions[b].BaseInputAmount1 = 300 -- 150
   end
   
   local productions = template.FindAllComponentsTemplate("Production")
   for c = 1, #production do
      productions[c].BaseOutputAmount = 600 -- 300
   end
end

OnMsg.DataLoaded = function()

   -- Cattle Ranch Production Increase
   local template = DataInstances.BuildingTemplate["RanchCattle"]
   
   local productions = template.FindAllComponentsTemplate("ProductionRaw")
   for a = 1, #productions do
      productions[a].BaseOutputAmount = 300 -- 150
   end
end


Just fiddling with the Ranch, I've even tried splitting it into separate "if/elseif" statements, and a bunch of other things. Kinda lost here on this one, I'd say genuinely stumped. I'm guessing the 2nd instance of local xyz = template...etc. -- that xyz is whatever I choose, it doesn't have to be anything specific. Does it?

EDIT 1: Also, another slight issue - I've got Neighborhood Watch on Houses dropped to Era 2, but the MassUpgrade version (made through ModLoader command, not using the MassUpgrader mod) is still Era 4. There a separate instance I need to take into account for Mass Upgrades?

EDIT 2: Belay the above issue, was able to fix it, or I think I did, by putting the Tweaks/MassUpgrade lines in the same file as the Mods.


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Sun Apr 23, 2017 9:32 pm 
Site Admin
User avatar

Joined: Sat Jun 28, 2014 8:59 pm
Posts: 332
Location: Wisconsin
Has thanked: 1 time
Have thanks: 83 time
Waterborne: Yes
Espionage: Yes
PhilCobb wrote:
Had a few issues, I think I worked them out but I will get back to you if they aren't.

One that I'm kind of stumped on is changing the ProductionRaw/Production cycles on the Cattle Ranch/Factory Farm, respectively. I've got them built like your examples, but they don't seem to be taking.
Simple Error. Click the spoiler button to reveal and then groan.
Spoiler:
You used "template.FindAllComponentsTemplate" and it should be "template:FindAllComponentsTemplate". Also there is no need to loop through the same thing twice. Make both changes at once and once you declare a variable a local you don't need to do it again.
OnMsg.DataLoaded = function()
   local template = DataInstances.BuildingTemplate["FactoryFarmCattle"]
   local productions = template:FindAllComponentsTemplate("Production")
   for b = 1, #productions do
      productions[b].BaseInputAmount1 = 300 -- 150
     productions[b].BaseOutputAmount = 600 -- 300
   end
   template = DataInstances.BuildingTemplate["RanchCattle"]
   productions = template:FindAllComponentsTemplate("ProductionRaw")
   for a = 1, #productions do
      productions[a].BaseOutputAmount = 300 -- 150
   end
end
I included the code for the cattle ranch in the same OnMsg.DataLoaded as an example of reusing the same locals. Variables can be whatever you choose to name them but to make it easier name them something logical to their purpose. For less headaches I recommend making use of the log file. You would have been given an error that looks something like this that would have pointed to the exact file and line of the problem.
[LUA ERROR] CommonLua/Classes/ComponentObject.lua:159: attempt to index local 'c' (a nil value)
C:\Program Files (x86)\Steam\steamapps\common\Tropico 5\Mods\File.lua(363):  <>
[C](-1): global procall
[string ""](0): global StaticMsg
(22): global Msg
[string ""](0):  <>
[C](-1): global procall
[string ""](0): global StaticMsg
(22):  <>
        --- end of stack
PhilCobb wrote:
EDIT 1: Also, another slight issue - I've got Neighborhood Watch on Houses dropped to Era 2, but the MassUpgrade version (made through ModLoader command, not using the MassUpgrader mod) is still Era 4. There a separate instance I need to take into account for Mass Upgrades?

EDIT 2: Belay the above issue, was able to fix it, or I think I did, by putting the Tweaks/MassUpgrade lines in the same file as the Mods.
Mass Upgrader (both the mod and function) uses the data that exists for the building to create the upgrade. If you modify any part of the upgrade it should be done before the MakeMassUpgrade() function is run. The game loads mods in alphabetic order.


Offline
 Profile  
 
 Post subject: Re: LUA Compiler?
PostPosted: Mon Apr 24, 2017 4:11 am 
Participant

Joined: Sat Apr 08, 2017 12:48 am
Posts: 10
Has thanked: 0 time
Have thanks: 1 time
Waterborne: Yes
Espionage: Yes
Ever an enlightening experience.

I did groan.
I had eventually got tired of it not working and had gone back and rewritten everything, albeit a lot longer in form than what you've come up with.
I knew there had to be a way to shorten it. Thanks for showing me.


Offline
 Profile  
 
Display posts from previous:  Sort by  
 Page 1 of 1 [ 16 posts ] 

Contact Us | All times are UTC - 6 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  

cron

suspicion-preferred