Gaanalma Posted August 11, 2011 Share Posted August 11, 2011 Ciao a tutti... stò cercando di capire come funziona questo strumento per creare una tabella in php da un log xls del tacview... Qualcuno di voi sa cosa devo fare per farlo funzionare!!??? Grazie! [sIGPIC][/sIGPIC] www.36stormovirtuale.net Link to comment Share on other sites More sharing options...
_Heater_ Posted August 11, 2011 Share Posted August 11, 2011 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 More sharing options...
Gaanalma Posted August 11, 2011 Author Share Posted August 11, 2011 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! Riesci a capirci qualcosa aprendo il File!!! Magari è d'aiuto anche a te e al tuo socio!! Ciao e Grazie:smilewink: [sIGPIC][/sIGPIC] www.36stormovirtuale.net Link to comment Share on other sites More sharing options...
Gaanalma Posted August 11, 2011 Author Share Posted August 11, 2011 HAHAHAHAHAHA ho visto dopo che mi avevi mandato allo stesso indirizzo!!!!!! Ma come faccio a farglielo leggere!! [sIGPIC][/sIGPIC] www.36stormovirtuale.net Link to comment Share on other sites More sharing options...
Gaanalma Posted August 28, 2011 Author Share Posted August 28, 2011 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][/sIGPIC] www.36stormovirtuale.net Link to comment Share on other sites More sharing options...
Paranoid_CF Posted September 8, 2011 Share Posted September 8, 2011 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 More sharing options...
_Heater_ Posted September 8, 2011 Share Posted September 8, 2011 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 More sharing options...
Paranoid_CF Posted September 8, 2011 Share Posted September 8, 2011 Para, la pagina chiede la pass. Comunque pazientate, nella prossima versione del TacView verrà inserito in versione "beta" l'esportazione online. ok riprova ora. [sIGPIC][/sIGPIC] ----------------------------------- http://www.crimsonflag.net :thumbup: 102° Gruppo di Volo Virtuale Link to comment Share on other sites More sharing options...
_Heater_ Posted September 8, 2011 Share Posted September 8, 2011 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 More sharing options...
Paranoid_CF Posted September 8, 2011 Share Posted September 8, 2011 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 More sharing options...
Aikanaro Posted September 8, 2011 Share Posted September 8, 2011 (edited) 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 September 9, 2011 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 More sharing options...
Gaanalma Posted September 8, 2011 Author Share Posted September 8, 2011 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][/sIGPIC] www.36stormovirtuale.net Link to comment Share on other sites More sharing options...
Aikanaro Posted September 8, 2011 Share Posted September 8, 2011 (edited) 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 September 9, 2011 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 More sharing options...
Aikanaro Posted September 8, 2011 Share Posted September 8, 2011 (edited) 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"]; 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"]; 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. 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 decommentataAdesso si è fatto tardi domani se ho tempo posto le altre modifiche. Walzer!!! Edited September 9, 2011 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 More sharing options...
_Heater_ Posted September 9, 2011 Share Posted September 9, 2011 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 More sharing options...
Gaanalma Posted September 9, 2011 Author Share Posted September 9, 2011 Bravissimo! viene fuori un lavoro con i contro! [sIGPIC][/sIGPIC] www.36stormovirtuale.net Link to comment Share on other sites More sharing options...
Aikanaro Posted September 9, 2011 Share Posted September 9, 2011 (edited) 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. 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ì: 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 September 9, 2011 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 More sharing options...
Aikanaro Posted September 9, 2011 Share Posted September 9, 2011 (edited) 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: Io l'ho opportunamente modificata rinominando e aggiungendo alcune icone mancanti, questo sempre a seguito di mancata visualizzazione durante alcune prove. 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: 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 September 9, 2011 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 More sharing options...
Paranoid_CF Posted September 9, 2011 Share Posted September 9, 2011 Ma che te sei fumato? [sIGPIC][/sIGPIC] ----------------------------------- http://www.crimsonflag.net :thumbup: 102° Gruppo di Volo Virtuale Link to comment Share on other sites More sharing options...
Aikanaro Posted September 9, 2011 Share Posted September 9, 2011 (edited) 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 September 9, 2011 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 More sharing options...
chromium Posted September 9, 2011 Share Posted September 9, 2011 Aika, se riesci a buttare i dati su MySQL mi rendi un uomo felice, sai bene perchè. (mi basta poco, lo ammetto :D ) 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 More sharing options...
Aikanaro Posted September 9, 2011 Share Posted September 9, 2011 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 More sharing options...
chromium Posted September 9, 2011 Share Posted September 9, 2011 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 :). 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 More sharing options...
Aikanaro Posted September 10, 2011 Share Posted September 10, 2011 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 More sharing options...
Gaanalma Posted September 10, 2011 Author Share Posted September 10, 2011 Provo a vedere cosa riesco a fare... ma anche io sono agli inizi con il php quindi non faccio promesse, ma solo tentativi!! [sIGPIC][/sIGPIC] www.36stormovirtuale.net Link to comment Share on other sites More sharing options...
Recommended Posts