Page 2 of 6

Posted: Tue Jul 20, 2010 3:52 pm
by Arexack_Heretic
yay! My ignorance feeds the pyres of change and progress once more! ;)

Got my shoes, my keyboard and a packet of green putty, also had a litre of beer or so...it's like the swamps of Diso out there! (or was it Inrere? No OO on this labtop. :p))

Later tonight, I'll get to integrating above legacy plist material with the js mission variables, so that profit will vary and will be mentioned in the sales proposal.
I think I'll have two values the basic rate which will be used in the mission screen and the final price after haggling which wil determine the ...um... profit.

Also I'll have the fines for getting caught be relative to the gov't type of the system, I think. (they are now small fixed values, as profit was also fixed.)

--
Just had a thought to loop the punishment script for the most severe punishment, untill the player has no more EQ_TRUMBLE_IN_BOX left.
...will need to find out how to determine the number of a EQ_type, for the sentence screen.

Posted: Tue Jul 20, 2010 4:14 pm
by Thargoid
Currently (s)he'll only be able to have one EQ_TRUMBLE_IN_BOX - the only equipment you can have multiples of are pylon-mounted kit. Hmm, have I just given inspiration for a pylon-mounted trumble? :twisted:

But what you could do is use the purchase of an EQ_TRUMBLE_IN_BOX to increment a missionVariable counter, and then remove the equipment. That way multiple purchases could be simulated (and you could limit it if you wanted by having availability conditional that the mV is less than a certain maximum count). Then also the number you have would be readily available as the mV value.

It would mean also that they wouldn't show up on the equipment list (and so be combat-damagable), but you could list them on the F5-F5 screen using a mission short description tag or something. Works all around really...

Posted: Tue Jul 20, 2010 4:29 pm
by Arexack_Heretic
I don't like it, but it might prove neccesary as being limited to a single trumble for sale wouldn't work.

Maybe I could just set a mV_# to a specific number once the EQ is bought (may have several EQ, that are incompatible, that grant different numbers of boxes to sell.) the mV is decremented by each sale/confiscation untill it reaches zero, at which time script could remove the TBOX_EQ.
edit: shipyard just requires eq_trumbles, and is removed as soon as bought hopefully, incrementing a missioncounter.


Won't a f5f5 mission descriptor interfere with other mission scripts using this page?

Posted: Tue Jul 20, 2010 4:37 pm
by Thargoid
Arexack_Heretic wrote:
Won't a f5f5 mission descriptor interfere with other mission scripts using this page?
No - you can set one short listing in the F5-F5 screen per script. The only problem comes when you have too many OXPs (scripts) running that do and the screen overflows. But that's rare, and the player's own fault and problem.

If you have the box as "true" equipment, then it will show up on the equipment list (on the status F5 screen) and in combat there would be a chance that it could get damaged (although soon if not now you'll be able to control that iirc).

If it were me I'd do it via the mV as I outlined, but it's your concept...

Posted: Tue Jul 20, 2010 7:56 pm
by Arexack_Heretic
I'm going with your suggestion, but it means everything will need to be rewritten.
I found the expand description reference here by the way, under global.
(I'm looking for a list of the triggers, such as when does this.startUp() run? once on load, when the worldscripts are run I suppose.
edit: Ah, yes before demo runs.

Posted: Tue Jul 20, 2010 8:04 pm
by Thargoid
World Script and ship script event handlers, just for reference.

This.startUp() runs as you say whenever the world scripts are run - when the game first loads, when you load a saved game and when the game restarts after you die.

Posted: Tue Jul 20, 2010 10:45 pm
by myst.RAVEN
Arexack_Heretic wrote:
Like a thick accent. (More like Afrikaans v Dutch actually, as some basic stuff are just plain different)
An interesting analogy - I'm from South Africa, so I know exactly what you mean :D (Yes, off-topic, I know, but it's just that I doubt all that many people are familiar with Afrikaans...)

Posted: Tue Jul 20, 2010 10:49 pm
by Arexack_Heretic
Whot?! Even with the FIFA world soccer cup held at your place?

Oh well, must be the historic connection that makes Afrikaans interesting for us hollanders. :)

edit:
Almost ready with rewriting to the second concept. I'll not be testing tonight, dat bedone on the morn.

I'll just make a start with having trumbles turn to fur when prepared.
edit^2:
Just realised something: free fur. I wanted to make getting rid of eq_trumble impossible as long as you have trumble in box onboard... will the free fur from trumbles be off balance, or will it just create a new career path: the furtrader? [spoiler] (you do need to buy food and let them multiply for a while)[/spoiler]

Another thing: how does the 'while' loop function in JS?
I assume something like:

Code: Select all

while (missionVariables.My_number<10)
{missionVariables.My_number+=1;}

Posted: Wed Jul 21, 2010 10:47 am
by Svengali
Yep. that's the way it works.

And a interesting page about loops -> http://4umi.com/web/javascript/optimize.php

Posted: Wed Jul 21, 2010 11:21 am
by Kaks
Hmm, beats me why, but it seems a few people are keen to use the missionVariables object.

They're good (well, the only option, so not awful by definition) for storing information onto a save game, but they're bad for everything else: every single time you use a missionVariable, it'll slow down your OXP considerably.

