Time Nick Message 00:21 ShadowNinja rawget(minetest.registered_items[name], "tool_capabilities") will get the real tool_capabilities, without redirecting to the hand's capabilities. 16:10 Taoki Hello. I'm trying to get pathfinding to work for my mob system, but something isn't working. I posted the Lua code and issue description here, please look at it if anyone wishes to: https://forum.minetest.net/viewtopic.php?f=9&t=10022&p=155985#p155985 22:49 zatherz hello 22:49 zatherz I just wanted to ask, is there any way to execute commands as some player using the Lua API? 22:49 zatherz I've searched everywhere and could not find it 22:53 zatherz ? 22:56 zatherz anyone? 22:58 jin_xi i dont know, but you should try asking in #minetest 22:58 Zefram_Fysh where lua code is executing, there's no concept of which player is executing the code 22:58 Zefram_Fysh every API for which there is a concept of an actor takes the actor as an explicit parameter 23:00 zatherz hmmm... 23:00 Zefram_Fysh what specific kind of command do you have in mind? 23:01 zatherz actually, I can just use the functions to imitate running server commands 23:01 zatherz I think that would be even better 23:01 zatherz but then 23:01 zatherz it will not work with mods I don't implement 23:02 zatherz well 23:02 zatherz is there a way to execute a command with no actor? 23:02 Zefram_Fysh do you mean chat commands? 23:03 zatherz yes 23:03 Zefram_Fysh you can execute them by pulling the definition from the minetest.chatcommands table 23:03 Zefram_Fysh the action function takes the actor as an explicit parameter 23:03 zatherz oh 23:04 zatherz didn't know about that 23:04 zatherz will definitely look, thank you very much 23:04 Zefram_Fysh see the command block from mesecons for a model of how to do it 23:06 zatherz now THAT is easy 23:06 zatherz really, really thank you 23:06 zatherz I just did not think that the commands could be saved in some kind of a table 23:10 zatherz oh, also, another question 23:11 zatherz is there a way to run a "daemon" on the server? 23:11 zatherz I mean, so that it runs in background 23:11 Zefram_Fysh not a persistently-running process, but you can use timers to get regular callbacks 23:12 zatherz you mean ABMs? 23:12 Zefram_Fysh usually you don't want that, though. usually an ABM will do 23:12 Zefram_Fysh what are you trying to achieve? 23:13 zatherz let's say I have a file with chat commands 23:13 zatherz or, rather, I want this file to work like a pipe 23:13 zatherz so, whenever something gets written to it 23:13 zatherz a chat command I mean 23:13 zatherz it gets executed on the server 23:14 Zefram_Fysh file in the server host filesystem? 23:14 zatherz yes 23:14 zatherz it's not supposed to be large 23:14 Zefram_Fysh silly interface 23:14 zatherz and is there any other method to pipe commands to Minetest from a C++ program 23:14 zatherz ? 23:14 zatherz I think not 23:15 Zefram_Fysh you can connect as a client and just, you know, issue the chat command through the game protocol 23:15 zatherz by game protocol you mean what? 23:16 Zefram_Fysh if you absolutely can't do it as a regular client, it would still be better to use a local socket or something rather than a regular file 23:16 Zefram_Fysh game protocol = the protocol used between the server and regular player clients 23:17 zatherz and I can connect from an external application as a client to Minetest and execute commands? 23:17 zatherz *to a Minetest server 23:18 Zefram_Fysh in principle, sure. it would be nice for someone to develop a Unix-command-line client that will just connect and issue one chat command 23:20 zatherz well, I don't think "in principle" is enough 23:21 Zefram_Fysh no one's actually written that client afaik. you'd have to put the pieces together yourself 23:23 zatherz huh, I don't even think Minetest supports this, does it? 23:23 zatherz well 23:23 zatherz I actually *can* execute commands on Linux 23:24 zatherz I can use xdotool to focus on a Minetest window 23:24 zatherz send "t" keypress 23:24 zatherz then send whatever command I want as text 23:24 Zefram_Fysh there's a protocol, which includes a specific feature for issuing chat commands. what more would you need to count as "support"? 23:24 zatherz and send enter 23:24 zatherz hmm... 23:24 zatherz wait 23:25 zatherz you mean this? https://www.google.pl/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCAQFjAA&url=http%3A%2F%2Fdev.minetest.net%2FNetwork_Protocol&ei=xZgoVLTgLePMygPxnoGwBg&usg=AFQjCNEhOSeukJaMd0UQ_XP6APNWDx7-cQ&sig2=cEA2JCADz-lBylDPj4E-4A&bvm=bv.76247554,d.bGQ 23:25 zatherz oops 23:25 zatherz sorry 23:25 zatherz http://dev.minetest.net/Network_Protocol 23:25 Zefram_Fysh that's the lower layer. there's a layer on top of that for the actual game content 23:26 Zefram_Fysh you'll probably want to share code with the game engine 23:26 Taoki Does anyone know if minetest.line_of_sight is a costly function? I'm adding it to my creatures mod, and thinking of not even including a setting for it unless necessary. 23:27 Zefram_Fysh cost will depend on the step size 23:27 Taoki I use the default of 1 23:27 Zefram_Fysh I would not expect it to be an extravagant cost if it's based on stepping along the line 23:28 Taoki In my case it will execute several times in a loop, the loop itself executed every 0.25 seconds or so normally 23:28 Zefram_Fysh the cost will be linear in the length of the potential line of sight 23:28 Zefram_Fysh executing at that sort of rate won't be a problem 23:29 Taoki ok. I won't add a setting for it then, hopefully the mod remains as lightweight 23:29 zatherz huh 23:31 zatherz the protocol seems a bit unnecessary to just execute one command at a time 23:32 Zefram_Fysh that's the way to issue a command to the server 23:32 zatherz I know 23:33 zatherz wait, I don't think if we're talking about the same APIs 23:33 zatherz is that: http://dev.minetest.net/Core_Architecture#Network_protocol what you were talking about 23:33 zatherz ? 23:36 Zefram_Fysh yes. there are two layers of Minetest-specific protocol layered above UDP. that page mentions both layers. the page you pointed at earlier explains the lower of the two layers specifically 23:36 zatherz I don't see anything specific to chat commands on this page 23:37 Zefram_Fysh that's because that page is only giving you a taste of the protocol, not details 23:38 Zefram_Fysh src/clientserver.h in the engine code lists all the game message types 23:38 Zefram_Fysh including TOCLIENT_CHAT_MESSAGE 23:38 zatherz and it can connect to local games too? or is it only for servers? 23:39 Zefram_Fysh er, what? 23:39 zatherz huh 23:39 Zefram_Fysh it's a protocol, and hence inherently used between the two parties 23:40 zatherz oh, and I've been looking @ src/clientserver.h before 23:42 zatherz the ultimate question arises 23:42 zatherz how can I actually connect to the server 23:43 zatherz ok never said that 23:43 Zefram_Fysh that involves the lower protocol layer and UDP 23:43 Zefram_Fysh the UDP layer is connectionless 23:43 zatherz I see void Client::connect(Address address) in src/client.cpp 23:44 Zefram_Fysh oh, duh, TOSERVER_CHAT_MESSAGE is the one you want of course, not TOCLIENT_CHAT_MESSAGE 23:45 zatherz oh 23:45 zatherz so I will have to incorprorate clientserver.h, client.cpp and server.cpp to my program 23:45 zatherz include clientserver.h 23:46 zatherz then use the methods from server.cpp 23:46 zatherz to host a server 23:46 zatherz then I could run Minetest form the app 23:46 zatherz *from 23:46 zatherz and use commandline arguments to connect 23:46 Zefram_Fysh you should share code, yes. "host a server" doesn't make sense though 23:46 zatherz I mean 23:46 zatherz start a local server 23:47 Zefram_Fysh your objective is to have a special-purpose client that connects to your already-existing standard server 23:48 zatherz I want to start a local server I can control from my application code, start Minetest directly connecting to that server and execute commands from the application 23:49 zatherz I see that Server::start is the correct way 23:49 zatherz to start the server 23:50 Zefram_Fysh if the Minetest server is functionally part of your application, then you could customise the server code to do whatever the application requires 23:50 zatherz let's just say 23:51 zatherz I want to create a commandline Minetest server 23:51 zatherz that can be controlled 23:51 zatherz by writing chat commands 23:51 zatherz to the terminal 23:52 zatherz that server should stay vanilla at the core 23:52 zatherz with mods being the only non-vanilla thing 23:52 Zefram_Fysh the standard server code can already be told from the command line to run a particular world. accepting chat commands from stdin would be only a small addition to the server code 23:53 zatherz but how one would send input *while* the server is running 23:53 Taoki https://forum.minetest.net/viewtopic.php?f=11&t=9240&p=156045#p156045 Creatures mod now has experimental pathfinding and line of sight usage! If anyone is interested, please test and let me know how to improve the path finding code. 23:53 Zefram_Fysh you already specified that 23:54 zatherz but then 23:54 zatherz what I'm doing 23:54 zatherz is piping the commands 23:55 zatherz and that I wanted to do at the beginning, except using a file instead of stdin 23:55 Zefram_Fysh a regular file is not a pipe 23:56 zatherz but a FIFO is 23:56 zatherz and well 23:56 zatherz that's what I can add to the server code 23:57 Zefram_Fysh you didn't initially make clear how much control you had over the server. the complete control that you're describing here makes it feasible to properly handle stdin or a named pipe 23:58 zatherz oh, sorry for that then 23:58 zatherz yes, I have complete control over the server 23:59 zatherz so...