BF2Statistics Neue Waffen hinzufügen
Aus SGiersch WIKI
Noch ein Hinweiß, dies ist keine richtige Anleitung zum Einfügen einer neuen Waffe, sondern es ist nur als eine Gedächnisstütze gedacht.
In diesem Beispiel wird die neue Waffe "AP Mine" (anti-personnel mines) von dem Mod "Hard Justice" in die BF2Statistics eingeführt und zwar mit der Waffennummer 13.
Für andere Waffen muss dann eine andere Nummer verwendet werden, die Nummer ist frei Wählbar.
Hierfür müssen nachfolgende Dateien geändert werden.
- Die Datenbank selbst
- python\bf2\stats\Constansy.py
- python\bf2\stats\snapshot.py
- ASP/bf2statistics.php
- ASP\getplayerinfo.aspx
- bf2statistics/BF2Stats-keys.php
Die Datenbank wird geändert
|
Das wird eine Operation am offenen Herzen der Statistik, also vorher unbedingt ein vollständiges Backup anlagen |
In der Datenbank unter der Tabelle "weapons" müssen die Felder apminetime, apminekills, apminedeaths, apminefired, apminehit erstellt werden. Für eine andere Waffe, als in diesem Beispiel, müssen andere Namen verwendet werden, die aber alle in dem Formet "Waffennametime" oder "Waffennamekills" aufgeführt sein sollten.
ALTER TABLE `weapons`
ADD COLUMN `apminetime` int(10) unsigned NOT NULL default '0',
ADD COLUMN `apminekills` int(10) unsigned NOT NULL default '0',
ADD COLUMN `apminedeaths` int(10) unsigned NOT NULL default '0',
ADD COLUMN `apminefired` int(10) unsigned NOT NULL default '0',
ADD COLUMN `apminehit` int(10) unsigned NOT NULL default '0'
Die Datei python\bf2\stats\Constansy.py wird geändert.
den Eintrag:
WEAPON_TYPE_TACTICAL = 19 NUM_WEAPON_TYPES = 20 WEAPON_TYPE_UNKNOWN = NUM_WEAPON_TYPES
ändern auf
WEAPON_TYPE_TACTICAL = 19 # Hard Justice WEAPON_TYPE_APMINE = 20 NUM_WEAPON_TYPES = 21 WEAPON_TYPE_UNKNOWN = NUM_WEAPON_TYPES
und unter weaponTypeMap = { den letzten Eintrag suchen.
den Eintrag:
weaponTypeMap = {
# Battlefield2
"usrif_m16a2" : WEAPON_TYPE_ASSAULT,
ändern auf
"m14lm" : WEAPON_TYPE_APMINE
Die Datei python\bf2\stats\snapshot.py wird geändert.
Unter dem Code
# weapons weaponKeys = [
die nachfolgenden Einträge suchen.
("te8", int(playerStat.weapons[WEAPON_TYPE_ZIPLINE].timeInObject)),
("ke5", playerStat.weapons[WEAPON_TYPE_ATMINE].kills),
("be9", playerStat.weapons[WEAPON_TYPE_GRAPPLINGHOOK].deaths),
("se5", playerStat.weapons[WEAPON_TYPE_ATMINE].bulletsFired),
("he5", playerStat.weapons[WEAPON_TYPE_ATMINE].bulletsHit),
und unter jeden Eintrag eine Zeile aus der nachfolgenden Auflistung anfügen.
Beispiel: Unter den Eintrag der mit te8 beginnt kommt der Eintrag mit te10 und der Eintrag ke10 kommt unter den ke5.
("te10", int(playerStat.weapons[WEAPON_TYPE_APMINE].timeInObject)),
("ke10", playerStat.weapons[WEAPON_TYPE_APMINE].kills),
("be10", playerStat.weapons[WEAPON_TYPE_APMINE].deaths),
("se10", playerStat.weapons[WEAPON_TYPE_APMINE].bulletsFired),
("he10", playerStat.weapons[WEAPON_TYPE_APMINE].bulletsHit),
Die Datei ASP/bf2statistics.php wird geändert.
Unter: * Process 'Weapons'
In der Section die beginnt mit:
// Insert information
$query = "INSERT INTO weapons SET
id = " . $data["pID_$x"] . ",
ziplinetime = " . $data["te8_$x"] . ", atminekills = " . $data["ke5_$x"] . ", grapplinghookdeaths = " . $data["be9_$x"] . ", atminefired = " . $data["se5_$x"] . ", atminehit = " . $data["he5_$x"] . ",
und unter jeden Eintrag eine Zeile aus der nachfolgenden Auflistung anfügen.
Beispiel: Unter den Eintrag der mit ziplinetime beginnt kommt der Eintrag mit apminetime und unter den Eintrag atminekills kommt apminekills.
apminetime = " . $data["te10_$x"] . ", apminekills = " . $data["ke10_$x"] . ", apminedeaths = " . $data["be10_$x"] . ", apminefired = " . $data["se10_$x"] . ", apminehit = " . $data["he10_$x"] . "
Nun nochmal etwas ähnliches für die Section die mit beginnt:
// Update information
$query = "UPDATE weapons SET
time0 = `time0` + " . $data["tw0_$x"] . ",
ziplinetime = `ziplinetime` + " . $data["te8_$x"] . ", atminekills = `atminekills` + " . $data["ke5_$x"] . ", grapplinghookdeaths = `grapplinghookdeaths` + " . $data["be9_$x"] . ", atminefired = `atminefired` + " . $data["se5_$x"] . ", atminehit = `atminehit` + " . $data["he5_$x"] . "
und unter jeden Eintrag eine Zeile aus der nachfolgenden Auflistung anfügen.
Beispiel: Unter den Eintrag der mit ziplinetime beginnt kommt der Eintrag mit apminetime und unter den Eintrag atminekills kommt apminekills.
apminetime = `apminetime` + " . $data["te10_$x"] . ", apminekills = `apminekills` + " . $data["ke10_$x"] . ", apminedeaths = `apminedeaths` + " . $data["be10_$x"] . ", apminefired = `apminefired` + " . $data["se10_$x"] . ", apminehit = `apminehit` + " . $data["he10_$x"] . "
Die Datei bf2statistics/BF2Stats-keys.php wird geändert.
unter: // INFANTRY WEAPON DESIGNATORS den Eintrag
"12" => "Hand Grenade", //"13" => "Crossbow" );
ändern auf
"12" => "Hand Grenade", "13" => "AP Mine" );
Unter: $this->statsKey = array(
"wac-13" => array('type' => "%",'friendly' => "Accuracy with Crossbow"),
"wdt-13" => array('type' => "N",'friendly' => "# deaths by Crossbow"),
"wkl-13" => array('type' => "N",'friendly' => "# kills with Crossbow"),
"wtm-13" => array('type' => "E",'friendly' => "Time using Crossbow"),
"wkd-13" => array('type' => "R",'friendly' => "Kill:death ratio using Crossbow"),
"wac-13" => array('type' => "%",'friendly' => "Accuracy with AP Mine"),
"wdt-13" => array('type' => "N",'friendly' => "# deaths by AP Mine"),
"wkl-13" => array('type' => "N",'friendly' => "# kills with AP Mine"),
"wtm-13" => array('type' => "E",'friendly' => "Time using AP Mine"),
"wkd-13" => array('type' => "R",'friendly' => "Kill:death ratio using AP Mine"),
Hierbei haben wir uns den umstand zu Nutze gemacht, das die Einträge schon vorhanden waren aber nicht benutzt worden sind. Sollten nochmals Waffen eingefügt werden, dann sind hier neue Einträge zu schreiben, wobei hier die Nummern (wac-13) wichtig sind.
Die Datei ASP\getplayerinfo.aspx wird geändert.
unter // Overall weapon accuracy
den Eintrag suchen:
if ($roww['handgrenadefired'] != 0) {$acc += ($roww['handgrenadehit'] / $roww['handgrenadefired']) * 100; $count++;}
unter dem Eintrag einfügen.
if ($roww['apminefired'] != 0) {$acc += ($roww['apminehit'] / $roww['apminefired']) * 100; $count++;}
unter // Weapon accuracy
den Eintrag suchen:
$a0 = $a1 = $a2 = $a3 = $a4 = $a5 = $a6 = $a7 = $a8 = $a9 = $a10 = $a11 = $a12 = 0;
und den ganzen Eintrag auf ändern:
$a0 = $a1 = $a2 = $a3 = $a4 = $a5 = $a6 = $a7 = $a8 = $a9 = $a10 = $a11 = $a12 = $a13 = 0;
unter // Weapon accuracy
den Eintrag suchen:
if ($roww['handgrenadefired'] != 0) {$a12 = ($roww['handgrenadehit'] / $roww['handgrenadefired']) * 100;}
|
}}
unter dem Eintrag einfügen.
{{Code:Basic
|
|<pre>
if ($roww['apminefired'] != 0) {$a13 = ($roww['apminehit'] / $roww['apminefired']) * 100;}
unter // Weapon ratio
den Eintrag suchen:
$w12 = ratio($roww['handgrenadekills'], $roww['handgrenadedeaths']);
unter dem Eintrag einfügen.
$w13 = ratio($roww['apminekills'], $roww['apminedeaths']);
Jetzt wird es ein wenig kompliziert.
unter // Output
den Eintrag suchen:
$roww['handgrenadetime'] . "\t" . $roww['handgrenadekills'] . "\t" . (int)$a12 . "\t" . $w12 . "\t" .
und unter jeden Eintrag eine Zeile aus der nachfolgenden Auflistung anfügen.
Beispiel: Unter den Eintrag der mit ziplinetime beginnt kommt der Eintrag mit apminetime und unter den Eintrag atminekills kommt apminekills.
$roww['apminetime'] . "\t" . $roww['apminekills'] . "\t" . (int)$a13 . "\t" . $w13 . "\t" .
Nun noch eine Besonderheit, suche den Eintrag
$roww['ziplinedeaths'] . "\t" .
und ersetzte ihn durch
$roww['apminedeaths'] . "\t" .
Sollten nun zusätzlich noch andere Waffen eingefügt werden, kann hierbei genauso verfahre werden.
ABER zusätzlich muß dann hierfür der Datenkopf erweitert werden.
$head .= "H\t" .
"pid\tnick\tscor\tjond\twins\tloss\tmode0\tmode1\tmode2\t" .
Suche nun hierrin die Datenfelder
*wtm-13\t *wkl-13\t *wdt-13\t *wac-13\t *wkd-13\t
füge hierran die nenen Datenköpfe, für die neuen Waffen an.
Beispiel:
*wtm-13\twtm-14\t *wkl-13\twkl-14\t *wdt-13\twdt-14\t *wac-13\twac-14\t *wkd-13\twkd-14\t
wtm-14 währe in diesem Beispiel eine neue Waffe mit der Nummer 14.
