-
Notifications
You must be signed in to change notification settings - Fork 4
/
ffxiv_gather.php
executable file
·125 lines (105 loc) · 2.8 KB
/
ffxiv_gather.php
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
#!/usr/bin/php
<?php
/**
* Gathering data harvester
*
* PHP version 5
*
* @category Final_Fantasy_XIV
* @package FfxivDataSet
* @author Aric Stewart <[email protected]>
* @copyright 2019 Aric Stewart
* @license Apache License, Version 2.0
* @link <none>
**/
/*.
require_module 'standard';
.*/
require_once __DIR__."/ffxivData.inc";
require_once __DIR__."/universalis.inc";
require __DIR__.'/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::create(__DIR__);
$dotenv->load();
function printProfit($profit)
{
if ($profit['Profit'] > 0) {
$hq = ' ';
if ($profit['HQ']) {
$hq = '(*)';
}
print "\n\t$hq cheapest: ".$profit['Cheapest']['Item']->pricePerUnit." gil\n";
print "\t$hq Profit: ".$profit['Profit']." gil\n";
print "\t$hq week (".$profit['Week']['Minimum'].' <- '.$profit['Week']['Average'].' -> '.$profit['Week']['Maximum'].' gil)';
$profit[] = $profit;
}
}
$xiv = new Universalis($_ENV['server']);
$xiv->verbose = false;
print "Intializing...\n";
$data = new FfxivDataSet();
$data->loadGathering();
print "Processing ...\n";
$profit = [];
$stuff = array_reverse($data->gather);
$limit = count($stuff);
if ($argv[1]) {
$i = 1;
if ($argv[$i] == '-l') {
$i++;
$limit = intval($argv[$i]);
}
if ($argv[$i]) {
if (!is_numeric($argv[$i])) {
$result = $data->getItem($argv[$i]);
if ($result === null) {
print 'Could not find item \''.$argv[$i]."'\n";
exit();
}
$stuff = [$data->gather[$result->Index]];
$limit = 1;
} else {
$stuff = [$data->gather[$argv[$i]]];
$limit = 1;
}
}
}
$count = 0;
foreach ($stuff as $item) {
$count++;
$idb = $data->getItem($item['Item']);
if ($idb != null) {
if ($idb->IsUntradable) {
continue;
}
if ($limit !== null) {
$limit--;
if ($limit < 0) {
break;
}
}
$added = false;
print "($count/$limit): ".$idb->Name.'('.$item['Item'].') ';
$profitLQ = $xiv->itemProfit($item['Item'], false);
printProfit($profitLQ);
if ($profitLQ['Profit'] > 0) {
$profit[] = $profitLQ;
}
$profitHQ = $xiv->itemProfit($item['Item'], true);
printProfit($profitHQ);
if ($profitHQ['Profit'] > 0) {
$profit[] = $profitHQ;
}
print "\n";
}
}
print "<===================================================================>\n";
function _sortByOrder($a, $b)
{
return $a['Profit'] - $b['Profit'];
}
usort($profit, '_sortByOrder');
foreach ($profit as $p) {
print "! ".$data->item[$p['ID']]->Name;
printProfit($p);
print "\n";
}