示例#1
0
function xenoberegen()
{
    global $playerinfo, $xen_unemployment, $xenobeisdead, $db;
    // Xenobe Unempoyment Check
    $playerinfo['credits'] = $playerinfo['credits'] + $xen_unemployment;
    $maxenergy = NUM_ENERGY($playerinfo['power']);
    // Regenerate energy
    if ($playerinfo['ship_energy'] <= $maxenergy - 50) {
        $playerinfo['ship_energy'] = $playerinfo['ship_energy'] + round(($maxenergy - $playerinfo['ship_energy']) / 2);
        // Regen half of remaining energy
        $gene = "regenerated Energy to {$playerinfo['ship_energy']} units,";
    }
    $maxarmor = NUM_ARMOR($playerinfo['armor']);
    // Regenerate armor
    if ($playerinfo['armor_pts'] <= $maxarmor - 50) {
        $playerinfo['armor_pts'] = $playerinfo['armor_pts'] + round(($maxarmor - $playerinfo['armor_pts']) / 2);
        // Regen half of remaining armor
        $gena = "regenerated Armor to {$playerinfo['armor_pts']} points,";
    }
    // Buy fighters & torpedos at 6 credits per fighter
    $available_fighters = NUM_FIGHTERS($playerinfo['computer']) - $playerinfo['ship_fighters'];
    if ($playerinfo['credits'] > 5 && $available_fighters > 0) {
        if (round($playerinfo['credits'] / 6) > $available_fighters) {
            $purchase = $available_fighters * 6;
            $playerinfo['credits'] = $playerinfo['credits'] - $purchase;
            $playerinfo['ship_fighters'] = $playerinfo['ship_fighters'] + $available_fighters;
            $genf = "purchased {$available_fighters} fighters for {$purchase} credits,";
        }
        if (round($playerinfo['credits'] / 6) <= $available_fighters) {
            $purchase = round($playerinfo['credits'] / 6);
            $playerinfo['ship_fighters'] = $playerinfo['ship_fighters'] + $purchase;
            $genf = "purchased {$purchase} fighters for {$playerinfo['credits']} credits,";
            $playerinfo['credits'] = 0;
        }
    }
    // Xenobe pay 3 credits per torpedo
    $available_torpedoes = NUM_TORPEDOES($playerinfo['torp_launchers']) - $playerinfo['torps'];
    if ($playerinfo['credits'] > 2 && $available_torpedoes > 0) {
        if (round($playerinfo['credits'] / 3) > $available_torpedoes) {
            $purchase = $available_torpedoes * 3;
            $playerinfo['credits'] = $playerinfo['credits'] - $purchase;
            $playerinfo['torps'] = $playerinfo['torps'] + $available_torpedoes;
            $gent = "purchased {$available_torpedoes} torpedoes for {$purchase} credits,";
        }
        if (round($playerinfo['credits'] / 3) <= $available_torpedoes) {
            $purchase = round($playerinfo['credits'] / 3);
            $playerinfo['torps'] = $playerinfo['torps'] + $purchase;
            $gent = "purchased {$purchase} torpedoes for {$playerinfo['credits']} credits,";
            $playerinfo['credits'] = 0;
        }
    }
    // Update Xenobe record
    $resg = $db->Execute("UPDATE {$db->prefix}ships SET ship_energy=?, armor_pts=?, ship_fighters=?, torps=?, credits=? WHERE ship_id=?", array($playerinfo['ship_energy'], $playerinfo['armor_pts'], $playerinfo['ship_fighters'], $playerinfo['torps'], $playerinfo['credits'], $playerinfo['ship_id']));
    db_op_result($db, $resg, __LINE__, __FILE__);
    if (!$gene == '' || !$gena == '' || !$genf == '' || !$gent == '') {
        playerlog($db, $playerinfo[ship_id], LOG_RAW, "Xenobe {$gene} {$gena} {$genf} {$gent} and has been updated.");
    }
}
function message_defence_owner($db, $sector, $message)
{
    $result3 = $db->Execute("SELECT * FROM {$db->prefix}sector_defence WHERE sector_id=?", array($sector));
    db_op_result($db, $result3, __LINE__, __FILE__);
    if ($result3 instanceof ADORecordSet) {
        while (!$result3->EOF) {
            playerlog($db, $result3->fields['ship_id'], LOG_RAW, $message);
            $result3->MoveNext();
        }
    }
}
示例#3
0
function distribute_toll($db, $sector, $toll, $total_fighters)
{
    $result3 = $db->Execute("SELECT * FROM {$db->prefix}sector_defence WHERE sector_id=? AND defence_type ='F'", array($sector));
    db_op_result($db, $result3, __LINE__, __FILE__);
    // Put the defence information into the array "defenceinfo"
    if ($result3 > 0) {
        while (!$result3->EOF) {
            $row = $result3->fields;
            $toll_amount = ROUND($row['quantity'] / $total_fighters * $toll);
            $resa = $db->Execute("UPDATE {$db->prefix}ships SET credits=credits + ? WHERE ship_id = ?", array($toll_amount, $row['ship_id']));
            db_op_result($db, $resa, __LINE__, __FILE__);
            playerlog($db, $row['ship_id'], LOG_TOLL_RECV, "{$toll_amount}|{$sector}");
            $result3->MoveNext();
        }
    }
}
示例#4
0
function cancel_bounty($db, $bounty_on)
{
    $res = $db->Execute("SELECT * FROM {$db->prefix}bounty,{$db->prefix}ships WHERE bounty_on = ? AND bounty_on = ship_id", array($bounty_on));
    db_op_result($db, $res, __LINE__, __FILE__);
    if ($res) {
        while (!$res->EOF) {
            $bountydetails = $res->fields;
            if ($bountydetails['placed_by'] != 0) {
                $update = $db->Execute("UPDATE {$db->prefix}ships SET credits = credits + ? WHERE ship_id = ?", array($bountydetails['amount'], $bountydetails['placed_by']));
                db_op_result($db, $update, __LINE__, __FILE__);
                playerlog($db, $bountydetails['placed_by'], LOG_BOUNTY_CANCELLED, "{$bountydetails['amount']}|{$bountydetails['character_name']}");
            }
            $delete = $db->Execute("DELETE FROM {$db->prefix}bounty WHERE bounty_id = ?", array($bountydetails['bounty_id']));
            db_op_result($db, $delete, __LINE__, __FILE__);
            $res->MoveNext();
        }
    }
}
function defence_vs_defence($db, $ship_id)
{
    global $l;
    $result1 = $db->Execute("SELECT * FROM {$db->prefix}sector_defence WHERE ship_id = ?;", array($ship_id));
    db_op_result($db, $result1, __LINE__, __FILE__);
    if ($result1 instanceof ADORecordSet) {
        while (!$result1->EOF) {
            $row = $result1->fields;
            $deftype = $row['defence_type'] == 'F' ? 'Fighters' : 'Mines';
            $qty = $row['quantity'];
            $result2 = $db->Execute("SELECT * FROM {$db->prefix}sector_defence WHERE sector_id = ? AND ship_id <> ? ORDER BY quantity DESC", array($row['sector_id'], $ship_id));
            db_op_result($db, $result2, __LINE__, __FILE__);
            if ($result2 instanceof ADORecordSet) {
                while (!$result2->EOF && $qty > 0) {
                    $cur = $result2->fields;
                    $targetdeftype = $cur['defence_type'] == 'F' ? $l->get('l_fighters') : $l->get('l_mines');
                    if ($qty > $cur['quantity']) {
                        $resa = $db->Execute("DELETE FROM {$db->prefix}sector_defence WHERE defence_id = ?", array($cur['defence_id']));
                        db_op_result($db, $resa, __LINE__, __FILE__);
                        $qty -= $cur['quantity'];
                        $resb = $db->Execute("UPDATE {$db->prefix}sector_defence SET quantity = ? WHERE defence_id = ?", array($qty, $row['defence_id']));
                        db_op_result($db, $resb, __LINE__, __FILE__);
                        playerlog($db, $cur['ship_id'], LOG_DEFS_DESTROYED, $cur['quantity'] . "|" . $targetdeftype . "|" . $row['sector_id']);
                        playerlog($db, $row['ship_id'], LOG_DEFS_DESTROYED, $cur['quantity'] . "|" . $deftype . "|" . $row['sector_id']);
                    } else {
                        $resc = $db->Execute("DELETE FROM {$db->prefix}sector_defence WHERE defence_id = ?", array($row['defence_id']));
                        db_op_result($db, $resc, __LINE__, __FILE__);
                        $resd = $db->Execute("UPDATE {$db->prefix}sector_defence SET quantity=quantity - ? WHERE defence_id = ?", array($qty, $cur['defence_id']));
                        db_op_result($db, $resd, __LINE__, __FILE__);
                        playerlog($db, $cur['ship_id'], LOG_DEFS_DESTROYED, $qty . "|" . $targetdeftype . "|" . $row['sector_id']);
                        playerlog($db, $row['ship_id'], LOG_DEFS_DESTROYED, $qty . "|" . $deftype . "|" . $row['sector_id']);
                        $qty = 0;
                    }
                    $result2->MoveNext();
                }
            }
            $result1->MoveNext();
        }
        $rese = $db->Execute("DELETE FROM {$db->prefix}sector_defence WHERE quantity <= 0");
        db_op_result($db, $rese, __LINE__, __FILE__);
    }
}
示例#6
0
function kick_off_planet($db, $ship_id, $whichteam)
{
    $result1 = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE owner = ?", array($ship_id));
    db_op_result($db, $result1, __LINE__, __FILE__);
    if ($result1 instanceof ADORecordSet) {
        while (!$result1->EOF) {
            $row = $result1->fields;
            $result2 = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE on_planet = 'Y' AND planet_id = ? AND ship_id <> ?", array($row['planet_id'], $ship_id));
            db_op_result($db, $result2, __LINE__, __FILE__);
            if ($result2 instanceof ADORecordSet) {
                while (!$result2->EOF) {
                    $cur = $result2->fields;
                    $resa = $db->Execute("UPDATE {$db->prefix}ships SET on_planet = 'N',planet_id = '0' WHERE ship_id=?", array($cur['ship_id']));
                    db_op_result($db, $resa, __LINE__, __FILE__);
                    playerlog($db, $cur['ship_id'], LOG_PLANET_EJECT, $cur['sector'] . "|" . $row['character_name']);
                    $result2->MoveNext();
                }
            }
            $result1->MoveNext();
        }
    }
}
示例#7
0
						$logentry = $logentry."The booming voice speaks again: 'Excellent! We see that you have enough credits to repay the loan. Now why did you make us come all this way?'\n";
						$newsentry = $newsentry.". Thankfully, $playerinfo[character_name] was able to pay them off - phew!";
					}
				}
				//$newsentry = $newsentry.".";				
			} else {
				$logentry = $logentry." The huge ship then vanishes!";
			}
		} else {
			$logentry = "The IGB automatically paid off your loan with your IGB balance.";
		}
		//echo "<hr>LOG ENTRY = $logentry<br>News Entry = $newsentry<br><hr>";
		if ($logentry != "") {
			//echo "Entering log for $playerinfo[player_id] name $playerinfo[character_name]<br>";
			$logentry = addslashes($logentry);
			playerlog($playerinfo[player_id],LOG_RAW,$logentry);
		}
		if ($newsentry != "") {
			$headline = addslashes("IGB takes action on deadbeat ".$playerinfo[character_name]);
			$player_id = $playerinfo[player_id];
			$newstext=addslashes($newsentry);
			$news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'IGB')");
		}
		//echo "Loan is now ".NUMBER($account[loan])."<br>";					
		$account[balance] = -$account[loan]; // Put back the difference
		$account[loan] = 0;
		if ($account[balance]<0) {
			$account[balance] = 0;
		}
		//echo "Balance is now ".NUMBER($account[balance])."<br>";
		//echo "Setting bank account. Balance =".NUMBER($account[balance])."  Loan=".NUMBER($account[loan])."....";
