open All Channels
seplocked EVE Technology Lab
blankseplocked Killboard Point System
 
This thread is older than 90 days and has been locked due to inactivity.


 
Author Topic

gintaru
Mining and Industrial Services
The Irukandji
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
Mining and Industrial Services
The Irukandji
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]
 

Edited by: Mintoko on 12/07/2011 23:14:31
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 (80) 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
Mining and Industrial Services
The Irukandji
Posted - 2011.07.13 08:45:00 - [5]
 

Edited by: gintaru on 13/07/2011 08:55:25
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

Am i Doing something wrong or is this codeblock flawed

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
Mining and Industrial Services
The Irukandji
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?

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.


 

This thread is older than 90 days and has been locked due to inactivity.


 


The new forums are live

Please adjust your bookmarks to https://forums.eveonline.com

These forums are archived and read-only