From 440ecfad30d49eefc03c4c539e62218e275e13ce Mon Sep 17 00:00:00 2001 From: Danielv123 Date: Tue, 16 Aug 2016 12:41:55 +0200 Subject: [PATCH 1/2] Everything works! (using rcon) --- c-inv_0.0.2/control.lua | 2 +- client.js | 30 +++++++++++++++++------------- launchEverything.bat | 20 ++++++++------------ 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/c-inv_0.0.2/control.lua b/c-inv_0.0.2/control.lua index 29973d6e..994ccf7a 100644 --- a/c-inv_0.0.2/control.lua +++ b/c-inv_0.0.2/control.lua @@ -211,7 +211,7 @@ end function ExportOutputList() local exportStrings = {} for k,v in pairs(global.outputList) do - exportStrings[#exportStrings + 1] = k..", "..v.."\n" + exportStrings[#exportStrings + 1] = k.." "..v.."\n" end global.outputList = {} if #exportStrings > 0 then diff --git a/client.js b/client.js index 3db7012b..a0c2df60 100644 --- a/client.js +++ b/client.js @@ -1,23 +1,26 @@ var fs = require('fs'); var needle = require("needle") -var Rcon = require('rcon') // connect us to the server with rcon // IP, port, password -var conn = new Rcon('localhost', 12345, '123'); -conn.on('auth', function() { - console.log("Authed!"); - -}).on('response', function(str) { - console.log("Got response: " + str); - -}).on('end', function() { - console.log("Socket closed!"); - process.exit(); +var Rcon = require('simple-rcon'); +var client = new Rcon({ + host: '81.167.2.56', + port: '12345', + password: '123', + timeout: 0 +}).connect(); +client.on('authenticated', function() { + console.log('Authenticated!'); +}).on('connected', function() { + console.log('Connected!'); +}).on('disconnected', function() { + console.log('Disconnected!'); + // now reconnect + client.connect(); }); -conn.connect(); // trigger when something happens to output.txt fs.watch("Factorio 0.13.9/script-output/output.txt", "utf8", function(eventType, filename) { @@ -52,12 +55,13 @@ fs.watch("Factorio 0.13.9/script-output/orders.txt", "utf8", function(eventType, if(items[i]) { g = items[i].split(" "); g[0] = g[0].replace("\u0000", ""); + g[0] = g[0].replace(",", ""); console.log(g); // send our entity and count to the master for him to keep track of needle.post('localhost:8080/remove', {name:g[0], count:g[1]}, function(err, resp, body){ console.log(body); if(body){ - //conn.send("/c remote.call('clusterio', 'import', '" + g[0] + "', " + g[1] + ")") + client.exec("/c remote.call('clusterio', 'import', '" + g[0] + "', " + g[1] + ")") } }); } diff --git a/launchEverything.bat b/launchEverything.bat index 675bbac9..30e170f6 100644 --- a/launchEverything.bat +++ b/launchEverything.bat @@ -1,19 +1,15 @@ -start nodemon client.js -start nodemon master.js - -cd "Factorio 0.13.9 - Copy/bin/x64" -start factorio.exe -cd .. -cd .. -cd .. - cd "Factorio 0.13.9" @RD /S /Q "temp" -cd "bin/x64" -start factorio.exe --start-server-load-latest --rcon-port 12345 --rcon-password 123 --server-settings server-settings.json --no-auto-pause +cd "bin/x64/" +start factorio.exe --start-server-load-latest --rcon-port 12345 --rcon-password 123 --server-settings server-settings.json --no-auto-pause cd .. cd .. cd .. -@mcrcon.exe -t -H 81.167.2.56 -P 12345 -p 123 + +start cmd /C node client.js +start cmd /C node master.js + +::cd "Factorio 0.13.9 - Copy/bin/x64" +::@start factorio.exe pause \ No newline at end of file From 44e311feea5f2e2e834df418726e3701357d5fa8 Mon Sep 17 00:00:00 2001 From: Danielv123 Date: Wed, 17 Aug 2016 09:20:14 +0200 Subject: [PATCH 2/2] Fixed js, items are now created correctly and dupe/loss glitches removed --- client.js | 3 ++- launchEverything.bat | 2 +- master.js | 42 +++++++++++++++++++++--------------------- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/client.js b/client.js index a0c2df60..2332b0fa 100644 --- a/client.js +++ b/client.js @@ -24,6 +24,7 @@ client.on('authenticated', function() { // trigger when something happens to output.txt fs.watch("Factorio 0.13.9/script-output/output.txt", "utf8", function(eventType, filename) { + console.log('hit output') // get array of lines in file items = fs.readFileSync("Factorio 0.13.9/script-output/output.txt", "utf8").split("\n"); // if you found anything, reset the file @@ -60,7 +61,7 @@ fs.watch("Factorio 0.13.9/script-output/orders.txt", "utf8", function(eventType, // send our entity and count to the master for him to keep track of needle.post('localhost:8080/remove', {name:g[0], count:g[1]}, function(err, resp, body){ console.log(body); - if(body){ + if(body == "success"){ client.exec("/c remote.call('clusterio', 'import', '" + g[0] + "', " + g[1] + ")") } }); diff --git a/launchEverything.bat b/launchEverything.bat index 30e170f6..1834cafd 100644 --- a/launchEverything.bat +++ b/launchEverything.bat @@ -1,7 +1,7 @@ cd "Factorio 0.13.9" @RD /S /Q "temp" cd "bin/x64/" -start factorio.exe --start-server-load-latest --rcon-port 12345 --rcon-password 123 --server-settings server-settings.json --no-auto-pause +start factorio.exe --start-server-load-latest --rcon-port 12345 --rcon-password 123 --server-settings server-settings.json --no-auto-pause cd .. cd .. cd .. diff --git a/master.js b/master.js index f13b42dc..2270429b 100644 --- a/master.js +++ b/master.js @@ -34,20 +34,26 @@ db.items.additem = function(object) { } }) } -db.items.removeitem = function(object) { +db.items.removeitem = function(object, res) { db.items.findOne({name:object.name}, function (err, doc) { // console.dir(doc); - if (doc) { - // Update existing items if item name already exists - if(Number(doc.count) > Number(object.count)) { - object.count = Number(doc.count) - Number(object.count); - db.items.update(doc, object, {multi:true}, function (err, numReplaced) {}); - return true; - } else { - return false; - } + if (err) { + res.send('failure'); + return false } else { - return false; + if (doc) { + // Update existing items if item name already exists + if(Number(doc.count) > Number(object.count)) { + object.count = Number(doc.count) - Number(object.count); + db.items.update(doc, object, {multi:true}, function (err, numReplaced) {}); + res.send("success"); + return true; + } else { + res.send('failure'); + } + } else { + res.send('failure'); + } } }) } @@ -56,26 +62,20 @@ db.items.removeitem = function(object) { app.post("/place", function(req, res) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); - console.log("added: " + req.body); + console.log("added: " + req.body.name + " " + req.body.count); // save items we get db.items.additem(req.body) // Attempt confirming - res.send("success!"); + res.send("success"); }); // endpoint to remove items from DB when client orders items app.post("/remove", function(req, res) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); - console.log("removed: " + req.body); + console.log("removed: " + req.body.name + " " + req.body.count); // save items we get - temp = db.items.removeitem(req.body); - if(temp) { - // if true, the action was successfull - res.send("success"); - } else { - res.send('failure'); - } + db.items.removeitem(req.body, res); }); var server = app.listen(8080, function () {