Thanks.Kaks wrote:OK, from tonight's build .viewDirectionChanged should fire correctly. It took me a while to figure out the source of glithches that were plaguing my original implementation...
Split: viewDirectionChanged woes
Moderators: winston, another_commander
- CommonSenseOTB
- ---- E L I T E ----
- Posts: 1397
- Joined: Wed May 04, 2011 10:42 am
- Location: Saskatchewan, Canada
Split: viewDirectionChanged woes
Moderator: Split from Scripting Requests discussion in Suggestion Box.
Take an idea from one person and twist or modify it in a different way as a return suggestion so another person can see a part of it that can apply to the oxp they are working on.
CommonSense 'Outside-the-Box' Design Studios Ltd.
WIKI+OXPs
CommonSense 'Outside-the-Box' Design Studios Ltd.
WIKI+OXPs
- Killer Wolf
- ---- E L I T E ----
- Posts: 2279
- Joined: Tue Jan 02, 2007 12:38 pm
Re: Scripting requests
cheers Kaks, give that a try when i can - the download page is refusing to load :-/
- Killer Wolf
- ---- E L I T E ----
- Posts: 2279
- Joined: Tue Jan 02, 2007 12:38 pm
Re: Scripting requests
okay, still not working.
here's my script :
here's my script :
Code: Select all
this.alertConditionChanged = function(newCondition, oldCondition)
{
switch(newCondition)
{
case 0: // we're docked
{
player.ship.hud = "phantomTradingHUD.plist"; // set the docked HUD
break;
}
case 1: // we're at green alert
case 2: // or we're at yellow alert
{
if(player.ship.energy > 108 && player.viewString != "VIEW_GUI_DISPLAY") // if we're not using the damaged HUD
{
player.ship.hud = "phantomNormalHUD.plist"; // set the standard HUD
}
break;
}
case 3: // we're at red alert
{
if(player.alertHostiles && player.ship.energy > 108 && player.viewString != "VIEW_GUI_DISPLAY") // and under attack and not using the damaged HUD
{
player.ship.hud = "phantomCombatHUD.plist"; // set the combat HUD
}
break;
}
case 4:
{
if (viewString == "VIEW_GUI_DISPLAY")
{
player.ship.hud = "phantomGUI.plist";
}
}
}
}
this.shipLaunchedFromStation = function()
{
if(this.energyCheckTimer)
{
this.energyCheckTimer.start()
}
else
{
this.energyCheckTimer = new Timer(this, this.energyCheck,0,2) // use a timer to keep an eye on the HUD state
}
}
this.energyCheck = function()
{
if(player.ship.docked)
{
this.energyCheckTimer.stop();
}
else
{
if(player.ship.energy < 109 )
{
player.ship.hud = "phantomSnafuHUD.plist"; // display the damaged HUD
return;
}
if(player.ship.energy > 108 && player.ship.hud == "phantomSnafuHUD.plist")
{
this.alertConditionChanged(player.alertCondition,0); // if energy is >49 and we're still displaying the damaged HUD, use other code to repair
}
}
}
this.shipDied = function()
{
if(this.energyCheckTimer)
{
this.energyCheckTimer.stop()
}
}
- Wildeblood
- ---- E L I T E ----
- Posts: 2453
- Joined: Sat Jun 11, 2011 6:07 am
- Location: Western Australia
- Contact:
Re: Scripting requests
There is no alert condition 4. Your options are 0-3.Killer Wolf wrote:okay, still not working.
here's my script :Code: Select all
this.alertConditionChanged = function(newCondition, oldCondition) { switch(newCondition) { case 0: // we're docked ... case 4: { if (viewString == "VIEW_GUI_DISPLAY") { player.ship.hud = "phantomGUI.plist";
Re: Scripting requests
Never mind that!
I'm not surprised it's not working, KW's code hasn't got this.viewDirectionChanged anywhere I can see...
I'm not surprised it's not working, KW's code hasn't got this.viewDirectionChanged anywhere I can see...
Hey, free OXPs: farsun v1.05 & tty v0.5! :0)
- Wildeblood
- ---- E L I T E ----
- Posts: 2453
- Joined: Sat Jun 11, 2011 6:07 am
- Location: Western Australia
- Contact:
Re: Scripting requests
No, because he has mistaken this.alertConditionChanged for magic.Kaks wrote:Never mind that!
I'm not surprised it's not working, KW's code hasn't got this.viewDirectionChanged anywhere I can see...
- Killer Wolf
- ---- E L I T E ----
- Posts: 2279
- Joined: Tue Jan 02, 2007 12:38 pm
Re: Scripting requests
or maybe i just tried changing some code? pardon me for not being a fkng JS expert.Wildeblood wrote:No, because he has mistaken this.alertConditionChanged for magic.Kaks wrote:Never mind that!
I'm not surprised it's not working, KW's code hasn't got this.viewDirectionChanged anywhere I can see...
- Wildeblood
- ---- E L I T E ----
- Posts: 2453
- Joined: Sat Jun 11, 2011 6:07 am
- Location: Western Australia
- Contact:
Re: Scripting requests
Don't react like that, my comment was deadpan irony, not an outrageous insult. JS isn't magical, it's just evil and bogus. But you have misunderstood the nature of either (1) events like alertConditionChanged and viewDirectionChanged or (2) what a switch/case structure does.Killer Wolf wrote:or maybe i just tried changing some code? pardon me for not being a fkng JS expert.Wildeblood wrote:No, because he has mistaken this.alertConditionChanged for magic.Kaks wrote:Never mind that!
I'm not surprised it's not working, KW's code hasn't got this.viewDirectionChanged anywhere I can see...
Apparently, JS is an event-driven object-oriented language, whatever the hell that means. So every so often the game will send an event like alertConditionChanged or viewDirectionChanged, and you have to write some code that listens out for the particular event you're interested in. There's no point listening for:-
this.alertConditionChanged = function(newCondition, oldCondition)
if you're actually interested in:-
this.viewDirectionChanged = function(viewString)
So I think all you need is this:-
Code: Select all
this.viewDirectionChanged = function(viewString)
{
if (viewString == "VIEW_GUI_DISPLAY")
{
player.ship.hud = "phantomGUI.plist";
}
}
- Killer Wolf
- ---- E L I T E ----
- Posts: 2279
- Joined: Tue Jan 02, 2007 12:38 pm
Re: Scripting requests
'kay, my bad. thanks for the info, i'll hammer together something when i get home. as i've mentioned before, i don't get this OO stuff at all, lol, i'm a COBOL/BASIC creature myself :-/
really need to hunt out some basic/intro tutes on the net or something, but i just haven't got the time due to all my other art/ship building/writing etc etc.
really need to hunt out some basic/intro tutes on the net or something, but i just haven't got the time due to all my other art/ship building/writing etc etc.
- Killer Wolf
- ---- E L I T E ----
- Posts: 2279
- Joined: Tue Jan 02, 2007 12:38 pm
Re: Scripting requests
pointers in the right direction please : why's this brining up the GUI HUD for Aft/Port/etc?
the bold bit's the bit i've added in to the rest of the original script. i was a bit off w/ the nested IF...ELSE syntax but this version is from a tute site on the web.
edit, no it's not, bold ain't working in a code snippet, so i've written it in manually.
cheers in advance....
Code: Select all
this.alertConditionChanged = function(newCondition, oldCondition)
{
switch(newCondition)
{
case 0: // we're docked
{
player.ship.hud = "phantomTradingHUD.plist"; // set the docked HUD
break;
}
case 1: // we're at green alert
case 2: // or we're at yellow alert
{
if(player.ship.energy > 108 && player.viewString != "VIEW_GUI_DISPLAY") // if we're not using the damaged HUD
{
player.ship.hud = "phantomNormalHUD.plist"; // set the standard HUD
}
break;
}
case 3: // we're at red alert
{
if(player.alertHostiles && player.ship.energy > 108 && player.viewString != "VIEW_GUI_DISPLAY") // and under attack and not using the damaged HUD
{
player.ship.hud = "phantomCombatHUD.plist"; // set the combat HUD
}
break;
}
}
}
new stuff :-
this.viewDirectionChanged = function(viewString)
{
if(player.viewString = "VIEW_GUI_DISPLAY")
{
player.ship.hud = "phantomGUI.plist";
}
else if(player.alertHostiles && player.ship.energy > 108 && player.viewString != "VIEW_GUI_DISPLAY")
{
player.ship.hud = "phantomCombatHUD.plist";
}
else if(player.ship.energy < 109)
{
player.ship.hud = "phantomSnafuHUD.plist";
}
else
{
player.ship.hud = "phantomNormalHUD.plist";
}
}
end of new stuff
this.shipLaunchedFromStation = function()
{
if(this.energyCheckTimer)
{
this.energyCheckTimer.start()
}
else
{
this.energyCheckTimer = new Timer(this, this.energyCheck,0,2) // use a timer to keep an eye on the HUD state
}
}
this.energyCheck = function()
{
if(player.ship.docked)
{
this.energyCheckTimer.stop();
}
else
{
if(player.ship.energy < 109 )
{
player.ship.hud = "phantomSnafuHUD.plist"; // display the damaged HUD
return;
}
if(player.ship.energy > 108 && player.ship.hud == "phantomSnafuHUD.plist")
{
this.alertConditionChanged(player.alertCondition,0); // if energy is >49 and we're still displaying the damaged HUD, use other code to repair
}
}
}
this.shipDied = function()
{
if(this.energyCheckTimer)
{
this.energyCheckTimer.stop()
}
}
edit, no it's not, bold ain't working in a code snippet, so i've written it in manually.
cheers in advance....
Re: Scripting requests
You've got "player.viewString" where you should have just "viewString" in the first if statement in the this.viewDirectionChanged function, plus you also need == or === in an if statement, not single =. The passed parameter is just viewString, no player prefix.
Change
to
and similarly just below it in the next if statement down.
In the if statement the === means strictly equal to (exact same value, and exactly the same type - boolean, integer, float, string etc) whereas == does comparisons between different types and is less strict, so 2 == "2" is true, but 2 === "2" is false (but == can take longer in script runtime than === does due to the extra checking needed). More details of that are here and in many other websites - search javascript comparison for alternative websites.[/color]
Change
Code: Select all
if(player.viewString = "VIEW_GUI_DISPLAY")
{
player.ship.hud = "phantomGUI.plist";
}
Code: Select all
if(viewString === "VIEW_GUI_DISPLAY")
{
player.ship.hud = "phantomGUI.plist";
}
In the if statement the === means strictly equal to (exact same value, and exactly the same type - boolean, integer, float, string etc) whereas == does comparisons between different types and is less strict, so 2 == "2" is true, but 2 === "2" is false (but == can take longer in script runtime than === does due to the extra checking needed). More details of that are here and in many other websites - search javascript comparison for alternative websites.[/color]
My OXPs via Boxspace or from my Wiki pages .
Thargoid TV
Dropbox Referral Link
Thargoid TV
Dropbox Referral Link
- Killer Wolf
- ---- E L I T E ----
- Posts: 2279
- Joined: Tue Jan 02, 2007 12:38 pm
Re: Scripting requests
cheers bud, i'll try again when i get home.
edit : didn't work.
changed the new stuff to
the GUI doesn't come up on view direction changes now, but neither does it come up for F5~F8.
BTW, in the log i'm also getting
which i assume is not related?
cheers...
edit : didn't work.
changed the new stuff to
Code: Select all
this.viewDirectionChanged = function(viewString)
{
if(viewString === "VIEW_GUI_DISPLAY")
{
player.ship.hud = "phantomGUI.plist";
}
else if(player.alertHostiles && player.ship.energy > 108 && viewString != "VIEW_GUI_DISPLAY")
{
player.ship.hud = "phantomCombatHUD.plist";
}
else if(player.ship.energy < 109)
{
player.ship.hud = "phantomSnafuHUD.plist";
}
else
{
player.ship.hud = "phantomNormalHUD.plist";
}
}
BTW, in the log i'm also getting
Code: Select all
17:42:24.529 [debugTCP.disconnect]: No connection to debug console: "Connection to debug console failed: 'No connection could be made because the target machine actively refused it.
' (outStream status: 7, inStream status: 7)."
17:42:24.529 [debugTCP.disconnect]: No connection to debug console: "Connection to debug console failed: 'unknown error.' (outStream status: 0, inStream status: 0)."
17:42:24.529 [debugTCP.connect.failed]: Failed to connect to debug console at address 127.0.0.1:8563.
cheers...
- CommonSenseOTB
- ---- E L I T E ----
- Posts: 1397
- Joined: Wed May 04, 2011 10:42 am
- Location: Saskatchewan, Canada
Re: Scripting requests
Killer Wolf, if you want I can try to help you as best I can. In doing the Sniper Camera System I found that it works best to only use viewDirection when going between views or going into or out of a specific view. When I want to react to a screen change for instance to go from any view to f5-f8 I use:
this.guiScreenChanged = function()
{
if(guiScreen !== "GUI_SCREEN_MAIN")
{
your code here.
or to go from f5-f8 to any view I use:(currently haven't used this one but should work)
this.guiScreenChanged = function()
{
if(guiScreen === "GUI_SCREEN_MAIN")
{
your code here.
for going to a specific view from any other view(or screen) I use:
this.viewDirectionChanged = function(to, from)
{
if(to === "VIEW_FORWARD" && from !== "VIEW_FORWARD")
{
your code here.
for going to any other view(or screen) from a specific view I use:
this.viewDirectionChanged = function(to, from)
{
if(to !== "VIEW_FORWARD" && from === "VIEW_FORWARD")
{
your code here.
When I saw your code posted awhile ago with viewString I tried it but couldn't get it to work. Without "to && from" I would use:
this.viewDirectionChanged = function()
{
if(viewDirection === "VIEW_FORWARD")
{
your code here.
One thing to remember is that this.guiScreenChanged = function() only fires on a screen change and this.viewDirectionChanged = function(to, from) only fires on a views change. As I understand it. Hopefully I listed everything correctly.
I hope this helps you out. Can't wait to see more built-in huds in your excellent ships. If this doesn't help feel free to PM me the link for the files and I will fix it for you ASAP first priority over everything else I'm currently doing. I don't want to see you waste your time on this when you could be modelling and texturing some cool ships. Cheers.
this.guiScreenChanged = function()
{
if(guiScreen !== "GUI_SCREEN_MAIN")
{
your code here.
or to go from f5-f8 to any view I use:(currently haven't used this one but should work)
this.guiScreenChanged = function()
{
if(guiScreen === "GUI_SCREEN_MAIN")
{
your code here.
for going to a specific view from any other view(or screen) I use:
this.viewDirectionChanged = function(to, from)
{
if(to === "VIEW_FORWARD" && from !== "VIEW_FORWARD")
{
your code here.
for going to any other view(or screen) from a specific view I use:
this.viewDirectionChanged = function(to, from)
{
if(to !== "VIEW_FORWARD" && from === "VIEW_FORWARD")
{
your code here.
When I saw your code posted awhile ago with viewString I tried it but couldn't get it to work. Without "to && from" I would use:
this.viewDirectionChanged = function()
{
if(viewDirection === "VIEW_FORWARD")
{
your code here.
One thing to remember is that this.guiScreenChanged = function() only fires on a screen change and this.viewDirectionChanged = function(to, from) only fires on a views change. As I understand it. Hopefully I listed everything correctly.
I hope this helps you out. Can't wait to see more built-in huds in your excellent ships. If this doesn't help feel free to PM me the link for the files and I will fix it for you ASAP first priority over everything else I'm currently doing. I don't want to see you waste your time on this when you could be modelling and texturing some cool ships. Cheers.
Take an idea from one person and twist or modify it in a different way as a return suggestion so another person can see a part of it that can apply to the oxp they are working on.
CommonSense 'Outside-the-Box' Design Studios Ltd.
WIKI+OXPs
CommonSense 'Outside-the-Box' Design Studios Ltd.
WIKI+OXPs
Re: Scripting requests
Your second error: looks like you've got a (new?) firewall blocking communications between Oolite & the console, or maybe you've turned the js console off - if it's the second case, your error message is just confirming that when Oolite tried to talk to the js console, it just couldn't find it...
Hmmm, this thread seems to have become anything other than scripting requests in the last few posts... A_C, what do you think? Split to a new thread?
Hmmm, this thread seems to have become anything other than scripting requests in the last few posts... A_C, what do you think? Split to a new thread?
Hey, free OXPs: farsun v1.05 & tty v0.5! :0)
-
- Quite Grand Sub-Admiral
- Posts: 6683
- Joined: Wed Feb 28, 2007 7:54 am
Re: Split: viewDirectionChanged woes
OK, split.