-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmyserver.js
More file actions
157 lines (140 loc) · 5.33 KB
/
myserver.js
File metadata and controls
157 lines (140 loc) · 5.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
export function myServerPriceList(ns) {
let purchasedServerCache = ns.getPurchasedServers();
let ramNumber = 1, upgradeRamCost = 0, purchaseRamCost = 0;
for (let i = 0; i < 20; i++) {
ramNumber *= 2;
for(let srv=0; srv < purchasedServerCache.length; srv++){
let srvname = purchasedServerCache[srv];
upgradeRamCost = ns.getPurchasedServerUpgradeCost(srvname, ramNumber);
if(upgradeRamCost > 0) {
break;
}
}
purchaseRamCost = ns.getPurchasedServerCost(ramNumber);
ns.tprintf("-----------------------------------------------------");
if (upgradeRamCost > 0) {
ns.tprintf("%s -> %i GB RAM would cost you\n\tNEW $%s / UPGRADE $%s", ns.formatRam(ramNumber), ramNumber, ns.formatNumber(purchaseRamCost), ns.formatNumber(upgradeRamCost));
} else {
ns.tprintf("%s -> %i GB RAM would cost you\n\tNEW $%s", ns.formatRam(ramNumber), ramNumber, ns.formatNumber(purchaseRamCost));
}
}
}
export function myServerPurchase(ns, ramNumber){
const hostName = "srv";
let ramCost = ns.getPurchasedServerCost(ramNumber);
let buySuccess = ns.purchaseServer(hostName, ramNumber);
ns.tprintf("Buying a server with (%s RAM) for $%s -> %s.", ns.formatRam(ramNumber), ns.formatNumber(ramCost), buySuccess ? "Success" : "Failed");
return buySuccess;
}
export function myServerPurchaseAll(ns, ramNumber){
let successCount = 0;
while(true) {
const upgradeSuccess = myServerPurchase(ns, ramNumber);
if(upgradeSuccess) {
successCount ++;
} else {
break; // cannot buy any more servers for any reason, breaks the loop.
}
}
return successCount;
}
export function myServerUpgrade(ns, hostName, ramNumber) {
let ramCost = ns.getPurchasedServerUpgradeCost(hostName, ramNumber);
let upgradeSuccess = ns.upgradePurchasedServer(hostName, ramNumber);
ns.tprintf("Upgrade %s to %s RAM for $%s -> %s.", hostName, ns.formatRam(ramNumber), ns.formatNumber(ramCost), upgradeSuccess ? "Success" : "Fail");
return upgradeSuccess;
}
export function myServerUpgradeAll(ns, ramNumber){
const purchasedServerCache = ns.getPurchasedServers();
let successCount = 0;
for(let srv=0; srv < purchasedServerCache.length; srv++){
const serverName = purchasedServerCache[srv];
const upgradeSuccess = myServerUpgrade(ns, serverName, ramNumber);
if(upgradeSuccess) {
successCount ++;
}
}
return successCount;
}
export function myServerRename(ns, curHostName, newHostName) {
let renameSuccess = ns.renamePurchasedServer(curHostName, newHostName);
ns.tprintf("Rename server from %s to %s -> %s.", curHostName, newHostName, renameSuccess ? "Success" : "Failed");
return renameSuccess;
}
export function myServerRenameAll(ns, templateHostName) {
let renameSuccessCount = 0;
let purchasedServerCache = ns.getPurchasedServers();
for(let srv=0; srv < purchasedServerCache.length; srv++){
let curHostName = purchasedServerCache[srv];
let newHostName = ns.sprintf("%s-%i", templateHostName, srv+1)
let renameSuccess = ns.renamePurchasedServer(curHostName, newHostName);
if(renameSuccess) {
renameSuccessCount++;
}
}
return renameSuccessCount;
}
export function printMyServers(ns) {
let purchasedServerCache = ns.getPurchasedServers();
ns.tprintf("%i server(s)...", purchasedServerCache.length);
for(let srv=0; srv < purchasedServerCache.length; srv++){
const serverName = purchasedServerCache[srv];
const serverRam = ns.getServerMaxRam(serverName);
ns.tprintf("%s (%s RAM)", serverName, ns.formatRam(serverRam));
}
}
/** @param {NS} ns */
export async function main(ns) {
if(ns.args.length >= 1 && ns.args[0] == "prices") {
myServerPriceList(ns);
} else if(ns.args.length >= 1 && ns.args[0] == "purchase") {
if(ns.args.length >= 2) {
myServerPurchase(ns, ns.args[1]);
} else {
ns.tprintf("Parameters: <RAM GB>");
}
} else if(ns.args.length >= 1 && ns.args[0] == "purchaseall") {
if(ns.args.length >= 2) {
const successCount = myServerPurchaseAll(ns, ns.args[1]);
if(successCount > 0) {
printMyServers(ns);
}
} else {
ns.tprintf("Parameters: <RAM GB>");
}
} else if(ns.args.length >= 1 && ns.args[0] == "upgrade") {
if (ns.args.length >= 3) {
myServerUpgrade(ns, ns.args[1], ns.args[2]);
} else {
ns.tprintf("Parameters: <hostname> <RAM GB>");
}
} else if(ns.args.length >= 1 && ns.args[0] == "upgradeall") {
if (ns.args.length >= 2) {
const successCount = myServerUpgradeAll(ns, ns.args[1]);
if(successCount > 0) {
printMyServers(ns);
}
} else {
ns.tprintf("Parameters: <RAM GB>");
}
} else if(ns.args.length >= 1 && ns.args[0] == "rename") {
if (ns.args.length >= 3) {
myServerRename(ns, ns.args[1], ns.args[2]);
} else {
ns.tprintf("Parameters: <hostname> <new hostname>");
}
} else if(ns.args.length >= 1 && ns.args[0] == "renameall") {
if (ns.args.length >= 2) {
const templateName = ns.args[1];
const successCount = myServerRenameAll(ns, templateName);
if(successCount > 0) {
printMyServers(ns);
}
ns.tprintf("%i servers were renamed with the template %s.", successCount, templateName);
} else {
ns.tprintf("Parameters: <new template hostname>");
}
} else if(ns.args.length >= 1 && ns.args[0] == "get") {
printMyServers(ns);
}
}