示例#8
0
<?


include("config.php");
include("languages/$lang");
$title = "Logout";

setcookie("username","",0);
setcookie("password","",0);

include("header.php");

connectdb();

$result = $db->Execute("SELECT * FROM $dbtables[players] WHERE email='$username'");
$playerinfo = $result->fields;

$current_score = gen_score($playerinfo[player_id]);
playerlog($playerinfo[player_id], LOG_LOGOUT, $ip);

bigtitle();
echo "$l_logout_score ".NUMBER($current_score).".<BR>";
$l_logout_text=str_replace("[name]",$username,$l_logout_text);
echo $l_logout_text;

include("footer.php");

?>
			  case "sectorwmd":
				 {
				 	if ($shipinfo[dev_sectorwmd] == 'Y' && $shipinfo[dev_genesis] > 0) {
						$db->Execute("UPDATE $dbtables[players] SET cleared_defences = ' ' WHERE player_id = $playerinfo[player_id]");
						$ok = 1;
						$db->Execute("UPDATE $dbtables[ships] SET dev_genesis=dev_genesis-1 WHERE player_id = $playerinfo[player_id] AND ship_id = $playerinfo[currentship]");
						// Destroy fighters
						$fighterslost = $total_sector_fighters;
						$l_sf_sendlog = str_replace("[player]", $playerinfo[character_name], $l_sf_sendlog);
						$l_sf_sendlog = str_replace("[lost]", NUMBER($fighterslost), $l_sf_sendlog);
						$l_sf_sendlog = str_replace("[sector]", $sector, $l_sf_sendlog);
						echo "<h1>Sector WMD Attack</h1>";
						echo "You obliterate ".NUMBER($fighterslost)." sector defense fighters!<br>";
						destroy_fighters($sector,$fighterslost);
						message_defence_owner($sector,$l_sf_sendlog);
						playerlog($playerinfo[player_id], LOG_DEFS_DESTROYED_F, NUMBER($fighterslost)."|$sector");
					} else {
						$ok = 0;
					}
				}
				break;
              default:
                 $interface_string = $calledfrom . '?sector='.$sector.'&destination='.$destination.'&engage='.$engage;
                 $db->Execute("UPDATE $dbtables[players] SET cleared_defences = '$interface_string' WHERE player_id = $playerinfo[player_id]");
                 $fighterstoll = $total_sector_fighters * $fighter_price * 0.6;
                 bigtitle();
				 $ok=0;
				 echo "<!-- DEBUG2: OK=$ok-->";
                 echo "<FORM ACTION=$calledfrom METHOD=POST>";
                 $l_chf_therearetotalfightersindest = str_replace("[chf_total_sector_fighters]", NUMBER($total_sector_fighters), $l_chf_therearetotalfightersindest);
                 echo "$l_chf_therearetotalfightersindest<br>";
示例#10
0
               echo "$l_chm_youlostallyourshields<BR>";
               $mines_left = $mines_left - $playershields;
               if($shipinfo[armour_pts] >= $mines_left)
               {
                  $l_chm_yourarmorhitforminesdmg = str_replace("[chm_mines_left]", $mines_left, $l_chm_yourarmorhitforminesdmg);
                  echo "$l_chm_yourarmorhitforminesdmg<BR>";
                  $result2 = $db->Execute("UPDATE $dbtables[ships] set armour_pts=armour_pts-$mines_left,ship_energy=0,dev_minedeflector=0 where player_id=$playerinfo[player_id] AND ship_id=$playerinfo[currentship]");
                  if($shipinfo[armour_pts] == $mines_left)
                     echo "$l_chm_yourhullisbreached<BR>";
               }
               else
               {
                  // BOOM
                  $pod = $shipinfo[dev_escapepod];

                  playerlog($playerinfo[player_id], LOG_SHIP_DESTROYED_MINES, "$sector|$pod");
                  $l_chm_hewasdestroyedbyyourmines = str_replace("[chm_playerinfo_character_name]", $playerinfo[character_name], $l_chm_hewasdestroyedbyyourmines);
                  $l_chm_hewasdestroyedbyyourmines = str_replace("[chm_sector]", $sector, $l_chm_hewasdestroyedbyyourmines);
                  
                  $killer_id = message_defence_owner($sector,"$l_chm_hewasdestroyedbyyourmines");

                  echo "$l_chm_yourshiphasbeendestroyed<BR><BR>";

                  // Live...

                  if($shipinfo[dev_escapepod] == "Y")

                  {
                     $rating=round($playerinfo[rating]/2);
                     echo "$l_chm_luckescapepod<BR><BR>";
                     $db->Execute("UPDATE $dbtables[players] SET on_planet='N',rating='$rating',cleared_defences=' ' WHERE player_id=$playerinfo[player_id] ");
示例#11
0
                echo "<td>{$sc_dev_emerwarp}</td></tr>";
            } else {
                echo "<td>???</td></tr>";
            }
            echo "<tr><td>{$l_escape_pod}:</td>";
            $roll = mt_rand(1, 100);
            if ($roll < $success) {
                echo "<td>{$targetinfo['dev_escapepod']}</td></tr>";
            } else {
                echo "<td>???</td></tr>";
            }
            echo "<tr><td>{$l_fuel_scoop}:</td>";
            $roll = mt_rand(1, 100);
            if ($roll < $success) {
                echo "<td>{$targetinfo['dev_fuelscoop']}</td></tr>";
            } else {
                echo "<td>???</td></tr>";
            }
            echo "</table><br>";
            playerlog($db, $targetinfo['ship_id'], LOG_SHIP_SCAN, "{$playerinfo['character_name']}");
        }
        $resx = $db->Execute("UPDATE {$db->prefix}ships SET turns=turns-1,turns_used=turns_used+1 WHERE ship_id=?", array($playerinfo['ship_id']));
        db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
    }
}
echo "<br><br>";
TEXT_GOTOMAIN();
?>
</div></div>
<?php 
include "footer.php";
示例#12
0
if (isset($_GET['sure'])) {
    $sure = $_GET['sure'];
}
if (!isset($sure)) {
    echo "<font color=red><strong>{$l_die_rusure}</strong></font><br><br>";
    echo "Please Note: You will loose all your Planets if you Self-Destruct!.<br>\n";
    echo "<a href='main.php'>{$l_die_nonono}</a> {$l_die_what}<br><br>";
    echo "<a href=self_destruct.php?sure=1>{$l_yes}!</a> {$l_die_goodbye}<br><br>";
} elseif ($sure == 1) {
    echo "<font color=red><strong>{$l_die_check}</strong></font><br><br>";
    echo "Please Note: You will loose all your Planets if you Self-Destruct!.<br>\n";
    echo "<a href='main.php'>{$l_die_nonono}</a> {$l_die_what}<br><br>";
    echo "<a href=self_destruct.php?sure=2>{$l_yes}!</a> {$l_die_goodbye}<br><br>";
} elseif ($sure == 2) {
    echo "{$l_die_count}<br>";
    echo "{$l_die_vapor}<br><br>";
    $l_die_please = str_replace("[logout]", "<a href='logout.php'>" . $l_logout . "</a>", $l_die_please);
    echo $l_die_please . "<br>";
    db_kill_player($playerinfo['ship_id'], true);
    cancel_bounty($db, $playerinfo['ship_id']);
    adminlog($db, LOG_ADMIN_HARAKIRI, "{$playerinfo['character_name']}|{$ip}");
    playerlog($db, $playerinfo['ship_id'], LOG_HARAKIRI, "{$ip}");
    echo "Due to nobody looking after your Planets, all your Planets have reduced into dust and ruble. Your Planets are no more.<br>\n";
} else {
    echo $l_die_exploit . "<br><br>";
}
TEXT_GOTOMAIN();
?>
</div></div>
<?php 
include "footer.php";
示例#13
0
$res = $db->Execute("SELECT $dbtables[players].player_id,character_name,hull,$dbtables[ships].sector,$dbtables[universe].zone_id,max_hull,tow,ship_id FROM $dbtables[players],$dbtables[universe],$dbtables[zones],$dbtables[ships] WHERE $dbtables[ships].sector=sector_id AND $dbtables[universe].zone_id=$dbtables[zones].zone_id AND max_hull<>0 AND (($dbtables[ships].hull + $dbtables[ships].engines + $dbtables[ships].power + $dbtables[ships].computer + $dbtables[ships].sensors + $dbtables[ships].beams + $dbtables[ships].torp_launchers + $dbtables[ships].shields + $dbtables[ships].armour + $dbtables[ships].cloak)/10) >max_hull AND ship_destroyed='N' AND ship_id=currentship");
$num_to_tow = $res->RecordCount();
echo "<BR>$num_to_tow players to tow:<BR>";
      while(!$res->EOF)
      {
        $row = $res->fields;
		if ($row[player_id] > 1) {
			echo "...towing $row[character_name] out of $row[sector] ...";
			$newsector = rand(0, $sector_max);
			echo " to sector $newsector.<BR>";
			echo "Moving player<br>";
			//echo "UPDATE $dbtables[players] SET sector=$newsector,cleared_defences=' ' where player_id=$row[player_id]<br>";
			$query = $db->Execute("UPDATE $dbtables[players] SET sector=$newsector,cleared_defences=' ' where player_id=$row[player_id]");
			echo "Moving ship<br>";
			//echo "UPDATE $dbtables[ships] SET sector=$newsector where ship_id=$row[ship_id]<br>";
			$query = $db->Execute("UPDATE $dbtables[ships] SET sector=$newsector where ship_id=$row[ship_id]");
			if ($row[tow] > 0) {
				echo "Moving towed ship<br>";
				//echo "UPDATE $dbtables[ships] SET sector=$newsector where ship_id=$row[tow]";
				$query = $db->Execute("UPDATE $dbtables[ships] SET sector=$newsector where ship_id=$row[tow]");
			}
			playerlog($row[player_id], LOG_TOW, "$row[sector]|$newsector|$row[max_hull]");
			log_move($row[player_id],$newsector);
		}
        $res->MoveNext();
      }
  echo "<BR>";
  
  $multiplier = 0; //no use to run this again
