Jump to content

PHPtacview


Gaanalma

Recommended Posts

ciao Gaanalma,

sto sviluppando assieme ad un mio collega l'esportazione dei dati dal server per poi integrarli con PHP. Per poterli visuallizzare, il file XML deve essere agganciato ovviamente al PHP presumo tramite MySQL. è una cosa al quanto complessa, in quanto devi dire al file PHP di andare ad estrapolare delle "informazioni" ( tipo l'ID di ogni client ) dal file XML.

 

A questa pagina trovi un esempio più dettagliato. E chiaro che per fare ciò, devi avere conoscenze basiche di PHP e programmazione.

 

Mi pare che tale funzione verrà implementata nelle future versioni di TacView, ma non so dirti quando Vyrtuoz rilascerà tale versione.

Simulatori: DCS A-10C II Warthog - DCS F/A-18C Hornet - DCS F-16C - VRS F/A-18E - 
HOTAS: TM Warthog - Cougar \ HP Reverb G2 \ WinWing Panels

Tally: I see the degenerate commie who wants to ruin our day.

 

Link to comment
Share on other sites

Ciao Heater, io un file del genere già c'e l'ho, ma non conoscendo il linguaggio php non sono capace di farglielo leggere! Il file in oggetto lo trovi in questo sito http://lomac.strasoftware.com/tacview-xml-debriefings.php e si chiama PHPTacview, e praticamente dovrebbe riassumere il log XML del Tacview in questo modo!

PHPTacview-00s.png

 

Riesci a capirci qualcosa aprendo il File!!! Magari è d'aiuto anche a te e al tuo socio!!

Ciao e Grazie:smilewink:

[sIGPIC]index.php?action=dlattach;topic=17112.0;attach=7646;image[/sIGPIC]

 

www.36stormovirtuale.net

Link to comment
Share on other sites

  • 3 weeks later...

Heater a che punto siete con il vostro progetto!!!?

 

Io sono riuscito ad inserire il PHP, l'unica cosa che quel file che hanno creato per leggere il Tacview , non essendo aggiornato a PHP 5... da degli errori!! quindi per ora devo abbandonare il progetto e studiare !!!!

E io che nella vita faccio l'infermiere sarà difficile imparare il PHP!

[sIGPIC]index.php?action=dlattach;topic=17112.0;attach=7646;image[/sIGPIC]

 

www.36stormovirtuale.net

Link to comment
Share on other sites

  • 2 weeks later...
Heater a che punto siete con il vostro progetto!!!?

 

Io sono riuscito ad inserire il PHP, l'unica cosa che quel file che hanno creato per leggere il Tacview , non essendo aggiornato a PHP 5... da degli errori!! quindi per ora devo abbandonare il progetto e studiare !!!!

E io che nella vita faccio l'infermiere sarà difficile imparare il PHP!

 

caro collega,

qualcosina siamo riusciti a tirar fuori.

http://www.crimsonflag.net/forum/index.php?page=25

 

I problemi riscontrati sono:

-Tacview non esporta in automatico il file .xml quindi bisogna farlo manualmente.

- Se nella cartella di lettura del php vengono messi piu' di un file .xml , il primo verra visualizzato nella pagina correttamente, mentre dal secondo in poi compaiono problemi di trascrizione.

- Terzo e non problema minore, quando si colpisce un bersaglio, non viene inserito come kill nelle statistiche del pilota. Probabimente perche l'esplosione dei mezzi avviene una decina di secondi dopo.

[sIGPIC][/sIGPIC]

 

-----------------------------------

http://www.crimsonflag.net :thumbup:

102° Gruppo di Volo Virtuale

Link to comment
Share on other sites

Para, la pagina chiede la pass. Comunque pazientate, nella prossima versione del TacView verrà inserito in versione "beta" l'esportazione online.

Simulatori: DCS A-10C II Warthog - DCS F/A-18C Hornet - DCS F-16C - VRS F/A-18E - 
HOTAS: TM Warthog - Cougar \ HP Reverb G2 \ WinWing Panels

Tally: I see the degenerate commie who wants to ruin our day.

 

Link to comment
Share on other sites

ora va. E identico al nostro, solo che a me dopo qualche riga succede che i dati non compaiono in modo esatto, come se il file .xml fosse andato a farsi benedire...bravo Para ;)

Simulatori: DCS A-10C II Warthog - DCS F/A-18C Hornet - DCS F-16C - VRS F/A-18E - 
HOTAS: TM Warthog - Cougar \ HP Reverb G2 \ WinWing Panels

Tally: I see the degenerate commie who wants to ruin our day.

 

