One issue that has popped up when using the CustomNPCs 1.8.8 Scripting is the fact that the scripts that are loaded using the “Load Scripts” feature cannot use the standard Event Functions(such as init, interact etc).

 

This is because any subsequent scripts, including the one contained in the main script editor, that contain those functions will overwrite any previous instances.

I have created a simple script to address this issue.

 

Installation

Copy the ChromeEvents Script below and save it in your [worldsave]/customnpcs/scripts/ecmascript directory as “000-ChromeEvents.js”.  Please note, the files loaded using the “Load Scripts” feature are loaded in alphanumerical order, which is why I have named the file beginning with “000”, to ensure it is loaded first.  You may need to adjust the filename to suit your setup.

 

Usage

Due to some scoping issues, the usage of ChromeEvents differs slightly depending on if you are using it within a Loaded Script, or within the main scripting editor

Loaded Script

 

//Register an “init” event with ChromeEvents

ChromeEvents.add(“init”, function(event){

//Your Code Goes here

});

//Make the init event call, as normal, in case this is the last script that is loaded.

function init(event){

ChromeEvents.run(“init”, event);

}

Main Scripting Editor

function init(event){

//Adding your code to ChromeEvents here is optional, you could run the code as normal

ChromeEvents.add(“init”, function(event){

//Your Code Goes Here

});

//this runs all registered event functions for “init”, in the order they were registered

ChromeEvents.run(“init”, event);

}

ChromeEvents Script

var ChromeEvents = {
events: {},
add: function(eventName, fn){
if(!this.events[eventName]){
this.events[eventName] = [];
}

this.events[eventName].push(fn);
},
run: function(eventName, event){
var methods = this.events[eventName];

if(methods && methods.length>0){
for(var i=0;i<methods.length;i++){
var fn = methods[i];
if(fn && (typeof fn)==”function”){
fn(event);
}
}
}
}
};

I have a Toshiba Satellite Radius.  I love it, except for one problem.

The placement of the power button.

When using it as a laptop, the power button is in the exact position my hand falls to when moving it from my lap to the coffee table.  However I’ve found a simple solution.

Disable the power button.

A simple solution, but has already saved me grief.

This can be done in Control Panel => Power Options => Change what the Power Buttons do.

I’ve only disabled mine when running on battery, as I never use it plugged in when sitting on the couch.

Newest-2-4G-4CH-I-spy-tank-Wifi-tank-Iphone-Ipad-Electric-Remote-Control-With-Camera“Hacking” the I-Spy Wifi Tank is surprisingly easy, especially when all the hard work is done by some else.

In summary:

  1. Connect your PC to the Tank’s Wifi
  2. telnet to 10.10.1.1:8150
  3. send “t1”
  4. send control commands using the motor number (Left=1, Right=2, Head=3) followed by the direction(Stop=0, Forward=1, Back=2)
    For example, to move the Tank forward send “1121”
  5. Watch the Video Stream in VLC by connecting to http://10.10.1.1:8196

The article includes a link to this python application code on github, so it wasn’t going to be a far stretch to use it as a basis for controlling the Tank with MyRobotLab.

Combine the Sphinx MRL Example with a modified version of the motors class from the above project and we have Voice Control of the Wifi Tank.

 

 

After installing MAMP Pro 2.2 on a new Mac with Yosemite installed I found I was unable to start the Apache server.

A Workaround had been posted to the MAMP Twitter Feed, but I thought I’d include it here to make it easier to find, and also to make it clearer that it works for MAMP Pro 2.2.

All you have to do is rename the file located at:

/Applications/MAMP/Library/bin/envvars

to

/Applications/MAMP/Library/bin/_envvars

You should now be able to start Apache.