Please use proper javascript variables instead, whenever possible. You'll thank me later! :twisted:

Posted: Wed Jul 21, 2010 12:24 pm
by Arexack_Heretic
you mean like:

var i = value

or plain

x = value

? Ive seen both uses in oxp JS.

edit: the loop example link posted above uses the former. I see it advocates processing loops in batches, interesting notion. I'm not going to use that i suspect, simplicity is what I like. My code will only run the loop below 100 times, and only for one rare event, as it handles jailtime a slowdown might actually be beneficial to immersion. :P
The net profit of several microseconds per hours of playtime would hardly be noticable though.

---
I could use temporary variable for storing the trumblenumber before getting fried, but I'd have to add lines for creating it at launch as well. small issue.

For storing the number of boxes onboard, I'd rather use the saved variables, they are already a step less permanent than the actual equipment objects that I would have preferred.

I'll considder your advice though. I am using the missionvariables to store localized information as well.... those values are used in the missiontexts...If using Var, the text script is going to get a bit more complex I fear.

Also I hereby dub you my honorary Murgh. ;)
eg. my JS mojo is still weak compared to yours.... I will be relying on you guys, Thargoid and Kaks (edit and Erik W), to make optimisation suggestions etc. :)
...if not rewrite the entire script! :lol:

Posted: Wed Jul 21, 2010 12:44 pm
by Eric Walch
Kaks wrote:
Please use proper javascript variables instead, whenever possible. You'll thank me later! :twisted:
Ah, you mean the difference between:

Code: Select all

> :time {missionVariables.My_number = 0; while (missionVariables.My_number<10) {missionVariables.My_number+=1;}}

Total time: 100.881 ms
JavaScript: 0.178317 ms, native: 100.703 ms
and

Code: Select all

> :time {var i = 0; while (i<10) {i+=1;}}

Total time: 0.004892 ms
JavaScript: 0.004892 ms, native: 0 ms
it is only a difference of 100 msec. Almost nothing, a blink of an eye. (Don't express it in percentages as it looks like it takes several 1000 times longer.)
EDIT: Changed the starting value from 10 to 0

Posted: Wed Jul 21, 2010 12:49 pm
by Kaks
Didn't you 'break' Murgh? Can I be someone else? :D

Anywho, yes I mean var i; (and/or var i=something;)

Code: Select all

x = something;
normally means it's declared as a variable at some other point earlier on in the code. To use js variables you first need to declare them (either with var or with the less standard let)

There's a number of nice js primers online. Have a look at the 12 'javascript basics' articles you can see from this page, they should clarify quite a few things, and better than I could ever do:

http://www.htmlgoodies.com/primers/jsp/

some of them are exclusively talking about html specific stuff like part 6 or 7, so I'd ignore those, but quite a lot of the rest talks about the language itself, as found inside Oolite! :)

Posted: Wed Jul 21, 2010 1:00 pm
by Arexack_Heretic
Thanks, that is a great resource!

I'd looked (admittedly only briefly) online for JS for dummies, primers, for beginners, JS fundamentals or similar, but they all seemed to focus on webpages and HTML interaction whatever. Not very clear. The information found on our own OO-wiki was far superior. :)

Don't worry about Murgh, I'll be more gentle with you, I promise. :twisted:


edit:
that said, i have a question:
in order to award furs for removing all trumbles, I need an eventtrigger.
at first I thought to use a close to sun aegis, but that does not exist.
then, I thought to use cabinheat, but that is just a value, not a trigger.
my current target is this trigger, as in principle I need only check when the EQ_TRUMBLE is lost. (I assume it counts as destroyed)
So at entering a system(and launching), the value of trumbleCount is saved in a variable. When an EQ is destroyed*, a check is made for EQ_T, if not present, if the trumblevariable has a value, award a Tn of fur/grand of trumbles. (I assume excess cargo is simply lost, but could also award cargo equal to ship.cargoSpaceAvailable)... can't find the reference to awardCargo anywhere...I'll check what was done to make our cargo oxp work.
*could add temperature condition here as well to reduce superfluous checks.
edit2: Oh yeah, my question. The reference states worldscript only, what does this mean ?
edit3: nevermind, I figured it out: missionscripts are called from worldscript, thus are worldscript.

Posted: Wed Jul 21, 2010 2:07 pm
by Eric Walch
Arexack_Heretic wrote:
at first I thought to use a close to sun aegis, but that does not exist.
It does, try adding in your code:

Code: Select all

this.shipEnteredPlanetaryVicinity = function(planet)
{
    if(planet.isSun)
        log("test","Player enters aegis of sun with radius: "+ planet.radius) 
    else if(planet.hasAtmosphere)
        log("test","Player enters aegis of planet with radius: "+ planet.radius) 
    else
        log("test","Player enters aegis of moon with radius: "+ planet.radius) 
}
At least in 1.74 it will work for the sun.
EQ_TRUMBLE is lost. (I assume it counts as destroyed)

Won't work, as this equipment is immediately removed again when infected.
can't find the reference to awardCargo anywhere
Changed with 1.74. look at manifest now. Unlike the old method, you can now also remove cargo.