BF2Statistics Neue Waffen hinzufügen

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.

Öffne die Datenbank mit „phpmyadmin“ oder einem anderen Programm und führe nachfolgendes SQL aus.

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

NUM_WEAPON_TYPES ist immer eine Nummer größer als die zuletzt aufgeführte Waffe.

und unter weaponTypeMap = { den letzten Eintrag suchen.

den Eintrag:

Die Section beginnt vermutlich so und sollte mit einem Eintrag ohne Komma enden.

weaponTypeMap = {
# Battlefield2
    "usrif_m16a2"            : WEAPON_TYPE_ASSAULT,

Hänge nun in diese Section an den letzten Eintrag ein Komme an und dann den nachfolgenden Eintrag)

   "m14lm"                             : WEAPON_TYPE_APMINE

Der letzte Eintrag vor der Geschweiften Klammer bekommt kein Komma. Alle anderen haben ein Komma am Ende.

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),

Hier bekommen alle Einträge ein Komma am Ende, also auch der letzte Eintrag.

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"] . ",

Suche nachfolgende Einträge

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.

Füge nachfolgende Zeilen unter die obere Auflistung

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"] . ",

Suche nachfolgende Einträge

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.

Füge nachfolgende Zeilen unter die obere Auflistung

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"
   );

Der letzte Eintrag vor der Geschweiften Klammer bekommt kein Komma. Alle anderen haben ein Komma am Ende.

Unter: $this->statsKey = array(

Suche nachfolgede Einträge

"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"),

Ersetze die Einträge duch

"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:

Suche nachfolgende Einträge

$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.

Füge nachfolgende Zeilen unter die obere Auflistung

$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.

Der Datenkopf beginnt ungefähr so.

$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 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.

Dieser Beitrag wurde unter BF2 - Server abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert