Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Muss zuhause mal schauen ob ich noch irgendwo ein altes Kampfscript rumfliegen habe, dass kann ich dir dann zur Verfügung stellen, dass war auch sehr einfach aufgebaut.
Wenn es zu einfach ist dann wird es schnell erkannt und danach hat man irgendwelche Tools die es berechnen und danach ist es dann auch nicht mehr spannend, da man alles vorraussehen kann.
<?php
$sword = 0;
$bow = 0;
$draw = 0;
// Angreifer
// Schwertkämpfer erstellen
$schwert['name'] = "Helle Ponys"; // Name
$schwert['anz'] = 120; // Anzahl
$schwert['atk'] = 30; // Angriff
$schwert['def'] = 20; // Verteidigung
// Verteidiger
// Bogenschütze erstellen
$bogen['name'] = "Dunkle Ponys"; // Name
$bogen['anz'] = 80; // Anzahl
$bogen['atk'] = 25; // Angiff
$bogen['def'] = 35; // Verteidigung
//Übersicht ausgeben
echo "-------------------------------------------------------------------<br />";
echo "Angreifer:<br />";
echo "Name: ".$schwert['name']."<br />";
echo "Anzahl: ".$schwert['anz']."<br />";
echo "Liebe: ".$schwert['atk']."<br />";
echo "Zufriedenheit: ".$schwert['def']."<br />";
echo "-------------------------------------------------------------------<br />";
echo "Verteidiger:<br />";
echo "Name: ".$bogen['name']."<br />";
echo "Anzahl: ".$bogen['anz']."<br />";
echo "Liebe: ".$bogen['atk']."<br />";
echo "Zufriedenheit: ".$bogen['def']."<br />";
echo "-------------------------------------------------------------------<br /><br />";
//Simulationsschleife
for($i=1;$i<=100;$i++)
{
$atk_anz = $schwert['anz']; //Anzahl übernehmen
$def_anz = $bogen['anz']; //Anzahl übernehmen
$abort=false; //Kein Abbruch
$defwall = 8; //Stufe der Mauer
//Rundenschleife
for($k=1;$k<=10;$k++)
{
echo "Runde ".$k." ANFANG Anzahl der ".$schwert['name'].": ".$atk_anz." Anzahl der ".$bogen['name'].": ".$def_anz."<br />";
// Verteidigungsbonus bei Nacht berechnen
if(date("H") <= 23 AND date("H") >= 7){
$bonustime = 1;
} else {
$bonustime = 2;
}
// Angriffs Angriffspunkte berechnen
$atk_atk = $schwert['atk'] * $atk_anz;
//Per Zufall bis zu 10% addieren oder subtrahieren
if(rand(0,1))
{
$atk_atk += $atk_atk*(rand(1,10)/100);
}
else
{
$atk_atk -= $atk_atk*(rand(1,10)/100);
}
// Angriffs Verteidigungsspunkte berechnen
$atk_def = $schwert['def'] * $atk_anz;
//Per Zufall bis zu 10% addieren oder subtrahieren
if(rand(0,1))
{
$atk_def += $atk_def*(rand(1,10)/100);
}
else
{
$atk_def -= $atk_def*(rand(1,10)/100);
}
// Verteidigungs Angriffspunkte berechnen
$def_atk = $bogen['atk'] * $def_anz;
//Per Zufall bis zu 10% addieren oder subtrahieren
if(rand(0,1))
{
$def_atk += $def_atk*(rand(1,10)/100);
}
else
{
$def_atk -= $def_atk*(rand(1,10)/100);
}
// Verteidigungs Verteidigungspunkte berechnen
//Wenn Mauer gleich 0 dann nicht berücksichtigen, da sonst eh 0 rauskommen würde
if($defwall > 0)
{
$def_bonus = pow($defwall,1/2) * $bonustime;
}
else
{
$def_bonus = $bonustime;
}
$def_normal = $bogen['def'] * $def_anz;
$def_def = $def_normal * $def_bonus;
//Per Zufall bis zu 10% addieren oder subtrahieren
if(rand(0,1))
{
$def_def += $def_def*(rand(1,10)/100);
}
else
{
$def_def -= $def_def*(rand(1,10)/100);
}
//Verschiedene ausgaben (Da wir hier Ponys haben, kein Angriff und Verteidigung ;D)
echo "Liebe(".$schwert['name']."): ".$atk_atk."<br />";
echo "Zufriedenheit(".$schwert['name']."): ".$atk_def."<br />";
echo "Liebe(".$bogen['name']."): ".$def_atk."<br />";
echo "Zufriedenheit(".$bogen['name']."): ".$def_def."<br />";
//Angriff von der Verteidigung abziehen, sowohl für die Verteidigung als auch für den Angriff
$def_new = $def_def - $atk_atk;
$atk_new = $atk_def - $def_atk;
//Wenn beide unter 0 sind, ist es ein unentschieden
if($def_new<=0 AND $atk_new<=0) {
$draw++;
$abort=true;
echo "<b>Unentschieden</b><br />";
echo "Runde ".$k." ENDE Anzahl der ".$schwert['name'].": 0 Anzahl der ".$bogen['name'].": 0<br /><br />";
break;
//Nur die Verteidigung unter 0, haben die Angreifer gewonnen
} else if($def_new<=0) {
$sword++;
$abort=true;
echo "<b>".$schwert['name']." gewinnen</b><br />";
$atk_anz = ceil($atk_def/$atk_new);
echo "Runde ".$k." ENDE Anzahl der ".$schwert['name'].": ".$atk_anz." Anzahl der ".$bogen['name'].": 0<br /><br />";
break;
//Angreifer unter 0 haben die Verteidiger gewonnen
} else if($atk_new<=0) {
$bow++;
$abort=true;
echo "<b>".$bogen['name']." gewinnen</b><br />";
$def_anz = ceil($def_def/$def_new);
echo "Runde ".$k." ENDE Anzahl der ".$schwert['name'].": 0 Anzahl der ".$bogen['name'].": ".$def_anz."<br /><br />";
break;
//Ansonsten geht es weiter
} else {
//Neu berechnen, wieviel Angreifer und Verteidiger noch dabei sind, Werte werden aufgerundet
$def_anz = ceil($def_def/$def_new);
$atk_anz = ceil($atk_def/$atk_new);
}
echo "Runde ".$k." ENDE Anzahl der ".$schwert['name'].": ".$atk_anz." Anzahl der ".$bogen['name'].": ".$def_anz."<br /><br />";
}
//Wenn nach 10 Runden keine Entscheidung gefallen ist, gibt es ein Unentschieden
if($def_anz>0 AND $atk_anz>0 AND !$abort)
{
$draw++;
}
echo "<b>Simulation ".$i." Ende. Stallmauerstufe war: ".$defwall."</b><br /><br />";
}
echo "<br />".$schwert['name'].": ".$sword."% ".$bogen['name'].": ".$bow."% Unentschieden: ".$draw."%<br />";
?>
$attacker = array($soldaten,$panzer);
$defender = array($soldaten,$panzer);
//Rundenschleife
for($i=1;$i<=10;$i++) {
shuffle($attacker);
shuffle($defender);
$current_attacker = $attacker[1];
$current_defender = $defender[1];
if($current_attacker->getStaerke() <= $current_defender->getStaerke()) {
//Defender gewinnt
//Stärke berechnen und je nachdem von den einzelnen Attackern und Defendern Einheiten abziehen
} else {
//Gleiche wie if nur Attacker gewinnt
}
}
<?php
class Kampfscript {
private $db;
private $pns;
private $zielID;
private $awayID;
private $defendUnits;
private $defendUnitsCopy;
private $countDefend = 0;
private $attackUnits;
private $attackUnitsCopy;
private $countAttack = 0;
private $round = 0;
private $win = -1;
private $generatedID = -1;
private $generatedPass = -1;
private $hashedPass = -1;
public function __construct($db,$pns) {
$this->db = $db;
$this->pns = $pns;
$this->defendUnits = array();
$this->defendUnitsCopy = array();
$this->attackUnits = array();
$this->attackUnitsCopy = array();
$this->generateID();
$this->generatePass();
}
public function setAwayID($awayID) {
$this->awayID = $awayID;
}
public function start() {
if($this->awayID!=null) {
$query = "SELECT *
FROM ".$this->db->prefix()."away
WHERE `away_ID`='".$this->awayID."'
LIMIT 1";
$result = $this->db->query($query);
if($result->get_num_rows()>0) {
$row = $result->current();
$this->zielID = $row['away_zielLandID'];
$koords = explode(":",getKoords($this->zielID));
$xkoord = $koords[2];
$ykoord = $koords[3];
$exists = false;
$query = "SELECT `user_ID` FROM ".$this->db->prefix()."user";
$result_user = $this->db->query($query);
foreach($result_user as $row_user) {
$infos = getLands($row_user['user_ID']);
if($infos!=-1) {
foreach($infos as $info) {
if($info['landX']==$xkoord AND $info['landY']==$ykoord) {
$exists = true;
}
}
}
}
if($exists) {
$query = "SELECT *
FROM ".$this->db->prefix()."away_flotte
INNER JOIN ".$this->db->prefix()."unit
ON `af_unitID`=`unit_ID`
WHERE `af_awayID`='".$row['away_ID']."'";
$result = $this->db->query($query);
$attackBewegung = 0;
$counter=0;
foreach($result as $row) {
array_push($this->attackUnits,array("ID"=>$row['unit_ID'],
"index"=>$counter,
"name"=>$row['unit_name'],
"angriff"=>$row['unit_angriffswert'],
"verteidigung"=>$row['unit_verteidigungswert'],
"bewegung"=>$row['unit_bewegungstempo'],
"laderaum"=>$row['unit_laderaum'],
"menge"=>$row['af_menge'],
"attacked"=>0));
$this->countAttack++;
$counter++;
}
$this->attackUnitsCopy = $this->attackUnits;
unitready($this->zielID);
produce($this->zielID);
$query = "SELECT *
FROM ".$this->db->prefix()."unit_group
INNER JOIN ".$this->db->prefix()."unit
ON `ug_unitID`=`unit_ID`
WHERE `ug_landID`='".$this->zielID."'
AND `ug_menge`!='0'";
$result = $this->db->query($query);
$defendBewegung = 0;
$counter = 0;
foreach($result as $row) {
array_push($this->defendUnits,array("ID"=>$row['unit_ID'],
"index"=>$counter,
"name"=>$row['unit_name'],
"angriff"=>$row['unit_angriffswert'],
"verteidigung"=>$row['unit_verteidigungswert'],
"bewegung"=>$row['unit_bewegungstempo'],
"laderaum"=>$row['unit_laderaum'],
"menge"=>$row['ug_menge'],
"attacked"=>0));
$this->countDefend++;
$counter++;
}
$this->defendUnitsCopy = $this->defendUnits;
if($this->countAttack > 0) {
if($this->fight()==1) {
return array("generatedID"=>$this->generatedID,
"win"=>$this->win,
"password"=>$this->generatedPass,
"hashedPass"=>$this->hashedPass);
}
}
}
}
}
return false;
}
function fight() {
for($i=0;$i<count($this->defendUnits);$i++) {
$defend = $this->defendUnits[$i];
if($defend['menge']==0) {
continue;
}
$weiter = false;
$free = array();
foreach($this->attackUnitsCopy as $attack) {
if($attack['menge']>0 AND $attack['attacked']==0) {
$weiter=true;
array_push($free,$attack['index']);
}
}
if(!$weiter) {
break;
}
shuffle($free);
$attackID = array_shift($free);
$attack = $this->attackUnitsCopy[$attackID];
$old_defend_attack = $defend_attack = $defend['menge']*$defend['angriff'];
$old_attack_defend = $attack_defend = $attack['menge']*$attack['verteidigung'];
do {
$defend_attack = $this->moral($defend_attack);
$attack_defend = $this->moral($attack_defend);
} while($attack_defend==$defend_attack);
$query = "INSERT INTO ".$this->db->prefix()."kb
SET `kb_generatedID`='".$this->generatedID."',
`kb_attackLand`='".$this->awayID."',
`kb_defendLand`='".$this->zielID."',
`kb_round`='".($this->round+1)."',
`kb_text`='Der Verteidiger greift mit ".$defend['menge']." ".$defend['name']." mit einer Stärke von ".$defend_attack." den Angreifer an, dieser verteidigt sich mit ".$attack['menge']." ".$attack['name']." und einer Stärke von ".$attack_defend;
if($defend_attack>$attack_defend) {
$query .= " .Der Verteidiger gewinnt vernichtend.',";
$attack['menge'] = 0;
$attack['attacked'] = 1;
$this->countAttack--;
} else {
$attack['menge'] = ceil(($old_attack_defend - $old_defend_attack) / $attack['verteidigung']);
$query .= " .Der Angreifer kann einen Teil abblocken und hat danach noch ".$attack['menge']." ".$attack['name'].".',";
$attack['attacked'] = 1;
}
$query .= "`kb_date`='".aktDate()."',
`kb_pass`='".$this->hashedPass."'";
$this->db->query($query);
$this->attackUnitsCopy[$attackID]['menge'] = $attack['menge'];
$this->attackUnitsCopy[$attackID]['attacked'] = $attack['attacked'];
}
for($i=0;$i<count($this->attackUnits);$i++) {
$attack = $this->attackUnits[$i];
if($attack['menge']==0) {
continue;
}
$weiter = false;
$free = array();
foreach($this->defendUnitsCopy as $defend) {
if($defend['menge']>0 AND $defend['attacked']==0) {
$weiter=true;
array_push($free,$defend['index']);
}
}
if(!$weiter) {
break;
}
shuffle($free);
$defendID = array_shift($free);
$defend = $this->defendUnitsCopy[$defendID];
$old_attack_attack = $attack_attack = $attack['menge']*$attack['angriff'];
$old_defend_defend = $defend_defend = $defend['menge']*$defend['verteidigung'];
do
{
$defend_defend = $this->moral($defend_defend);
$attack_attack = $this->moral($attack_attack);
} while($attack_attack==$defend_defend);
$query = "INSERT INTO ".$this->db->prefix()."kb
SET `kb_generatedID`='".$this->generatedID."',
`kb_attackLand`='".$this->awayID."',
`kb_defendLand`='".$this->zielID."',
`kb_round`='".($this->round+1)."',
`kb_text`='Der Angreifer greift mit ".$attack['menge']." ".$attack['name']." mit einer Stärke von ".$attack_attack." den Verteidiger an, dieser verteidigt sich mit ".$defend['menge']." ".$defend['name']." und einer Stärke von ".$defend_defend;
if($attack_attack>$defend_defend) {
$query .= " .Der Angreifer gewinnt vernichtend.',";
$defend['menge'] = 0;
$defend['attacked'] = 1;
$this->countDefend--;
} else {
$defend['menge'] = ceil(($old_defend_defend - $old_attack_attack) / $defend['verteidigung']);
$query .= " .Der Verteidiger kann einen Teil abblocken und hat danach noch ".$defend['menge']." ".$defend['name'].".',";
$defend['attacked'] = 1;
}
$query .= "`kb_date`='".aktDate()."',
`kb_pass`='".$this->hashedPass."'";
$this->db->query($query);
$this->defendUnitsCopy[$defendID]['menge'] = $defend['menge'];
$this->defendUnitsCopy[$defendID]['attacked'] = $defend['attacked'];
}
for($i=0;$i<count($this->attackUnitsCopy);$i++) {
if($this->attackUnitsCopy[$i]['menge']>0) {
$this->attackUnitsCopy[$i]['attacked'] = 0;
}
}
for($i=0;$i<count($this->defendUnitsCopy);$i++) {
if($this->defendUnitsCopy[$i]['menge']>0) {
$this->defendUnitsCopy[$i]['attacked'] = 0;
}
}
$this->attackUnits = $this->attackUnitsCopy;
$this->defendUnits = $this->defendUnitsCopy;
$this->round++;
$end = false;
if($this->countAttack<=0 AND $this->countDefend<=0) {
$this->win = 0;
$end = true;
} else if($this->countAttack<=0) {
$this->win = 1;
$end = true;
} else if($this->countDefend<=0) {
$this->win = 2;
$end = true;
}
if($this->round<1000 AND !$end) {
$this->fight();
}
if($this->end()) {
return 1;
}
return false;
}
function end() {
foreach($this->defendUnits as $defend) {
$query = "UPDATE ".$this->db->prefix()."unit_group SET `ug_menge`='".$defend['menge']."' WHERE `ug_unitID`='".$defend['ID']."' AND `ug_landID`='".$this->zielID."'";
$this->db->query($query);
}
foreach($this->attackUnits as $attack) {
$query = "UPDATE ".$this->db->prefix()."away_flotte SET `af_menge`='".$attack['menge']."' WHERE `af_unitID`='".$attack['ID']."' AND `af_awayID`='".$this->awayID."'";
$this->db->query($query);
}
return true;
}
function moral($input) {
$random = rand(1,100);
switch($random) {
case $random<80:
if(rand(0,1)) {
$input += $input * 1/100;
} else {
$input -= $input * 1/100;
}
break;
case $random<90:
if(rand(0,1)) {
$input += $input * 3/100;
} else {
$input -= $input * 3/100;
}
break;
case $random<95:
if(rand(0,1)) {
$input += $input * 5/100;
} else {
$input -= $input * 5/100;
}
break;
case $random<98:
if(rand(0,1)) {
$input += $input * 7/100;
} else {
$input -= $input * 7/100;
}
break;
case $random<99:
if(rand(0,1)) {
$input += $input * 9/100;
} else {
$input -= $input * 9/100;
}
break;
case $random<=100:
if(rand(0,1)) {
$input += $input * 11/100;
} else {
$input -= $input * 11/100;
}
break;
}
return $input;
}
function generateID() {
do {
$randomID = rand(10000000000,99999999999);
$query = "SELECT `kb_generatedID` FROM ".$this->db->prefix()."kb WHERE `kb_generatedID`='".$randomID."'";
$result = $this->db->query($query);
} while($result->get_num_rows()!=0);
$this->generatedID = $randomID;
}
function generatePass() {
do {
$randomID = rand(100000,999999);
$query = "SELECT `kb_pass` FROM ".$this->db->prefix()."kb WHERE `kb_pass`='".hash('sha256',$randomID)."'";
$result = $this->db->query($query);
} while($result->get_num_rows()!=0);
$this->generatedPass = $randomID;
$this->hashedPass = hash('sha256',$randomID);
}
}
?>