Time Nick Message 00:00 shamoanjac yeah 00:00 shamoanjac yet it looks dirty 00:00 shamoanjac I'm almost done with factions btw 00:00 shamoanjac I see there is a chat handler 00:01 shamoanjac I think I'll remove it for now as it's too entangled with lots of data from the ancient model 00:03 shamoanjac alright, done 00:03 shamoanjac stripped chatcommands down to 320 lines 00:03 thePalindrome Dang son 00:11 agrecascino shamoanjac, push the latest factionsmod.lua to the repo and ill rewrite chatcommands.lua 00:12 shamoanjac both are rewritten 00:12 shamoanjac but I'm pushing 00:14 agrecascino so should we make a reparser? 00:14 shamoanjac there should be a "command" class or something 00:14 shamoanjac that auto-checks whether the player, faction exist 00:15 shamoanjac and whether privileges are done 00:15 shamoanjac so that you only specify the action on success 00:15 shamoanjac like 00:15 agrecascino just make a SanityCheck(player,faction) 00:15 agrecascino and have that return true or false 00:15 shamoanjac not enough, muh privileges 00:15 shamoanjac I was thinking of 00:16 shamoanjac factionsmod.register_command("command", { 00:16 shamoanjac privileges = {list}, 00:16 agrecascino ur dumb 00:16 shamoanjac format = {"faction_name", "any", "player_name"}, 00:17 shamoanjac action = function(parameters, player) 00:17 shamoanjac }) 00:17 shamoanjac it would auto check the correct formatting of the command, check the required privileges, and then execute action 00:18 agrecascino shamoanjac, err\ 00:18 agrecascino no offence, but this is a lot 00:18 agrecascino also 00:18 agrecascino can someone donate me one of these https://upload.wikimedia.org/wikipedia/commons/d/da/HP-HP9000-C8000-Workstation_33.jpg 00:20 shamoanjac https://github.com/agrecascino/factions/pull/2 00:20 shamoanjac it's not a lot m8 00:20 shamoanjac I can do it in an hour tomorrow 00:20 shamoanjac right now we gotta check that the mod works 00:20 shamoanjac or even better, I'll go to sleep 00:21 shamoanjac g'night 00:30 Hijiri haskell is great though 00:31 Hijiri too bad shamoanjac isn't here for more language arguments 00:43 betterthanyou710 testing 00:43 betterthanyou710 OldCoder can you read this? 00:43 OldCoder betterthanyou710, yes 00:44 betterthanyou710 good 06:12 Nosrick Anyone about? 06:30 Nosrick Just for documentation's sake; I think I'm going to have to use register_on_hpchange to directly influence damage, as the engine currently handles ALL damage calculations, and they can't be touched directly except through on_hpchange. 06:40 Nosrick Aaaaand that only works for players 06:40 Nosrick I don't think I can do this. 06:50 Hijiri Nosrick: are you looking for more than just attack damage? 06:50 Nosrick Yes. 06:51 Hijiri ok 06:51 Nosrick I need to know a few things about the attacker, as well. 06:51 Hijiri what damage sources other than attacks? 06:51 Nosrick If I could combine the on_hpchange and on_punch, that'd be great. 06:51 Nosrick It's not so much damage sources, as it is active effects. 06:51 Hijiri what things that set hp 06:52 Nosrick Need to know if the attacker has a certain effect going, so I can boost the damage received. 06:52 Hijiri If those effects are implemented by you, you can handle that in your effect-handling code 06:53 Hijiri maybe you can make it nicer by having some API that tracks the boosts for you 06:53 Nosrick I'm using the playereffects API. 06:53 Hijiri with repeating effects? 06:53 Nosrick I'm not using them, but yeah, that's the one. 06:54 Hijiri ok 06:54 Hijiri Oh, the effects aren't applying damage 06:54 Hijiri they are boosting it? 06:54 Nosrick Correct. 06:54 Nosrick Although... 06:54 Hijiri the entities have to support your damage mechanism 06:55 Hijiri I don't think there is a way around it 06:55 Hijiri you can make a generic function that can be placed in an entity's on_punch callback, and reuse that 06:55 Nosrick I could apply a 0 second effect that decrements the entity's HP on application 06:56 Hijiri if you are replacing an existing entity you can call the on_punch with a modified damage, but I'm not sure that will work nicely with things like mobs redo with special handling of punches 06:56 Nosrick (It's unresistable damage) 06:56 Hijiri Nosrick: playereffects can't apply effects to entities 06:56 Hijiri At least, as far as I know, but I'm pretty sure you can't 06:57 Nosrick Funny, I'm sure I got my spells working on summoned (through the mobs API) entities. 06:57 Hijiri are you replacing their on_punch? 06:57 Nosrick Not yet. 06:57 Nosrick But even if I did, I have no access to the damage caused. 06:57 Hijiri I wouldn't expect it to not work, unless you were doing something like that 06:58 Hijiri Nosrick: entity on_punch overrides normal punch damage 06:58 Hijiri You can calculate the damage on your own from there 06:58 Nosrick Oh, I see! 07:00 Hijiri the problem with mobs from existing mob frameworks is that they do special things in their punch handling, like giving drops and calling death callbacks 07:00 Hijiri so you need to make sure those get run also 07:00 Hijiri (If you overwrite their on_punch) 07:01 Hijiri at some point mobs redo mobs didn't support non-player punchers, but I don't know if that's still the case 07:01 Nosrick How's this? http://pastebin.com/Xn0JUBZy 07:02 Hijiri that should be momtest.on_punch(self, ...) or momtest:on_punch(puncher, ...) if you want that to be easily usable as a value 07:03 Hijiri Nosrick: are your punch callbacks intended for calculating damage? 07:03 Nosrick Yep. 07:03 Hijiri the original purpose of punch callbacks is so special things can happen when punches happen, but not most damage calculations 07:03 Nosrick Well, I will be doing extra things. 07:03 Hijiri I was expecting you would calculate the damage there and just call the callbacks with the calculated damage 07:04 Nosrick Which callbacks do I need to call? on_punch and...? 07:04 Hijiri I mean the ones in your global table 07:05 Hijiri my idea was that you write a "replacement on_punch" that you can put in an entity definition 07:05 Hijiri in that case this would be the on_punch 07:06 Hijiri this code seems weird to me because I would expect a fairly uniform treatment of punching, just augmented with whatever features you wanted (damage boosts) 07:06 Krock Hijiri, have you been dicussing for 9 hours or did you take a break in between? Just wonder 07:07 Hijiri Krock: break 07:07 Krock oh, then it's fine 07:08 Hijiri So I would have expected something similar to the way global callbacks are used from register_on_punchplayer from the base API, just using the specially-calculated damage instead 07:08 Nosrick Oh, okay. 07:09 Hijiri I'm actually not sure how I would do this 07:09 Hijiri But I think replacing an entity's on_punch at least is necessary, because that is the only thing that can change what happens when a player hits an entity 07:10 Nosrick Yeah, I think that's what I'm going to do. 07:10 Hijiri punches don't come with a fixed damage, they come with tool capabilities that describe the way they damage 07:10 Nosrick Yeah, I'm just writing out the damage calculation for it now. 07:10 Hijiri so what you could do is call something behaving like the original obj:punch(), except with boosted tool capabilities 07:11 Hijiri then you don't even need to do damage calculations, just modify the damage output described in the capabilities 07:11 Hijiri that would require you to scan through the tool capabilities and find all the damage fields 07:12 Nosrick Yup, doing so at the moment. 07:12 Hijiri Ok, I think that is a good way to go 07:13 Hijiri I guess this is sort of like a function decorator 07:13 Hijiri or just a function on functions 07:13 Hijiri endofunction on functions 07:21 Nosrick for key, value in toolCapabilities do 07:21 Nosrick damage = damage + (toolCapabilities.damage_groups[value] * min(0.0, max(1.0, (lastPunch / toolCapabilities.full_punch_interval))) * (self.armor_groups[value] / 100)) 07:21 Nosrick end 07:21 Nosrick Well, that didn't work too well. 07:22 Nosrick But there's my damage calculation. 07:27 Nosrick Any idea how to get the playereffects of another player? 07:28 Nosrick Nevermind, I just RTFM 07:37 Hijiri Nosrick: I mean don't try to calculate your own damage 07:37 Hijiri oh 07:37 Hijiri wait 07:37 Hijiri I did implicitly say that 07:37 Hijiri if you are emulating punch 07:37 Hijiri sorry 07:38 Hijiri Nosrick: instead of checking if a player has a certain effect, you can have your effect set a flag somewhere for the player 07:38 Hijiri That allows you to have multiple effects that set the same flag 07:39 Hijiri (Even better, use a monoid instead of a flag and you can have both effects active at the same time :P) 07:43 Hijiri Then in your damage calculations you can read the flag 07:43 Hijiri if this is for damage boosts, I would advise using monoids, or something similar, so that you don't have to check for individual effects 07:44 Hijiri It doesn't have to be monoids, but it should be something that lets you: Read the total damage boost of a given player, and contribute to the damage boost from multiple sources 07:44 Hijiri checking for particular effects doesn't scale 07:45 Hijiri maybe you aren't doing that, but that's what it sounded like 07:49 Hijiri I have to sleep, so I won't be able to respond for a while 07:49 Hijiri I'll stay connected unless I lose connection, though 08:13 Nosrick Thanks, Hijiri. Sorry I didn't reply, wife needed the laptop. 09:19 jan6 what are the minimal dependecies for building a minetest client from source? 09:20 aix hi all 09:20 Krock irrlicht and zlib 09:20 sfan5 and sqlite3 09:20 Krock oh right, we don't have that bundled anymore 09:30 aix are there any remote bag mods? 09:30 aix y'know, like a wifi chest but in the inventory 09:52 Nosrick You weren't kidding when you said the damage stuff in minetest is totally fucked 09:58 Nosrick My on_punch function in my custom entity isn't calling at all. 10:01 Krock Nosrick, punch a dropped item and you see that it works prefectly 10:03 Nosrick But my custom on_punch isn't in a dropped item 10:03 Nosrick It's in a mob. 10:06 Nosrick Ah, I see why. 10:07 Nosrick The mob API I'm using doesn't have an on_punch callback. 10:08 Krock So don't blame Minetest for it :P 10:33 Nosrick Damn it, I can't get my custom entities to hook into on_punch. 10:40 Nosrick I think I'm going to have to write my own damn mob API. 11:24 Nosrick Is it possible to change an entity's on_punch function after initialisation? 11:24 T4im should be possible, yea 11:27 Nosrick So I use minetest.add_entity() to spawn the entity, which returns an entity, but when I try to reassign its on_punch function, it crashes and tells me I'm trying to index into a userdata value. How do I get around this? 11:29 T4im it returns an ObjectRef 11:30 T4im not an entity 11:30 Nosrick Ah. 11:30 T4im for whatever reason entities don't inherit from objects 11:30 T4im meaning you are looking for on_punch in a c structure, that doesn't have it 11:30 Nosrick Why on earth does add_entity() return an ObjectRef?! 11:31 Krock why shouldn't it? 11:31 T4im you'll probably want object.get_luaentity() 11:32 Nosrick Oh, so I need to get_luaentity(), then reassign its on_punch? 11:33 Nosrick Where is get_luaentity() located? 11:37 T4im object:get_luaentity() * 11:37 T4im in LuaEntitySAo 11:37 T4im SAO* 11:43 Nosrick Thanks! 11:43 Nosrick I can't believe I missed that. 11:46 Nosrick Different problem: it looks like add_entity() returns a copy? 11:47 Nosrick As making changes to it seem to be discarded. 11:48 Nosrick Will I have to look up the minetest.luaentities and replace it there? 11:50 Megaf G'Day folks 11:50 Nosrick Hello! 12:10 Laster Hello everyone!@ 12:10 Markow hey 12:11 Laster I try to install a mod to extend my minetest 0.4.14 12:11 Laster on ubuntu 14.04 12:12 Laster where does look Minetest for mods? 12:12 Laster I mean in which map? 12:13 Laster more as that is not written on http://wiki.minetest.net/Installing_Mods 12:14 T4im each world you create will have a world.mt file in its directory (under .minetest/worlds) in which it saves which mods are loaded for that world 12:15 T4im hm no, that stands on that page, too 12:15 T4im not sure what you are missing? :D 12:15 Calinou Laster: ~/.minetest/mods 12:15 Calinou install your mods there 12:15 Calinou (you can also "git clone" them directly, for easy updating) 12:16 Laster on that page stands that it depends on the version you have 12:16 Laster *too 12:16 Calinou Laster: if you installed Minetest through compiling without RUN_IN_PLACE or with a package, it's almost certainly in ~/.minetest/mods 12:16 Calinou you may have to create the folder 12:16 Calinou (mkdir -p ~/.minetest/mods) 12:17 T4im if you mean the "As of 0.4.7,", that's still the case, what is explained there 12:19 Laster Thank you Calinou! 12:19 Laster I think this wil worl! 12:20 Laster *work 12:25 Nosrick What's wrong with this line? I'm getting an "attempt to call table value" error: for key, value in ipairs(momtest.on_punch_callbacks) do 12:26 Nosrick Actually, I don't think it's that line... 12:26 Nosrick I think it's where I assign the table's value (supposed to be a function) to a local, and try to call it. 12:27 Krock yes, must be another line because that looks fine 12:29 T4im momtest? O_o 12:30 Krock dadtest 12:31 * T4im imagines a game for becoming moms to train caring for children by having an entity that cries all the time and needs feeding... wait.. why do you want to override on_punch again? 12:31 * T4im hides 12:33 * Krock looks worried at T4im and tells him that his imagination creates too many strange elements 12:33 Nosrick Oh, Master of Magic. 12:33 Nosrick Not uh... moms. 12:34 T4im ah 12:34 Nosrick But there's another idea for a mod... 12:34 Nosrick BABY PUNCHING! 12:34 Nosrick As a frustrated mother 12:34 Nosrick Wow, I think I'll stop now. That got really grim really fast. 12:35 Krock For the case there's a horrible musical performed by strange chicken then you could throw tomatoes and babies at them 12:35 Krock (if it was a normal musical you'd use tomatoes and eggs) 12:36 T4im x) thanks for the explanation 13:19 Nosrick Why is minetest crashing and telling me that get_hp() is a nil value? 13:20 rubenwardy try gethp? 13:20 rubenwardy The api is a little inconsistent 13:20 thePalindrome Also make sure you're operating on a player 13:20 rubenwardy no, it's get_Hp 13:20 thePalindrome Has the minetest bug where scripts can crash the game been fixed yet? 13:20 rubenwardy and it works on lua entities as well 13:21 Krock thePalindrome, that's not one bug. 13:22 Krock there are many ways to crash the game, even without using the API functions 13:22 shamoanjac trying to call a nil value usually results in the brown screen of death 13:23 thePalindrome iirc the bug that was most annoying was when you had a variable of a different type than you thought 13:23 shamoanjac I had many of those when I still didn't understand well the difference between foo:bar() and foo.bar() 13:23 thePalindrome I do remember it involved type mismatches 13:23 thePalindrome is there even a difference? 13:23 shamoanjac yeah like when you got a "player" argument to a function 13:23 shamoanjac so you try to call getpos() 13:23 T4im foo:bar() == foo.bar(foo) 13:24 shamoanjac but it turns out it was a player name, not a player ObjectRef 13:24 thePalindrome Ah, I see 13:24 T4im foo is then accessable as "self" 13:24 thePalindrome #1794 is what I was thinking of 13:24 T4im that is, unless you define it with another name when defining it with "." 13:25 T4im if you define it with : it defaults to self 13:25 shamoanjac tfw I've rewritten 99% of agrecascino's work 13:25 shamoanjac I feel somewhat bad 13:26 shamoanjac not to talk about Sapier's original work which has pretty much disappeared 13:27 * thePalindrome works on too many things at once 13:28 shamoanjac 9>You can't make a faction server right now as there are no proper mods out there 13:28 shamoanjac ha ha ha! 13:28 shamoanjac now with my rewrite it's usable 13:28 shamoanjac and extendible 13:28 shamoanjac with groups/permissions settings 13:29 rubenwardy ctf_pvp_engine could be used to make a faction mod, with some slight modifications ;) 13:29 shamoanjac rubenwardy, if you want to use what I've written, feel free to take a look at github.com/shamoanjac/factions 13:29 rubenwardy although I don't recommend it, it's an old project which has some code weirdness 13:30 shamoanjac or agrecascino's repo which is the original (but right now hasn't accepted my latest PR) 13:31 rubenwardy Does your factions mod have diplomacy? Or are factions always at war? https://www.dropbox.com/s/5msi3fxyxkpjxpg/CTF_team_gui_diplo.png?dl=1 13:31 shamoanjac there are alliances and enemies 13:31 shamoanjac I haven't implemented the commands to set them though, but the functions are there 13:31 shamoanjac there are about a hundred TODOs which are merely "add message here" 13:32 shamoanjac registering a command is super easy, though 13:33 shamoanjac http://pastebin.com/RGYk2sU8 13:33 shamoanjac uh I've forgot to remove a part of the code 13:34 shamoanjac namely the 'if cmd == "version" then' part 13:35 shamoanjac you can also make functions available only to certain privileges and faction permissions, and specify their format, to make sure the on_success() will be always called on a correctly formatted command 13:36 rubenwardy have you seen chatcmdbuilder? http://rubenwardy.com/minetest_modding_book/chapters/chat_complex.html 13:36 rubenwardy You can use patterns like cmd:sub("join :username :teamname", function(name, username, teamname) 13:46 Nosrick So apparently it isn't get_Hp() 13:46 Nosrick Or get_hp() 13:47 rubenwardy http://rubenwardy.com/minetest_modding_book/lua_api.html#get_hp 13:48 rubenwardy lua_api.txt does say it is 13:48 Nosrick Yeah, I'm getting a nil value error on it. 13:49 rubenwardy please can you share your code? 13:49 Nosrick target:set_hp(target:get_Hp() - damage) 13:49 rubenwardy You're probably doing something wrong :P 13:49 Nosrick set_hp() calls fine, apparently 13:49 rubenwardy target:set_hp(target:get_hp() - damage) 13:49 rubenwardy where do you get target from? 13:51 Nosrick target comes from an on_punch callback 13:51 Nosrick So it's the self from there 13:51 rubenwardy entity or node? 13:51 Nosrick Entity 13:53 rubenwardy you want self.object:get_hp() 13:54 rubenwardy where self is from on_punch = function(self, hitter) 13:55 Nosrick Should I change it to this, then? target.object:set_hp(target.object:get_hp() - damage) 13:55 rubenwardy probably 13:56 rubenwardy the reason get_hp threw an error and not set_hp was because get_hp was run first 13:57 rubenwardy it goes: 1) get_hp 2) damage 3) minus 4) set_hp 13:57 Nosrick Ah, I see. 13:57 Nosrick It works now! 13:57 Nosrick Sort of. 13:57 Nosrick My damage calculations are wrong, but it works! 14:19 shamoanjac no rubenwardy, I hadn't seent it 14:22 rubenwardy you don't need to use that structure 14:22 rubenwardy you could do local cmd = ChatCmdBuilder("foo", function() end) 14:22 rubenwardy you could do local cmd = ChatCmdBuilder.new("foo", function() end) 14:23 rubenwardy cmd:sub("bar :name", function(name, param_name) print(name .. " ran /foo bar " .. param_name) end) 14:33 shamoanjac sounds good 14:33 shamoanjac however I've already rewritten all the functions and it took me a couple hoursd 14:33 shamoanjac I'm not sure I want to spend another two hours re-writing the function declarations :P 14:36 Nosrick Why does my mob's on_punch callback go back to default on re-entering a world? 14:38 est because thats the way its designed 14:38 est you have to load it from static data 14:39 Nosrick Ah, crap. That's handled by the API. 14:45 Nosrick Odd, there's nothing in the API that forces the on_punch back to its regular state. 14:48 IhrFussel "Invalid command" message is hard coded right? 14:49 Nosrick This has been a huge pain in the ass. 14:52 shamoanjac is there a reason a steel door couldn't be mined with a regular pickaxe? 14:56 Darkside_ i don't know, probly same reason as for mese ore you need a steel pickaxe for that ;0 14:56 shamoanjac yeah it was that 14:57 IhrFussel I think I can prevent "Invalid command" by changing return false to return true inside chat command handler when cmd_def is not defined 14:57 shamoanjac any tips for optimized self-compiled Minetest? 15:00 thePalindrome -O3 if you really want to 15:05 burli How can I reduce the default crafting filed to 2x2? 15:06 Darkside_ edit formspec code, im just a modding noobie ;) 15:07 thePalindrome Yeah, you'd have to overwrite the default crafting screen 15:07 thePalindrome Which would make it incompatible with unified inventory et al 15:07 Darkside_ and craft recipes as wel 15:08 burli any example how to do? 15:08 est http://rubenwardy.com/minetest_modding_book/lua_api.html#minecraft-like-player-inventory 15:09 burli I'll try, thx 15:10 shamoanjac thePalindrome, I should put -O3 in the calls to GCC, right? 15:10 burli just to make sure: is this compatible with minetest 0.4.14? 15:11 shamoanjac no way to pass them on cmake or make? 15:11 thePalindrome You'd have to edit the makefile to do that, and -O3 *should* be comptabile, but sometimes O3 causes issues 15:11 shamoanjac ok 15:12 shamoanjac for some reason when I compiled the 0.4.14 it made Minetest unable to run fullscreen at >10FPS 15:12 shamoanjac when it could handle it at 25FPS before 15:13 shamoanjac (with more render distance) 15:13 thePalindrome iirc 0.4.14 added some new shader things, it's possible that some of the shaders were forced to use software rendering 15:14 thePalindrome O3 isn't going to help with graphical performance :P 15:15 shamoanjac no but I figured it could help with other parts 15:16 shamoanjac not sure how I can make the shaders to use hardware rendering instead of software though 15:16 shamoanjac my graphics card isn't even that bad 15:18 shamoanjac well, I've just recompiled and now it runs smooth again 15:20 thePalindrome Huh, weird. What's your driver/opengl support? 15:22 shamoanjac Nouveau, and I can handle at least OpenGL 3.3 15:22 shamoanjac quite sure I can run OpenGL 4 too 15:26 thePalindrome Hmmm 15:30 thePalindrome afaik you either have 3.3 support or 4.3 support, depending on the driver. Nouveau can be a bit finicky, because nvidia made it so 15:36 shamoanjac is there really no method to get the world spawn position? 15:37 thePalindrome Kindof 15:38 thePalindrome iirc It's about 0,0,0 but with random offests 15:38 thePalindrome It's on a per player basis 15:38 shamoanjac ah, well 15:41 thePalindrome You might be able to, but it'd be a player method 15:41 shamoanjac i have Ctrl+F "spawn" in lua_api.txt and I found nothing 15:41 shamoanjac not for players, not worldwide 15:43 thePalindrome hmm 15:44 Darkside_ should be somewhere in the mapgen sourcode if you mean trying to find were creation of the world starts i guess 0,0,0 at players pos at first login 15:46 Darkside_ i don't know, just put it up there let the genius ones reply on it to correct it ;) 15:46 burli est, looks like this 2x2 crafting patch doesn't work with 0.4.14. Thx anyway 15:47 Krock there's a mod that changes your inventory grid size 15:47 burli that would be cool 15:55 burli Krock, do you have a link or a name? Can't find it 15:56 burli And I also look for a simple workbench mod without any fancy stuff 15:57 Krock you're looking for two times the same mod 15:57 rubenwardy !mod workbench 15:57 MinetestBot rubenwardy: Workbench - 3x3 4x4 5x5 [workbench] by cornernote - https://forum.minetest.net/viewtopic.php?t=3275 15:57 rubenwardy https://forum.minetest.net/viewtopic.php?t=14085 15:57 rubenwardy use that last link, burli ^^ 15:58 rubenwardy oh wait, different thing 15:58 T4im https://github.com/minetest-mods/workbench ? 15:58 burli I know the xdecor workbench. But I dont need the cut feature or anything 15:59 Krock !crafting 15:59 Krock !mod crafting 15:59 MinetestBot Krock: Mini Trees (now has seeds and crafting!) [minitrees] by 12Me21 - https://forum.minetest.net/viewtopic.php?t=5387 15:59 Krock noo 15:59 Krock !mod crafting] 15:59 MinetestBot Krock: Crafting [crafting] by BlockMen - https://forum.minetest.net/viewtopic.php?t=5641 15:59 Krock this one changes it to 2x2 15:59 rubenwardy your mod search really should prioritise the basename over appearance in the title 15:59 T4im !mod coffee 15:59 MinetestBot T4im: Could not find anything. 16:00 T4im :( 16:00 T4im still no coffee mod 16:00 rubenwardy T4im, https://github.com/rubenwardy/coffee 16:00 Krock rubenwardy, yeah.. 16:00 T4im oh 16:00 T4im <3 16:00 rubenwardy currently only espressos and lattes 16:00 T4im with kopi luwak crafted out of nyancat + coffee? :3 16:01 Krock DO NOT USE nyancats in crafting recipes! 16:01 Krock poor cats 16:01 T4im well maybe not crafted, fed to them then 16:01 rubenwardy food has nyancat juice 16:01 T4im kopi luwaki is that coffee where the beans were fermented by cats 16:02 T4im luwak* 16:02 T4im very expensive coffee 16:02 Krock eeks 16:02 T4im ~50€ per cup 16:02 rubenwardy so: milk in furnace gives steamed milk, coffee bean in espresso machine gives espresso, 2xEspresso + milk + drinking glass = latte 16:02 T4im > €500 per KG if you buy it in bulk 16:03 shamoanjac that's the price of an average glass of water in Paris 16:03 shamoanjac :P 16:03 T4im heh 16:03 rubenwardy I really should finish and release that coffee mod 16:03 Krock where can I buy Dihydrogen-Monoxide? 16:03 * T4im is waiting for one since a few years 16:03 shamoanjac does the coffee do something? 16:04 burli Krock, I know that mod, but doesn't work with 0.4.14 16:04 Void7 Krock: you really want to buy the #1 killer of sharks? 16:04 burli afk 16:04 T4im it's coffee, drink it, shamoanjac :p 16:04 shamoanjac Krock, Dihydrogen-Monoxide is toxic 16:04 shamoanjac look at this page 16:04 Krock Void7, yes but I want to use it to kill people 16:04 shamoanjac there's a government conspiracy 16:04 Void7 Krock: you can probably find it in every paper cup 16:04 shamoanjac http://www.dhmo.org/facts.html 16:04 Calinou "Easy conspiracies to shine in society" 16:04 Krock they already sell it in the subway bread but I don't want to extrct it from there 16:05 shamoanjac Monsanto keeps patents on the production of DHMO 16:05 Void7 "* DHMO is a major component of acid rain." 16:05 Krock Thousands of people die each year - caused by DHMO 16:05 Void7 "* Often associated with killer cyclones" 16:06 Void7 "* [DHMO is used] in community swimming pools to maintain chemical balance" 16:06 shamoanjac Brazilian farmers are found to be at increased risks of suffering several acute diseases due to exposure to DHMO 16:06 shamoanjac and compounds that contain DHMO 16:06 shamoanjac is this what you want your coffee to be? 16:06 shamoanjac a man-killer? 16:07 Void7 "...that athletes regularly ingest large quantities of DHMO in an effort to gain a competitive edge over an opponent." 16:07 shamoanjac http://bandhmo.org/ 16:08 shamoanjac 3>Dihydrogen monoxide (DHMO) is colorless, odorless, tasteless, and sickens over 4 billion and kills over 2 million people every year 16:08 Void7 "the chemical separation of dihydrogenoxide from the hazardous oxygendihydride is extremely difficult." 16:08 shamoanjac 3>Ahmadinejad: A rain of DHMO if Israel attacks nuclear facilities 16:09 Krock DHMO was also found as a cause for the nuclear power station in fukushima 16:10 Void7 >3Dihydrogen Monoxide has been found in our rivers, lakes, oceans and streams 16:10 Void7 but srsly why does this discussion exist 16:10 Void7 we all know that DHMO is very toxic/deadly 16:10 Krock but that's no wonder because DHMO is another waste product of nuclear power stations 16:11 T4im why do you guys copy an age old gag here? people can read the website and the wikipedia article etc without irc :P 16:11 Krock T4im, what are you talking about. this is serious 16:11 T4im no need to paste every line though 16:11 Krock http://www.overclockers.com.au/pic.php?pic=images/newspics/29jul16/32.jpg 16:11 shamoanjac looks like T4im is part of the globalist Monsanto-Rotschild conspiracy 16:12 Krock Oh my god the illuminati are back 16:12 shamoanjac the trails of planes contain DHMO 16:12 shamoanjac lol 16:12 * T4im lives off that stuff 16:13 Darkside_ lol so this is what people do these days? back in the day people went to church on sunday ;D 16:13 Krock but not at 6 pm 16:13 shamoanjac vesper mass 16:13 T4im there are plenty of minetest churches in several worlds 16:13 shamoanjac well that's at 5pm 16:13 T4im you can go virutally 16:13 T4im virtually* 16:14 Krock meat the virual godot 16:14 Krock *meet god 16:24 rubenwardy T4im, https://forum.minetest.net/viewtopic.php?f=9&t=15321 16:24 rubenwardy !titke 16:24 rubenwardy !title 16:24 MinetestBot rubenwardy: [Mod] Coffee [0.1][coffee] - work in progress / prototype - Minetest Forums 16:28 Darkside_ im on youtube looking for minecraft griefing Team Avolition the episode in wich Storm_Surge drowns and dies in church before they grief the server :D 16:29 T4im rubenwardy: maybe support the coffee maker in homedecor via item override? .D 16:29 Calinou it's cool we don't have griefing teams on Minetest :P 16:30 rubenwardy T4im, didn't know such a thing existed. Will investigate at some point 16:33 Krock Calinou, do we have builder teams in Minetest? 16:36 Calinou not sure :p 16:38 Darkside_ lol that minecraft suffocating sound should be added to mt ;) 16:39 Krock I doubt it has a license 16:40 Darkside_ hmm i can buy a microphone and recreate the sound on my pc lol 16:43 Nosrick What table do I need to access to get my hands on the registered entities? 16:43 Nosrick minetest.luaentities? 16:43 Nosrick No wait, it's minetest.registered_entities. 16:44 Krock you can find these tables in builtin/game/register.lua for the case your lua_api.txt file is corrupted and you have no internet connection to check it online 16:47 * Krock gives xSmurf a white hat 16:49 Nosrick Oh, I didn't realise I had the lua source available. Which makes sense, now that I think about it. 16:54 Darkside_ :) 17:01 Nosrick Is anyone familiar with the mobs-redo API? 17:08 Nosrick Also, it looks like my damage calculations are wrong, because the tool capabilities passed in are always empty. 17:23 Nosrick Any idea why this wouldn't do any operations? 17:23 Nosrick for key, value in ipairs(toolCapabilities.damage_groups) do 17:23 Nosrick print("Damage before calculations: " .. value) 17:23 Nosrick damage = damage + (value * punchTimePercent * (target.armor_groups[key] / 100)) 17:23 Nosrick end 17:23 T4im you know about github gists? :P 17:23 Nosrick I... do not. 17:24 T4im https://gist.github.com 17:24 Nosrick Sorry, I'm not a smart man. 17:24 T4im but i guess damage_groups is not a list, is it? 17:25 shamoanjac Nosrick, I think you have to use pairs() instead of ipairs() 17:25 Nosrick What's the difference? 17:25 shamoanjac for i in ipairs(list) do 17:25 shamoanjac foo(list[i]) 17:25 shamoanjac end 17:25 shamoanjac basically, ipairs gives you a list of indexes 17:26 Nosrick Ah, I see. 17:26 shamoanjac https://stackoverflow.com/questions/8955085/should-i-use-ipairs-or-a-for-loop 17:26 T4im it also gives you the entry as second parameter 17:26 Nosrick Changing it to pairs causes it to do stuff. It crashes now! 17:26 Nosrick Which is a start. 17:26 Nosrick Thanks, guys. 17:30 Nosrick Why would object.get_armor_groups() fail as a nil value? 17:30 T4im ipairs will run all entries numerically like 1,2,3,4... until nil in order (so if you have a hole, it won't continue numeric indexes after that) 17:30 Nosrick Oh, I see. 17:30 Nosrick But pairs takes all of them? 17:30 T4im pairs will iterate through key-value pairs, but does not guarantee order 17:30 shamoanjac object:get_armor_groups() 17:30 Nosrick (And I'm really sorry for all the questions, I promise my mod will be worth it) 17:31 shamoanjac try that 17:31 Nosrick I have; it still fails. 17:31 T4im pairs will indeed iterate through everything, yea 17:31 shamoanjac don't worry Nosrick, I've been asking every single line of code in here for the week before my banners mod was released lel 17:32 shamoanjac (which was before yesterday) 17:32 GNU[BDC] \0/ 17:32 T4im hey, any of you guys know sources for good open source 80s synth tracks? tron-style, stranger things etc? 17:33 Nosrick Can you make music? 17:33 * T4im cannot 17:33 Nosrick Because if you can, use LMMS. It's got a great bunch of cheesy 80s style synths. 17:33 Nosrick Ah, damn. 17:33 T4im :( 17:33 Nosrick Learn! 17:33 T4im heh 17:33 Nosrick I've been learning a bit of music theory here and there for the past few weeks. 17:34 Nosrick And I'm tone deaf. 17:34 Nosrick So if I can do it, so can you. ;) 17:35 Nosrick Krock! 17:35 Krock Krock! 17:35 Calinou Krock! 17:36 Nosrick Let's hope he has sound enabled. 17:36 Nosrick >shouting his own name 17:36 Nosrick I didn't even notice lol 17:36 Krock Sound is, but no message alert sound set 17:36 Nosrick Probably for that exact reason? :P 17:37 Krock no, it's easier to delay a discussion when I get no sound alert 17:37 Krock this is IRC, so it can wait for smoe minutes if I don't want to answer 17:37 Krock *some 17:38 Nosrick That's true. 17:40 agrecascino shamoanjac, hey 17:40 T4im you are not really running your irc client as root, are you? :o 17:41 agrecascino T4im, hell yeah i am 17:41 T4im hey, there are open unprotected company VNC's out there running their desktop on root, so i am ready to believe everything :P 17:42 agrecascino T4im, my vnc server has now auth 17:42 agrecascino but has lightdm running 17:42 shamoanjac hey agrecascino 17:42 * T4im should take a look at vnc roulette again, that was fun, sad, but fun 17:42 shamoanjac I've reworked the commands system to what I said yesterday 17:42 shamoanjac I'm fixing bugs rn\ 17:42 agrecascino ? 17:42 agrecascino oh 17:42 Nosrick Apparently get_armor_groups() takes an argument of userdata? 17:43 shamoanjac http://pastebin.com/RGYk2sU8 17:43 shamoanjac this is what it looks like, except I had forgotten to remove the inner if in that one 17:43 Krock "This page is no longer available. It has either expired, been removed by its creator, or removed by one of the Pastebin staff." 17:43 agrecascino shamoanjac, i feel worthless 17:43 T4im use gists :P 17:43 shamoanjac ah yeah I set the pastebin to last for an hour 17:44 T4im you can remove gists too, but at least until you do, they are versioned and syntax highlighted 17:44 Nosrick Versioned 17:44 agrecascino use susepaste 17:44 Nosrick Are you serious? 17:44 shamoanjac agrecascino, there are a hundred TODOs for you to complete 17:44 T4im yea, until you delete them 17:44 agrecascino http://paste.opensuse.org 17:44 T4im they are like miniature-git repos 17:44 shamoanjac which are merely error messages 17:44 shamoanjac but still 17:45 Nosrick MY DAMAGE CALCULATIONS WORK! 17:45 Nosrick WOOHOO 17:46 Nosrick Now to see if Heroism boosts damage. 17:46 agrecascino Nosrick, what does your framework do? 17:46 Nosrick Damage boosts and stuff 17:47 Nosrick Except it doesn't seem to want to work. 18:04 shamoanjac if #self.global_privileges > 0 then 18:05 shamoanjac what's wrong with this ^ 18:05 shamoanjac why does it complain about it being nil 18:05 shamoanjac when it's {} 18:05 shamoanjac pls don't tell me {} == nil 18:05 shamoanjac pls don't tell me #{} ~= 0 18:05 shamoanjac please Lua don't be like that 18:07 shamoanjac holy fucking shit 18:07 shamoanjac why are empty table nil values? 18:07 Nosrick It is, isn't it? 18:07 shamoanjac what's the fucking point 18:08 shamoanjac it just makes my life harder 18:08 shamoanjac it forces me to add indentation levels 18:08 KaadmY because "lua is EASY" 18:08 KaadmY which is also why there isn't a continue keyword 18:08 KaadmY because "easy" 18:08 shamoanjac is {} == nil 18:08 Nosrick There isn't? 18:08 shamoanjac for real??? 18:08 KaadmY likely 18:08 KaadmY Nosrick: nope 18:09 Nosrick wat 18:09 Nosrick WHY LUA 18:09 Nosrick WHY 18:09 KaadmY http://lua-users.org/wiki/ContinueProposal 18:09 shamoanjac the lack of continue is annoying 18:09 shamoanjac but the design decision of {} == nil 18:09 shamoanjac that's 18:09 shamoanjac fucking 18:09 shamoanjac retarded 18:09 Nosrick Not half, eh? 18:10 shamoanjac now what do I do? add yet another check and yet another indentation level? 18:12 Krock great. They won't add "continue" instead they add the spaghetti-keyword "goto" 18:13 shamoanjac local language ruins everything 18:13 Nosrick Why is table.insert doing nothing? 18:14 shamoanjac NIL VALUES LOL 18:14 shamoanjac probably because it doesn't get called 18:14 Nosrick But I'm calling it without any conditions. 18:14 shamoanjac uh 18:14 shamoanjac idk 18:15 T4im Nosrick: insert like remove only works on the sequential numeric part of the table 18:15 T4im and like ipairs 18:15 Nosrick Are you fucking serious 18:15 T4im i am cobbly serious 18:15 Nosrick I just want to put a value into a table and find it with pairs later. 18:16 T4im you can do that, as long as you don't assign it to a key 18:16 T4im if you assign it to a key, then forget about insert remove and ipair 18:16 T4im and use the key to access it 18:17 T4im either or :) 18:17 T4im if that's not the problem, show the code, maybe its something else 18:17 T4im i just assumed, since you already had troubles with that :P 18:17 Nosrick table.insert(momtest.on_punch_callbacks, functionToRegister) 18:17 Nosrick This is literally it. 18:18 Nosrick When I later iterate over it with pairs, I get nothing! 18:18 T4im and on_punc_callbacks is a { function()end, function()end, function()end } structure? 18:18 Nosrick I believe so, yes. 18:18 T4im or a { name = function()end } one? 18:18 Nosrick I think it's a function()end one. 18:19 T4im then insert should work 18:19 Nosrick But it doesn't. :( 18:19 T4im as will momtest.on_punch_callbacks[#momtest.on_punch_callbacks + 1] = functionToRegister btw 18:20 Nosrick I'll try that. 18:20 T4im the problem is likely somewhere else 18:20 T4im functionToRegister being nil for example 18:24 Nosrick I don't think it can be. The function is a globally defined one. 18:27 Nosrick I also just tried it with an anonymous function, but that didn't work either. 18:27 Nosrick Apparently it's nil? 18:27 Nosrick How can that be? 18:29 shamoanjac isn't there color in Minetest chat? 18:29 Krock restricted to mods AFAIK 18:30 T4im enough support to color chatcommand outputs 18:30 T4im and formspecs 18:31 T4im no console output yet :( 18:32 Nosrick Wait, can't you just use print()? 18:32 Nosrick That's what I've been doing so far. 18:32 T4im print is just for debug output 18:33 T4im and i meant no color for console output 18:33 Nosrick Ah, right. 18:33 T4im you can do console output with io.write 18:33 T4im stdout that is 18:33 * thePalindrome can do color in stdout 18:33 thePalindrome Bow to the penguin! 18:33 T4im but not with the existing color functions 18:33 Nosrick So why would the function I pass into a table be nil? 18:34 thePalindrome Are you executing the function? 18:34 thePalindrome func is the function object, func() is the return of the function 18:34 Nosrick No, just trying to register it as an on_punch callback. 18:34 T4im Nosrick: without seeing the code we can just guess 18:35 Nosrick https://gist.github.com/Nosrick/7aa9848c8cbef364e3a608dc06c7f667 18:35 KaadmY \0332J\033[0;0H\033[31;01mOf course I can use colors, such as \033[34mblue\033[31;01m in stdout text!\033[00m 18:36 shamoanjac love ur mom 18:36 shamoanjac you should really change the name lel 18:36 T4im Nosrick: "." and ":" ;) 18:37 T4im if you define a function with ":" the first parameter is always "self" 18:37 T4im so you assign the function to self and check a nil parameter 18:37 T4im if you call a function with : then you pass the table to the first parameter 18:38 Nosrick I'm still pretty new to Lua. Which one do I change? 18:39 T4im well, you can do either, but in this case I'd recommend just change line 1 to a dot 18:39 T4im since you don't need "momtest" as "self" 18:40 T4im ":" becomes very practically once you started with lua metatables :D 18:40 shamoanjac heh 18:40 Nosrick Ah, I see! 18:41 T4im but "function momtest:registerOnPunch(functionToRegister)" is identical "function momtest.registerOnPunch(self, functionToRegister)" 18:41 T4im to see what the problem is :) 18:43 Nosrick I think that's it working. 18:44 T4im hm btw, i recommend adding a .gitignore that ignores the eclipse .project etc files 18:44 T4im since many entries are specific to your setup 18:44 T4im like "E:/minetest-0.4.14/mods/minetest_playereffects" 18:46 T4im here, you can take this one https://raw.githubusercontent.com/minetest-mods/xdecor/master/.gitignore 18:46 Nosrick Thank you. :) 18:50 Nosrick Okay, so I'm passing time_from_last_punch into a function, and it says it's a table. 18:52 Krock cargocasting!!! 18:52 Nosrick Cargocasting? 18:52 Krock when you copy code and don't understand what it actually does because it's magical 18:53 T4im culting* 18:53 Krock oops 18:53 Nosrick I didn't copy it, though, that's the strangest thing. 18:53 Krock typecast and cargocult 18:54 shamoanjac 3if 6infaction3 and not 6player_faction 3then 18:54 shamoanjac if infaction = true 18:54 shamoanjac and player_faction = nil 18:54 shamoanjac why the fuck doesn't this run 18:54 Nosrick It's taking the time_from_last_punch from the vanilla on_punch function, and passing it into my function. It then becomes a table. 18:54 Krock * == 18:54 T4im Nosrick: it sounds like you :/. switched something again 18:55 T4im if you **call** something with : then the table in front of it is passed as first argument 18:55 shamoanjac no Krock it's not that 18:55 shamoanjac the only actual line is the one I've written with colors 18:55 Nosrick Oh, bloody buggery, that's exactly it, I think. 18:55 T4im if you **define** something with : then it sets "self" as first parameter expecting something to call it with ":" to get the table as "self 18:55 Nosrick Because the parameter BEFORE the last parameter is a TABLE! 18:56 T4im you can mix : and . but then you have to handle the first parameter explicitly where you used "." 18:56 Nosrick Haha, that was it! 18:56 shamoanjac ah right, it's self.infaction 18:56 Nosrick I swear, I'll get used to this stuff eventually. 18:56 T4im for the sake of argument, let's assume "" in lua is of type "strings" (not quite correct, but close enough) 18:57 T4im strings.rep("b", 3) -> bbb 18:57 T4im or 18:57 T4im "b":rep(3) -> bbb 18:57 Nosrick Ah, I see. 18:57 Nosrick Thank you! 18:57 Krock shouldn't it be ("b"):rep(3) ? 18:57 T4im oops 18:57 T4im yes 18:58 T4im it's essentially doing this: ("b").rep("b", 3) 18:58 T4im and because enything you call on ("b") is directed to strings, that works 19:00 Hijiri shamoanjac: {} is not nil 19:00 Hijiri you are getting an error because # has higher precedence than . (I think) 19:01 shamoanjac that makes more sense 19:01 shamoanjac trying... 19:01 Hijiri tables are identified with their location, as I mentioned during our argument 19:02 Hijiri so actually every fresh {} will be unequal from each other 19:02 T4im yea, new identity 19:02 Hijiri you can (ab)use it to make short-lived unique identifiers 19:02 T4im it's mostly (ab)used to reserve memory unintentionally until minetest is closed though 19:03 T4im ;) 19:03 Nosrick Well, this is irritating. 19:03 Nosrick Only Players have the is_player() function. 19:03 Nosrick So I can't get call it on mobs. 19:03 Hijiri there is is_player on all SAOs 19:03 Hijiri it would be pointless if they were only on players 19:04 Hijiri more accurately there is is_player on all ObjRefs 19:04 Hijiri ObjectRefs 19:05 Nosrick I tried that, but got a nil value. 19:05 T4im Nosrick: ":" for calling things on ObjecrRefs 19:05 thePalindrome is_player() returns nil for objectrefs 19:05 T4im x) 19:06 T4im nosrick: use ":" for calling things on objects, and "." for namespaces 19:06 Nosrick Ah, thank you. 19:06 Nosrick "Attempt to call 'is_player' (a nil value" 19:06 Nosrick Why might that be? 19:07 Hijiri I don't know, paste your code 19:07 T4im are you calling it on the luaentity instead of the objectref? 19:07 Hijiri (on a paste site) 19:07 T4im you might have to do entity.object:is_player() 19:07 Nosrick That's probably it. 19:07 Nosrick As it's a self reference. 19:09 Hijiri the self in entity callbacks is always a luaentity 19:09 Nosrick Ah, okay. 19:09 Nosrick Well, doing .object worked, either way. 19:09 Nosrick Heroism now triggers! 19:10 Nosrick Bonus damage, ahoy! 19:10 T4im and if you want to make that proper log msg's look into minetest.log() 19:10 T4im :) 19:10 Nosrick Nah, I'm just debugging. 19:18 agaran something like table.empty() would be neat.. 19:18 agaran i mean to check if table is empty 19:19 T4im #mytable? 19:19 T4im and next(mytable) 19:19 T4im depending what type of table 19:19 T4im i.e. that already exists :P 19:19 agaran hmm.. returns 0 when there are no elements.. oh, I did not even know about next() 19:19 T4im next is for key-balue pairs 19:20 T4im essentialyl what pairs() uses 19:20 agaran I mostly use pairs (or ipairs) 19:20 rubenwardy wouldn't next() work on either? 19:20 T4im it returns nil when there are no further left or the, well, next element (no guarantee of order) 19:20 T4im hm 19:20 T4im yea 19:20 rubenwardy as arrays are just dictionaries with numeric indice 19:20 rubenwardy +s 19:20 T4im but if it's just a list, then # would probably be faster 19:21 T4im since it's just a lookup of an index variable 19:21 T4im not quite sure how next() handles it internally 19:21 rubenwardy true 19:21 Hijiri if next() is constant time it could be faster asymptotically 19:21 Hijiri since # takes log time to find the highest index 19:21 T4im hm? 19:22 Hijiri I think it uses an exponential search 19:22 T4im afaik # just looks up an index variable and doesn't search 19:22 rubenwardy # could be constant time if the size is prestored 19:22 T4im that variable is also used to assign the next entry for example 19:22 Hijiri I thought it wasn't prestored 19:22 T4im i think you could even access it before as "n" 19:22 T4im i.e mytable.n x) 19:23 Hijiri before, as in not anymore? 19:23 agaran now you are speaking about lua magic, right? 19:23 T4im i think it was deprecated, but let me look when, since 5.1. isn't so new either, everythign is possibel x) 19:23 Hijiri lua size operator has strange behavior on tables with holes, because of its search algorithm 19:24 shamoanjac how can Lua complain about a "global variable" being nil if it's clearly complaining about self. ? 19:24 Hijiri shamoanjac: I think calls using : will search global variables if indexing the table finds nothing 19:24 Hijiri maybe, I don't remember 19:24 T4im ah, here, 5.0 removed the reference 19:24 shamoanjac uh 19:24 shamoanjac but my table does exist 19:25 T4im so the index is accessable only by "#" 19:25 Hijiri http://www.freelists.org/post/luajit/table-is-not-O1,9 19:25 shamoanjac invited_players = {} 19:25 shamoanjac it's right there 19:25 shamoanjac reeeeeeeeee 19:25 Hijiri T4im: it's not an index, # has to compute the length 19:25 T4im wouldn't that mean they removed the index entirely? 19:25 T4im why would they do that :o 19:25 Hijiri maybe it's a different index 19:25 Hijiri for the total number of keys, rather than "array length" 19:26 Hijiri I don't know exactly how the table is represented so I don't know whether it would make sense to have that 19:27 T4im well, since insert, remove, ipairs all stop on a hole anyway, having a field increase or reduce on removal/insertion and # return wouldn't be the craziest idea 19:28 T4im i don't think that # counts pass holes either, does it? 19:28 Hijiri # is undefined for arrays with holes 19:29 T4im past* 19:29 Hijiri if you use exponential search, the search might find some non-nil value that is after some holes 19:29 agaran so if array is list of nets, then if one net gets empty I should not remove it but instead assign empty array there, to preserve slot but with empty content? 19:29 Hijiri It looks like the array portion has a preallocated amount though, so it probably uses ordinary binary search because it already has bounds 19:29 Hijiri that could still find the wrong length if there are holes though 19:30 Hijiri agaran: you could keep track of size yourself 19:30 Hijiri or keep the list dense 19:30 T4im actually it's defined: "The length of a table t is defined to be any integer index n such that t[n] is not nil and t[n+1] is nil" 19:30 Hijiri oh 19:30 agaran Hijiri: it is not problem with size in that case, but that I use ipairs() extensivelly.. so I want to keep them dense 19:30 Hijiri well it's not fully-defined 19:31 Hijiri but it's more defined than I implied 19:31 T4im well there are more details where that stands 19:31 Hijiri agaran: you could not rely on ipairs as much 19:31 agaran Hijiri: true, but that need to get some better idea as an replacement 19:32 Hijiri If it's a map from network IDs to network infos, you could just use pairs 19:32 T4im no preallocation, Hijiri, but i think it indeed allocates for the array and the hash part individually, but not 100% sure about htat 19:32 T4im it doubles the allocation each time it runs out 19:32 Hijiri T4im: this SO answer: https://stackoverflow.com/questions/23590885/why-does-luas-length-operator-return-unexpected-values says it preallocates the next power of 2 19:32 Hijiri yes 19:33 Hijiri agaran: If it is a map from IDs to infos you also don't want to compact the list, because the IDs will change 19:33 Hijiri I don't know if that is how it is set up though 19:34 agaran Hijiri: yep.. that too.. need to think how to do it in good way 19:34 Hijiri you can have a separate map mapping IDs to actual indices in the dense list 19:34 Hijiri then when you move things around you can change that 19:34 T4im maybe this is another terminology problem, but wouldn't that be post allocation? I'd expect preallocation to be what you can do on the C side, "give me a table with 10 allocated entries" kind of thing 19:35 T4im which is not exposed to lua, interestingly, although the functionality exists 19:35 agaran basically I have list of nets, using index as netnumber that is kept in metadata of nodes that belong to that.. hmm.. two lists, but then searching for certain net-number may be slowish a bit? 19:35 Hijiri T4im: I don't think preallocation is a technical term, but if we take its meaning as "allocating beforehand", then it is preallocating 2^whatever spaces 19:36 Hijiri Would it not be preallocation if it was C saying to "give me a table with 2^whatever entries"? 19:36 Hijiri (in some helper functions) 19:36 agaran maybe I just try to keep current state, and if problems arise I'll try to work with them, because now I may get stuck in premature optimization.. 19:36 T4im lua_createtable allows you to allocate more than 1 for an empty table, that's what i meant with preallocation 19:36 Hijiri agaran: not two lists 19:37 Hijiri agaran: One list to actually hold the nets, and another table that maps IDs to list indices 19:37 Hijiri T4im: alright 19:37 T4im "Creates a new empty table and pushes it onto the stack. The new table has space pre-allocated for narr array elements and nrec non-array elements." 19:37 Hijiri that description doesn't say that it is the only valid usage of the term "pre-allocation", though 19:37 Darkside_ almost sounds like partitioning a hardrive 19:37 T4im well, my point being, on the lua side you can't quite do that :/ 19:38 agaran Hijiri: hmm, that makes sense but I need to understand how I can code that.. 19:38 Hijiri T4im: was there a point to that point? 19:38 Hijiri my original reason for mentioning preallocation was to say that the length search already knows the bounds of the array 19:38 Hijiri it doesn't matter if lua can do it 19:39 Hijiri agaran: keep track of the last index (or you can calculate it using #), and when you insert a new element, insert into the list, but also make an entry in the map from the ID to the index 19:39 Hijiri you will also need to keep track of which indices go to which network IDs 19:39 Hijiri this can be in the network infos, or you could keep yet another table 19:39 Hijiri another table would slightly increase memory usage, but would be faster 19:40 Hijiri but also it would be uglier, though you will probably be abstracting this with functions anyway 19:40 agaran Hijiri: I'll try, sounds promising and I guess since I have helpers already to add/remove net it is not that bad 19:41 Hijiri agaran: alright, good luck 19:41 agaran Hijiri: luck will be needed, some lua skills improvement I guess as well might help 19:42 Darkside_ this channel helps learning and understanding it a bit :) 19:42 Darkside_ and there guides too :) 19:54 T4im seems like next() also isn't O(1) either 19:55 * T4im headscratches 20:01 Nosrick I have a cunning plan 20:02 Nosrick I can iterate over the registered entity list, and change their on_punch to include my on_punch. 20:02 T4im quick microbenchmark next vs # https://i.imgur.com/sOWRVlt.png up to tablesize of 1000 20:04 Hijiri I see, I guess I was wrong 20:04 Hijiri well not technically, since I qualified my statement 20:05 T4im you were right about "#" x) 20:05 T4im just next seems to be pretty much doing the same thing 20:05 Hijiri yeah, and probably has extra overhead from being a function call 20:06 Hijiri though in LuaJIT that might be optimized away (?) 20:07 T4im possible, next does return more than an index though, it returns the actual entry 20:07 T4im so there might actually be more work involved 20:07 T4im but negligible 20:08 Hijiri I don't think it would be more work. In the case of # you need to check if something is nil, so you end up grabbing the element anyway 20:08 T4im ok, true 20:09 T4im well, about half of that difference is actually from accidentally doing a global lookup on next, but even with it getting from the stack it looks pretty much the same (just a bit closer together) 20:44 agrecascino hey shamoanjac, is the rewrite finished? 20:52 shamoanjac hey agrecascino 20:52 shamoanjac I'm fixing bugs 20:53 shamoanjac you know how Lua can be with nil values 20:53 agrecascino shamoanjac, every language needs static typing 20:53 shamoanjac yeah but 20:53 shamoanjac Lua has been especially harsh on me today 20:54 agrecascino make function for compairing to 20:54 agrecascino comparing* 20:54 agrecascino nil 20:57 Nosrick Anyone here ever played Master of Magic? 20:57 Darkside_ https://github.com/minetest-mods/lightning nice mod :) merged it with my own mod removed some lines of code for register_node fire:dying_flame to stop crash at startup 20:58 Darkside_ merged another random_audio mod for extra thunderstorm sound effects, now i got nice thunderstorms with lightning going on :) 20:59 Darkside_ Sofar did a nice job on that mod :) 21:00 Nosrick I might use it for lightning bolts in my mod. 21:05 Darkside_ it looks realy nice at night time as it lights up whole the sky, and you can actually get hit by lightning and be killed if low on hearts wich is a nice feature ;) 21:06 Hijiri I thought it was a bit jarring when it occurs during daytime 21:08 Darkside_ seems to function perfectly fine on mt 0.4.14 win32 emulated in linux :) 21:09 thePalindrome ? 21:09 thePalindrome Why would you run it through wine? You a masochist or something? 21:09 thePalindrome You probably use systemd too :P 21:10 shamoanjac poettering 21:10 shamoanjac putting the D in systemD 21:11 thePalindrome Hey, my system doesn't have the d 21:12 Darkside_ Microsoft windows is not working for me anymore got so sick of it now playing with Linux :) 21:12 thePalindrome Minetest has a linux binary, besides, you should use your package manager :P 21:14 Darkside_ i hated those pop-up balloons in windows most of all, always stating the obvious :/ 21:14 thePalindrome heh 21:15 Nosrick I'm confused. I'm getting an attempt to call a nil value on a player object, when trying to call get_player_name() 21:15 Nosrick I've tried using . and : 21:16 shamoanjac maybe player is nil 21:16 Nosrick I've got a check for that. 21:16 Nosrick It passes. 21:16 shamoanjac maybe player is a string 21:16 shamoanjac not an ObjectRef 21:16 agrecascino try player.object? 21:16 shamoanjac that's like the single most common source of calling nil values in my sources 21:16 shamoanjac treating player strings as player objects 21:17 shamoanjac or faction strings as faction tables 21:17 Nosrick Tried player.object, that's nil. 21:17 Nosrick I think I see what I did wrong. Somewhere down the line, there's a : when there should be a . 21:17 Nosrick So a self is polluting my parameters. 21:18 Nosrick Yup, that was it! 21:40 Darkside_ minetest.register_node("darkcraft:bloodstone", "darkcraft:witchstone", "darkcraft:goblinstone", { 21:40 Darkside_ i wonder if node registration can be nested like that, gonna try it soon 21:43 Hijiri no 21:44 Darkside_ node description is gonna be difficult to add for each single node that way too, i would not know how heh 21:46 shamoanjac question 21:46 shamoanjac if I do 21:46 shamoanjac factions.chunks[chunkpos] = self.name 21:46 shamoanjac and the line right after than, I check #(factions.chunks) 21:46 shamoanjac why is it 0? 21:46 shamoanjac knowing that self.name isn't nil (checked) 21:49 Nosrick Because it might have holes in it 21:49 Nosrick I think 21:49 Nosrick I'm not sure #table deals well with holes. 21:51 shamoanjac 3>factions.chunks[chunkpos] = self.name 21:51 shamoanjac oops 21:51 shamoanjac 3>the length of a table t is only defined if the table is a sequence 21:51 shamoanjac well 21:51 shamoanjac ok 21:51 shamoanjac nice, how do I check my bug now 21:53 shamoanjac values are not being stored in my table 21:53 shamoanjac just, why 21:58 Nosrick How are you inserting them? 21:58 shamoanjac factions.chunks[chunkpos] = self.name 21:58 shamoanjac like that 21:59 Nosrick And trying to access them in the same way doesn't return anything? 21:59 shamoanjac yep 21:59 shamoanjac it returns nil 21:59 Nosrick Weird. 21:59 shamoanjac I'm trying to see if the keys really match 22:00 shamoanjac but so far it seems they are 22:00 Nosrick Run this on your table: https://gist.github.com/Nosrick/94e6a811a9b225bcebf6540b028e20d7 22:00 shamoanjac as an anectod the keys are tables of 2 floats 22:00 Nosrick >floats 22:00 shamoanjac coordinates 22:00 Nosrick There's your problem. 22:00 shamoanjac it shouldn't 22:00 shamoanjac someone here said keys could be anything 22:00 Nosrick If I recall correctly, Lua doesn't actually have a very good float comparison. 22:01 shamoanjac I guess I'll have to translate to a string every time 22:01 Nosrick That might be the best way to do it. 22:01 Nosrick If that doesn't work, it could be down to tiny rounding errors. 22:01 Nosrick I think Python has the same problem. 22:01 Nosrick And so does Godot. 22:01 sfan5 shamoanjac: i have never seen anyone use anything else than integers or strings as table indexes 22:02 sfan5 i would not rely on e.g. floats to index a table 22:03 Hijiri shamoanjac: # gets the size of the "array" part of the table, which is the numerical keys part 22:03 Hijiri and the length may not be too useful if there are holes in the array part 22:04 Hijiri integer keys 22:04 shamoanjac yay it works 22:04 Nosrick Congrats! 22:04 shamoanjac yeah that's what I read in the 5.2 doc 22:05 shamoanjac kinda sucks 22:05 Nosrick So did you use strings in the end? 22:05 shamoanjac yes 22:05 Nosrick Excellent. 22:05 shamoanjac not a big fan of the solution, but heh, if it does the trick... 22:05 Hijiri also the issue here isn't with floats but with using tables as keys 22:06 sfan5 tables as keys? 22:06 sfan5 wat 22:06 Hijiri table values in lua are references to tables, so to be equal they have to point to the same table 22:06 sfan5 could have told you from the start that it doesn't work 22:07 Hijiri If you later construct another table with the same contents it will be a different table and using it as an index will take you somewhere else 22:08 shamoanjac this language lacks tuples 22:08 sfan5 you would have exactly the same problem with tuples 22:08 agrecascino shamoanjac, 22:08 sfan5 what it lacks is a way to hash objects 22:08 shamoanjac no, tuples are immutable 22:08 sfan5 which could then be used to index tables 22:08 shamoanjac (at least in Python) 22:08 sfan5 they may be 22:08 shamoanjac agrecascino, 22:08 agrecascino the math i did to get chunks previously was math.floor(pos.x/16.0),math.floor(pos.y/16.0) 22:09 shamoanjac yes, I've got that 22:09 sfan5 but creating two tuples with the same contents can still yield different objects 22:09 shamoanjac now I think I've deleted the part where you cannot edit on the claimed chunks lel 22:09 sfan5 !c id((1, 2, 3)) 22:09 MinetestBot NameError: name 'id' is not defined 22:09 shamoanjac yeah but the hash() is the same 22:09 sfan5 !py id((1, 2, 3)) 22:09 MinetestBot 139660257270088 22:09 sfan5 !py id((1, 2, 3)) 22:09 MinetestBot 139660257166248 22:09 agrecascino !c print("kill yourself") 22:09 MinetestBot NameError: name 'print' is not defined 22:09 Void7 sfan5: hash? 22:09 shamoanjac so I thought Lua would just hash() the tuples 22:09 sfan5 ^ shamoanjac same tuple different object 22:10 Hijiri sfan5: it would depend on the semantics of lua tuples 22:10 Void7 !py hash((1, 2, 3)) 22:10 Hijiri they don't exist so we can't day anything about them 22:10 Hijiri say* 22:10 agrecascino !c 22:10 MinetestBot agrecascino: Nothing to calculate. 22:10 shamoanjac I've used tuples a couple times as map keys 22:10 sfan5 i'd expect them to implement it the same as python 22:10 sfan5 shamoanjac: yes 22:10 agrecascino !py prnt("kys") 22:10 sfan5 but what you need is not only immutable tuples 22:10 agrecascino !py prnt("kys") 22:11 sfan5 you also need hashing of objects 22:11 shamoanjac !py """Test""" 22:11 shamoanjac yeah 22:11 Hijiri sfan5: Does equaltiy for tuples in python use id? 22:11 sfan5 no 22:11 shamoanjac that would be is 22:11 sfan5 !c (1, 2, 3) == (1, 2, 3) 22:11 MinetestBot True 22:11 agrecascino i should really actually hold my keyboard while typing 22:11 sfan5 !c (1, 2, 3) id (1, 2, 3) 22:11 MinetestBot SyntaxError: invalid syntax (, line 1) 22:11 sfan5 !c (1, 2, 3) is (1, 2, 3) 22:11 MinetestBot False 22:11 sfan5 ^ Hijiri 22:11 Hijiri Lua tables follow that equal keys give the same value 22:11 Hijiri so if tuples were similar it would do that 22:13 Hijiri well maybe not if the __equal metamethod is used, but if tuples are primitive and use primitive ==, it should work like I meant 22:13 shamoanjac agrecascino, how did you add protection for claiming? 22:14 shamoanjac I can't find that line anymore 22:14 agrecascino shamoanjac, err 22:14 Hijiri You could even have tuple interning since they are immutable like strings 22:14 Hijiri though that would differ from python 22:14 agrecascino old_is_protected = minetest.is_protected 22:14 agrecascino function minetest.is_protected(pos,name) 22:14 agrecascino local player = minetest.get_player_by_name(name) 22:14 agrecascino if factionsmod.testifallowed(pos,player) ~= true then 22:14 agrecascino return true 22:15 agrecascino end 22:15 agrecascino return old_is_protected(pos,name) 22:15 agrecascino end 22:15 Hijiri use a paste site 22:15 Hijiri shouldn't that be local old_is_protected 22:15 Hijiri unless that is a table key or something 22:15 agrecascino it should 22:16 shamoanjac k thanks 22:20 shamoanjac ONCE AGAIN 22:20 shamoanjac SELF.FIELD IS A NIL VALUE 22:20 shamoanjac EVEN IF CLEARLY DECLARED 22:21 shamoanjac oops no it wasn't 22:21 shamoanjac lel 22:34 popbob eya, just a quick question, what's the purpose of minetest? Like we already have minecraft? im curious :) 22:34 xunto popbob: mincraft is proprietary 22:34 popbob So mostly for open-source crossplatform freedom? :) 22:35 xunto Minecraft still have no modding api, as i know) 22:35 popbob yea, that's pretty cool :P 22:35 xunto popbob: mostly, I think, but it gives a lot. 22:36 popbob Just played my first world, seems pretty cool, got a much better 'base' than minecrafts terrible java 'engine' I guess you could say 22:36 shamoanjac agrecascino, claiming is now working 22:36 xunto popbob: I even made some fixes myself. I wouldn't do it for minecraft, as example 22:36 shamoanjac so do most commands 22:36 shamoanjac now I just have to fix the load() function 22:37 xunto popbob: but it's not ready yet( 22:37 xunto Far from ready. 22:37 popbob yea, I like it though :) 22:38 xunto But it fits good for our comming roleplay server. So, I already like it. :D 22:39 popbob hmm I like the idea behind it, I only know python though :c lol 22:40 xunto You will hate lua after python if you try modding api :D 22:41 shamoanjac can confirm 22:41 popbob hahaha 22:41 agrecascino shamoanjac, now we just need to make aconverter 22:41 shamoanjac until now I had only used Python for scripting 22:41 shamoanjac and some bash 22:41 shamoanjac yes 22:45 agrecascino shamoanjac, is the latest version on the github 22:45 agrecascino ? 22:47 shamoanjac no 22:47 shamoanjac and don't use the one I've PR'd, it's full of syntax errors 22:48 shamoanjac not to mention the million bugs I've fixed the last hours 23:02 shamoanjac now for some reason chunks are being stored as booleans 23:02 shamoanjac oh, right 23:02 shamoanjac AH 23:02 shamoanjac GOT IT 23:03 shamoanjac get rekt Lua 23:03 shamoanjac I beat you once again 23:03 shamoanjac with your nils 23:03 shamoanjac and your tables 23:03 shamoanjac .|. 23:32 Nosrick Quick question: how do I override the player's on_punch function? 23:33 shamoanjac as a quick guess 23:33 shamoanjac minetest.get_player_by_name("name").on_punch = function(whatever) [...] 23:34 shamoanjac there must be a better way, though 23:35 Nosrick I'm doing it on player join. Is that wise/safe? 23:35 shamoanjac I'd say yes 23:35 shamoanjac 3>factions.lua:102: attempt to call method "on_unclaim_chunks" 23:36 shamoanjac 3>line 102 is "self:on_unclaim_chunk(chunkpos)" 23:36 shamoanjac 4just 23:36 shamoanjac is it just not taking my file 23:40 shamoanjac oh, I think I know 23:40 nuzzle and that's why 23:40 prrpx and that's why 23:41 prrpx dynamically typing is a bad idea 23:41 shamoanjac since I save the factions by serializing them, and I don't use metatables 23:41 shamoanjac THEN 23:41 prrpx and lua is a shit 23:41 prrpx do you feel the pain now 23:41 prrpx can you feel the pain 23:41 shamoanjac THEN THE FUNCTIONS CODE IS SAVED 23:41 shamoanjac SO I HAVE TO DELETE FACTIONS TO MODIFY A FUNCTION 23:41 shamoanjac UNLESS I USE METATABLES 23:41 shamoanjac I didn't want to 23:41 shamoanjac I guess I have no choice 23:41 T4im just use metatables then, its not rocket science 23:41 prrpx can you feel the pain of dynamic typing 23:41 prrpx can you feel the pain of _G 23:41 T4im x) 23:42 prrpx can you feel the pain of TABLES 23:42 shamoanjac wtf i hate lua now 23:42 prrpx how can you not like lua tables 23:42 prrpx tables can do anything 23:42 T4im everyone hates lua, i bet the lua developers hate it 23:42 T4im no reason to give up 23:42 prrpx T4im: there are only two lua developers 23:42 shamoanjac why is Lua chosen for games? 23:42 prrpx they're working in a bubble 23:43 prrpx and don't give a shit about anyone else 23:43 shamoanjac Lua = Portuguese = Brazil = StephenLynx = JavascriptChan 23:43 thePalindrome Lua was chosen for the scripting language because it's cross-platform, safe, and not complete garbage 23:43 shamoanjac I have some objection in respect to the "not complete garbage" part 23:44 T4im you know the metatables are one of the nice things about it, shamoanjac :D 23:44 xunto Just like python 23:44 prrpx should've gone for lisp 23:44 prrpx emacs lisp 23:44 shamoanjac ^ 23:44 shamoanjac Scheme 23:44 prrpx scheme is a mess 23:44 shamoanjac stfu 23:44 prrpx common lisp 23:44 prrpx newlisp 23:44 shamoanjac SICP = Scheme 23:44 prrpx yea scheme has 23:44 shamoanjac GNU Image Manipulation Program = Scheme 23:44 prrpx literally a hundred standards tho 23:44 shamoanjac Audacity = Scheme 23:44 shamoanjac MIT Scheme 23:44 shamoanjac obviously 23:45 shamoanjac because Stallman 23:45 shamoanjac RECAREDVS MATHEVS STALLMANVS REX SOFTVVARVM LIBERA 23:50 Hijiri Nosrick: register_on_punchplayer 23:50 Hijiri players don't have an on_punch like entities do 23:51 Nosrick Ah, thank you! 23:53 agrecascino why don't we just add a c++ api 23:54 agrecascino and somehow compile on runtime 23:55 prrpx haven't u heard 23:55 prrpx c++ is obsolete 23:56 prrpx also, sounds like a pain in the ass 23:56 agrecascino rewrite it in borrow checker the language 23:56 prrpx considering c++ ABI is a bi-itch 23:56 agrecascino AMI RITE GUIS IS 2016 23:56 prrpx RIIR 4 life dude 23:57 agrecascino i really love having a language where i want to die in the process of making global variables 23:58 thePalindrome Not to mention that if you do that most minetest mods will be linux only 23:58 thePalindrome Because windows is for dweebs 23:58 thePalindrome It's also harder to sandbox