Pages: [1] :: one page |
|
Author |
Thread Statistics | Show CCP posts - 0 post(s) |
gintaru
|
Posted - 2011.07.12 10:36:00 -
[1]
Can anyone shed some light on how most Killboards calculate points per kill?
|
Gartou Gaterau
|
Posted - 2011.07.12 13:21:00 -
[2]
(Bump)
|
gintaru
|
Posted - 2011.07.12 15:49:00 -
[3]
:) another Bump - kind of urgent
|
Mintoko
Gallente Taedium In Perpetuam
|
Posted - 2011.07.12 22:04:00 -
[4]
If by "most killboards" you mean the Eve Development killboard, the procedure is below.
For all non-NPC parties involved, (NPCs and rogue drones do not count)
vicpoints = the victim's points based upon the ship class
invpoints = total points of all other ships involved.
maxpoints = round(vicpoints * 1.2)
if vicpoints + invpoints > 0
gankfactor = vicpoints / (vicpoints + invpoints) points = ceil(vicpoints * (gankfactor / 0.75))
else points = 0
if points > maxpoints then points = maxpoints
eliminate any fraction of a point.
Example:
a Covert Ops frigate (50) was destroyed. (vicpoints = 80) The single party involved was in a Drake (Battlecruiser) (250) (invpoints=250)
maxpoints = vicpoints * 1.2 maxpoints = 80 * 1.2 maxpoints = 96
since vicpoints and invpoints total more than 0, gankfactor = vicpoints / (vicpoints + invpoints) gankfactor = 80 / (80 + 250) gankfactor = 80 / 330 gankfactor = 0.2424
points = vicpoints * (gankfactor / 0.75) points = 80 * (0.2424/ 0.75) points = 80 * 0.3232 points = 25.856, rounded up to points = 26
since points of 26 do not total more than the maxpoints of 96, the number of points will stand at 26
The relevant code from `common/includes/class.killwrapper`
function calculateKillPoints() { if (!$this->involvedparties_) $this->execQuery();
$ship = $this->getVictimShip(); $shipclass = $ship->getClass(); $vicpoints = $shipclass->getPoints(); $maxpoints = round($vicpoints * 1.2);
foreach ($this->involvedparties_ as $inv) { $shipinv = $inv->getShip(); $shipclassinv = $shipinv->getClass(); $invpoints += $shipclassinv->getPoints(); }
if($vicpoints + $invpoints > 0) { $gankfactor = $vicpoints / ($vicpoints + $invpoints); $points = ceil($vicpoints * ($gankfactor / 0.75)); } else $points = 0; if ($points > $maxpoints) $points = $maxpoints;
$points = round($points, 0); return $points; }
located in `ship_classes` table under column `scl_points`
Drone = 0 Capsule / Rookie Ship / Shuttle = 5 Exhumer / Barge / Industrial = 20 Transport ship = 30 Frigate = 50 Interdictor / Interceptor / Destroyer = 60 Covert Ops / Assault Frigate = 80 Cruiser = 100 Logistics = 175 Electronic Attack Ship = 200 Battlecruiser = 250 Recon Ship = 350 Heavy Assault Cruiser= 400 Command Ship = 450 Heavy Interdictor = 600 Battleship = 750 Marauder = 1000 Freighter = 1500 Black Ops = 1800 Jump Freighter = 2000 Carrier = 3000 Dreadnought = 4000 Capital Industrial = 5000 Mothership = 6000 Titan = 20000
|
gintaru
|
Posted - 2011.07.13 08:45:00 -
[5]
Going by that (Just converted the PHP to .Net) using the same function and Points/class
public static int CalculateKillPoints(List<KillMailInvolved> Involved) { Double vicpoints = GetPoints(KillMailInvolved.GetVictim(Involved).ShipObject); Double maxpoints = vicpoints * 1.2; Double invpoints = 0; Double gankfactor = 0; Double points = 0; foreach (KillMailInvolved kmi in Involved) { if (!kmi.IsVictim) { invpoints += GetPoints(kmi.ShipObject); } } if (vicpoints + invpoints > 0) { gankfactor = vicpoints / (vicpoints + invpoints); points = Math.Ceiling(gankfactor / 0.75D); }
if (points > maxpoints) points = maxpoints;
points = Math.Round(points, 0); return (int)points; }
It almost always returns 1 . Even with a Rhea killed by 4 pilots
|
Mintoko
Gallente Taedium In Perpetuam
|
Posted - 2011.07.13 09:48:00 -
[6]
Unfortunately, I'm not experienced with .NET, but the one thing that stands out to me is 0.75D in the computation of the points. Is the 'D' required?
|
gintaru
|
Posted - 2011.07.13 09:53:00 -
[7]
Edited by: gintaru on 13/07/2011 09:53:46
Originally by: Mintoko Unfortunately, I'm not experienced with .NET, but the one thing that stands out to me is 0.75D in the computation of the points. Is the 'D' required?
The method is exactly the same to the letter (Considering its .net not PHP)
The D is to force it to be recognised as a Double (A numeric value with decimals) instead of the possibility of it being used as an Integer (No decimals) - Which in this case is not needed as it already says 0.75 :) but i was just making 150% sure
The point is the calculations are flawed as it always returns 1
|
Mintoko
Gallente Taedium In Perpetuam
|
Posted - 2011.07.13 10:19:00 -
[8]
Edited by: Mintoko on 13/07/2011 10:20:07 took me too long to find this... :)
points = Math.Ceiling(gankfactor / 0.75D)
should be
points = Math.Ceiling(vicpoints * (gankfactor / 0.75D))
|
Hel O'Ween
Men On A Mission EVE Trade Consortium
|
Posted - 2011.07.13 10:25:00 -
[9]
Do PHP's and .NET's Ceil()/Ceiling and Round() work the same way?
Also, have you considered coming up with your own point system? -- EVEWalletAware - an offline wallet manager |
gintaru
Mining and Industrial Services The Irukandji
|
Posted - 2011.07.13 10:29:00 -
[10]
Originally by: Hel O'Ween Do PHP's and .NET's Ceil()/Ceiling and Round() work the same way?
Also, have you considered coming up with your own point system?
Ceiling works the same way indeed, and i currently have my own point system although i need it to match other killboards, else it just looks wacked.
|
|
gintaru
Mining and Industrial Services The Irukandji
|
Posted - 2011.07.13 10:31:00 -
[11]
Originally by: Mintoko Edited by: Mintoko on 13/07/2011 10:20:07 took me too long to find this... :)
points = Math.Ceiling(gankfactor / 0.75D)
should be
points = Math.Ceiling(vicpoints * (gankfactor / 0.75D))
Perfect, works like a charm.
Do you perhaps know the Base points for :
POS LARGE POS MEDIUM POS MODULES POS SMALL PROTOTYPE EXPLORATION SHIP TERRITORY MODULES
|
Mintoko
Gallente Taedium In Perpetuam
|
Posted - 2011.07.13 10:47:00 -
[12]
Sorry about that. The database I was looking at earlier did not have these.
POS Small = 750 POS Medium = 1500 POS Large = 2250 POS Modules = 500 Industrial Command Ship = 2500 Strategic Cruiser = 750 Infrastructure Modules = 500 Territory Modules = 500 Prototype Exploration Ship = 5 Unknown = 0
|
gintaru
Mining and Industrial Services The Irukandji
|
Posted - 2011.07.13 11:15:00 -
[13]
That pretty much sums up everything.
Thank you.
|
|
|
|
Pages: [1] :: one page |
First page | Previous page | Next page | Last page |