Link to comment
Share on other sites

ora va. E identico al nostro, solo che a me dopo qualche riga succede che i dati non compaiono in modo esatto, come se il file .xml fosse andato a farsi benedire...bravo Para ;)

 

No no , hai visto il film "non ci resta che piangere" tipo .....grazie Mario.....

 

ecco il bravo Para lo giro al nostro Aikanaro, che si occupa della gestione server e di questi piccoli suppellettili...... :thumbup:

[sIGPIC][/sIGPIC]

 

-----------------------------------

http://www.crimsonflag.net :thumbup:

102° Gruppo di Volo Virtuale

Link to comment
Share on other sites

Salve ragazzi, coem Para vi ha anticipato ci sto lavorando da un bel po' su questo file e per farlo funzionare correttamente ho dovuto apportare alcune modifiche.

 

Al momento sono al lavoro per cui non ho tempo a disposizione per menzionarle ma non appena rientro a casa vi posto qualcosa.


Edited by Aikanaro

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic82617_1.gif[/sIGPIC]

Cap. Aikanaro 48th Gruppo Squadrone Pavone

Server Admin

http://www.crimsonflag.net

Link to comment
Share on other sites

Ottimo, in parallelo a tempo perso ci stò mettendo le mani anche io e un'altro pilota del 53° che mastica il php meglio di me!

Io al momento ho preso la versione professional del tacview aggiornata all 1.0... Frantz Raia mi ha risposto che il log online sarà disponibile dalla versione 1.2 o 1.3, dipende dalla domanda che ne fanno gli utilizzatori... a breve dovrebbe uscire la versione 1.1 con qualche modifica...speriamo che vengano sistemati questi problemi!

Complimenti per il risultato raggiunto !

Ciao e a presto!

[sIGPIC]index.php?action=dlattach;topic=17112.0;attach=7646;image[/sIGPIC]

 

www.36stormovirtuale.net

Link to comment
Share on other sites

Ciao a tutti.

 

Tanto per cominciare è d'obbligo dire che la versione di PHPTacview allo stato attuale è aggiornata per modo di dire ovvero retrogradata alla versione 0.93 del Tacview, con l'ultimo aggiornamento effettuato da Vyrtuoz il 9 Aprile 2011.

 

Sostanzialmente il " Programma PHP " così come è funziona regolarmente, ma presenta alcuni malfunzionamenti che non sono veri e propri bug, ma solo mancanze dovute all'aggiornamento del software Tacview ed alla sua estrazione di dati.

 

Ora detto questo andiamo ad esaminare il file example.php originale che si sviluppa cosi':

 

<html>
<head>
   <title>PHPTacview</title>
   <link rel="stylesheet" href="tacview.css" />
   <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body class="lockonBody">
   <?php

       require_once "./tacview.php";
       
       $tv = new tacview("en");
       
       $tv->proceedStats("./debriefings/Tacview-20061026-232652.xml", "Mission Test");
//        $tv->proceedStats("./debriefings/Tacview-Demo-Ironhand-A-10A-M02.xml", "Mission Test");
//        $tv->proceedStats("./debriefings/Tacview-20081017-221834 Black Shark Simple Flight.xml", "Mission Test");

       echo $tv->getOutput();

   ?>
</body>
</html>

Questa non è altro che la pagina che noi andiamo a richiamare con il browser, che a sua volta chiede alla pagina tacview.php di processare i dati espressi dal file Tacview-xxxxx-xxxxx.xml contenuto all'interno della cartella debriefing.

 

Come avete potuto notare la sintassi che legge il file .xml è questa:

$tv->proceedStats("./debriefings/Tacview-20061026-232652.xml", "Mission Test");

Questo cosa significa. Significa che ogni qual volta che esportiamo il file .xml con Tacview bisogna aprire il file example.php e modificare il nome del file .xml nella riga di sintassi sopra riportata affinche' il file venga letto.

 

Siccome questa è un'operazione macchinosa nonostante sia semplice ho modificato il file example.php in questo modo:

<html>
<head>
   <title>PHPTacview</title>
   <link rel="stylesheet" href="tacview.css" />
   <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> </head> <body class="lockonBody">
   <?php

// 2011-08-01    (Updated by Aikanaro)
//  Automatizzata la lettura dei file XML nella cartella debriefig.

       require_once "./tacview.php";

       foreach (glob("debriefings/*.xml") as $filexml) {
   
           $tv = new tacview("it");

           $tv->proceedStats("$filexml","Mission Test");

           echo $tv->getOutput();
       }

   ?>
</body>
</html>

