Feedback appreciated about mod concept
Feedback appreciated about mod concept
I wanted to make a mod that created an entity that would provide the player with endless slow iron/copper/coal/stone. Something like a Endless Deep Driller that was expensive and would slowly provide some resources but not enough to run a base on usually. Anyhow I was starting to make the item and realized that it was not going to work the way I wanted if it was under the Prototype: Mining Drill. I wanted some feedback as to what would be the easiest way to accomplish my mod. I was thinking an assembler that ran a recipe might work better but i wanted the output to be like a miner. I wanted to randomly generate the resource that it would mine by random number generation. I also wanted it to generate bobs/dytechs ores if those mods are active at a very low chance. Something like 5%iron/5%copper/5%coal/84%stone/1%misc random ore. I was also considering running the machine on concrete (to support the underground operation). What would be the simplest or most straightforward way for me to start?
-
- Long Handed Inserter
- Posts: 66
- Joined: Sat May 10, 2014 8:48 am
- Contact:
Re: Feedback appreciated about mod concept
I think you should take a look at how FMOD does its underground drills. You have similar goals, I think.
-
- Fast Inserter
- Posts: 157
- Joined: Fri Jun 26, 2015 11:13 pm
Re: Feedback appreciated about mod concept
Just use an assembly machine instead, and every so often (use on_tick()) just add something to its output slot (if there is room).
Re: Feedback appreciated about mod concept
why on_tick?johanwanderer wrote:Just use an assembly machine instead, and every so often (use on_tick()) just add something to its output slot (if there is room).
first, a recipe to make this item (like iron-ore) without ingredients, with category = "your_category", this category is to craft the recipe, now in a custom assembling machine set crafting_categories = {"your_category"}, and this assembler machine only can craft yours recipes, this assembler machine like replicators i think.
-
- Fast Inserter
- Posts: 157
- Joined: Fri Jun 26, 2015 11:13 pm
Re: Feedback appreciated about mod concept
That would be even better. I wasn't sure if you're allowed to have recipes without input or not. If that's the case, the only reason you would need scripting is to produce random elements.L0771 wrote:why on_tick?johanwanderer wrote:Just use an assembly machine instead, and every so often (use on_tick()) just add something to its output slot (if there is room).
first, a recipe to make this item (like iron-ore) without ingredients, with category = "your_category", this category is to craft the recipe, now in a custom assembling machine set crafting_categories = {"your_category"}, and this assembler machine only can craft yours recipes, this assembler machine like replicators i think.
Re: Feedback appreciated about mod concept
a bit very hardjohanwanderer wrote:That would be even better. I wasn't sure if you're allowed to have recipes without input or not. If that's the case, the only reason you would need scripting is to produce random elements.L0771 wrote:why on_tick?johanwanderer wrote:Just use an assembly machine instead, and every so often (use on_tick()) just add something to its output slot (if there is room).
first, a recipe to make this item (like iron-ore) without ingredients, with category = "your_category", this category is to craft the recipe, now in a custom assembling machine set crafting_categories = {"your_category"}, and this assembler machine only can craft yours recipes, this assembler machine like replicators i think.
I think the recipes have a probability, maybe is you have more than 1 result, this probability is for every result.
Re: Feedback appreciated about mod concept
Thanks for the idea. I think I know how to start now.
Re: Feedback appreciated about mod concept
Where is a good site to get syntax information for LUA? I was having trouble setting up a for loop to make the table for possible ores to choose from. Here is what I have and if anyone wants to debug/fix it that would be nice but i still want to learn how to fix my own code. The tick event that handles generation of ores is full of bugs and not even worth having another person look at yet.
Code: Select all
function Init()
global.MinerList = {}
global.OreList={}
for i = 1 , 50 do
OreList[i] = "stone"
end
for i = 51 , 55 do
OreList[i] = "coal"
end
for i = 56 , 60 do
OreList[i] = "copper-ore"
end
for i = 61 , 66 do
OreList[i] = "iron-ore"
end
--[[if dytech --need to define this
add dytech ores
end
if bobsmods --need to define this
add bobs ores
end]]
end
Re: Feedback appreciated about mod concept
nevermind, i forgot my global.OreList instead of OreList.
Re: Feedback appreciated about mod concept
You could detect the creation of your miner with on_built and on_robot_built events, and then just use scripts to replace the built entity with tiny resource patch and a miner. It is possible to create dummy resources that don't spawn normally. See data.raw and other mods (off the top of my head I can name only mine) to get a hint how to generate an ore that could be anything from any mod when mined. You could use some of the autoplace values to programmatically decide the probabilities of the mining results.
Tile properties might be of use to determine whether the machine should be allowed to function. (That decision would have to be made during on_built events.)
There can hardly be a better lua starter than an e-book by the author of the language. (There are even more recent albeit less easy-to-read manuals there at lua.org)
edit: I must also say that while implementation might be an entertaining puzzle, I'm not very enthusiastic about the idea itself. The very idea of factorio is about expansion for resources and struggle to save enough of them to keep pushing forward against the unlimited flow of dangers the hostile world is throwing at you. Such eternal resources mods either completely devastate that aspect of the game thus taking out the reason for going on and playing the game, or are simply too ineffective and not worth bothering around. That's my opinion. There probably are people with exactly opposite thoughts.
Tile properties might be of use to determine whether the machine should be allowed to function. (That decision would have to be made during on_built events.)
There can hardly be a better lua starter than an e-book by the author of the language. (There are even more recent albeit less easy-to-read manuals there at lua.org)
edit: I must also say that while implementation might be an entertaining puzzle, I'm not very enthusiastic about the idea itself. The very idea of factorio is about expansion for resources and struggle to save enough of them to keep pushing forward against the unlimited flow of dangers the hostile world is throwing at you. Such eternal resources mods either completely devastate that aspect of the game thus taking out the reason for going on and playing the game, or are simply too ineffective and not worth bothering around. That's my opinion. There probably are people with exactly opposite thoughts.
I do mods. Modding wiki is friend, it teaches how to mod. Api docs is friend too...
I also update mods, some of them even work.
Recently I did a mod tutorial.
I also update mods, some of them even work.
Recently I did a mod tutorial.
Re: Feedback appreciated about mod concept
Ok I have most of my mod working however the belts in 12.* act different with regards to collisions. When the can_place_entity function finds items on a belt items on a belt do not take space so it allways returns true. If the belt that the ore outputs onto is full or has an item in the way the new one spawns because the can_place_entity returns TRUE regardless of items currently on the belt. Then the new ore fails to ever load onto the belt when it clears. This image shows a stone "stuck" in front of the "miner". Anyone know how to check for items ON a belt?
- Attachments
-
- itemonbelt.png (877.25 KiB) Viewed 8522 times
-
- Filter Inserter
- Posts: 952
- Joined: Sat May 23, 2015 12:10 pm
- Contact:
Re: Feedback appreciated about mod concept
I believe you can use can_insert_at and insert_at to interract with the belt directly
Re: Feedback appreciated about mod concept
I am struggling with how to use the "transportline" LUA functions. I have
and factorio reports "Error while running the event handler: __Endless-Miner__/control.lua:132: attempt to index field 'get_transport_line' (a function value)"
Code: Select all
belt.get_transport_line.insert_at({0.5},{name=ore, count=1})
-
- Filter Inserter
- Posts: 952
- Joined: Sat May 23, 2015 12:10 pm
- Contact:
Re: Feedback appreciated about mod concept
it's a function
Code: Select all
belt.get_transport_line(1).insert_at({0.5},{name=ore, count=1})
Re: Feedback appreciated about mod concept
Thank you! Also I found the {0.5} should be just 0.5 for the insert_at LUA.
now to code for line 1 vs line 2
Code: Select all
belt.get_transport_line(1).insert_at(0.5,{name=ore, count=1})