?>
示例#14
0
   			echo "<INPUT TYPE=SUBMIT VALUE=$l_submit><INPUT TYPE=RESET VALUE=$l_reset>";
   			echo "</FORM>";
   			echo "<BR><BR>";
   		} else {
   		        $teamname = htmlspecialchars($teamname);
                        $teamdesc = htmlspecialchars($teamdesc);
   	                $res = $db->Execute("UPDATE $dbtables[teams] SET team_name='$teamname', description='$teamdesc' WHERE id=$whichteam") or die("<font color=red>error: " . $db->ErrorMSG() . "</font>");
   			echo "$l_team_alliance <B>$teamname</B> $l_team_hasbeenr<BR><BR>";
   			/*
   			   Adding a log entry to all members of the renamed alliance
   			*/
   		   $result_team_name = $db->Execute("SELECT player_id FROM $dbtables[players] WHERE team=$whichteam AND player_id<>$playerinfo[player_id]") or die("<font color=red>error: " . $db->ErrorMsg() . "</font>");
   			playerlog($playerinfo[player_id], LOG_TEAM_RENAME, decodeHTML($teamname));
   			while(!$result_team_name->EOF) {
          $teamname_array = $result_team_name->fields;
   			   playerlog($teamname_array[player_id], LOG_TEAM_M_RENAME, decodeHTML($teamname));
                           $result_team_name->MoveNext();
            }
     		}
   		LINK_BACK();
   		break;
	   }
	   else
	   {
   		echo $l_team_error;
   		LINK_BACK();
   		break;
	   }
	case 10: // Retract Invite
    if ($playerinfo[team] == $team[id])
    {
示例#15
0
elseif($sure == 1)
{
  echo "<FONT COLOR=RED><B>$l_die_check</B></FONT><BR><BR>";
  echo "<A HREF=$interface>$l_die_nonono</A> $l_die_what<BR><BR>";
  echo "<H1>Self-destructing has a 1500 turn penalty!</H1>";
  echo "<A HREF=self-destruct.php?sure=2>$l_yes!</A> $l_die_goodbye AND LOOSE 1500 TURNS!!!!!<BR><BR>";
}
elseif($sure == 2)
{
  echo "$l_die_count<BR>";
  echo "$l_die_vapor<BR><BR>";
  echo "$l_die_please.<BR>";
  db_kill_player($playerinfo[player_id],$playerinfo[currentship],-2);
  cancel_bounty($playerinfo[player_id]);
  playerlog(1, LOG_ADMIN_HARAKIRI, "$playerinfo[character_name]|$ip");
  playerlog($playerinfo[player_id], LOG_HARAKIRI, "$ip");
}
else
{
  echo "$l_die_exploit<BR><BR>";
}

if($sure != 2)
{
  TEXT_GOTOMAIN();
}

include("footer.php");

?>
示例#16
0
function xenobehunter()
{
    // Setup general Variables
    global $playerinfo, $targetlink, $xenobeisdead, $db;
    $rescount = $db->Execute("SELECT COUNT(*) AS num_players FROM {$db->prefix}ships WHERE ship_destroyed='N' AND email NOT LIKE '%@xenobe' AND ship_id > 1");
    db_op_result($db, $rescount, __LINE__, __FILE__);
    $rowcount = $rescount->fields;
    $topnum = min(10, $rowcount['num_players']);
    // If we have killed all the players in the game then stop here.
    if ($topnum < 1) {
        return;
    }
    $res = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE ship_destroyed='N' AND email NOT LIKE '%@xenobe' AND ship_id > 1 ORDER BY score DESC LIMIT ?", array($topnum));
    db_op_result($db, $res, __LINE__, __FILE__);
    // Choose a target from the top player list
    $i = 1;
    $targetnum = mt_rand(1, $topnum);
    while (!$res->EOF) {
        if ($i == $targetnum) {
            $targetinfo = $res->fields;
        }
        $i++;
        $res->MoveNext();
    }
    // Make sure we have a target
    if (!$targetinfo) {
        playerlog($db, $playerinfo[ship_id], LOG_RAW, "Hunt Failed: No Target ");
        return;
    }
    // Jump to target sector
    $sectres = $db->Execute("SELECT sector_id, zone_id FROM {$db->prefix}universe WHERE sector_id=?", array($targetinfo['sector']));
    db_op_result($db, $sectres, __LINE__, __FILE__);
    $sectrow = $sectres->fields;
    $zoneres = $db->Execute("SELECT zone_id,allow_attack FROM {$db->prefix}zones WHERE zone_id=?", array($sectrow['zone_id']));
    db_op_result($db, $zoneres, __LINE__, __FILE__);
    $zonerow = $zoneres->fields;
    // Only travel there if we can attack in the target sector
    if ($zonerow['allow_attack'] == "Y") {
        $stamp = date("Y-m-d H-i-s");
        $move_result = $db->Execute("UPDATE {$db->prefix}ships SET last_login=?, turns_used=turns_used+1, sector=? WHERE ship_id=?", array($stamp, $targetinfo['sector'], $playerinfo['ship_id']));
        db_op_result($db, $move_result, __LINE__, __FILE__);
        playerlog($db, $playerinfo[ship_id], LOG_RAW, "Xenobe used a wormhole to warp to sector {$targetinfo['sector']} where he is hunting player {$targetinfo['character_name']}.");
        if (!$move_result) {
            $error = $db->ErrorMsg();
            playerlog($db, $playerinfo[ship_id], LOG_RAW, "Move failed with error: {$error} ");
            return;
        }
        // Check for sector defences
        $resultf = $db->Execute("SELECT * FROM {$db->prefix}sector_defence WHERE sector_id=? AND defence_type ='F' ORDER BY quantity DESC", array($targetinfo['sector']));
        db_op_result($db, $resultf, __LINE__, __FILE__);
        $i = 0;
        $total_sector_fighters = 0;
        if ($resultf > 0) {
            while (!$resultf->EOF) {
                $defences[$i] = $resultf->fields;
                $total_sector_fighters += $defences[$i]['quantity'];
                $i++;
                $resultf->MoveNext();
            }
        }
        $resultm = $db->Execute("SELECT * FROM {$db->prefix}sector_defence WHERE sector_id=? AND defence_type ='M'", array($targetinfo['sector']));
        db_op_result($db, $resultm, __LINE__, __FILE__);
        $i = 0;
        $total_sector_mines = 0;
        if ($resultm > 0) {
            while (!$resultm->EOF) {
                $defences[$i] = $resultm->fields;
                $total_sector_mines += $defences[$i]['quantity'];
                $i++;
                $resultm->MoveNext();
            }
        }
        if ($total_sector_fighters > 0 || $total_sector_mines > 0 || $total_sector_fighters > 0 && $total_sector_mines > 0) {
            // Attack sector defences
            $targetlink = $targetinfo['sector'];
            xenobetosecdef();
        }
        if ($xenobeisdead > 0) {
            return;
            // Sector defenses killed the Xenobe
        }
        playerlog($db, $playerinfo[ship_id], LOG_RAW, "Xenobe launching an attack on {$targetinfo['character_name']}.");
        // Attack the target
        if ($targetinfo['planet_id'] > 0) {
            xenobetoplanet($targetinfo['planet_id']);
            // Yes, so move to that planet
        } else {
            xenobetoship($targetinfo['ship_id']);
            // Not on a planet, so move to the ship
        }
    } else {
        playerlog($db, $playerinfo[ship_id], LOG_RAW, "Xenobe hunt failed, target {$targetinfo['character_name']} was in a no attack zone (sector {$targetinfo['sector']}).");
    }
}
示例#17
0
              // Furangee's only compare number of fighters when determining if they have an attack advantage
              if ($playerinfo[ship_fighters] > $rowo3[ship_fighters] && $rowo3[planet_id] == 0)
              {
                $furcount3a++;
                playerlog($playerinfo[player_id], LOG_FURANGEE_ATTACK, "$rowo3[character_name]");
                furangeetoship($rowo3[player_id]);
                if ($furangeeisdead>0) {
                  $res->MoveNext();
                  continue;
                }
              }
            }
            elseif ($playerinfo[aggression] == 2)        // ****** O = 3 & AGRESSION = 2 ATTACK ALLWAYS ******
            {
              $furcount3a++;
              playerlog($playerinfo[player_id], LOG_FURANGEE_ATTACK, "$rowo3[character_name]");
              if (!$rowo3[planet_id] == 0) {              // *** IS ON PLANET ***
                furangeetoplanet($rowo3[planet_id]);
              } else {
                furangeetoship($rowo3[player_id]);
              }
              if ($furangeeisdead>0) {
                $res->MoveNext();
                continue;
              }
            }
          }
        }
	  }
      // *********************************
      // *** ORDERS = 4 SPECIAL TRADER ***
示例#18
0
	if ($result>0)
	{
  		while (!$result->EOF && $flag==0)
  		{
    	$row = $result->fields;
    	if (strtolower($row[email])==strtolower($username)) { echo "$l_new_inuse  $l_new_4gotpw1 <a href=mail.php?mail=$username>$l_clickme</a> $l_new_4gotpw2<BR>"; $flag=1;}
    	if (strtolower($row[character_name])==strtolower($character)) { echo "$l_new_inusechar<BR>"; $flag=1;}
    	if (strtolower($row[ship_name])==strtolower($shipname)) { echo "$l_new_inuseship<BR>"; $flag=1;}
		if ($row[ip_address]==$ip) {
			// Check to see if this person is playing on a device
			$browser="hiptop";
			if ($browser != "hiptop" && $browser !="treo") {
				$flag=1;
				echo "In order to prevent multiple account play we restrict account creation under certain circumstances.<br>This is one of them.<br>If you are not trying to create multiple accounts then we are sorry, but game slots for your network are full. Please try another time.<br>";
				echo "<b>Suspected multiple account creation attempt logged. Forum posting pending...</b><br>";
				playerlog(1,LOG_RAW,"Suspected multiple account creation attempt logged from $ip. Offender is $row[character_name] email $row[email]. They tried to register $character with email address $username.");
			}
		}
    	$result->MoveNext();
  	}
}

if ($flag==0)
{
  /* insert code to add player to database */
  $makepass="";
  $syllables="er,in,tia,wol,fe,pre,vet,jo,nes,al,len,son,cha,ir,ler,bo,ok,tio,nar,sim,ple,bla,ten,toe,cho,co,lat,spe,ak,er,po,co,lor,pen,cil,li,ght,wh,at,the,he,ck,is,mam,bo,no,fi,ve,any,way,pol,iti,cs,ra,dio,sou,rce,sea,rch,pa,per,com,bo,sp,eak,st,fi,rst,gr,oup,boy,ea,gle,tr,ail,bi,ble,brb,pri,dee,kay,en,be,se";
  $syllable_array=explode(",", $syllables);
  srand((double)microtime()*1000000);
  for ($count=1;$count<=2;$count++) {
    if (rand()%10 == 1) {
示例#19
0
      echo "<tr><td>$l_ewd:</td>";
      $roll=rand(1,100);
      if ($roll<$success)
      {
        $sc_dev_emerwarp=round($targetinfo[dev_emerwarp] * $sc_error / 100);
        echo "<td>$sc_dev_emerwarp</td></tr>";
      }
      else {echo"<td>???</td></tr>";}
      echo "<tr><td>$l_escape_pod:</td>";
      $roll=rand(1,100);
      if ($roll<$success)
        {echo "<td>$targetinfo[dev_escapepod]</td></tr>";} else {echo"<td>???</td></tr>";}
      echo "<tr><td>$l_fuel_scoop:</td>";
      $roll=rand(1,100);
      if ($roll<$success)
        {echo "<td>$targetinfo[dev_fuelscoop]</td></tr>";} else {echo"<td>???</td></tr>";}
      echo "</table><BR>";
      playerlog($targetinfo[player_id], LOG_SHIP_SCAN, "$playerinfo[character_name]");
    }

    $db->Execute("UPDATE $dbtables[players] SET turns=turns-1,turns_used=turns_used+1 WHERE player_id=$playerinfo[player_id]");
  }
}


echo "<BR><BR>";
TEXT_GOTOMAIN();

