Page 106 of 118
Re: Scripters cove
Posted: Fri Jul 08, 2022 11:15 pm
by Old Murgh
phkb wrote: ↑Fri Jul 08, 2022 10:50 pm
My suggestion is
Because it removes unnecessary calculations, while still being clear what percentage is being checked, in this case a 10% chance. To make it 50% just change 0.1 to 0.5.
Thanks. That feels much easier to get my head around.
Re: Scripters cove
Posted: Fri Jul 15, 2022 6:50 pm
by Slartibartfast
Hello
again i have some simple questions
===> equipment.plist / "canCarryMultiple"
F.x. from "FuelTweaks.oxz": --> "Quirium Fuel Storage Unit"
- - (Is it possible to / How can i) get the number of installed pieces in a script?
- - Is it possible the set a maximum of pieces for a a ship? ( maybe in shipdata.plist )
matthias
Re: Scripters cove
Posted: Sat Jul 16, 2022 5:34 am
by phkb
Slartibartfast wrote: ↑Fri Jul 15, 2022 6:50 pm
- - (Is it possible to / How can i) get the number of installed pieces in a script?
This should get you going:
Code: Select all
var data = player.ship.equipmentStatus("EQ_FUEL_STORAGE", true);
log(this.name, "Number of EQ_FUEL_STORAGE units OK: " + data["EQUIPMENT_OK"]);
log(this.name, "Number of EQ_FUEL_STORAGE units Damaged: " + data["EQUIPMENT_DAMAGED"]);
Slartibartfast wrote: ↑Fri Jul 15, 2022 6:50 pm
- - Is it possible the set a maximum of pieces for a a ship? ( maybe in shipdata.plist )
Only via script I'm afraid.
Code: Select all
this.playerBoughtEquipment = function(equipmentKey, paid) {
if (equipmentKey == "EQ_FUEL_STORAGE") {
var data = player.ship.equipmentStatus("EQ_FUEL_STORAGE", true);
// make the limit 10 units
if (data["EQUIPMENT_OK"] + data["EQUIPMENT_DAMAGED"] > 10) {
// remove the item
player.ship.removeEquipment("EQ_FUEL_STORAGE");
// refund the player
player.credits += paid;
}
}
}
Re: Scripters cove
Posted: Sat Jul 16, 2022 2:30 pm
by Slartibartfast
Hello Admiral
Thank you!
--- works great
only one small correction
in the second script snip i had to replace
player.credits += paid;
---with
player.credits += (paid / 10);
else i have a moneymaking machine.
cheers
Slartibartfast
Re: Scripters cove
Posted: Sat Jul 16, 2022 10:57 pm
by phkb
Slartibartfast wrote: ↑Sat Jul 16, 2022 2:30 pm
only one small correction
in the second script snip i had to replace
player.credits += paid;
---with
player.credits += (paid / 10);
Right! I should update the doco to reflect this. *makes mental note*
Re: Scripters cove
Posted: Thu Jul 21, 2022 10:27 am
by Slartibartfast
hi
==> equipment.plist
from:
https://wiki.alioth.net/index.php/Equipment.plist
1) The first entry is an integer that determines the technical level from which the equipment can be bought. A level of 99 has a special meaning. Only this value can be changed by script. Please note that the number displayed on the system data screen is one higher than the system's tech level, so to make equipment available at a displayed TL:10 and above in game, enter 9 here
but in my logs this appears: --- veryveryveryvery often
Code: Select all
[oxp-standards.deprecated]: TL99 is deprecated for EQ_.......
What should i use instead of "99" to make EQ not buyable?
I have not found any info -- neither in the wiki, nor in the forum.
Matthias
Re: Scripters cove
Posted: Thu Jul 21, 2022 10:59 am
by Slartibartfast
next question about equipment.plist
to make "requires (equipment_a AND equipment_b)"
i have made this
Code: Select all
"requires_equipment" = "EQ_A";
"requires_any_equipment" = ("EQ_B");
does anybody now a better way?
cheers
Re: Scripters cove
Posted: Thu Jul 21, 2022 12:38 pm
by montana05
Slartibartfast wrote: ↑Thu Jul 21, 2022 10:27 am
What should i use instead of "99" to make EQ not buyable?
I have not found any info -- neither in the wiki, nor in the forum.
Matthias
Good evening Matthias,
did you have a closer look at
"available_to_all" =
"available_to_NPCs" =
"available_to_player" =
?
Re: Scripters cove
Posted: Thu Jul 21, 2022 12:41 pm
by montana05
Slartibartfast wrote: ↑Thu Jul 21, 2022 10:59 am
next question about equipment.plist
to make "requires (equipment_a AND equipment_b)"
i have made this
Code: Select all
"requires_equipment" = "EQ_A";
"requires_any_equipment" = ("EQ_B");
does anybody now a better way?
cheers
requires_equipment, requires_any_equipment, incompatible_with_equipment can be a single string
or an array of strings.
For both issues, you can also use a condition script.
Re: Scripters cove
Posted: Thu Jul 21, 2022 12:50 pm
by Slartibartfast
Hi montana
when i set
"available_to_all" = no
i can´t install that via script/player.ship.awardEquipment
with "99" and "= yes" it works as i want
Re: Scripters cove
Posted: Thu Jul 21, 2022 1:09 pm
by montana05
Slartibartfast wrote: ↑Thu Jul 21, 2022 12:50 pm
Hi montana
when i set
"available_to_all" = no
i can´t install that via script/player.ship.awardEquipment
with "99" and "= yes" it works as i want
I had a similar issue in the past, just can't remember in which OXP. As much as I recall, I used a condition script at the end. I am currently relaxing with a bottle of sake on the beach, so no access to my database. I can have a look tomorrow morning and, hopefully, provide you with a solution.
EDIT:
For now, please have a look at this:
https://wiki.alioth.net/index.php/Oolit ... on_scripts. this.allowAwardEquipment = function(eqKey, ship, context) is probably what you are looking for.
Re: Scripters cove
Posted: Thu Jul 21, 2022 1:13 pm
by Slartibartfast
==> equipment.plist / requires
ok this works fine
Code: Select all
"requires_equipment" = ("EQ_A","EQ_B");
maybe the wiki should be updated
like this:
"requires_equipment" = ("EQ_FUEL_SCOOPS, "EQ_OTHER"); // array of strings - add as much as you want
Re: Scripters cove
Posted: Thu Jul 21, 2022 1:53 pm
by Slartibartfast
--> equipment.plist / TL99
hmmm
a "condition-script " as solution
for me that seems to be more a "workaround"
==> for the next time i stay with "99"
and
( linux/bash)
Code: Select all
grep -v deprecated Latest.log > Last.log
Re: Scripters cove
Posted: Thu Jul 21, 2022 9:57 pm
by Old Murgh
phkb wrote: ↑Fri Jul 08, 2022 10:50 pm
My suggestion is
Because it removes unnecessary calculations, while still being clear what percentage is being checked, in this case a 10% chance. To make it 50% just change 0.1 to 0.5.
My finger has slipped somewhere. I thought I had a handle on this as a template but
Code: Select all
//add magmiss to system
this.systemWillPopulate = function ()
{
if (Math.random() < 0.2) // sets a 20% chance
{
system.setPopulator("magmiss",
{
callback: function(pos)
{
system.addShips("magmiss", worldScripts["magmiss_populator"].$getRndInteger(1), pos); // spawns 1 ship with role magmiss
}.bind(this),
location: "LANE_WP",
locationSeed: 0
// 0 = completely random position on the lane, otherwise use a specific seed number to have them in the same position each time
});
}
}
this.$getRndInteger = function(min, max)
{
return (Math.floor(Math.random() * (max - min + 1) ) + min);
};
Gives this error.
Code: Select all
23:39:23.975 [script.javaScript.exception.ooliteDefined]: ***** JavaScript exception (magmiss_populator b1): Error: System.addShips: Invalid arguments (NaN) -- expected number (positive count no greater than 64).
Does this have to do with me thinking I could alter this line
Code: Select all
system.addShips("scrub", worldScripts["scrub_populator"].$getRndInteger(1, 2), pos); // spawns 1 - 3 ships with role scrub
But changing (1, 2) to (1) doesn't actually mean I reduce it to 1 ship..?
Re: Scripters cove
Posted: Thu Jul 21, 2022 10:07 pm
by phkb
Old Murgh wrote: ↑Thu Jul 21, 2022 9:57 pm
But changing (1, 2) to (1) doesn't actually mean I reduce it to 1 ship..?
You'd need to use (1, 1). But in that case, there is no need to call the function at all, because it would only ever return 1.