La sintassi così modificata fa si che richiamando la pagina example.php dal browser questa richieda alla pagina tacview.php di processare i dati di qualunque file .xml sia contenuto nella cartella debriefing anche piu' di uno e che questo sia nominato (Tacview-20061026-232652.xml,Pippo.xml,Ciccio.xml) non gli interessa piu', l'importante e che sia un file con estensione .xml .

 

E questo è il primo passo.


Edited by Aikanaro

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic82617_1.gif[/sIGPIC]

Cap. Aikanaro 48th Gruppo Squadrone Pavone

Server Admin

http://www.crimsonflag.net

Link to comment
Share on other sites

Passiamo al secondo passo.

 

A questo punto ho effettuato alcune mofiche alla pagina tacview.php .

 

Come prima cosa ho pensato di aggiungere alla tabella statistiche pilota il campo Gruppo, cosi' ho aggiunto al file originale :

 

// List only main aircrafts' pilots
           if(!array_key_exists("Parent",$event["Object"]) and ($event["Object"]["Type"] == "Aircraft" or $event["Object"]["Type"] == "Helicopter")) {

               $this->stats[$event["Object"]["Pilot"]]["Aircraft"] = $event["Object"]["Name"];

album_pic.php?pic_id=81&user_id=46

 

La stringa di codice come sotto riportato:

 

// List only main aircrafts' pilots
           if(!array_key_exists("Parent",$event["Object"]) and ($event["Object"]["Type"] == "Aircraft" or $event["Object"]["Type"] == "Helicopter")) {

               $this->stats[$event["Object"]["Pilot"]]["Aircraft"] = $event["Object"]["Name"];
               // Aggiunto campo Gruppo nella tabella statistiche pilota by Aikanaro
               $this->stats[$event["Object"]["Pilot"]]["Group"] = $event["Object"]["Group"];

album_pic.php?pic_id=82&user_id=46

 

Ovviamente aggiungendo solo questa stringa di codice non basta, per cui ho modificato anche questa parte di codice originale :

 

# display stats by pilot
       $this->addOutput('<br /><br /><h2>'.$this->L('statsByPilot').'</h2>');
       $this->addOutput('<table cellpadding="0" cellspacing="1" class="ptv_statsTable" align="center">');
       $this->addOutput('<tr>');
       $this->addOutput('<th width="150">'.$this->L('pilotName').'</td>');
       $this->addOutput('<th>'.$this->L('aircraft').'</td>');
       //$this->addOutput('<th>'.$this->L('takeoff').'</td>');
       //$this->addOutput('<th>'.$this->L('landing').'</td>');
       $this->addOutput('<th>'.$this->L('firedArmement').'</td>');
       $this->addOutput('<th width="55">'.$this->L('killedAircraft').'</td>');
       $this->addOutput('<th width="55">'.$this->L('killedHelo').'</td>');
       $this->addOutput('<th width="55">'.$this->L('killedShip').'</td>');
       $this->addOutput('<th width="55">'.$this->L('killedSAM').'</td>');
       $this->addOutput('<th width="55">'.$this->L('killedTank').'</td>');
       $this->addOutput('<th width="55">'.$this->L('teamKill').'</td>');
       $this->addOutput('<th>'.$this->L('hited').'</td>');
       //$this->addOutput('<th>'.$this->L('destroyed').'</td>');
       $this->addOutput('</tr>');

       $class = "row1";
       foreach($this->stats as $key => $stat) {

           if($key != "" AND substr($key, 0, 5) != "Pilot") {
               //$this->displayEventRow($event);
               $this->addOutput('<tr class="ptv_'.$class.'">');
               $this->addOutput('<td><a href="javascript: showDetails(\''.$key.'\')">'.$key.'</a></td>');
               //$this->addOutput('<td><img src="biblio/'.$stat["Aircraft"].'.jpg" alt="" class="biblio" /></td>');  // Riga decommentata by Aikanaro
               $this->addOutput('<td>'.$stat["Aircraft"].'</td>');
               //$this->addOutput('<td>'.$stat["TakeOffs"]["Count"].'</td>');
               //$this->addOutput('<td>'.$stat["Lands"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Fired"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["Aircraft"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["Helicopter"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["Ship"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["SAM/AAA"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["Tank"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["TeamKilled"]["Count"].'</td>');
               //$this->addOutput('<td>'.($stat["Hited"]["Aircraft"]["Count"]+$stat["Hited"]["SAM/AAA"]["Count"]+$stat["Hited"]["Tank"]["Count"]).'</td>');
               $this->addOutput('<td>'.$stat["Hited"]["Count"].'</td>');
               //$this->addOutput('<td>'.$stat["Destroyed"]["Count"].'</td>');
               $this->addOutput('</tr>');

In questo modo aggiungendo la riga di codice per la visualizzazione della cella " Gruppo ", decommentando le righe di " Takeoff , Landing e Destroyed" per la visualizzazione delle celle " Decolli , Atterraggi e Abbattimenti" e rimuovendo la dimensione predefinita delle celle di modo che si adattino automaticamente al contenuto della cella stassa in questo modo:

 

# display stats by pilot
       $this->addOutput('<br /><br /><h2>'.$this->L('statsByPilot').'</h2>');
       $this->addOutput('<table cellpadding="0" cellspacing="1" class="ptv_statsTable" align="center">');
       $this->addOutput('<tr>');
       $this->addOutput('<th>'.$this->L('pilotName').'</td>');
       $this->addOutput('<th>'.$this->L('model').'</td>');
       $this->addOutput('<th>'.$this->L('aircraft').'</td>');
       $this->addOutput('<th>'.$this->L('group').'</td>'); // Aggiunto campo Gruppo nella tabella statistiche pilota by Aikanaro
       $this->addOutput('<th>'.$this->L('takeoff').'</td>');  // Riga decommentata by Aikanaro
       $this->addOutput('<th>'.$this->L('landing').'</td>');  // Riga decommentata by Aikanaro
       $this->addOutput('<th>'.$this->L('firedArmement').'</td>');
       $this->addOutput('<th>'.$this->L('killedAircraft').'</td>');
       $this->addOutput('<th>'.$this->L('killedHelo').'</td>');
       $this->addOutput('<th>'.$this->L('killedShip').'</td>');
       $this->addOutput('<th>'.$this->L('killedSAM').'</td>');
       $this->addOutput('<th>'.$this->L('killedTank').'</td>');
       $this->addOutput('<th>'.$this->L('teamKill').'</td>');
       $this->addOutput('<th>'.$this->L('hited').'</td>');
       $this->addOutput('<th>'.$this->L('destroyed').'</td>');  // Riga decommentata by Aikanaro
       $this->addOutput('</tr>');

       $class = "row1";
       foreach($this->stats as $key => $stat) {

           if($key != "" AND substr($key, 0, 5) != "Pilot") {
               //$this->displayEventRow($event);
               $this->addOutput('<tr class="ptv_'.$class.'">');
               $this->addOutput('<td><a href="javascript: showDetails(\''.$key.'\')">'.$key.'</a></td>');
               $this->addOutput('<td><img src="biblio/'.$stat["Aircraft"].'.jpg" width="50" height="30" alt="" class="biblio" /></td>');
               $this->addOutput('<td>'.$stat["Aircraft"].'</td>');
               $this->addOutput('<td>'.$stat["Group"].'</td>');  // Aggiunto campo Gruppo nella tabella statistiche pilota by Aikanaro
               $this->addOutput('<td>'.$stat["TakeOffs"]["Count"].'</td>');  // Riga decommentata by Aikanaro
               $this->addOutput('<td>'.$stat["Lands"]["Count"].'</td>');  // Riga decommentata by Aikanaro
               $this->addOutput('<td>'.$stat["Fired"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["Aircraft"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["Helicopter"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["Ship"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["SAM/AAA"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Killed"]["Tank"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["TeamKilled"]["Count"].'</td>');
               //$this->addOutput('<td>'.($stat["Hited"]["Aircraft"]["Count"]+$stat["Hited"]["SAM/AAA"]["Count"]+$stat["Hited"]["Tank"]["Count"]).'</td>');
               $this->addOutput('<td>'.$stat["Hited"]["Count"].'</td>');
               $this->addOutput('<td>'.$stat["Destroyed"]["Count"].'</td>');
               $this->addOutput('</tr>');

Cosi' ho ottenuto anche i campi " Decolli, Atterraggi e Abbattimenti come indicato dalle frecce gialle in figura.

 

album_pic.php?pic_id=83&user_id=46

 

Ovviamente siccome siamo italiani e non tutti masticano le lingue ho localizzato la pagina in italiano andando ad aggiungere nella cartella languages il file tacview_it.php tradotto in italiano cosi' :

 

<?php
// Traduzione italiana by Aikanaro
   $_LANGUAGE = array();
   $_LANGUAGE['information'] = 'Informazione Missione';
   $_LANGUAGE['events'] = 'Eventi';
   $_LANGUAGE['missionName'] = 'Nome Missione';
   $_LANGUAGE['missionTime'] = 'Ora Inizio';
   $_LANGUAGE['missionDuration'] = 'Durata';
   $_LANGUAGE['time'] = 'Tempo';
   $_LANGUAGE['action'] = 'Azione';
   $_LANGUAGE['type'] = 'Tipo';
   
   $_LANGUAGE['HasLanded'] = 'e\' atterrato all\'aeroporto';
   $_LANGUAGE['HasTakeOff'] = 'e\' decollato dall\'aeroporto';
   $_LANGUAGE['HasBeenDestroyed'] = 'e\' stato abbattuto';
   $_LANGUAGE['HasEnteredTheArea'] = 'e\' entrato nell\'area';
   $_LANGUAGE['HasLeftTheArea'] = 'e\' uscito dall\'area';
   $_LANGUAGE['HasFired'] = 'ha lanciato';
   $_LANGUAGE['HasBeenHitBy'] = 'e\' stato colpito da';
   
   
   
   $_LANGUAGE['statsByPilot'] = 'Statistiche Piloti';
   $_LANGUAGE['pilotStats'] = 'Statistiche';
   $_LANGUAGE['takeoff'] = 'Decolli';
   $_LANGUAGE['takeoff_long'] = 'Decolli';
   $_LANGUAGE['landing'] = 'Atterraggi';
   $_LANGUAGE['landing_long'] = 'Atterraggi';
   $_LANGUAGE['aircraft'] = 'Velivolo';
   $_LANGUAGE['pilotName'] = 'Pilota';
   $_LANGUAGE['firedArmement'] = 'Armi Utilizzate';
   $_LANGUAGE['firedArmement_long'] = 'Armamento Utilizzato';
   $_LANGUAGE['killedAircraft'] = 'Kill A/A';
   $_LANGUAGE['killedSAM'] = 'Kill A/SAM';
   $_LANGUAGE['killedTank'] = 'Kill A/Tank';
   $_LANGUAGE['killedHelo'] = 'Kill A/Helo';
   $_LANGUAGE['killedShip'] = 'Kill A/Ship';
   $_LANGUAGE['teamKill'] = 'Fuoco Amico';
   $_LANGUAGE['hited'] = 'Colpito';
   $_LANGUAGE['destroyed'] = 'Abbattuto';
   $_LANGUAGE['hitedBy'] = 'Colpito da';
   $_LANGUAGE['nothing'] = '0';
   $_LANGUAGE['ObjectShell'] = 'proiettile';
   $_LANGUAGE['ObjectBullet'] = 'proiettile';
   $_LANGUAGE['group'] = 'Gruppo'; // Aggiunto by Aikanaro
   $_LANGUAGE[''] = '';
   $_LANGUAGE['model'] = 'Modello'; // Aggiunto by Aikanaro
   $_LANGUAGE[''] = '';
   $_LANGUAGE[''] = '';
   $_LANGUAGE[''] = '';
   
?>

Queste sono alcune modifiche che ho fatto su questo file e scommetto che qualcuno si starà chiedendo come mai non visualizzo l'immagine dell'aereo nella tabella statistiche del pilota?

 

Be' la risposta è dentro di te ma è SBAGLIATA :megalol:

 

Scherzo mi sono dimenticato di dirvi che bisogna decommentare la riga

//$this->addOutput('<td><img src="biblio/'.$stat["Aircraft"].'.jpg" alt="" class="biblio" /></td>');

che ho modificato aggiungendogli le diensioni per ridimensionare in automatico l'immagine contenuta nella cartella biblio in questo modo:

 

$this->addOutput('<td><img src="biblio/'.$stat["Aircraft"].'.jpg" width="50" height="30" alt="" class="biblio" /></td>');  // Riga decommentata

Adesso si è fatto tardi domani se ho tempo posto le altre modifiche.

 

Walzer!!!

album_showpage.php?pic_id=81&sort_order=ASC&sort_method=pic_time&user_id=46


Edited by Aikanaro

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic82617_1.gif[/sIGPIC]

Cap. Aikanaro 48th Gruppo Squadrone Pavone

Server Admin

http://www.crimsonflag.net

Link to comment
Share on other sites

sei un mostro ! da quando uso Delphi ho perso lucidità nel PHP...

Simulatori: DCS A-10C II Warthog - DCS F/A-18C Hornet - DCS F-16C - VRS F/A-18E - 
HOTAS: TM Warthog - Cougar \ HP Reverb G2 \ WinWing Panels

Tally: I see the degenerate commie who wants to ruin our day.

 

Link to comment
Share on other sites

Ciao ragazzi.

 

Oggi andiamo avanti con le modifiche effettuate.

 

Come sapete già cliccando sul nome del pilota nella tabella delle statistiche si apre l'applet java che vi mostra le statistiche del profilo pilota come mostrato nella figura da PHPTacview originale.

 

album_pic.php?pic_id=84&user_id=46

 

La parte di script originale si presenta così:

 

$this->addOutput('<br /><h2>'.$this->L("pilotStats").'</h2>');

                       $this->addOutput('</tr>');
                       $this->addOutput('<tr>');

                           $this->addOutput('<td style="text-align: center; width: 50%;">');
                           $this->addOutput('<br /><strong>'.$this->L("takeoff_long").' :</strong><br />');
                           if(is_array($stat["TakeOffs"])){
                               foreach($stat["TakeOffs"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["TakeOffs"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('<br /><strong>'.$this->L("landing_long").' :</strong><br />');
                           if(is_array($stat["Lands"])){
                               foreach($stat["Lands"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Lands"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('<br /><strong>'.$this->L("firedArmement_long").' :</strong><br />');
                           if(is_array($stat["Fired"])){
                               foreach($stat["Fired"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Fired"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('<br /><strong>'.$this->L("teamKill").' :</strong><br />');
                           if(is_array($stat["TeamKilled"])){
                               foreach($stat["TeamKilled"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["TeamKilled"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('<br /><strong>'.$this->L("hitedBy").' :</strong><br />');
                           if(is_array($stat["Hited"])){
                               foreach($stat["Hited"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Hited"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('</td>');

                           $this->addOutput('<td style="text-align: center;">');
                           $this->addOutput('<br /><strong>'.$this->L("killedAircraft").' :</strong><br />');
                           if(is_array($stat["Killed"]["Aircraft"])){
                               foreach($stat["Killed"]["Aircraft"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["Aircraft"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('<br /><strong>'.$this->L("killedHelo").' :</strong><br />');
                           if(is_array($stat["Killed"]["Helicopter"])){
                               foreach($stat["Killed"]["Helicopter"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["Helicopter"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('<br /><strong>'.$this->L("killedShip").' :</strong><br />');
                           if(is_array($stat["Killed"]["Ship"])){
                               foreach($stat["Killed"]["Ship"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["Ship"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('<br /><strong>'.$this->L("killedSAM").' :</strong><br />');
                           if(is_array($stat["Killed"]["SAM/AAA"])){
                               foreach($stat["Killed"]["SAM/AAA"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["SAM/AAA"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('<br /><strong>'.$this->L("killedTank").' :</strong><br />');
                           if(is_array($stat["Killed"]["Tank"])){
                               foreach($stat["Killed"]["Tank"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["Tank"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

Ho pensato di modificarla in questo modo aggiungendo alle statistiche anche gli abbattimenti e la videata si presenta così:

 

album_pic.php?pic_id=86&user_id=46

 

Come potete notare a differenza dell'immagine originale ho suddiviso le statistiche in 3 colonne aggiungendo anche quella degli abbattimenti e la porzione di script modificato si presenta così:

 

$this->addOutput('<br /><h2>'.$this->L("pilotStats").'</h2>');

                       $this->addOutput('</tr>');
                       $this->addOutput('<tr>');
                           // Decolli
                           $this->addOutput('<td style="text-align: center; width: 33%;">');
                           $this->addOutput('<br /><strong>'.$this->L("takeoff_long").' :</strong><br />');
                           if(is_array($stat["TakeOffs"])){
                               foreach($stat["TakeOffs"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["TakeOffs"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');
                           // Atterraggi
                           $this->addOutput('<br /><strong>'.$this->L("landing_long").' :</strong><br />');
                           if(is_array($stat["Lands"])){
                               foreach($stat["Lands"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Lands"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');
                           // Armamento Utilizzato
                           $this->addOutput('<br /><strong>'.$this->L("firedArmement_long").' :</strong><br />');
                           if(is_array($stat["Fired"])){
                               foreach($stat["Fired"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Fired"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');
                          
                           $this->addOutput('</td>');
                           
                           // Fuoco Amico
                           $this->addOutput('<td style="text-align: center; width: 33%;">');
                           $this->addOutput('<br /><strong>'.$this->L("teamKill").' :</strong><br />');
                           if(is_array($stat["TeamKilled"])){
                               foreach($stat["TeamKilled"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["TeamKilled"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');
                           // Fuoco Nemico
                           $this->addOutput('<br /><strong>'.$this->L("hitedBy").' :</strong><br />');
                           if(is_array($stat["Hited"])){
                               foreach($stat["Hited"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Hited"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');
                           // Abbattuto
                           $this->addOutput('<br /><strong>'.$this->L("destroyed").' :</strong><br />'); // Aggiunta statistica abbattimenti nel profilo statistiche pilota by Aikanaro
                           if(is_array($stat["Destroyed"]))$this->addOutput('('.$v.')<br />');
                           if($stat["Destroyed"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');

                           $this->addOutput('</td>');
                           // Kill A/A
                           $this->addOutput('<td style="text-align: center; width: 33%;">');
                           $this->addOutput('<br /><strong>'.$this->L("killedAircraft").' :</strong><br />');
                           if(is_array($stat["Killed"]["Aircraft"])){
                               foreach($stat["Killed"]["Aircraft"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["Aircraft"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');
                           // Kill Helo
                           $this->addOutput('<br /><strong>'.$this->L("killedHelo").' :</strong><br />');
                           if(is_array($stat["Killed"]["Helicopter"])){
                               foreach($stat["Killed"]["Helicopter"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["Helicopter"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');
                           // Kill Ship
                           $this->addOutput('<br /><strong>'.$this->L("killedShip").' :</strong><br />');
                           if(is_array($stat["Killed"]["Ship"])){
                               foreach($stat["Killed"]["Ship"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["Ship"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');
                           // Kill SAM/AAA
                           $this->addOutput('<br /><strong>'.$this->L("killedSAM").' :</strong><br />');
                           if(is_array($stat["Killed"]["SAM/AAA"])){
                               foreach($stat["Killed"]["SAM/AAA"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["SAM/AAA"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');
                           // Kill Tank
                           $this->addOutput('<br /><strong>'.$this->L("killedTank").' :</strong><br />');
                           if(is_array($stat["Killed"]["Tank"])){
                               foreach($stat["Killed"]["Tank"] as $k => $v){
                                   if($k != "Count") $this->addOutput(' - '.$k.' ('.$v.')<br />');
                               }
                           }
                           if($stat["Killed"]["Tank"]["Count"] == "") $this->addOutput('('.$this->L("nothing").')<br />');


Edited by Aikanaro

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic82617_1.gif[/sIGPIC]

Cap. Aikanaro 48th Gruppo Squadrone Pavone

Server Admin

http://www.crimsonflag.net

Link to comment
Share on other sites

C'e' da dire anche che la cartella biblio così come la cartella images, sono incomplete, per cui potrebbe capitarvi come è capitato a noi di fare un prova con una missione training per il rifornimento in volo e di riscontrare che nelle statistiche non venga mostrata l'immagine del KC-135 Stratotanker. Bene niente paura non viene mostrata solo perchè non c'e', così come l'immagine del A-10c perchè la nuova versione del Tacview lo nomina come A-10C Thunderbolt II, percui anche se nella cartella biblio l'immagine dell'A-10C c'e' non viene caricata perche' nominata in maniera diversa. Inserire le immagini mancanti non è poi cosi' difficile, basta aprire il file .xml con un semplice notepad ed andare a vedere come viene nominato l'oggetto in questione, a questo punto basta rinominare l'immagine esistente nella cartella bilbio oppure crearne una nuova con le identiche dimensioni.

 

Passiamo ora alla cartella images. Qui vengono raccolte le icone che vengono visualizzate negli eventi. La cartella originale si presenta con queste icone:

 

album_pic.php?pic_id=87&user_id=46

 

Io l'ho opportunamente modificata rinominando e aggiungendo alcune icone mancanti, questo sempre a seguito di mancata visualizzazione durante alcune prove.

 

album_pic.php?pic_id=88&user_id=46

 

In sostanza ho modificato l'icona degli hit, ho rinominato le icone Parachutist con Infantry, ho aggiunto le icone dei Chaff e dei Flare ed in fine ho aggiunto le icone delle Bombe e quella del Parachutis, ottenendo negli eventi questo:

 

album_pic.php?pic_id=89&user_id=46

 

Ora è possibile negli eventi identificare come si vede dalle frecce gialle e rosse, quando il velivolo viene abbattutto, se il pilota si è iettato e se è sopravvissuto o è stato abbattuto. In questa videata entrambi i piloti iettati per un qualsiasi motivo sono stati abbattuti. Nel caso in cui uno dei due o entrambi fossero sopravvissuti non avremmo avuto l'evento di abbattimento successivo al loro eject identificato dalla riga celeste.

 

Ora per ottenere la visualizzazione di queste icone ho dovuto modificare la porzione di script in questo modo:

 

# type
       $this->addOutput('<td class="ptv_rowType">');
       switch($event["Object"]["Type"]) {
           case "SAM/AAA":
               $lImage = '<img src="'.$this->image_path.'images/SAM-AAA_'.$event["Object"]["Coalition"].'.gif" alt="" />';
               break;
           case "Parachutist":
               $lImage = '<img src="'.$this->image_path.'images/Parachutist.gif" alt="" />'; //Aggiunta icona Paracadutista by Aikanaro
               break;
           case "CBU-97":
               $lImage = '<img src="'.$this->image_path.'images/CBU-97_'.$event["Object"]["Coalition"].'.gif" alt="" />'; //Aggiunta icona Bomba by Aikanaro
               break;
           case "Chaff":
               $lImage = '<img src="'.$this->image_path.'images/Chaff_'.$event["Object"]["Coalition"].'.gif" alt="" />'; //Aggiunta icona Chaff by Aikanaro
               break;
           case "Flare":
               $lImage = '<img src="'.$this->image_path.'images/Flare_'.$event["Object"]["Coalition"].'.gif" alt="" />'; //Aggiunta icona Flare by Aikanaro
               break;
           default:
               $lImage = '<img src="'.$this->image_path.'images/'.$event["Object"]["Type"].'_'.$event["Object"]["Coalition"].'.gif" alt="" />';
               break;

In allegato trovate la versione completa con tutti gli aggiornamenti effettuati.

PHPTacview.rar


Edited by Aikanaro

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic82617_1.gif[/sIGPIC]

Cap. Aikanaro 48th Gruppo Squadrone Pavone

Server Admin

http://www.crimsonflag.net

Link to comment
Share on other sites

Ragazzi c'e' bisogno che qualcuno mi dia una mano e si occupi quanto meno di trovare il modo di esportare i dati in maniera automatica in un database MySQL. Il terzo passo è vedere come automatizzare la conversione del file di tacview in .xml


Edited by Aikanaro

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic82617_1.gif[/sIGPIC]

Cap. Aikanaro 48th Gruppo Squadrone Pavone

Server Admin

http://www.crimsonflag.net

Link to comment
Share on other sites

Aika, se riesci a buttare i dati su MySQL mi rendi un uomo felice, sai bene perchè.

 

(mi basta poco, lo ammetto :D )

ChromiumDis.png

Author of DSMC, mod to enable scenario persistency and save updated miz file

Stable version & site: https://dsmcfordcs.wordpress.com/

Openbeta: https://github.com/Chromium18/DSMC

 

The thing is, helicopters are different from planes. An airplane by it's nature wants to fly, and if not interfered with too strongly by unusual events or by a deliberately incompetent pilot, it will fly. A helicopter does not want to fly. It is maintained in the air by a variety of forces in opposition to each other, and if there is any disturbance in this delicate balance the helicopter stops flying; immediately and disastrously.

Link to comment
Share on other sites

Chrom, tenendo presente che non conosco nemmeno la programmazione php quello che sono riuscito a fare è già un miracolo. Vediamo anzi speriamo che si affacci qualche anima pia che mastichi meglio in php cosi' da integrare la parte di script per il database. Ad ogni modo non demordo ma continuo a lavorarci su.

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic82617_1.gif[/sIGPIC]

Cap. Aikanaro 48th Gruppo Squadrone Pavone

Server Admin

http://www.crimsonflag.net

Link to comment
Share on other sites

Stai già facendo tantissimo, anche così sarà un pò sbatti ma chissene, avrò dati attendibili al 100% comunque se riesco a fornirti il file del TacView.

 

Intanto qui sto in stand-by sino all'uscita della patch... non ho fretta, nessuno mi corre dietro :).

ChromiumDis.png

Author of DSMC, mod to enable scenario persistency and save updated miz file

Stable version & site: https://dsmcfordcs.wordpress.com/

Openbeta: https://github.com/Chromium18/DSMC

 

The thing is, helicopters are different from planes. An airplane by it's nature wants to fly, and if not interfered with too strongly by unusual events or by a deliberately incompetent pilot, it will fly. A helicopter does not want to fly. It is maintained in the air by a variety of forces in opposition to each other, and if there is any disturbance in this delicate balance the helicopter stops flying; immediately and disastrously.

Link to comment
Share on other sites

Il file del tacview lo tiro giu' io direttamente dal server dalle prossime missioni, così da avere una certa affidabilità di dati, poi se dovesse occorerti nessun problema me lo dici e te lo metto in share sul vostro spazio FTP così te lo puoi scaricare.

[sIGPIC]http://forums.eagle.ru/signaturepics/sigpic82617_1.gif[/sIGPIC]

Cap. Aikanaro 48th Gruppo Squadrone Pavone

Server Admin

http://www.crimsonflag.net

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...