include("footer.php");
?>
示例#20
0
    db_op_result($sessvars, __LINE__, __FILE__);
    $vars = $sessvars->fields;
    if ($playerinfo['password'] == $md5password & $playerinfo['admin'] > 1) {
        $_SESSION['clanid'] = $vars['clanid'];
        $_SESSION['chiefname'] = $vars['chiefname'];
        $_SESSION['current_unit'] = $vars['current_unit'];
        $_SESSION['tooltip'] = $vars['tooltip'];
        echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=main.php?id=" . $vars['current_unit'] . "\">";
        $stamp = date("Y-m-d H:i:s");
        $gmtime = array();
        $gmtime = get_game_time($gmtime);
        $month = $gmtime['month'];
        $year = $gmtime['year'];
        $day = $gmtime['day'];
        $data = "server closed Login of {$vars['chiefname']} at {$stamp}";
        playerlog($vars['current_unit'], $vars['clanid'], 'LOGIN', $month['count'], $year['count'], $data, $dbtables);
    } else {
        page_header("Login Pass On");
        $title = "Server Closed";
        bigtitle();
        echo "Please stand by. We're doing something just now. Shouldn't be a moment.<BR>";
        echo "If you want, you can hang out and chat <A HREF={$link_forums}>here</A>.<BR>";
        TEXT_GOTOLOGIN();
    }
} else {
    page_header("Login Pass On");
    $title = "Login Failed";
    bigtitle();
    echo "Username or Password incorrect. Click <a href=index.php>here</a> to try again.<br>Or click <a href=new.php>here</a> if you are a new chief <p><br>";
}
page_footer();
        $i++;
        $doomsday->MoveNext();
     }
     if($affliction == 1) // Space Plague
     {
        echo "The horsmen release the Space Plague!<BR>.";
        $db->Execute("UPDATE $dbtables[planets] SET colonists = ROUND(colonists-colonists*$space_plague_kills) WHERE planet_id = $targetinfo[planet_id]");
        $logpercent = ROUND($space_plague_kills * 100);
        playerlog($targetinfo[owner],LOG_SPACE_PLAGUE,"$targetinfo[name]|$targetinfo[sector_id]|$logpercent"); 
		$name = get_player_name($targetinfo[owner]);
        $headline="Travel Advisory";
		$news = addslashes("The Universe Health Organization warned visitors to refrain from visiting $targetinfo[name] due to an outbreak of Space Plague. Millions are reported dead. The plague was blamed on colonist overcrowding by $name. Shame!");
   		$db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$news','$targetinfo[owner]',NOW(), 'plague')");
     }
     else
     {
        echo "The horsemen release a Plasma Storm!<BR>.";
        $db->Execute("UPDATE $dbtables[planets] SET energy = 0 WHERE planet_id = $targetinfo[planet_id]");
        playerlog($targetinfo[owner],LOG_PLASMA_STORM,"$targetinfo[name]|$targetinfo[sector_id]");
		$name = get_player_name($targetinfo[owner]);
        $headline="Weather Report";
		$news = addslashes("A plasma storm struck $name's sector today. No casualties were reported.");
   		$db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$news','$targetinfo[owner]',NOW(), 'plasma')");
     } 
  }
  echo "<BR>";
  $temp_runtime= time() - $temp_time;
  echo "<p>The apocolypse took $temp_runtime seconds to execute.<p>";

