Je suis très nouveau pour le codage, et je ne sais pas trop comment écrire ces questions. J'incorpore la fonctionnalité CS: GO Game State Integration ajoutée récemment pour changer Hue Lights en fonction de ce qui se passe dans le jeu. La partie actuelle sur laquelle je travaille est un script simple qui changera la première lumière en bleu si je fais partie de l'équipe 'CT'. Ça fonctionne bien, en plus du fait que ça ne cesse de me dire que je suis encore et encore à l'écoute de la tomodensitométrie. Y a-t-il un moyen de changer mon script pour ne le mettre à jour que si la première instruction If devient fausse?Comment puis-je exécuter le script une fois jusqu'à ce que if devienne faux? (Node.JS)
code:
setInterval(checkTeam, 250);
function checkTeam() {
fs.readFile('player_team', 'utf8', function(err, teamStatus) {
if (err) throw err;
if(teamStatus === 'CT') {
console.log('CT Side');
if (currentStatus !== 'CT') {
changeLight(1, noLights());
currentStatus = 'CT';
}
if (currentStatus === 'CT') {
changeLight(1, blueLights());
currentStatus = 'CT';
}
}
if (teamStatus === 'T'){
console.log('T Side');
if (currentStatus !== 'T Side') {
changeLight(3, noLights());
}
if (currentStatus === 'T Side') {
changeLight(3, orangeLights());
currentStatus = 'T';
}
if (currentStatus === null) {
changeLight(1, noLights());
}
}
});
}
function changeLight(light, lightType) {
var jsonString = JSON.stringify(lightType);
http.request({
host: HUE_BRIDGE_IP,
path: HUE_PATH + 'lights/' + light + '/state',
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Content-Length': jsonString.length
}
}, function() {
}).write(jsonString);
}
function redLights() {
return {
'on': true,
'sat': 254,
'bri': 254,
'hue': 0,
'transitiontime': 0
}
}
function blueLights() {
return {
'on': true,
'sat': 254,
'bri': 254,
'hue': 45000,
'transitiontime': 0
}
}
function explodeLights() {
return {
'on': true,
'sat': 254,
'bri': 254,
'hue': 10000,
'transitiontime': 0
}
}
function whiteLights() {
return {
'on': true,
'sat': 0,
'bri': 254,
'hue': 10000
}
}
function noLights() {
return {
'on': false,
'transitiontime': 0
}
}
function orangeLights() {
return {
'on': false,
'transitiontime': 0
}
}
Je devine que la seule partie que vous avez vraiment besoin est le top, mais juste au cas où vous aviez besoin de la fonction changeLight, j'inclus plus. Fondamentalement, je veux que le if(teamStatus === 'CT') {
ne s'exécute qu'une seule fois jusqu'à ce qu'il change ou devienne nul. Si ce n'est pas possible, y a-t-il un compromis?
Merci à toute personne qui tente d'aider,
Appréciez-le!
Edit:
Je ne pense pas que j'ai donné assez d'informations est donc ici le code pour le serveur d'obtenir l'information de l'état du jeu:
var bodyParser = require('body-parser');
var express = require('express');
var fs = require('fs');
var app = express();
app.use(bodyParser.json()); // for parsing application/json
app.post('/', function(req, res) {
fs.readFile('player_team', 'utf8', function(err, teamStatus) {
var player = 'player' in req.body ? req.body.player : null;
if (player && player.team !== teamStatus) {
var newTeamStatus = req.body.player.team;
if (!newTeamStatus) {
newTeamStatus = '';
}
fs.writeFile('player_team', newTeamStatus);
console.log(newTeamStatus);
}
});
});
var PORT = 8080;
var HOST = '127.0.0.1';
app.listen(PORT, HOST);
console.log('Server is running on ' + HOST + ':' + PORT);
La logique dans 'checkTeam' n'est pas très claire, en particulier dans le bloc' if (teamStatus === 'T') {'. Vous semblez avoir une logique très différente si teamStatus est T comparé à teamStatus == CT - je ne sais pas exactement quel est le résultat requis pour être honnête –
Je vais éditer le post avec le code du serveur qui tire l'état du jeu depuis le jeu. – pmaheras18
pourquoi? cela n'explique pas la logique que vous * tentez d'atteindre. –