Cronjobs kenn ich nur als "crontab" - sprich die starten zu ner gewissen Uhrzeit.
Deshalb denke ich auch, dass das hier schwierig wird. Aber okay. Ich denke, ich sollte mal den Code posten. Habe mich nur davor gescheut, weil das MissionMakerModul so extrem groß ist. Ich werde auf die wichtigen Zeilen hinweisen:
Das ist die bisher genannte "anzeigen.php":
Zeile 80-90 ruft in regelmäßigen Abständen den Statusbalken über ein weiteres Skript ab.
[src=php]<?php ob_start(); ?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="stil.css">
<link rel="icon" type="image/x-icon" href="img/fav.png">
<link rel="shortcut icon" type="image/x-icon" href="img/fav.png">
<link type="image/x-icon" href="img/fav.png">
<title>OurAltis.de</title>
<script src="js/jquery.js"></script>
</head>
<?php
include 'inc/log_check.php';
include 'inc/sprachen.php';
$datenbank = "speicher_".$_SESSION['slot'];
include 'inc/db_connect.php';
$status = mysqli_fetch_array(mysqli_query($db, "SELECT * FROM status"));
if($_SESSION['partei'] == "west") {$eigenpartei = "phase_west"; $gegenpartei = "phase_ost";} elseif ($_SESSION['partei'] == "ost") { $eigenpartei = "phase_ost"; $gegenpartei = "phase_west"; }
if ($status[$eigenpartei] == "P0") { header('Location: desk.php'); }
if ($status[$eigenpartei] == "P1") { header('Location: table1.php'); }
if ($status[$eigenpartei] == "R0") { header('Location: table2.php'); }
if ($status[$eigenpartei] == "R1") { header('Location: table3.php'); }
if ($status[$eigenpartei] == "S1") { header('Location: table5.php'); }
if($_SESSION['partei'] == '')
{
echo "<body bgcolor=\"#333333\" style=\"overflow:hidden;\">";
}elseif($_SESSION['partei'] == 'west') {
echo "<body bgcolor=\"#003366\" style=\"overflow:hidden;\">";
}elseif($_SESSION['partei'] == 'ost') {
echo "<body bgcolor=\"#993333\" style=\"overflow:hidden;\">";
}
?>
<script type="text/javascript" src="js/wz_dragdrop.js"></script>
<div style="position:absolute; z-index:5;">
<img src="img/lan_de.jpg" /> <a href="lang.php?lang=0&back=table4" class="link_tablet">deutsch</a>
<a class="text_tablet"> | </a>
<img src="img/lan_en.jpg" /> <a href="lang.php?lang=1&back=table4" class="link_tablet">english</a>
<a class="text_tablet"> | </a>
<img src="img/lan_fr.jpg" /> <a href="lang.php?lang=2&back=table4" class="link_tablet">français</a>
</div>
<?php
if($_SESSION['partei'] == "west") {$flagge = "flagge_west.jpg";}
elseif($_SESSION['partei'] == "ost") {$flagge = "flagge_ost.jpg";}
elseif(!isset($_SESSION['partei']) || $_SESSION['partei'] == "") {$flagge = "ausweis_leer.png";}
?>
<script type="text/javascript" src="js/wz_tooltip.js"></script>
<div style="position: absolute; width:95%; top: 50px; " align="right" ><img src="img/logo_klein2.png" alt=""/></div>
<div id="division_hg" style="position:absolute; left:50px; top:300px; opacity:0.05; font-size:500px; color:#000; font-family: Arial; white-space: nowrap; "><?php echo $_SESSION['division']; ?></div>
<div style="position:absolute; top:20px; left:0px; width:450px; height:300px;"><img id="flagge" src="img/<?php echo $flagge; ?>"></div>
<div style="position: relative; border: 0px solid #000; color: #333; margin-left:auto; margin-right:auto; width:920px; top: 50px; " >
<script type="text/javascript">
$(document).ready(function() {
$("#status_mission").load("table_status4.php");
var refreshId = setInterval(function()
{
$("#status_mission").load('table_status4.php?' + 1*new Date());
}, 5000);
}); </script>
<div id="status_mission" style="position: relative; border: 0px solid #000; color: #333; margin-left:auto; margin-right:auto; width:920px; top: 165px; " ></div>
</div>
<!-- Altische Zeitung -->
<?php include 'table_zeitung.php'; ?>
<script type="text/javascript">
<!--
SET_DHTML("altische");
//-->
</script>
<?php
$status_abfrage = mysqli_fetch_array(mysqli_query($db, "SELECT * FROM status"));
if ($status_abfrage['server'] ==0)
{
echo "
<script language=\"javascript\" >
xmlhttp=new XMLHttpRequest();
xmlhttp.open(\"GET\",\"serverstart.php?rnd=\"+Math.random(), true);
xmlhttp.send();
</script> ";
}
?>
</body>
</html>
[/src]
statusbalken:
[src=php]<?php
session_start();
include 'inc/log_check.php';
$datenbank = "speicher_".$_SESSION['slot'];
include 'inc/db_connect.php';
include 'inc/sprachen.php';
$status = mysqli_fetch_array(mysqli_query($db, "SELECT * FROM status"));
?>
<a class="formular_titel"><?php echo $T_spielstart[$L]; ?></a>
<table border="0" style="width:100%; color:#FFF; text-align:center;">
<tr>
<td>
<div style="border: 1px solid white; width:100%;"><div id="status_mission" style="background-color:#FFFFFF; height: 5px; width:<?php echo $status['server']; ?>%; "><a class="formular_text"> </a></div></div>
</td>
</tr>
<tr>
<td>
<?php echo $status['server']."%"; ?>
</td>
</tr>
</table>
<?php
if($status['server'] == 100)
{
?>
<div id="buttons" style="position: relative; border: 0px solid #000; color: #333; margin-left:auto; margin-right:auto; width:920px; top: 130px; " >
<input type="button" class="btn" value="<?php echo $B_auswerten[$L]; ?>" onClick="">
<input type="button" class="btn" value="<?php echo $B_abmelden[$L]; ?>" onClick="window.location='logout.php';">
</div>
<?php
}
?>[/src]
das ist die hier genannte serverstart.php (erzeugen), die im ersten Skript (anzeigen) in den Zeilen 110-125 per AJAX augerufen wird:
[src=php]<?php
ob_start();
$size = ob_get_length();
header("Content-Length: ".$size);
header('Connection: close');
ob_end_flush();
ob_flush();
flush();
@session_write_close();
set_time_limit(200); // Oder wie lange auch immer dein Script braucht
ignore_user_abort(true);
session_start();
include 'inc/db_connect.php';
//Funktion: rekursives Löschen
function rmr($dir) {
if (is_dir($dir)) {
$dircontent=scandir($dir);
foreach ($dircontent as $c) {
if ($c!='.' and $c!='..' and is_dir($dir.'/'.$c)) {
rmr($dir.'/'.$c);
} else if ($c!='.' and $c!='..') {
unlink($dir.'/'.$c);
}
}
rmdir($dir);
} else {
unlink($dir);
}
}
$datenbank = "speicher_".$_SESSION['slot'];
include 'inc/db_connect.php';
//SERVERSTATUS
$status_abfrage = mysqli_fetch_array(mysqli_query($db, "SELECT * FROM status"));
if ($status_abfrage['server'] !=0)
{
exit;
}
else if ($status_abfrage['server'] == 0)
{
mysqli_query($db, "UPDATE status SET server = '1'"); //Serverstatus "laufend(9)"
$zufall = rand(100,999);
mysqli_query($db, "UPDATE status SET serverpw = '".$zufall."'"); //Serverpasswort erstellen und speichern
$serverpw_neu = $zufall;
// alle Potentielle Missionen und Reaktionen auswerten
// Welche Mission wird wirklich gespielt?
$alle_missionen = mysqli_query($db, "SELECT * FROM missionen");
$mission_zahl = mysqli_num_rows($alle_missionen);
$generator_startwert = round(100 / $mission_zahl); // =100/5=20
$generator_faktor = 1;
while ($mission = mysqli_fetch_array($alle_missionen))
{
$fortschritt = $generator_startwert * $generator_faktor;
$generator_faktor++;
if ($mission['done'] != '1') //standard !='1'
{
// KAPITULATION - KAPITULATION (passiert höchstens beim Grenzkrieg)
if ($mission['reaktion_west'] == "Kapitulation" && $mission['reaktion_ost'] == "Kapitulation")
{
// Status Einsatzkräfte auf "Kein Einsatz"
$truppen = mysqli_fetch_array(mysqli_query($db, "SELECT truppen FROM missionen WHERE operation = '".$mission['operation']."'"));
$truppen = str_replace(";;", ";", $truppen[0]);
$IDNR = explode(';', $truppen);
$anzahl = count($IDNR); $i = 0;
while ($i < $anzahl)
{
$id = substr($IDNR[$i],-5);
mysqli_query($db, "UPDATE armeen SET einsatz = '0' WHERE id = '".$id."'");
$i++;
}
// Befehle löschen
$befehlsnrr = mysqli_fetch_array(mysqli_query($db, "SELECT befehlsnr FROM missionen WHERE operation = '".$mission['operation']."'"));
$befehlsnr = explode(';;', $befehlsnrr[0]);
$anzahl = count($befehlsnr); $i = 0;
while ($i < $anzahl)
{
$result1 = mysqli_query($db, "DELETE FROM befehle WHERE befehlsnr = '".$befehlsnr[$i]."'");
$i++;
}
// Mission löschen
mysqli_query($db, "DELETE FROM missionen WHERE mission_id = '".$mission['mission_id']."'");
}
// KAPITULATION - KAMPF
if (($mission['reaktion_west'] == "Kapitulation" && $mission['reaktion_ost'] == "Kampf") || ($mission['reaktion_west'] == "Kampf" && $mission['reaktion_ost'] == "Kapitulation"))
{
// Wer hat gesiegt?
if ($mission['reaktion_west'] == "Kapitulation") {$sieger = "ost"; $verlierer = "west";} else {$sieger = "west"; $verlierer = "ost";}
// Alle Teilhaber (Spawnpunkte/Sammelstellen/Feldlager/Basen) einer Mission bündeln
$gebiete = mysqli_fetch_array(mysqli_query($db, "SELECT gebiete FROM missionen")); $gebiete = explode(';;', $gebiete[0]);
$basen = mysqli_fetch_array(mysqli_query($db, "SELECT basen FROM missionen")); $basen = explode(';;', $basen[0]);
$parteien = mysqli_fetch_array(mysqli_query($db, "SELECT parteien FROM missionen")); $parteien = explode(';;', $parteien[0]);
$truppen = mysqli_fetch_array(mysqli_query($db, "SELECT truppen FROM missionen")); $truppen = explode(';;', $truppen[0]);
for ($i=0; $i<$teilhaber_anzahl; $i++) // erzeugt Array nach Muster: $teilhaber_0 [Lago,1,west,21243234;23212314]
{
${'teilhaber_'.$i} = array(
"gebiet" => $gebiete[$i],
"basis" => $basen[$i],
"partei" => $parteien[$i],
"truppe" => $truppen[$i],
);
}
print_r($teilhaber_0);
// alle Einheiten des Aufgebenden löschen
for ($i=0; $i<$teilhaber_anzahl; $i++)
{
if (${'teilhaber_'.$i}['partei'] == $verlierer)
{
$IDNR = explode(';', ${'teilhaber_'.$i}['truppe']);
$anzahl = count($IDNR); $j = 0;
while ($j < $anzahl)
{
$id = substr($IDNR[$j],-5);
mysqli_query($db, "DELETE FROM armeen WHERE id = '".$id."'");
$j++;
}
}
}
// Einheiten des Siegers in das neue Land verschieben
for ($i=0; $i<$teilhaber_anzahl; $i++)
{
if (${'teilhaber_'.$i}['partei'] != $verlierer)
{
$IDNR = explode(';', ${'teilhaber_'.$i}['truppe']);
$anzahl = count($IDNR); $j = 0;
while ($j < $anzahl)
{
$id = substr($IDNR[$j],-5);
mysqli_query($db, "UPDATE armeen SET gebiet = '".$teilhaber_0['gebiet']."' WHERE id = '".$id."'");
mysqli_query($db, "UPDATE armeen SET einsatz = '0' WHERE id = '".$id."'");
$j++;
}
}
}
// Parteiwechsel im aufgegebenen Gebiet
mysqli_query($db, "UPDATE gebiete SET partei = '".$sieger."' WHERE gebiet = '".$teilhaber_0['gebiet']."'");
// Befehle löschen
$befehlsnrr = mysqli_fetch_array(mysqli_query($db, "SELECT befehlsnr FROM missionen WHERE operation = '".$mission['operation']."'"));
$befehlsnr = explode(';;', $befehlsnrr[0]);
$anzahl = count($befehlsnr); $i = 0;
while ($i < $anzahl)
{
$result1 = mysqli_query($db, "DELETE FROM befehle WHERE befehlsnr = '".$befehlsnr[$i]."'");
$i++;
}
// Mission löschen
mysqli_query($db, "DELETE FROM missionen WHERE mission_id = '".$mission['mission_id']."'");
}
// FLUCHT - KAMPF
if (($mission['reaktion_west'] != "Kapitulation" && $mission['reaktion_ost'] != "Kampf") || ($mission['reaktion_west'] != "Kampf" && $mission['reaktion_ost'] != "Kapitulation"))
{
// Wer hat gesiegt?
if ($mission['reaktion_west'] != "Kampf") {$sieger = "ost"; $verlierer = "west";} else {$sieger = "west"; $verlierer = "ost";}
// Wohin wird geflüchtet?
if($sieger == "west") { $fluchtgebiet = $mission['reaktion_ost']; } else { $fluchtgebiet = $mission['reaktion_west']; }
// Alle Teilhaber (Spawnpunkte/Sammelstellen/Feldlager/Basen) einer Mission bündeln
$gebiete = mysqli_fetch_array(mysqli_query($db, "SELECT gebiete FROM missionen")); $gebiete = explode(';;', $gebiete[0]);
$basen = mysqli_fetch_array(mysqli_query($db, "SELECT basen FROM missionen")); $basen = explode(';;', $basen[0]);
$parteien = mysqli_fetch_array(mysqli_query($db, "SELECT parteien FROM missionen")); $parteien = explode(';;', $parteien[0]);
$truppen = mysqli_fetch_array(mysqli_query($db, "SELECT truppen FROM missionen")); $truppen = explode(';;', $truppen[0]);
$teilhaber_anzahl = count($gebiete);
for ($i=0; $i<$teilhaber_anzahl; $i++) // erzeugt Array nach Muster: $teilhaber_0 [Lago,1,west,21243234;23212314]
{
${'teilhaber_'.$i} = array(
"gebiet" => $gebiete[$i],
"basis" => $basen[$i],
"partei" => $parteien[$i],
"truppe" => $truppen[$i],
);
}
// alle Einheiten des Aufgebenden verschieben
for ($i=0; $i<$teilhaber_anzahl; $i++)
{
if (${'teilhaber_'.$i}['partei'] == $verlierer)
{
$IDNR = explode(';', ${'teilhaber_'.$i}['truppe']);
$anzahl = count($IDNR); $j = 0;
while ($j < $anzahl)
{
$id = substr($IDNR[$j],-5);
mysqli_query($db, "UPDATE armeen SET gebiet = '".$fluchtgebiet."' WHERE id = '".$id."'");
mysqli_query($db, "UPDATE armeen SET einsatz = '0' WHERE id = '".$id."'");
$j++;
}
}
}
// Einheiten des Siegers in das neue Land verschieben
for ($i=0; $i<$teilhaber_anzahl; $i++)
{
if (${'teilhaber_'.$i}['partei'] != $verlierer)
{
$IDNR = explode(';', ${'teilhaber_'.$i}['truppe']);
$anzahl = count($IDNR); $j = 0;
while ($j < $anzahl)
{
$id = substr($IDNR[$j],-5);
mysqli_query($db, "UPDATE armeen SET gebiet = '".$teilhaber_0['gebiet']."' WHERE id = '".$id."'");
mysqli_query($db, "UPDATE armeen SET einsatz = '0' WHERE id = '".$id."'");
$j++;
}
}
}
// Parteiwechsel im aufgegebenen Gebiet
mysqli_query($db, "UPDATE gebiete SET partei = '".$sieger."' WHERE gebiet = '".$teilhaber_0['gebiet']."'");
// Befehle löschen
$befehlsnrr = mysqli_fetch_array(mysqli_query($db, "SELECT befehlsnr FROM missionen WHERE operation = '".$mission['operation']."'"));
$befehlsnr = explode(';;', $befehlsnrr[0]);
$anzahl = count($befehlsnr); $i = 0;
while ($i < $anzahl)
{
$result1 = mysqli_query($db, "DELETE FROM befehle WHERE befehlsnr = '".$befehlsnr[$i]."'");
$i++;
}
// Mission löschen
mysqli_query($db, "DELETE FROM missionen WHERE mission_id = '".$mission['mission_id']."'");
}
// FLUCHT - FLUCHT
// FLUCHT - KAPITULATION
// KAMPF - KAMPF
if ($mission['reaktion_west'] == "Kampf" && $mission['reaktion_ost'] == "Kampf")
{
mysqli_query($db, "UPDATE missionen SET done = '1' WHERE mission_id = '".$mission['mission_id']."'");
//fn_OurAltisInit.sqf schreiben
//Header
$fn_OurAltisInit_sqf_header = "
#include \"macros.hpp\"
GVAR(MarkerAccuracy) = 500;
if(isServer) then {
GVAR(BaseList) = [];
GVAR(Infantry) = [];
GVAR(VehicleListVirtual) = [];
GVAR(OperationName) = \"".$mission['operation']."\";
";
//Basen und Feldlager
$gebiete = explode(";;", $mission['gebiete']);
$parteien = explode(";;", $mission['parteien']);
$basen = explode(";;", $mission['basen']);
$upgrade = explode(";;", $mission['upgrade']);
for ($i=0;$i<count($gebiete);$i++)
{
// Upgradezahlen von römisch in arabisch umwandeln
switch ($upgrade[$i]) {
case "I":
$level = "1";
break;
case "II":
$level = "2";
break;
case "III":
$level = "3";
break;
case "IV":
$level = "4";
break;
case "V":
$level = "5";
break;
case "VI":
$level = "6";
break;
default:
$level = "1";
}
$coords = mysqli_fetch_array(mysqli_query($db, "SELECT * FROM gebiete WHERE gebiet = '".$gebiete[$i]."'"));
if ($parteien[$i] == "west") { $parteien[$i] = "blufor"; } else { $parteien[$i] = "east"; }
${'spawn_'.$i} = "[[".$coords['fix1'].",".$coords['fix2']."], ".$parteien[$i].", \"".$gebiete[$i]."\", ".$basen[$i].", ".$level."]";
}
$fn_OurAltisInit_sqf_bases = "";
for ($i=0;$i<count($gebiete);$i++)
{
$fn_OurAltisInit_sqf_bases = $fn_OurAltisInit_sqf_bases.${'spawn_'.$i};
if($i+1 != count($gebiete)) {$fn_OurAltisInit_sqf_bases = $fn_OurAltisInit_sqf_bases.", ";}
}
$fn_OurAltisInit_sqf_bases = "[".$fn_OurAltisInit_sqf_bases."] call FUNC(createBases);";
//Wetter [0,1,0]
$wetter_teile = str_split($mission['wetter']);
$wetter = $wetter_teile[0].",".$wetter_teile[1].",".$wetter_teile[2];
$fn_OurAltisInit_sqf_wether = "[".$wetter."] call FUNC(setMissionParameter);";
//Fahrzeuge ["classname", "ID1", 1, 0, "Conner"]
$gebiete = explode(";;", $mission['gebiete']);
$truppen = explode(";;", $mission['truppen']);
$fn_OurAltisInit_sqf_geraet = "";
$add_besatzung = array();
for ($i=0;$i<count($gebiete);$i++)
{
$truppen_array = explode(";", $truppen[$i]);
${'fahrer_'.$gebiete[$i]} = 0;
${'crew_'.$gebiete[$i]} = 0;
${'pilot_'.$gebiete[$i]} = 0;
for ($j=0;$j<count($truppen_array);$j++)
{
$stat = mysqli_fetch_array(mysqli_query($db, "SELECT * FROM armeen WHERE id = '".substr($truppen_array[$j],3,5)."'"));
$tank = $stat['tank']/100;
$bestand = (100-$stat['bestand'])/100;
$besatzung = $stat['besatzung'];
if (substr($truppen_array[$j],0,3) == 211) { $fn_OurAltisInit_sqf_geraet .= "[\"B_Truck_01_covered_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 221) { $fn_OurAltisInit_sqf_geraet .= "[\"B_Truck_01_Repair_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 231) { $fn_OurAltisInit_sqf_geraet .= "[\"B_Truck_01_medical_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 241) { $fn_OurAltisInit_sqf_geraet .= "[\"B_Truck_01_fuel_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 311) { $fn_OurAltisInit_sqf_geraet .= "[\"B_MRAP_01_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 321) { $fn_OurAltisInit_sqf_geraet .= "[\"B_MRAP_01_hmg_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}+=2;}
if (substr($truppen_array[$j],0,3) == 411) { $fn_OurAltisInit_sqf_geraet .= "[\"B_APC_Wheeled_01_cannon_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'crew_'.$gebiete[$i]}+=3;}
if (substr($truppen_array[$j],0,3) == 421) { $fn_OurAltisInit_sqf_geraet .= "[\"B_MBT_01_mlrs_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'crew_'.$gebiete[$i]}+=2;}
if (substr($truppen_array[$j],0,3) == 431) { $fn_OurAltisInit_sqf_geraet .= "[\"B_MBT_01_cannon_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'crew_'.$gebiete[$i]}+=3;}
if (substr($truppen_array[$j],0,3) == 511) { $fn_OurAltisInit_sqf_geraet .= "[\"B_Heli_Transport_01_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'pilot_'.$gebiete[$i]}+=4;}
if (substr($truppen_array[$j],0,3) == 521) { $fn_OurAltisInit_sqf_geraet .= "[\"B_Heli_Attack_01_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'pilot_'.$gebiete[$i]}+=2;}
if (substr($truppen_array[$j],0,3) == 531) { $fn_OurAltisInit_sqf_geraet .= "[\"B_UAV_02_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], "; }
if (substr($truppen_array[$j],0,3) == 212) { $fn_OurAltisInit_sqf_geraet .= "[\"O_Truck_03_covered_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 222) { $fn_OurAltisInit_sqf_geraet .= "[\"O_Truck_03_repair_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 232) { $fn_OurAltisInit_sqf_geraet .= "[\"O_Truck_03_medical_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 242) { $fn_OurAltisInit_sqf_geraet .= "[\"O_Truck_03_fuel_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 312) { $fn_OurAltisInit_sqf_geraet .= "[\"O_MRAP_02_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}++;}
if (substr($truppen_array[$j],0,3) == 322) { $fn_OurAltisInit_sqf_geraet .= "[\"O_MRAP_02_hmg_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'fahrer_'.$gebiete[$i]}+=2;}
if (substr($truppen_array[$j],0,3) == 412) { $fn_OurAltisInit_sqf_geraet .= "[\"O_APC_Wheeled_02_rcws_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'crew_'.$gebiete[$i]}+=3;}
if (substr($truppen_array[$j],0,3) == 422) { $fn_OurAltisInit_sqf_geraet .= "[\"O_APC_Tracked_02_AA_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'crew_'.$gebiete[$i]}+=2;}
if (substr($truppen_array[$j],0,3) == 432) { $fn_OurAltisInit_sqf_geraet .= "[\"O_MBT_02_cannon_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'crew_'.$gebiete[$i]}+=3;}
if (substr($truppen_array[$j],0,3) == 512) { $fn_OurAltisInit_sqf_geraet .= "[\"O_Heli_Light_02_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'pilot_'.$gebiete[$i]}+=2;}
if (substr($truppen_array[$j],0,3) == 522) { $fn_OurAltisInit_sqf_geraet .= "[\"O_Heli_Attack_02_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], ";
${'pilot_'.$gebiete[$i]}+=2;}
if (substr($truppen_array[$j],0,3) == 532) { $fn_OurAltisInit_sqf_geraet .= "[\"O_UAV_02_F\", ".$tank.", ".$bestand.", \"".$gebiete[$i]."\", ".$truppen_array[$j]." ], "; }
}
${'array_fahrer_'.$gebiete[$i]} = array('Fahrer', ${'fahrer_'.$gebiete[$i]}, $gebiete[$i]);
${'array_crew_'.$gebiete[$i]} = array('Crew', ${'crew_'.$gebiete[$i]}, $gebiete[$i]);
${'array_pilot_'.$gebiete[$i]} = array('Pilot', ${'pilot_'.$gebiete[$i]}, $gebiete[$i]);
array_push($add_besatzung, ${'array_fahrer_'.$gebiete[$i]}, ${'array_crew_'.$gebiete[$i]}, ${'array_pilot_'.$gebiete[$i]});
}
$fn_OurAltisInit_sqf_geraet = "[".substr($fn_OurAltisInit_sqf_geraet, 0, -2)."] call FUNC(createVehicles);";
//echo count($add_besatzung);
$key = array_search('Sofia', $add_besatzung[0]);
//Infanterie ["Rifleman", 5, "Conner"]
$gebiete = explode(";;", $mission['gebiete']);
$truppen = explode(";;", $mission['truppen']);
$fn_OurAltisInit_sqf_inf = "";
for ($i=0;$i<count($gebiete);$i++)
{
$truppen_array = explode(";", $truppen[$i]);
$schz=0; $gren=0; $mgsc=0; $atsc=0; $aasc=0; $scsc=0; $aufk=0; $sani=0; $inge=0; $fahr=0; $crew=0; $pilo=0;
//Infanterietypen zählen
for ($j=0;$j<count($truppen_array);$j++)
{
if (substr($truppen_array[$j],0,2) == 11) { $schz++; }
if (substr($truppen_array[$j],0,2) == 12) { $gren++; }
if (substr($truppen_array[$j],0,2) == 13) { $mgsc++; }
if (substr($truppen_array[$j],0,2) == 14) { $atsc++; }
if (substr($truppen_array[$j],0,2) == 15) { $aasc++; }
if (substr($truppen_array[$j],0,2) == 16) { $scsc++; }
if (substr($truppen_array[$j],0,2) == 17) { $aufk++; }
if (substr($truppen_array[$j],0,2) == 18) { $sani++; }
if (substr($truppen_array[$j],0,2) == 19) { $inge++; }
}
//Zusätzliche Besatzung ermitteln
for ($ij=0;$ij<count($add_besatzung);$ij++)
{
if(array_search($gebiete[$i], $add_besatzung[$ij]) == 2 && $add_besatzung[$ij][0] == "Fahrer") {$fahr = $add_besatzung[$ij][1];}
if(array_search($gebiete[$i], $add_besatzung[$ij]) == 2 && $add_besatzung[$ij][0] == "Crew") {$crew = $add_besatzung[$ij][1];}
if(array_search($gebiete[$i], $add_besatzung[$ij]) == 2 && $add_besatzung[$ij][0] == "Pilot") {$pilo = $add_besatzung[$ij][1];}
}
//in ARMA-Code verwandeln
if ($schz > 0) { $fn_OurAltisInit_sqf_inf .= "[\"Rifleman\", ".$schz.", \"".$gebiete[$i]."\"], "; }
if ($gren > 0) { $fn_OurAltisInit_sqf_inf .= "[\"Grenadier\", ".$gren.", \"".$gebiete[$i]."\"], "; }
if ($mgsc > 0) { $fn_OurAltisInit_sqf_inf .= "[\"MG\", ".$mgsc.", \"".$gebiete[$i]."\"], "; }
if ($atsc > 0) { $fn_OurAltisInit_sqf_inf .= "[\"AT\", ".$atsc.", \"".$gebiete[$i]."\"], "; }
if ($aasc > 0) { $fn_OurAltisInit_sqf_inf .= "[\"AA\", ".$aasc.", \"".$gebiete[$i]."\"], "; }
if ($scsc > 0) { $fn_OurAltisInit_sqf_inf .= "[\"Marksman\", ".$scsc.", \"".$gebiete[$i]."\"], "; }
if ($aufk > 0) { $fn_OurAltisInit_sqf_inf .= "[\"Spotter\", ".$aufk.", \"".$gebiete[$i]."\"], "; }
if ($sani > 0) { $fn_OurAltisInit_sqf_inf .= "[\"Medic\", ".$sani.", \"".$gebiete[$i]."\"], "; }
if ($inge > 0) { $fn_OurAltisInit_sqf_inf .= "[\"Engineer\", ".$inge.", \"".$gebiete[$i]."\"], "; }
if ($fahr > 0) { $fn_OurAltisInit_sqf_inf .= "[\"Driver\", ".$fahr.", \"".$gebiete[$i]."\"], "; }
if ($crew > 0) { $fn_OurAltisInit_sqf_inf .= "[\"Crew\", ".$crew.", \"".$gebiete[$i]."\"], "; }
if ($pilo > 0) { $fn_OurAltisInit_sqf_inf .= "[\"Pilot\", ".$pilo.", \"".$gebiete[$i]."\"], "; }
}
$fn_OurAltisInit_sqf_inf = "[".substr($fn_OurAltisInit_sqf_inf, 0, -2)."] call FUNC(configureInfantry);";
$fn_OurAltisInit_sqf_footer = "}; [] call FUNC(initializeGenericMissionPart); nil;";
//onloadnamen: Grenzkonflikt, Territorialkonflikt (mit Geiselnahme, Konvoiterminierung etc.)
$description_ext = "
#include \"config\cfgFunctions.cpp\"
#include \"config\cfgRespawnTemplates.cpp\"
#include \"macros.hpp\"
author=\"OurAltis\";
OnLoadName = \"Territorialkonflikt\";
onLoadMission = \"Operation ".$mission['operation']."\";
//loadScreen = \"bild.jpg\";
respawn = \"BASE\";
respawnDialog = 0;
respawnTemplates[] = {\"OurAltis\"};
respawnDelay = 13;
//allowFunctionsLog = 1;
saving = 0;
class Header {
gameType = SC;
minPlayers = 2;
maxPlayers = 8;
};
disabledAI = 1;
enableTeamSwitch = 0;
// disable all channels but the global text chat
disableChannels[]={{0,false,true},{1,true,false},{1,true,false},{1,true,false},{1,true,false},{1,true,false},{1,true,false}};
//debug stuff
enableDebugConsole = 1;
FUNCTIONS_RECOMPILE
";
}
//ORDNER IN missions ERSTELLEN
$operation_ordner = str_replace(" ","%20",$mission['operation']);
$operation_cycle = str_replace(" ","_",$mission['operation']);
//PROTOTYPEN KOPIEREN
include_once('inc/copy_folder.php');
$statsCopyFolder['bytes'] = 0;
$statsCopyFolder['files'] = 0;
$source = 'missions/_prototyp/';
$dest = 'missions/'.$operation_ordner.'.Altis/';
copyFolder($source, $dest, $statsCopyFolder, true);
$statsCopyFolder['bytes'] = binary_multiples($statsCopyFolder['bytes'], true, false);
//echo "<br><br>".$statsCopyFolder['files'] . ' Dateien kopiert ('.$statsCopyFolder['bytes'].').';
//echo "<br>Ziel: ".$dest;
//fn_OurAltisInit.sqf IN MISSIONS-ORDNER SCHREIBEN
$datei1 = fopen('missions/'.$operation_ordner.'.Altis/scripts/functions/init/fn_OurAltisInit.sqf','w');
fwrite($datei1, $fn_OurAltisInit_sqf_header." ".$fn_OurAltisInit_sqf_bases." ".$fn_OurAltisInit_sqf_wether." ".$fn_OurAltisInit_sqf_inf." ".$fn_OurAltisInit_sqf_geraet." ".$fn_OurAltisInit_sqf_footer);
fclose($datei1);
//description.ext IN MISSIONS-ORDNER SCHREIBEN
$datei2 = fopen('missions/'.$operation_ordner.'.Altis/description.ext','w');
fwrite($datei2, $description_ext);
fclose($datei2);
//BILD KOPIEREN
//$file1 = "missions/_prototyp/alter_bildname.jpg"; // alter Bildname richtet sich nach dem jeweiligen Szenario (Grenzkrieg/Territorialkonflik oder Sitemissions wie Geisel, Konvoi etc)
//$file2 = "missions/".$mission['operation'].".Altis/neuer_bildname.jpg"; // neuer Bildname sollte statisch und immer gleich lauten.
//copy($file1, $file2);
//PBO PACKEN
exec("start /b missions\cpbo.exe -y -p missions\\".$operation_ordner.".Altis missions\\".$operation_ordner.".altis.pbo");
//echo $output;
//PBO über FTP zum GAMESERVER
$server = 'IPIPIPIPIPIP';
$ftp_user_name = 'UN';
$ftp_user_pass = 'PASS';
$dest = "ArmA3_OPT_Fun2_Server\\mpmissions\\".$operation_ordner.".altis.pbo";
$source = "missions\\".$operation_ordner.".altis.pbo";
$connection = ftp_connect($server);
$login = ftp_login($connection, $ftp_user_name, $ftp_user_pass);
if (!$connection || !$login) { die('Connection attempt failed!'); }
ftp_pasv($connection, true);
$upload = ftp_put($connection, $dest, $source, FTP_BINARY);
if (!$upload) { echo 'FTP upload failed!'; }
ftp_close($connection);
//MISSIONS-ORDNER und PBO auf WEBSERVER LÖSCHEN
rmr('missions/'.$operation_ordner.'.Altis');
unlink('missions/'.$operation_ordner.'.altis.pbo');
$missions_cycle .= "class ".$operation_cycle." {template=".$operation_ordner.".Altis; cadetMode=0;};";
mysqli_query($db, "UPDATE status SET server = '".$fortschritt."'");
}
}
// SERVER.CFG SCHREIBEN
$server_cfg = "
// server.cfg
// STEAM
// steamport = 2700;
// steamqueryport = 2701;
// GLOBAL SETTINGS
// War
hostname = \"OurAltis Testserver\";
password = \"".$serverpw_neu."\";
passwordAdmin = \"admin\";
reportingIP = \"arma3pc.master.gamespy.com\";
logFile = \"server_console.log\";
timeStampFormat = \"full\";
// WELCOME MESSAGE
motd[] = {
\" \",
\"OUR ALTIS\",
\"Round 1\",
\" \",
\"http://www.ouraltis.de/\",
\"TS3: ouraltis.de\",
\" \",
\" \",
\"by Recognite, Raven and PhilipJFry\",
\"special thanks to KalleK and Yoshi\",
};
motdInterval = 5;
maxPlayers = 103;
kickDuplicate = 1;
verifySignatures = 0;
equalModRequired = 0;
requiredSecureId = 2;
BattlEye = 0;
// VOTING
voteMissionPlayers = 0;
voteThreshold = 0.9;
// INGAME SETTINGS
disableVoN = 1;
vonCodecQuality = 10;
persistent = 1;
// SCRIPTING ISSUES
onUserConnected = \"\";
onUserDisconnected = \"\";
doubleIdDetected = \"\";
// SIGNATURE VERIFICATION
onUnsignedData = \"\";
onHackedData = \"kick (_this select 0)\";
onDifferentData = \"\";
// MISSIONS CYCLE
class Missions
{
".$missions_cycle."
};
";
//server.cfg IN SERVER_ORDNER schreiben
$datei3 = fopen('missions/opt4_Server.cfg','w');
fwrite($datei3, $server_cfg);
fclose($datei3);
//server.cfg über FTP zum GAMESERVER
$server = 'IPIPIPIPIPIP';
$ftp_user_name = 'UN';
$ftp_user_pass = 'PASS';
$dest = "Serverconfigs\\opt4_Server.cfg";
$source = "missions\\opt4_Server.cfg";
$connection = ftp_connect($server);
$login = ftp_login($connection, $ftp_user_name, $ftp_user_pass);
if (!$connection || !$login) { die('Connection attempt failed!'); }
ftp_pasv($connection, true);
$upload = ftp_put($connection, $dest, $source, FTP_BINARY);
if (!$upload) { echo 'FTP upload failed!'; }
ftp_close($connection);
//server.cfg auf WEBSERVER LÖSCHEN
unlink('missions/opt4_Server.cfg');
}
?>[/src]
Interessant hier sind eigentlich nur die erste 12 Zeilen, die ich von dir übernommen habe.
Außerdem sieht man in den Zeilen 661 das regelmäßige Updaten der DB mit dem Wert des Fortschritts. Das Klappt super.