?>
示例#22
0
         $teamdesc = trim(htmlspecialchars($teamdesc));
         if (validate_team($teamname, $teamdesc, $playerinfo['ship_id']) == false) {
             echo "<span style='color:#f00;'>Team Edit Failed</span><br>Sorry you have either entered an invalid Team name or Team Description.<br>\n";
             LINK_BACK();
             break;
         }
         $res = $db->Execute("UPDATE {$db->prefix}teams SET team_name=?, description=? WHERE id=?;", array($teamname, $teamdesc, $whichteam)) or die("<font color=red>error: " . $db->ErrorMSG() . "</font>");
         db_op_result($db, $res, __LINE__, __FILE__, $db_logging);
         echo "{$l_team_team} <strong>{$teamname}</strong> {$l_team_hasbeenr}<br><br>";
         // Adding a log entry to all members of the renamed team
         $result_team_name = $db->Execute("SELECT ship_id FROM {$db->prefix}ships WHERE team=? AND ship_id<>?;", array($whichteam, $playerinfo['ship_id'])) or die("<font color=red>error: " . $db->ErrorMsg() . "</font>");
         db_op_result($db, $result_team_name, __LINE__, __FILE__, $db_logging);
         playerlog($db, $playerinfo['ship_id'], LOG_TEAM_RENAME, $teamname);
         while (!$result_team_name->EOF) {
             $teamname_array = $result_team_name->fields;
             playerlog($db, $teamname_array['ship_id'], LOG_TEAM_M_RENAME, $teamname);
             $result_team_name->MoveNext();
         }
     }
     LINK_BACK();
     break;
 default:
     if ($playerinfo['team'] == 0) {
         echo $l_team_notmember;
         DISPLAY_INVITE_INFO();
     } else {
         if ($playerinfo['team'] < 0) {
             $playerinfo['team'] = -$playerinfo['team'];
             $result = $db->Execute("SELECT * FROM {$db->prefix}teams WHERE id=?;", array($playerinfo['team']));
             db_op_result($db, $result, __LINE__, __FILE__, $db_logging);
             $whichteam = $result->fields;
示例#23
0
          $energy=$shipinfo[ship_energy];
          $update3 = $db->Execute ("UPDATE $dbtables[players] SET credits=credits+$ship_salvage,turns=turns-1, turns_used=turns_used+1, rating=rating-$rating_change WHERE player_id=$playerinfo[player_id]");
		  $update3 = $db->Execute ("UPDATE $dbtables[ships] SET ship_ore=ship_ore+$salv_ore, ship_organics=ship_organics+$salv_organics, ship_goods=ship_goods+$salv_goods,ship_energy=$energy,ship_fighters=ship_fighters-$fighters_lost, armour_pts=armour_pts-$armour_lost, torps=torps-$playertorpnum WHERE player_id=$playerinfo[player_id] AND ship_id=$playerinfo[currentship]");
          echo "$l_att_ylost ".NUMBER($armour_lost)." $l_armourpts, ".NUMBER($fighters_lost)." Fighters, $l_att_andused ".NUMBER($playertorpnum)." $l_torps in this battle.<BR><BR>";
        }
      }
      else
      {
	  	// ************ Target survived attack *********
       $l_att_stilship=str_replace("[name]",$targetinfo[character_name],$l_att_stilship);
        echo "<br><h2>$l_att_stilship</h2>";
        $rating_change=floor($targetinfo[rating]*.1);
        $armour_lost=$targetshipinfo[armour_pts]-$targetarmour;
        $fighters_lost=$targetshipinfo[ship_fighters]-$targetfighters;
        $energy=$targetshipinfo[ship_energy];
        playerlog($targetinfo[player_id], LOG_ATTACKED_WIN, "$playerinfo[character_name]|$armour_lost|$fighters_lost");
        $update4 = $db->Execute ("UPDATE $dbtables[ships] SET ship_energy=$energy,ship_fighters=ship_fighters-$fighters_lost, armour_pts=armour_pts-$armour_lost, torps=torps-$targettorpnum WHERE player_id=$targetinfo[player_id] and ship_id=$targetinfo[currentship]");

		// ******* Update attacker ********************
        $armour_lost=$shipinfo[armour_pts]-$playerarmour;
        $fighters_lost=$shipinfo[ship_fighters]-$playerfighters;
        $energy=$shipinfo[ship_energy];
        $update4b = $db->Execute ("UPDATE $dbtables[players] SET turns=turns-1, turns_used=turns_used+1, rating=rating-$rating_change WHERE player_id=$playerinfo[player_id]");
		$update4b = $db->Execute ("UPDATE $dbtables[ships] SET ship_energy=$energy,ship_fighters=ship_fighters-$fighters_lost, armour_pts=armour_pts-$armour_lost, torps=torps-$playertorpnum WHERE player_id=$playerinfo[player_id] and ship_id=$playerinfo[currentship]");
        echo "<b>$l_att_ylost ".NUMBER($armour_lost)." $l_armourpts, ".NUMBER($fighters_lost)." Fighters, $l_att_andused ".NUMBER($playertorpnum)." $l_torps in this battle.</b><BR><BR>";
		
		if ($playerarmour > 0) {
			// news - this was a skirmish that ended in a loss of fighters and armor
		  	// news
			$headline="Space Attack!";
			$newstext=$playerinfo[character_name]." and ".$targetinfo[character_name]." clashed today in an indecisive ship attack.";
示例#24
0
function shiptoship($target_id)
{
	global $upgrade_cost, $upgrade_factor;
    global $attackerbeams;
    global $attackerfighters;
    global $attackershields;
    global $attackertorps;
    global $attackerarmor;
    global $attackertorpdamage;
    global $start_energy;
    global $playerinfo;
    global $l_cmb_attackershields, $l_cmb_attackertorps, $l_cmb_attackerarmor, $l_cmb_attackertorpdamage;
    global $l_cmb_startingstats, $l_cmb_statattackerbeams, $l_cmb_statattackerfighters, $l_cmb_statattackershields, $l_cmb_statattackertorps;
    global $l_cmb_statattackerarmor, $l_cmb_statattackertorpdamage, $l_cmb_isattackingyou, $l_cmb_beamexchange, $l_cmb_beamsdestroy;
    global $l_cmb_beamsdestroy2, $l_cmb_nobeamsareleft, $l_cmb_beamshavenotarget, $l_cmb_fighterdestroyedbybeams, $l_cmb_beamsdestroystillhave;
    global $l_cmb_fighterunhindered, $l_cmb_youhavenofightersleft, $l_cmb_breachedsomeshields, $l_cmb_shieldsarehitbybeams, $l_cmb_nobeamslefttoattack;
    global $l_cmb_yourshieldsbreachedby, $l_cmb_yourshieldsarehit, $l_cmb_hehasnobeamslefttoattack, $l_cmb_yourbeamsbreachedhim;
    global $l_cmb_yourbeamshavedonedamage, $l_cmb_nobeamstoattackarmor, $l_cmb_yourarmorbreachedbybeams, $l_cmb_yourarmorhitdamaged;
    global $l_cmb_torpedoexchange, $l_cmb_hehasnobeamslefttoattackyou, $l_cmb_yourtorpsdestroy, $l_cmb_yourtorpsdestroy2;
    global $l_cmb_youhavenotorpsleft, $l_cmb_hehasnofighterleft, $l_cmb_torpsdestroyyou, $l_cmb_someonedestroyedfighters, $l_cmb_hehasnotorpsleftforyou;
    global $l_cmb_youhavenofightersanymore, $l_cmb_youbreachedwithtorps, $l_cmb_hisarmorishitbytorps, $l_cmb_notorpslefttoattackarmor;
    global $l_cmb_yourarmorbreachedbytorps, $l_cmb_yourarmorhitdmgtorps, $l_cmb_hehasnotorpsforyourarmor, $l_cmb_fightersattackexchange;
    global $l_cmb_enemylostallfighters, $l_cmb_helostsomefighters, $l_cmb_youlostallfighters, $l_cmb_youalsolostsomefighters, $l_cmb_hehasnofightersleftattack;
    global $l_cmb_younofightersattackleft, $l_cmb_youbreachedarmorwithfighters, $l_cmb_youhitarmordmgfighters, $l_cmb_youhavenofighterstoarmor;
    global $l_cmb_hasbreachedarmorfighters, $l_cmb_yourarmorishitfordmgby, $l_cmb_nofightersleftheforyourarmor, $l_cmb_hehasbeendestroyed;
    global $l_cmb_escapepodlaunched, $l_cmb_yousalvaged, $l_cmb_youdidntdestroyhim, $l_cmb_shiptoshipcombatstats;
    global $db, $dbtables;

    //$db->Execute("LOCK TABLES $dbtables[players] WRITE, $dbtables[ships] WRITE, $dbtables[universe] WRITE, $dbtables[zones] READ");
    $result2 = $db->Execute ("SELECT * FROM $dbtables[ships] WHERE ship_id=$target_id");
    $targetshipinfo=$result2->fields;
    $result2 = $db->Execute ("SELECT * FROM $dbtables[players] WHERE player_id=$targetshipinfo[player_id]");
    $targetinfo=$result2->fields;

    $targetbeams = NUM_BEAMS($targetshipinfo[beams]);
    if($targetbeams>$targetshipinfo[ship_energy])
    {
        $targetbeams=$targetshipinfo[ship_energy];
    }
    $targetshipinfo[ship_energy]=$targetshipinfo[ship_energy]-$targetbeams;
    $targetshields = NUM_SHIELDS($targetshipinfo[shields]);
    if($targetshields>$targetshipinfo[ship_energy])
    {
        $targetshields=$targetshipinfo[ship_energy];
    }
    $targetshipinfo[ship_energy]=$targetshipinfo[ship_energy]-$targetshields;

    $targettorpnum = round(mypw($level_factor,$targetshipinfo[torp_launchers]))*2;
    if($targettorpnum > $targetshipinfo[torps])
    {
        $targettorpnum = $targetshipinfo[torps];
    }
    $targettorpdmg = $torp_dmg_rate*$targettorpnum;
    $targetarmor = $targetshipinfo[armour_pts];
    $targetfighters = $targetshipinfo[ship_fighters];
    $targetdestroyed = 0;
    $playerdestroyed = 0;
    echo "-->$targetshipinfo[ship_name] $l_cmb_isattackingyou<BR><BR>";
	// ***************** BEAM EXCHANGE *************************
    echo "<FONT SIZE='+2' COLOR='RED'>$l_cmb_beamexchange</font><BR>";
    if($targetfighters > 0 && $attackerbeams > 0)
    {
        if($attackerbeams > round($targetfighters / 2))
        {
            $temp = round($targetfighters/2);
            $lost = $targetfighters-$temp;
            $targetfighters = $temp;
            $attackerbeams = $attackerbeams-$lost;
            $l_cmb_beamsdestroy = str_replace("[cmb_lost]", $lost, $l_cmb_beamsdestroy);
            echo "<-- $l_cmb_beamsdestroy<BR>";
        }
        else
        {
            $targetfighters = $targetfighters-$attackerbeams;
            $l_cmb_beamsdestroy2 = str_replace("[cmb_attackerbeams]", $attackerbeams, $l_cmb_beamsdestroy2);
            echo "--> $l_cmb_beamsdestroy2<BR>";
            $attackerbeams = 0;
        }
    }
    elseif ($targetfighters > 0 && $attackerbeams < 1)
    echo "<FONT SIZE='+2' COLOR='RED'>$l_cmb_nobeamsareleft</font><BR>";
    else
        echo "<FONT SIZE='+2' COLOR='RED'>$l_cmb_beamshavenotarget</font><BR>";
    if($attackerfighters > 0 && $targetbeams > 0)
    {
        if($targetbeams > round($attackerfighters / 2))
        {
            $temp=round($attackerfighters/2);
            $lost=$attackerfighters-$temp;
            $attackerfighters=$temp;
            $targetbeams=$targetbeams-$lost;
            $l_cmb_fighterdestroyedbybeams = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_fighterdestroyedbybeams);
            $l_cmb_fighterdestroyedbybeams = str_replace("[cmb_lost]", $lost, $l_cmb_fighterdestroyedbybeams);
            echo "--> $l_cmb_fighterdestroyedbybeams";
        }
        else
        {
            $attackerfighters=$attackerfighters-$targetbeams;
            $l_cmb_beamsdestroystillhave = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_beamsdestroystillhave);
            $l_cmb_beamsdestroystillhave = str_replace("[cmb_targetbeams]", $targetbeams, $l_cmb_beamsdestroystillhave);
            $l_cmb_beamsdestroystillhave = str_replace("[cmb_attackerfighters]", $attackerfighters, $l_cmb_beamsdestroystillhave);
            echo "<-- $l_cmb_beamsdestroystillhave<BR>";
            $targetbeams=0;
        }
    }
    elseif ($attackerfighters > 0 && $targetbeams < 1)
    echo "<FONT SIZE='+2' COLOR='RED'>$l_cmb_fighterunhindered</font><BR>";
    else
        echo "<FONT SIZE='+2' COLOR='RED'>$l_cmb_youhavenofightersleft</font><BR>";
    if($attackerbeams > 0)
    {
        if($attackerbeams > $targetshields)
        {
            $attackerbeams=$attackerbeams-$targetshields;
            $targetshields=0;
            $l_cmb_breachedsomeshields = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_breachedsomeshields);
            echo "<-- $l_cmb_breachedsomeshields<BR>";
        }
        else
        {
            $l_cmb_shieldsarehitbybeams = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_shieldsarehitbybeams);
            $l_cmb_shieldsarehitbybeams = str_replace("[cmb_attackerbeams]", $attackerbeams, $l_cmb_shieldsarehitbybeams);
            echo "$l_cmb_shieldsarehitbybeams<BR>";
            $targetshields=$targetshields-$attackerbeams;
            $attackerbeams=0;
        }
    }
    else
    {
        $l_cmb_nobeamslefttoattack = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_nobeamslefttoattack);
        echo "<FONT SIZE='+2' COLOR='RED'>$l_cmb_nobeamslefttoattack</font><BR>";
    }
    if($targetbeams > 0)
    {
        if($targetbeams > $attackershields)
        {
            $targetbeams=$targetbeams-$attackershields;
            $attackershields=0;
            $l_cmb_yourshieldsbreachedby = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourshieldsbreachedby);
            echo "--> $l_cmb_yourshieldsbreachedby<BR>";
        }
        else
        {
            $l_cmb_yourshieldsarehit = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourshieldsarehit);
            $l_cmb_yourshieldsarehit = str_replace("[cmb_targetbeams]", $targetbeams, $l_cmb_yourshieldsarehit);
            echo "<-- $l_cmb_yourshieldsarehit<BR>";
            $attackershields=$attackershields-$targetbeams;
            $targetbeams=0;
        }
    }
    else
    {
        $l_cmb_hehasnobeamslefttoattack = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_hehasnobeamslefttoattack);
        echo "<FONT SIZE='+2' COLOR='RED'>$l_cmb_hehasnobeamslefttoattack</font><BR>";
    }
    if($attackerbeams > 0)
    {
        if($attackerbeams > $targetarmor)
        {
            $targetarmor=0;
            $l_cmb_yourbeamsbreachedhim = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourbeamsbreachedhim);
            echo "--> $l_cmb_yourbeamsbreachedhim<BR>";
        }
        else
        {
            $targetarmor=$targetarmor-$attackerbeams;
            $l_cmb_yourbeamshavedonedamage = str_replace("[cmb_attackerbeams]", $attackerbeams, $l_cmb_yourbeamshavedonedamage);
            $l_cmb_yourbeamshavedonedamage = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourbeamshavedonedamage);
            echo "<FONT SIZE='+2' COLOR='RED'>$l_cmb_yourbeamshavedonedamage</font><BR>";
        }
    }
    else
    {
        $l_cmb_nobeamstoattackarmor = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_nobeamstoattackarmor);
        echo "<FONT SIZE='+2' COLOR='RED'>$l_cmb_nobeamstoattackarmor</font><BR>";
    }
    if($targetbeams > 0)
    {
        if($targetbeams > $attackerarmor)
        {
            $attackerarmor=0;
            $l_cmb_yourarmorbreachedbybeams = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourarmorbreachedbybeams);
            echo "--> $l_cmb_yourarmorbreachedbybeams<BR>";
        }
        else
        {
            $attackerarmor=$attackerarmor-$targetbeams;
            $l_cmb_yourarmorhitdamaged = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourarmorhitdamaged);
            $l_cmb_yourarmorhitdamaged = str_replace("[cmb_targetbeams]", $targetbeams, $l_cmb_yourarmorhitdamaged);
            echo "<-- $l_cmb_yourarmorhitdamaged<BR>";
        }
    }
    else
    {
        $l_cmb_hehasnobeamslefttoattackyou = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_hehasnobeamslefttoattackyou);
        echo "$l_cmb_hehasnobeamslefttoattackyou<BR>";
    }
	// ****************** TORPEDO EXCHANGE ***********************
    echo "<BR><FONT SIZE='+2' COLOR='RED'>$l_cmb_torpedoexchange</font><BR>";
    if($targetfighters > 0 && $attackertorpdamage > 0)
    {
        if($attackertorpdamage > round($targetfighters / 2))
        {
            $temp=round($targetfighters/2);
            $lost=$targetfighters-$temp;
            $targetfighters=$temp;
            $attackertorpdamage=$attackertorpdamage-$lost;
            $l_cmb_yourtorpsdestroy = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourtorpsdestroy);
            $l_cmb_yourtorpsdestroy = str_replace("[cmb_lost]", $lost, $l_cmb_yourtorpsdestroy);
            echo "--> $l_cmb_yourtorpsdestroy<BR>";
        }
        else
        {
            $targetfighters=$targetfighters-$attackertorpdamage;
            $l_cmb_yourtorpsdestroy2 = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourtorpsdestroy2);
            $l_cmb_yourtorpsdestroy2 = str_replace("[cmb_attackertorpdamage]", $attackertorpdamage, $l_cmb_yourtorpsdestroy2);
            echo "<-- $l_cmb_yourtorpsdestroy2<BR>";
            $attackertorpdamage=0;
        }
    }
    elseif ($targetfighters > 0 && $attackertorpdamage < 1)
    {
        $l_cmb_youhavenotorpsleft = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_youhavenotorpsleft);
        echo "$l_cmb_youhavenotorpsleft<BR>";
    }
    else
    {
        $l_cmb_hehasnofighterleft = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_hehasnofighterleft);
        echo "$_cmb_hehasnofighterleft<BR>";
    }
    if($attackerfighters > 0 && $targettorpdmg > 0)
    {
        if($targettorpdmg > round($attackerfighters / 2))
        {
            $temp=round($attackerfighters/2);
            $lost=$attackerfighters-$temp;
            $attackerfighters=$temp;
            $targettorpdmg=$targettorpdmg-$lost;
            $l_cmb_torpsdestroyyou = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_torpsdestroyyou);
            $l_cmb_torpsdestroyyou = str_replace("[cmb_lost]", $lost, $l_cmb_torpsdestroyyou);
            echo "--> $l_cmb_torpsdestroyyou<BR>";
        }
        else
        {
            $attackerfighters=$attackerfighters-$targettorpdmg;
            $l_cmb_someonedestroyedfighters = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_someonedestroyedfighters);
            $l_cmb_someonedestroyedfighters = str_replace("[cmb_targettorpdmg]", $targettorpdmg, $l_cmb_someonedestroyedfighters);
            echo "<-- $l_cmb_someonedestroyedfighters<BR>";
            $targettorpdmg=0;
        }
    }
    elseif ($attackerfighters > 0 && $targettorpdmg < 1)
    {
        $l_cmb_hehasnotorpsleftforyou = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_hehasnotorpsleftforyou);
        echo "$l_cmb_hehasnotorpsleftforyou<BR>";
    }
    else
    {
        $l_cmb_youhavenofightersanymore = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_youhavenofightersanymore);
        echo "$l_cmb_youhavenofightersanymore<BR>";
    }
    if($attackertorpdamage > 0)
    {
        if($attackertorpdamage > $targetarmor)
        {
            $targetarmor=0;
            $l_cmb_youbreachedwithtorps = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_youbreachedwithtorps);
            echo "--> $l_cmb_youbreachedwithtorps<BR>";
        }
        else
        {
            $targetarmor=$targetarmor-$attackertorpdamage;
            $l_cmb_hisarmorishitbytorps = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_hisarmorishitbytorps);
            $l_cmb_hisarmorishitbytorps = str_replace("[cmb_attackertorpdamage]", $attackertorpdamage, $l_cmb_hisarmorishitbytorps);
            echo "<-- $l_cmb_hisarmorishitbytorps<BR>";
        }
    }
    else
    {
        $l_cmb_notorpslefttoattackarmor = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_notorpslefttoattackarmor);
        echo "$l_cmb_notorpslefttoattackarmor<BR>";
    }
    if($targettorpdmg > 0)
    {
        if($targettorpdmg > $attackerarmor)
        {
            $attackerarmor=0;
            $l_cmb_yourarmorbreachedbytorps = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourarmorbreachedbytorps);
            echo "<-- $l_cmb_yourarmorbreachedbytorps<BR>";
        }
        else
        {
            $attackerarmor=$attackerarmor-$targettorpdmg;
            $l_cmb_yourarmorhitdmgtorps = str_replace("[cmb_targettorpdmg]", $targettorpdmg, $l_cmb_yourarmorhitdmgtorps);
            $l_cmb_yourarmorhitdmgtorps = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourarmorhitdmgtorps);
            echo "<-- $l_cmb_yourarmorhitdmgtorps<BR>";
        }
    }
    else
    {
        $l_cmb_hehasnotorpsforyourarmor = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_hehasnotorpsforyourarmor);
        echo "$l_cmb_hehasnotorpsforyourarmor<BR>";
    }
	// *******************8 FIGHTERS EXCHANGE ******************	
    echo "<BR><FONT SIZE='+2' COLOR='RED'>$l_cmb_fightersattackexchange</FONT><BR>";
    if($attackerfighters > 0 && $targetfighters > 0)
    {
        if($attackerfighters > $targetfighters)
        {
            $l_cmb_enemylostallfighters = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_enemylostallfighters);
            echo "--> $l_cmb_enemylostallfighters<BR>";
            $temptargfighters=0;
        }
        else
        {
            $l_cmb_helostsomefighters = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_helostsomefighters);
            $l_cmb_helostsomefighters = str_replace("[cmb_attackerfighters]", $attackerfighters, $l_cmb_helostsomefighters);
            echo "$l_cmb_helostsomefighters<BR>";
            $temptargfighters=$targetfighters-$attackerfighters;
        }
        if($targetfighters > $attackerfighters)
        {
            echo "<-- $l_cmb_youlostallfighters<BR>";
            $tempplayfighters=0;
        }
        else
        {
            $l_cmb_youalsolostsomefighters = str_replace("[cmb_targetfighters]", $targetfighters, $l_cmb_youalsolostsomefighters);
            echo "<-- $l_cmb_youalsolostsomefighters<BR>";
            $tempplayfighters=$attackerfighters-$targetfighters;
        }
        $attackerfighters=$tempplayfighters;
        $targetfighters=$temptargfighters;
    }
    elseif ($attackerfighters > 0 && $targetfighters < 1)
    {
        $l_cmb_hehasnofightersleftattack = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_hehasnofightersleftattack);
        echo "$l_cmb_hehasnofightersleftattack<BR>";
    }
    else
    {
        $l_cmb_younofightersattackleft = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_younofightersattackleft);
        echo "$l_cmb_younofightersattackleft<BR>";
    }
    if($attackerfighters > 0)
    {
        if($attackerfighters > $targetarmor)
        {
            $targetarmor=0;
            $l_cmb_youbreachedarmorwithfighters = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_youbreachedarmorwithfighters);
            echo "--> $l_cmb_youbreachedarmorwithfighters<BR>";
        }
        else
        {
            $targetarmor=$targetarmor-$attackerfighters;
            $l_cmb_youhitarmordmgfighters = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_youhitarmordmgfighters);
            $l_cmb_youhitarmordmgfighters = str_replace("[cmb_attackerfighters]", $attackerfighters, $l_cmb_youhitarmordmgfighters);
            echo "<-- $l_cmb_youhitarmordmgfighters<BR>";
        }
    }
    else
    {
        $l_cmb_youhavenofighterstoarmor = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_youhavenofighterstoarmor);
        echo "$l_cmb_youhavenofighterstoarmor<BR>";
    }
    if($targetfighters > 0)
    {
        if($targetfighters > $attackerarmor)
        {
            $attackerarmor=0;
            $l_cmb_hasbreachedarmorfighters = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_hasbreachedarmorfighters);
            echo "<-- $l_cmb_hasbreachedarmorfighters<BR>";
        }
        else
        {
            $attackerarmor=$attackerarmor-$targetfighters;
            $l_cmb_yourarmorishitfordmgby = str_replace("[cmb_targetfighters]", $targetfighters, $l_cmb_yourarmorishitfordmgby);
            $l_cmb_yourarmorishitfordmgby = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_yourarmorishitfordmgby);
            echo "--> $l_cmb_yourarmorishitfordmgby<BR>";
        }
    }
    else
    {
        $l_cmb_nofightersleftheforyourarmor = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_nofightersleftheforyourarmor);
        echo "$l_cmb_nofightersleftheforyourarmor<BR>";
    }
    if($targetarmor < 1)
    {
        $l_cmb_hehasbeendestroyed = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_hehasbeendestroyed);
        echo "<BR>$l_cmb_hehasbeendestroyed<BR>";
		// news
		$headline="Ship blown up on planet!";
		$newstext="The ship ".$targetshipinfo[ship_name]." was destroyed today by ".$playerinfo[character_name]." during a planet attack. ";
        if($targetshipinfo[dev_escapepod] == "Y")
        {
            $rating=round($targetinfo[rating]/2);
            echo "$l_cmb_escapepodlaunched<BR><BR>";
            echo "<BR><BR>player_id=$targetinfo[player_id]<BR><BR>";
            $test = $db->Execute("UPDATE $dbtables[players] SET on_planet='N',rating='$rating',sector=0 WHERE player_id=$targetinfo[player_id]");
			// Immediately release any ships being towed 
    		if ($targetshipinfo[tow] > 0) {
				$db->Execute("UPDATE $dbtables[ships] SET player_id=0,on_planet='N',sector=$targetshipinfo[sector] WHERE ship_id=$targetshipinfo[tow]");
  			}
			$db->Execute("UPDATE $dbtables[ships] SET ship_destroyed ='Y', sector=0, tow=0 WHERE player_id=$targetinfo[player_id] AND ship_id=$targetinfo[currentship]");
            playerlog($targetinfo[player_id],LOG_ATTACK_LOSE, "$playerinfo[character_name]|Y");
            collect_bounty($playerinfo[player_id],$targetinfo[player_id]);
			$newstext = $newstext.$targetinfo[character_name]." survived and podded off to Sector 0.";
        }
        else
        {
            playerlog($targetinfo[player_id], LOG_ATTACK_LOSE, "$playerinfo[character_name]|N");
            db_kill_player($targetinfo[player_id],$targetinfo[currentship],$playerinfo[player_id]);
            collect_bounty($playerinfo[player_id],$targetinfo[player_id]);
			$newstext .= $targetinfo[character_name]." did not survive the attack.";
        }
		$newstext = addslashes($newstext);
		$player_id = $playerinfo[player_id];
		$news = $db->Execute("INSERT INTO $dbtables[news] (headline, newstext, user_id, date, news_type) VALUES ('$headline','$newstext','$player_id',NOW(), 'attack')");
		
        if($attackerarmor > 0)
        {
            $rating_change=round($targetinfo[rating]*$rating_combat_factor);
            $free_ore = round($targetshipinfo[ship_ore]/2);
            $free_organics = round($targetshipinfo[ship_organics]/2);
            $free_goods = round($targetshipinfo[ship_goods]/2);
            $free_holds = NUM_HOLDS($shipinfo[hull]) - $shipinfo[ship_ore] - $shipinfo[ship_organics] - $shipinfo[ship_goods] - $shipinfo[ship_colonists];
            if($free_holds > $free_goods)
            {
                $salv_goods=$free_goods;
                $free_holds=$free_holds-$free_goods;
            }
            elseif($free_holds > 0)
            {
                $salv_goods=$free_holds;
                $free_holds=0;
            }
            else
            {
                $salv_goods=0;
            }
            if($free_holds > $free_ore)
            {
                $salv_ore=$free_ore;
                $free_holds=$free_holds-$free_ore;
            }
            elseif($free_holds > 0)
            {
                $salv_ore=$free_holds;
                $free_holds=0;
            }
            else
            {
                $salv_ore=0;
            }
            if($free_holds > $free_organics)
            {
                $salv_organics=$free_organics;
                $free_holds=$free_holds-$free_organics;
            }
            elseif($free_holds > 0)
            {
                $salv_organics=$free_holds;
                $free_holds=0;
            }
            else
            {
                $salv_organics=0;
            }
            $ship_value=$upgrade_cost*(round(mypw($upgrade_factor, $targetshipinfo[hull]))+round(mypw($upgrade_factor, $targetshipinfo[engines]))+round(mypw($upgrade_factor, $targetshipinfo[power]))+round(mypw($upgrade_factor, $targetshipinfo[computer]))+round(mypw($upgrade_factor, $targetshipinfo[sensors]))+round(mypw($upgrade_factor, $targetshipinfo[beams]))+round(mypw($upgrade_factor, $targetshipinfo[torp_launchers]))+round(mypw($upgrade_factor, $targetshipinfo[shields]))+round(mypw($upgrade_factor, $targetshipinfo[armor]))+round(mypw($upgrade_factor, $targetshipinfo[cloak])));
            $ship_salvage_rate=rand(10,20);
            $ship_salvage=$ship_value*$ship_salvage_rate/100;
			// Triple salvage if this is an outlaw
		  	$result3 = $db->Execute ("SELECT amount FROM $dbtables[bounty] WHERE placed_by=0 AND bounty_on=$targetinfo[player_id]");
		  	if (!$result3->EOF) {
		  		$ship_salvage *=3;
				echo "You destroyed a Federation fugitive! Triple hull salvage!<br>";
		  	}
            $l_cmb_yousalvaged = str_replace("[cmb_salv_ore]", NUMBER($salv_ore), $l_cmb_yousalvaged);
            $l_cmb_yousalvaged = str_replace("[cmb_salv_organics]", NUMBER($salv_organics), $l_cmb_yousalvaged);
            $l_cmb_yousalvaged = str_replace("[cmb_salv_goods]", NUMBER($salv_goods), $l_cmb_yousalvaged);
            $l_cmb_yousalvaged = str_replace("[cmb_salvage_rate]", $ship_salvage_rate, $l_cmb_yousalvaged);
            $l_cmb_yousalvaged = str_replace("[cmb_salvage]", NUMBER($ship_salvage), $l_cmb_yousalvaged);
            $l_cmb_yousalvaged = str_replace("[cmb_number_rating_change]", NUMBER(abs($rating_change)), $l_cmb_yousalvaged);
            echo "$l_cmb_yousalvaged";
            $update3 = $db->Execute ("UPDATE $dbtables[players] SET credits=credits+$ship_salvage WHERE player_id=$playerinfo[player_id]");
			$update3 = $db->Execute ("UPDATE $dbtables[ships] SET ship_ore=ship_ore+$salv_ore, ship_organics=ship_organics+$salv_organics, ship_goods=ship_goods+$salv_goods WHERE player_id=$playerinfo[player_id] AND ship_id=$playerinfo[currentship]");
        }
    }
    else
    {
        $l_cmb_youdidntdestroyhim = str_replace("[cmb_targetinfo_ship_name]", $targetshipinfo[ship_name], $l_cmb_youdidntdestroyhim);
        echo "$l_cmb_youdidntdestroyhim<BR>";
        $target_rating_change=round($targetinfo[rating]*.1);
        $target_armor_lost=$targetshipinfo[armour_pts]-$targetarmor;
        $target_fighters_lost=$targetshipinfo[ship_fighters]-$targetfighters;
        $target_energy=$targetshipinfo[ship_energy];
        playerlog($targetinfo[player_id], LOG_ATTACKED_WIN, "$playerinfo[character_name]|$target_armor_lost|$target_fighters_lost");
        $update4 = $db->Execute ("UPDATE $dbtables[ships] SET ship_energy=$target_energy,ship_fighters=ship_fighters-$target_fighters_lost, armour_pts=armour_pts-$target_armor_lost, torps=torps-$targettorpnum WHERE player_id=$targetinfo[player_id] AND ship_id=$targetinfo[currentship]");
	}
    $db->Execute("UNLOCK TABLES");
}
示例#25
0
function xenobetoplanet($planet_id)
{
    // Xenobe planet attack code
    global $playerinfo, $planetinfo, $torp_dmg_rate, $level_factor;
    global $rating_combat_factor, $upgrade_cost, $upgrade_factor, $sector_max, $xenobeisdead, $db;
    $resh = $db->Execute("LOCK TABLES {$db->prefix}ships WRITE, {$db->prefix}universe WRITE, {$db->prefix}planets WRITE, {$db->prefix}news WRITE, {$db->prefix}logs WRITE");
    db_op_result($db, $resh, __LINE__, __FILE__);
    $resultp = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE planet_id=?", array($planet_id));
    // Get target planet information
    db_op_result($db, $resultp, __LINE__, __FILE__);
    $planetinfo = $resultp->fields;
    $resulto = $db->Execute("SELECT * FROM {$db->prefix}ships WHERE ship_id=?", array($planetinfo['owner']));
    // Get target player information
    db_op_result($db, $resulto, __LINE__, __FILE__);
    $ownerinfo = $resulto->fields;
    $base_factor = $planetinfo['base'] == 'Y' ? $basedefense : 0;
    // Planet beams
    $targetbeams = NUM_BEAMS($ownerinfo['beams'] + $base_factor);
    if ($targetbeams > $planetinfo['energy']) {
        $targetbeams = $planetinfo['energy'];
    }
    $planetinfo['energy'] -= $targetbeams;
    // Planet shields
    $targetshields = NUM_SHIELDS($ownerinfo['shields'] + $base_factor);
    if ($targetshields > $planetinfo['energy']) {
        $targetshields = $planetinfo['energy'];
    }
    $planetinfo['energy'] -= $targetshields;
    // Planet torps
    $torp_launchers = round(pow($level_factor, $ownerinfo['torp_launchers'] + $base_factor)) * 10;
    $torps = $planetinfo['torps'];
    $targettorps = $torp_launchers;
    if ($torp_launchers > $torps) {
        $targettorps = $torps;
    }
    $planetinfo['torps'] -= $targettorps;
    $targettorpdmg = $torp_dmg_rate * $targettorps;
    // Planet fighters
    $targetfighters = $planetinfo['fighters'];
    // Attacker beams
    $attackerbeams = NUM_BEAMS($playerinfo['beams']);
    if ($attackerbeams > $playerinfo['ship_energy']) {
        $attackerbeams = $playerinfo['ship_energy'];
    }
    $playerinfo['ship_energy'] -= $attackerbeams;
    // Attacker shields
    $attackershields = NUM_SHIELDS($playerinfo['shields']);
    if ($attackershields > $playerinfo['ship_energy']) {
        $attackershields = $playerinfo['ship_energy'];
    }
    $playerinfo['ship_energy'] -= $attackershields;
    // Attacker torps
    $attackertorps = round(pow($level_factor, $playerinfo['torp_launchers'])) * 2;
    if ($attackertorps > $playerinfo['torps']) {
        $attackertorps = $playerinfo['torps'];
    }
    $playerinfo['torps'] -= $attackertorps;
    $attackertorpdamage = $torp_dmg_rate * $attackertorps;
    // Attacker fighters
    $attackerfighters = $playerinfo['ship_fighters'];
    // Attacker armor
    $attackerarmor = $playerinfo['armor_pts'];
    // Begin combat
    if ($attackerbeams > 0 && $targetfighters > 0) {
        if ($attackerbeams > $targetfighters) {
            $lost = $targetfighters;
            $targetfighters = 0;
            // Target loses all fighters
            $attackerbeams = $attackerbeams - $lost;
            // Attacker loses beams equal to Target fighters
        } else {
            $targetfighters = $targetfighters - $attackerbeams;
            // Target loses fighters equal to attacker beams
            $attackerbeams = 0;
            // Attacker loses all beams
        }
    }
    if ($attackerfighters > 0 && $targetbeams > 0) {
        if ($targetbeams > round($attackerfighters / 2)) {
            $lost = $attackerfighters - round($attackerfighters / 2);
            // Attacker loses half of all fighters
            $attackerfighters = $attackerfighters - $lost;
            $targetbeams = $targetbeams - $lost;
            // Target loses beams equal to half of attackers fighters
        } else {
            // Target beams are less than half of attackers fighters
            $attackerfighters = $attackerfighters - $targetbeams;
            // Attacker loses fighters equal to target beams
            $targetbeams = 0;
            // Target loses all beams
        }
    }
    if ($attackerbeams > 0) {
        if ($attackerbeams > $targetshields) {
            $attackerbeams = $attackerbeams - $targetshields;
            // Attacker loses beams equal to target shields
            $targetshields = 0;
            // Target loses all shields
        } else {
            $targetshields = $targetshields - $attackerbeams;
            // Target loses shields equal to attacker beams
            $attackerbeams = 0;
            // Attacker loses all beams
        }
    }
    if ($targetbeams > 0) {
        if ($targetbeams > $attackershields) {
            $targetbeams = $targetbeams - $attackershields;
            // Target loses beams equal to attacker shields
            $attackershields = 0;
            // Attacker loses all shields
        } else {
            $attackershields = $attackershields - $targetbeams;
            // Attacker loses sheilds equal to target beams
            $targetbeams = 0;
            // Target loses all beams
        }
    }
    if ($targetbeams > 0) {
        if ($targetbeams > $attackerarmor) {
            $targetbeams = $targetbeams - $attackerarmor;
            // Target loses beams equal to attacker armor
            $attackerarmor = 0;
            // Attacker loses all armor (attacker destroyed)
        } else {
            $attackerarmor = $attackerarmor - $targetbeams;
            // Attacker loses armor equal to target beams
            $targetbeams = 0;
            // Target loses all beams
        }
    }
    if ($targetfighters > 0 && $attackertorpdamage > 0) {
        if ($attackertorpdamage > $targetfighters) {
            $lost = $targetfighters;
            $targetfighters = 0;
            // Target loses all fighters
            $attackertorpdamage = $attackertorpdamage - $lost;
            // Attacker loses fired torpedoes equal to target fighters
        } else {
            $targetfighters = $targetfighters - $attackertorpdamage;
            // Target loses fighters equal to attacker torpedoes fired
            $attackertorpdamage = 0;
            // Attacker loses all torpedoes fired
        }
    }
    if ($attackerfighters > 0 && $targettorpdmg > 0) {
        if ($targettorpdmg > round($attackerfighters / 2)) {
            $lost = $attackerfighters - round($attackerfighters / 2);
            $attackerfighters = $attackerfighters - $lost;
            // Attacker loses half of all fighters
            $targettorpdmg = $targettorpdmg - $lost;
            // Target loses fired torpedoes equal to half of attacker fighters
        } else {
            // Target fired torpedoes less than or equal to half of attacker fighters
            $attackerfighters = $attackerfighters - $targettorpdmg;
            // Attacker loses fighters equal to target torpedoes fired
            $targettorpdmg = 0;
            // Tartget loses all torpedoes fired
        }
    }
    if ($targettorpdmg > 0) {
        if ($targettorpdmg > $attackerarmor) {
            $targettorpdmg = $targettorpdmg - $attackerarmor;
            // Target loses fired torpedoes equal to attacker armor
            $attackerarmor = 0;
            // Attacker loses all armor (Attacker destroyed)
        } else {
            // Target fired torpedoes less than or equal to half attacker armor
            $attackerarmor = $attackerarmor - $targettorpdmg;
            // Attacker loses armor equal to the target torpedoes fired
            $targettorpdmg = 0;
            // Target loses all torpedoes fired
        }
    }
    if ($attackerfighters > 0 && $targetfighters > 0) {
        if ($attackerfighters > $targetfighters) {
            $temptargfighters = 0;
            // Target will lose all fighters
        } else {
            // Attackers fighters less than or equal to target fighters
            $temptargfighters = $targetfighters - $attackerfighters;
            // Target will loose fighters equal to attacker fighters
        }
        if ($targetfighters > $attackerfighters) {
            // Target fighters greater than attackers fighters
            $tempplayfighters = 0;
            // Attackerwill loose ALL fighters
        } else {
            // Target fighters less than or equal to attackers fighters
            $tempplayfighters = $attackerfighters - $targetfighters;
            // Attacker will loose fighters equal to target fighters
        }
        $attackerfighters = $tempplayfighters;
        $targetfighters = $temptargfighters;
    }
    if ($targetfighters > 0) {
        if ($targetfighters > $attackerarmor) {
            // Target fighters greater than attackers armor
            $attackerarmor = 0;
            // attacker loses all armor (attacker destroyed)
        } else {
            // Target fighters less than or equal to attackers armor
            $attackerarmor = $attackerarmor - $targetfighters;
            // attacker loses armor equal to target fighters
        }
    }
    // Fix negative values
    if ($attackerfighters < 0) {
        $attackerfighters = 0;
    }
    if ($attackertorps < 0) {
        $attackertorps = 0;
    }
    if ($attackershields < 0) {
        $attackershields = 0;
    }
    if ($attackerbeams < 0) {
        $attackerbeams = 0;
    }
    if ($attackerarmor < 0) {
        $attackerarmor = 0;
    }
    if ($targetfighters < 0) {
        $targetfighters = 0;
    }
    if ($targettorps < 0) {
        $targettorps = 0;
    }
    if ($targetshields < 0) {
        $targetshields = 0;
    }
    if ($targetbeams < 0) {
        $targetbeams = 0;
    }
    if (!$attackerarmor > 0) {
        playerlog($db, $playerinfo['ship_id'], LOG_RAW, "Ship destroyed by planetary defenses on planet {$planetinfo['name']}");
        db_kill_player($playerinfo['ship_id']);
        $xenobeisdead = 1;
        $free_ore = round($playerinfo['ship_ore'] / 2);
        $free_organics = round($playerinfo['ship_organics'] / 2);
        $free_goods = round($playerinfo['ship_goods'] / 2);
        $ship_value = $upgrade_cost * (round(pow($upgrade_factor, $playerinfo['hull'])) + round(pow($upgrade_factor, $playerinfo['engines'])) + round(pow($upgrade_factor, $playerinfo['power'])) + round(pow($upgrade_factor, $playerinfo['computer'])) + round(pow($upgrade_factor, $playerinfo['sensors'])) + round(pow($upgrade_factor, $playerinfo['beams'])) + round(pow($upgrade_factor, $playerinfo['torp_launchers'])) + round(pow($upgrade_factor, $playerinfo['shields'])) + round(pow($upgrade_factor, $playerinfo['armor'])) + round(pow($upgrade_factor, $playerinfo['cloak'])));
        $ship_salvage_rate = mt_rand(10, 20);
        $ship_salvage = $ship_value * $ship_salvage_rate / 100;
        $fighters_lost = $planetinfo['fighters'] - $targetfighters;
        // Log attack to planet owner
        playerlog($db, $planetinfo['owner'], LOG_PLANET_NOT_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|Xenobe {$playerinfo['character_name']}|{$free_ore}|{$free_organics}|{$free_goods}|{$ship_salvage_rate}|{$ship_salvage}");
        // Update planet
        $resi = $db->Execute("UPDATE {$db->prefix}planets SET energy=?, fighters=fighters-?, torps=torps-?, ore=ore+?, goods=goods+?, organics=organics+?, credits=credits+? WHERE planet_id=?", array($planetinfo['energy'], $fighters_lost, $targettorps, $free_ore, $free_goods, $free_organics, $ship_salvage, $planetinfo['planet_id']));
        db_op_result($db, $resi, __LINE__, __FILE__);
    } else {
        $armor_lost = $playerinfo['armor_pts'] - $attackerarmor;
        $fighters_lost = $playerinfo['ship_fighters'] - $attackerfighters;
        $target_fighters_lost = $planetinfo['ship_fighters'] - $targetfighters;
        playerlog($db, $playerinfo['ship_id'], LOG_RAW, "Made it past defenses on planet {$planetinfo['name']}");
        // Update attackers
        $resj = $db->Execute("UPDATE {$db->prefix}ships SET ship_energy=?, ship_fighters=ship_fighters-?, torps=torps-?, armor_pts=armor_pts-? WHERE ship_id=?", array($playerinfo['ship_energy'], $fighters_lost, $attackertorps, $armor_lost, $playerinfo['ship_id']));
        db_op_result($db, $resj, __LINE__, __FILE__);
        $playerinfo['ship_fighters'] = $attackerfighters;
        $playerinfo['torps'] = $attackertorps;
        $playerinfo['armor_pts'] = $attackerarmor;
        // Update planet
        $resk = $db->Execute("UPDATE {$db->prefix}planets SET energy=?, fighters=?, torps=torps-? WHERE planet_id=?", array($planetinfo['energy'], $targetfighters, $targettorps, $planetinfo['planet_id']));
        db_op_result($db, $resk, __LINE__, __FILE__);
        $planetinfo['fighters'] = $targetfighters;
        $planetinfo['torps'] = $targettorps;
        // Now we must attack all ships on the planet one by one
        $resultps = $db->Execute("SELECT ship_id,ship_name FROM {$db->prefix}ships WHERE planet_id=? AND on_planet='Y'", array($planetinfo['planet_id']));
        db_op_result($db, $resultps, __LINE__, __FILE__);
        $shipsonplanet = $resultps->RecordCount();
        if ($shipsonplanet > 0) {
            while (!$resultps->EOF && $xenobeisdead < 1) {
                $onplanet = $resultps->fields;
                xenobetoship($onplanet['ship_id']);
                $resultps->MoveNext();
            }
        }
        $resultps = $db->Execute("SELECT ship_id,ship_name FROM {$db->prefix}ships WHERE planet_id=? AND on_planet='Y'", array($planetinfo['planet_id']));
        db_op_result($db, $resultps, __LINE__, __FILE__);
        $shipsonplanet = $resultps->RecordCount();
        if ($shipsonplanet == 0 && $xenobeisdead < 1) {
            // Must have killed all ships on the planet
            playerlog($db, $playerinfo['ship_id'], LOG_RAW, "Defeated all ships on planet {$planetinfo['name']}");
            // Log attack to planet owner
            playerlog($db, $planetinfo['owner'], LOG_PLANET_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|{$playerinfo['character_name']}");
            // Update planet
            $resl = $db->Execute("UPDATE {$db->prefix}planets SET fighters=0, torps=0, base='N', owner=0, corp=0 WHERE planet_id=?", array($planetinfo['planet_id']));
            db_op_result($db, $resl, __LINE__, __FILE__);
            calc_ownership($planetinfo['sector_id']);
        } else {
            // Must have died trying
            playerlog($db, $playerinfo['ship_id'], LOG_RAW, "We were KILLED by ships defending planet {$planetinfo['name']}");
            // Log attack to planet owner
            playerlog($db, $planetinfo['owner'], LOG_PLANET_NOT_DEFEATED, "{$planetinfo['name']}|{$playerinfo['sector']}|Xenobe {$playerinfo['character_name']}|0|0|0|0|0");
            // No salvage for planet because it went to the ship that won
        }
    }
    $resx = $db->Execute("UNLOCK TABLES");
    db_op_result($db, $resx, __LINE__, __FILE__);
}
示例#26
0
function cancel_bounty($bounty_on)
{
   global $db,$dbtables;
   $res = $db->Execute("SELECT * FROM $dbtables[bounty],$dbtables[players] WHERE bounty_on = $bounty_on AND bounty_on = player_id");
   if($res)
   {
      while(!$res->EOF)
      {
         $bountydetails = $res->fields;
         if($bountydetails[placed_by] <> 0)
         {
            $update = $db->Execute("UPDATE $dbtables[players] SET credits = credits + $bountydetails[amount] WHERE player_id = $bountydetails[placed_by]");
    
            playerlog($bountydetails[placed_by],LOG_BOUNTY_CANCELLED,"$bountydetails[amount]|$bountydetails[character_name]");
         }
         $delete = $db->Execute("DELETE FROM $dbtables[bounty] WHERE bounty_id = $bountydetails[bounty_id]");
         $res->MoveNext();
      }
   }
}
示例#27
0
$l_sf_sendlog = str_replace("[lost]", $fighterslost, $l_sf_sendlog);
$l_sf_sendlog = str_replace("[sector]", $sector, $l_sf_sendlog);
message_defence_owner($db, $sector, $l_sf_sendlog);
playerlog($db, $playerinfo['ship_id'], LOG_DEFS_DESTROYED_F, "{$fighterslost}|{$sector}");
$armor_lost = $playerinfo['armor_pts'] - $playerarmor;
$fighters_lost = $playerinfo['ship_fighters'] - $playerfighters;
$energy = $playerinfo['ship_energy'];
$update4b = $db->Execute("UPDATE {$db->prefix}ships SET ship_energy={$energy},ship_fighters=ship_fighters-{$fighters_lost}, armor_pts=armor_pts-{$armor_lost}, torps=torps-{$playertorpnum} WHERE ship_id={$playerinfo['ship_id']}");
db_op_result($db, $update4b, __LINE__, __FILE__, $db_logging);
$l_sf_lreport = str_replace("[armor]", $armor_lost, $l_sf_lreport);
$l_sf_lreport = str_replace("[fighters]", $fighters_lost, $l_sf_lreport);
$l_sf_lreport = str_replace("[torps]", $playertorpnum, $l_sf_lreport);
echo $l_sf_lreport . "<br><br>";
if ($playerarmor < 1) {
    echo $l_sf_shipdestroyed . "<br><br>";
    playerlog($db, $playerinfo['ship_id'], LOG_DEFS_KABOOM, "{$sector}|{$playerinfo['dev_escapepod']}");
    $l_sf_sendlog2 = str_replace("[player]", $playerinfo['character_name'], $l_sf_sendlog2);
    $l_sf_sendlog2 = str_replace("[sector]", $sector, $l_sf_sendlog2);
    message_defence_owner($db, $sector, $l_sf_sendlog2);
    if ($playerinfo['dev_escapepod'] == 'Y') {
        $rating = round($playerinfo['rating'] / 2);
        echo $l_sf_escape . "<br><br>";
        $resx = $db->Execute("UPDATE {$db->prefix}ships SET hull=0,engines=0,power=0,sensors=0,computer=0,beams=0,torp_launchers=0,torps=0,armor=0,armor_pts=100,cloak=0,shields=0,sector=0,ship_organics=0,ship_ore=0,ship_goods=0,ship_energy={$start_energy},ship_colonists=0,ship_fighters=100,dev_warpedit=0,dev_genesis=0,dev_beacon=0,dev_emerwarp=0,dev_escapepod='N',dev_fuelscoop='N',dev_minedeflector=0,on_planet='N',rating='{$rating}',cleared_defences=' ',dev_lssd='N' WHERE ship_id={$playerinfo['ship_id']}");
        db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
        cancel_bounty($db, $playerinfo['ship_id']);
        $ok = 0;
        TEXT_GOTOMAIN();
        die;
    } else {
        cancel_bounty($db, $playerinfo['ship_id']);
        db_kill_player($playerinfo['ship_id']);
示例#28
0
            $ownership = calc_ownership($playerinfo['sector']);
            if (!empty($ownership)) {
                echo "{$ownership}<p>";
            }
            if ($planetinfo['owner'] != 0) {
                gen_score($planetinfo['owner']);
            }
            if ($planetinfo['owner'] != 0) {
                $res = $db->Execute("SELECT character_name FROM {$db->prefix}ships WHERE ship_id={$planetinfo['owner']}");
                db_op_result($db, $res, __LINE__, __FILE__, $db_logging);
                $query = $res->fields;
                $planetowner = $query['character_name'];
            } else {
                $planetowner = "nobody";
            }
            playerlog($db, $playerinfo['ship_id'], LOG_PLANET_CAPTURED, "{$planetinfo['colonists']}|{$planetinfo['credits']}|{$planetowner}");
        } elseif ($command == "capture" && ($planetinfo['owner'] == 0 || $planetinfo['defeated'] == 'Y')) {
            echo "Planet not defeated!<br/>";
            $resx = $db->Execute("UPDATE {$db->prefix}planets SET defeated='N' WHERE planet_id={$planetinfo['planet_id']}");
            db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
        } else {
            echo "Command not available.<br/>";
        }
    }
} else {
    echo "You are not in the same sector as this planet, so you can't interact with it.";
}
if ($command != "") {
    echo "<br/><a href=planet.php?planet_id={$planet_id}>Click Here</a> to go to the planet menu.<br/><br/>";
}
if ($allow_ibank) {
示例#29
0
 } else {
     // Direct hit
     echo $l_chm_youlostallyourshields . "<br>";
     $mines_left = $mines_left - $playershields;
     if ($playerinfo['armor_pts'] >= $mines_left) {
         $l_chm_yourarmorhitforminesdmg = str_replace("[chm_mines_left]", $mines_left, $l_chm_yourarmorhitforminesdmg);
         echo $l_chm_yourarmorhitforminesdmg . "<br>";
         $result2 = $db->Execute("UPDATE {$db->prefix}ships SET armor_pts=armor_pts-?, ship_energy=0, dev_minedeflector=0 WHERE ship_id=?;", array($mines_left, $playerinfo['ship_id']));
         db_op_result($db, $result2, __LINE__, __FILE__, $db_logging);
         if ($playerinfo['armor_pts'] == $mines_left) {
             echo $l_chm_yourhullisbreached . "<br>";
         }
     } else {
         // BOOM
         $pod = $playerinfo['dev_escapepod'];
         playerlog($db, $playerinfo['ship_id'], LOG_SHIP_DESTROYED_MINES, "{$sector}|{$pod}");
         $l_chm_hewasdestroyedbyyourmines = str_replace("[chm_playerinfo_character_name]", $playerinfo['character_name'], $l_chm_hewasdestroyedbyyourmines);
         $l_chm_hewasdestroyedbyyourmines = str_replace("[chm_sector]", $sector, $l_chm_hewasdestroyedbyyourmines);
         message_defence_owner($db, $sector, $l_chm_hewasdestroyedbyyourmines);
         echo $l_chm_yourshiphasbeendestroyed . "<br><br>";
         // Survival
         if ($playerinfo['dev_escapepod'] == "Y") {
             $rating = round($playerinfo['rating'] / 2);
             echo $l_chm_luckescapepod . "<br><br>";
             $resx = $db->Execute("UPDATE {$db->prefix}ships SET hull=0, engines=0, power=0, sensors=0, computer=0, beams=0, torp_launchers=0, torps=0, armor=0, armor_pts=100, cloak=0, shields=0, sector=0, ship_organics=0, ship_ore=0, ship_goods=0, ship_energy=?, ship_colonists=0, ship_fighters=100, dev_warpedit=0, dev_genesis=0, dev_beacon=0, dev_emerwarp=0, dev_escapepod='N', dev_fuelscoop='N', dev_minedeflector=0, on_planet='N', rating=?, cleared_defences=' ', dev_lssd='N' WHERE ship_id=?;", array($start_energy, $rating, $playerinfo['ship_id']));
             db_op_result($db, $resx, __LINE__, __FILE__, $db_logging);
             cancel_bounty($db, $playerinfo['ship_id']);
         } else {
             // Or die!
             cancel_bounty($db, $playerinfo['ship_id']);
             db_kill_player($playerinfo['ship_id']);
示例#30
0
$timedt = array();
$timedata = get_game_time($timedt);
page_header("Logging Out");
$result = $db->Execute("SELECT * FROM {$dbtables['chiefs']} WHERE clanid ='{$_SESSION['clanid']}'");
$playerinfo = $result->fields;
if ($_SESSION['delete'] == '1') {
    $title = "Clan Deleted";
    bigtitle();
    echo "Clan {$playerinfo['clanid']} successfully deleted.<BR>";
    $month = $timedata['month'];
    $year = $timedata['year'];
    $data = "Chief Committed Suicide {$_SESSION['clanid']} FROM {$ip}";
    playerlog($_SESSION['current_unit'], $_SESSION['clanid'], 'SUICIDE', $month['count'], $year['count'], $data, $dbtables);
    adminlog('SUICIDE', $data);
    //var_dump($timedata);
    $_SESSION = array();
    session_destroy();
    TEXT_GOTOLOGIN();
} else {
    //playerlog($playerinfo[clanid], LOG_LOGOUT, $ip);
    $month = $timedata['month'];
    $year = $timedata['year'];
    $data = "Logged out at " . date("Y-m-d H:i:s") . " from IP {$ip}";
    playerlog($_SESSION['current_unit'], $_SESSION['clanid'], 'LOGOUT', $month['count'], $year['count'], $data, $dbtables);
    //var_dump($timedata);
    $_SESSION = array();
    session_destroy();
    bigtitle();
    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=index.php\">";
}
page_footer();