root/dev/mods/rank_mod/rank.php @ 378

Revision 378, 22.4 KB (checked in by kovell, 13 years ago)

API feed caches date properly. Rank mod has missing TopLists?. Parser has better spelling.

Line 
1<?php
2require_once('common/includes/class.toplist.php');
3require_once('common/includes/class.pilot.php');
4require_once('common/includes/class.killlist.php');
5
6class TopWeaponListNoLimit extends TopList
7{
8    function TopWeaponList()
9    {
10        $this->TopWeaponListNoLimit();
11    }
12
13    function generate()
14    {
15        $sql = "select count(1) as cnt, ind.ind_wep_id as itm_id, itm.itm_group as itm_grp
16                from kb3_inv_detail ind
17                    inner join kb3_items itm on (itm_id = ind.ind_wep_id)";
18        if (DB_USE_CCP)
19        {
20            $sql = "select count(*) as cnt, ind.ind_wep_id as itm_id, itm.GroupID as itm_grp
21                      from kb3_inv_detail ind
22                      inner join kb3_invtypes itm on (typeID = ind.ind_wep_id)";
23        }
24
25        if ($this->invplt_)
26            $sqlbottom .= " and ind.ind_plt_id = ".$this->invplt_->getID();
27
28        if ($this->invcrp_)
29            $sqlbottom .= " and ind.ind_crp_id = ".$this->invcrp_->getID();
30
31        if ($this->invall_)
32            $sqlbottom .= " and ind.ind_all_id = ".$this->invall_->getID();
33
34        $this->setSQLTop($sql);
35        if (DB_USE_CCP)
36        {
37            // since ccps database doesnt have icons for ships this will also fix the ship as weapon bug
38            $this->setSQLBottom(" and itm.volume < '12000'
39                                  and itm.typeName != 'Unknown'
40                                  group by ind.ind_wep_id order by 1 desc");
41        }
42        else
43        $this->setSQLBottom(" //and itm.itm_icon not in ( '1', 'icon_null' )
44                             and itm.itm_name != 'Unknown'
45                             group by ind.ind_wep_id order by 1 desc");
46    }
47}
48
49class TopShipListNoLimit extends TopShipList
50{
51    function TopShipListNoLimit()
52    {
53        $this->TopShipList();
54    }
55
56    function generate()
57    {
58        $sql = "select count(1) as cnt, ind.ind_shp_id as shp_id, shp.shp_class as cls_id
59              from kb3_inv_detail ind
60              inner join kb3_ships shp on ( shp_id = ind.ind_shp_id )";
61
62        if ($this->invplt_)
63            $sqlbottom .= " and ind.ind_plt_id = ".$this->invplt_->getID();
64
65        if ($this->invcrp_)
66            $sqlbottom .= " and ind.ind_crp_id = ".$this->invcrp_->getID();
67
68        if ($this->invall_)
69            $sqlbottom .= " and ind.ind_all_id = ".$this->invall_->getID();
70
71        $this->setSQLTop($sql);
72        $this->setSQLBottom(" and ind.ind_shp_id != 31
73                             and shp.shp_class != 17
74                             group by ind.ind_shp_id order by 1 desc");
75    }
76}
77
78function TimeID2Str($time_id)
79{
80  $div = strtok($time_id," - ");
81  switch ($div[1]) {
82    case "01": $strtime = "January"; break;
83    case "02": $strtime = "February"; break;
84    case "03": $strtime = "March"; break;
85    case "04": $strtime = "April"; break;
86    case "05": $strtime = "May"; break;
87    case "06": $strtime = "June"; break;
88    case "07": $strtime = "July"; break;
89    case "08": $strtime = "August"; break;
90    case "09": $strtime = "September"; break;
91    case "10": $strtime = "October"; break;
92    case "11": $strtime = "November"; break;
93    case "12": $strtime = "December"; break;
94  }
95  $strtime .= " ".$div[0];
96  return $strtime;
97}
98
99function GetEnabledClasses( &$ship_badges )
100{
101
102$shipbadges=array(
103array( 'type' => 'frigate', 'name' => 'Frigate', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 0
104array( 'type' => 'destroyer', 'name' => 'Destroyer', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),              // 1
105array( 'type' => 'cruiser', 'name' => 'Cruiser', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 2
106array( 'type' => 'battlecruiser', 'name' => 'Battlecruiser', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),      // 3   
107array( 'type' => 'battleship', 'name' => 'Battleship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),            // 4
108array( 'type' => 'capital', 'name' => 'Capital', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 5
109array( 'type' => 'industrial', 'name' => 'Industrial', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),            // 6
110array( 'type' => 'kamikaze', 'name' => 'Shuttle, Pod & Noobship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0)  // 7
111);
112
113
114$ship_sub_badges=array(
115array( 'parent' => 0, 'type' => 'assault', 'name' => 'Assault Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                      // 0
116array( 'parent' => 0, 'type' => 'interceptor', 'name' => 'Interceptor', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                   // 1
117array( 'parent' => 0, 'type' => 'covert', 'name' => 'Covert Ops', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                         // 2
118array( 'parent' => 0, 'type' => 'electronic', 'name' => 'Electronic Attack Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0), // 3
119array( 'parent' => 1, 'type' => 'interdictor', 'name' => 'Interdictor', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                   // 4
120array( 'parent' => 2, 'type' => 'hac', 'name' => 'Heavy Assault Cruiser', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                 // 5
121array( 'parent' => 2, 'type' => 'hactor', 'name' => 'Heavy Interdictor', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 6
122array( 'parent' => 2, 'type' => 'logistic', 'name' => 'Logistic Cruiser', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                 // 7
123array( 'parent' => 2, 'type' => 'recon', 'name' => 'Recon Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 8
124array( 'parent' => 3, 'type' => 'command', 'name' => 'Command Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                      // 9
125array( 'parent' => 4, 'type' => 'blackops', 'name' => 'Black Ops', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                        // 10
126array( 'parent' => 4, 'type' => 'marauder', 'name' => 'Marauder', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                         // 11
127array( 'parent' => 5, 'type' => 'dread', 'name' => 'Dreadnought', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                         // 12
128array( 'parent' => 5, 'type' => 'carrier', 'name' => 'Carrier', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                           // 13
129array( 'parent' => 5, 'type' => 'mom', 'name' => 'Mothership', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                            // 14
130array( 'parent' => 5, 'type' => 'titan', 'name' => 'Titan', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                               // 15
131array( 'parent' => 6, 'type' => 'barge', 'name' => 'Mining Barge', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                        // 16
132array( 'parent' => 6, 'type' => 'exhumer', 'name' => 'Exhumer', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                           // 17
133array( 'parent' => 6, 'type' => 'transport', 'name' => 'Transport Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 18
134array( 'parent' => 6, 'type' => 'capindy', 'name' => 'Cap. Industrial', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),           // 19
135array( 'parent' => 7, 'type' => 'noob', 'name' => 'N00bship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0)                              // 20
136);
137
138$enabled = config::get('rankmod_enables');
139
140$ship_badges = array();
141$cnt = 0;
142$last_parent = -1;
143foreach ($ship_sub_badges as $subclass) {
144  if ($subclass['parent'] > $last_parent) {
145    $shipbadges[$subclass['parent']]['cnt']=$subclass['parent'];       
146    $ship_badges[] = $shipbadges[$subclass['parent']];
147    $last_parent = $subclass['parent'];
148  }
149  if (strpos($enabled, $subclass['name'])) {   
150    $subclass['cnt'] = $cnt;
151    $ship_badges[] = $subclass;
152  }
153  $cnt++;
154}
155
156}
157
158function GetPilotRank($pilot_id, &$killpoints, &$medals, &$ship_badges, &$weaponbadges, &$base_rps, &$bonus_rps, &$rps)
159{
160
161$medals=array(
162array( 'type' => 'eagle', 'name' => 'Killer', 'cnt' => 0, 'mname' =>'Silver Eagle'),            // 0
163array( 'type' => 'redcross', 'name' => 'Scorer', 'cnt' => 0,  'mname' =>'Iron Cross'),          // 1
164array( 'type' => 'cross', 'name' => 'Solo Killer', 'cnt' => 0, 'mname' =>'Winged Cross'),       // 2
165array( 'type' => 'wing1', 'name' => 'Damagedealer', 'cnt' => 0, 'mname' =>'Diamond Wing'),      // 3   
166array( 'type' => 'skull', 'name' => 'Final Blows', 'cnt' => 0, 'mname' =>'Red Skull'),          // 4
167array( 'type' => 'globe', 'name' => 'Podkiller', 'cnt' => 0, 'mname' =>'Silver Globe'),         // 5
168array( 'type' => 'star', 'name' => 'Griefer', 'cnt' => 0, 'mname' =>'Golden Star'),             // 6
169array( 'type' => 'wing2', 'name' => 'ISK Killer', 'cnt' => 0, 'mname' =>'Gold Wing'),           // 7
170array( 'type' => 'moon', 'name' => 'Loser', 'cnt' => 0, 'mname' =>'Purple Moon')                // 8
171);
172
173$shipbadges=array(
174array( 'type' => 'frigate', 'name' => 'Frigate', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 0
175array( 'type' => 'destroyer', 'name' => 'Destroyer', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),              // 1
176array( 'type' => 'cruiser', 'name' => 'Cruiser', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 2
177array( 'type' => 'battlecruiser', 'name' => 'Battlecruiser', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),      // 3   
178array( 'type' => 'battleship', 'name' => 'Battleship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),            // 4
179array( 'type' => 'capital', 'name' => 'Capital', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 5
180array( 'type' => 'industrial', 'name' => 'Industrial', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),            // 6
181array( 'type' => 'kamikaze', 'name' => 'Shuttle, Pod & Noobship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0)  // 7
182);
183
184
185$ship_sub_badges=array(
186array( 'parent' => 0, 'type' => 'assault', 'name' => 'Assault Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                      // 0
187array( 'parent' => 0, 'type' => 'interceptor', 'name' => 'Interceptor', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                   // 1
188array( 'parent' => 0, 'type' => 'covert', 'name' => 'Covert Ops', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                         // 2
189array( 'parent' => 0, 'type' => 'electronic', 'name' => 'Electronic Attack Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0), // 3
190array( 'parent' => 1, 'type' => 'interdictor', 'name' => 'Interdictor', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                   // 4
191array( 'parent' => 2, 'type' => 'hac', 'name' => 'Heavy Assault Cruiser', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                 // 5
192array( 'parent' => 2, 'type' => 'hactor', 'name' => 'Heavy Interdictor', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 6
193array( 'parent' => 2, 'type' => 'logistic', 'name' => 'Logistic Cruiser', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                 // 7
194array( 'parent' => 2, 'type' => 'recon', 'name' => 'Recon Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 8
195array( 'parent' => 3, 'type' => 'command', 'name' => 'Command Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                      // 9
196array( 'parent' => 4, 'type' => 'blackops', 'name' => 'Black Ops', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                        // 10
197array( 'parent' => 4, 'type' => 'marauder', 'name' => 'Marauder', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                         // 11
198array( 'parent' => 5, 'type' => 'dread', 'name' => 'Dreadnought', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                         // 12
199array( 'parent' => 5, 'type' => 'carrier', 'name' => 'Carrier', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                           // 13
200array( 'parent' => 5, 'type' => 'mom', 'name' => 'Mothership', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                            // 14
201array( 'parent' => 5, 'type' => 'titan', 'name' => 'Titan', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                               // 15
202array( 'parent' => 6, 'type' => 'barge', 'name' => 'Mining Barge', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                        // 16
203array( 'parent' => 6, 'type' => 'exhumer', 'name' => 'Exhumer', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                           // 17
204array( 'parent' => 6, 'type' => 'transport', 'name' => 'Transport Ship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),                  // 18
205array( 'parent' => 6, 'type' => 'capindy', 'name' => 'Cap. Industrial', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),           // 19
206array( 'parent' => 7, 'type' => 'noob', 'name' => 'N00bship', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0)                              // 20
207);
208
209$weaponbadges=array(
210array( 'type' => 'hybrid', 'name' => 'Hybrid Turret', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),             // 0
211array( 'type' => 'laser', 'name' => 'Laser Turret', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),               // 1
212array( 'type' => 'projectile', 'name' => 'Projectile Turret', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),     // 2
213array( 'type' => 'missile', 'name' => 'Missile Launcher', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),         // 3
214array( 'type' => 'ew', 'name' => 'Electronic Warfare', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0),            // 4
215array( 'type' => 'drone', 'name' => 'Drone', 'cnt' => 0, 'icon' => 0, 'ribbon' => 0, 'class' =>0)               // 5
216);
217
218$pilot = new Pilot($pilot_id);
219
220$klist = new KillList();
221$klist->addInvolvedPilot($pilot);
222$klist->getAllKills();
223
224$killpoints = $klist->getPoints();
225
226// BEGIN awarded medals code
227
228$qry = new DBQuery();
229$query = "SELECT COUNT(*) as cnt, rank.med_id as med_id, rank.time_id as time_id
230          FROM `kb3_rank_medals` rank
231          WHERE rank.plt_id =".$pilot_id."
232          AND rank.med_site ='".KB_SITE."'
233          GROUP BY rank.med_id
234          ORDER BY 2 ASC";
235$qry->execute($query);
236while ($row = $qry->getRow()) {
237  $medals[$row['med_id']]['cnt']=$row['cnt'];
238}
239
240// END awarded medals code
241
242// BEGIN ship ribbons code
243
244
245$shiplist = new TopShipListNoLimit();
246$shiplist->addInvolvedPilot($pilot);
247$shiplist->generate();
248
249// modified the topshiplist to show also the class (1 query = all data) XD
250
251$excludes=config::get('rankmod_enables');
252while ($row = $shiplist->getRow())
253{
254  switch ($row['cls_id'])
255  {
256        case 1: $shipbadges[4]['cnt']+=$row['cnt']; break;
257        case 2: $shipbadges[7]['cnt']+=$row['cnt']; break;
258        case 3: if (strpos($excludes, 'N00bship')) { $ship_sub_badges[20]['cnt']+=$row['cnt']; } else { $shipbadges[7]['cnt']+=$row['cnt']; } break;
259        case 4: $shipbadges[0]['cnt']+=$row['cnt']; break;
260        case 5: if (strpos($excludes, 'Interceptor')) { $ship_sub_badges[1]['cnt']+=$row['cnt']; } else { $shipbadges[0]['cnt']+=$row['cnt']; } break;
261        case 6: if (strpos($excludes, 'Assault Ship')) { $ship_sub_badges[0]['cnt']+=$row['cnt']; } else { $shipbadges[0]['cnt']+=$row['cnt']; } break;
262        case 7: $shipbadges[6]['cnt']+=$row['cnt']; break;
263        case 8: $shipbadges[2]['cnt']+=$row['cnt']; break;
264        case 9: if (strpos($excludes, 'Heavy Assault Cruiser')) { $ship_sub_badges[5]['cnt']+=$row['cnt']; } else { $shipbadges[2]['cnt']+=$row['cnt']; } break;
265        case 10: $shipbadges[3]['cnt']+=$row['cnt']; break;
266        case 11: $shipbadges[7]['cnt']+=$row['cnt']; break;
267        case 12: if (strpos($excludes, 'Mining Barge')) { $ship_sub_badges[16]['cnt']+=$row['cnt']; } else { $shipbadges[6]['cnt']+=$row['cnt']; } break;
268        case 13: if (strpos($excludes, 'Logistic Cruiser')) { $ship_sub_badges[7]['cnt']+=$row['cnt']; } else { $shipbadges[2]['cnt']+=$row['cnt']; } break;
269        case 14: if (strpos($excludes, 'Transport Ship')) { $ship_sub_badges[18]['cnt']+=$row['cnt']; } else { $shipbadges[6]['cnt']+=$row['cnt']; } break;
270        case 15: $shipbadges[1]['cnt']+=$row['cnt']; break;
271        case 16: if (strpos($excludes, 'Covert Ops')) { $ship_sub_badges[2]['cnt']+=$row['cnt']; } else { $shipbadges[0]['cnt']+=$row['cnt']; } break;
272        case 19: if (strpos($excludes, 'Dreadnought')) { $ship_sub_badges[12]['cnt']+=$row['cnt']; } else { $shipbadges[5]['cnt']+=$row['cnt']; } break;
273        case 21: if (strpos($excludes, 'Command Ship')) { $ship_sub_badges[9]['cnt']+=$row['cnt']; } else { $shipbadges[3]['cnt']+=$row['cnt']; } break;
274        case 22: if (strpos($excludes, 'Exhumer')) { $ship_sub_badges[17]['cnt']+=$row['cnt']; } else { $shipbadges[6]['cnt']+=$row['cnt']; } break;
275        case 23: if (strpos($excludes, 'Interdictor')) { $ship_sub_badges[4]['cnt']+=$row['cnt']; } else { $shipbadges[1]['cnt']+=$row['cnt']; } break;
276        case 24: if (strpos($excludes, 'Recon Ship')) { $ship_sub_badges[8]['cnt']+=$row['cnt']; } else { $shipbadges[2]['cnt']+=$row['cnt']; } break;
277        case 26: if (strpos($excludes, 'Titan')) { $ship_sub_badges[15]['cnt']+=$row['cnt']; } else { $shipbadges[5]['cnt']+=$row['cnt']; } break;
278        case 27: if (strpos($excludes, 'Carrier')) { $ship_sub_badges[13]['cnt']+=$row['cnt']; } else { $shipbadges[5]['cnt']+=$row['cnt']; } break;
279        case 28: if (strpos($excludes, 'Mothership')) { $ship_sub_badges[14]['cnt']+=$row['cnt']; } else { $shipbadges[5]['cnt']+=$row['cnt']; } break;
280        case 29: if (strpos($excludes, 'Cap. Industrial')) { $ship_sub_badges[19]['cnt']+=$row['cnt']; } else { $shipbadges[6]['cnt']+=$row['cnt']; } break;
281        case 30: if (strpos($excludes, 'Electronic Attack Ship')) { $ship_sub_badges[3]['cnt']+=$row['cnt']; } else { $shipbadges[0]['cnt']+=$row['cnt']; } break;
282        case 31: if (strpos($excludes, 'Heavy Interdictor')) { $ship_sub_badges[6]['cnt']+=$row['cnt']; } else { $shipbadges[2]['cnt']+=$row['cnt']; } break;
283        case 32: if (strpos($excludes, 'Black Ops')) { $ship_sub_badges[10]['cnt']+=$row['cnt']; } else { $shipbadges[4]['cnt']+=$row['cnt']; } break;
284        case 33: if (strpos($excludes, 'Marauder')) { $ship_sub_badges[11]['cnt']+=$row['cnt']; } else { $shipbadges[4]['cnt']+=$row['cnt']; } break;
285  }
286}
287// END ship ribbons code
288
289// BEGIN weapon ribbons code
290
291$weaponlist = new TopWeaponListNoLimit();
292$weaponlist->addInvolvedPilot($pilot);
293$weaponlist->generate();
294while ($row = $weaponlist->getRow())
295{
296  $group = $row['itm_grp'];
297  if($group == 771
298        || ($group >= 506 && $group <= 511)
299        || $group == 524
300        || ($group >= 384 && $group <= 387)
301        || ($group >= 394 && $group <= 396)
302        || ($group >= 862 && $group <= 864)
303        || $group == 772
304        || $group == 89
305        || $group == 90
306        || $group == 476
307  ) { $group = 506; }
308  if ($group == 544 
309        || $group == 549
310        || $group == 639
311        || $group == 641
312  ) { $group = 100; }
313  switch ($group)
314  {
315        case 53: $weaponbadges[1]['cnt']+=$row['cnt']; break;
316        case 55: $weaponbadges[2]['cnt']+=$row['cnt']; break;
317        case 74: $weaponbadges[0]['cnt']+=$row['cnt']; break;
318        case 506: $weaponbadges[3]['cnt']+=$row['cnt']; break;
319        case 100: $weaponbadges[5]['cnt']+=$row['cnt']; break;
320        default: $weaponbadges[4]['cnt']+=$row['cnt']; break;
321  }
322}
323
324// END weapon ribbons code
325
326// BEGIN rank points stuff
327
328$bonus_rps=0;
329$base_rps=round($killpoints/config::get(rankmod_convfactor));
330
331// MEDALS STUFF
332$rank_medbonus=config::getnumerical('rankmod_bonus');
333$rank_purplemalus=config::get('rankmod_purplemalus');
334foreach ($medals as $i => $med)
335{
336  if (($i == 8) && $rank_purplemalus) {
337    $bonus_rps-=$rank_medbonus[$i]*$med['cnt'];
338  } elseif (($i == 8) && !$rank_purplemalus) {
339    $bonus_rps+=$rank_medbonus[$i]*$med['cnt'];
340  } else {
341    $bonus_rps+=$rank_medbonus[$i]*$med['cnt'];
342  }
343}
344
345// SHIP RIBBONS
346$rank_badges = config::getnumerical('rankmod_badreqs');
347$rank_badge_value = config::getnumerical('rankmod_badvalues');
348foreach ($shipbadges as $i => $ship)
349{
350  if ($ship['cnt'] >= $rank_badges[$i][0]) {
351        $bonus_rps+=$rank_badge_value[$i][0];
352        $shipbadges[$i]['icon']=$ship['type'].'_elite';
353        $shipbadges[$i]['class']=$ship['name'].' Combat 1st Class';
354        $shipbadges[$i]['badge']='Elite '.$ship['name'].' Pilot';
355  } elseif ($ship['cnt'] >= $rank_badges[$i][1]) {
356        $bonus_rps+=$rank_badge_value[$i][1];
357        $shipbadges[$i]['icon']=$ship['type'].'_veteran';
358        $shipbadges[$i]['class']=$ship['name'].' Combat 2nd Class';
359        $shipbadges[$i]['badge']='Veteran '.$ship['name'].' Pilot';
360  } elseif ($ship['cnt'] >= $rank_badges[$i][2]) {
361        $bonus_rps+=$rank_badge_value[$i][2];
362        $shipbadges[$i]['icon']=$ship['type'].'_expert';
363        $shipbadges[$i]['class']=$ship['name'].' Combat 3rd Class';
364        $shipbadges[$i]['badge']='Expert '.$ship['name'].' Pilot';
365  }
366}
367
368// SHIP SUBCLASS RIBBONS
369$rank_badges = config::getnumerical('rankmod_sub_badreqs');
370$rank_badge_value = config::getnumerical('rankmod_sub_badvalues');
371foreach ($ship_sub_badges as $i => $ship)
372{
373  if ($ship['cnt'] >= $rank_badges[$i][0]) {
374        $bonus_rps+=$rank_badge_value[$i][0];
375        $ship_sub_badges[$i]['icon']=$ship['type'].'_elite';
376        $ship_sub_badges[$i]['class']=$ship['name'].' Combat 1st Class';
377        $ship_sub_badges[$i]['badge']='Elite '.$ship['name'].' Pilot';
378  } elseif ($ship['cnt'] >= $rank_badges[$i][1]) {
379        $bonus_rps+=$rank_badge_value[$i][1];
380        $ship_sub_badges[$i]['icon']=$ship['type'].'_veteran';
381        $ship_sub_badges[$i]['class']=$ship['name'].' Combat 2nd Class';
382        $ship_sub_badges[$i]['badge']='Veteran '.$ship['name'].' Pilot';
383  } elseif ($ship['cnt'] >= $rank_badges[$i][2]) {
384        $bonus_rps+=$rank_badge_value[$i][2];
385        $ship_sub_badges[$i]['icon']=$ship['type'].'_expert';
386        $ship_sub_badges[$i]['class']=$ship['name'].' Combat 3rd Class';
387        $ship_sub_badges[$i]['badge']='Expert '.$ship['name'].' Pilot';
388  }
389}
390
391$ship_badges = array();
392$last_parent = -1;
393foreach ($ship_sub_badges as $subclass) {
394  if ($subclass['parent'] > $last_parent) {
395    $ship_badges[] = $shipbadges[$subclass['parent']];
396    $last_parent = $subclass['parent'];
397  }
398  $ship_badges[] = $subclass;
399}
400
401// WEAPON RIBBONS
402$rank_weap_badges = config::getnumerical('rankmod_weapreqs');
403$rank_weap_badge_value = config::getnumerical('rankmod_weapvalues');
404foreach ($weaponbadges as $i => $weap)
405{
406  if ($i == 4 || $i == 3 || $i == 5) { $bottom = 'Operator'; } else { $bottom = 'Gunner';}
407  if ($weap['cnt']>=$rank_weap_badges[$i][0]) {
408        $bonus_rps+=$rank_weap_badge_value[$i][0];
409        $weaponbadges[$i]['icon']=$weap['type'].'_elite';
410        $weaponbadges[$i]['class']=$weap['name'].' Master 1st Class';
411        $weaponbadges[$i]['badge']='Elite '.$weap['name'].' '.$bottom;
412  } elseif ($weap['cnt']>=$rank_weap_badges[$i][1]) {
413        $bonus_rps+=$rank_weap_badge_value[$i][1];
414        $weaponbadges[$i]['icon']=$weap['type'].'_veteran';
415        $weaponbadges[$i]['class']=$weap['name'].' Master 2nd Class';
416        $weaponbadges[$i]['badge']='Veteran '.$weap['name'].' '.$bottom;
417  } elseif ($weap['cnt']>=$rank_weap_badges[$i][2]) {
418        $bonus_rps+=$rank_weap_badge_value[$i][2];
419        $weaponbadges[$i]['icon']=$weap['type'].'_expert';
420        $weaponbadges[$i]['class']=$weap['name'].' Master 3rd Class';
421        $weaponbadges[$i]['badge']='Expert '.$weap['name'].' '.$bottom;
422  }
423}
424
425$rps=$base_rps+$bonus_rps;
426$titles = config::getnumerical('rankmod_titles');
427$r_type = config::get('rankmod_rtype');
428
429switch ($r_type) {
430        case "Enlisted": $limit = 10; break;
431        case "Officer": $limit = 11; break;
432        case "Enlisted + Officer": $limit = 21; break;
433}
434
435$rank=0;
436
437while($rps>$titles[$rank]['reqrp'] && $rank<$limit)
438{
439  $rank++;
440}
441
442if ($rank!=0) { $rank--; }
443
444return $rank;
445
446}
447
448?>
Note: See TracBrowser for help on using the browser.