Time |
Nick |
Message |
00:27 |
|
Black_Kot joined #minetest-mods |
00:45 |
|
Black_Kot joined #minetest-mods |
02:37 |
|
Miner_48er joined #minetest-mods |
08:27 |
|
nore joined #minetest-mods |
08:49 |
|
Black_Kot joined #minetest-mods |
08:51 |
|
Black_Kot left #minetest-mods |
09:29 |
|
nore joined #minetest-mods |
09:53 |
|
Black_Kot joined #minetest-mods |
09:53 |
|
Black_Kot left #minetest-mods |
10:04 |
|
Flipsels joined #minetest-mods |
11:31 |
|
Nemin32 joined #minetest-mods |
11:32 |
Nemin32 |
Hi! |
11:33 |
Nemin32 |
Is there a command for running an abm once? |
11:34 |
Nemin32 |
Like i have a block and i want it to put another block on top of it, but only once. |
11:35 |
Nemin32 |
And if i punch that block out on top thats it. |
11:41 |
Nemin32 |
I tried making a local var. that turns false when the first spawning happened, but it didnt worked. |
11:47 |
Zefram_Fysh |
you need to implement your own concept of "once" |
11:48 |
Zefram_Fysh |
there is no API mechanism to do it for you |
11:58 |
|
nore joined #minetest-mods |
12:26 |
Nemin32 |
Hmm |
12:26 |
Nemin32 |
Well, this is sad |
12:28 |
Nemin32 |
Then can you please comment on my code what is the problem with it: http://pastebin.com/TG6sHTFS ? |
12:37 |
|
phantombeta joined #minetest-mods |
14:50 |
|
Wuzzy joined #minetest-mods |
14:53 |
LazyJ |
Nemin32, I haven't read the pastebin but something that may work (and is much more complex) would be to have the node on top replace the node on bottom "on_punch" or "after_punch" with a node of a *different* name but same texture and definition as the original, bottom node. |
14:54 |
LazyJ |
That way the ABM only works on the original bottom node but not the near identical node of a different name (i.e. bottom_node vs bottom_node_2). |
15:35 |
|
phantombeta joined #minetest-mods |
15:40 |
Nemin32 |
Wow, i would never thought that thank you! |
15:41 |
LazyJ |
yw, I hope it works. ;) |
15:46 |
Nemin32 |
You know, my friend is a big fan of an anime, where the protagonist has a dimension named the unlimited blade works, where he has every type of swords and stuff, and i wanted to make him a block which spawns a 25*25 area of blocks that spawn "sword-blocks" on top. |
15:48 |
LazyJ |
It would be a neat effect to pull-off. |
15:48 |
LazyJ |
What you learn by doing it may help in the future with a similar problem. ;) |
15:49 |
Nemin32 |
:) |
15:52 |
Nemin32 |
Great, it works nearly as i wanted! |
15:57 |
Nemin32 |
Oh, my! It look good. |
15:57 |
Nemin32 |
My friend will be happy, i think. |
16:37 |
Nemin32 |
And can i ask you one more thing? Is it possible to orientate my spawning blocks like if i place my block from standing north my square will spawn north etc. etc. |
16:37 |
Nemin32 |
? |
16:43 |
Nemin32 |
WTF, i cant delete my block using minetest.remove_node! |
16:45 |
LazyJ |
To remove the node, try minetest.set_node("air") |
16:45 |
Nemin32 |
Yep, i tried that. |
16:45 |
LazyJ |
The orientated deployment of blocks is something I haven't messed with yet. |
16:45 |
Nemin32 |
Well then nevermind that |
16:46 |
Nemin32 |
But the no-remove thing is a problem |
16:46 |
LazyJ |
Is something putting the block back after it is removed? That is another possibility. |
16:47 |
Nemin32 |
Hmm |
16:47 |
LazyJ |
When I come to problems like that, I try to isolate just that block in it's own special "test" mod. |
16:48 |
Nemin32 |
Well, this is a test mod too. |
16:48 |
LazyJ |
Comment-out all the stuff that works and is not necessary and focus on just that one problem. |
16:48 |
Nemin32 |
Just goofing around getting the basics. |
16:49 |
LazyJ |
Sometimes the problems I've had were the right code in the wrong place or sequence of events. |
16:50 |
LazyJ |
As for deploying nodes based on the player's orientation, I'd look into thefamilygrog66's "Living Room Furniture" mod, the long sofas. |
16:51 |
LazyJ |
Another one would be mauvebic's "Ruler" mod. |
16:51 |
Nemin32 |
Hmm, now its deleting, it seems the problem is in the square generating code |
16:51 |
Nemin32 |
Ok thanks |
16:51 |
LazyJ |
Possibly even Sokomine's "Villages" mod. |
16:53 |
|
phantombeta joined #minetest-mods |
17:04 |
Nemin32 |
Hmm, after some experimenting the blocks vanishes for a moment, howewer it reappears right after |
17:05 |
LazyJ |
Then something in the code is putting it back. |
17:06 |
LazyJ |
Use WorldEdit's /i on to "tap" the node that returns. It will display in chat the modname:nodename of that node. That will give you an idea of what to look for. |
17:07 |
LazyJ |
Especially if you are using doppelganger nodes. |
17:07 |
Nemin32 |
Umm, i know its name |
17:07 |
Nemin32 |
The worst that its actually never referenced after the destroy command. |
17:08 |
LazyJ |
Something before the destroy command may be the issue. |
17:08 |
LazyJ |
If you are using something to replace the node when the one above it is punched, that replacement code may still be working or the ABM may still be putting it there. |
17:09 |
LazyJ |
Work your way backwards. |
17:10 |
Nemin32 |
Hmm, well the spawner block is not affected by the replacement code |
17:11 |
Nemin32 |
Would you please see my code? |
17:13 |
LazyJ |
I can take a look, but no promises. I'm struggling with Lua and mods myself. ;) |
17:13 |
LazyJ |
What's the current version's pastebin? |
17:15 |
Nemin32 |
http://pastebin.com/pmrkmamx |
17:15 |
Nemin32 |
This is the ABM of the spawner |
17:17 |
LazyJ |
Just a guess but: |
17:17 |
LazyJ |
minetest.remove_node(savedpos) |
17:17 |
Nemin32 |
Its there |
17:17 |
LazyJ |
looks like it's telling Minetest to remove a *position* but not *what* to remove. |
17:17 |
Nemin32 |
Oh |
17:18 |
LazyJ |
You are trying to do the opposite of: |
17:18 |
LazyJ |
minetest.set_node(pos, {name = "ubw:dirt_active"}) |
17:18 |
LazyJ |
Which specifies the position and the item. |
17:18 |
Nemin32 |
Well, then how could i fix itm |
17:18 |
Nemin32 |
? |
17:18 |
LazyJ |
So try doing that with the remove verion; specify the pos *and* the item. |
17:20 |
Nemin32 |
so i put minetest.remove_node(savedpos, {name = "ubw:spawner}) but nothing |
17:21 |
LazyJ |
Say the process out loud sometimes helps. "Minetest, 'remove_node' in this 'pos' if it's 'name' is '{name=ubw:spawner}'." |
17:21 |
Nemin32 |
the documentation says i only need a position |
17:22 |
LazyJ |
You have 'pos' identified as 'savedpos'. What describes 'savedpos'? |
17:22 |
Nemin32 |
in function(pos) savedpos = pos |
17:23 |
LazyJ |
You have it turned around. |
17:23 |
Nemin32 |
why? |
17:23 |
LazyJ |
It should be 'pos = savedpos'. |
17:23 |
Nemin32 |
I am declaring savedpos, it should be the beginning position, so i can do my thing with pos. |
17:24 |
Nemin32 |
but i will try |
17:24 |
LazyJ |
function(pos, name, item_stack) etc... is already taken by the builtin mod. |
17:25 |
LazyJ |
That's what allows you to do things like 'minetest.get_node(pos).name' |
17:25 |
LazyJ |
'pos' |
17:25 |
LazyJ |
Ahk... |
17:25 |
Nemin32 |
So i cant modify it |
17:25 |
LazyJ |
'pos' is already claimed by another function. |
17:25 |
LazyJ |
idk. |
17:25 |
Nemin32 |
*facepalm |
17:25 |
LazyJ |
Give it a try and see what happens. |
17:26 |
Nemin32 |
Soo if i put pos into another var, and i place the thing to the another var it will work? |
17:27 |
LazyJ |
It may work but will it conflict with other functions calling for 'pos'? |
17:28 |
LazyJ |
If you were to use 'local cobble = minetest.get_node(pos)', then 'minetest.register_node(default:cobble)' may have an issue. |
17:28 |
Nemin32 |
I have another function who edits pos |
17:29 |
LazyJ |
That example is just to illustrate. |
17:29 |
LazyJ |
Other than that, I'm out of ideas. :( |
17:30 |
Nemin32 |
if i write function(local pos)? |
17:31 |
Nemin32 |
Or put it into another file and dofile()? |
17:31 |
LazyJ |
I haven't written my own functions yet to understand them well enough. |
17:32 |
LazyJ |
So I stick with what other's have written. |
17:32 |
Nemin32 |
Ok, local does not work, i try the dofile() |
17:32 |
LazyJ |
Looking at some of the older mods, *everything* was done in a single init.lua file. |
17:33 |
LazyJ |
Crafts, registrations, ABMs... the whole ball of wax. |
17:33 |
LazyJ |
So if they could do it all in one file, then you should be able to get yours to work in a single file too. |
17:34 |
Nemin32 |
But it worth one try. |
17:34 |
LazyJ |
Unless the rest of your mod is huge, in which case it's easier to keep your sanity if you break it into smaller files. |
17:36 |
Nemin32 |
No its small (for now) |
17:53 |
Nemin32 |
OK, so i have two variations: one) It works, howewer only for the first, then every other just dissapears two) like before modifiyng. |
17:56 |
|
Miner_48er joined #minetest-mods |
17:56 |
|
rubenwardy joined #minetest-mods |
18:02 |
LazyJ |
Try allowing only 3 to spawn. If it is consistently evens or consistently odds that disappears, then the likely suspect is the position(s) used in the code. |
18:03 |
LazyJ |
If it's consistently random, then look for other things that tell Minetest to either remove, replace, or expire something. |
18:04 |
|
Taoki joined #minetest-mods |
18:06 |
LazyJ |
"Simplify. Identify. Retry." |
18:06 |
Nemin32 |
Is there a function to check if a node *removed* not *dug* |
18:07 |
LazyJ |
I've never had an instance to look for one yet. |
18:07 |
LazyJ |
By default, whenever something is "dug", Minetest records it in the logs. Key into that perhaps? |
18:08 |
LazyJ |
If it's not dug, then assume it was removed. |
18:08 |
|
Taoki joined #minetest-mods |
18:09 |
Nemin32 |
Hmm, well i must go, a sleep may help :) Anyway thank you very much for your help! And bye! |
18:09 |
LazyJ |
Good luck ;) |
18:19 |
|
Flipsels joined #minetest-mods |
18:37 |
|
nore joined #minetest-mods |
19:04 |
|
rubenwardy left #minetest-mods |
19:14 |
|
pcsolutions joined #minetest-mods |
20:31 |
|
Miner_48er joined #minetest-mods |
22:32 |
|
phantombeta joined #minetest-mods |