Version 1.7b

This commit is contained in:
nemunaire 2008-11-04 12:00:00 +01:00
commit 8a8280758b
716 changed files with 4361 additions and 33524 deletions

806
onyx/hb_game/Class/JSON.php Normal file
View file

@ -0,0 +1,806 @@
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
* Converts to and from JSON format.
*
* JSON (JavaScript Object Notation) is a lightweight data-interchange
* format. It is easy for humans to read and write. It is easy for machines
* to parse and generate. It is based on a subset of the JavaScript
* Programming Language, Standard ECMA-262 3rd Edition - December 1999.
* This feature can also be found in Python. JSON is a text format that is
* completely language independent but uses conventions that are familiar
* to programmers of the C-family of languages, including C, C++, C#, Java,
* JavaScript, Perl, TCL, and many others. These properties make JSON an
* ideal data-interchange language.
*
* This package provides a simple encoder and decoder for JSON notation. It
* is intended for use with client-side Javascript applications that make
* use of HTTPRequest to perform server communication functions - data can
* be encoded into JSON notation for use in a client-side javascript, or
* decoded from incoming Javascript requests. JSON format is native to
* Javascript, and can be directly eval()'ed with no further parsing
* overhead
*
* All strings should be in ASCII or UTF-8 format!
*
* LICENSE: Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met: Redistributions of source code must retain the
* above copyright notice, this list of conditions and the following
* disclaimer. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
* DAMAGE.
*
* @category
* @package Services_JSON
* @author Michal Migurski <mike-json@teczno.com>
* @author Matt Knapp <mdknapp[at]gmail[dot]com>
* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
* @copyright 2005 Michal Migurski
* @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
* @license http://www.opensource.org/licenses/bsd-license.php
* @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
*/
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_SLICE', 1);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_STR', 2);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_ARR', 3);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_OBJ', 4);
/**
* Marker constant for Services_JSON::decode(), used to flag stack state
*/
define('SERVICES_JSON_IN_CMT', 5);
/**
* Behavior switch for Services_JSON::decode()
*/
define('SERVICES_JSON_LOOSE_TYPE', 16);
/**
* Behavior switch for Services_JSON::decode()
*/
define('SERVICES_JSON_SUPPRESS_ERRORS', 32);
/**
* Converts to and from JSON format.
*
* Brief example of use:
*
* <code>
* // create a new instance of Services_JSON
* $json = new Services_JSON();
*
* // convert a complexe value to JSON notation, and send it to the browser
* $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
* $output = $json->encode($value);
*
* print($output);
* // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
*
* // accept incoming POST data, assumed to be in JSON notation
* $input = file_get_contents('php://input', 1000000);
* $value = $json->decode($input);
* </code>
*/
class Services_JSON
{
/**
* constructs a new JSON instance
*
* @param int $use object behavior flags; combine with boolean-OR
*
* possible values:
* - SERVICES_JSON_LOOSE_TYPE: loose typing.
* "{...}" syntax creates associative arrays
* instead of objects in decode().
* - SERVICES_JSON_SUPPRESS_ERRORS: error suppression.
* Values which can't be encoded (e.g. resources)
* appear as NULL instead of throwing errors.
* By default, a deeply-nested resource will
* bubble up with an error, so all return values
* from encode() should be checked with isError()
*/
function Services_JSON($use = 0)
{
$this->use = $use;
}
/**
* convert a string from one UTF-16 char to one UTF-8 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf16 UTF-16 character
* @return string UTF-8 character
* @access private
*/
function utf162utf8($utf16)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
}
$bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
switch(true) {
case ((0x7F & $bytes) == $bytes):
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x7F & $bytes);
case (0x07FF & $bytes) == $bytes:
// return a 2-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xC0 | (($bytes >> 6) & 0x1F))
. chr(0x80 | ($bytes & 0x3F));
case (0xFFFF & $bytes) == $bytes:
// return a 3-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xE0 | (($bytes >> 12) & 0x0F))
. chr(0x80 | (($bytes >> 6) & 0x3F))
. chr(0x80 | ($bytes & 0x3F));
}
// ignoring UTF-32 for now, sorry
return '';
}
/**
* convert a string from one UTF-8 char to one UTF-16 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf8 UTF-8 character
* @return string UTF-16 character
* @access private
*/
function utf82utf16($utf8)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
}
switch(strlen($utf8)) {
case 1:
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return $utf8;
case 2:
// return a UTF-16 character from a 2-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x07 & (ord($utf8{0}) >> 2))
. chr((0xC0 & (ord($utf8{0}) << 6))
| (0x3F & ord($utf8{1})));
case 3:
// return a UTF-16 character from a 3-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr((0xF0 & (ord($utf8{0}) << 4))
| (0x0F & (ord($utf8{1}) >> 2)))
. chr((0xC0 & (ord($utf8{1}) << 6))
| (0x7F & ord($utf8{2})));
}
// ignoring UTF-32 for now, sorry
return '';
}
/**
* encodes an arbitrary variable into JSON format
*
* @param mixed $var any number, boolean, string, array, or object to be encoded.
* see argument 1 to Services_JSON() above for array-parsing behavior.
* if var is a strng, note that encode() always expects it
* to be in ASCII or UTF-8 format!
*
* @return mixed JSON string representation of input var or an error if a problem occurs
* @access public
*/
function encode($var)
{
switch (gettype($var)) {
case 'boolean':
return $var ? 'true' : 'false';
case 'NULL':
return 'null';
case 'integer':
return (int) $var;
case 'double':
case 'float':
return (float) $var;
case 'string':
// STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
$ascii = '';
$strlen_var = strlen($var);
/*
* Iterate over every character in the string,
* escaping with a slash or encoding to UTF-8 where necessary
*/
for ($c = 0; $c < $strlen_var; ++$c) {
$ord_var_c = ord($var{$c});
switch (true) {
case $ord_var_c == 0x08:
$ascii .= '\b';
break;
case $ord_var_c == 0x09:
$ascii .= '\t';
break;
case $ord_var_c == 0x0A:
$ascii .= '\n';
break;
case $ord_var_c == 0x0C:
$ascii .= '\f';
break;
case $ord_var_c == 0x0D:
$ascii .= '\r';
break;
case $ord_var_c == 0x22:
case $ord_var_c == 0x2F:
case $ord_var_c == 0x5C:
// double quote, slash, slosh
$ascii .= '\\'.$var{$c};
break;
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
// characters U-00000000 - U-0000007F (same as ASCII)
$ascii .= $var{$c};
break;
case (($ord_var_c & 0xE0) == 0xC0):
// characters U-00000080 - U-000007FF, mask 110XXXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
$c += 1;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xF0) == 0xE0):
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}));
$c += 2;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xF8) == 0xF0):
// characters U-00010000 - U-001FFFFF, mask 11110XXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}));
$c += 3;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xFC) == 0xF8):
// characters U-00200000 - U-03FFFFFF, mask 111110XX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}),
ord($var{$c + 4}));
$c += 4;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xFE) == 0xFC):
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}),
ord($var{$c + 4}),
ord($var{$c + 5}));
$c += 5;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
}
}
return '"'.$ascii.'"';
case 'array':
/*
* As per JSON spec if any array key is not an integer
* we must treat the the whole array as an object. We
* also try to catch a sparsely populated associative
* array with numeric keys here because some JS engines
* will create an array with empty indexes up to
* max_index which can cause memory issues and because
* the keys, which may be relevant, will be remapped
* otherwise.
*
* As per the ECMA and JSON specification an object may
* have any string as a property. Unfortunately due to
* a hole in the ECMA specification if the key is a
* ECMA reserved word or starts with a digit the
* parameter is only accessible using ECMAScript's
* bracket notation.
*/
// treat as a JSON object
if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
$properties = array_map(array($this, 'name_value'),
array_keys($var),
array_values($var));
foreach($properties as $property) {
if(Services_JSON::isError($property)) {
return $property;
}
}
return '{' . join(',', $properties) . '}';
}
// treat it like a regular array
$elements = array_map(array($this, 'encode'), $var);
foreach($elements as $element) {
if(Services_JSON::isError($element)) {
return $element;
}
}
return '[' . join(',', $elements) . ']';
case 'object':
$vars = get_object_vars($var);
$properties = array_map(array($this, 'name_value'),
array_keys($vars),
array_values($vars));
foreach($properties as $property) {
if(Services_JSON::isError($property)) {
return $property;
}
}
return '{' . join(',', $properties) . '}';
default:
return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
? 'null'
: new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
}
}
/**
* array-walking function for use in generating JSON-formatted name-value pairs
*
* @param string $name name of key to use
* @param mixed $value reference to an array element to be encoded
*
* @return string JSON-formatted name-value pair, like '"name":value'
* @access private
*/
function name_value($name, $value)
{
$encoded_value = $this->encode($value);
if(Services_JSON::isError($encoded_value)) {
return $encoded_value;
}
return $this->encode(strval($name)) . ':' . $encoded_value;
}
/**
* reduce a string by removing leading and trailing comments and whitespace
*
* @param $str string string value to strip of comments and whitespace
*
* @return string string value stripped of comments and whitespace
* @access private
*/
function reduce_string($str)
{
$str = preg_replace(array(
// eliminate single line comments in '// ...' form
'#^\s*//(.+)$#m',
// eliminate multi-line comments in '/* ... */' form, at start of string
'#^\s*/\*(.+)\*/#Us',
// eliminate multi-line comments in '/* ... */' form, at end of string
'#/\*(.+)\*/\s*$#Us'
), '', $str);
// eliminate extraneous space
return trim($str);
}
/**
* decodes a JSON string into appropriate variable
*
* @param string $str JSON-formatted string
*
* @return mixed number, boolean, string, array, or object
* corresponding to given JSON input string.
* See argument 1 to Services_JSON() above for object-output behavior.
* Note that decode() always returns strings
* in ASCII or UTF-8 format!
* @access public
*/
function decode($str)
{
$str = $this->reduce_string($str);
switch (strtolower($str)) {
case 'true':
return true;
case 'false':
return false;
case 'null':
return null;
default:
$m = array();
if (is_numeric($str)) {
// Lookie-loo, it's a number
// This would work on its own, but I'm trying to be
// good about returning integers where appropriate:
// return (float)$str;
// Return float or int, as appropriate
return ((float)$str == (integer)$str)
? (integer)$str
: (float)$str;
} elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
// STRINGS RETURNED IN UTF-8 FORMAT
$delim = substr($str, 0, 1);
$chrs = substr($str, 1, -1);
$utf8 = '';
$strlen_chrs = strlen($chrs);
for ($c = 0; $c < $strlen_chrs; ++$c) {
$substr_chrs_c_2 = substr($chrs, $c, 2);
$ord_chrs_c = ord($chrs{$c});
switch (true) {
case $substr_chrs_c_2 == '\b':
$utf8 .= chr(0x08);
++$c;
break;
case $substr_chrs_c_2 == '\t':
$utf8 .= chr(0x09);
++$c;
break;
case $substr_chrs_c_2 == '\n':
$utf8 .= chr(0x0A);
++$c;
break;
case $substr_chrs_c_2 == '\f':
$utf8 .= chr(0x0C);
++$c;
break;
case $substr_chrs_c_2 == '\r':
$utf8 .= chr(0x0D);
++$c;
break;
case $substr_chrs_c_2 == '\\"':
case $substr_chrs_c_2 == '\\\'':
case $substr_chrs_c_2 == '\\\\':
case $substr_chrs_c_2 == '\\/':
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
($delim == "'" && $substr_chrs_c_2 != '\\"')) {
$utf8 .= $chrs{++$c};
}
break;
case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
// single, escaped unicode character
$utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
. chr(hexdec(substr($chrs, ($c + 4), 2)));
$utf8 .= $this->utf162utf8($utf16);
$c += 5;
break;
case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
$utf8 .= $chrs{$c};
break;
case ($ord_chrs_c & 0xE0) == 0xC0:
// characters U-00000080 - U-000007FF, mask 110XXXXX
//see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 2);
++$c;
break;
case ($ord_chrs_c & 0xF0) == 0xE0:
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 3);
$c += 2;
break;
case ($ord_chrs_c & 0xF8) == 0xF0:
// characters U-00010000 - U-001FFFFF, mask 11110XXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 4);
$c += 3;
break;
case ($ord_chrs_c & 0xFC) == 0xF8:
// characters U-00200000 - U-03FFFFFF, mask 111110XX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 5);
$c += 4;
break;
case ($ord_chrs_c & 0xFE) == 0xFC:
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 6);
$c += 5;
break;
}
}
return $utf8;
} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
// array, or object notation
if ($str{0} == '[') {
$stk = array(SERVICES_JSON_IN_ARR);
$arr = array();
} else {
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$stk = array(SERVICES_JSON_IN_OBJ);
$obj = array();
} else {
$stk = array(SERVICES_JSON_IN_OBJ);
$obj = new stdClass();
}
}
array_push($stk, array('what' => SERVICES_JSON_SLICE,
'where' => 0,
'delim' => false));
$chrs = substr($str, 1, -1);
$chrs = $this->reduce_string($chrs);
if ($chrs == '') {
if (reset($stk) == SERVICES_JSON_IN_ARR) {
return $arr;
} else {
return $obj;
}
}
//print("\nparsing {$chrs}\n");
$strlen_chrs = strlen($chrs);
for ($c = 0; $c <= $strlen_chrs; ++$c) {
$top = end($stk);
$substr_chrs_c_2 = substr($chrs, $c, 2);
if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
// found a comma that is not inside a string, array, etc.,
// OR we've reached the end of the character list
$slice = substr($chrs, $top['where'], ($c - $top['where']));
array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
//print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
if (reset($stk) == SERVICES_JSON_IN_ARR) {
// we are in an array, so just push an element onto the stack
array_push($arr, $this->decode($slice));
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
// we are in an object, so figure
// out the property name and set an
// element in an associative array,
// for now
$parts = array();
if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
// "name":value pair
$key = $this->decode($parts[1]);
$val = $this->decode($parts[2]);
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
} else {
$obj->$key = $val;
}
} elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
// name:value pair, where name is unquoted
$key = $parts[1];
$val = $this->decode($parts[2]);
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
} else {
$obj->$key = $val;
}
}
}
} elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
// found a quote, and we are not inside a string
array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
//print("Found start of string at {$c}\n");
} elseif (($chrs{$c} == $top['delim']) &&
($top['what'] == SERVICES_JSON_IN_STR) &&
((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
// found a quote, we're in a string, and it's not escaped
// we know that it's not escaped becase there is _not_ an
// odd number of backslashes at the end of the string so far
array_pop($stk);
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
} elseif (($chrs{$c} == '[') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-bracket, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
//print("Found start of array at {$c}\n");
} elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
// found a right-bracket, and we're in an array
array_pop($stk);
//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
} elseif (($chrs{$c} == '{') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-brace, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
//print("Found start of object at {$c}\n");
} elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
// found a right-brace, and we're in an object
array_pop($stk);
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
} elseif (($substr_chrs_c_2 == '/*') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a comment start, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
$c++;
//print("Found start of comment at {$c}\n");
} elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
// found a comment end, and we're in one now
array_pop($stk);
$c++;
for ($i = $top['where']; $i <= $c; ++$i)
$chrs = substr_replace($chrs, ' ', $i, 1);
//print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
}
}
if (reset($stk) == SERVICES_JSON_IN_ARR) {
return $arr;
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
return $obj;
}
}
}
}
/**
* @todo Ultimately, this should just call PEAR::isError()
*/
function isError($data, $code = null)
{
if (class_exists('pear')) {
return PEAR::isError($data, $code);
} elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
is_subclass_of($data, 'services_json_error'))) {
return true;
}
return false;
}
}
if (class_exists('PEAR_Error')) {
class Services_JSON_Error extends PEAR_Error
{
function Services_JSON_Error($message = 'unknown error', $code = null,
$mode = null, $options = null, $userinfo = null)
{
parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
}
}
} else {
/**
* @todo Ultimately, this class shall be descended from PEAR_Error
*/
class Services_JSON_Error
{
function Services_JSON_Error($message = 'unknown error', $code = null,
$mode = null, $options = null, $userinfo = null)
{
}
}
}
?>

View file

@ -0,0 +1,430 @@
<?php
/***************************************************************************
* class.combat.php
* -------------------
* begin : Samedi 26 janvier 2008
* update : Samedi 12 mai 2008
* email : nemunaire@gmail.com
*
*
***************************************************************************/
class Combat {
var $refflotte = 0;
var $ATvais = array();
var $ENvais = array();
var $ENdef = array();
var $Ntour = 0;
var $ATtactique = 0;
var $ENtactique = 0;
var $timestamp = 0;
var $vaisContenu = 0;
var $vaisContenuM = 0;
var $vaisContenuC = 0;
var $vaisContenuH = 0;
var $pillage = array(0, 0, 0);
var $debriM = 0;
var $debriC = 0;
/**
* Constructeur
* @param array $flotteAT tableau SQL des vaisseaux envoyés par l'attaquant
* @param array $flotteEN tableau SQL de la planète du défenseur
* @param array $defEN tableau SQL de la planète du défenseur
*
* @return void
* @access public
*/
function Combat($flotteAT, $flotteEN, $defEN) {
include(_FCORE."hb_game/vars.php");
//Génération des vaisseaux attaquants
for ($i=1 ; $i<=12 ; $i++) {
if ($flotteAT['vaisseau_'.$i] >= 1) {
//Création des groupes
$nbvais = $flotteAT['vaisseau_'.$i];
$nbgroupes = floor(sqrt(ceil($nbvais/10)));
$nbvaispgroupe = floor($nbvais/$nbgroupes);
$nbrest = $nbvais - $nbvaispgroupe * $nbgroupes;
if (isset($groupe)) unset($groupe);
$groupe = array();
for ($j=0 ; $j < $nbgroupes ; $j++) {
if ($j == 0) $groupe[] = array($nbvaispgroupe + $nbrest, $nomvais_bc[$i-1], $nomvais_pv[$i-1]);
else $groupe[] = array($nbvaispgroupe, $nomvais_bc[$i-1], $nomvais_pv[$i-1]);
}
$this->ATvais[] = array($i, $flotteAT['vaisseau_'.$i], $nbgroupes, $groupe);
}
}
//Définition d'autres variables de la classe concernant la flotte
$this->refflotte = $flotteAT['id'];
$this->vaisContenu = $flotteAT['contenu_max'];
$this->vaisContenuM = $flotteAT['contenu_metal'];
$this->vaisContenuC = $flotteAT['contenu_cristal'];
$this->vaisContenuH = $flotteAT['contenu_hydrogene'];
$this->timestamp = $flotteAT['start_time'] + $flotteAT['end_time'];
//Génération des vaisseaux défenseurs
for ($i=1 ; $i<=12 ; $i++) {
if ($flotteEN['vaisseau_'.$i] >= 1) {
//Création des groupes
$nbvais = $flotteEN['vaisseau_'.$i];
$nbgroupes = floor(sqrt(ceil($nbvais/10)));
$nbvaispgroupe = floor($nbvais/$nbgroupes);
$nbrest = $nbvais - $nbvaispgroupe * $nbgroupes;
if (isset($groupe)) unset($groupe);
$groupe = array();
for ($j=0 ; $j < $nbgroupes ; $j++) {
if ($j == 0) $groupe[] = array($nbvaispgroupe + $nbrest, $nomvais_bc[$i-1], $nomvais_pv[$i-1]);
else $groupe[] = array($nbvaispgroupe, $nomvais_bc[$i-1], $nomvais_pv[$i-1]);
}
$this->ENvais[] = array($i, $flotteEN['vaisseau_'.$i], $nbgroupes, $groupe);
}
}
//Génération des défenses défenseurs
for ($i=1 ; $i<=5 ; $i++) {
if ($defEN['def_'.$i] >= 1) {
//Création des groupes
$nbvais = $defEN['def_'.$i];
$nbgroupes = floor(sqrt(ceil($nbvais/10)));
$nbvaispgroupe = floor($nbvais/$nbgroupes);
$nbrest = $nbvais - $nbvaispgroupe * $nbgroupes;
if (isset($groupe)) unset($groupe);
$groupe = array();
for ($j=0 ; $j < $nbgroupes ; $j++) {
if ($j == 0) $groupe[] = array($nbvaispgroupe + $nbrest, $defense_bc[$i-1], $defense_pv[$i-1]);
else $groupe[] = array($nbvaispgroupe, $defense_bc[$i-1], $defense_pv[$i-1]);
}
$this->ENdef[] = array($i, $defEN['def_'.$i], $nbgroupes, $groupe);
}
}
}
/**
* Change la tactique de l'attaquant
* @param int $tactique numéro de la tactique choisie
*
* @return void
* @access public
*/
function changerTactiqueAT($tactique) {
$this->ATtactique = ceil($tactique);
}
/**
* Change la tactique du défenseur
* @param int $tactique numéro de la tactique choisie
*
* @return void
* @access public
*/
function changerTactiqueEN($tactique) {
$this->ENtactique = ceil($tactique);
}
/**
* Régénére les boucliers
* @param int $pourcentage pourcentage de régénération
* @param bool $attaquant régénére le bouclier de l'attaquant si true, sinon régénrére celui du défenseur
* @param bool $retour si true, renvoie true ou false si !le pourcentage a été consommé ou non, si false, retrourne ne nombre de pourcentage restant
*
* @return float pourcentage non utilisé
* @access public
*/
function regenereBC($pourcentage, $attaquant, $retour = false) {
include(_FCORE."hb_game/vars.php");
if ($attaquant) {
$count = count($this->ATvais);
$enplus = 0;
$norm = 0;
for ($i=0 ; $i<$count ; $i++) {
$type = $this->ATvais[$i][0]-1;
$maxbc = $nomvais_bc[$type];
$ajout = $maxbc*$pourcentage/100;
$cntbc = count($this->ATvais[$i][3]);
for ($j=0 ; $j<$cntbc ; $j++) {
$norm += $maxbc * $this->ATvais[$i][3][$j][0];
if ($this->ATvais[$i][3][$j][1] < $maxbc) {
$this->ATvais[$i][3][$j][1] += $ajout;
}
else $enplus += $ajout * $this->ATvais[$i][3][$j][0];
if ($this->ATvais[$i][3][$j][1] > $maxbc) {
$enplus += ($this->ATvais[$i][3][$j][1] - $maxbc)*$this->ATvais[$i][3][$j][0];
$this->ATvais[$i][3][$j][1] = $maxbc;
}
}
}
if ($retour) {
if($enplus/$norm == 1) return $pourcentage;
else return false;
}
else return $enplus/$norm;
}
else {
$count = count($this->ENvais);
$enplus = 0;
$norm = 0;
for ($i=0 ; $i<$count ; $i++) {
$type = $this->ENvais[$i][0]-1;
$maxbc = $nomvais_bc[$type];
$ajout = $maxbc*$pourcentage/100;
$cntbc = count($this->ENvais[$i][3]);
for ($j=0 ; $j<$cntbc ; $j++) {
$norm += $maxbc * $this->ENvais[$i][3][$j][0];
if ($this->ENvais[$i][3][$j][1] < $maxbc) {
$this->ENvais[$i][3][$j][1] += $ajout;
}
else $enplus += $ajout * $this->ENvais[$i][3][$j][0];
if ($this->ENvais[$i][3][$j][1] > $maxbc) {
$enplus += ($this->ENvais[$i][3][$j][1] - $maxbc)*$this->ENvais[$i][3][$j][0];
$this->ENvais[$i][3][$j][1] = $maxbc;
}
}
}
$return = $enplus/$norm;
//Défenses
$count = count($this->ENdef);
$enplus = 0;
$norm = 0;
for ($i=0 ; $i<$count ; $i++) {
$type = $this->ENdef[$i][0]-1;
$maxbc = $defense_bc[$type];
$ajout = $maxbc*$pourcentage/100;
$cntbc = count($this->ENdef[$i][3]);
for ($j=0 ; $j<$cntbc ; $j++) {
$norm += $maxbc * $this->ENdef[$i][3][$j][0];
if ($this->ENdef[$i][3][$j][1] < $maxbc) {
$this->ENdef[$i][3][$j][1] += $ajout;
}
else $enplus += $ajout * $this->ENdef[$i][3][$j][0];
if ($this->ENdef[$i][3][$j][1] > $maxbc) {
$enplus += ($this->ENdef[$i][3][$j][1] - $maxbc)*$this->ENdef[$i][3][$j][0];
$this->ENdef[$i][3][$j][1] = $maxbc;
}
}
}
$return += $enplus/$norm;
if ($retour) {
if($enplus/$norm == 1) return $pourcentage;
else return false;
}
else return $return/2;
}
}
/**
* Calcul la puissance d'attaque disponible
* @param int $pourcentage pourcentage de régénération
* @param bool $attaquant calcul les points de l'attaquant si true, sinon calcul pour le défenseur
*
* @return int points disponibles
* @access public
*/
function calcAttaque($pourcentage, $attaquant) {
include(_FCORE."hb_game/vars.php");
if ($attaquant) {
$puissance = 0;
$count = count($this->ATvais);
for ($i=0 ; $i<$count ; $i++) {
$maxat = $nomvais_at[$this->ATvais[$i][0]-1];
$puissance += $maxat * $pourcentage/100 * $this->ATvais[$i][1];
}
return $puissance;
}
else {
$puissance = 0;
$count = count($this->ENvais);
for ($i=0 ; $i<$count ; $i++) {
$maxat = $nomvais_at[$this->ENvais[$i][0]-1];
$puissance += $maxat * $pourcentage/100 * $this->ENvais[$i][1];
}
//Défenses
$count = count($this->ENdef);
for ($i=0 ; $i<$count ; $i++) {
$maxat = $defense_at[$this->ENdef[$i][0]-1];
$puissance += $maxat * $pourcentage/100 * $this->ENdef[$i][1];
}
return $puissance;
}
}
/**
* Attaque les vaisseaux adverses
* @param int $points points d'attaque disponible pour l'attaque
* @param bool $attaquant attaque le défenseur si true, sinon attaque l'attaquant
*
* @return void
* @access public
*/
function attaquerVais($points, $attaquant) {
include(_FCORE."hb_game/vars.php");
if ($attaquant) {
while($points > 0) {
// Calcul du nombre de vaisseaux et défenses à attaquer
$nbvais = 0;
$nbgroupes = 0;
$nb = count($this->ENvais);
for ($i=0 ; $i<$nb ; $i++) {
$nbvais += $this->ENvais[$i][1];
$nbgroupes += $this->ENvais[$i][2];
}
$nb = count($this->ENdef);
for ($i=0 ; $i<$nb ; $i++) {
$nbvais += $this->ENdef[$i][1];
$nbgroupes += $this->ENdef[$i][2];
}
//S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle
if ($nbvais <= 0 || $nbgroupes <= 0 || $points <= 0) break;
//Calcul du nombre de points qui sera enlevé par vaisseau ou défense
$ppv = $points / $nbvais;
$points = 0;
//On lance l'attaque contre les vaisseaux
for ($j=0 ; $j<$nbgroupes ; $j++){
$k = rand(0, count($this->ENvais)-1);
$l = rand(0, count($this->ENvais[$k][3])-1);
$this->ENvais[$k][3][$l][1] -= $ppv;
if ($this->ENvais[$k][3][$l][1] < 0) {
$this->ENvais[$k][3][$l][2] -= abs($this->ENvais[$k][3][$l][1]);
$this->ENvais[$k][3][$l][1] = 0;
if ($this->ENvais[$k][3][$l][2] <= 0) {
$this->debriM += $this->ENvais[$k][3][$l][0] * $nomvais_md[$this->ENvais[$k][0]];
$this->debriC += $this->ENvais[$k][3][$l][0] * $nomvais_cd[$this->ENvais[$k][0]];
$this->ENvais[$k][1] -= $this->ENvais[$k][3][$l][0];
$this->ENvais[$k][2] --;
array_splice($this->ENvais[$k][3], $l, 1);
if (!count($this->ENvais[$k][3])) {
array_splice($this->ENvais, $k, 1);
}
}
}
}
//On lance l'attaque contre les défenses
for ($j=0 ; $j<$nbgroupes ; $j++){
$k = rand(0, count($this->ENdef)-1);
$l = rand(0, count($this->ENdef[$k][3])-1);
$this->ENdef[$k][3][$l][1] -= $ppv;
if ($this->ENdef[$k][3][$l][1] < 0) {
$this->ENdef[$k][3][$l][2] -= abs($this->ENdef[$k][3][$l][1]);
$this->ENdef[$k][3][$l][1] = 0;
if ($this->ENdef[$k][3][$l][2] <= 0) {
$this->debriM += $this->ENdef[$k][3][$l][0] * $nomvais_md[$this->ENdef[$k][0]];
$this->debriC += $this->ENdef[$k][3][$l][0] * $nomvais_cd[$this->ENdef[$k][0]];
$this->ENdef[$k][1] -= $this->ENdef[$k][3][$l][0];
$this->ENdef[$k][2] --;
array_splice($this->ENdef[$k][3], $l, 1);
if (!count($this->ENdef[$k][3])) {
array_splice($this->ENdef, $k, 1);
}
}
}
}
}
return count($this->ENvais) + count($this->ENdef);
}
else {
while($points > 0) {
// Calcul du nombre de vaisseaux et défenses à attaquer
$nbvais = 0;
$nbgroupes = 0;
$nb = count($this->ATvais);
for ($i=0 ; $i<$nb ; $i++) {
$nbvais += $this->ATvais[$i][1];
$nbgroupes += $this->ATvais[$i][2];
}
//S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle
if ($nbvais <= 0 || $nbgroupes <= 0 || $points <= 0) break;
//Calcul du nombre de points qui sera enlevé par vaisseau ou défense
$ppv = $points / $nbvais;
$points = 0;
//On lance l'attaque
for ($j=0 ; $j<$nbgroupes ; $j++){
$k = rand(0, count($this->ATvais)-1);
$l = rand(0, count($this->ATvais[$k][3])-1);
$this->ATvais[$k][3][$l][1] -= $ppv;
if ($this->ATvais[$k][3][$l][1] < 0) {
$this->ATvais[$k][3][$l][2] -= abs($this->ATvais[$k][3][$l][1]);
$this->ATvais[$k][3][$l][1] = 0;
if ($this->ATvais[$k][3][$l][2] <= 0) {
$this->debriM += $this->ATvais[$k][3][$l][0] * $nomvais_md[$this->ATvais[$k][0]];
$this->debriC += $this->ATvais[$k][3][$l][0] * $nomvais_cd[$this->ATvais[$k][0]];
$this->ATvais[$k][1] -= $this->ATvais[$k][3][$l][0];
$this->ATvais[$k][2] --;
array_splice($this->ATvais[$k][3], $l, 1);
if (!count($this->ATvais[$k][3])) {
array_splice($this->ATvais, $k, 1);
}
}
}
}
}
return count($this->ATvais);
}
}
function exportAT($pillage = false){
include(_FCORE."hb_game/vars.php");
$nb = count($this->ATvais);
$nbvais = 0; $vaisContenu = 0; $vaisseau_1 = 0; $vaisseau_2 = 0; $vaisseau_3 = 0; $vaisseau_4 = 0; $vaisseau_5 = 0; $vaisseau_6 = 0; $vaisseau_7 = 0; $vaisseau_8 = 0; $vaisseau_9 = 0; $vaisseau_10 = 0; $vaisseau_11 = 0; $vaisseau_12 = 0;
for($i=0 ; $i<$nb ; $i++) {
${'vaisseau_'.$this->ATvais[$i][0]} += $this->ATvais[$i][1];
$nbvais += $this->ATvais[$i][1];
$this->vaisContenu += $nomvais_rs[$this->ATvais[$i][0]-1];
}
$sommeCont = $this->vaisContenuM + $this->vaisContenuC + $this->vaisContenuH;
if ($sommeCont > $this->vaisContenu) {
$retirer = $sommeCont/$this->vaisContenu;
$this->vaisContenuM = floor($this->vaisContenuM/$retirer);
$this->vaisContenuC = floor($this->vaisContenuC/$retirer);
$this->vaisContenuH = floor($this->vaisContenuH/$retirer);
}
if ($pillage) {
$ressplus = pillage($this->ENvais['metal'], $this->ENvais['cristal'], $this->ENvais['hydrogene'], $this->vaisContenu - $this->vaisContenuM - $this->vaisContenuC - $this->vaisContenuH);
$this->vaisContenuM += $ressplus[0];
$this->vaisContenuC += $ressplus[1];
$this->vaisContenuH += $ressplus[2];
$this->pillage = array($ressplus[0], $ressplus[1], $ressplus[2]);
}
return '`nb_vais` = \''.$nbvais.'\', `contenu_max` = \''.$this->vaisContenu.'\', `contenu_metal` = \''.$this->vaisContenuM.'\', `contenu_cristal` = \''.$this->vaisContenuC.'\', `contenu_hydrogene` = \''.$this->vaisContenuH.'\', `vaisseau_1` = \''.$vaisseau_1.'\', `vaisseau_2` = \''.$vaisseau_2.'\', `vaisseau_3` = \''.$vaisseau_3.'\', `vaisseau_4` = \''.$vaisseau_4.'\', `vaisseau_5` = \''.$vaisseau_5.'\', `vaisseau_6` = \''.$vaisseau_6.'\', `vaisseau_7` = \''.$vaisseau_7.'\', `vaisseau_8` = \''.$vaisseau_8.'\', `vaisseau_9` = \''.$vaisseau_9.'\', `vaisseau_10` = \''.$vaisseau_10.'\', `vaisseau_11` = \''.$vaisseau_11.'\', `vaisseau_12` = \''.$vaisseau_12.'\'';
}
function pillageSimul($metal, $cristal, $hydrogene){
$ressplus = pillage($metal, $cristal, $hydrogene, 999999);
$this->pillage = array($ressplus[0], $ressplus[1], $ressplus[2]);
}
function exportEN(){
$nb = count($this->ENvais);
$vaisseau_1 = 0; $vaisseau_2 = 0; $vaisseau_3 = 0; $vaisseau_4 = 0; $vaisseau_5 = 0; $vaisseau_6 = 0; $vaisseau_7 = 0; $vaisseau_8 = 0; $vaisseau_9 = 0; $vaisseau_10 = 0; $vaisseau_11 = 0; $vaisseau_12 = 0;
for($i=0 ; $i<$nb ; $i++) {
${'vaisseau_'.$this->ENvais[$i][0]} += $this->ENvais[$i][1];
}
$nb = count($this->ENdef);
$def_1 = 0; $def_2 = 0; $def_3 = 0; $def_4 = 0; $def_5 = 0;
for($i=0 ; $i<$nb ; $i++) {
${'def_'.$this->ENdef[$i][0]} += $this->ENdef[$i][1];
}
return '`vaisseau_1` = \''.$vaisseau_1.'\', `vaisseau_2` = \''.$vaisseau_2.'\', `vaisseau_3` = \''.$vaisseau_3.'\', `vaisseau_4` = \''.$vaisseau_4.'\', `vaisseau_5` = \''.$vaisseau_5.'\', `vaisseau_6` = \''.$vaisseau_6.'\', `vaisseau_7` = \''.$vaisseau_7.'\', `vaisseau_8` = \''.$vaisseau_8.'\', `vaisseau_9` = \''.$vaisseau_9.'\', `vaisseau_10` = \''.$vaisseau_10.'\', `vaisseau_11` = \''.$vaisseau_11.'\', `vaisseau_12` = \''.$vaisseau_12.'\', `def_1` = \''.$def_1.'\', `def_2` = \''.$def_2.'\', `def_3` = \''.$def_3.'\', `def_4` = \''.$def_4.'\', `def_5` = \''.$def_5.'\'';
}
}
?>

View file

@ -0,0 +1,95 @@
<?php
class gererFile {
var $file = array();
var $chaine = false;
var $timestamp = 0;
var $limite = 0;
function gererFile($limite) {
$this->limite = $limite;
}
function addObjet($objet,$nombre,$temps) {
$this->file = array_merge($this->file);
$nbF = count($this->file);
if ($nbF >= $this->limite) return false;
$this->chaine = false;
if($nbF == 0) $this->timestamp = time();
if($nbF > 0 && $this->file[$nbF-1][0] == $objet) $this->file[$nbF-1][1] += $nombre;
else $this->file[] = array($objet, $nombre, $temps);
return true;
}
function existe($objet) {
$this->file = array_merge($this->file);
$nbF=count($this->file);
for ($i=0 ; $i<$nbF ; $i++){
if($objet == $this->file[$i][0]) return true;
}
return false;
}
function delobjet($objet, $nombre=1) {
$this->file = array_merge($this->file);
for($i = count($this->file)-1; $i >= 0; $i--) {
if($this->file[$i][0] == $objet){
$nombre = min($nombre, $this->file[$i][1]);
$this->file[$i][1] -= $nombre;
if($this->file[$i][1] <= 0) {
unset($this->file[$i]);
$this->file = array_merge($this->file);
}
break;
}
if ($i == 1) $this->timestamp = time();
}
return $nombre;
}
function pret() {
$this->file = array_merge($this->file);
$out = array();
$nbF = count($this->file);
if ($nbF == 1 && $this->chaine) {
$nb = floor((time()-$this->timestamp)/$this->file[0][2]);
if ($nb > 0) {
$out[] = array($this->file[0][0], $nb);
$this->timestamp += $nb * $this->file[0][2];
}
}
elseif ($nbF != 0) {
$this->file = array_merge($this->file);
for($i=0 ; $i<$nbF ; $i++){
$tps = time() - $this->timestamp;
if($this->file[$i][1] * $this->file[$i][2] < $tps) {
$out[] = array($this->file[$i][0], $this->file[$i][1]);
$this->timestamp += $this->file[$i][1] * $this->file[$i][2];
unset($this->file[$i]);
}
elseif ($this->file[$i][2] < $tps) {
for($j=0 ; $j*$this->file[$i][2]<$tps ; $j++) {}
$j--;
$out[] = array($this->file[$i][0], $j);
$this->timestamp += $j * $this->file[$i][2];
$this->file[$i][1] -= $j;
break;
}
else {
return $out;
}
}
$this->file = array_merge($this->file);
}
return $out;
}
function export(){
$nbF = count($this->file);
$out = '';
for($i=0;$i<$nbF;$i++){
$out .= implode(',',$this->file[$i]).';';
}
return $out;
}
}
?>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,355 @@
<?php
/**
* Class Rapport
*
* Génération et envoie de rapport de mission de flotte
*
*/
class Rapport{
var $type = 0;
var $var = array();
var $utilA = 0;
var $utilB = 0;
var $timestamp = 0;
var $basededonnes;
/**
* Constructor
* @access protected
*/
function Rapport($type, $utilA, $utilB, $time){
$this->type = $type;
$this->utilA = $utilA;
$this->utilB = $utilB;
$this->timestamp = $time;
$this->basededonnes = new bdd();
}
function addInfo($info, $id){
$this->var[$id] = $info;
}
function send(){
if ($this->type == '1') $this->sendCombat();
elseif ($this->type == '2') $this->sendTransport();
elseif ($this->type == '3') $this->sendColonisation();
elseif ($this->type == '4') $this->sendRecyclage();
elseif ($this->type == '5') $this->sendEspionnage();
elseif ($this->type == '6') $this->sendAlliance();
elseif ($this->type == '7') $this->sendAlliance2();
}
function sendEspionnage(){
global $config;
include_once(_FCORE."hb_game/function.php");
$titreA = 'Rapport d\'espionnage de '.$this->var[0]['nom_planete'].' ['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']';
$rapportA = '<b>Espionnage de '.trouvNom($this->utilB).' sur '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']</b><br /><br />';
$race = trouvInfo($this->utilB, 'race');
$auth_level = 0;
include(_FCORE."hb_game/noms.php");
include(_FCORE."hb_game/vars.php");
if (isset($this->var[1]) && $this->var[1] == false) $rapportA .= '<i>Nos sondes n\'ont pas pu récolter d\'information sur cette planète.</i>';
else {
$rapportA .= '<table style="margin: auto;"><tr><th colspan="2">Ressources sur la planète :</th></tr><tr><td>Métal :</td><td>'.$this->var[0]['metal'].'</td></tr><tr><td>Cristal :</td><td>'.$this->var[0]['cristal'].'</td></tr><tr><td>Hydrogène :</td><td>'.$this->var[0]['hydrogene'].'</td></tr></table><br />';
if (isset($this->var[1]) && $this->var[1] == true) {
$rapportA .= '<table style="margin: auto;"><tr><th>Nombre</th><th>Vaisseaux</th></tr>';
$nbvais = count($nomvaisn);
for($i=1 ; $i<$nbvais ; $i++) {
if ($this->var[0]['vaisseau_'.$i] >= 1) $rapportA .= '<tr><td>'.$this->var[0]['vaisseau_'.$i].'</td><td>'.$nomvaisn[$i-1].'</td></tr>';
}
$rapportA .= '</table><br />';
}
if (isset($this->var[2]) && $this->var[2] == true) {
$rapportA .= '<table style="margin: auto;"><tr><th>Nombre</th><th>Défenses</th></tr>';
$nbdef = count($nomterrn) - 7;
for($i=1 ; $i<$nbdef ; $i++) {
if ($this->var[0]['def_'.$i] >= 1) $rapportA .= '<tr><td>'.$this->var[0]['def_'.$i].'</td><td>'.$nomterrn[$i+7].'</td></tr>';
}
$rapportA .= '</table><br />';
}
if (isset($this->var[3]) && $this->var[3] == true) {
$rapportA .= '<table style="margin: auto;"><tr><th>Niveau</th><th>Batiment</th></tr>';
$nbbat = count($batiment);
for($i=1 ; $i<$nbbat ; $i++) {
if ($this->var[0][$batimentVAR[$i-1]] >= 1) $rapportA .= '<tr><td>'.$this->var[0][$batimentVAR[$i-1]].'</td><td>'.$batiment[$i-1].'</td></tr>';
}
$rapportA .= '</table><br />';
}
if (isset($this->var[4]) && is_array($this->var[4])) {
$rapportA .= '<table style="margin: auto;"><tr><th>Niveau</th><th>Technologie</th></tr>';
$nbtec = count($technolo);
for($i=1 ; $i<$nbtec ; $i++) {
if ($this->var[4][$technoloVAR[$i-1]] >= 1) $rapportA .= '<tr><td>'.$this->var[4][$technoloVAR[$i-1]].'</td><td>'.$technolo[$i-1].'</td></tr>';
}
$rapportA .= '</table><br />';
}
if (isset($this->var[5]) && is_array($this->var[5])) {
//ISOLEMENT
}
}
$titreB = 'Rapport de contre-espionnage';
$rapportB = 'Nous vennons d\'apprendre que notre planète : '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].'] a été la cible d\'un espionnage de la part de '.trouvNom($this->utilA);
$temps = $this->timestamp;
$db = new bdd();
$db->connexion();
$db->escape($titreA);
$db->escape($titreB);
$db->escape($rapportA);
$db->escape($rapportB);
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titreA', '$rapportA', '$temps')");
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilB)."', '', '$titreB', '$rapportB', '$temps')");
$db->deconnexion();
}
function sendTransport(){
global $config;
include_once(_FCORE."hb_game/function.php");
$titre = 'Transport vers '.$this->var[0]['nom_planete'].' ['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']';
$race = trouvInfo($this->utilA, 'race');
include(_FCORE."hb_game/noms.php");
$rapportA = 'Vos vaisseaux ont déposé '.$this->var[1][0].' de '.$ressourc[0].', '.$this->var[1][1].' de '.$ressourc[1].' et '.$this->var[1][2].' d\''.$ressourc[2].' sur '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']</b><br /><br />';
$race = trouvInfo($this->utilB, 'race');
include(_FCORE."hb_game/noms.php");
$rapportB = 'Les vaisseaux de '.trouvNom($this->utilA).' ont déposé '.$this->var[1][0].' de '.$ressourc[0].', '.$this->var[1][1].' de '.$ressourc[1].' et '.$this->var[1][2].' d\''.$ressourc[2].' sur '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']</b><br /><br />';
$temps = $this->timestamp;
$db = new bdd();
$db->connexion();
$db->escape($titre);
$db->escape($rapportA);
$db->escape($rapportB);
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titre', '$rapportA', '$temps')");
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilB)."', '', '$titre', '$rapportB', '$temps')");
$db->deconnexion();
}
function sendColonisation(){
include_once(_FCORE."hb_game/function.php");
$titre = 'Colonisation de ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].']';
if ($this->var[1]) $rapport = 'Votre vaisseau a atteint la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] et commence la colonisation.';
else $rapport = 'Nous n\'avons pas pu coloniser la planète ['.$this->var[0][0].':'.$this->var[0][1].':'.$this->var[0][2].'] car lorsque nous sommes arrivé sur place, elle était déjà colonisée.';
$temps = $this->timestamp;
$db = new bdd();
$db->connexion();
$db->escape($titre);
$db->escape($rapport);
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titre', '$rapport', '$temps')");
$db->deconnexion();
}
function sendRecyclage(){
include_once(_FCORE."hb_game/function.php");
$titre = 'Recyclage de '.$this->var[0]['nom_planete'].' ['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']';
$rapport = 'Vos vaisseaux récoltent '.$this->var[1][0].' de '.$ressourc[0].' et '.$this->var[1][1].' de '.$ressourc[1].' sur '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']</b><br /><br />';
$temps = $this->timestamp;
$db = new bdd();
$db->connexion();
$db->escape($titre);
$db->escape($rapport);
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titre', '$rapport', '$temps')");
$db->deconnexion();
}
function sendCombat(){
include(_FCORE."hb_game/vars.php");
include_once(_FCORE."hb_game/function.php");
require_once(SMARTY_DIR."Smarty.class.php");
$rapportA = new Smarty();
$rapportB = new Smarty();
$rapportA->template_dir = _FCORE.'templates/templates/';
$rapportA->compile_dir = _FCORE.'templates/templates_c/';
$rapportA->config_dir = _FCORE.'templates/configs/';
$rapportA->cache_dir = _FCORE.'templates/cache/';
$rapportB->template_dir = _FCORE.'templates/templates/';
$rapportB->compile_dir = _FCORE.'templates/templates_c/';
$rapportB->config_dir = _FCORE.'templates/configs/';
$rapportB->cache_dir = _FCORE.'templates/cache/';
$this->var[4]['pseudo'] = trouvNom($this->var[4]['id_user']);
$this->var[5]['pseudo'] = trouvNom($this->var[5]['id_user']);
$rapportA->assign('tour', $this->var[3]);
$rapportA->assign('EN', $this->var[4]);
$rapportA->assign('flotte', $this->var[5]);
$rapportA->assign('vaisseaux1', $this->var[0]);
$rapportA->assign('vaisseaux2', $this->var[1]);
$rapportA->assign('defenses1', $this->var[2]);
$rapportA->assign('vaisseaux3', $this->var[7]);
$rapportA->assign('vaisseaux4', $this->var[8]);
$rapportA->assign('defenses2', $this->var[9]);
$rapportA->assign('termine', $this->var[6][0]);
$rapportA->assign('attaquantG', $this->var[6][1]);
$rapportA->assign('pillage', $this->var[11]);
$rapportA->assign('vaisBC', $nomvais_bc);
$rapportA->assign('vaisPV', $nomvais_pv);
$rapportA->assign('defBC', $defense_bc);
$rapportA->assign('defPV', $defense_pv);
$rapportA->assign('nextTour', $this->var[10]);
$race = trouvInfo($this->utilA, 'race');
include(_FCORE."hb_game/noms.php");
$rapportA->assign('ressources', $ressourc);
$rapportA->assign('nomvaisAT', $nomvaisa);
$race = trouvInfo($this->var[4]['id_user'], 'race');
include(_FCORE."hb_game/noms.php");
$rapportA->assign('nomvaisEN', $nomvaisa);
array_splice($nomterra, 0, 8);
$rapportA->assign('nomdefEN', $nomterra);
$rapportA = $rapportA->fetch('game/ATrapport_combat.tpl');
$rapportB->assign('tour', $this->var[3]);
$rapportB->assign('EN', $this->var[4]);
$rapportB->assign('flotte', $this->var[5]);
$rapportB->assign('vaisseaux1', $this->var[0]);
$rapportB->assign('vaisseaux2', $this->var[1]);
$rapportB->assign('defenses1', $this->var[2]);
$rapportB->assign('vaisseaux3', $this->var[7]);
$rapportB->assign('vaisseaux4', $this->var[8]);
$rapportB->assign('defenses2', $this->var[9]);
$rapportB->assign('termine', $this->var[6][0]);
$rapportB->assign('attaquantG', $this->var[6][1]);
$rapportB->assign('pillage', $this->var[11]);
$rapportB->assign('vaisBC', $nomvais_bc);
$rapportB->assign('vaisPV', $nomvais_pv);
$rapportB->assign('defBC', $defense_bc);
$rapportB->assign('defPV', $defense_pv);
$rapportB->assign('nextTour', $this->var[10]);
$race = trouvInfo($this->utilA, 'race');
include(_FCORE."hb_game/noms.php");
$rapportB->assign('ressources', $ressourc);
$rapportB->assign('nomvaisAT', $nomvaisa);
$race = trouvInfo($this->var[4]['id_user'], 'race');
include(_FCORE."hb_game/noms.php");
$rapportB->assign('nomvaisEN', $nomvaisa);
array_splice($nomterra, 0, 8);
$rapportB->assign('nomdefEN', $nomterra);
$rapportB = $rapportB->fetch('game/ENrapport_combat.tpl');
$titreA = 'Combat contre '.$this->var[4]['pseudo'];
$titreB = 'Combat contre '.$this->var[5]['pseudo'];
$temps = $this->timestamp;
$db = new bdd();
$db->connexion();
$db->escape($titreA);
$db->escape($titreB);
$db->escape($rapportA);
$db->escape($rapportB);
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titreA', '$rapportA', '$temps')");
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilB)."', '', '$titreB', '$rapportB', '$temps')");
$db->deconnexion();
}
function show(){
include(_FCORE."hb_game/vars.php");
include_once(_FCORE."hb_game/function.php");
require_once(SMARTY_DIR."Smarty.class.php");
$rapportA = new Smarty();
$rapportA->template_dir = _FCORE.'templates/templates/';
$rapportA->compile_dir = _FCORE.'templates/templates_c/';
$rapportA->config_dir = _FCORE.'templates/configs/';
$rapportA->cache_dir = _FCORE.'templates/cache/';
$rapportA->assign('tour', $this->var[3]);
$rapportA->assign('EN', $this->var[4]);
$rapportA->assign('flotte', $this->var[5]);
$rapportA->assign('vaisseaux1', $this->var[0]);
$rapportA->assign('vaisseaux2', $this->var[1]);
$rapportA->assign('defenses1', $this->var[2]);
$rapportA->assign('vaisseaux3', $this->var[7]);
$rapportA->assign('vaisseaux4', $this->var[8]);
$rapportA->assign('defenses2', $this->var[9]);
$rapportA->assign('termine', $this->var[6][0]);
$rapportA->assign('attaquantG', $this->var[6][1]);
$rapportA->assign('pillage', $this->var[11]);
$rapportA->assign('debris', $this->var[12]);
$rapportA->assign('infoPLUS', $this->var[14]);
$rapportA->assign('infoPLUS2', $this->var[15]);
$rapportA->assign('page', 'simulation');
$rapportA->assign('enligne', $this->var[13][0]);
$rapportA->assign('infos', $this->var[13][1]);
$rapportA->assign('nbinfos', $this->var[13][2]);
$rapportA->assign('count', $this->var[13][3]);
$rapportA->assign('version', $this->var[13][4]);
$rapportA->assign('tpsdejeu', $this->var[13][5]);
$rapportA->assign('vaisBC', $nomvais_bc);
$rapportA->assign('vaisPV', $nomvais_pv);
$rapportA->assign('defBC', $defense_bc);
$rapportA->assign('defPV', $defense_pv);
$rapportA->assign('nextTour', $this->var[10]);
$race = trouvInfo($this->utilA, 'race');
include(_FCORE."hb_game/noms.php");
$rapportA->assign('ressources', $ressourc);
$rapportA->assign('nomvaisAT', $nomvaisa);
$rapportA->assign('nomvaisEN', $nomvaisa);
array_splice($nomterra, 0, 8);
$rapportA->assign('nomdefEN', $nomterra);
$rapportA->assign('race', $race);
return $rapportA->fetch('game/SIMrapport_combat.tpl');
return $rapportA;
}
function sendAlliance(){
include_once(_FCORE."hb_game/function.php");
$titreA = 'Déclaration officielle de votre alliance !';
$rapportA = 'Félicitations, votre alliance a recueilli suffisament de signature, sa déclaration est maintenant officielle !<br /><br />Vous pouvez dès maintenant administrer votre alliance en vous rendant sur la page Alliance.';
$temps = $this->timestamp;
$db = new bdd();
$db->connexion();
$db->escape($titreA);
$db->escape($rapportA);
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titreA', '$rapportA', '$temps')");
$db->deconnexion();
}
function sendAlliance2(){
include_once(_FCORE."hb_game/function.php");
$titreA = 'Fondation de votre alliance !';
$rapportA = 'Pour terminer la création de votre alliance, trouvez 4 joueurs de cette galaxie sans alliance pour leur faire signer votre traité de fondation d\'alliance.<br /><br />Lien de signature : <a href="?p=alliances&amp;q=signer&amp;i='.$this->var[0].'">http://'.$_SERVER['HTTP_HOST'].'/?p=alliances&amp;q=signer&amp;i='.$this->var[0].'</a>';
$temps = $this->timestamp;
$db = new bdd();
$db->connexion();
$db->escape($titreA);
$db->escape($rapportA);
$db->query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titreA', '$rapportA', '$temps')");
$db->deconnexion();
}
}
?>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,23 @@
<?php
/**
* PHPMailer language file.
* English Version
*/
$PHPMAILER_LANG = array();
$PHPMAILER_LANG["provide_address"] = 'You must provide at least one ' .
'recipient email address.';
$PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.';
$PHPMAILER_LANG["execute"] = 'Could not execute: ';
$PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.';
$PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.';
$PHPMAILER_LANG["from_failed"] = 'The following From address failed: ';
$PHPMAILER_LANG["recipients_failed"] = 'Erreur SMTP: The following ' .
'recipients failed: ';
$PHPMAILER_LANG["data_not_accepted"] = 'Erreur SMTP: Données non acceptées.';
$PHPMAILER_LANG["connect_host"] = 'Erreur SMTP: Impossible de se connecter au serveur de mail.';
$PHPMAILER_LANG["file_access"] = 'Accès au fichier impossible: ';
$PHPMAILER_LANG["file_open"] = 'File Error: Ne peut ouvrir le fichier: ';
$PHPMAILER_LANG["encoding"] = 'Type d\'encodage inconnu : ';
?>

View file

@ -0,0 +1,6 @@
<?php
// Script by Keiran
/* info pagination */
$nombreDestatsParPage = 30; // nombre d'users affichés sur la page
?>

View file

@ -0,0 +1,284 @@
<?php
//Script by Keiran
function techno1( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$cristal += ceil(pow(2,$n)*500);
$hydrogene += ceil(pow(2,$n)*150);
$n++;
}
$ressources = $cristal + $hydrogene;
return $ressources;
}
function techno2( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*500);
$cristal += ceil(pow(2,$n)*750);
$hydrogene += ceil(pow(2,$n)*100);
$n++;
}
$ressources = $cristal + $metal + $hydrogene;
return $ressources;
}
function techno3( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*2500);
$cristal += ceil(pow(2,$n)*500);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
function techno4( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*4000);
$cristal += ceil(pow(2,$n)*1500);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
function techno5( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*2000);
$cristal += ceil(pow(2,$n)*1500);
$hydrogene += ceil(pow(2,$n)*300);
$n++;
}
$ressources = $cristal + $metal + $hydrogene;
return $ressources;
}
function techno6( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*1400);
$cristal += ceil(pow(2,$n)*400);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
function techno7( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*3000);
$cristal += ceil(pow(2,$n)*2100);
$hydrogene += ceil(pow(2,$n)*750);
$n++;
}
$ressources = $cristal + $metal + $hydrogene;
return $ressources;
}
function techno8( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*5000);
$cristal += ceil(pow(2,$n)*4000);
$hydrogene += ceil(pow(2,$n)*1500);
$n++;
}
$ressources = $cristal + $metal + $hydrogene;
return $ressources;
}
function techno9( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*800);
$cristal += ceil(pow(2,$n)*1000);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
function techno10( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*2600);
$cristal += ceil(pow(2,$n)*2600);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
function techno11( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(3,$n)*5200);
$cristal += ceil(pow(3,$n)*4250);
$hydrogene += ceil(pow(3,$n)*850);
$n++;
}
$ressources = $cristal + $metal + $hydrogene;
return $ressources;
}
// Batiment n°1 : Purificateur de métal/Générateur de Métal/Usine de métallurgie ; planete.mine_m
function batiment1( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(1.5,$n)*68);
$cristal += ceil(pow(1.5,$n)*17);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
// Batiment n°2 : Purificateur de cristal/Générateur de Cristal/Usine de cristal ; planete.mine_m
function batiment2( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(1.6,$n)*53);
$cristal += ceil(pow(1.6,$n)*27);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
// Batiment n°3 : Ionisateur/Générateur d'Hydrogène/Synchronisateur d'hydrogène ; planete.mine_h
function batiment3( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(1.5,$n)*242);
$cristal += ceil(pow(1.5,$n)*72);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
// Batiment n°4 : Centrale solaire/Générateur d'Energie/Centrale solaire ; planete.centrale_s
function batiment4( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(1.5,$n)*92);
$cristal += ceil(pow(1.5,$n)*37);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
// Batiment n°5 : Centrale de fusion/0/Centrale énergétique ; planete.centrale_f
function batiment5( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(1.73,$n)*800);
$cristal += ceil(pow(1.73,$n)*420);
$hydrogene += ceil(pow(1.68,$n)*285);
$n++;
}
$ressources = $cristal + $metal + $hydrogene;
return $ressources;
}
// Batiment n°6 : Oeil des prophètes/0/Base radar ; planete.centrale_f
function batiment6( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*750);
$cristal += ceil(pow(2,$n)*500);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
// Batiment n°7 : Centre de recherches/Centre de recherches/Centre de recherches ; planete.labo
function batiment7( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*200);
$cristal += ceil(pow(2,$n)*150);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
// Batiment n°8 : Chantier terrestre/Chantier terrestre/Chantier terrestre ; planete.chantier_terrestre
function batiment8( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*520);
$cristal += ceil(pow(2,$labo)*150);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
// Batiment n°9 : Chantier spatial/Chantier spatial/Chantier spatial ; planete.chantier_spatial
function batiment9( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*600);
$cristal += ceil(pow(2,$n)*450);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
// Batiment n°11 : Entrepôt/Entrepôt/Silo de stockage ; planete.silo
function batiment11( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(2,$n)*400);
$cristal += ceil(pow(2,$n)*260);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
// Batiment n°12 : Centrale informatique/0/Centrale informatique ; planete.centre_info
function batiment12( $nactuel ) {
$n = 0;
while( $n <= $nactuel ) {
$metal += ceil(pow(1.7,$n)*600);
$cristal += ceil(pow(1.7,$n)*420);
$hydrogene += ceil(pow(1.7,$n)*100);
$n++;
}
$ressources = $cristal + $metal;
return $ressources;
}
?>

View file

@ -0,0 +1,3 @@
</body>
</html>

View file

@ -0,0 +1,8 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>

View file

@ -0,0 +1,82 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
include_once(_FCORE."hb_game/Class/class.gerefile.php");
//Batiments
if (empty($queryPlanete['file_bat'])) $file = new gererFile($queryUser['prodfile']+2);
else $file = unserialize($queryPlanete['file_bat']);
$cons = $file->pret();
$nbc = count($cons);
$outB = "";
for($i=0 ; $i<$nbc ; $i++) {
$var = $batimentVAR[$cons[$i][0]];
$nb = $queryPlanete[$var] + $cons[$i][1];
if ($i != 0) $outB .= ", ";
$outB .= "$var = '$nb'";
}
$exportB = serialize($file);
//Technologies
if (empty($queryPlanete['file_tech'])) $file = new gererFile($queryUser['prodfile']+2);
else $file = unserialize($queryPlanete['file_tech']);
$cons = $file->pret();
$nbc = count($cons);
$outT = "";
for($i=0 ; $i<$nbc ; $i++) {
$var = $technoloVAR[$cons[$i][0]];
$nb = $queryUser[$var] + $cons[$i][1];
if ($i != 0) $outT .= ", ";
$outT .= "$var = '$nb'";
}
$exportT = serialize($file);
//Vaisseaux
if (empty($queryPlanete['file_vais'])) $file = new gererFile($queryUser['prodfile']+2);
else $file = unserialize($queryPlanete['file_vais']);
$cons = $file->pret();
$nbc = count($cons);
$outV = "";
for($i=0 ; $i<$nbc ; $i++) {
$var = $nomvaisnVAR[$cons[$i][0]];
$nb = $cons[$i][1];
if ($i != 0) $outV .= ", ";
$outV .= "$var = $var + '$nb'";
}
$exportV = serialize($file);
//Terrestre & défenses
if (empty($queryPlanete['file_ter'])) $file = new gererFile($queryUser['prodfile']+2);
else $file = unserialize($queryPlanete['file_ter']);
$cons = $file->pret();
$nbc = count($cons);
$outD = "";
for($i=0 ; $i<$nbc ; $i++) {
$var = $nomterrnVAR[$cons[$i][0]];
$nb = $cons[$i][1];
if ($i != 0) $outD .= ", ";
$outD .= "$var = $var + '$nb'";
}
$exportD = serialize($file);
$bdd->connexion();
$bdd->escape($exportB);
$bdd->escape($exportT);
$bdd->escape($exportV);
$bdd->escape($exportD);
if (!empty($outB)) {
$bdd->query("UPDATE $table_planete SET $outB, file_bat = '$exportB' WHERE id = '$idPlan';");
}
if (!empty($outT)) {
$bdd->query("UPDATE $table_user SET $outT WHERE id = '$id_user';");
$bdd->query("UPDATE $table_planete SET file_tech = '$exportT' WHERE id = '$idPlan';");
}
if (!empty($outV)) $bdd->query("UPDATE $table_planete SET $outV, file_vais = '$exportV' WHERE id = '$idPlan';");
if (!empty($out)) $bdd->query("UPDATE $table_planete SET $outD, file_ter = '$exportD' WHERE id = '$idPlan';");
$bdd->deconnexion();
?>

View file

@ -0,0 +1,17 @@
<?php
if ($config['stnb'] && (!isset($sess->values['auth_level']) || $sess->values['auth_level'] < 8)) {
if ($config['stnb'] == '1') {
$titre = 'Serveur en maintenance';
$contenu = 'Nous effectuons actuellement des opérations de maintenance sur le serveur, il est indisponible durant '.($config['dureestnb']/60).' minutes.<br /><br />Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire l\'<a href="'.$config['link']['accueil'].'" class="lien">annonce officielle de cette maintenance sur le forum du jeu</a>.<br /><br />Merci de votre compréhension';
}
elseif ($config['stnb'] == '2') {
$titre = 'Serveur en maintenance';
$contenu = 'Nous effectuons actuellement des opérations de maintenance sur le serveur, il est indisponible durant '.($config['dureestnb']/60).' minutes.<br /><br />Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire la <a href="'.$config['link']['accueil'].'" class="lien">HB Weekly Update sur le forum du jeu</a>.<br /><br />Merci de votre compréhension';
}
$template->assign('titre', $titre);
$template->assign('texte', $contenu);
$template->display('cms/maj.tpl');
exit;
}
?>

313
onyx/hb_game/flottes.php Normal file
View file

@ -0,0 +1,313 @@
<?php
set_time_limit(0);
/* ! ATTENTION ! NE PAS FAIRE DE REFERENCE A UNE DONNEE DU FICHIER BDD.PHP OU
* DE L'UTILISATEUR COURANT CAR LE SCRIPT EST LANCE PAR L'ATTAQUANT ET PAR
* L'ATTAQUé.
*/
require_once(_FCORE."hb_game/Class/class.rapport.php");
function resteVaisseau($tableau){
$ct = count($tableau);
for ($i = 0; $i < $ct; $i++) {
if (!empty($tableau[$i])) return true;
}
return false;
}
$Hgalaxie = $queryPlanete["galaxie"];
$Hss = $queryPlanete["ss"];
$Hposition = $queryPlanete["position"];
$bdd->connexion();
$queryFlottes = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user' OR (end_galaxie = '$Hgalaxie' AND end_ss = '$Hss' AND end_position = '$Hposition');");
$bdd->deconnexion();
$nbFlottes = $bdd->num_rows;
for ($i = 0; $i < $nbFlottes; $i++) {
//Récupération des principales variables de la flotte
$id_flotte = $queryFlottes[$i]['id'];
$mission = $queryFlottes[$i]['mission'];
$end_galaxie = $queryFlottes[$i]['end_galaxie'];
$end_ss = $queryFlottes[$i]['end_ss'];
$end_position = $queryFlottes[$i]['end_position'];
$end_time = $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'];
//On vérifie que la planète cible existe
$bdd->connexion();
if ($mission != 3 && !$queryEN = $bdd->unique_query("SELECT id FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';")) {
$bdd->query("UPDATE $table_flottes SET effectue = '1' WHERE id = '$id_flotte';");
//TODO La planète cible n'existe plus/pas, envoyer un mail au joueur et retourner la flotte
continue;
}
$bdd->deconnexion();
$ENidPlan = $queryEN['id'];
//La flotte est prête a effectuer une action
if ($queryFlottes[$i]['effectue'] != 1 && time() >= $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] && !empty($queryFlottes[$i]['end_time'])) {
//Mission Attaquer
if ($mission == 1) {
$bdd->connexion();
require_once(_FCORE."hb_game/Class/class.combat.php");
//On regarde si le combat a déjà commencé
if ($queryFlottes[$i]['effectue'] == 2) {
//On modifie le timestamp pour ne pas que le combat se déroule deux fois
//$bdd->query("UPDATE $table_flottes_combats SET timestamp = '".(time()+10)."' WHERE refflotte = '$id_flotte';");
if ($queryCombat = $bdd->unique_query("SELECT * FROM $table_flottes_combats WHERE refflotte = '$id_flotte';")) {
//On vérifie si on lance le tour suivant ou non
if (time() >= $queryCombat['timestamp']) {
//Récupération du combat
$combat = unserialize($queryCombat['serialize']);
//Mise à jour des tactiques
if (!empty($queryCombat['tactiqueAT'])) $combat->changerTactiqueAT($queryCombat['tactiqueAT']);
if (!empty($queryCombat['tactiqueEN'])) $combat->changerTactiqueEN($queryCombat['tactiqueEN']);
}
else continue;
}
else {
$time = time();
$bdd->query("UPDATE $table_flottes SET effectue = '1', ret_time = end_time + $time WHERE id = '$id_flotte';");
file_log("Erreur dans le script de combat, la flotte de ".trouvNom($queryFlottes[$i]['id_user'])."(".$queryFlottes[$i]['id_user'].") a été renvoyé au point de départ.", 1);
}
}
else {
//On génére un nouveau combat
$combat = new Combat($queryFlottes[$i], $queryEN, $queryEN);
$bdd->query("UPDATE $table_flottes SET effectue = '2' WHERE id = '$id_flotte';");
}
while($combat->timestamp <= time()) {
//Préparation du rapport
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $combat->timestamp);
$combat->Ntour++;
$rapport->addInfo($combat->ATvais, 0);
$rapport->addInfo($combat->ENvais, 1);
$rapport->addInfo($combat->ENdef, 2);
$rapport->addInfo($combat->Ntour, 3);
$rapport->addInfo($queryEN, 4);
$rapport->addInfo($queryFlottes[$i], 5);
//Détermine à qui est le tour : attaquant ou défenseur
if ($combat->Ntour%2) { //Tour impaire : tour attaquant
//Récupération des paramètres de la tactique
$arraytactique = tactique($combat->ATtactique);
//Lancement du combat, si condition validée, attaquant vainceur
if (@!$combat->attaquerVais($combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], true, !$arraytactique[3]), true), true)) {
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->query("UPDATE $table_flottes SET ".$combat->exportAT(true).", effectue = '1', ret_time = '".$combat->timestamp."' + end_time WHERE id = '$id_flotte';");
$bdd->query("UPDATE $table_planete SET ".$combat->exportEN().", metal = metal - '".$combat->pillage[0]."', cristal = cristal - '".$combat->pillage[1]."', hydrogene = hydrogene - '".$combat->pillage[2]."' WHERE id = '$ENidPlan';");
$rapport->addInfo(array(true, true), 6);
}
else $rapport->addInfo(array(false, false), 6);
}
else { //Tour impaire : tour défenseur
//Récupération des paramètres de la tactique
$arraytactique = tactique($combat->ENtactique);
//Lancement du combat, si condition validée, défenseur vainceur
if (@!$combat->attaquerVais($combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], false, !$arraytactique[3]), false), false)) {
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte';");
$bdd->query("UPDATE $table_planete SET ".$combat->exportEN()." WHERE id = '$ENidPlan';");
$rapport->addInfo(array(true, false), 6);
}
else $rapport->addInfo(array(false, false), 6);
}
$rapport->addInfo($combat->ATvais, 7);
$rapport->addInfo($combat->ENvais, 8);
$rapport->addInfo($combat->ENdef, 9);
//Prévision du prochain tour
$combat->timestamp += 300;
$rapport->addInfo($combat->timestamp, 10);
$rapport->addInfo($combat->pillage, 11);
//On envoie les rapports aux joueurs concernés
$rapport->send();
//On arrête la boucle si le combat est terminé
if ($rapport->var[6][0]) break;
}
$debriM = $combat->debriM + $queryEN['debris_met'];
$debriC = $combat->debriC + $queryEN['debris_cri'];
$combat->debriM = 0;
$combat->debriC = 0;
$bdd->query("UPDATE $table_planete SET debris_met = '$debriM', debris_cri = '$debriC' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
if (!$rapport->var[6][0]) { //Si le combat n'est pas terminé
//On sérialise la classe pour l'exporter
$serialise = serialize($combat);
//On enregistre le combat dans la base de données
if ($queryFlottes[$i]['effectue']) $bdd->query("UPDATE $table_flottes_combats SET serialize = '$serialise', tactiqueAT = '0', tactiqueEN = '0', timestamp = '".$combat->timestamp."' WHERE refflotte = '$id_flotte';");
else $bdd->query("INSERT INTO $table_flottes_combats VALUES(NULL, '".$queryFlottes[$i]['id']."', '".$combat->timestamp."', '$serialise', '0', '0');");
}
$bdd->deconnexion();
}
//Mission Transporter
elseif ($mission == 2) {
$bdd->connexion();
$bdd->query("UPDATE $table_planete SET metal = metal + '".$queryFlottes[$i]['contenu_metal']."', cristal = cristal + '".$queryFlottes[$i]['contenu_cristal']."', hydrogene = hydrogene + '".$queryFlottes[$i]['contenu_hydrogene']."' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
$bdd->query("UPDATE $table_flottes SET effectue = '1', contenu_metal = '0', contenu_cristal = '0', contenu_hydrogene = '0' WHERE id = '$id_flotte';");
$bdd->deconnexion();
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $end_time);
$rapport->addInfo($queryEN, 0);
$rapport->addInfo(array($queryFlottes[$i]['contenu_metal'], $queryFlottes[$i]['contenu_cristal'], $queryFlottes[$i]['contenu_hydrogene']), 1);
$rapport->send();
}
//Mission Coloniser
elseif ($mission == 3) {
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], 0, $end_time);
$rapport->addInfo(array($end_galaxie, $end_ss, $end_position), 0);
if ($queryEN) $rapport->addInfo(false, 1);
else {
$rapport->addInfo(true, 1);
$time = time();
$cases = mt_rand(125,222);
$image = mt_rand(1,15);
$Cmetal = $queryFlottes[$i]['contenu_metal'] + 1000;
$Ccristal = $queryFlottes[$i]['contenu_cristal'] + 700;
$Chydrogene = $queryFlottes[$i]['contenu_hydrogene'];
//Calcul de l'isolement
$nbPlan = count($queryPlanetes);
if ($nbPlan >= 11) {
switch($nbPlan){
case 11: $tps = 2; break;
case 12: $tps = 4; break;
case 13: $tps = 6; break;
case 14: $tps = 8; break;
case 15: $tps = 12; break;
case 16: $tps = 16; break;
case 17: $tps = 20; break;
default: $tps = 24;
}
}
else $tps = 0;
$debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y'));
$fin = $debut + $tps * 3600;
$bdd->connexion();
$bdd->query("INSERT INTO $table_planete (id_user, isolement, nom_planete, galaxie, ss, position, image, cases, timestamp, metal, cristal, hydrogene) VALUES ('".$queryFlottes[$i]['id_user']."', '$debut $fin', 'Planète colonisée', '$end_galaxie', '$end_ss', '$end_position', '$image', '$cases', '$time', '$Cmetal', '$Ccristal', '$Chydrogene');");
if ($queryFlottes[$i]['nb_vais'] == 1) {
$queryFlottes[$i]['nb_vais'] = -1;
$bdd->query("DELETE FROM $table_flottes WHERE id = '$id_flotte'");
}
else $bdd->query("UPDATE $table_flottes SET effectue = '1', vaisseau_3 = vaisseau_3 - 1, nb_vais = nb_vais - 1, contenu_metal = '0', contenu_cristal = '0', contenu_hydrogene = '0' WHERE id = '$id_flotte';");
$bdd->deconnexion();
}
$rapport->send();
}
//Mission Recycler
elseif ($mission == 4) {
$capacite = $queryFlottes[$i]['contenu_max'] - (vais_conso($queryFlottes[$i]['end_time'], count($queryFlottes[$i]['nb_vais']))*$queryFlottes[$i]['vitesse']*5) + $queryFlottes[$i]['contenu_metal'] + $queryFlottes[$i]['contenu_cristal'] + $queryFlottes[$i]['contenu_hydrogene'];
$debris_met = $queryEN['debris_met'];
$debris_cri = $queryEN['debris_cri'];
if ($debris_met+$debris_cri > $capacite) {
$a = floor($capacite/2);
$b = floor($capacite/2);
if ($a > $debris_met && $b > $debris_cri) {
$a = $debris_met;
$b = $debris_cri;
}
else if ($a > $debris_met) {
$a = $debris_met;
$b = ($capacite - $a);
if ($b > $debris_cri) $b = $debris_cri;
}
else if ($b > $debris_cri) {
$b = $debris_cri;
$a = ($capacite - $b);
if ($a > $debris_met) $a = $debris_met;
}
}
else {
$a = $debris_met;
$b = $debris_cri;
}
$Cmetal = $a + $queryFlottes[$i]['contenu_metal'];
$Ccristal = $b + $queryFlottes[$i]['contenu_cristal'];
$bdd->connexion();
$bdd->query("UPDATE $table_flottes SET effectue = '1', contenu_metal = '$Cmetal', contenu_cristal = '$Ccristal' WHERE id = '$id_flotte';");
$bdd->query("UPDATE $table_planete SET debris_met = debris_met - '$a', debris_cri = debris_cri - '$b' WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position';");
$bdd->deconnexion();
$rapport = new Rapport($mission, $queryFlottes[$i]['id_user'], $queryEN['id_user'], $end_time);
$rapport->addInfo($queryEN, 0);
$rapport->addInfo(array($a, $b), 1);
$rapport->send();
}
//Mission Espionnage
elseif ($mission == 5) {
$nbsondes = $queryFlottes[$i]['vaisseau_3'];
$id_userT = $queryEN['id_user'];
$id_att = $queryFlottes[$i]['id_user'];
$bdd->connexion();
$bdd->query("UPDATE $table_flottes SET effectue = '1' WHERE id = '$id_flotte';");
$resultatUD = $bdd->unique_query("SELECT * FROM $table_user WHERE id = '$id_userT';");
$resultatUA = $bdd->unique_query("SELECT * FROM $table_user WHERE id = '$id_att';");
$bdd->deconnexion();
$diffNiveau = $resultatUA['detection'] - $resultatUD['detection'] + floor($nbsondes/2);
$rapport = new Rapport($mission, $id_att, $id_userT, $end_time);
if ($diffNiveau < 0) {
$rapport->addInfo($resultatT, 0);
$rapport->addInfo(false, 1);
}
if ($diffNiveau >= 0) $rapport->addInfo($queryEN, 0);
if ($diffNiveau >= 1) $rapport->addInfo(true, 1);
if ($diffNiveau >= 2) $rapport->addInfo(true, 2);
if ($diffNiveau >= 3) $rapport->addInfo(true, 3);
if ($diffNiveau >= 4) $rapport->addInfo($resultatUD, 4);
if ($diffNiveau >= 5) $rapport->addInfo(true, 5);
$rapport->send();
}
}
//Si la flotte a terminé son retour
if (($queryFlottes[$i]['mission'] == 0 && $queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time'] <= time()) || ($queryFlottes[$i]['effectue'] == 1 && ((!empty($queryFlottes[$i]['ret_time']) && $queryFlottes[$i]['ret_time'] <= time()) || ($queryFlottes[$i]['start_time'] + $queryFlottes[$i]['end_time']*2 <= time())))) {
if ($queryFlottes[$i]['mission'] == 0) {
$fin_galaxie = $queryFlottes[$i]['end_galaxie'];
$fin_systeme = $queryFlottes[$i]['end_ss'];
$fin_potision = $queryFlottes[$i]['end_position'];
}
elseif (!empty($queryFlottes[$i]['ret_position'])) {
$fin_galaxie = $queryFlottes[$i]['ret_galaxie'];
$fin_systeme = $queryFlottes[$i]['ret_ss'];
$fin_potision = $queryFlottes[$i]['ret_position'];
}
else {
$fin_galaxie = $queryFlottes[$i]['start_galaxie'];
$fin_systeme = $queryFlottes[$i]['start_ss'];
$fin_potision = $queryFlottes[$i]['start_position'];
}
$bdd->connexion();
if ($bdd->unique_query("SELECT * FROM $table_planete galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';")) {
$export = '';
$nbvais = 12;
for($j = 1; $j <= $nbvais; $j++) {
$export .= ', vaisseau_'.$j.' = vaisseau_'.$j.' + '.$queryFlottes[$i]['vaisseau_'.$j];
}
$bdd->query("UPDATE $table_planete SET metal = metal + '".$queryFlottes[$i]['contenu_metal']."', cristal = cristal + '".$queryFlottes[$i]['contenu_cristal']."', hydrogene = hydrogene + '".$queryFlottes[$i]['contenu_hydrogene']."'$export WHERE galaxie = '$fin_galaxie' AND ss = '$fin_systeme' AND position = '$fin_potision';");
}
$bdd->query("DELETE FROM $table_flottes WHERE id_user = '".$queryFlottes[$i]['id_user']."' AND id = '$id_flotte';");
$bdd->query("DELETE FROM $table_flottes_combats WHERE refflotte = '$id_flotte';");
$bdd->deconnexion();
}
}
?>

185
onyx/hb_game/function.php Normal file
View file

@ -0,0 +1,185 @@
<?php
function trouvNom($id_user){
$base = new bdd();
$base->connexion();
$resultat = $base->unique_query("SELECT pseudo FROM user WHERE `id` = '$id_user'");
$base->deconnexion();
return $resultat['pseudo'];
}
function trouvInfo($id_user, $info){
$base = new bdd();
$base->connexion();
$resultat = $base->unique_query("SELECT `$info` FROM user WHERE `id` = '$id_user'");
$base->deconnexion();
return $resultat[$info];
}
function affTemp($secondes){
$heures = intval($secondes/3600);
$minutes = intval($secondes/60-($heures*60));
if ($minutes < 10) $minutes = '0'.$minutes;
$seconde = $secondes-($heures*3600)-($minutes*60);
if ($seconde < 10) $seconde = '0'.$seconde;
return $heures.':'.$minutes.':'.$seconde;
}
function separerNombres($nombre) {
return number_format($nombre, 0, ',', ' ');
}
function sec($time) {
$output = '';
$tab = array ('jour' => '86400', 'heure' => '3600', 'minute' => '60', 'seconde' => '1');
foreach ($tab as $key => $value) {
$compteur = 0;
while ($time > ($value-1)) {
$time = $time - $value;
$compteur++;
}
if ($compteur != 0) {
$output .= $compteur.' '.$key;
if ($compteur > 1) $output .= 's';
if ($value != 1) $output .= ' ';
}
}
return $output;
}
function readDeblok($tableau, $queryPlanete, $queryUser){
if ($tableau == '0') return 'Débloqué';
else {
$nbDeblok = count($tableau);
$return = '';
for ($i=0 ; $i<$nbDeblok ; $i++) {
if (isset($queryPlanete[$tableau[$i][1]])) $return .= techno($tableau[$i][0], $queryPlanete[$tableau[$i][1]], $tableau[$i][2]).'<br />';
else $return .= techno($tableau[$i][0], $queryUser[$tableau[$i][1]], $tableau[$i][2]).'<br />';
}
return $return;
}
}
function requestDeblok($tableau, $queryPlanete, $queryUser){
if ($tableau == '0') return true;
else {
$nbDeblok = count($tableau);
$return = true;
for ($i=0 ; $i<$nbDeblok ; $i++) {
if (isset($queryPlanete[$tableau[$i][1]]) && $queryPlanete[$tableau[$i][1]] < $tableau[$i][2]) $return = false;
elseif (isset($queryUser[$tableau[$i][1]]) && $queryUser[$tableau[$i][1]] < $tableau[$i][2]) $return = false;
}
return $return;
}
}
function techno($nom, $niveau, $niveau_ress) {
if (empty($niveau)) $niveau = 0;
if ($niveau < $niveau_ress) return '<span class="lack">'.$nom.' '.$niveau_ress.' ('.$niveau.')</span>';
else return ''.$nom.' '.$niveau_ress.' ('.$niveau.')';
}
function txtmission($mission){
if ($mission == 0) return 'Stationner';
elseif ($mission == 1) return 'Attaquer';
elseif ($mission == 2) return 'Transporter';
elseif ($mission == 3) return 'Coloniser';
elseif ($mission == 4) return 'Recycler';
elseif ($mission == 5) return 'Espionner';
elseif ($mission == 6) return 'Retour';
else return 'Erreur';
}
function txtTactique($tactique){
switch($tactique){
case 1: return '1'; break;
case 2: return '2'; break;
case 3: return '3'; break;
case 4: return '4'; break;
case 5: return '5'; break;
case 6: return '6'; break;
case 7: return '7'; break;
case 8: return '8'; break;
case 9: return '9'; break;
case 10: return '10'; break;
case 11: return '11'; break;
case 12: return '12'; break;
case 13: return '13'; break;
case 14: return '14'; break;
case 15: return '15'; break;
case 16: return '16'; break;
case 17: return '17'; break;
case 18: return '18'; break;
case 19: return '19'; break;
case 20: return '20'; break;
case 21: return '21'; break;
default: return 'autre'; break;
}
}
function tactique($tactique){
switch($tactique){
case 1: return array(1,0,100,false); break;
case 2: return array(2,88,12,false); break;
case 3: return array(3,75,25,false); break;
case 4: return array(4,63,37,false); break;
case 5: return array(5,50,50,false); break;
case 6: return array(6,37,63,false); break;
case 7: return array(7,25,75,false); break;
case 8: return array(8,12,88,false); break;
case 9: return array(9,12,88,true); break;
case 10: return array(10,25,75,true); break;
case 11: return array(11,37,63,true); break;
case 12: return array(12,50,50,true); break;
case 13: return array(13,63,37,true); break;
case 14: return array(14,75,25,true); break;
case 15: return array(15,75,26,true); break;
case 16: return array(16,75,27,true); break;
case 17: return array(17,75,28,true); break;
case 18: return array(18,75,29,true); break;
case 19: return array(19,75,30,true); break;
case 20: return array(20,75,31,true); break;
case 21: return array(21,75,32,true); break;
default: return array(1,0,100,false); break;
}
}
function pillage($metal, $cristal, $hydrogene, $vfm){
$Qm = $metal / $vfm;
$Qc = $cristal / $vfm;
$Qh = $hydrogene / $vfm;
$somme = $Qm + $Qc + $Qh;
if ($somme < 2) {
$Fm = $metal / 2;
$Fc = $cristal / 2;
$Fh = $hydrogene / 2;
}
else {
$Fm = $Qm / $somme * $vfm;
$Fc = $Qc / $somme * $vfm;
$Fh = $Qh / $somme * $vfm;
}
return array(floor($Fm), floor($Fc), floor($Fh));
}
function vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$end_galaxie,$end_ss,$end_position,$vitesse,$coefvitesse = 1,$preparation = 0,$chauffe = 0) {
if ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $end_position-$start_position == 0) $temps = 0;
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $chauffe == 0) $temps = $preparation+abs($end_position-$start_position)*$vitesse/12;
elseif ($end_galaxie-$start_galaxie == 0 && $chauffe == 0) $temps = $preparation+abs($end_ss-$start_ss)*$vitesse;
elseif ($chauffe == 0) $temps = $preparation+abs($end_galaxie-$start_galaxie)*$vitesse*300;
elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0) $temps = $preparation+abs($end_position-$start_position)*($vitesse*2)/12+$preparation;
/*elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss <= $chauffe) $temps = abs($end_ss-$start_ss)*(($vitesse/$chauffe)*($chauffe-abs($end_ss-$start_ss))+$vitesse)+$preparation;
elseif ($end_galaxie-$start_galaxie == 0) $temps = $vitesse*abs($end_ss-$start_ss)+$vitesse*10+$preparation;*/
elseif ($end_galaxie-$start_galaxie == 0) $temps = (abs($end_ss-$start_ss)*(($vitesse/$chauffe)*((abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)+$vitesse))+(20-(abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)*54+$preparation;
else $temps = (($vitesse/$chauffe)*($chauffe-abs($end_galaxie-$start_galaxie))+$vitesse)*300+108+$preparation;
return $temps/$coefvitesse;
}
function vais_conso($tempsDeplacement,$nbvais = 1){
return intval($tempsDeplacement*$nbvais/20);
}
?>

View file

@ -0,0 +1,45 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'accueil';
$titre = 'Accueil';
//On recherche si le joueur a des messages non lus
$pseudo = trouvNom($id_user);
$bdd->connexion();
$queryMail = $bdd->unique_query("SELECT COUNT(*) AS nbre FROM $table_mail WHERE destinataire = '$pseudo' AND vu = '1';");
//On regarde si le joueur a une attaque en vue
$attaquesRadar = array();
$nbPlan = count($queryPlanetes);
for($i = 0; $i < $nbPlan; $i++){
$end_galaxie = $queryPlanetes[$i]['galaxie'];
$end_ss = $queryPlanetes[$i]['ss'];
$end_position = $queryPlanetes[$i]['position'];
$resultatf = $bdd->query("SELECT * FROM $table_flottes WHERE mission = '1' AND end_galaxie = '$end_galaxie' AND end_ss = '$end_ss' AND end_position = '$end_position';");
$nbF = $bdd->num_rows;
for ($j = 0; $j < $nbF; $j++) {
$start_galaxie = $resultatf[$j]['start_galaxie'];
$start_ss = $resultatf[$j]['start_ss'];
$start_position = $resultatf[$j]['start_position'];
if ($resultatf[$j]['start_time'] + $resultatf[$j]['end_time'] < time() + $queryUser['detection']*1800) {
$resultatp = $bdd->unique_query("SELECT nom_planete FROM $table_planete WHERE galaxie = '$start_galaxie' AND ss = '$start_ss' AND position = '$start_position'");
$resultatpm = $bdd->unique_query("SELECT nom_planete FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_position'");
$attaquesRadar[] = array(htmlspecialchars($resultatp['nom_planete']), $resultatf[$j]['start_time']+$resultatf[$j]['end_time']-time()<0?'COMBAT EN COURS':affTemp($resultatf[$j]['start_time']+$resultatf[$j]['end_time']-time()), $resultatf[$j]['start_galaxie'], $resultatf[$j]['start_ss'], $resultatf[$j]['start_position'], htmlspecialchars($resultatpm['nom_planete']), $resultatf[$j]['end_galaxie'], $resultatf[$j]['end_ss'], $resultatf[$j]['end_position'], ($resultatf[$j]['start_time']+$resultatf[$j]['end_time']-time())<0?'':$resultatf[$j]['start_time']+$resultatf[$j]['end_time']-time());
}
}
}
//Affichage de l'alliance du joueur
$alli = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '".$queryUser['id_alliance']."';");
$bdd->deconnexion();
//Affichage des informations sur la planète
$diametre = separerNombres($queryPlanete['cases'] * 92);
$Classpoints = separerNombres($queryUser['points']);
$template->assign('mail', $queryMail);
$template->assign('attaques',$attaquesRadar);
$template->assign('diametre',$diametre);
$template->assign('points',$Classpoints);
$template->assign('alliance', $alli);
?>

View file

@ -0,0 +1,38 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'print';
$titre = 'Vérification planète';
$template->assign('linkpage', 'valliances');
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
$pagea = 'print_key';
$id_plan = $_GET['id'];
$req = $chapeau->unique_query("SELECT * FROM `alliances` WHERE `id` = '$id_plan';");
$template->assign('tableau', $req);
$req = $chapeau->unique_query("DESCRIBE `alliances` `".$_GET['key']."`;");
$template->assign('type', explode('(', $req['Type']));
$template->assign('idPlan', $id_plan);
$template->assign('key', $_GET['key']);
}
elseif (!empty($_GET['id'])) {
$id_plan = $_GET['id'];
if (isset($_POST['key']) && isset($_POST['mod'])) {
$key = $_POST['key'];
$mod = $_POST['mod'];
$chapeau->escape($mod);
$chapeau->query("UPDATE `alliances` SET `$key` = '$mod' WHERE `id` = '$id_plan';");
}
$req = $chapeau->unique_query("SELECT * FROM `alliances` WHERE `id` = '$id_plan';");
$template->assign('tableau', $req);
$template->assign('idPlan', $id_plan);
}
elseif (!empty($_GET['name'])) {
$req = $chapeau->unique_query("SELECT * FROM `alliances` WHERE `nom` = '".mysql_real_escape_string($_GET['name'])."';");
header('Location: admin.php?p=valliances&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

View file

@ -0,0 +1,50 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'bandeau';
$titre = 'Bandeau d\'information';
$template->assign('linkpage', 'bandeau');
if (!empty($_GET['i']) && $_GET['i'] == 'add') {
if (!empty($_POST['texte']) && isset($_POST['color'])) {
$texte = $_POST['texte'];
$chapeau->escape($texte);
$color = $_POST['color'];
$chapeau->escape($color);
$chapeau->query("INSERT INTO `infoshead` VALUES (NULL, '$texte', '$color');");
header('Location: admin.php?p=bandeau');
exit;
}
$template->assign('id', 'add');
$pagea = 'bandeau_add';
}
elseif (!empty($_GET['i'])) {
$id = $_GET['i'];
if (!empty($_POST['texte']) && isset($_POST['color'])) {
$texte = $_POST['texte'];
$chapeau->escape($texte);
$color = $_POST['color'];
$chapeau->escape($color);
$chapeau->query("UPDATE `infoshead` SET `texte` = '$texte', `color` = '$color' WHERE `id` = '$id';");
header('Location: admin.php?p=bandeau');
exit;
}
$req = $chapeau->unique_query("SELECT * FROM `infoshead` WHERE `id` = '$id';");
$template->assign('mod', $req);
$template->assign('id', $id);
$pagea = 'bandeau_add';
}
elseif (!empty($_GET['d'])) {
$id = $_GET['d'];
$chapeau->query("DELETE FROM `infoshead` WHERE `id` = '$id';");
header('Location: admin.php?p=bandeau');
exit;
}
else {
$req = $chapeau->query("SELECT * FROM `infoshead`;");
$template->assign('tableau', $req);
}
?>

View file

@ -0,0 +1,20 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'vflotte';
$titre = 'Vérification flottes';
//Vérification des flottes
if (!isset($_GET['ceil'])) $_GET['ceil'] = 5000;
$req = mysql_query("SELECT * FROM `$table_flottes` ORDER BY `start_time` DESC");
$tableau = array();
while($resultat = mysql_fetch_array($req)) {
$user_source = infoPlan($resultat['end_galaxie'], $resultat['end_ss'], $resultat['end_position'], 'id_user');
if ($resultat['contenu_metal'] + $resultat['contenu_cristal'] + $resultat['contenu_hydrogene'] >= $_GET['ceil']) $color = 'FF0000';
elseif ($user_source != $resultat['id_user']) $color = 'DFBF00';
else $color = false;
$tableau[] = array(trouvNom($user_source), trouvNom($resultat['id_user']), infoPlan($resultat['start_galaxie'], $resultat['start_ss'], $resultat['start_position'], 'nom_planete'), '['.$resultat['start_galaxie'].':'.$resultat['start_ss'].':'.$resultat['start_position'].']', infoPlan($resultat['end_galaxie'], $resultat['end_ss'], $resultat['end_position'], 'nom_planete'), '['.$resultat['end_galaxie'].':'.$resultat['end_ss'].':'.$resultat['end_position'].']', $resultat['start_time'], '<acronym title="!!!Détail vaisseaux">'.$resultat['nb_vais'].'</acronym>', $resultat['vitesse'], $resultat['contenu_metal'], $resultat['contenu_cristal'], $resultat['contenu_hydrogene'], $color);
}
$template->assign('flottes', $tableau);
?>

View file

@ -0,0 +1,20 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'vip';
$titre = 'Vérification IP';
if (isset($_GET['ip'])) $req = mysql_query("SELECT * FROM `registre_identification` WHERE `ip` = '".$_GET['ip']."' ORDER BY `ip` ASC;");
elseif (isset($_GET['util'])) $req = mysql_query("SELECT * FROM `registre_identification` WHERE `id_util` = '".$_GET['util']."' ORDER BY `ip` ASC;");
elseif (isset($_GET['tri'])) $req = mysql_query("SELECT * FROM `registre_identification` ORDER BY `".$_GET['tri']."` ASC;");
else $req = mysql_query("SELECT * FROM `registre_identification` ORDER BY `ip` ASC;");
$anc = array('ip' => 0, 'id_util' => 0);
$tableau = array();
while($resultat = mysql_fetch_array($req)) {
if ($anc['ip'] == $resultat['ip'] && $anc['id_util'] != $resultat['id_util']) $color = 'FF0000';
elseif ($anc['ip'] == $resultat['ip']) $color = 'DFBF00';
else $color = false;
$tableau[] = array($resultat['ip'], gethostbyaddr($resultat['ip']), $resultat['id_util'], trouvNom($resultat['id_util']), $resultat['time'], $resultat['commodo'], $color);
$anc = $resultat;
}
$template->assign('ips', $tableau);
?>

View file

@ -0,0 +1,38 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'print';
$titre = 'Vérification planète';
$template->assign('linkpage', 'vjoueurs');
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
$pagea = 'print_key';
$id_plan = $_GET['id'];
$req = $chapeau->unique_query("SELECT * FROM `user` WHERE `id` = '$id_plan';");
$template->assign('tableau', $req);
$req = $chapeau->unique_query("DESCRIBE `user` `".$_GET['key']."`;");
$template->assign('type', explode('(', $req['Type']));
$template->assign('idPlan', $id_plan);
$template->assign('key', $_GET['key']);
}
elseif (!empty($_GET['id'])) {
$id_plan = $_GET['id'];
if (isset($_POST['key']) && isset($_POST['mod'])) {
$key = $_POST['key'];
$mod = $_POST['mod'];
$chapeau->escape($mod);
$chapeau->query("UPDATE `user` SET `$key` = '$mod' WHERE `id` = '$id_plan';");
}
$req = $chapeau->unique_query("SELECT * FROM `user` WHERE `id` = '$id_plan';");
$template->assign('tableau', $req);
$template->assign('idPlan', $id_plan);
}
elseif (!empty($_GET['name'])) {
$req = $chapeau->unique_query("SELECT * FROM `user` WHERE `pseudo` = '".mysql_real_escape_string($_GET['name'])."';");
header('Location: admin.php?p=vjoueurs&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

View file

@ -0,0 +1,39 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'mail_liste';
$titre = 'Demandes et problèmes de la galaxie';
$template->assign('linkpage', 'courrier');
if (!empty($_GET['w']) || !empty($_GET['x'])) {
if (!empty($_GET['w'])) $id = $_GET['w'];
else $id = $_GET['x'];
$req = $chapeau->unique_query("SELECT * FROM `$table_ope_mail` WHERE `id` = '$id';");
if ($req['statut'] >= 6) $chapeau->query("UPDATE `$table_ope_mail` SET `statut` = '0' WHERE `id` = '$id';");
else $chapeau->query("UPDATE `$table_ope_mail` SET `statut` = `statut` + 1 WHERE `id` = '$id';");
if (isset($_GET['x'])) header('Location: admin.php?p=courrier&v='.$id);
else header('Location: admin.php?p=courrier');
exit;
}
elseif (!empty($_GET['v'])) {
$id = $_GET['v'];
$req = $chapeau->unique_query("SELECT * FROM `$table_ope_mail` WHERE `id` = '$id';");
$template->assign('req', $req);
$template->assign('id', $id);
$pagea = 'mail_view';
}
elseif (!empty($_GET['d']) && $sess->values['auth_level'] >= 5) {
$id = $_GET['d'];
$chapeau->query("DELETE FROM `$table_ope_mail` WHERE `id` = '$id';");
header('Location: admin.php?p=courrier');
exit;
}
else {
$req = $chapeau->query("SELECT * FROM `$table_ope_mail` ORDER BY `time` DESC;");
//TODO JOIN dans la requete SQL pour avoir le nom du joueur qui a encoyé le message
$template->assign('mails', $req);
}
?>

View file

@ -0,0 +1,38 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'print';
$titre = 'Vérification planète';
$template->assign('linkpage', 'vplanetes');
if (!empty($_GET['id']) && !empty($_GET['key']) && $_GET['key'] != 'id') {
$pagea = 'print_key';
$id_plan = $_GET['id'];
$req = $chapeau->unique_query("SELECT * FROM `planete` WHERE `id` = '$id_plan';");
$template->assign('tableau', $req);
$req = $chapeau->unique_query("DESCRIBE `planete` `".$_GET['key']."`;");
$template->assign('type', explode('(', $req['Type']));
$template->assign('idPlan', $id_plan);
$template->assign('key', $_GET['key']);
}
elseif (!empty($_GET['id'])) {
$id_plan = $_GET['id'];
if (isset($_POST['key']) && isset($_POST['mod'])) {
$key = $_POST['key'];
$mod = $_POST['mod'];
$chapeau->escape($mod);
$chapeau->query("UPDATE `planete` SET `$key` = '$mod' WHERE `id` = '$id_plan';");
}
$req = $chapeau->unique_query("SELECT * FROM `planete` WHERE `id` = '$id_plan';");
$template->assign('tableau', $req);
$template->assign('idPlan', $id_plan);
}
elseif (isset($_GET['amas']) && isset($_GET['ss']) && !empty($_GET['pos'])) {
$req = $chapeau->unique_query("SELECT * FROM `planete` WHERE `galaxie` = '".$_GET['amas']."' AND `ss` = '".$_GET['ss']."' AND `position` = '".$_GET['pos']."';");
header('Location: admin.php?p=vplanetes&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixP';
}
?>

View file

@ -0,0 +1,22 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Sanction joueur';
$pagea = 'erreur';
$template->assign('linkpage', 'cjoueurs');
if ($sess->values['auth_level'] >= 5 && !empty($_GET['id'])) {
$sess->values['id'] = $_GET['id'];
$sess->put();
$template->assign('message', 'Vous contrôlez maintenant le joueur '.$_GET['id'].'.<br />Pensez à sélectionner sa planète !');
}
elseif (!empty($_GET['name'])) {
$req = $chapeau->unique_query("SELECT * FROM `$table_user` WHERE `pseudo` = '".mysql_real_escape_string($_GET['name'])."';");
header('Location: admin.php?p=cjoueurs&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

View file

@ -0,0 +1,22 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'rapports';
$titre = 'Vérification planète';
$template->assign('linkpage', 'vrapports');
if (!empty($_GET['name'])) {
$id_user = $_GET['name'];
$req = $chapeau->query("SELECT * FROM `mail` WHERE `destinataire` = '$id_user' AND `expediteur` = '' ORDER BY `temps` DESC;");
$template->assign('tableau', $req);
$template->assign('idPlan', $id_user);
}
elseif (!empty($_GET['id'])) {
$req = $chapeau->unique_query("SELECT * FROM `user` WHERE `id` = '".mysql_real_escape_string($_GET['id'])."';");
header('Location: admin.php?p=vrapports&name='.$req['pseudo']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

View file

@ -0,0 +1,26 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Sanction joueur';
$pagea = 'erreur';
$template->assign('linkpage', 'sjoueurs');
if (!empty($_GET['id']) && !empty($_GET['sanc']) && !empty($_GET['raisonmv'])) {
$id_plan = $_GET['id'];
$sanc = $_GET['sanc'];
$raisonmv = $_GET['raisonmv'];
$chapeau->escape($raisonmv);
$time = time() + $_GET['sanc'] * 86400 - 259200;
$chapeau->query("UPDATE `user` SET `mv` = '2', `last_visite` = '$time', `raisonmv` = '$raisonmv' WHERE `id` = '$id_plan';");
$template->assign('message', 'Le joueur a été placé en mode vacances !');
}
elseif (!empty($_GET['name']) && !empty($_GET['sanc']) && isset($_GET['raisonmv'])) {
$req = $chapeau->unique_query("SELECT * FROM `$table_user` WHERE `pseudo` = '".mysql_real_escape_string($_GET['name'])."';");
header('Location: admin.php?p=sjoueurs&sanc='.$_GET['sanc'].'&raisonmv='.$_GET['raisonmv'].'&id='.$req['id']);
exit;
}
else {
$pagea = 'sanctionU_choix';
}
?>

View file

@ -0,0 +1,29 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Supprimer joueur';
$pagea = 'erreur';
$template->assign('linkpage', 'djoueurs');
if ($sess->values['auth_level'] >= 5 && !empty($_GET['id'])) {
$id = $_GET['id'];
$chapeau->escape($id);
$req = $chapeau->unique_query("SELECT * FROM `$table_user` WHERE `id` = '$id';");
if ($req) {
$chapeau->unique_query("DELETE FROM `$table_mail` WHERE `destinataire` = '".trouvNom($id)."';");
$chapeau->unique_query("DELETE FROM `$table_flottes` WHERE `id_user` = '$id';");
$chapeau->unique_query("DELETE FROM `$table_planete` WHERE `id_user` = '$id';");
$chapeau->unique_query("DELETE FROM `$table_user` WHERE `id` = '$id';");
$template->assign('message', 'Le joueur a été supprimé du jeu ainsi que toutes les données le concernant !');
}
else $template->assign('message', 'Le joueur n\'a pas été trouvé !');
}
elseif (!empty($_GET['name'])) {
$req = $chapeau->unique_query("SELECT * FROM `$table_user` WHERE `pseudo` = '".mysql_real_escape_string($_GET['name'])."';");
header('Location: admin.php?p=djoueurs&id='.$req['id']);
exit;
}
else {
$pagea = 'print_choixU';
}
?>

View file

@ -0,0 +1,51 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$pagea = 'version';
$titre = 'Versions';
$template->assign('linkpage', 'version');
if (!empty($_GET['i']) && $_GET['i'] == 'add' && $sess->values['auth_level'] >= 7) {
if (!empty($_POST['version']) && !empty($_POST['contenu'])) {
$version = $_POST['version'];
$chapeau->escape($version);
$contenu = $_POST['contenu'];
$chapeau->escape($contenu);
$temps = time();
$chapeau->query("INSERT INTO `version` VALUES (NULL, '$version', '$contenu', '$temps', '".trouvNom($id_user)."');");
header('Location: admin.php?p=version');
exit;
}
$template->assign('id', 'add');
$pagea = 'version_add';
}
elseif (!empty($_GET['i'])) {
$id = $_GET['i'];
if (!empty($_POST['version']) && !empty($_POST['contenu'])) {
$version = $_POST['version'];
$chapeau->escape($version);
$contenu = $_POST['contenu'];
$chapeau->escape($contenu);
$chapeau->query("UPDATE `version` SET `version` = '$version', `contenu` = '$contenu' WHERE `id` = '$id';");
header('Location: admin.php?p=version');
exit;
}
$req = $chapeau->unique_query("SELECT * FROM `version` WHERE `id` = '$id';");
$template->assign('mod', $req);
$template->assign('id', $id);
$pagea = 'version_add';
}
elseif (!empty($_GET['d']) && $sess->values['auth_level'] >= 7) {
$id = $_GET['d'];
$chapeau->query("DELETE FROM `version` WHERE `id` = '$id';");
header('Location: admin.php?p=version');
exit;
}
else {
$req = $chapeau->query("SELECT * FROM `version` ORDER BY `temps` DESC;");
$template->assign('tableau', $req);
}
?>

20
onyx/hb_game/jeu/aide.php Normal file
View file

@ -0,0 +1,20 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Aide';
if (empty($_GET['q'])) $_GET['q'] = '';
switch($_GET['q']){
case '1':
$page = 'aide/avertissements'; break;
case '2':
$page = 'aide/config'; break;
case '3':
$page = 'aide/intro'; break;
case '4':
$page = 'aide/commentjouer'; break;
default:
$page = 'aide/sommaire';
}
?>

View file

@ -0,0 +1,453 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Alliance';
include_once(_FCORE."hb_game/Class/class.rapport.php");
$bdd->connexion();
//Si le joueur est membre de l'alliance
if (!empty($queryUser['id_alliance']) && $queryUser['id_grade_alliance'] != -1 && $alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '".$queryUser['id_alliance']."';")) {
//On détermine les accès du joueur
if ($alliance['fondateur'] == $queryUser['id'])
$access = array(
'fondateur' => 1,
'chat' => 1,
'grades' => 1,
'membre' => 1,
'ecriture' => 1,
'alliance' => 1
);
elseif ($queryUser['id_grade_alliance'] != 0) {
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = '".$queryUser['id_grade_alliance']."';");
$access = array(
'fondateur' => 0,
'chat' => $grade['gest_chat'],
'grades' => $grade['gest_rang'],
'membre' => $grade['gest_membre'],
'ecriture' => $grade['gest_ecriture'],
'alliance' => $grade['gest_admin']
);
}
else
$access = array(
'fondateur' => 0,
'chat' => 0,
'grades' => 0,
'membre' => 0,
'ecriture' => 0,
'alliance' => 0
);
$template->assign('access', $access);
//Visionnage des pages de l'alliance
if (!isset($_GET['q'])) $_GET['q'] = '';
//Pages d'administration
if ($_GET['q'] == 'adm_chat' && $access['chat']) {
if (!empty($_GET['i'])) {
$i = floor($_GET['i']);
$bdd->query("DELETE FROM $table_alliances_chat WHERE id = '$i' AND id_alliance = '".$alliance['id']."';");
header('Location: ?p=alliances&q=adm_chat#chat');
exit;
}
$page = 'alliance_adm_chat';
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = '".$alliance['id']."' ORDER BY id DESC LIMIT 50;");
for($i = 0; $i < $bdd->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
}
$template->assign('chat', $chat);
}
elseif ($_GET['q'] == 'adm_grades' && $access['membre']) {
if (isset($_GET['a']) && $_GET['a'] = 'add') {
if (!empty($_POST['nom']) && isset($_POST['description'])) {
$nom = mysql_real_escape_string($_POST['nom']);
$description = mysql_real_escape_string($_POST['description']);
if (!empty($_POST['id'])) {
$id = $_POST['id'];
$bdd->escape($id);
@$bdd->query("UPDATE $table_alliances_grade SET nom = '$nom', description = '$description', gest_chat = '".ceil($_POST['gest_chat'])."', gest_rang = '".ceil($_POST['gest_rang'])."', gest_membre = '".ceil($_POST['gest_membre'])."', gest_ecriture = '".ceil($_POST['gest_ecriture'])."', gest_admin = '".ceil($_POST['gest_alliance'])."' WHERE id = '$id' AND id_alliance = '".$alliance['id']."';");
}
else @$bdd->query("INSERT INTO $table_alliances_grade VALUES (NULL, '".$alliance['id']."', '$nom', '$description', '".ceil($_POST['gest_chat'])."', '".ceil($_POST['gest_rang'])."', '".ceil($_POST['gest_membre'])."', '".ceil($_POST['gest_ecriture'])."', '".ceil($_POST['gest_alliance'])."');");
header('Location: ?p=alliances&q=adm_grades');
exit;
}
$page = 'alliance_adm_grades_add';
}
elseif (!empty($_GET['i'])) {
$page = 'alliance_adm_grades_add';
$i = $_GET['i'];
$bdd->escape($i);
$mod = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = '$i' AND id_alliance = '".$alliance['id']."';");
$template->assign('mod', $mod);
}
else {
$page = 'alliance_adm_grades';
$grades = $bdd->query("SELECT * FROM $table_alliances_grade WHERE id_alliance = '".$alliance['id']."' ORDER BY nom ASC;");
$template->assign('grades', $grades);
}
}
elseif ($_GET['q'] == 'adm_ecrits' && $access['ecriture']) {
if (isset($_GET['t']) && $_GET['t'] == 'presentation') $mod = 'presentation';
else $mod = 'interne';
if (!empty($_POST['type']) && isset($_POST['textarea'])) {
$mod = mysql_real_escape_string($_POST['type']);
$bdd->query("UPDATE $table_alliances SET $mod = '".mysql_real_escape_string($_POST['textarea'])."' WHERE id = '".$alliance['id']."'");
header('Location: ?p=alliances&q=adm_ecrits&t='.$mod);
exit;
}
$page = 'alliance_adm_ecritures';
$template->assign('alliance', $alliance);
$template->assign('mod', $mod);
}
elseif ($_GET['q'] == 'adm_mp' && $access['membre']) {
if (!empty($_POST['textarea'])) {
$titre = $_POST['titre'];
$bdd->escape($titre);
$texte = $_POST['textarea'];
$bdd->escape($texte);
$expediteur = '['.$alliance['tag'].'] <i>'.trouvNom($id_user).'</i>';
$bdd->escape($expediteur);
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
$nbmembre = $bdd->num_rows;
$temps = time();
for($i = 0; $i < $nbmembre; $i++){
$bdd->query("INSERT INTO $table_mail VALUES(NULL, 1, '".$membres[$i]['pseudo']."', '$expediteur', '$titre', '$texte', '$temps');");
}
$template->assign('message','Le message privé a été communiqué à tous les joueurs de l\'alliance.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$page = 'alliance_adm_mpmass';
}
elseif ($_GET['q'] == 'adm_alliance' && $access['alliance']) {
$recharg = false;
if (isset($_POST['defcon']) && isset($_POST['defcon_txt']) && isset($_POST['etat_inscription']) && isset($_POST['image']) && isset($_POST['url'])) {
$bdd->query("UPDATE $table_alliances SET defcon = '".mysql_real_escape_string($_POST['defcon'])."', defcon_txt = '".mysql_real_escape_string($_POST['defcon_txt'])."', etat_inscription = '".mysql_real_escape_string($_POST['etat_inscription'])."', image = '".mysql_real_escape_string($_POST['image'])."', url = '".mysql_real_escape_string($_POST['url'])."' WHERE id = '".$alliance['id']."'");
$recharg = true;
}
if (isset($_POST['fondateur']) && $alliance['fondateur'] == $id_user && isset($_POST['pswd_admin'])) {
if (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin']) && empty($sess->values['forcealli'])) {
$sess->values['forcealli'] = true;
$sess->put();
$template->assign('message','Êtes-vous sûr de vouloir dissoudre cette alliance ?<br /><i>Pour confirmer la dissolution de l\'alliance, rechargez cette page.</i>');
$template->assign('couleur','orange');
$template->display('game/erreur.tpl');
exit;
}
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin']) && isset($sess->values['forcealli']) && $sess->values['forcealli']) {
$bdd->query("DELETE FROM $table_alliances WHERE id = '".$alliance['id']."';");
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
for($i = 0; $i < $bdd->num_rows; $i++){
$bdd->query("UPDATE $table_user SET id_alliance = '0', id_grade_alliance = '0' WHERE id = '".$membres[$i]['id']."' AND id_alliance = '".$alliance['id']."';");
}
$template->assign('message','L\'alliance a été dissoute avec succès.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] != sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin'])) {
$template->assign('message','Impossible de dissoudre l\'alliance : mot de passe incorrect.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=adm_alliance";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
$bdd->query("UPDATE $table_alliances SET fondateur = '".mysql_real_escape_string($_POST['fondateur'])."' WHERE id = '".$alliance['id']."'");
$recharg = true;
}
if ($recharg) {
header('Location: ?p=alliances&q=adm_alliance');
exit;
}
$page = 'alliance_adm_admin';
$niveaux = array('Niveau 1', 'Niveau 2', 'Niveau 3', 'Niveau 4', 'Niveau 5');
$niveauxi = array('1', '2', '3', '4', '5');
$template->assign('niveaux', $niveaux);
$template->assign('niveauxi', $niveauxi);
$etatinscript = array('Ouvertes', 'Fermées');
$etatinscripti = array('1', '0');
$template->assign('etatinscript', $etatinscript);
$template->assign('etatinscripti', $etatinscripti);
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
$membre = array();
$membrei = array();
for($i = 0; $i < $bdd->num_rows; $i++){
$membre[] = $membres[$i]['pseudo'];
$membrei[] = $membres[$i]['id'];
}
$template->assign('membres', $membre);
$template->assign('membresi', $membrei);
$template->assign('alliance', $alliance);
}
elseif ($_GET['q'] == 'adm_membres' && $access['membre']) {
if (!empty($_POST['user']) && isset($_POST['grade'])) {
$user = floor($_POST['user']);
$grade = floor($_POST['grade']);
$bdd->query("UPDATE $table_user SET id_grade_alliance = '".$grade."' WHERE id = '".$user."' AND id_alliance = '".$alliance['id']."';");
}
elseif (!empty($_GET['u'])) {
$user = floor($_GET['u']);
$bdd->query("UPDATE $table_user SET id_grade_alliance = '0', id_alliance = '0' WHERE id = '".$user."' AND id_alliance = '".$alliance['id']."';");
//TODO Envoyer un message au joueur renvoyé
}
elseif (!empty($_GET['accept'])) {
$user = floor($_GET['accept']);
$verif = $bdd->unique_query("SELECT * FROM $table_alliances_attente WHERE id_alliance = '".$alliance['id']."' AND id_membre = '$user';");
if ($verif) {
$bdd->query("UPDATE $table_user SET id_grade_alliance = '0', id_alliance = '".$alliance['id']."' WHERE id = '".$user."' AND id_alliance = '0';");
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_membre = '$user';");
//TODO Envoyer un message au joueur renvoyé
}
}
elseif (!empty($_GET['refus'])) {
$user = floor($_GET['refus']);
$bdd->query("DELETE FROM $table_alliances_attente WHERE id_membre = '$user' AND id_alliance = '".$alliance['id']."';");
//TODO Envoyer un message au joueur renvoyé
}
$page = 'alliance_adm_membres';
$grades = $bdd->query("SELECT * FROM $table_alliances_grade WHERE id_alliance = '".$alliance['id']."' ORDER BY nom ASC;");
$grade = array(); $gradei = array();
for($i = 0; $i < $bdd->num_rows ; $i++){
$grade[] = $grades[$i]['nom'];
$gradei[] = $grades[$i]['id'];
}
$template->assign('grades', $grade);
$template->assign('gradei', $gradei);
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
$template->assign('membres', $membres);
$candidats = $bdd->query("SELECT * FROM $table_alliances_attente WHERE id_alliance = '".$alliance['id']."' ORDER BY timestamp ASC;");
$template->assign('candidats', $candidats);
$template->assign('alliance', $alliance);
}
elseif ($_GET['q'] == 'liste') {
$page = 'alliance_liste';
if (isset($_GET['t']) && $_GET['t'] == 'classement') $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."' ORDER BY place_points DESC;");
else $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
$nb = $bdd->num_rows;
for ($i = 0; $i < $nb; $i++) {
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = '".$membres[$i]['id_grade_alliance']."';");
$membres[$i]['grade_alliance'] = $grade['nom'];
}
$template->assign('membres', $membres);
}
elseif ($_GET['q'] == 'chat') {
if (isset($_POST['msg'])) {
$message = $_POST['msg'];
$bdd->escape($message);
if (!empty($message)) $bdd->query("INSERT INTO $table_alliances_chat VALUES (NULL, '".$alliance['id']."', '$id_user', '".time()."', '$message')");
header('Location: ?p=alliances&q=chat#chat');
exit;
}
$page = 'alliance_chat';
//Chat
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = '".$alliance['id']."' ORDER BY id DESC LIMIT 30");
for($i = 0; $i < $bdd->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
$chat[$i]['message'] = bbcode(htmlspecialchars($chat[$i]['message']));
}
$template->assign('chat', $chat);
}
else {
$page = 'alliance_accueil';
$alliance['presentation'] = bbcode(htmlspecialchars($alliance['presentation']));
$alliance['texte_interne'] = bbcode(htmlspecialchars($alliance['texte_interne']));
$template->assign('alliance', $alliance);
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
$template->assign('nbmembre', $bdd->num_rows);
if (!isset($grade)) $template->assign('grade', 0);
else $template->assign('grade', $grade);
//Chat
$chat = $bdd->query("SELECT * FROM $table_alliances_chat WHERE id_alliance = '".$alliance['id']."' ORDER BY id DESC LIMIT 30;");
for($i = 0; $i < $bdd->num_rows ; $i++){
$chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']);
$chat[$i]['message'] = htmlspecialchars($chat[$i]['message']);
}
$template->assign('chat', $chat);
}
}
elseif (!empty($queryUser['id_alliance']) && !$bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '".$queryUser['id_alliance']."';")) {
$bdd->query("UPDATE $table_user SET id_alliance = '0', id_grade_alliance = '0' WHERE id = '$id_user';");
header('Location: ?p=alliances');
exit;
}
//Si le joueur n'est membre d'aucune alliance
else {
if (!isset($_GET['q'])) $_GET['q'] = '';
if ($_GET['q'] == 'search' && !empty($_POST['by']) && isset($_POST['search'])) {
$page = 'alliance_nm_search';
$by = mysql_real_escape_string($_POST['by']);
$search = mysql_real_escape_string($_POST['search']);
$recherche = $bdd->query("SELECT * FROM $table_alliances WHERE $by LIKE '%$search%' ORDER BY nom ASC;");
$template->assign('recherches', $recherche);
}
elseif ($_GET['q'] == 'liste' && !empty($_GET['i'])) {
$page = 'alliance_liste';
if (isset($_GET['t']) && $_GET['t'] == 'classement') $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$_GET['i']."' ORDER BY place_points DESC;");
else $membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$_GET['i']."';");
$nb = $bdd->num_rows;
for ($i = 0; $i < $nb; $i++) {
$grade = $bdd->unique_query("SELECT * FROM $table_alliances_grade WHERE id = '".$membres[$i]['id_grade_alliance']."';");
$membres[$i]['grade_alliance'] = $grade['nom'];
}
$template->assign('membres', $membres);
$template->assign('i', $_GET['i']);
}
elseif ($_GET['q'] == 'view' && !empty($_GET['i'])) {
$id = mysql_real_escape_string($_GET['i']);
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '$id';");
if ($alliance) {
$page = 'alliance_nm_view';
$alliance['presentation'] = bbcode(htmlspecialchars($alliance['presentation']));
$template->assign('alliance', $alliance);
$membres = $bdd->query("SELECT * FROM $table_user WHERE id_alliance = '".$alliance['id']."';");
$template->assign('nbmembre', $bdd->num_rows);
}
else {
$template->assign('message','Impossible de trouver cette alliance !');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif ($_GET['q'] == 'postuler' && !empty($_GET['i'])) {
$id = mysql_real_escape_string($_GET['i']);
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE id = '$id';");
if (!empty($_POST['message'])) {
$bdd->query("INSERT INTO $table_alliances_attente VALUES (NULL, '".$alliance['id']."', '".$id_user."', '".$queryUser['pseudo']."', '".time()."', '".mysql_real_escape_string($_POST['message'])."');");
$template->assign('message','Votre candidature a été envoyée avec succès à l\'alliance : '.$alliance['nom']);
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$template->assign('alliance', $alliance);
$template->assign('alliancei', $id);
$page = 'alliance_nm_postuler';
}
elseif ($_GET['q'] == 'signer' && !empty($_GET['i'])) {
$lien = mysql_real_escape_string($_GET['i']);
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances_creation WHERE lien = '$lien';");
if ($alliance) {
if (empty($alliance['signatures'])) $signataires = array();
else $signataires = explode(';', $alliance['signatures']);
if ($alliance['fondateur'] == $id_user || in_array($id_user, $signataires)) {
$template->assign('message','Vous avez déjà signé pour cette alliance.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=signer";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
//Si c'est la 4ème signature, on crée l'alliance
if (count($signataires) >= 3) {
$bdd->query("INSERT INTO $table_alliances VALUES (NULL, '".$alliance['tag']."', '".$alliance['nom']."', '".$alliance['fondateur']."', 'A faire', 'A faire', '', '', 1, 1, '');");
$bdd->query("DELETE FROM $table_alliances_creation WHERE lien = '$lien';");
$alliance = $bdd->unique_query("SELECT * FROM $table_alliances WHERE nom = '".$alliance['nom']."' AND fondateur = '".$alliance['fondateur']."';");
file_log("Création de l'alliance : ".$alliance['nom']." par ".$id_user." (fondateur : ".$alliance['fondateur'].") après validation de 4 signatures : ".implode(', ', $signataires).$id_user);
//On envoie un message au fondateur de l'alliance
$rapport = new Rapport(6, $alliance['fondateur'], 0, time());
$rapport->send();
$nbsign = count($signataires);
for ($i=0 ; $i<$nbsign ; $i++) {
$bdd->query("UPDATE $table_user SET id_alliance = '".$alliance['id']."' WHERE id = '".$signataires[$i]."';");
}
$bdd->query("UPDATE $table_user SET id_alliance = '".$alliance['id']."' WHERE id = '$id_user';");
$bdd->query("UPDATE $table_user SET id_alliance = '".$alliance['id']."' WHERE id = '".$alliance['fondateur']."';");
$template->assign('message','Votre signature a bien été ajoutée à la déclaration de l\'alliance.<br />L\'alliance a désormais suffisament de signature pour être créée !');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
else {
$signataires[] = $id_user;
$signataires = implode(';', $signataires);
$bdd->query("UPDATE $table_alliances_creation SET signatures = '$signataires' WHERE lien = '$lien';");
$bdd->query("UPDATE $table_user SET id_alliance = 'c".$alliance['id']."' WHERE id = '$id_user';");
$template->assign('message','Votre signature a bien été ajoutée à la déclaration de l\'alliance.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
}
}
else {
$template->assign('message','Impossible de trouver l\'alliance !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=signer";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif ($_GET['q'] == 'fonder') {
if (!empty($_POST['nom']) && !empty($_POST['tag'])) {
$nom = mysql_real_escape_string(htmlentities($_POST['nom']));
$tag = mysql_real_escape_string(htmlentities($_POST['tag']));
if (strlen($nom) < 5) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop court.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (strlen($nom) > 25) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop long.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (strlen($tag) > 5) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop long.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (strlen($tag) < 3) {
$template->assign('message','Le nom d\'alliance que vous avez choisit est trop court.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
$test = $bdd->query("SELECT * FROM alliances WHERE nom = '$nom' AND tag = '$tag';");
$test2 = $bdd->query("SELECT * FROM alliances_creation WHERE nom = '$nom' AND tag = '$tag';");
if ($test || $test2) {
$template->assign('message','Le nom ou le tag que vous avez choisit est déjà utilisé par une alliance.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=alliances&q=fonder";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$lien = sha1($tag.'Hb$'.$nom.'☺Ø'.$id_user.rand());
$bdd->query("INSERT INTO alliances_creation VALUES(NULL, '$lien' ,'$tag', '$nom', '$id_user', '');");
$rapport = new Rapport(7, $id_user, 0, time());
$rapport->addInfo($lien, 0);
$rapport->send();
$template->assign('message','Votre alliance a bien &eacute;t&eacute; cr&eacute;&eacute;e.<br />Il ne vous reste plus qu\'à trouver au moins 4 signatures pour finir la création de votre alliance.<br /><br />Le lien permettant à vos quatres personnes de signer est <a href="?p=alliances&amp;q=signer&amp;i='.$lien.'">http://'.$_SERVER['HTTP_HOST'].'?p=alliances&amp;q=signer&amp;i='.$lien.'</a>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
}
$page = 'alliance_nm_fonder';
}
else {
$page = 'alliance_nm_accueil';
}
}
$bdd->deconnexion();
?>

View file

@ -0,0 +1,56 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'arbre';
$titre = 'Arbre des technologies';
if (empty($_GET['q'])) $_GET['q'] = '';
$template->assign('defaut',$_GET['q']);
$TEMP_batiments = array();
$nb=count($batiment);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($batiment[$id])) $TEMP_batiments[] = array(
'id' => $id,
'nom' => $batiment[$id],
'niveau' => $queryPlanete[$batimentVAR[$id]],
'etat' => readDeblok($batimentTECH[$id], $queryPlanete, $queryUser)
);
}
$template->assign('batiments',$TEMP_batiments);
$TEMP_technologies = array();
$nb=count($technolo);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($technolo[$id])) $TEMP_technologies[] = array(
'id' => $id,
'nom' => $technolo[$id],
'niveau' => $queryUser[$technoloVAR[$id]],
'etat' => readDeblok($technoloTECH[$id], $queryPlanete, $queryUser)
);
}
$template->assign('technologies',$TEMP_technologies);
$TEMP_terrestre = array();
$nb=count($nomterrn);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($nomterrn[$id])) $TEMP_terrestre[] = array(
'id' => $id,
'nom' => $nomterrn[$id],
'niveau' => $queryPlanete[$nomterrnVAR[$id]],
'etat' => readDeblok($nomterrnTECH[$id], $queryPlanete, $queryUser)
);
}
$template->assign('unites',$TEMP_terrestre);
$TEMP_vaisseaux = array();
$nb=count($nomvaisn);
for ($id=0 ; $id<$nb ; $id++) {
if (!empty($nomvaisn[$id])) $TEMP_vaisseaux[] = array(
'id' => $id,
'nom' => $nomvaisn[$id],
'niveau' => $queryPlanete[$nomvaisnVAR[$id]],
'etat' => readDeblok($nomvaisnTECH[$id], $queryPlanete, $queryUser)
);
}
$template->assign('vaisseaux',$TEMP_vaisseaux);
?>

File diff suppressed because one or more lines are too long

36
onyx/hb_game/jeu/bugs.php Normal file
View file

@ -0,0 +1,36 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'bugs';
$titre = 'Rapports de bugs';
if (!empty($_POST['page']) && !empty($_POST['description'])) {
$pages = $_POST['page'];
$description = $_POST['description'];
$bdd->connexion();
$bdd->escape($pages);
$bdd->escape($description);
$bdd->query("INSERT INTO `$table_bug` VALUES(NULL, '".$queryUser['pseudo']."', '".time()."', '$pages', '$description');");
$bdd->deconnexion();
header('Location: ?p=bugs');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->values['auth_level'] > 2) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
$bdd->query("DELETE FROM `$table_bug` WHERE `id` = '$i' LIMIT 1");
$bdd->deconnexion();
header('Location: ?p=bugs');
exit;
}
$bdd->connexion();
$bugs = $bdd->query("SELECT id, pseudo, temps, page, description FROM `$table_bug` ORDER BY `id` DESC");
$bdd->deconnexion();
$TEMP_bugs = array();
for ($i = 0; $i < $bdd->num_rows; $i++) {
$TEMP_bugs[] = array('<a href="?p=envoyer&d='.$bugs[$i]['pseudo'].'">'.$bugs[$i]['pseudo'].'</a>', date("d/m/y h:m:s", $bugs[$i]['temps']), $bugs[$i]['page'], nl2br(htmlspecialchars(str_replace('\\\'', '\'', $bugs[$i]['description']))), $bugs[$i]['id']);
}
$template->assign('bugs', $TEMP_bugs);
?>

View file

@ -0,0 +1,66 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'carte';
$titre = 'Carte spatiale';
if (isset($_GET['galaxie'])) $g = floor($_GET['galaxie']);
else $g = $queryPlanete['galaxie'];
if ($queryUser['auth_level'] >= 5 && $g <= 0) $g = 0;
elseif ($g < 1) $g = 1;
if ($g > MAX_AMAS) $g = 1;
if (isset($_GET['ss'])) $s = floor($_GET['ss']);
else $s = $queryPlanete['ss'];
if ($s < 1) $s = 1;
if ($s > MAX_SYSTEME) $s = MAX_SYSTEME;
if ($s == 1 && $g > 1) {
$Gmu = $g - 1;
$Smu = MAX_SYSTEME;
}
elseif ($s == 1) {
$Gmu = 15;
$Smu = MAX_SYSTEME;
}
else {
$Gmu = $g;
$Smu = $s - 1;
}
if ($s == MAX_SYSTEME) {
$Gpu = $g + 1;
$Spu = 1;
}
else {
$Gpu = $g;
$Spu = $s + 1;
}
$TEMP_carte = array();
for ($i = 1; $i <= MAX_PLANETE; $i++) {
$bdd->connexion();
$bdd->escape($g);
$bdd->escape($s);
$resultat = $bdd->query("SELECT id FROM $table_planete WHERE galaxie = '$g' AND ss = '$s' AND position = '$i';");
if($resultat) {
$d = $bdd->unique_query("SELECT id_user, nom_planete, debris_met, debris_cri FROM $table_planete WHERE galaxie = '$g' AND ss = '$s'AND position = '$i';");
$id_user = $d['id_user'];
$e = $bdd->unique_query("SELECT pseudo, race, id_alliance FROM $table_user WHERE id = '$id_user'");
if ($e['id_alliance']) $eA = $bdd->unique_query("SELECT tag FROM $table_alliances WHERE id = '".$e['id_alliance']."';");
else $eA = false;
$bdd->deconnexion();
if ($e['race'] == 'covenant') $ra = '(c)';
elseif ($auth_level >= 6 && md5($e['race']) == '34c19b21bd4a3dda389e767d32fe9779') $ra = '(f)';
else $ra = '(h)';
$TEMP_carte[] = array($i, htmlspecialchars($d['nom_planete']), $d['debris_met'], $d['debris_cri'], $ra, $e['pseudo'], '<a href="?p=envoyer&amp;d='.$e['pseudo'].'" class="msg"><span>Message</span></a>', $eA['tag']);
}
else {
$bdd->deconnexion();
$TEMP_carte[] = array($i);
}
}
$template->assign('carte',$TEMP_carte);
$template->assign('position',array($g, $s, $Gpu, $Spu, $Gmu, $Smu));
?>

View file

@ -0,0 +1,142 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
include_once(_FCORE."hb_game/Class/class.gerefile.php");
$page = 'chantierspatial';
$titre = 'Chantier spatial';
$TEMP_vaisseaux = array();
$nbstop = count($nomvaisn);
if (empty($queryPlanete['file_vais'])) $file = new gererFile($queryUser['prodfile']+2);
else {
$file = unserialize($queryPlanete['file_vais']);
$file->limite = $queryUser['prodfile'] + 2;
}
if ($queryPlanete['chantier_spatial'] == 0) {
$template->assign('message','Vous devez d\'abord construire un '.strtolower($batiment[8]));
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=batiments";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && !empty($nomvaisn[$_GET['v']]) && !empty($_POST['nombre'])) {
$i = $_GET['v'];
$nbv = floor($_POST['nombre']);
if(requestDeblok($nomvaisnTECH[$i], $queryPlanete, $queryUser) && $nbv > 0) {
$n=($queryPlanete[$nomvaisnVAR[$i]]+1);
$a = $nomvaisnCALC[$i][0]; $metal -= $a * $nbv;
$b = $nomvaisnCALC[$i][1]; $cristal -= $b * $nbv;
$c = $nomvaisnCALC[$i][2]; $hydrogene -= $c * $nbv;
if ($metal < 0 || $cristal < 0 || $hydrogene < 0) {
$template->assign('message','Vous n\'avez pas assez de ressources pour démarrer cette construction.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=chantierspatial";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
eval($nomvaisnCALC[$i][3]);
if ($file->addObjet($i, $nbv, ceil($sec))) {
$export = serialize($file);
$bdd->connexion();
$bdd->escape($export);
$bdd->query("UPDATE $table_planete SET file_vais = '$export', metal = '$metal', cristal = '$cristal', hydrogene = '$hydrogene' WHERE id = '$idPlan';");
$bdd->deconnexion();
}
else {
$template->assign('message','Vous ne pouvez pas mettre plus de vaisseaux en file d\'attente.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=chantierspatial";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
header('Location: ?p=chantierspatial');
exit;
}
else {
$template->assign('message','Vous n\'avez pas les technologies nécessaire pour construire ce vaisseau !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=chantierspatial";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a']) && isset($nomvaisn[$_GET['a']])) {
$i = $_GET['a'];
if (!isset($_GET['n'])) $nbv = 1;
else $nbv = $_GET['n'];
if($file->existe($i)) {
$n=($queryPlanete[$nomvaisnVAR[$i]]+1);
$a = $nomvaisnCALC[$i][0];
$b = $nomvaisnCALC[$i][1];
$c = $nomvaisnCALC[$i][2];
$nbvr = $file->delobjet($i, $nbv);
$metal += $a*$nbvr;
$cristal += $b*$nbvr;
$hydrogene += $c*$nbvr;
$export = serialize($file);
$bdd->connexion();
$bdd->escape($export);
$bdd->query("UPDATE $table_planete SET file_vais = '$export', metal = '$metal', cristal = '$cristal', hydrogene = '$hydrogene' WHERE id = '$idPlan';");
$bdd->deconnexion();
header('Location: ?p=chantierspatial');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE planete SET file_vais = '$export' WHERE id = '$idPlan';");
header('Location: ?p=chantierspatial');
exit;
}*/
for ($i = 0; $i < $nbstop; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0;
$nom_bdd = $nomvaisnVAR[$i]; $a = $nomvaisnCALC[$i][0]; $b = $nomvaisnCALC[$i][1]; $c = $nomvaisnCALC[$i][2]; eval($nomvaisnCALC[$i][3]);
if ($queryPlanete[$nom_bdd] > 0) $nombre = $queryPlanete[$nom_bdd]; else $nombre = 0;
$n=($queryPlanete[$nom_bdd]+1);
if (!empty($nomvaisn[$i]) && requestDeblok($nomvaisnTECH[$i], $queryPlanete, $queryUser)) $TEMP_vaisseaux[] =
array(
'image' => $nomvaisi[$i],
'nom' => $nomvaisn[$i],
'nombre' => $nombre,
'description' => $nomvaisd[$i],
'descriptione' => addslashes($nomvaisd[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i
);
}
$template->assign('vaisseaux',$TEMP_vaisseaux);
$template->assign('chaine',$file->chaine);
$fileBat = array_merge($file->file);
$nbfile = count($fileBat);
if ($nbfile == 1) $template->assign('Pchaine',true);
else $template->assign('Pchaine',false);
if ($nbfile == 0) $template->assign('Vchaine',true);
else $template->assign('Vchaine',false);
for ($i=0 ; $i<$nbfile ; $i++) {
$fileBat[$i][3] = $nomvaisn[$fileBat[$i][0]];
$fileBat[$i][4] = $fileBat[$i][2]*$fileBat[$i][1];
if ($i == 0) {
$fileBat[$i][2] -= time() - $file->timestamp;
$fileBat[$i][4] -= time() - $file->timestamp;
}
}
$template->assign('file',$fileBat);
?>

View file

@ -0,0 +1,119 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
include_once('Class/class.gerefile.php');
$page = 'chantierterrestre';
$titre = 'Chantier terrestre';
$TEMP_unitee = array();
$nbstop = count($nomterrn);
if (empty($queryPlanete['file_ter'])) $file = new gererFile($queryUser['prodfile']+2);
else {
$file = unserialize($queryPlanete['file_ter']);
$file->limite = $queryUser['prodfile']+2;
}
if ($queryPlanete['chantier_terrestre'] == 0) {
$template->assign('message','Vous devez d\'abord construire un '.strtolower($batiment[7]));
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=batiments";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && !empty($nomvaisn[$_GET['v']]) && !empty($_POST['nombre'])) {
$i = $_GET['v'];
$nbv = floor($_POST['nombre']);
if(requestDeblok($nomterrnTECH[$i], $queryPlanete, $queryUser) && $nbv > 0) {
$n=($queryPlanete[$nomterrnVAR[$i]]+1);
$a = $nomterrnCALC[$i][0]; $metal -= $a * $nbv;
$b = $nomterrnCALC[$i][1]; $cristal -= $b * $nbv;
$c = $nomterrnCALC[$i][2]; $hydrogene -= $c * $nbv;
if ($metal < 0 || $cristal < 0 || $hydrogene < 0) {
$template->assign('message','Vous n\'avez pas assez de ressources pour démarrer cette construction.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=chantierterrestre";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
eval($nomterrnCALC[$i][3]);
if ($file->addObjet($i, $nbv, ceil($sec))) {
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_ter` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';");
}
else {
$template->assign('message','Vous ne pouvez pas mettre plus d\'unit&eactue;s en file d\'attente.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=chantierterrestre";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
header('Location: ?p=chantierterrestre');
exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a']) && isset($nomterrn[$_GET['a']])) {
$i = $_GET['a'];
if (!isset($_GET['n'])) $nbv = 1;
else $nbv = $_GET['n'];
if($file->existe($i)) {
$n=($queryPlanete[$nomterrnVAR[$i]]+1);
$a = $nomterrnCALC[$i][0];
$b = $nomterrnCALC[$i][1];
$c = $nomterrnCALC[$i][2];
$nbvr = $file->delobjet($i, $nbv);
$metal += $a*$nbvr;
$cristal += $b*$nbvr;
$hydrogene += $c*$nbvr;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE `planete` SET `file_ter` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';");
header('Location: ?p=chantierterrestre');
exit;
}
}
for ($i=0 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0;
$nom_bdd = $nomterrnVAR[$i]; $a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]);
if ($queryPlanete[$nom_bdd] > 0) $nombre = $queryPlanete[$nom_bdd]; else $nombre = 0;
$n=($queryPlanete[$nom_bdd]+1);
if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $queryPlanete, $queryUser)) $TEMP_unitee[] =
array(
'image' => $nomterri[$i],
'nom' => $nomterrn[$i],
'nombre' => $nombre,
'description' => $nomterde[$i],
'descriptione' => addslashes($nomterde[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i
);
}
$template->assign('unitee',$TEMP_unitee);
$template->assign('chaine',$file->chaine);
$fileBat = $file->file;
$nbfile = count($fileBat);
if ($nbfile == 1) $template->assign('Pchaine',true);
else $template->assign('Pchaine',false);
if ($nbfile == 0) $template->assign('Vchaine',true);
else $template->assign('Vchaine',false);
for ($i=0 ; $i<$nbfile ; $i++) {
$fileBat[$i][3] = $nomterrn[$fileBat[$i][0]];
$fileBat[$i][4] = $fileBat[$i][2]*$fileBat[$i][1];
if ($i == 0) {
$fileBat[$i][2] -= time() - $file->timestamp;
$fileBat[$i][4] -= time() - $file->timestamp;
}
}
$template->assign('file',$fileBat);
?>

View file

@ -0,0 +1,86 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'classement';
$titre = 'Classement';
if (isset($_GET['q']) && is_numeric($_GET['q']) && $_GET['q'] > 0) $pageClassement = $_GET['q'];
else $pageClassement = 1;
if (isset($_GET['e'])) {
if ($_GET['e'] == 'batiment') $export = 'batiments';
elseif ($_GET['e'] == 'flotte') $export = 'flottes';
elseif ($_GET['e'] == 'recherches') $export = 'recherches';
else $export = 'points';
}
else $export = 'points';
if (isset($_GET['t'])) {
if ($_GET['t'] == '0') $TypeSearch = '0';
else $TypeSearch = '1';
}
else $TypeSearch = '0';
$nbppage = 100;
if (isset($_GET['c']) && is_numeric($_GET['c']) && $_GET['c'] > 0) $pageClassement = floor($_GET['c']/($nbppage+1))+1;
$pageClassementN = ($pageClassement-1) * $nbppage;
$nbpages = ceil(($nbhumain+$nbcovie)/$nbppage);
if ($pageClassement > $nbpages) $pageClassement = $nbpages;
$TEMP_pages = '<select name="q">';
for($i=1 ; $i<=$nbpages ; $i++) {
if ($i == $pageClassement) $TEMP_pages .= '<option value="'.$i.'" selected="selected">'.(($i-1)*$nbppage+1).'-'.($i*$nbppage).'</option>';
else $TEMP_pages .= '<option value="'.$i.'">'.(($i-1)*$nbppage+1).'-'.($i*$nbppage).'</option>';
}
$TEMP_pages .= '</select>';
$template->assign('q', $TEMP_pages);
//$result = mysql_query("SELECT * FROM `classement` ORDER BY `classement`.`$export` DESC LIMIT $pageClassementN, $nbppage");
$template->assign('t', $TypeSearch);
$plage_debut = $nbppage * $pageClassementN + 1;
$plage_fin = $nbppage * ($pageClassementN + 1) + 1;
if (isset($_GET['t']) && $_GET['t'] == '1')
{
$bdd->connexion();
$result = $bdd->query("SELECT tag, nbr_membres, ".$export.", points_".$export."_by_members FROM classement_alliances ORDER BY ".$export." DESC LIMIT $pageClassementN, $nbppage;");
$bdd->deconnexion();
$nbres = $bdd->num_rows;
$TEMP_classement = array();
$i = ($pageClassement-1)*$nbppage;
$template->assign('export', $export);
for ($i=0; $i<$nbres; $i++) {
$i++;
$TEMP_classement[] = array($i, $data['tag'], $data['nbr_membres'],separerNombres($data[$export]),separerNombres($data["points_".$export."_by_members"]));
}
$template->assign('places', $TEMP_classement);
}
else
{
$bdd->connexion();
$data = $bdd->query("SELECT t1.pseudo, t1.".$export." FROM classement AS t1 ORDER BY t1.".$export." DESC LIMIT $pageClassementN, $nbppage;");
$nbres = $bdd->num_rows;
$TEMP_classement = array();
$j = ($pageClassement-1)*$nbppage;
$template->assign('export', $export);
for ($i=0; $i<$nbres; $i++) {
$race = $bdd->unique_query("SELECT race FROM classement WHERE pseudo = '".$data[$i]['pseudo']."';");
$result2 = $bdd->unique_query("SELECT user.id_alliance FROM user WHERE user.pseudo = '".$data[$i]['pseudo']."';");
$result3 = $bdd->unique_query("SELECT alliances.tag, alliances.nom FROM alliances WHERE alliances.id = '".$result2['id_alliance']."';");
$j++;
$TEMP_classement[] = array($j, $data[$i]['pseudo'], $race['race'], $result3['tag'], $result3['nom'],separerNombres($data[$i][$export]));
}
$bdd->deconnexion();
$template->assign('places', $TEMP_classement);
}
?>

View file

@ -0,0 +1,160 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = '../cms/vide';
$titre = 'Conditions générales d\'utilisation';
$template->assign('contenu','
<h1>Conditions générales pour le site Halo-Battle.s-fr.com</h1>
<div style="text-align: left; margin: 15px; font-size: 115%;">
<br />
Halo, Bungie et Microsoft sont des marques et logos déposés par Microsoft Corporation.<br />
Tous droits réservés Copyright © 2006-2007<br />
halo-battle.s-fr.com Tous droits reservés.<br />
<br />
Le site d\'halo-battle.s-fr.com demande à tous les utilisateurs du jeu de lire et d\'accepter les Conditions Générales énoncées ci-dessous avant de s\'inscrire.<br />
<br />
<br />
Ces Conditions Générales d\'Utilisation ont été publiées le 23/04/2008 et sont applicables à partir du 30/04/2008.<br />
<br />
<br />
<a href="#services">I. Services</a><br />
<a href="#adhesion">II. Adhésion</a><br />
<a href="#protection">III. Protections des données</a><br />
<a href="#responsabilite">IV. Responsabilité</a><br />
<a href="#contenu">V. Contenu / responsabilité envers le contenu</a><br />
<a href="#actions">VI. Actions prohibées</a><br />
<a href="#restrictions">VII. Restrictions</a><br />
<a href="#droits">VIII. Droits de société concernant les comptes</a><br />
<a href="#modification">IX. Modification des Conditions Générales</a><br />
<a href="#loi">X. Loi applicable</a><br />
<br />
<br /><h3 id="services">I. Services</h3><br />
<h4>1 - Conditions de participation</h4><br />
Pour participer à Halo-Battle, l\'utilisateur doit accepter les Conditions Générales. Ces Conditions Générales sont principalement, mais non exclusivement, portées sur les services proposés par la présence en ligne de Halo-Battle.s-fr.com<br />
<br /><h4>2 - Responsabilité</h4><br />
Halo-Battle.s-fr.com est toujours attentif au bon fonctionnement de toutes les prestations qu\'il propose. Néanmoins, certaines desdites prestations peuvent ne pas être disponibles pour des circonstances indépendantes de notre volonté. Pour cette raison, l\'utilisateur ne peut avoir de halo-battle.s-fr.com ne peut être tenu pour responsable du mauvais fonctionnement du serveur ou pour un défaut de programmation. Les exemples précités ne sont pas exclusifs d\'autres possibilités.<br />
<br /><h3 id="adhesion">II. Adhésion</h3><br />
<br /><h4>1 - Conditions d\'adhésion</h4><br />
L\'adhésion commence à partir de l\'enregistrement d\'un compte sur le jeu ou le forum. L\'adresse e-mail utilisée pour cet enregistrement doit être valide. halo-battle.s-fr.com se réserve le droit de vérifier cette validité à n\'importe quel moment.<br />
Les utilisateurs reconnaissent disposer d\'une expérience suffisante en matière d\'utilisation d\'Internet et des fonctionnalités de communication électronique qui y sont liées.<br />
Les utilisateurs du site de halo-battle.s-fr.com sont tenus de s\'assurer de la compatibilité de leur logiciel de navigation avec le site de Halo-Battle.s-fr.com.<br />
<br /><h4>2 - Résiliation par l\'utilisateur</h4><br />
L\'adhésion peut être résiliée par l\'utilisateur par le biais de l\'effacement du compte. Cet effacement peut être retardé pour des questions d\'ordre technique. La gestion des informations concernant les données personnelles du compte est relatif au chapitre 3 des conditions générales d\'utilisation.<br />
<br /><h4>3 - Résiliation par Halo-Battle.s-fr.com</h4><br />
L\'utilisateur ne peut participer à la gestion des services proposés par Halo-Battle.s-fr.com. A ce titre, l\'équipe du jeu se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur, en cas de violation des Conditions Générales, sans que cela ne soit exclusif d\'autres possibilités.<br />
L\'effacement du compte est décidé par l\'ensemble de l\'équipe. Les quelconques revendications concernant un effacement de compte peuvent être portées auprès de l\'équipe du jeu. Il ne peut y avoir de revendications légales concernant la clotûre du compte.<br />
<br /><h3 id="protection">III. Protections des données</h3><br />
<br /><h4>1 - Droit d\'accès aux données</h4><br />
Conformément à la loi du 7 janvier 1978, vous disposez d\'un droit d\'accès, de rectification, de vérification et de suppression relatif aux données vous concernant.<br />
Il vous suffit pour ce faire d\'adresser une demande par e-mail à contact@halo-battle.s-fr.com, Halo-Battle.s-fr.com modifiera et mettra ses informations à jour en conséquent.<br />
<br /><h4>2 - Stockage des données personnelles</h4><br />
Halo-Battle.s-fr.com se réserve le droit de stocker les données personnelles des utilisateurs dans le but de contrôler le respect des règles, des Conditions Générales et des dispositions législatives par lesdits utilisateurs. Les données personnelles concernées peuvent être les adresse IP par connexion, la méthode, l\'heure et les durées de connections, l\'adresse e-mail fournie lors de la création du compte ainsi que, le cas échéant, les données personnelles fournies volontairement par l\'utilisateur par le biais de son profil. Sur les forums, les données personnelles des profils des utilisateurs sont conservées.<br />
<br /><h4>3 - Communication et utilisation des données</h4><br />
Halo-Battle.s-fr.com se réserve le droit, en conformité avec les dispositions du droit français concernant la protection des données personnelles et toutes dispositions législatives applicables, de divulguer les données personnelles aux autorités, qui les requièrent en vue de protéger les intérêts des sociétés ou les éventuels manquements aux dispositions légales concernant la protection des données.
<br /><h4>4 - Opposition</h4><br />
L\'utilisateur peut s\'opposer au stockage de ses données personnelles à tout moment. La participation aux jeux nécessitant le stockage de ces données personnelles, le(s) compte(s) de l\'utilisateur sera(ont) supprimé(s) le plus rapidement possible en fonction des contraintes techniques.<br />
<br /><h3 id="responsabilite">IV. Responsabilité</h3><br />
Halo-Battle.s-fr.com n\'est pas responsable pour les dommages, quelle qu\'en soit la gravité, causés par l\'utilisation du jeu Halo-Battle. halo-battle.s-fr.com rappelle aux joueurs que l\'utilisation excessive des jeux informatiques peut causer de sévères troubles physiques.<br />
<br /><h3 id="contenu">V. Contenu / responsabilité envers le contenu</h3><br />
<br /><h4>1 - Utilisation de la plateforme des utilisateurs</h4><br />
Halo-Battle.s-fr.com fournit une plateforme qui permet à l\'utilisateur de communiquer avec chacun des autres utilisateurs. L\'utilisateur est responsable du contenu de ses propos : les propos pornographiques, xénophobes, insultants ou à contenu illégaux ne sont pas autorisés et relèvent de la responsabilité de leur auteur. En cas de violation, Halo-Battle.s-fr.com se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur fautif et de l\'interdire d\'accès sur l\'ensemble des services proposés par l\'équipe. Ces sanctions ne sont pas exclusives d\'éventuelles poursuites judiciaires et/ou pénales.<br />
<br /><h4>2 - Dommages internes au contenu</h4><br />
L\'utilisateur du site est conscient du fait qu\'Internet n\'est pas un média parfaitement protégé et qu\'une sécurité totale quant au respect de la vie privée ne peut être garantie. Par conséquent, halo-battle.s-fr.com ne sera en aucune manière responsable des dommages éventuels subis par l\'utilisateur du site à la suite de l\'introduction par ce dernier d\'informations confidentielles ou délicates.<br />
<br /><h4>3 - Engagement de Halo-Battle.s-fr.com</h4><br />
halo-battle.s-fr.com s\'engage à mettre en oeuvre tous les moyens raisonnables à sa disposition en vue de permettre aux utilisateurs une utilisation optimale des services proposés. halo-battle.s-fr.com n\'est en conséquence tenue qu\'à une obligation de moyen, et en aucun cas à une obligation de résultat.<br />
halo-battle.s-fr.com ne peut être tenu pour responsable des conséquences de circonstances indépendantes de sa volonté telles que les grèves, lock-out, guerres, intempéries, etc., les défaillances des systèmes informatiques ou des moyens de communication, ou de tout autre événement constitutif d\'un cas de force majeure.<br />
<br /><h4>4 - Mise à disposition des informations</h4><br />
halo-battle.s-fr.com assure la mise à disposition via ce site d\'informations correctes et actualisées et se réserve donc le droit de modifier à tout moment le contenu du site. Toutefois, halo-battle.s-fr.com n\'est en aucun cas responsable des dommages causés à la suite de données éventuellement incorrectes, non actualisées ou incomplètes communiquées via le site.<br />
Les utilisateurs du site de halo-battle.s-fr.com s\'engagent à avertir immédiatement l\'équipe de toute utilisation frauduleuse du site de halo-battle.s-fr.com et à ne pas chercher à nuire à l\'intégrité ou au fonctionnement du site.<br />
<br /><h4>5 - Liens</h4><br />
halo-battle.s-fr.com n\'a aucun pouvoir de vérification et de contrôle quant à la création de liens vers des sites extérieurs et quant au contenu des dits sites, que ces sites soient marchands ou non.<br />
Les propriétaires des sites consultés à partir du site de Halo-Battle.s-fr.com sont, notamment, seuls responsables du respect de l\'ensemble des réglementations s\'appliquant dans le cadre des prestations offertes en ligne, et notamment, des lois et règlements relatifs à la vente à distance, la protection du consommateur, la publicité mensongère ou trompeuse, les prix, la conformité des produits, etc.<br />
Aussi, l\'utilisateur accepte que son choix d\'accéder à un autre site, par l\'intermédiaire d\'un lien hypertexte s\'effectue à ses risques et périls.<br />
En conséquence, tout préjudice direct ou indirect résultant de l\'accès à un site relié par un lien hypertexte ne peut engager la responsabilité de Halo-Battle.s-fr.com<br />
<br /><h3 id="actions">VI. Actions prohibées</h3><br />
<br /><h4>1 - Actions de manipulations</h4><br />
L\'utilisateur n\'a le droit d\'utiliser, un quelconque programme, mécanisme ou logiciel qui pourrait interférer avec les fonctions et/ou le développement du jeu. L\'utilisateur n\'a pas de le droit d\'effectuer une quelconque action qui causerait un ralentissement excessif des capacités techniques du site. L\'utilisateur n\'a pas le droit de bloquer, modifier ou reformuler le contenu créé par l\'équipe de dévellopement du projet.<br />
<br /><h4>2 - Programmes prohibés</h4><br />
Il est interdit de visualiser une quelconque partie du jeu avec un autre programme que les navigateurs Internet prévus à cet effet. Sont visés, tous autres programmes, en particulier ceux connus sous la dénomination de bots (sans que cette appellation soit exclusive), ainsi que tous
outils permettant de simuler, remplacer ou de suppléer le navigateur
internet. De la même manière, sont visés les scripts et les programmes
partiellement ou totalement automatiques qui peuvent procurer un
avantage par rapport aux autres utilisateurs. Les fonctions de
rafraîchissement automatique ("auto-refresh") et autres mécanismes
intégrés dans les navigateurs Internet sont également visés en tant
qu\'actions automatiques. L\'intégralité de ces mécanismes, sans que cela
soit exclusif d\'autres possibilités, est interdit. Le fait de bloquer la
publicité soit intentionnellement soit par le biais d\'un bloqueur de
pop-up voire par le biais d\'un module intégré aux navigateurs Internet
est sans conséquence sur cette interdiction. Les seules exceptions
possibles nécessitent la permission expresse de l\'équipe de Halo-Battle.s-fr.com<br />
<br /><h4>4 - Connexion directe</h4><br />
La connexion au compte de l\'utilisateur est uniquement permise par le
biais de la page d\'accueil du jeu. L\'ouverture automatique ou
automatisée, est interdite, que la page d\'accueil soit affichée ou non.<br />
<br /><h3 id="restrictions">VII. Restrictions</h3><br />
<br /><h4>1 - Nombre maximum de comptes</h4><br />
Chaque utilisateur n\'est autorisé qu\'à utiliser un compte par univers.
Sont dénommés "Multis" les utilisateurs qui n\'agissent pas en accord
avec cette règle. Les "Multis" sont susceptibles de voir leurs comptes
effacés ou bloqués sans avertissement préalable.<br />
<br /><h4>2 - Règles</h4><br />
Les particularités sont visées par les règles du jeu. Tous les
utilisateurs sont soumis à ces dispositions.<br />
<br /><h4>3 - Blocages</h4><br />
L\'utilisateur peut être bloqué de manière temporaire ou définitive. Le
blocage peut être valable sur une partie ou la totalité des services
proposés par Halo-Battle.s-fr.com<br />
<br /><h3 id="droits">VIII. Droits de société concernant les comptes</h3><br />
<br /><h4>1 - Généralités</h4><br />
L\'ensemble des comptes, incluant les ressources, unités, etc, sont des objets virtuels du jeu. L\'utilisateur n\'a pas la propriété ou tout autre type de droits sur le compte. L\'ensemble des droits sont de la propriété de Bungie et Microsoft Corporation. Aucun droit, en particulier ceux concernant l\'exploitation, ne peut être conféré à l\'utilisateur.<br />
<br /><h4>2 - Interdiction d\'exploitation</h4><br />
Il est interdit de contracter avec une tierce partie un quelconque accord concernant le transfert, l\'utilisation ou le stockage des comptes ou des données personnelles. Il est particulièrement interdit de vendre les comptes ou les ressources, voire de faire un quelconque profit en quittant son compte ou ses ressources au profit d\'un tiers. Les mêmes interdictions sont valables pour les données personnelles et les droits d\'utilisation. La violation de ces règles ou de tout autre droit de Bungie et Microsoft Corporation, particulièrement celles concernant le copyright, sera transmise aux autorités et sanctionnée par des poursuites judiciaires et/ou pénales.<br />
<br /><h4>3 - Exceptions</h4><br />
Il est permis de transférer les comptes de manière gratuite, ainsi que d\'échanger des ressources dans les limites permises par les règles du jeu.<br />
<br /><h3 id="modification">IX. Modification des Conditions Générales</h3><br />
Halo-Battle.s-fr.com se réserve le droit de modifier ou d\'étendre les Conditions Générales et les autres dispositions à tout moment. Cette modification ou extension sera publiée au minimum deux semaines avant l\'effectivité des changements.<br />
<br /><h3 id="loi">X. Loi applicable</h3><br />
La législation française est appliquée en cas de recours légal.<br />
</div>');
?>

View file

@ -0,0 +1,136 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
include_once(_FCORE."hb_game/Class/class.gerefile.php");
$page = 'defenses';
$titre = 'Défenses';
$TEMP_ = array();
$nbstop = count($nomterrn);
if (empty($queryPlanete['file_ter'])) $file = new gererFile($queryUser['prodfile']+2);
else {
$file = unserialize($queryPlanete['file_ter']);
$file->limite = $queryUser['prodfile'] + 2;
}
if ($queryPlanete['chantier_terrestre'] == 0) {
$template->assign('message','Vous devez d\'abord construire un '.strtolower($batiment[7]));
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=batiments";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Lancement d'une nouvelle construction
if (isset($_GET['v']) && !empty($nomterrn[$_GET['v']]) && !empty($_POST['nombre'])) {
$i = $_GET['v'];
$nbv = floor($_POST['nombre']);
if(requestDeblok($nomterrnTECH[$i], $queryPlanete, $queryUser) && $nbv > 0) {
$n=($queryPlanete[$nomterrnVAR[$i]]+1);
$a = $nomterrnCALC[$i][0]; $metal -= $a * $nbv;
$b = $nomterrnCALC[$i][1]; $cristal -= $b * $nbv;
$c = $nomterrnCALC[$i][2]; $hydrogene -= $c * $nbv;
if ($metal < 0 || $cristal < 0 || $hydrogene < 0) {
$template->assign('message','Vous n\'avez pas assez de ressources pour démarrer cette construction.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=defenses";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
eval($nomterrnCALC[$i][3]);
if ($file->addObjet($i, $nbv, ceil($sec))) {
$export = serialize($file);
$bdd->connexion();
$bdd->escape($export);
$bdd->query("UPDATE $table_planete SET file_ter = '$export', metal = '$metal', cristal = '$cristal', hydrogene = '$hydrogene' WHERE id = '$idPlan';");
$bdd->deconnexion();
}
else {
$template->assign('message','Vous ne pouvez pas mettre plus de défenses en file d\'attente.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=defenses";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
header('Location: ?p=defenses');
exit;
}
}
//Annulation d'une nouvelle construction
if (isset($_GET['a']) && isset($nomterrn[$_GET['a']])) {
$i = $_GET['a'];
if (!isset($_GET['n'])) $nbv = 1;
else $nbv = $_GET['n'];
if($file->existe($i)) {
$n=($queryPlanete[$nomterrnVAR[$i]]+1);
$a = $nomterrnCALC[$i][0];
$b = $nomterrnCALC[$i][1];
$c = $nomterrnCALC[$i][2];
$nbvr = $file->delobjet($i, $nbv);
$metal += $a*$nbvr;
$cristal += $b*$nbvr;
$hydrogene += $c*$nbvr;
$export = serialize($file);
$bdd->connexion();
$bdd->escape($export);
$bdd->query("UPDATE $table_planete SET file_ter = '$export', metal = '$metal', cristal = '$cristal', hydrogene = '$hydrogene' WHERE id = '$idPlan';");
$bdd->deconnexion();
header('Location: ?p=defenses');
exit;
}
}
//Règler la production à la châine
/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) {
if($_GET['r']) $file->chaine = false;
else $file->chaine = true;
$export = mysql_real_escape_string(serialize($file));
mysql_query("UPDATE planete SET file_ter = '$export' WHERE id = '$idPlan';");
header('Location: ?p=defenses');
exit;
}*/
for ($i=8 ; $i<$nbstop ; $i++) {
$tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0;
$nom_bdd = $nomterrnVAR[$i]; $a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]);
if ($queryPlanete[$nom_bdd] > 0) $nombre = $queryPlanete[$nom_bdd]; else $nombre = 0;
$n=($queryPlanete[$nom_bdd]+1);
if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $queryPlanete, $queryUser)) $TEMP_defenses[] =
array(
'image' => $nomterri[$i],
'nom' => $nomterrn[$i],
'nombre' => $nombre,
'description' => $nomterde[$i],
'descriptione' => addslashes($nomterde[$i]),
'nec_metal' => $a,
'nec_cristal' => $b,
'nec_hydrogene' => $c,
'nec_metalS' => separerNombres($a),
'nec_cristalS' => separerNombres($b),
'nec_hydrogeneS' => separerNombres($c),
'temps' => sec($sec),
'num' => $i
);
}
$template->assign('defenses',$TEMP_defenses);
$template->assign('chaine',$file->chaine);
$fileBat = array_merge($file->file);
$nbfile = count($fileBat);
if ($nbfile == 1) $template->assign('Pchaine',true);
else $template->assign('Pchaine',false);
if ($nbfile == 0) $template->assign('Vchaine',true);
else $template->assign('Vchaine',false);
for ($i=0 ; $i<$nbfile ; $i++) {
$fileBat[$i][3] = $nomterrn[$fileBat[$i][0]];
$fileBat[$i][4] = $fileBat[$i][2]*$fileBat[$i][1];
if ($i == 0) {
$fileBat[$i][2] -= time() - $file->timestamp;
$fileBat[$i][4] -= time() - $file->timestamp;
}
}
$template->assign('file',$fileBat);
?>

View file

@ -0,0 +1,155 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'description';
$titre = 'D&eacute;tails';
function tableauProd($ibat,$nivo){
$temps_ecoule = 3600;
$return = array();
$c = $nivo-2 < 1 ? 1 : $nivo-2;
$a = $c + 6;
if ($ibat == 0) {
for ($c; $c < $a; $c++) {
$b = ((ceil(pow(1.1,$c)*35*$c)/3600)*$temps_ecoule)*1.5;
$h = (((ceil(pow(1.1,$c)*35*$c)/3600)*$temps_ecoule)*1.5) - (((ceil(pow(1.1,($c-1))*35*($c-1))/3600)*$temps_ecoule)*1.5);
$p = ceil(exp(0.28*$c)*10);
$g = ceil(exp(0.28*$c)*10) - ceil(exp(0.28*($c-1))*10);
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
else $return[] = array($c, $b, $h, $p, $g, false);
}
}
elseif ($ibat == 1) {
for ($c; $c < $a; $c++) {
$b = ((ceil(pow(1.1,$c)*23*$c)/3600)*$temps_ecoule)*1.5;
$h = (((ceil(pow(1.1,$c)*23*$c)/3600)*$temps_ecoule)*1.5) - (((ceil(pow(1.1,($c-1))*23*($c-1))/3600)*$temps_ecoule)*1.5);
$p = ceil(exp(0.28*$c)*10);
$g = (ceil(exp(0.28*$c)*10)) - (ceil(exp(0.28*($c-1))*10));
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
else $return[] = array($c, $b, $h, $p, $g, false);
}
}
elseif ($ibat == 2) {
for ($c; $c < $a; $c++) {
$b = (((ceil(pow(1.1,$c)*14*($c+0.7))/3600)*$temps_ecoule))*1.5;
$h = ((((ceil(pow(1.1,$c)*14*($c+0.7))/3600)*$temps_ecoule))*1.5) - ((((ceil(pow(1.1,($c-1))*14*(($c-1)+0.7))/3600)*$temps_ecoule))*1.5);
$p = ceil(exp(0.2849*$c)*13);
$g = (ceil(exp(0.2849*$c)*13)) - (ceil(exp(0.2849*($c-1))*13));
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
else $return[] = array($c, $b, $h, $p, $g, false);
}
}
elseif ($ibat == 3) {
for ($c; $c < $a; $c++) {
$b = ceil(exp(0.297*$c)*25);
$h = ceil(exp(0.297*$c)*25) - ceil(exp(0.297*($c-1))*25);
if ($c == $nivo) $return[] = array($c, $b, $h, 0, 0, true);
else $return[] = array($c, $b, $h, 0, 0, false);
}
}
elseif ($ibat == 4) {
for ($c; $c < $a; $c++) {
$b = ceil(exp(0.28*$c)*22);
$h = ceil(exp(0.28*$c)*22) - ceil(exp(0.28*($c-1))*22);
$p = ((ceil(pow(1.34,($c-1))*9)/3600)*$temps_ecoule);
$g = ((ceil(pow(1.34,($c-1))*9)/3600)*$temps_ecoule) - ((ceil(pow(1.34,($c-2))*9)/3600)*$temps_ecoule);
if ($c == $nivo) $return[] = array($c, $b, $h, $p, $g, true);
else $return[] = array($c, $b, $h, $p, $g, false);
}
}
else $return = '';
if ($return == '') return false;
else return $return;
}
if (isset($_GET['b']) && is_numeric($_GET['b']) && $_GET['b'] < count($batiment)) {
$template->assign('type', 'batiments');
$t = $_GET['b'];
$nom_bdd = $batimentVAR[$t];
$template->assign('t', $t);
$template->assign('image', $batimeni[$t]);
$template->assign('nom', $batiment[$t]);
$template->assign('niveau', $queryPlanete[$nom_bdd]);
$template->assign('description', $batimede[$t]);
$template->assign('tableau_prod', tableauProd($t, $queryPlanete[$nom_bdd]));
$n=($queryPlanete[$nom_bdd]+1);
$a = 0; $b = 0; $c = 0; $sec = 0;
eval($batimentCALC[$t][0]);
eval($batimentCALC[$t][1]);
eval($batimentCALC[$t][2]);
eval($batimentCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($batimentTECH[$t], $queryPlanete, $queryUser));
}
elseif (isset($_GET['t']) && is_numeric($_GET['t']) && $_GET['t'] < count($technolo)) {
$template->assign('type', 'technologies');
$t = $_GET['t'];
$nom_bdd = $technoloVAR[$t];
$template->assign('image', $technoli[$t]);
$template->assign('nom', $technolo[$t]);
$template->assign('niveau', $queryUser[$nom_bdd]);
$template->assign('description', $technode[$t]);
$n=($queryUser[$nom_bdd]+1);
$a = 0; $b = 0; $c = 0; $sec = 0;
eval($technoloCALC[$t][0]);
eval($technoloCALC[$t][1]);
eval($technoloCALC[$t][2]);
eval($technoloCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($technoloTECH[$t], $queryPlanete, $queryUser));
}
elseif (isset($_GET['v']) && is_numeric($_GET['v']) && $_GET['v'] < count($nomvaisn)) {
$template->assign('type', 'vaisseaux');
$t = $_GET['v'];
$nom_bdd = $nomvaisnVAR[$t];
$template->assign('image', $nomvaisi[$t]);
$template->assign('nom', $nomvaisn[$t]);
$template->assign('niveau', $queryPlanete[$nom_bdd]);
$template->assign('description', $nomvaisd[$t]);
$n=($queryPlanete[$nom_bdd]+1);
$a = $nomvaisnCALC[$t][0]; $b = $nomvaisnCALC[$t][1]; $c = $nomvaisnCALC[$t][2]; $sec = 0;
eval($nomvaisnCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($nomvaisnTECH[$t], $queryPlanete, $queryUser));
$template->assign('caract', array($nomvais_at[$t], $nomvais_bc[$t], $nomvais_pv[$t], $nomvais_rs[$t]));
}
elseif (isset($_GET['d']) && is_numeric($_GET['d']) && $_GET['d'] < count($nomterrn)) {
$template->assign('type', 'terrestre');
$t = $_GET['d'];
$nom_bdd = $nomterrnVAR[$t];
$template->assign('image', $nomterri[$t]);
$template->assign('nom', $nomterrn[$t]);
$template->assign('niveau', $queryPlanete[$nom_bdd]);
$template->assign('description', $nomterde[$t]);
$n=($queryPlanete[$nom_bdd]+1);
$a = $nomterrnCALC[$t][0]; $b = $nomterrnCALC[$t][1]; $c = $nomterrnCALC[$t][2]; $sec = 0;
eval($nomterrnCALC[$t][3]);
$template->assign('ressourcesNext', array(separerNombres($a), separerNombres($b), separerNombres($c), sec($sec)));
$template->assign('etat', readDeblok($nomterrnTECH[$t], $queryPlanete, $queryUser));
if ($t-8 >= 0) {
$t -= 8;
$template->assign('caract', array($defense_at[$t], $defense_bc[$t], $defense_pv[$t]));
}
}
else {
header('Location: ?p=accueil');
}
?>

View file

@ -0,0 +1,36 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'envoyer';
$titre = 'Envoyer un message';
if (!empty($_POST['objet']) && !empty($_POST['nom']) && !empty($_POST['message'])) {
$util = $_POST['nom'];
$bdd->connexion();
$bdd->escape($util);
if ($bdd->unique_query("SELECT pseudo FROM $table_user WHERE pseudo = '$util';")) {
$message = htmlspecialchars($_POST['message']);
$objet = htmlspecialchars($_POST['objet']);
$bdd->escape($message);
$bdd->escape($objet);
$bdd->query("INSERT INTO $table_mail VALUES(NULL, '1', '$util', '".$queryUser["pseudo"]."', '$objet', '$message', '".time()."');");
$bdd->deconnexion();
$template->assign('message','Votre message a été envoyé avec succès.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=messagerie";\', 2500);</script>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
else {
$bdd->deconnexion();
$template->assign('message','Impossible de trouver le destinataire du message.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=envoyer";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
if (isset($_GET['d'])) $template->assign('destinataire', $_GET['d']);
if (isset($_GET['o'])) $template->assign('objet', $_GET['o']);
?>

463
onyx/hb_game/jeu/flotte.php Normal file
View file

@ -0,0 +1,463 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Flottes';
if (!empty($_POST['cds']) && !empty($_POST['nomflotte']) && !empty($_POST['amas']) && !empty($_POST['ss']) && !empty($_POST['pos']) && !empty($_POST['vitesse']) && !empty($_POST['mission']) && isset($_POST['metal']) && isset($_POST['cristal']) && isset($_POST['hydrogene'])) {
$end_galaxie = floor($_POST['amas']);
$end_ss = floor($_POST['ss']);
$end_pos = floor($_POST['pos']);
$mission = floor($_POST['mission']);
$tactique = floor($_POST['tactique']);
$EBmetal = floor($_POST['metal']);
$EBcristal = floor($_POST['cristal']);
$EBhydrogene = floor($_POST['hydrogene']);
$vitesse = floor($_POST['vitesse'])/100;
$bdd->connexion();
$bdd->escape($end_galaxie);
$bdd->escape($end_ss);
$bdd->escape($end_pos);
$bdd->escape($mission);
$bdd->escape($tactique);
$bdd->escape($EBmetal);
$bdd->escape($EBcristal);
$bdd->escape($EBhydrogene);
$bdd->escape($vitesse);
$resultat = $bdd->query("SELECT id FROM $table_flottes WHERE id_user = '$id_user'");
$nbr = $bdd->num_rows;
//Vérification du code anti-bots
if ($_POST['cds'] != $sess->values['flcds']) {
$template->assign('message','Impossible d\'authentifier l\'envoie de la flotte.<br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Si la mission est d'attaquer, on vérifie que les attaques ne soient pas désactivées
elseif ($mission == 1 && !ATTAQUES) {
$template->assign('message','Les attaques sont désactivées pour le moment. Pour plus d\'informations, <a href="http://halo-battle.s-fr.com/forum/">consultez le forum</a>.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 5000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Vérification que la destination ne soit pas en dehors de la galaxie
elseif ($end_galaxie > MAX_AMAS || $end_ss > MAX_SYSTEME || $end_pos > MAX_PLANETE || $end_galaxie < 0 || $end_ss < 1 || $end_pos < 1 || ($end_galaxie < 1 && $sess->values['auth_level'] < 6)) {
$template->assign('message','La destination de la flotte n\'est pas correcte.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Vérification que le nombre de slots ne soit pas dépassé
elseif ($nbr > $queryUser['informatique']) {
$template->assign('message','Vous n\'avez pas assez de slots disponibles.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la mission
elseif ($mission < 1 || $mission > 5) {
$template->assign('message','Mission incorrecte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Si la mission est d'attaquer, on vérifie la tactique
elseif ($mission == 1 && $tactique > $queryUser['tactique']) {
$template->assign('message','Vous ne connaissez pas cette tactique de combat !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes
elseif ($mission == 5 && (!isset($sess->values['vais'][4]) || $sess->values['vais'][4] < 0)) {
$template->assign('message','Vous ne pouvez pas espionner sans sonde d\'espionnage !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la mission, si elle est de coloniser, il faut qu'il y ait des vaisseaux de colonisation
elseif ($mission == 3 && (!isset($sess->values['vais'][3]) || $sess->values['vais'][3] < 0)) {
$template->assign('message','Vous ne pouvez pas coloniser sans vaisseau de colonisation !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs
elseif ($mission == 4 && (!isset($sess->values['vais'][5]) || $sess->values['vais'][5] < 0)) {
$template->assign('message','Vous ne pouvez pas coloniser sans vaisseau de colonisation !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie que l'on possède assez de ressources
elseif ((!empty($EBmetal) && !$EBmetal > $queryPlanete['metal']) || (!empty($EBcristal) && !$EBcristal > $queryPlanete['cristal']) || (!empty($EBhydrogene) && !$EBhydrogene > $queryPlanete['hydrogene'])) {
$template->assign('message','Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie que l'on n'envoie pas des ressources négatives
elseif ((!empty($EBmetal) && $EBmetal < 0) || (!empty($EBcristal) && $EBcristal < 0) || (!empty($EBhydrogene) && $EBhydrogene < 0)) {
$template->assign('message','Vous avez spécifié des valeurs négatives !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On vérifie la vitesse du vaisseau
elseif (!is_numeric($vitesse) || $vitesse < 0 || $vitesse > 100) {
$template->assign('message','La vitesse de votre flotte est incorrecte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$resultat = $bdd->unique_query("SELECT * FROM $table_planete WHERE galaxie = '$end_galaxie' AND ss = '$end_ss' AND position = '$end_pos';");
//Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances
if ($mission == 1) {
//Récupération de l'ID du joueur cible
$rech_user = $resultat['id_user'];
$resultatu = $bdd->unique_query("SELECT * FROM $table_user WHERE id = '$rech_user';");
if ($resultatu['mv'] != 0) {
$template->assign('message','Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($resultatu['time_inscription'] + 604800 > time()) {
$template->assign('message','Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif (!$resultat) {
$template->assign('message','La planète que vous tentez d\'attaquer est inhabitée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($resultat['id_user'] == $id_user) {
$template->assign('message','La planète que vous tentez d\'attaquer vous appartient.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif ($mission == 2 && !$resultat) {
$template->assign('message','Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($mission == 3 && $resultat) {
$template->assign('message','La planète que vous voulez coloniser est déjà habitée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($sess->values['forceFlotte'])) {
$sess->values['forceFlotte'] = true;
$sess->put();
$template->assign('message','Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].<br />Vous pouvez forcer le lancement de la flotte en rechargeant cette page.');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//Création de la flotte
$req = '';
$reqb = '';
$reqPlan = '';
$nbVais = '';
$nbI = count($nomvaisa);
for ($i=1 ; $i<=$nbI ; $i++) {
if (!empty($sess->values['vais'][$i])) {
if ($sess->values['vais'][$i] > $queryPlanete['vaisseau_'.$i]) {
$template->assign('message','Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$req .= "'".$sess->values['vais'][$i]."', ";
$reqb .= "vaisseau_$i, ";
if (!empty($reqPlan)) $reqPlan .= ', ';
$reqPlan .= "vaisseau_$i = vaisseau_$i - '".$sess->values['vais'][$i]."'";
$nbVais += $sess->values['vais'][$i];
}
}
}
if ($nbVais <= 0) {
$template->assign('message','Vous devez envoyer au moins un vaisseau pour former une flotte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($sess->values['flnbvais'] != $nbVais) {
$template->assign('message','Une erreur est survenue lors de la création de la flotte :<br /><br /><i>Calcul du nombre de vaisseaux incorrect !</i><br /><br />Si le problème perciste, <a href="">contactez un administrateur</a>.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 4500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
//Envoie de la flotte
$nom = $_POST['nomflotte'];
$bdd->escape($nom);
$start_time = time();
$start_galaxie = $queryPlanete['galaxie'];
$start_ss = $queryPlanete['ss'];
$start_pos = $queryPlanete['position'];
$end_time = vais_tempsDeplacement($start_galaxie, $start_ss, $start_pos, $end_galaxie, $end_ss, $end_pos, $sess->values['flvitesse'], $vitesse, $sess->values['flpreparation'], $sess->values['flchauffe']);
if ($end_time <= 0) {
$end_time = 454;
}
//On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie
$conso = vais_conso($end_time, $nbVais)*$vitesse/45*2;
$contenu_metal = $_POST['metal']; $bdd->escape($contenu_metal); $plan_metal = $queryPlanete['metal'] - $contenu_metal;
$contenu_cristal = $_POST['cristal']; $bdd->escape($contenu_cristal); $plan_cristal = $queryPlanete['cristal'] - $contenu_cristal;
$contenu_hydrogene = $_POST['hydrogene']; $bdd->escape($contenu_hydrogene); $plan_hydrogene = $queryPlanete['hydrogene'] - $contenu_hydrogene - $conso;
$contenu_max = $sess->values['flcontenu'];
if ($contenu_metal + $contenu_cristal + $contenu_hydrogene + $conso > $contenu_max && ($contenu_metal + $contenu_cristal + $contenu_hydrogene != 0 || $mission != 5)) {
$template->assign('message','Vous ne pouvez pas embarquer autant de ressources, les cales débordent.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($plan_metal < 0 || $plan_cristal < 0 || $plan_hydrogene < 0) {
$template->assign('message','Vous n\'avez pas assez de ressources sur cette planète pour envoyer cette flotte.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
if ($mission == 1) {
$tactiqueAT = $_POST['tactique'];
$bdd->escape($tactiqueAT);
$tactiqueEN = $resultatu['tactique'];
$bdd->escape($tactiqueEN);
}
else {
$tactiqueAT = 0;
$tactiqueEN = 0;
}
$bdd->query("INSERT INTO $table_flottes (id_user, mission, start_time, start_galaxie, start_ss, start_position, end_time, end_galaxie, end_ss, end_position, vitesse, contenu_metal, contenu_cristal, contenu_hydrogene, contenu_max, nb_vais, $reqbtactiqueAT, tactiqueEN, nom) VALUES ('$id_user', '$mission', '$start_time', '$start_galaxie', '$start_ss', '$start_pos', '$end_time', '$end_galaxie', '$end_ss', '$end_pos', '$vitesse', '$contenu_metal', '$contenu_cristal', '$contenu_hydrogene', '$contenu_max', '$nbVais', $req'$tactiqueAT', '$tactiqueEN', '$nom');");
$bdd->query("UPDATE $table_planete SET $reqPlan, metal = '$plan_metal', cristal = '$plan_cristal', hydrogene = '$plan_hydrogene' WHERE id = '$idPlan' LIMIT 1 ;");
$bdd->deconnexion();
unset($sess->values['vais']);
$sess->put();
file_log('Envoie d\'une flotte');
$template->assign('message','Votre flotte a été envoyée avec succès.');
$template->assign('couleur','green');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 4000);</script>');
$template->display('game/erreur.tpl');
exit;
}
}
}
}
elseif (!empty($_POST['v1']) || !empty($_POST['v2']) || !empty($_POST['v3']) || !empty($_POST['v4']) || !empty($_POST['v5']) || !empty($_POST['v6']) || !empty($_POST['v7']) || !empty($_POST['v8']) || !empty($_POST['v9']) || !empty($_POST['v10']) || !empty($_POST['v11']) || !empty($_POST['v12'])) {
$nombreVaisseau = 0;
for ($i=1 ; $i<=12 ; $i++) {
if (!isset($_POST['v'.$i]) || !is_numeric($_POST['v'.$i]) || $_POST['v'.$i] != abs(floor($_POST['v'.$i]))) $_POST['v'.$i] = 0;
if ($_POST['v'.$i] >= 0 && $i != 11) {
$sess->values['vais'][$i] = $_POST['v'.$i];
$nombreVaisseau += $_POST['v'.$i];
//Si on indique un nombre de vaisseaux supérieur au nombre présent sur la planète
if ($_POST['v'.$i] > $queryPlanete['vaisseau_'.$i]) {
$template->assign('message','Il ne vous reste plus assez de vaisseaux !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
}
$sess->values['flnbvais'] = $nombreVaisseau;
$sess->values['forceFlotte'] = false;
//On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau
if ($nombreVaisseau <= 0) {
$template->assign('message','Vous devez envoyer au moins un vaisseau.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 2000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
//On ajoute des missions supplémentaire suivant les vaisseaux envoyés
$lvltactique = $queryUser['tactique'];
$actionsupp = '';
if ($lvltactique >= 1) $actionsupp .= '<option value="1" selected="selected">Attaquer</option>';
if ($_POST['v3'] >= 1) $actionsupp .= '<option value="3" selected="selected">Coloniser</option>';
if ($_POST['v5'] >= 1) $actionsupp .= '<option value="4" selected="selected">Recycler</option>';
if ($_POST['v4'] >= 1) $actionsupp .= '<option value="5" selected="selected">Espionner</option>';
$template->assign('actionsupp', $actionsupp);
// Définition des paramètres de la flotte
$AvaisType = array(); $AvaisVitesseC = array(); $AvaisVitesseL = array(); $AvaisPrepC = array(); $AvaisPrepL = array(); $AvaisChauffe = array(); $AvaisContenu = 0;
for ($i=1 ; $i<=12 ; $i++) {
$AvaisType[] = $i;
$AvaisVitesseC[] = $nomvais_dc[$i-1];
$AvaisVitesseL[] = $nomvais_dl[$i-1];
$AvaisContenu += $nomvais_rs[$i-1] * $_POST['v'.$i];
$AvaisPrepC[] = $nomvais_pdc[$i-1].' ';
$AvaisPrepL[] = $nomvais_pdl[$i-1].' ';
$AvaisChauffe[] = $nomvais_cdl[$i-1].' ';
}
if(min($AvaisVitesseL) != 0) {
$sess->values['flvitesse'] = max($AvaisVitesseL);
$sess->values['flpreparation'] = max($AvaisPrepL);
$sess->values['flchauffe'] = max($AvaisChauffe);
}
else {
$sess->values['flvitesse'] = max($AvaisVitesseC);
$sess->values['flpreparation'] = max($AvaisPrepC);
$sess->values['flchauffe'] = 0;
}
$sess->values['fltime'] = time();
$sess->values['flcontenu'] = $AvaisContenu;
//On enregistre les modification de la session
$sess->put();
$page = 'flotte2';
$template->assign('scripth', '<script src="js/prototype.js" type="text/javascript"></script>');
$template->assign('script', '<script type="text/javascript">document.getElementById(\'nom\').focus();</script><script src="js/flotte.js" type="text/javascript"></script>');
}
elseif (!empty($_GET['n'])) {
$idN = ceil($_GET['n']);
$bdd->connexion();
$bdd->escape($idN);
$resultat = $bdd->unique_query("SELECT * FROM $table_flottes WHERE id_user = '$id_user' AND id = '$idN'");
if (isset($_GET['a']) && isset($sess->values['ret_fleet']) && $_GET['a'] == $sess->values['ret_fleet']) {
//Calcul du temps passé depuis le lancement de la flotte
$tpsDD = time() - $resultat['start_time'];
if ($resultat['mission'] == '6') {
$template->assign('message','Votre flotte est déjà en train de revenir !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte&n='.$idN.'";\', 1500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
elseif ($resultat['end_time'] > $tpsDD) {
$bdd->query("UPDATE $table_flottes SET mission = '6', end_time = '$tpsDD', end_galaxie = start_galaxie, end_ss = start_ss, end_position = start_position WHERE id_user = '$id_user' AND id = '$idN';");
header('Location: ?p=flotte&n='.$idN);
exit;
}
else {
$template->assign('message','Impossible d\'annuler la mission, elle a déjà commencée.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte&n='.$idN.'";\', 1500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
$page = 'flotten';
if ($bdd->num_rows <= 0) {
$template->assign('message','Impossible de trouver cette flotte !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=flotte";\', 1500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
if (!empty($_POST['nomflotte'])) {
$nom = $_POST['nomflotte'];
$bdd->escape($nom);
$bdd->unique_query("UPDATE $table_flottes SET nom = '$nom' WHERE id = '$idN' LIMIT 1;");
$resultat['nom'] = $nom;
}
$bdd->deconnexion();
$resultat['contenu_metalF'] = separerNombres($resultat['contenu_metal']);
$resultat['contenu_cristalF'] = separerNombres($resultat['contenu_cristal']);
$resultat['contenu_hydrogeneF'] = separerNombres($resultat['contenu_hydrogene']);
$resultat['contenu_maxF'] = separerNombres($resultat['contenu_max']);
$resultat['missionF'] = txtmission($resultat['mission']);
$resultat['tactiqueAtDef'] = txtTactique($queryUser['combatAT_tactique']);
$resultat['tactiqueF'] = txtTactique($resultat['tactiqueAT']);
$resultat['end_timeT'] = $resultat['start_time'] + $resultat['end_time'];
$sess->values['ret_fleet'] = sha1('HB.fleet_'.rand().'☺ß☻');
$sess->put();
$template->assign('ret_fleet', $sess->values['ret_fleet']);
$template->assign('flotte', $resultat);
$template->assign('nomvais', $nomvaisa);
$template->assign('n', $idN);
}
}
else {
$page = 'flotte1';
$bdd->connexion();
$resultat = $bdd->query("SELECT * FROM $table_flottes WHERE id_user = '$id_user';");
$bdd->deconnexion();
$nbr = $bdd->num_rows;
$TEMP_flottesEC = array();
for ($i=0 ; $i<$nbr ; $i++) {
if ($resultat[$i]['mission'] != 1 && ($resultat[$i]['mission'] != 3 || $resultat[$i]['effectue'] == '1' || $resultat[$i]['nb_vais'] >= 1) && $resultat[$i]['mission'] != 0) {
$retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position'];
$Hretour = date('d/m H:i:s',$resultat[$i]['start_time']+2*$resultat[$i]['end_time']);
}
elseif ($resultat[$i]['mission'] == 1) {
$retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position'];
if (empty($resultat[$i]['ret_time'])) $Hretour = '-';
else $Hretour = date('d/m H:i:s',$resultat[$i]['ret_time']+$resultat[$i]['end_time']);
}
else {
$retour = '-';
$Hretour = '-';
}
$TEMP_flottesEC[] = array($resultat[$i]['id'], $resultat[$i]['nom'], txtmission($resultat[$i]['mission']), $resultat[$i]['nb_vais'], $resultat[$i]['end_galaxie'].':'.$resultat[$i]['end_ss'].':'.$resultat[$i]['end_position'], date('d/m H:i:s',$resultat[$i]['start_time']+$resultat[$i]['end_time']), $retour, $Hretour);
}
$template->assign('flottesEC', $TEMP_flottesEC);
$TEMP_vaisseaux = array();
$j=0;
for ($i=1 ; $i<=12 ; $i++) {
if ($queryPlanete['vaisseau_'.$i] > 0 && $i != 11) {
$j++;
$TEMP_vaisseaux[] = array($nomvaisa[$i-1], separerNombres($queryPlanete['vaisseau_'.$i]), $queryPlanete['vaisseau_'.$i], $i);
}
}
$template->assign('vaisseaux', $TEMP_vaisseaux);
$trez = $queryUser["informatique"] + 1;
if ($nbr < $trez) $template->assign('action', '<input class="submit" type="submit" value="OK" />');
else $template->assign('action', '<span class="lack">Nombre de flottes maximum simultaniées atteint</span>');
$template->assign('nbflotte', $nbr);
$template->assign('nbflottemax', $trez);
}
?>

View file

@ -0,0 +1,142 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
require_once('Class/class.phpmailer.php');
session_start();
$page = 'inscription';
$erreurs = '';
$inscriptOk = true;
if (isset($_POST['HB_pseudo']) && isset($_POST['HB_mdp']) && isset($_POST['HB_conf']) && isset($_POST['HB_mail']) && isset($_POST['servers']) && isset($_POST['HB_captcha']) && isset($_POST['HB_placement'])) {
$base = new bdd();
$base->connexion();
$base->db();
$pseudo = mysql_real_escape_string(htmlentities($_POST['HB_pseudo']));
$mdp = $_POST['HB_mdp'];
$mdpconf = $_POST['HB_conf'];
$mail = mysql_real_escape_string(htmlentities($_POST['HB_mail']));
if (!isset($_POST['race'])) $_POST['race'] = '';
$race = mysql_real_escape_string(htmlentities($_POST['race']));
$server = mysql_real_escape_string(htmlentities($_POST['servers']));
$captcha = mysql_real_escape_string(htmlentities($_POST['HB_captcha']));
$placement = mysql_real_escape_string(htmlentities($_POST['HB_placement']));
if (!isset($_POST['regles'])) $_POST['regles'] = '';
$regles = htmlentities($_POST['regles']);
//Vérification relative au pseudo : caractéres utilisés + disponibilité
if (addslashes(preg_replace('@[^a-zA-Z0-9_]@i', '', $pseudo)) != $pseudo || $pseudo == '') {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Le pseudo contient des caractères incorrects.</b><br />Les caractères autorisés sont les lettres minuscules ou majuscules de A à Z sans les accents, ainsi que les chiffres et les caractères . _</p><br />';
}
else {
$result = mysql_query("SELECT `pseudo` FROM `user_inscriptions` WHERE pseudo = '$pseudo'");
if(mysql_num_rows($result) >= 1) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Le pseudo est déjà utilisé par un joueur.</b><br />Vous devez choisir un autre pseudo.</p><br />';
}
}
//Vérification du mot de passe :
if ($mdp == '' || $mdp != $mdpconf) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Mots de passe différents ou ne comportant pas assez de caractères</b><br />Vous devez impérativement choisir un mot de passe pour sécuriser votre compte. Si vous avez spécifié un mot de passe, il se peut que vous n\'ayez pas indiqué le même mot de passe dans la case de confirmation.</p><br />';
}
//Vérification relative au mail : caractéres utilisés + disponibilité
if (!preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i', $mail) || empty($mail)) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>L\'adresse électronique n\'est pas valide.</b><br />L\'adresse électronique que vous avez tappé est invalide ou contient des caractères interdits, recommencez.</p><br />';
}
else {
$result = mysql_query("SELECT mail FROM `user_inscriptions` WHERE mail='$mail'");
if(mysql_num_rows($result) >= 1) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>L\'adresse électronique que vous avez indiqué est déjà associée à un compte.</b><br>Vous devez choisir une autre adresse électronique.</p><br />';
}
}
//Vérification de la race choisie
if ($race != 'covenant' && $race != 'humain') {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Aucune race choisie</b><br />Vous devez choisir la race que vous désirez incarner dans le jeu.</p><br />';
}
//Vérification du serveur
if (is_numeric($server) && $server > 1) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Galaxie incorrecte</b><br />Vous devez choisir une galaxie (un serveur) dans la liste ci-dessous pour pouvoir jouer.</p><br />';
}
//Vérification du partenaire
if (!empty($placement)) {
$result = mysql_query("SELECT `pseudo` FROM `user_inscriptions` WHERE pseudo = '$placement'");
if(mysql_num_rows($result) == 0) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Impossible de trouver le joueur ami.</b><br />Vous devez choisir un autre pseudo.</p><br />';
}
}
//Vérification du captcha
if (empty($sess->values['aleatnbr']) && isset($_SESSION['aleat_nbr'])) {
$sess->values['aleatnbr'] = $_SESSION['aleat_nbr'];
}
if (empty($sess->values['aleatnbr']) || empty($captcha) || $sess->values['aleatnbr'] != strtolower($captcha)) {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Code de vérification incorrect :</b><br />Le texte que vous avez recopier ne correspondait pas au texte de l\'image, veuillez recommencer.</p><br />';
}
//Vérification du captcha
if (empty($regles) || $regles != '1') {
$inscriptOk = false;
$erreurs .= '<p style="color: #FF0000"><b>Vous devez accepter les conditions générales</b><br />';
}
if ($inscriptOk) {
$time = time();
$ip = $_SERVER["REMOTE_ADDR"];
// Activer la ligne suivante pour crypter les mots de passe dans la base de données
$mdp = sha1(strtoupper($pseudo).':'.$mdp); // Cryptage du mot de passe pour éviter le piratage de compte
$id_activ = sha1('H'.rand().'/|\\'.rand().'B£');
$Nmail = $mail;
//On envoie le mail de confirmation
$mail = new PHPmailer();
$mail->SetLanguage('fr', 'Class/');
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host='s-fr.com';
$mail->From='no-reply@halo-battle.s-fr.com';
$mail->FromName='Halo-Battle';
$mail->SMTPAuth=true;
$mail->Username='no-reply@halo-battle.s-fr.com';
$mail->Password='hD3e2nXu';
$mail->AddAddress($Nmail);
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject='Halo-Battle :: Activation de votre compte';
//$mail->Subject='Halo-Battle :: Pre-Inscription';
$mail->Body='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Activation de votre compte</title></head><body><p>Bonjour '.$pseudo.',<br />Vous recevez ce mail suite à votre demande d\'inscription sur le jeu <a href="http://www.halo-battle.s-fr.com/">Halo-Battle</a>. Pour confirmer votre adresse mail et ainsi pouvoir acc&eacute;der au jeu, cliquez sur le lien ci-apr&egrave;s :<br /><a href="http://halo-battle.s-fr.com/?p=validation&i='.$id_activ.'">http://halo-battle.s-fr.com/?p=validation&i='.$id_activ.'</a><br /><br />A bient&ocirc;t dans Halo-Battle,<br />Le staff</p></body></html>';
//$mail->Body='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: Pr&eacute;-Inscription</title></head><body><p>F&eacute;licitations '.$pseudo.' !<br />Votre compte vient d&#39;&ecirc;tre enregistr&eacute; sur notre serveur. Un mail de confirmation vous sera envoy&eacute; lors de la sortie du jeu en ligne Halo-Battle. Si vous ne recevez pas l\'email de confirmation, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.<br /><br />A tr&egrave;s bient&ocirc;t pour la sortie d&#39;Halo-Battle !</p></body></html>';
if(!$mail->Send()){
$template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
else{
mysql_query("INSERT INTO `user_inscriptions` (`id_activ`, `pseudo`, `race`, `mdp`, `mail`, `last_ip`, `placement`, `time_inscription`, `last_visite`) VALUES ('$id_activ', '$pseudo', '$race', '$mdp', '$Nmail', '$ip', '$placement', '$time', '$time')") or die ('MYSQLERREUR'.mysql_error());
$template->assign('message','F&eacute;licitations, votre compte vient d\'être cr&eacute;&eacute; sur le serveur '.$server.' de Halo-Battle.<br /><br />Un courriel de confirmation vient d\'être envoy&eacute; à votre adresse &eacute;lectronique afin de valider votre inscription au jeu en ligne Halo-Battle.<br /><br />N\'attendez-plus, commencez le combat dès à pr&eacute;sent !');
$template->assign('couleur','green');
$template->display('cms/erreur.tpl');
exit;
}
$mail->SmtpClose();
unset($mail);
}
$base->deconnexion();
}
$template->assign('erreurs',$erreurs);
?>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,9 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$sess->values['connected'] = FALSE;
$sess->close();
header('Location: ./');
exit;
?>

View file

@ -0,0 +1,69 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'messagerie';
$titre = 'Messagerie';
if (isset($_POST['IM'])) {
$stop = false;
for($i=1 ; $i<=$_POST['IM'] ; $i++) {
if (!empty($_POST['m'.$i])) {
$mes = $_POST['m'.$i];
$bdd->connexion();
$bdd->query("DELETE FROM $table_mail WHERE destinataire = '".$queryUser["pseudo"]."' AND id = '$mes';");
$bdd->deconnexion();
$stop = true;
}
}
if ($stop) { header('Location: ?p=messagerie'); exit; }
}
if (isset($_POST['IR'])) {
$stop = false;
for($i=1 ; $i<=$_POST['IR'] ; $i++) {
if (!empty($_POST['r'.$i])) {
$mes = $_POST['r'.$i];
$bdd->connexion();
$bdd->query("UPDATE $table_mail SET vu='s' WHERE destinataire = '".$queryUser["pseudo"]."' AND id = '$mes';");
$bdd->deconnexion();
$stop = true;
}
}
if ($stop) { header('Location: ?p=messagerie'); exit; }
}
$bdd->connexion();
$messcomp = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = '".$queryUser["pseudo"]."' AND expediteur != '' ORDER BY id DESC;");
$nbmax = $bdd->num_rows;
$result = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = '".$queryUser["pseudo"]."' AND expediteur != '' ORDER BY id DESC LIMIT 50;");
if ($queryUser['auth_level'] >= 3 && $nbmax > $i) $result = $messcomp;
elseif ($nbmax > $bdd->num_rows) $template->assign('avertissement', '<p style="color: red; "><b>Vous avez des messages en attente de réception. Libérez de la place dans votre messagerie pour les afficher.</b></p>');
$TEMP_messages = array();
$i=0;
$nbc = count($result);
for ($i=0 ; $i < $nbc ; $i++) {
$TEMP_messages[] = array($result[$i]['sujet'], date("d/m/y H:i:s", $result[$i]['temps']), $result[$i]['expediteur'], bbcode($result[$i]['contenu']), $i+1, $result[$i]['id']);
}
$template->assign('messages', $TEMP_messages);
$template->assign('IM', $i);
$data = $bdd->query("SELECT * FROM $table_mail WHERE destinataire = '".$queryUser["pseudo"]."' AND expediteur = '' AND vu != 's' ORDER BY id DESC;");
$nbres = $bdd->num_rows;
$TEMP_rapport = array();
$i=0;
for($i = 0; $i < $nbres; $i++){
$i++;
$TEMP_rapport[] = array($data[$i]['sujet'], date("d/m/y H:i:s", $data[$i]['temps']), 0, bbcode($data[$i]['contenu']), $i, $data[$i]['id']);
}
$template->assign('rapports', $TEMP_rapport);
$template->assign('IR', $i);
$template->assign('script', '<script>
for (j=1; document.getElementsByName(\'m\'+j)[0]; j++) hide(document.getElementsByName(\'m\'+j)[0].previousSibling);
for (j=1; document.getElementsByName(\'r\'+j)[0]; j++) hide(document.getElementsByName(\'r\'+j)[0].previousSibling);
</script>');
$bdd->query("UPDATE $table_mail SET vu = '0' WHERE destinataire = '".$queryUser["pseudo"]."' AND vu != 's'");
$bdd->deconnexion();
?>

View file

@ -0,0 +1,135 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if (!empty($_GET['cds'])) {
if (!empty($_GET['nom']) && !empty($_GET['race']) && !empty($_GET['mdp']) && !empty($_GET['mail']) && !empty($_GET['ti']) && isset($_GET['placement'])) {
file_log('inscription : login = '.$_POST['HB_login'].' ; password = '.$_POST['HB_password'], 1);
if ($_GET['cds'] == sha1($_GET['nom'].'$'.$_GET['race'].'£'.$_GET['mdp'].'#'.$_GET['mail'].'ß'.$_GET['ti'].'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$_GET['placement'])) {
$base = new bdd();
$base->connexion();
$base->db();
$pseudo = mysql_real_escape_string($_GET['nom']);
$mdp = mysql_real_escape_string($_GET['mdp']);
$race = mysql_real_escape_string($_GET['race']);
$mail = mysql_real_escape_string($_GET['mail']);
$ti = mysql_real_escape_string($_GET['ti']);
$base->query("SELECT * FROM `user` WHERE `pseudo` = '$pseudo' ORDER BY `id` DESC;");
if ($base->num_rows) {
$template->assign('message','Votre compte est déjà créé sur ce serveur !');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
//Création de l'utilisateur
$base->query("INSERT INTO `user` (`pseudo`, `mdp`, `race`, `mail`, `last_ip`, `time_inscription`) VALUES ('$pseudo', '$mdp', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."');");
//Création des bases de la planète
$image = mt_rand(1,15);
$cases = 225;
$queryUser = $base->query("SELECT * FROM `user` WHERE `pseudo` = '$pseudo' ORDER BY `id` DESC;");
$id_user = $queryUser[0]['id'];
$time = time();
//Recherche d'une planète disponible
if (empty($_GET['placement'])) {
$planete_trouvee = false;
while (!$planete_trouvee) {
$galaxie = mt_rand(1, MAX_AMAS);
$ss = mt_rand(1, MAX_SYSTEME);
$pos = mt_rand(1, MAX_PLANETE);
//Test pour savoir si la planète est déjà habitée
$base->query("SELECT id FROM `planete` WHERE galaxie='$galaxie' AND ss='$ss' AND position='$pos'");
if($base->num_rows) $planete_trouvee = false;
else $planete_trouvee = true;
}
$base->query("INSERT INTO `planete` (`id_user`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`) VALUES ('$id_user', 'Planète mère', '$galaxie', '$ss', '$pos', '$image', '$cases', '$time', '1000', '700')");
}
else {
$placement_joueur = $base->unique_query("SELECT * FROM `user` WHERE `pseudo` = '".mysql_real_escape_string($_GET["placement"])."'");
if (!$placement_joueur && !isset($sess->values['forceInscript'])) {
$sess->values['forceInscript'] = true;
$sess->put();
$template->assign('message','Le joueur à côté duquel vous souhaitez être placé n\'est pas encore ou plus inscrit sur ce serveur.<br /><br />Si vous ne souhaitez plus être placé à ses côtés, rechargez la page.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
if (!isset($sess->values['forceInscript'])) {
$placement_planetes = $base->query("SELECT * FROM `planete` WHERE `id_user` = '".$placement_joueur["id"]."'");
$planete_trouvee = false;
$decale = 0;
while (!$planete_trouvee) {
for($i = 0; $i < $base->num_rows ; $i++){
$galaxie = $placement_planetes[$i]['galaxie'];
$ss = $placement_planetes[$i]['ss'] + $decale;
if ($ss >= MAX_SYSTEME) break;
for ($j = 1; $j <= MAX_PLANETE ; $j++) {
$base->query("SELECT * FROM `planete` WHERE galaxie='$galaxie' AND ss='$ss' AND position='$j'");
if(!$base->num_rows) {
$planete_trouvee = true;
$blk_galaxie = $galaxie;
$blk_ss = $ss;
$blk_pos = $j;
break;
}
}
if ($planete_trouvee) break;
}
$decale++;
if ($ss >= MAX_SYSTEME) break;
}
if (!$planete_trouvee) $impplac = true;
}
if (!$planete_trouvee || ($planete_trouvee && !empty($sess->values['forceInscript']))) {
while (!$planete_trouvee) {
$blk_galaxie = mt_rand(1, MAX_AMAS);
$blk_ss = mt_rand(1, MAX_SYSTEME);
$blk_pos = mt_rand(1, MAX_PLANETE);
//Test pour savoir si la planète est déjà habitée
$base->query("SELECT id FROM `planete` WHERE galaxie='$blk_galaxie' AND ss='$blk_ss' AND position='$blk_pos'");
if($base->num_rows) $planete_trouvee = false;
else $planete_trouvee = true;
}
}
$base->query("INSERT INTO `planete` (`id_user`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`) VALUES ('$id_user', 'Planète mère', '$blk_galaxie', '$blk_ss', '$blk_pos', '$image', '$cases', '$time', '1000', '700')");
}
$base->deconnexion();
if (!empty($impplac)) {
$template->assign('message','Impossible de trouver une planète proche du joueur près duquel vous vouliez être placé.<br />Vous avez été placé aléatoirement.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
else {
$template->assign('message','Vous pouvez maintenant vous connectez sur ce serveur !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 3500);</script>');
$template->assign('couleur','green');
$template->display('cms/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Impossible d\'authentifier votre inscription !<br /><br />Si le problème perciste, contactez un administrateur.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Impossible de terminer votre inscription, il manque des données !<br /><br />Si le problème perciste, contactez un administrateur.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
}
else header('Location: ./');
?>

View file

@ -0,0 +1,72 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'operateur';
$titre = 'Contact opérateur';
if (!empty($_POST['titre']) && !empty($_POST['description'])) {
$titre = $_POST['titre'];
$description = $_POST['description'];
$bdd->connexion();
$bdd->escape($titre);
$bdd->escape($description);
$bdd->query("INSERT INTO $table_ope_mail VALUES(NULL, '$id_user', '$titre', '$description', '".time()."');");
$bdd->deconnexion();
$template->assign('message','Votre demande à bien été transmise aux opérateurs de la galaxie.<br />Une réponse vous sera donnée dans les plus brefs délais.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
elseif (!empty($_POST['O_titre']) && !empty($_POST['O_description']) && $sess->values['auth_level'] > 4) {
$titre = $_POST['O_titre'];
$description = $_POST['O_description'];
$bdd->connexion();
$bdd->escape($titre);
$bdd->escape($description);
$bdd->query("INSERT INTO $table_ope_faq VALUES(NULL, '$titre', '$description', 100);");
$bdd->deconnexion();
header('Location: ?p=operateur');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'top' && isset($_GET['i']) && $sess->values['auth_level'] > 4) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
$bdd->query("UPDATE $table_ope_faq SET ordre = ordre - 1 WHERE id = '$i' LIMIT 1;");
$bdd->deconnexion();
header('Location: ?p=operateur');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'bas' && isset($_GET['i']) && $sess->values['auth_level'] > 4) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
$bdd->query("UPDATE $table_ope_faq SET ordre = ordre + 1 WHERE id = '$i' LIMIT 1;");
$bdd->deconnexion();
header('Location: ?p=operateur');
exit;
}
elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->values['auth_level'] > 4) {
$i = $_GET['i'];
$bdd->connexion();
$bdd->escape($i);
$bdd->query("DELETE FROM $table_ope_faq WHERE id = '$i' LIMIT 1;");
$bdd->deconnexion();
header('Location: ?p=operateur');
exit;
}
$bdd->connexion();
$operateurs = $bdd->query("SELECT * FROM $table_user WHERE auth_level > 2 ORDER BY auth_level ASC;");
$questions = $bdd->query("SELECT * FROM $table_ope_faq ORDER BY ordre ASC;");
$bdd->deconnexion();
$template->assign('operateurs', $operateurs);
$TEMP_questions = array();
for ($i = 0; $i < $bdd->num_rows; $i++) {
$TEMP_questions[] = array($questions[$i]['titre'], bbcode(nl2br(htmlspecialchars($questions[$i]['contenu']))), $questions[$i]['id']);
}
$template->assign('questions', $TEMP_questions);
?>

View file

@ -0,0 +1,210 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
require_once(_FCORE."hb_game/Class/class.phpmailer.php");
$page = 'options';
$titre = 'Options';
$template->assign('page',$page);
$template->assign('titre',$titre);
$pseudo = $queryUser['pseudo'];
$mailUtil = $queryUser['mail'];
$mdp = $queryUser['mdp'];
if (isset($_GET['a']) && $_GET['a'] == 'mv' && isset($_GET['n']) && $_GET['n'] == $sess->values['idvac']) {
$impossible = false;
include_once(_FCORE."hb_game/Class/class.gerefile.php");
$nbPlan = count($queryPlanetes);
for ($i=0 ; $i<$nbPlan ; $i++) {
$file = unserialize($queryPlanetes[$i]['file_bat']);
if (!empty($queryPlanetes[$i]['file_bat']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_tech']);
if (!empty($queryPlanetes[$i]['file_tech']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_cas']);
if (!empty($queryPlanetes[$i]['file_cas']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_vais']);
if (!empty($queryPlanetes[$i]['file_vais']) && count($file->file)) $impossible = true;
$file = unserialize($queryPlanetes[$i]['file_ter']);
if (!empty($queryPlanetes[$i]['file_ter']) && count($file->file)) $impossible = true;
}
if ($impossible) {
$template->assign('message','Impossible d\'activer le mode vacances.<br />Toutes les files d\'attentes sur vos différentes planètes ne sont pas vides.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$bdd->connexion();
$bdd->query("SELECT * FROM flottes WHERE id_user = '$id_user'");
if ($bdd->num_rows) {
$template->assign('message','Des flottes sont actuellement en mission, veuillez toutes les faire revenir à quai avant d\'activer le mode vacances.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 4000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
$bdd->query("UPDATE user SET mv = '1' WHERE id = '$id_user'");
$bdd->deconnexion();
$sess->values['connected'] = FALSE;
$sess->put();
$template->assign('message','Le mode vacances est maintenant actif sur votre compte.<br /><br />Vous pourez vous reconnecter sur votre compte à partir de<br />'.strftime("%A %d %B à %H:%M", $queryUser['last_visite']+259200).'<br /><br />Bonnes vacances !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 10000);</script>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
}
if (isset($_GET['chg']) && $_GET['chg'] == 'mdp') {
if (isset($_POST['mdp_anc']) && isset($_POST['mdp_nouv']) && isset($_POST['mdp_conf']) && !empty($_POST['mdp_anc']) && !empty($_POST['mdp_nouv']) && !empty($_POST['mdp_conf'])) {
if(sha1(strtoupper($pseudo).':'.$_POST['mdp_anc']) == $mdp) {
if ($_POST['mdp_nouv'] == $_POST['mdp_conf']) {
$password = htmlspecialchars(mysql_escape_string($_POST['mdp_nouv']));
$password = sha1(strtoupper($pseudo).':'.$password);
$auth = sha1($password);
$bdd->connexion();
$bdd->query("UPDATE user SET mdpNOUV = '$password' WHERE id = '$id_user'");
$bdd->deconnexion();
//On envoie le mail de confirmation
$mail = new PHPmailer();
$mail->SetLanguage('fr', _FCORE."hb_game/Class/");
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host='s-fr.com';
$mail->From='Halo-Battle <no-reply@halo-battle.s-fr.com>';
$mail->SMTPAuth=true;
$mail->Username='no-reply@halo-battle.s-fr.com';
$mail->Password='hD3e2nXu';
$mail->AddAddress($mailUtil);
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject='Halo-Battle :: Activation de votre nouveau mot de passe';
$mail->Body='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: Activation de votre nouveau mot de passe</title></head><body><p>Bonjour '.trouvNom($id_user).',<br />Vous recevez ce mail suite à votre demande de changement de mot de passe. Ce dernier entrera en vigueur une fois que vous aurez valider ce changement en cliquant via ce lien :<br /><a href="http://'.$_SERVER['HTTP_HOST'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'">http://'.$_SERVER['HTTP_HOST'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'</a><br />Notez que pour que le mot de passe soit chang&eacute;, il faut que vous soyer connect&eacute; sur votre compte.<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>';
if(!$mail->Send()){ //Teste si le return code est ok.
$template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else{
$template->assign('message','Un courriel vient d\'être envoyé à '.$mailUtil.'. Le mot de passe ne sera modifié qu\'après avoir cliqué sur le lien d\'activation contenu dans ce courriel.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$mail->SmtpClose();
unset($mail);
}
else {
$template->assign('message','Le nouveau mot de passe que vous avez entré ne correspond pas à sa confirmation.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 3500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
else {
$template->assign('message','L\'ancien mot de passe que vous avez tapé n\'est pas correct.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 3000);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Veuillez remplir tous les champs avant de valider le formulaire.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
elseif (isset($_GET['chg']) && $_GET['chg'] == 'mail') {
if (isset($_POST['mdp_mail']) && sha1(strtoupper($pseudo).':'.$_POST['mdp_mail']) == $mdp) {
if (isset($_POST['mail']) && !empty($_POST['mail'])) {
$Nmail = $_POST['mail'];
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $Nmail)) {
$bdd->connexion();
$bdd->escape($Nmail);
$result = $bdd->query("SELECT mail FROM user WHERE mail = '$Nmail'");
if($result) {
$bdd->deconnexion();
header('Location: options.php?erreur=5');
exit;
}
else {
$auth = sha1($Nmail);
$bdd->query("UPDATE user SET mailNOUV = '$Nmail' WHERE id = '$id_user'");
$bdd->deconnexion();
//On envoie le mail de confirmation
$mail = new PHPmailer();
$mail->SetLanguage('fr', _FCORE."hb_game/Class/");
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host='s-fr.com';
$mail->From='Halo-Battle <no-reply@halo-battle.s-fr.com>';
$mail->SMTPAuth=true;
$mail->Username='no-reply@halo-battle.s-fr.com';
$mail->Password='hD3e2nXu';
$mail->AddAddress($Nmail);
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject='Halo-Battle :: Activation de votre nouvelle adresse électronique';
$mail->Body='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Halo-Battle :: Activation de votre nouvelle adresse &eacute;lectronique</title></head><body><p>Bonjour,<br />Vous recevez ce mail suite à votre demande de changement d\'adresse &eacute;lectronique. Cette dernière entrera en vigueur une fois que vous aurez valider ce changement en cliquant via ce lien :<br /><a href="http://'.$_SERVER['HTTP_HOST'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'">http://'.$_SERVER['HTTP_HOST'].'?p=changeopt&util='.$id_user.'&auth='.$auth.'</a><br />Notez que pour que l\'adresse soit chang&eacute;e, il faut que vous soyer connect&eacute; sur votre compte.<br /><br />A bientôt dans Halo-Battle,<br />Le staff</p></body></html>';
if(!$mail->Send()){ //Teste si le return code est ok.
$template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else{
$template->assign('message','Un courriel vient d\'être envoyé à '.$Nmail.'. L\'adresse électronique ne sera modifié qu\'après avoir cliqué sur le lien d\'activation contenu dans ce courriel.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$mail->SmtpClose();
unset($mail);
}
}
else {
$template->assign('message','L\'adresse électronique que vous avez tapée n\'est pas valide.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Veuillez remplir tous les champs avant de valider le formulaire.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Mot de passe incorrect.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=options";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
$sess->values['idvac'] = sha1(rand(123456789,9876543210).'ß‘}☻'.time());
$sess->put();
$template->assign('mail',$queryUser['mail']);
$template->assign('idvac',$sess->values['idvac']);
?>

View file

@ -0,0 +1,37 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$titre = 'Changement des options';
if (isset($_GET['auth'])) {
if (!empty($queryUser['mdpNOUV']) && !empty($queryUser['mdpNOUV']) && sha1($queryUser['mdpNOUV']) == $_GET['auth']) {
$bdd->connexion();
$bdd->query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '', mailNOUV = '' WHERE id = '$id_user';");
$bdd->deconnexion();
$template->assign('message','Votre nouveau mot de passe est en place.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
elseif (!empty($queryUser['mailNOUV']) && !empty($queryUser['mailNOUV']) && sha1($queryUser['mailNOUV']) == $_GET['auth']) {
$bdd->connexion();
$bdd->query("UPDATE user SET mail = mailNOUV, mailNOUV = '', mdpNOUV = '' WHERE id = '$id_user';");
$bdd->deconnexion();
$template->assign('message','Votre nouvelle adresse électronique est en place.');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
else {
$template->assign('message','Impossible d\'authentifier le lien !');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
}
else {
$template->assign('message','Le lien est incomplet !');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
?>

View file

@ -0,0 +1,98 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
session_start();
require_once(_FCORE."hb_game/Class/class.phpmailer.php");
$page = 'oubliemdp';
$erreur = '';
if (!empty($_GET['i']) && isset($_GET['n'])) {
$Un = $_GET['n'];
$Ui = $_GET['i'];
$bdd->connexion();
$bdd->escape($Un);
$bdd->escape($Ui);
$user = $bdd->unique_query("SELECT * FROM user WHERE pseudo = '$Un' AND mdpNOUV = '$Ui';");
if ($user && $bdd->unique_query("UPDATE user SET mdp = mdpNOUV, mdpNOUV = '' WHERE pseudo = '$Un'")) {
$bdd->deconnexion();
$template->assign('message','Votre mot de passe a été réinitialisé avec succès.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 3500);</script>');
$template->assign('couleur','green');
$template->display('cms/erreur.tpl');
exit;
}
else {
$bdd->deconnexion();
$template->assign('message','Ce lien a expiré !');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
}
if (isset($_POST['HB_pseudo']) && isset($_POST['HB_mail']) && isset($_POST['HB_captcha'])) {
$ok = true;
if (empty($_POST['HB_pseudo']) || empty($_POST['HB_mail'])) {
$ok = false;
$erreur .= '<p style="color: #FF0000"><b>Pseudo ou adresse électronique vide :</b><br />Veuillez compléter tous les champs de ce formulaire avant de le valider.</p><br />';
}
if (strtolower($_POST['HB_captcha']) != strtolower($_SESSION['aleat_nbr'])) {
$ok = false;
$erreur .= '<p style="color: #FF0000"><b>Code de vérification incorrect :</b><br />Le texte que vous avez recopier ne correspondait pas au texte de l\'image, veuillez recommencer.</p><br />';
}
if ($ok) {
$HB_pseudo = $_POST['HB_pseudo'];
$HB_mail = $_POST['HB_mail'];
$bdd->connexion();
$bdd->escape($HB_pseudo);
$bdd->escape($HB_mail);
$user = $bdd->unique_query("SELECT id FROM $table_user WHERE pseudo = '$HB_pseudo' AND mail = '$HB_mail';");
if ($user) {
$liste = "abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$code = '';
while(strlen($code) != 8) {
$code .= $liste[rand(0,60)];
}
$passNOUV = sha1(strtoupper($HB_pseudo).':'.$code);
$bdd->unique_query("UPDATE $table_user SET mdpNOUV = '$passNOUV' WHERE pseudo = '$HB_pseudo';");
$bdd->deconnexion();
$mail = new PHPmailer();
$mail->SetLanguage('fr', _FCORE."hb_game/Class/");
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host='s-fr.com';
$mail->From='no-reply@halo-battle.s-fr.com';
$mail->FromName='Halo-Battle';
$mail->SMTPAuth=true;
$mail->Username='no-reply@halo-battle.s-fr.com';
$mail->Password='hD3e2nXu';
$mail->AddAddress($HB_mail);
$mail->AddReplyTo('no-reply@halo-battle.s-fr.com');
$mail->Subject='Halo-Battle :: Reinitialisation du mot de passe';
$mail->Body='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Halo-Battle :: R&eacute;initialisation du mot de passe</title></head><body><p>Bonjour '.$HB_pseudo.',<br />Vous recevez ce mail suite &agrave; votre demande de r&eacute;initialisation de mot de passe. Pour confirmer votre r&eacute;initialisation de mot de passe et ainsi pouvoir de nouveau acc&eacute;der au jeu, cliquez sur le lien ci-apr&egrave;s :<br /><a href="'.$_SERVER['HTTP_HOST'].'?p=oubliemdp&amp;i='.$passNOUV.'&amp;n='.$HB_pseudo.'">'.$_SERVER['HTTP_HOST'].'?p=oubliemdp&amp;i='.$passNOUV.'&amp;n='.$HB_pseudo.'</a><br /><br />Votre nouveau mot de passe est : '.$code.'<br /><br />A bient&ocirc;t dans Halo-Battle,<br />Le staff</p></body></html>';
if(!$mail->Send()){ //Teste si le return code est ok.
$template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !<br /><br /><small><i>'.$mail->ErrorInfo.'</i></small><br /><br />Si le problème perciste, <a href="mailto:technique@halo-battle.s-fr.com">contactez un administrateur</a>.');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
else{
$template->assign('message','Un nouveau mot de passe a été généré pour votre compte, vous le trouverez dans votre boîte de courrier électronique.');
$template->assign('couleur','green');
$template->display('cms/erreur.tpl');
exit;
}
$mail->SmtpClose();
unset($mail);
}
else {
$bdd->deconnexion();
$erreur .= '<p style="color: #FF0000"><b>Nom d\'utilisateur ou adresse électronique incorrect :</b><br />L\'adresse électronique que vous avez indiqué ne correspond pas au nom d\'utilisateur. Réessayez.</p><br />';
}
}
}
$template->assign('erreurs', $erreur);
?>

124
onyx/hb_game/jeu/regles.php Normal file
View file

@ -0,0 +1,124 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = '../cms/vide';
$titre = 'Règles du jeu';
$template->assign('contenu','<h1>R&egrave;gles de Halo-Battle</h1><div style="text-align: left; margin: 15px; font-size: 115%;">
<u>Pr&eacute;ambule :</u> tous les joueurs ayant cr&eacute;&eacute; un compte de jeu, et l&#39;utilisant ou non, s&#39;engagent &agrave; avoir lu et &agrave; respecter les r&egrave;gles de Halo-Battle dans leur int&eacute;gralit&eacute;. Si l&#39;une des r&egrave;gles &eacute;nonc&eacute;es ci-dessous est transgress&eacute;e, merci de vous r&eacute;f&eacute;rer au chapitre des infractions afin de conna&icirc;tre toutes les modalit&eacute;s relatives aux punitions encourues.<br />
<br />
Ce r&egrave;glement peut &ecirc;tre l&#39;objet d&#39;une modification, partielle ou totale, et il est du ressort du joueur de se tenir inform&eacute; de toute modification quelle qu&#39;elle soit. Toute modification sera publi&eacute;e sur le forum avec sa date de mise en application, avant de se trouver effective au sein du jeu.<br />
<br />
Ces r&egrave;gles du jeu ont &eacute;t&eacute; publi&eacute;es le 14/04/2008 et rentrent en vigueur &agrave; partir du 24/04/2008
<br />
<br /><u>Plan des r&egrave;gles :</u>
<br />
<br /><a href="#comportement">I. Comportement</a>
<br /><a href="#comptes">II. Comptes</a>
<br /><a href="#commerce">III. Commerce et ressources</a>
<br /><a href="#mercenariat">IV. Mercenariat</a>
<br /><a href="#guerre">V. Guerre</a>
<br /><a href="#bash">VI. Bash</a>
<br /><a href="#alliances">VII. Alliances</a>
<br /><a href="#sanctions">VIII. Sanctions</a>
<br /><br /><br />
<h3 id="comportement">I. Comportement</h3><br />
<h4>1 - Comportement g&eacute;n&eacute;ral</h4><br />
- La convivialit&eacute; et le respect des autres joueurs sont de rigueur. Par cons&eacute;quent, les propos injurieux, racistes, x&eacute;nophobes, pornographiques et antis&eacute;mites sont prohib&eacute;s. Tous les outils de communications utilis&eacute;s pour et par Halo-Battle sont soumis &agrave; cette r&egrave;gle (jeu, forum et IRC).<br />
- L&#39;utilisation de pseudo et/ou nom de plan&egrave;te en rapport direct avec des propos racistes, x&eacute;nophobes, pornographiques ou encore antis&eacute;mites est totalement prohib&eacute;. Il en va de m&ecirc;me pour toute revendication politique, religieuse ou ayant un rapport avec l&#39;actualit&eacute; (une certaine libert&eacute; peut &ecirc;tre tol&eacute;r&eacute;e mais ceci reste &agrave; l&#39;appr&eacute;ciation du staff).<br />
- Les menaces sortant du cadre du jeu ne seront pas tol&eacute;r&eacute;es et lourdement sanctionn&eacute;es par les op&eacute;rateurs. Elles pourront de plus faire l&#39;objet de poursuites judiciaires de la part de la personne concern&eacute;e devant les juridictions comp&eacute;tentes.<br />
- Utiliser le bouton Signaler pour signaler un message qui ne contient pas d&#39;insultes ou qui n&#39;enfreint pas les r&egrave;gles du jeu est interdit. Le signalement de message ne doit servir qu&#39;&agrave; informer les op&eacute;rateurs d&#39;infractions aux r&egrave;gles du jeu et &agrave; rien d&#39;autre.<br />
- Le spam, les insultes et les messages &agrave; contenus offensants sont interdits, de m&ecirc;me que tout contenu x&eacute;nophobe, antis&eacute;mite ou raciste.<br />
- Toute manoeuvre visant &agrave; exploiter le r&egrave;glement &agrave; son avantage, ou &agrave; le contourner sciemment, est interdite.<br />
<br /><h4>2 - Bugusing</h4><br />
- Tout bug trouv&eacute; doit &ecirc;tre imm&eacute;diatement signal&eacute; au staff de Halo-Battle.<br />
- Il est totalement prohib&eacute; d&#39;exploiter un bug &agrave; son avantage.<br />
- Toute action visant &agrave; paralyser d&#39;une quelconque mani&egrave;re le compte d&#39;un autre joueur est absolument interdit.<br />
- Ne pas signaler un bug d&eacute;couvert est passible de bannissement.<br />
<br /><h3 id="comptes">II. Comptes</h3><br />
<br /><h4>1 - Les comptes de jeu</h4><br />
- Les comptes restent la propri&eacute;t&eacute; de Halo-Battle ; par cons&eacute;quent, ils ne peuvent faire l&#39;objet d&#39;une vente ou faire office de monnaie d&#39;&eacute;change.<br />
- Un compte ne peut &ecirc;tre jou&eacute; que par une seule et m&ecirc;me personne physique dans une seule et m&ecirc;me galaxie (sauf cas relatif &agrave; la surveillance de compte).<br />
- La langue utilis&eacute;e dans Halo-Battle est le fran&ccedil;ais ; toutefois, seul l&#39;anglais est tol&eacute;r&eacute; pour les personnes ne sachant pas ou peu le parler.<br />
<br /><h4>2 - Multicomptes</h4><br />
- Jouer plus d&#39;un compte par galaxie est strictement interdit.<br />
- Pour les joueurs jouant depuis un lieu commun (famille, collocation, &eacute;coles, lieux de travail...) il est imp&eacute;ratif de pr&eacute;venir l&#39;op&eacute;rateur de votre galaxie.<br />
- Aucune interaction, directe ou non, entre comptes de joueurs se connectant r&eacute;guli&egrave;rement de lieux communs n&#39;est autoris&eacute;e.<br />
- Pour les joueurs d&#39;une m&ecirc;me famille, faire partie d&#39;une m&ecirc;me alliance est tol&eacute;r&eacute;. Dans ce cas pr&eacute;cit, merci d&#39;en avertir l&#39;op&eacute;rateur de votre galaxie. Toute exploitation abusive de cette autorisation sera s&eacute;v&eacute;rement sanctionn&eacute;e.<br />
- La r&egrave;gle de la surveillance de compte et le partage de compte s&#39;appliquent normalement : m&ecirc;me connect&eacute; du m&ecirc;me lieu, chaque joueur n&#39;est autoris&eacute; &agrave; surveiller ou jouer que son propre compte.<br />
<br /><h4>3 - Surveillance de compte</h4><br />
- Toute surveillance de compte doit &ecirc;tre obligatoirement signal&eacute;e &agrave; l&#39;op&eacute;rateur de votre galaxie. Le propri&eacute;taire du-dit compte doit indiquer quel compte va &ecirc;tre surveill&eacute;, donner la dur&eacute;e exacte de la surveillance, et donner le pseudonyme du surveillant. Il n&#39;est pas n&eacute;cessaire d&#39;attendre une r&eacute;ponse de l&#39;op&eacute;rateur pour pouvoir commencer la surveillance du compte.<br />
- Une seule et m&ecirc;me personne ne peut surveiller qu&#39;un seul compte &agrave; la fois. Aucun d&eacute;lais minimum n&#39;est exig&eacute; entre la surveillance de deux comptes diff&eacute;rents. Les surveillances de comptes ne peuvent faire l&#39;objet d&#39;aucune r&eacute;mun&eacute;ration.<br />
- Le surveillant ainsi que le joueur qui fait surveiller son compte sont responsables des actions faites via un compte durant une surveillance.<br />
- Le surveillant peut effectuer n&#39;importe quelle op&eacute;ration sur la ou les plan&egrave;tes du propri&eacute;taire durant la surveillance. Est n&eacute;anmoins interdit le transfert de ressources vers des plan&egrave;tes appartenant &agrave; un joueur autre. L&#39;activation du mode vacances est &eacute;galement autoris&eacute;.<br />
- La surveillance du compte prend fin lorsque le propri&eacute;taire du compte se reconnecte &agrave; celui-ci, ou que le d&eacute;lai de surveillance a expir&eacute;. Dans ce cas pr&eacute;cit, le surveillant est tenu de ne plus s&#39;en occuper et de faire passer obligatoirement le compte en mode vacances.<br />
<br /><h4>4 - Don de compte</h4><br />
- Tout changement de compte doit &ecirc;tre au pr&eacute;alable signal&eacute; &agrave; un op&eacute;rateur. Tout changement sans l&#39;intervention de l&#39;op&eacute;rateur sera sanctionn&eacute;.<br />
- Le propri&eacute;taire du mail permanent du compte est tenu d&#39;envoyer un mail informatif aux op&eacute;rateurs en pr&eacute;cisant le pseudonyme du repreneur et le futur mail permanent du compte.<br />
- L&#39;op&eacute;rateur modifiera lui-m&ecirc;me le mail permanent du compte et informera le donneur et le repreneur que le compte est c&eacute;d&eacute;.<br />
- Le repreneur peut se connecter au compte d&egrave;s qu&#39;il en re&ccedil;oit l&#39;autorisation par l&#39;op&eacute;rateur, et peut alors changer l&#39;adresse dynamique, le pseudonyme et le mot de passe du compte.<br />
- Une fois que le repreneur s&#39;est connect&eacute; sur le compte, il est strictement interdit au donneur de s&#39;y reconnecter.<br />
- La m&ecirc;me r&egrave;gle s&#39;applique dans le cas d&#39;un &eacute;change de comptes entre deux joueurs d&#39;une m&ecirc;me galaxie.<br />
- Aucun don de compte ne peut faire l&#39;objet d&#39;une transaction mon&eacute;taire.<br />
<br /><h3 id="commerce">III. Commerce et ressources</h3><br />
- Les joueurs sont libres de commercer comme ils l&#39;entendent, tant que leurs transactions ne se trouvent pas en infraction avec le r&eacute;glement.<br />
- Le commerce doit prendre la forme d&#39;un arrangement entre les diff&eacute;rents joueurs. Chaque joueur engage sa propre responsabilit&eacute; lors de la transaction de ressources. Par cons&eacute;quent, dans le cas de vols, d&#39;arnaques ou de toute autre forme crapuleuse de n&eacute;gociation, il ne peut y avoir de recours aupr&egrave;s d&#39;un op&eacute;rateur.<br />
- Il est interdit d&#39;exercer une pression ou de s&#39;acharner sur un joueur dans le but de lui soutirer ses ressources (sauf si les motifs sont valables, comme dans le cas d&#39;une guerre d&eacute;clar&eacute;e).<br />
- L&#39;envoie de ressources &agrave; des joueurs plus haut class&eacute;s que soi doit &ecirc;tre motiv&eacute; par des motifs valables. Si l&#39;op&eacute;rateur juge l&#39;action outranci&egrave;re, des r&eacute;parations de dommages peuvent &ecirc;tre demand&eacute;es au joueur b&eacute;n&eacute;ficiaire des ressources.<br />
- Les transactions de ressources ne peuvent faire l&#39;objet d&#39;une transaction mon&eacute;taire r&eacute;elle.<br />
<br /><h3 id="mercenariat">IV. Mercenariat</h3><br />
- Le mercenariat est autoris&eacute;. Ces contrats r&eacute;tribuent un joueur ou une alliance en fonction de services rendus.<br />
- Un contrat de mercenariat doit prendre la forme d&#39;un arrangement entre les diff&eacute;rents joueurs et ceux-ci y engagent leur responsabilit&eacute; propre. Par cons&eacute;quent, il ne peut y avoir de recours aupr&egrave;s d&#39;un op&eacute;rateur si, par exemple, le contrat n&#39;est pas ex&eacute;cut&eacute;, ou n&#39;est pas r&eacute;mun&eacute;r&eacute;.<br />
- Toute mission de mercenariat est possible, tant qu&#39;elle n&#39;interf&egrave;re pas avec le pr&eacute;sent r&eacute;glement.<br />
- Un contrat de mercenariat ne peut &ecirc;tre r&eacute;mun&eacute;r&eacute; par des unit&eacute;s mon&eacute;taires r&eacute;elles.<br />
<br /><h3 id="guerre">V. Guerre</h3><br />
- Une guerre ne peut &ecirc;tre d&eacute;clar&eacute;e que contre une alliance ou un joueur sans alliance. Ainsi il est possible de d&eacute;clarer la guerre &agrave; une alliance enti&egrave;re ou &agrave; joueur qui n&#39;a pas d&#39;alliance, mais pas &agrave; un seul joueur d&#39;une alliance ou &agrave; quelques joueurs d&#39;une alliance.<br />
- Il n&#39;est pas n&eacute;cessaire de motiver la d&eacute;cision ou de pr&eacute;venir l&#39;alliance agress&eacute;e pour d&eacute;clarer une guerre.<br />
- Il est obligatoire de d&eacute;clarer officiellement une guerre sur le forum, dans la section appropri&eacute;e, dans les 24 heures qui suivent l&#39;agression. Les joueurs sont libres de formuler les objectifs et les conditions de fin de la guerre.<br />
- Il est strictement interdit d&#39;&eacute;tablir des objectifs portant atteinte aux libert&eacute;s fondamentales dont disposent les joueurs, comme la suppression d&#39;un compte, l&#39;interdiction de jouer, suppression de colonies ou d&#39;unit&eacute;s, etc...<br />
- En cas de guerre, le bash n&#39;est pas interdit.<br />
- Les joueurs sont libres de mener leurs campagnes militaires comme ils l&#39;entendent, pourvu que cela n&#39;entre pas en conflit avec le r&egrave;glement.<br />
- Une guerre prend fin lorsque les bellig&eacute;rants trouvent un accord. Ils devront le signaler obligatoirement, comme pour la d&eacute;claration de guerre.<br />
<br /><h3 id="bash">VI. Bash</h3><br />
- Le bash est relatif &agrave; l&#39;attaque &agrave; outrance de plan&egrave;tes particuli&egrave;res. Attaquer une plan&egrave;te plus de quatre fois en 24 heures est par cons&eacute;quent interdit.<br />
- La r&egrave;gle du bash s&#39;applique aux joueurs actifs et inactifs.<br />
- En cas de guerre, le bash est autoris&eacute;.<br />
<br /><h3 id="alliances">VII. Alliances</h3><br />
- Toute alliance poss&egrave;de le privil&egrave;ge de se constituer comme elle l&#39;entend.<br />
- Toute alliance peut recruter autant de joueurs qu&#39;elle le souhaite.<br />
- Les alliances mixtes sont autoris&eacute;es ; cependant, une race dominante doit y &ecirc;tre repr&eacute;sent&eacute;e et les joueurs de la race oppos&eacute;e ne doivent pas s&#39;y trouver en trop grand nombre sous peine de sanction.<br />
- Toute alliance peut recruter autant de joueurs qu&#39;elle le souhaite.<br />
- Toute alliance peut signer autant de pactes qu&#39;elle le souhaite.<br />
- Toute alliance a le droit de se donner comme mission celle qu&#39;elle entend.<br />
- Il est strictement interdit de copier totalement ou en partie, les textes, images, etc, cr&eacute;&eacute;s par les joueurs des diff&eacute;rentes alliances d&eacute;j&agrave; existantes. Les alliances fond&eacute;es sur le principe du CSNU ou de l&#39;Alliance ne sont pas concern&eacute;es par la clause du plagiat de nom. Pour pouvoir recopier l&#39;un des &eacute;l&eacute;ments se trouvant dans une alliance, il est n&eacute;cessaire d&#39;avoir une autorisation &eacute;crite de ou des auteurs vous autorisant &agrave; y proc&eacute;der sous peine de sanctions.<br />
- Tout recrutement dans les autres alliances d&eacute;j&agrave; existantes est formellement interdit.<br />
<br /><h3 id="sanctions">VIII. Sanctions</h3><br />
- En cas de non respect de ce r&egrave;glement, les op&eacute;rateurs du jeu infligeront un blocage pouvant aller de un jour, &agrave; un blocage d&eacute;finitif selon la gravit&eacute; de la faute, ainsi qu&#39;en cas de r&eacute;cidive.<br />
- Chaque bannissement est mentionn&eacute; dans le pilori du jeu. Par ailleurs, le staff de Halo-Battle se r&eacute;serve le droit de prendre &agrave; l&#39;encontre des joueurs toute autre sanction.<br />
- En cas de r&eacute;clamation, merci d&#39;envoyer un mail &agrave; l&#39;un des op&eacute;rateurs en pr&eacute;cisant votre pseudonyme ingame et votre galaxie.<br />
- Toute manoeuvre visant &agrave; faire bloquer d&eacute;lib&eacute;r&eacute;ment un adversaire est interdite et pourra &ecirc;tre sanctionn&eacute;e par l&#39;op&eacute;rateur.<br />
</div>');
?>

View file

@ -0,0 +1,55 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'rename';
$titre = $queryPlanete["nom_planete"];
$id_plan = $queryPlanete["id"];
if (isset($_POST['planete'])) {
$nouvNom = trim($_POST['planete']);
if (empty($nouvNom)) {
$template->assign('message','Vous n\'avez indiqué aucun nom de planète.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=rename";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('game/erreur.tpl');
exit;
}
else {
$bdd->connexion();
$bdd->escape($nouvNom);
$bdd->unique_query("UPDATE $table_planete SET nom_planete = '$nouvNom' WHERE id_user = '$id_user' AND id = '$id_plan'");
$bdd->deconnexion();
$template->assign('message','Le nom de votre planète a été modifié avec succès.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=accueil";\', 2500);</script>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
}
elseif(isset($_GET['a']) && $_GET['a'] == $sess->values['abandon']) {
$galaxie = $queryPlanete["galaxie"]; $ss = $queryPlanete["ss"]; $position = $queryPlanete["position"];
$bdd->connexion();
$bdd->query("DELETE FROM $table_planete WHERE id_user = '$id_user' AND id = '$id_plan' LIMIT 1;");
$bdd->query("DELETE FROM $table_flottes WHERE id_user = '$id_user' AND start_galaxie = '$galaxie' AND start_ss = '$ss' AND start_position = '$position';");
$req = $bdd->unique_query("SELECT * FROM $table_planete WHERE id_user = '$id_user' LIMIT 1;");
$bdd->deconnexion();
$sess->values['idPlan'] = $req['id'];
$sess->put();
$template->assign('message','Cette planète n\'est désormais plus sous votre contrôle.');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?p=accueil";\', 2500);</script>');
$template->assign('couleur','green');
$template->display('game/erreur.tpl');
exit;
}
$bdd->connexion();
$reqnb = $bdd->query("SELECT * FROM $table_planete WHERE id_user = '$id_user'");
$bdd->deconnexion();
if (count($reqnb) > 1) $hashA = md5(rand(123456789,9876543210));
else $hashA = false;
$sess->values['abandon'] = $hashA;
$sess->put();
$template->assign('abandonH', $hashA);
?>

View file

@ -0,0 +1,36 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'ressources';
$titre = 'Ressources';
if (isset($_POST['coeff_metal']) && isset($_POST['coeff_cs'])) {
if (!isset($_POST['coeff_cristal'])) $_POST['coeff_cristal'] = 0;
if (!isset($_POST['coeff_hydrogene'])) $_POST['coeff_hydrogene'] = 0;
if (!isset($_POST['coeff_ce'])) $_POST['coeff_ce'] = 0;
$coeff_metal = floor($_POST['coeff_metal']);
$coeff_cristal = floor($_POST['coeff_cristal']);
$coeff_hydrogene = floor($_POST['coeff_hydrogene']);
$coeff_cs = floor($_POST['coeff_cs']);
$coeff_ce = floor($_POST['coeff_ce']);
$bdd->connexion();
$bdd->escape($coeff_metal);
$bdd->escape($coeff_cristal);
$bdd->escape($coeff_hydrogene);
$bdd->escape($coeff_cs);
$bdd->escape($coeff_ce);
$bdd->query("UPDATE `planete` SET `coeff_mine_m` = '".($coeff_metal/100)."', `coeff_mine_c` = '".($coeff_cristal/100)."', `coeff_mine_h` = '".($coeff_hydrogene/100)."', `coeff_centrale_s` = '".($coeff_cs/100)."', `coeff_centrale_f` = '".($coeff_ce/100)."' WHERE `id` = '$idPlan'");
$bdd->deconnexion();
header('Location: ?p=ressources');
exit;
}
$template->assign('nombat', $batiment);
$template->assign('ressources_prod', array(separerNombres(ceil(pow(1.1,$mine_m)*35*$mine_m)*$coeff_mine_m*1.5), separerNombres(floor(ceil(pow(1.1,$mine_c)*23*$mine_c)*$coeff_mine_c)*1.5), separerNombres(floor((ceil(pow(1.1,$mine_h)*14*($mine_h+0.7))) * $coeff_mine_h)*1.5), separerNombres(floor(ceil(exp(0.28*$centrale_s)*22)*$coeff_centrale_s)), separerNombres(floor(ceil(exp(0.297*$centrale_f)*25)*$coeff_centrale_f))));
$template->assign('ressources_conso', array(separerNombres(ceil(exp(0.28*$mine_m)*10)*$coeff_mine_m), separerNombres(ceil(exp(0.28*$mine_c)*10)*$coeff_mine_c), separerNombres(ceil(exp(0.2849*$mine_h)*13)*$coeff_mine_h), floor(ceil(pow(1.34,($centrale_f-1))*9)*$coeff_centrale_f)));
$template->assign('ressources_toto', array(separerNombres(floor((ceil(pow(1.1,$mine_h)*14*($mine_h+0.7))) * $coeff_mine_h)*1.5 - floor(ceil(pow(1.34,($centrale_f-1))*9)*$coeff_centrale_f))), '('.$diffnrj.')');
$template->assign('ressources_coef', array(floor($coeff_mine_m*10)*10, floor($coeff_mine_c*10)*10, floor($coeff_mine_h*10)*10, floor($coeff_centrale_s*10)*10, floor($coeff_centrale_f*10)*10));
$template->assign('ressources_silo', array($queryPlanete['silo'], $cap));
$template->assign('ressources_tab', array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100));
?>

View file

@ -0,0 +1,18 @@
<?php
if(!defined('INDEX')) define('INDEX', 1);
load_conf(_FCORE."profiles/servers.xconf", $config);
require_once(_FCORE."common.php");
//On prépare le gestionnaire de templates
$template = new Template();
$template->assign('date',strftime("%A %d %B %Y %H:%M"));
$template->assign('datehb',str_replace('.','',strftime("/%a %d %b %Y/%H%M %S")));
$template->assign('link', array_map('url', $config['link']));
$template->assign('servers_name', $config['server_name']);
$template->assign('server_url', $config['server_url']);
$template->display('cms/secours.tpl');
exit;
?>

View file

@ -0,0 +1,125 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'simulateur_combat';
$titre = 'Simulateur de combat';
if (isset($_POST['ATvais_1']) && isset($_POST['ATvais_2']) && isset($_POST['ATvais_3']) && isset($_POST['ATvais_4']) && isset($_POST['ATvais_5']) && isset($_POST['ATvais_6']) && isset($_POST['ATvais_7']) && isset($_POST['ATvais_8']) && isset($_POST['ATvais_9']) && isset($_POST['ATvais_10']) && isset($_POST['ATvais_12']) && isset($_POST['ENvais_1']) && isset($_POST['ENvais_2']) && isset($_POST['ENvais_3']) && isset($_POST['ENvais_4']) && isset($_POST['ENvais_5']) && isset($_POST['ENvais_6']) && isset($_POST['ENvais_7']) && isset($_POST['ENvais_8']) && isset($_POST['ENvais_9']) && isset($_POST['ENvais_10']) && isset($_POST['ENvais_11']) && isset($_POST['ENvais_12']) && isset($_POST['ENdef_1']) && isset($_POST['ENdef_2']) && isset($_POST['ENdef_3']) && isset($_POST['ENdef_4']) && isset($_POST['ENdef_5']) && isset($_POST['ENmetal']) && isset($_POST['ENcristal']) && isset($_POST['ENhydrogene']) && isset($_POST['ATtactique']) && isset($_POST['ENtactique']) && isset($_POST['maxtour'])) {
$i = 0;
$queryFlottes[$i] = array(
"id" => 0,
"contenu_max" => 999999,
"contenu_metal" => 0,
"contenu_cristal" => 0,
"contenu_hydrogene" => 0,
"start_time" => 0,
"end_time" => 0,
"mission" => 1,
"id_user" => $id_user,
"effectue" => 0,
"vaisseau_1" => $_POST['ATvais_1'],
"vaisseau_2" => $_POST['ATvais_2'],
"vaisseau_3" => $_POST['ATvais_3'],
"vaisseau_4" => $_POST['ATvais_4'],
"vaisseau_5" => $_POST['ATvais_5'],
"vaisseau_6" => $_POST['ATvais_6'],
"vaisseau_7" => $_POST['ATvais_7'],
"vaisseau_8" => $_POST['ATvais_8'],
"vaisseau_9" => $_POST['ATvais_9'],
"vaisseau_10" => $_POST['ATvais_10'],
"vaisseau_11" => 0,
"vaisseau_12" => $_POST['ATvais_12']
);
$queryEN = array(
"debris_met" => 0,
"debris_cri" => 0,
"metal" => $_POST['ENmetal'],
"cristal" => $_POST['ENcristal'],
"hydrogene" => $_POST['ENhydrogene'],
"def_1" => $_POST['ENdef_1'],
"def_2" => $_POST['ENdef_2'],
"def_3" => $_POST['ENdef_3'],
"def_4" => $_POST['ENdef_4'],
"def_5" => $_POST['ENdef_5'],
"vaisseau_1" => $_POST['ENvais_1'],
"vaisseau_2" => $_POST['ENvais_2'],
"vaisseau_3" => $_POST['ENvais_3'],
"vaisseau_4" => $_POST['ENvais_4'],
"vaisseau_5" => $_POST['ENvais_5'],
"vaisseau_6" => $_POST['ENvais_6'],
"vaisseau_7" => $_POST['ENvais_7'],
"vaisseau_8" => $_POST['ENvais_8'],
"vaisseau_9" => $_POST['ENvais_9'],
"vaisseau_10" => $_POST['ENvais_10'],
"vaisseau_11" => $_POST['ENvais_11'],
"vaisseau_12" => $_POST['ENvais_12']
);
require_once(_FCORE."hb_game/Class/class.combat.php");
require_once(_FCORE."hb_game/Class/class.rapport.php");
//On génére un nouveau combat
$combat = new Combat($queryFlottes[$i], $queryEN, $queryEN);
$combat->changerTactiqueAT($_POST['ATtactique']);
$combat->changerTactiqueEN($_POST['ENtactique']);
$rapport = new Rapport(1, $queryFlottes[$i]['id_user'], 0, time());
$rapport->addInfo($combat->ATvais, 0);
$rapport->addInfo($combat->ENvais, 1);
$rapport->addInfo($combat->ENdef, 2);
$rapport->addInfo($queryEN, 4);
$rapport->addInfo($queryFlottes[$i], 5);
$rapport->addInfo(array(false, false), 6);
while(!$rapport->var[6][0]) {
if ($combat->Ntour >= $_POST['maxtour']) break;
$combat->Ntour++;
//Détermine à qui est le tour : attaquant ou défenseur
if ($combat->Ntour%2) { //Tour impaire : tour attaquant
//Récupération des paramètres de la tactique
$arraytactique = tactique($combat->ATtactique);
//Lancement du combat, si condition validée, attaquant vainceur
@$attaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], true, !$arraytactique[3]), true);
if (@!$combat->attaquerVais($attaque, true)) {
$combat->pillageSimul($queryEN['metal'], $queryEN['cristal'], $queryEN['hydrogene']);
$rapport->addInfo(array(true, true), 6);
}
else $rapport->addInfo(array(false, false), 6);
}
else { //Tour impaire : tour défenseur
//Récupération des paramètres de la tactique
$arraytactique = tactique($combat->ENtactique);
//Lancement du combat, si condition validée, défenseur vainceur
@$attaque = $combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], false, !$arraytactique[3]), false);
if (@!$combat->attaquerVais($attaque, false)) $rapport->addInfo(array(true, false), 6);
else $rapport->addInfo(array(false, false), 6);
}
$rapport->addInfo($combat->ATvais, 7);
$rapport->addInfo($combat->ENvais, 8);
$rapport->addInfo($combat->ENdef, 9);
//Prévision du prochain tour
$combat->timestamp += 300;
$rapport->addInfo($combat->timestamp, 10);
$rapport->addInfo($combat->pillage, 11);
$rapport->addInfo($attaque, 14);
}
$rapport->addInfo($combat->Ntour, 3);
$debriM = $combat->debriM;
$debriC = $combat->debriC;
$rapport->addInfo(array($debriM, $debriC), 12);
$rapport->addInfo(array($enligne, $infos, count($infos)-1, array('humains' => $nbhumain, 'covenants' => $nbcovie, 'serveurs' => 'cette'), VERSION, $min.' min'), 13);
$template = $rapport->show();
print $template;
exit;
}
else {
$template->assign('nomvais', $nomvaisn);
array_splice($nomterra, 0, 8);
$template->assign('nomdef', $nomterra);
$template->assign('nomressourc', $ressourc);
}
?>

View file

@ -0,0 +1,41 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
if (!empty($_GET['i'])) {
$base = new bdd();
$base->connexion();
$base->db();
$id = mysql_real_escape_string($_GET['i']);
$res = $base->unique_query("SELECT * FROM `user_inscriptions` WHERE `id_activ` = '$id'");
if ($res) {
switch($res['serveur']){
case 0:
$url = "http://127.0.0.1/hbn/";
break;
case 1:
//$url = "http://battle.halo.fr/";
$url = "http://hb.s-fr.com/";
break;
default:
$url = "http://battle.halo.fr/";
}
//On envoie la requête vers le serveur
$cds = sha1($res['pseudo'].'$'.$res['race'].'£'.$res['mdp'].'#'.$res['mail'].'ß'.$res['time_inscription'].'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$res['placement']);
header('Location: '.$url.'?p=njoueur&nom='.$res['pseudo'].'&race='.$res['race'].'&mdp='.$res['mdp'].'&mail='.$res['mail'].'&ti='.$res['time_inscription'].'&placement='.$res['placement'].'&cds='.$cds);
exit;
}
else {
$template->assign('message','Le lien est expiré !');
$template->assign('script','<script type="text/javascript">setTimeout(\'document.location.href="?index";\', 2500);</script>');
$template->assign('couleur','red');
$template->display('cms/erreur.tpl');
exit;
}
$base->deconnexion();
}
else header('Location: ./');
?>

View file

@ -0,0 +1,15 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$page = 'version';
$titre = 'Historique des mises à jours';
$bdd->connexion();
$data = $bdd->query("SELECT * FROM `$table_version` ORDER BY `id` DESC");
$bdd->deconnexion();
$TEMP_versions = array();
for($i = 0; $i < $bdd->num_rows; $i++){
$TEMP_versions[] = array('numero' => $data[$i]['version'], 'date' => date("d/m/y", $data[$i]['temps']), 'description' => nl2br(str_replace('<br />', '', $data[$i]['contenu'])));
}
$template->assign('versions', $TEMP_versions);
?>

225
onyx/hb_game/noms.php Normal file
View file

@ -0,0 +1,225 @@
<?php
if (!isset($race)) $race = $queryUser['race'];
if (!isset($auth_level)) @$auth_level = $sess->values['auth_level'];
if ($race == 'covenant') {
$ressourc = array('M&eacute;tal','Cristal','Ions','Energie');
$casernen = array('Grunt','Jackal','Drone','Elite','Sniper','Hunter','M&eacute;decin','Ing&eacute;nieur','Brute');
$casernde = array( 'Formant l\'unit&eacute; d\'infanterie de base des Covenants, les Grunt se r&eacute;v&egrave;lent dangereux en groupe, mais ne repr&eacute;sentent individuellement qu\'une faible menace. Petits, trapus et relativement lents, ils paniquent souvent lorsqu\'ils affrontent des ennemis qui leurs sont sup&eacute;rieurs ; cependant, s\'ils sont men&eacute;s par un Sangheili, ils se battront jusqu\'au bout.',
'Tireurs efficaces, les jackals sont g&eacute;n&eacute;ralement employ&eacute;s comme mercenaires, on les trouve souvent en positions d&eacute;fensives, se battant prot&eacute;g&eacute;s par les boucliers &agrave; &eacute;nergie qui les caract&eacute;risent. Un bouclier bien utilis&eacute; fait d\'un Jackal une cible difficile &agrave; atteindre, mais celui-ci doit l\'&eacute;carter pour faire feu, ce qui lui conf&egrave;re un point faible exploitable.',
'Tout comme les Brutes, les Drones semblent avoir &eacute;t&eacute; int&eacute;gr&eacute;s depuis peu aux forces d\'assaut covenantes et sont d&eacute;ploy&eacute;s en masse. Apparemment d\'origine insectoïde, ce sont les gardes des vaisseaux covenants. Ils ont &eacute;galement la capacit&eacute; - limit&eacute;e - de voler et font d\'excellents tireurs, tr&egrave;s intelligents.',
'Les Elites constituent l\'ossature des arm&eacute;es covenantes. Excellents soldats, tacticiens &eacute;m&eacute;rites et disciplin&eacute;s, combattants agressifs, ils repr&eacute;sentent la principale force des covenants. Plus rapides, plus forts et plus r&eacute;sistants que les humains, ils combattent en groupes restreints et dirigent souvent des escouades de Grunts. La couleur de leur armure indique leur rang.',
'Le sniper est une classe des jackals. Excellents tireurs de nature, les Jackals qui se sont sp&eacute;cialis&eacute;s dans ce domaine b&eacute;n&eacute;ficient d\'un rang plus &eacute;lev&eacute; que leurs cong&eacute;n&egrave;res. Ils sont tr&egrave;s destructeurs de loin mais assez peu de pr&egrave;s. Ils ne poss&egrave;dent cependant pas de bouclier de protection comme leurs fr&egrave;res.',
'Les Hunters sont des ennemis incroyablement dangereux qui sont d&eacute;ploy&eacute;s plus comme du mat&eacute;riel que comme des soldats. Ils sont utilis&eacute;s pour des t&acirc;ches de d&eacute;molitions ou de d&eacute;fense lourde et se battent toujours par deux. Ces cr&eacute;atures massives portent une armure quasiment imp&eacute;n&eacute;trable et une arme &agrave; combustible redoutable au combat.',
'Les m&eacute;decins sont sur le champ de bataille pour aider les soldats bless&eacute;s par des tirs lors des affrontements. Ils peuvent r&eacute;duire le nombre de morts lorsqu\'ils sont bien utilis&eacute;s, et donc peuvent peut être changer lissue de la bataille.',
'Les ing&eacute;nieurs, appel&eacute;s Huragok en langage covenant, forment la seule unit&eacute; non-combattante connue des forces covenantes. Celle-ci r&eacute;pare vos unit&eacute;s et v&eacute;hicules sur le champ de bataille ; plus vous en recrutez, plus vos unit&eacute;s et v&eacute;hicules au sol auront une chance de survivre.',
'Moins bien connus que les Elites, les Brutes combattent en groupes et sont physiquement plus forts que leurs cong&eacute;n&egrave;res. Les Brutes d&eacute;montrent les mêmes aptitudes au combat que les Elites et leur nombre s\'est consid&eacute;rablement accru depuis le d&eacute;but du conflit. Ils portent une arme balistique explosive &agrave; laquelle est fix&eacute;e une baïonnette.');
$casernea = array('grunt(s)','jackal(s)','drone(s)','&eacute;lite(s)','sniper(s)','hunter(s)','m&eacute;decin(s)','ing&eacute;nieur(s)','brute(s)');
$casernei = array('grunt1.jpg','jackal.jpg','94990342wb4.jpg','98004530fx3.jpg','88091275ja8.jpg','hunter1.jpg','81770345oo4.jpg','88218731ts1.jpg','72188202fg9.jpg');
$batimend = array('purificateur_m','purificateur_c','ionisateur','centrale_s','centrale_fusion','oeil','recherches','chantier_terrestre','???','caserne','silo','centre_info');
$batimeni = array('purificateurdemtalhb3.jpg','cristaloo3.png','powersupplycoviejq1.jpg','solaire.jpg','sanstitrevi7.jpg','oeilduprophetewj6.jpg','covielabocn5.jpg','chantierterrestrehg1.jpg','sanstitretruecolor09zn6.jpg','caserncov0ry.jpg','stockagebasement1cs10bl.jpg','ordianteur_hologramme.jpg');
$batiment = array('Purificateur de m&eacute;tal','Purificateur de cristal','Ionisateur','Centrale solaire','Centrale de fusion','Oeil des proph&egrave;tes','Centre de recherches','Chantier terrestre','Chantier spatial',0/*'Caserne'*/,'Entrep&ocirc;t','Centrale informatique');
$batimede = array( 'Le purificateur de m&eacute;tal vous fournit les mati&egrave;res premi&egrave;res pour la construction de vos infrastructures et de vos unit&eacute;s. Plus vous d&eacute;velopperez vos purificateurs, plus ils produiront de ressources. Les purificateurs les plus d&eacute;velopp&eacute;s ont aussi besoin de plus d\'&eacute;nergie.',
'Le purificateur de cristal vous fournit les ressources pour vos installations &eacute;lectroniques et pour les alliages. Le purificateur de cristal consomme deux fois plus d\'&eacute;nergie que celui de m&eacute;tal. Tous les vaisseaux et b&acirc;timents ont besoin de cristal pour leur bouclier ou encore leurs composants &eacute;lectroniques. La production augmente avec le d&eacute;veloppement de lusine.',
'L\'ionisateur utilise des ions n&eacute;gatifs et positifs d\'hydrog&egrave;ne pour cr&eacute;er une source conventionnelle de courant stable, servant &agrave; alimenter les b&acirc;timents covenants qui n&eacute;cessitent une arriv&eacute;e massive de cette "ressource" pour actionner les divers &eacute;l&eacute;ments mat&eacute;riels des contr&ocirc;les. La centrale de fusion &agrave; besoin de beaucoup d\'ions pour fonctionner.',
'Pour assurer l\'approvisionnement des purificateurs, des centrales solaires sont n&eacute;cessaires. Plus ces installations sont d&eacute;velopp&eacute;es, plus vous obtiendrez d&eacute;nergie pour vos purificateurs. Les centrales solaires sont la base de l\'approvisionnement pour votre plan&egrave;te en &eacute;nergie. Elles sont compos&eacute;es dun recueilleur sur le haut de sa structure qui capte en grandes quantit&eacute;s l&eacute;nergie solaire.',
'La centrale &agrave; fusion vous permet de cr&eacute;er l&eacute;nergie n&eacute;cessaire &agrave; vos purificateurs. Elles est constitu&eacute; dun r&eacute;acteur &agrave; fusion qui en tournant produit de l&eacute;nergie. Sa production reste nettement inf&eacute;rieure &agrave; celle dune centrale solaire.',
'Les grands proph&egrave;tes ont partag&eacute; leur savoir pour construire ces structures qui permettent de rep&eacute;rer les &eacute;l&eacute;ments sapprochants de votre plan&egrave;te. Le syst&egrave;me est constitu&eacute; de deux grands arcs qui envoient des signaux &eacute;lectriques dans lespace et captent ceux qui reviennent pr&eacute;sageant ainsi larriv&eacute;e dun vaisseau.',
'Le centre de recherches, l\'un des b&acirc;timents les plus importants de votre colonie, vous permet de vous accaparer des technologies aliens aujourdhui disparues ou des technologies en cours de d&eacute;veloppement dans dautres factions. Le niveau du centre d&eacute;termine la vitesse de la recherche. Chaque plan&egrave;te que vous coloniserez devra être &eacute;quip&eacute;e dun centre d\'&eacute;tude des artefacts et des technologies.',
'Le chantier terrestre vous permet de construire tous les v&eacute;hicules atmosph&eacute;riques du type ghosts, spectres ou autres. Il permet ainsi &agrave; vos arm&eacute;es dacc&eacute;der plus rapidement &agrave; un endroit et davoir un avantage avec larmement de ces v&eacute;hicules.',
'Ce b&acirc;timent permet la cr&eacute;ation de toutes vos unit&eacute;s spatiales ou volantes. La force des covenants a souvent &eacute;t&eacute; due &agrave; ses grandes avanc&eacute;es technologiques en mati&egrave;re da&eacute;ronautique. Un grand chantier spatial permet de cr&eacute;er des unit&eacute;s de plus en plus fortes et de surcroît de les cr&eacute;er de plus en plus rapidement.',
'Le Temple de la Guerre vous permet de cr&eacute;er l&eacute;lite des forces dinfanterie. Des soldats y sont fanatis&eacute;s puis entraîn&eacute;s au maniement des armes et &agrave; la strat&eacute;gie militaire. Plus vous d&eacute;veloppez le temple, plus la vitesse de production sera rapide.',
'Les ressources qui ne sont pas encore trait&eacute;es sont mises en stock dans ces entrep&ocirc;ts g&eacute;ants. Un entrep&ocirc;t plus grand permet le stockage d\'une plus grande quantit&eacute; de ressources. Lorsque lentrep&ocirc;t est plein, l\'extraction est stopp&eacute;e. Il est grandement conseill&eacute; de d&eacute;velopper ce genre dinfrastructure.',
'La centrale informatique est le coeur de votre plan&egrave;te, le cerveau de votre territoire, analysant chaque particule d&eacute;tect&eacute;e avec grand soin. Plus votre centrale est am&eacute;lior&eacute;e, plus rapidement et ais&eacute;ment les donn&eacute;es seront trait&eacute;es.');
$technolo = array('Informatique','Detection','Armement','Bouclier','Maitrise de l\'&eacute;nergie','R&eacute;acteur &agrave; antigravit&eacute;','R&eacute;acteur &agrave; fusion','R&eacute;acteur &agrave; fusion Forerunner','M&eacute;decine','Commandement militaire',0);
$technode = array( 'Linformatique vous permet de traiter les informations de façon tr&egrave;s rapide r&eacute;duisant ainsi les temps de r&eacute;actions qui dans les combats peuvent sav&eacute;rer fatales.',
'La d&eacute;tection est cruciale pour pr&eacute;server sa flotte et ses plan&egrave;tes. D&eacute;velopper cette technologie vous permet de construire une base « œil des proph&egrave;tes » qui rep&egrave;rera les vaisseaux sapprochant de votre plan&egrave;te.',
'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat d&eacute;muni face aux assauts f&eacute;roces adverses ? Cette technologie vous permettra de rechercher de nouveaux syst&egrave;mes d\'armements afin de rendre vos outils de guerre plus pr&eacute;cis et mortels.',
'Le bouclier est un champ de force qui entoure vos vaisseaux et les prot&egrave;ge. Ainsi il permet &agrave; vos vaisseaux de tenir plus longtemps face aux missiles adverses, ceci s\'av&eacute;rant peut être d&eacute;cisif dans lissue de la bataille.',
'L\'&eacute;nergie est la base de tout. Sans &eacute;nergie, pas de voyages stellaires ni même de quoi faire marcher vos installations. C\'est pourquoi l\'&eacute;tude de nouvelles façons de produire de l\'&eacute;nergie est vitale pour vos plan&egrave;tes et vaisseaux ; vos chercheurs vous permettront &eacute;galement d\'acc&eacute;der &agrave; de nouveaux types d\'&eacute;nergies, beaucoup plus int&eacute;ressants.',
'Les r&eacute;acteurs &agrave; antigravit&eacute; sont les moteurs basiques covenant. Ils utilisent une technologie complexe projetant des particules quantiques cr&eacute;ant un champ gravitationnel inverse annulant ainsi la gravit&eacute; pr&eacute;sente. Le principe fonctionne &eacute;galement dans l\'espace puisque l\'absence de gravit&eacute; dans l\'espace, sans compter les &eacute;toiles et les autres anomalies spatiales, permet une projection plus puissante du champ.',
'Apr&egrave;s la combustion, voici la fusion. Ce type de r&eacute;acteur est beaucoup plus puissant que la combustion utilis&eacute;e depuis d&eacute;j&agrave; des centaines d\'ann&eacute;es. Il g&eacute;n&egrave;re une &eacute;nergie cin&eacute;tique de grande envergure. Aucun dirigeant politique d&eacute;sirant voyager dans le cosmos ne pourrait sen passer.',
'Les covenants ont d&eacute;couvert danciens r&eacute;acteurs &agrave; fusion utilisant la technologie dhyperpropulsion Forerunner. Cette technologie, beaucoup plus puissante que le r&eacute;acteur conventionnel au Plasma, autorise des sauts dans le sous-espace ultra pr&eacute;cis. Ce type de r&eacute;acteur est le plus cher mais aussi le plus rapide et puissant de toute la flotte covenante.',
'La m&eacute;decine vous permet davoir moins de pertes au combat et ainsi davoir une force de frappe qui r&eacute;siste plus longtemps. Au lieu de laisser mourir les soldats bless&eacute;s, le m&eacute;decin les soigne pour les remettre sur pied et les rendre de nouveau aptes au combat.',
'En tant que g&eacute;n&eacute;ral, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en mati&egrave;re de strat&eacute;gie, vous montrer toujours plus rus&eacute; que votre impitoyable adversaire, aussi feriez-vous bien d\'&eacute;tudier de nouvelles tactiques de combat pour vous assurer une franche victoire.');
$technoli = array('informatique1.jpg','detection.jpg','sanstitretruecolor04no6.jpg','boucliervaiseaucovenantey4.jpg','energie.jpg','reacteurantigravyd1.jpg','reacteur_f.jpg','reacteurfusionforerunnewu0.jpg','medecine.JPG','commandement.jpg');
$nomvaisa = array('cargos de classe Inquisitor','grand(s) transporteur(s)','vaisseau(x) de colonisation','sonde(s)','recycleur(s)','s&eacute;raphin(s)','fr&eacute;gate(s)','croiseur(s) de classe CCS','croiseur(s) de classe Reverence','porte-vaisseaux','station(s) orbitale','super(s) porte-vaisseaux');
$nomvaisi = array('cargosparabola.jpg','cargosladen.jpg','coviecolobv3.jpg','sonde_despionnage1.jpg','charognard.jpg','chasseurlourd7id.jpg','croiseur8er.jpg','vaisseauuu0.jpg','vaisseaudebataille9na.jpg','pv.jpg','stationorbitalezt7.jpg','citecovenant.jpg');
$nomvaisn = array('Cargos de classe Inquisitor','Cargos de classe Interdictor','Vaisseau de colonisation de classe Returning','Sonde de reconnaissance de classe Perception','Charognard','S&eacute;raphin','Fr&eacute;gate','Croiseur de classe CCS','Croiseur de classe Reverence','Porte vaisseaux','Station orbitale covenant','Super porte vaisseaux');
$nomvaisd = array( 'Les cargos Inquisitor sont la base du transport de troupes et de ressources covenantes, capables de transporter un grand nombre de ressources sur une grande distance. Pratiquement sans armement, le cargo est sans d&eacute;fense et n&eacute;cessite une d&eacute;fense rapproch&eacute;e pour les trajets de grande distance.',
'Les cargos Interdictor sont une &eacute;volution du transport de classe Inquisitor. Ayant une capacit&eacute; de transport nettement sup&eacute;rieure &agrave; sa version pr&eacute;c&eacute;dente. Ce transport, quoique plus r&eacute;cent et disposant d\'un plus grand fret, dispose du même genre de d&eacute;fense que le mod&egrave;le ant&eacute;rieur, une escorte est donc fortement recommand&eacute;e lors de l\'utilisation de celui-ci.',
'Tout comme les humains, les covenants ont besoins d\'espace pour &eacute;tendre leur empire et c\'est pourquoi ces vaisseaux ont &eacute;t&eacute; pens&eacute;s et conçus. Capable de transformer la nature même d\'une plan&egrave;te en tr&egrave;s peu de temps, ce vaisseau est essentiel au d&eacute;veloppement de la soci&eacute;t&eacute; covenante.',
'Cette sonde de reconnaissance covenante est largement utilis&eacute;e lorsqu\'il est trop dangereux d\'envoyer un vaisseau. Sa fonction consiste &agrave; rassembler des donn&eacute;es sur les vaisseaux ou encore sur une plan&egrave;te dans un syst&egrave;me plan&eacute;taire.',
'Chaque bataille am&egrave;ne des pertes des 2 c&ocirc;t&eacute;s, et ce vaisseau est conçu pour en tirer tous les b&eacute;n&eacute;fices. Le Charognard, en retrait de la flotte principale, ramasse ce qu\'il reste des vaisseaux d&eacute;truits et les ram&egrave;ne &agrave; sa plan&egrave;te d\'origine où ces "d&eacute;chets" pourront être utilis&eacute;s pour produire des mati&egrave;res premi&egrave;res.',
'Le plus puissant et probablement le plus craint de tous les vaisseaux Covenants. Le S&eacute;raphin est le principal vaisseau offensif dans lespace et peut être employ&eacute; comme bombardier a&eacute;rien. Le S&eacute;raphin est d\'environ trois fois la taille d\'un Banshee, il poss&egrave;de plusieurs canons de plasma qu\'il utilise lors des engagements a&eacute;riens pour &eacute;liminer des opposants de type LongsWord et P&eacute;lican.',
'La fr&eacute;gate covenante est un vaisseau de tonnage moyen composant majoritairement les flottes habituelles. Équip&eacute;e de lasers &agrave; impulsion et de lanceurs de torpilles au plasma lat&eacute;raux, elle poss&egrave;de ainsi une puissance de feu raisonnable. Sa coque est aussi prot&eacute;g&eacute;e par un bouclier &eacute;nerg&eacute;tique la rendant beaucoup plus difficile &agrave; d&eacute;truire.',
'Ce vaisseau redoutable et titanesque s&egrave;me sans le moindre doute la terreur chez l\'ennemi. Arm&eacute; d\'un bout &agrave; l\'autre de lasers &agrave; impulsion, de torpilles au plasma et de bien d\'autres armes, ce croiseur est une arme extraordinaire &agrave; ne jamais sous estimer.',
'Un des plus grands vaisseaux de combat covenant, mesurant 3000 m&egrave;tres. Équip&eacute; de deux canons &agrave; projection &eacute;nerg&eacute;tique et de sept lanceurs de torpilles, il est d\'une puissance extraordinaire. Le seul probl&egrave;me r&eacute;side dans le fait que son &eacute;quipement demande une capacit&eacute; d\'&eacute;nergie ph&eacute;nom&eacute;nale.',
'Comme son nom l\'indique, son principal r&ocirc;le est de transporter des chasseurs Seraphins, des Spirits ou d\'autres vaisseaux de taille similaire. Arm&eacute; de quelques lasers &agrave; impulsion, le porte vaisseau reste un vaisseau de support plut&ocirc;t qu\'un vaisseau de confrontation directe. Hypoth&eacute;tiquement parlant, sa capacit&eacute; de tir est l&eacute;g&egrave;rement sup&eacute;rieure &agrave; celui d\'une corvette.',
'La station spatiale covenante, construite a même un ast&eacute;roide, poss&egrave;de un canon plasma d\'une centaine de mettre de long projetant une sph&egrave;re de plasma atteignant une chaleur proche de celle du coeur d\'un soleil. Également &eacute;quip&eacute; de tourelle automatique pour les chasseurs d\'efficacit&eacute; moyenne, ce poste orbital covenant est une arme d&eacute;fensive terrifiante pour toute adversaire de haut niveau ou non.',
'Le vaisseau ultime de la flotte covenante, long de plus de 5400 m&egrave;tres. Ce vaisseau est capable de transporter des quantit&eacute;s de chasseurs hors du commun. Arm&eacute; de projecteurs &eacute;nerg&eacute;tique et de laser &agrave; impulsion, ce vaisseau est le plus puissant apr&egrave;s la station spatiale.');
$nomterra = array('banshee(s)','spirit(s)','phantom','boarding craft','ghost(s)','shadow','spectre(s)','apparition(s)','shade','strong shade','tourelle(s) &agrave; barreau de combustible','canon(s) &agrave; plasma','lanceur(s) de torpilles plasma');
$nomterrn = array('Banshees', 'Spirit', 'Phantom', 'Boarding craft', 'Ghost', 'Shadow', 'Spectre', 'Apparition', 'Shade', 'Strong shade', 'Tourelle &agrave; barreau de combustible', 'Canon &agrave; plasma', 'Lanceur de torpilles plasma');
$nomterri = array('bansheeqp0.jpg', 'spirit1.jpg', 'phantomfu2.jpg', 'boardingcraft.jpg', 'ghostic1.jpg', 'shadow.jpg', 'spectre.jpg', 'wraith.jpg', 'shade.jpg', 'strongshade.jpg', 'tourellebarreau.jpg', 'tourelle.jpg', 'lanceur_torpilles.jpg');
$nomterde = array( 'Rapide et maniable, le Banshee est un formidable v&eacute;hicule d\'assaut a&eacute;rien, efficacement blind&eacute; contre les armes &agrave; feu l&eacute;g&egrave;res mais ne r&eacute;sistant cependant pas aux armes plus lourdes. Le canon &agrave; combustible dont il est &eacute;quip&eacute; en fait un bombardier dangereux tout autant qu\'un chasseur rapide. Le Banshee a la possibilit&eacute; de faire des tonneaux et des vrilles, ce qui serait impossible pour des v&eacute;hicules &agrave; l\'a&eacute;rodynamique conventionnelle.',
'Le spirit est une navette de transport de troupes terrestre. De capacit&eacute; moyenne, il peut transporter un petit contingent arm&eacute; dans les zones les plus repouss&eacute;es des plan&egrave;tes. Le spirit est &eacute;quip&eacute; d\'une tourelle de type shade de puissance moyenne, qui permet de maintenir les troupes ennemis &agrave; distance jusqu\'&agrave; ce que le largage des troupes soit effectu&eacute;.<br />Malheureusement, un manque d\'espace empêche l\'installation de g&eacute;n&eacute;rateur &eacute;nerg&eacute;tique plus puissant qui pourrait supporter des boucliers standards ou même de faible intensit&eacute;.',
'Le Phantom est un vaisseau beaucoup plus fiable que le vaisseau de d&eacute;barquement « Spirit ». Il poss&egrave;de trois tourelles plasma particuli&egrave;rement puissantes et peut laisser tomber ses occupants &agrave; terre via un ascenseur gravitationnel sans devoir se poser. Le Phantom a un blindage beaucoup plus r&eacute;sistant que son pr&eacute;d&eacute;cesseur, une puissance de feu accrue et peut transporter tout type d&eacute;quipage comme des hunters.<br />Le Phantom est assez nouveau dans l\'arsenal Covenant mais est rapidement devenu une crainte car son bombardement de plasma peut &eacute;liminer un bon nombre de marines.',
'~#DESCRIPTION MANQUANTE#~ Boarding craft',
'Le ghost est un v&eacute;hicule de reconnaissance et d\'attaque rapide d&eacute;ploy&eacute;e par les Covenants dans tout combat terrestre. Cet engin, tr&egrave;s souvent pilot&eacute; par les Elites, est tr&egrave;s maniable. Il est capable de tirer des doubles d&eacute;charges de plasma surchauff&eacute;es d\'une puissance de 100-250 kW. Le ghost peut &eacute;galement effectuer des pointes de vitesse soutenues.',
'Le Shadow est le principal moyen de transport terrestre des troupes covenantes. Ce v&eacute;hicule peut accueillir un pilote, un artilleur et jusqu\'&agrave; huit passagers en fonction du type de Covenants qui monte &agrave; bord. Il est en outre &eacute;quip&eacute; pour transporter des Elites, des Brutes, des Grunts ou des Jackals. Si le Shadow est &eacute;quip&eacute; d\'un canon &agrave; plasma, sa vocation reste le d&eacute;ploiement de troupes.',
'Le Spectre est un transport multi troupes blind&eacute; de petite taille. Quoique relativement lent, il est tout &agrave; fait maniable et se meut avec aisance dans les espaces confin&eacute;s. Ses principales faiblesses &eacute;tant son manque de vitesse et d\'acc&eacute;l&eacute;ration, ses occupants demeurent tout de même relativement expos&eacute;s. Le canon &agrave; plasma mont&eacute; &agrave; l\'arri&egrave;re repr&eacute;sente un grand danger pour l\'ennemi et le v&eacute;hicule offre par ailleurs diverses positions de tir.',
'Lent, massif et constituant une cible de taille, ce v&eacute;hicule n\'en demeure pas moins le blind&eacute; covenant le plus destructeur. Ce g&eacute;ant de m&eacute;tal est bien prot&eacute;g&eacute;. Le tir de couverture qu\'il peut effectuer gr&acirc;ce &agrave; ses mortiers &agrave; plasma redoutables en fait un ennemi incroyablement dangereux. Le fait qu\'il soit pilot&eacute; par une seule personne qui contr&ocirc;le le v&eacute;hicule et le syst&egrave;me d\'armement limite quelque peu son champ de manoeuvre.',
'Les tourelles shades sont des canons stationnaires &eacute;nerg&eacute;tiques covenant compos&eacute;s de deux parties, la premi&egrave;re &eacute;tant une base stable &agrave; trois pieds pour la stabilit&eacute; de lappareil, la deuxi&egrave;me, un si&egrave;ge où le canon est fix&eacute; retenu par un champ gravitationnel artificiel. Ce canon lorsquil tire, envoie 3 « &eacute;clairs » relativement lents et defficacit&eacute; moyenne.',
'Cette tourelle est une version am&eacute;lior&eacute;e de la shade standard. Dans les modifications de la tourelle, le syst&egrave;me dacc&eacute;l&eacute;ration magn&eacute;tique a &eacute;t&eacute; r&eacute;vis&eacute; pour le rendre plus performant, aboutissant &agrave; des rayons plus rapides. Également, un bouclier a &eacute;t&eacute; ajout&eacute; &agrave; lavant, prot&eacute;geant ainsi lutilisateur des attaques aux armes &agrave; projectiles de petit et moyen calibre pendant une p&eacute;riode de quelques secondes lors de feux nourris.',
'La tourelle &agrave; barreau de combustible est une version fixe de ceux des hunters avec un syst&egrave;me de vis&eacute;e am&eacute;lior&eacute; et de condensateur ionique permettent de tirer trois rafales &agrave; la suite sans surcharger les relais du g&eacute;n&eacute;rateur. De puissance moyenne, elle est capable de d&eacute;truire facilement des warthogs et autres v&eacute;hicules l&eacute;gers avec une facilit&eacute; hors norme.',
'Le canon &agrave; plasma na pas besoin de canonnier pour tirer puisque &eacute;quip&eacute; dun syst&egrave;me de vis&eacute;e automatis&eacute;, il utilise une technologie dintelligence artificielle rudimentaire pour ensuite envoyer un projectile de plasma surchauff&eacute; &agrave; haute vitesse carbonisant tout sur son passage.',
'Utilisant un principe similaire de la tourelle &agrave; plasma, le lanceur de torpilles plasma utilise un condensateur de mati&egrave;re pour condenser le flux de plasma surchauff&eacute; en une masse de destruction pure. Ce syst&egrave;me est le syst&egrave;me de d&eacute;fense terrestre le plus &eacute;volu&eacute; jamais construit. Son d&eacute;faut majeur reste sa cadence de tire lente, limitant sa d&eacute;fense face &agrave; de multiples adversaires.');
}
elseif ($auth_level >= 6 && md5($race) == '34c19b21bd4a3dda389e767d32fe9779') {
$ressourc = array('M&eacute;tal','Cristal','Hydrog&egrave;ne','Energie');
$casernen = array('Constructor','Sentinelle L&eacute;g&egrave;re','Sentinelle Lourde','Enforcer L&eacute;ger','Enforcer Lourd','Monitor','~#PAS DE NOM#~ M&eacute;decin','~#PAS DE NOM#~ Ing&eacute;nieur','~#PAS DE NOM#~ Brute');
$casernde = array( 'Les Constructors sont des minis sentinelles capable d\'effectuer certaine reparation mineur, ils peuvent r&eacute;par&eacute;s les sentinelles endommager ainsi que les chasseurs l&eacute;gers.',
'~#DESCRIPTION MANQUANTE#~ Sentinelle L&eacute;g&egrave;re',
'~#DESCRIPTION MANQUANTE#~ Sentinelle Lourde',
'Les Enforcers L&eacute;ger, sont des sentinelles massifs qui servent &agrave; contenir des grosses infections Floods. Ils sont prot&eacute;g&eacute;s par un bouclier d\'&eacute;nergie, mais il semble seulement prot&eacute;ger que l\'avant de la machine. Il est arm&eacute; de faisceaux laser &agrave; impulsion rapides.',
'Les Enforcers Lourd, sont des sentinelles massifs qui servent &agrave; contenir des grosses infections Floods. Ils sont prot&eacute;g&eacute;s par un bouclier d\'&eacute;nergie qui recouvre toute la machine. Il est arm&eacute; de mortiers.',
'Les monitors ont &eacute;t&eacute; plac&eacute;s sur les mondes-forteresse par les Forruner pour entretenir et maintenir leurs syst&egrave;mes, et pour s\'assurer que les Floods reste emprisonn&eacute;.',
'~#DESCRIPTION MANQUANTE#~ ',
'~#DESCRIPTION MANQUANTE#~ ',
'~#DESCRIPTION MANQUANTE#~ ');
$casernea = array('constructor(s)','sentinelle(s) l&eacute;g&egrave;re(s)','sentinelle(s) lourde(s)','enforcer(s) l&eacute;ger(s)','enforcer(s) lourd(s)','monitor(s)','m&eacute;decin(s)','ing&eacute;nieur(s)','brute(s)');
$casernei = array('scoutma3.jpg','sentinellelegerecn4.jpg','nanw9.jpg','defenseurlegerhs8.jpg','defenseurlourdhr3.jpg','nanw9.jpg','nanw9.jpg','nanw9.jpg','nanw9.jpg');
$batimend = array('purificateur_m','purificateur_c','ionisateur','centrale_s','centrale_fusion','oeil','recherches','chantier_terrestre','???','caserne','silo','centre_info');
$batimeni = array('generateurdemetalsg0.jpg','generateurdecristalmh5.jpg','generateurdhydrognedh3.jpg','generateurdenergievb7.jpg','generateurafusiondb2.jpg',0,'centrederecherchegu9.jpg','chantierterrestrehg1.jpg','chantierspatialff8.jpg',0,'nanw9.jpg',0);
$batiment = array('G&eacute;n&eacute;rateur de M&eacute;tal','G&eacute;n&eacute;rateur de Cristal','G&eacute;n&eacute;rateur d\'Hydrog&egrave;ne','G&eacute;n&eacute;rateur d\'Energie',0,0,'Centre de recherches','Chantier terrestre','Chantier spatial',0,'Entrep&ocirc;t',0);
$batimede = array( 'Le g&eacute;n&eacute;rateur de m&eacute;tal vous fournit les mati&egrave;res premi&egrave;res pour la construction de vos infrastructures et de vos unit&eacute;s. Plus vous d&eacute;velopperez vos g&eacute;n&eacute;rateurs, plus uls vous rapportera. Les g&eacute;n&eacute;rateurs plus d&eacute;velopp&eacute;s ont aussi besoin de plus d\'&eacute;nergie.',
'Le g&eacute;n&eacute;rateur de cristal vous fourni les ressources pour vos installations &eacute;lectroniques et pour les alliages. Le g&eacute;n&eacute;rateur consomme deux fois plus d\'&eacute;nergie que celui du m&eacute;tal. Tous les vaisseaux et b&acirc;timents ont besoin de cristal pour leur bouclier ou encore leur composant &eacute;lectronique. La production augmente avec le d&eacute;veloppement du g&eacute;n&eacute;rateur ainsi que sa consommation.',
'L\'hydrog&egrave;ne n\'est pas directement disponible dans la nature. On doit le produire : par electrolyse de l\'eau ce qui consiste &agrave; faire passer un courant &eacute;lectrique dans de l\'eau pour que les mol&eacute;cules se s&eacute;parent et forme du dihydrog&egrave;ne. Mais cette technique utilise de trop grande quantit&eacute;e d\'&eacute;nergie.',
'Pour assurer l\'approvisionnement des g&eacute;n&eacute;rateurs, des g&eacute;n&eacute;rateurs &eacute;nergie g&eacute;antes sont n&eacute;cessaires. Plus ces installations sont d&eacute;velopp&eacute;es, plus vous obtiendrez d&eacute;nergie pour vos g&eacute;n&eacute;rateurs. Les g&eacute;n&eacute;rateurs d\'&eacute;nergies sont la base de l\'approvisionnement pour votre plan&egrave;te en &eacute;nergie.',
0,
0,
'Le centre de recherche est n&eacute;cessaire pour d&eacute;velopper de nouvelles technologies. Le niveau du centre d&eacute;termine la vitesse de la recherche. Chaque plan&egrave;te que vous coloniserez devra être &eacute;quip&eacute;e dun centre de recherche.',
'~#DESCRIPTION MANQUANTE#~ Chantier terrestre',
'Le chantier spatial vous permet de construire des vaisseaux, de linfanterie et vos installations de d&eacute;fense. Plus le chantier est grand, plus la construction de vaisseaux, le recrutement de linfanterie et la cr&eacute;ation dinstallations de d&eacute;fense est rapide.',
0,
'Les ressources qui ne sont pas encore trait&eacute;es sont mises en stock dans ces entrep&ocirc;ts g&eacute;ants. Un entrep&ocirc;t plus grand permet le stockage d\'une plus grande quantit&eacute; de ressources. Lorsque lentrep&ocirc;t est plein, l\'extraction est stopp&eacute;e. Il est grandement conseill&eacute; de d&eacute;velopper ce genre dinfrastructure.',
0);
$technolo = array('Informatique','Detection','Armement','Bouclier','Maitrise de l\'&eacute;nergie','R&eacute;acteur &agrave; antigravit&eacute;','R&eacute;acteur &agrave; fusion','R&eacute;acteur &agrave; fusion Forruner','M&eacute;decine','Commandement militaire',0);
$technode = array( 'Linformatique vous permet de traiter les informations de façon tr&egrave;s rapide r&eacute;duisant ainsi les temps de r&eacute;actions qui dans les combats peuvent sav&eacute;rer fatales.',
'La d&eacute;tection est cruciale pour pr&eacute;server sa flotte et ses plan&egrave;tes. D&eacute;velopper cette technologie vous permet de construire une base « œil des proph&egrave;tes » qui rep&egrave;rera les vaisseaux sapprochant de votre plan&egrave;te.',
'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat d&eacute;muni face aux assauts f&eacute;roces adverses ? Cette technologie vous permettra de rechercher de nouveaux syst&egrave;mes d\'armements afin de rendre vos outils de guerre plus pr&eacute;cis et mortels.',
'Le bouclier est un champ de force qui entoure vos vaisseaux et les prot&egrave;ge. Ainsi il permet &agrave; vos vaisseaux de tenir plus longtemps face aux missiles adverses, ceci s\'av&eacute;rant peut être d&eacute;cisif dans lissue de la bataille.',
'L\'&eacute;nergie est la base de tout. Sans &eacute;nergie, pas de voyages stellaires ni même de quoi faire marcher vos installations. C\'est pourquoi l\'&eacute;tude de nouvelles façons de produire de l\'&eacute;nergie est vitale pour vos plan&egrave;tes et vaisseaux ; vos chercheurs vous permettront &eacute;galement d\'acc&eacute;der &agrave; de nouveaux types d\'&eacute;nergies, beaucoup plus int&eacute;ressants.',
'Les r&eacute;acteurs &agrave; antigravit&eacute; sont les moteurs basiques covenant. Ils utilisent une technologie complexe projetant des particules quantiques cr&eacute;ant un champ gravitationnel inverse annulant ainsi la gravit&eacute; pr&eacute;sente. Le principe fonctionne &eacute;galement dans l\'espace puisque l\'absence de gravit&eacute; dans l\'espace, sans compter les &eacute;toiles et les autres anomalies spatiales, permet une projection plus puissante du champ.',
'Apr&egrave;s la combustion, voici la fusion. Ce type de r&eacute;acteur est beaucoup plus puissant que la combustion utilis&eacute;e depuis d&eacute;j&agrave; des centaines d\'ann&eacute;es. Il g&eacute;n&egrave;re une &eacute;nergie cin&eacute;tique de grande envergure. Aucun dirigeant politique d&eacute;sirant voyager dans le cosmos ne pourrait sen passer.',
'Les covenants ont d&eacute;couvert danciens r&eacute;acteurs &agrave; fusion utilisant la technologie dhyperpropulsion Forruner. Cette technologie, beaucoup plus puissante que le r&eacute;acteur conventionnel au Plasma, autorise des sauts dans le sous-espace ultra pr&eacute;cis. Ce type de r&eacute;acteur est le plus cher mais aussi le plus rapide et puissant de toute la flotte covenante.',
'La m&eacute;decine vous permet davoir moins de pertes au combat et ainsi davoir une force de frappe qui r&eacute;siste plus longtemps. Au lieu de laisser mourir les soldats bless&eacute;s, le m&eacute;decin les soigne pour les remettre sur pied et les rendre de nouveau aptes au combat.',
'En tant que g&eacute;n&eacute;ral, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en mati&egrave;re de strat&eacute;gie, vous montrer toujours plus rus&eacute; que votre impitoyable adversaire, aussi feriez-vous bien d\'&eacute;tudier de nouvelles tactiques de combat pour vous assurer une franche victoire.');
$technoli = array('informatique1.jpg','detection.jpg','sanstitretruecolor04no6.jpg','boucliervaiseaucovenantey4.jpg','energie.jpg','reacteurantigravyd1.jpg','reacteur_f.jpg','reacteurfusionforerunnewu0.jpg','medecine.JPG','commandement.jpg');
$nomvaisa = array('cargos de classe Inquisitor','grand(s) transporteur(s)','vaisseau(x) de colonisation','sonde(s)','recycleur(s)','s&eacute;raphin(s)','fr&eacute;gate(s)','croiseur(s) de classe CCS','croiseur(s) de classe Reverence','porte-vaisseaux','station(s) orbitale','super(s) porte-vaisseaux');
$nomvaisi = array('nanw9.jpg','nanw9.jpg','nanw9.jpg',0,'nanw9.jpg','croiseurforrunerns4.jpg','superdestroyerwa6.jpg','nanw9.jpg','chasseurlourdfk8.jpg','nanw9.jpg','nanw9.jpg','nanw9.jpg');
$nomvaisn = array('Transporteur Leger','Transporteur Lourd','Colonisateur',0,'Recycleur','Croiseur Forruner','Super-Destroyer','Chasseur Leger','Chasseur Lourd','Porte-Vaisseaux','Station orbitale','Super porte-vaisseaux');
$nomvaisd = array( '~#DESCRIPTION MANQUANTE#~ Transporteur Leger',
'~#DESCRIPTION MANQUANTE#~ Transporteur Lourd',
'~#DESCRIPTION MANQUANTE#~ Colonisateur',
0,
'~#DESCRIPTION MANQUANTE#~ Recycleur',
'~#DESCRIPTION MANQUANTE#~ Croiseur Forruner',
'~#DESCRIPTION MANQUANTE#~ Super-Destroyer',
'~#DESCRIPTION MANQUANTE#~ Chasseur Leger',
'~#DESCRIPTION MANQUANTE#~ Chasseur Lourd',
'~#DESCRIPTION MANQUANTE#~ Porte-Vaisseaux',
'~#DESCRIPTION MANQUANTE#~ Station spatiale',
'~#DESCRIPTION MANQUANTE#~ Super porte-Vaisseaux');
$nomterra = array(0,0,0,0,0,0,0,0,'tour(s) &agrave; plasma','tour(s) ion','canon(s) Orbital','drone(s)','station(s) de defense');
$nomterri = array(0,0,0,0,0,0,0,0,'tourplasmasl4.jpg','tourioniquegr6.jpg','nanw9.jpg','nanw9.jpg','stationdedefensent8.jpg');
$nomterrn = array(0,0,0,0,0,0,0,0,'Tour &agrave; plasma','Tour Ion','Canon Orbital','Drone','Station de defense');
$nomterde = array( 0,
0,
0,
0,
0,
0,
0,
0,
'~#DESCRIPTION MANQUANTE#~ Tour &agrave; plasma',
'~#DESCRIPTION MANQUANTE#~ Tour Ion',
'~#DESCRIPTION MANQUANTE#~ Canon Orbital',
'~#DESCRIPTION MANQUANTE#~ Drone',
'~#DESCRIPTION MANQUANTE#~ Station de defense');
}
else {
$ressourc = array('M&eacute;tal','Cristal','Hydrog&egrave;ne','Energie');
$casernen = array('Marine','Fusiller','Grenadier','T.C.A.O.','Sniper','Spartan','M&eacute;decin','Ing&eacute;nieur','Soldat exo squellette');
$casernde = array( 'Les marines constituent l\'infanterie de base de vos forces militaires. De faible puissance et de r&eacute;sistance plut&ocirc;t m&eacute;diocre, ils rivalisent avec les unit&eacute;s covenants standard. Ils sont &eacute;quip&eacute;s d\'une armure de kevlar renforc&eacute;e et d\'un MA5B.',
'Les fusillers sont &eacute;quip&eacute;s de fusils d\'assaut avec zoom int&eacute;gr&eacute;. Plus puissants que les marines standards, ils peuvent rivaliser avec des escouades enti&egrave;res de grunts dirig&eacute;es par des &eacute;lites hauts grad&eacute;s.',
'Les grenadiers sont les sp&eacute;cialistes en explosifs du CSNU sur le terrain. Ils peuvent d&eacute;truire les v&eacute;hicules l&eacute;gers gr&acirc;ce &agrave; leurs grenades et leurs lances missiles.',
'Les TCAO sont des soldats d\'assauts largu&eacute;s depuis l\'espace directement sur les champs de batailles gr&acirc;ce &agrave; des modules sp&eacute;ciaux. Ces soldats sont surentraîn&eacute;s et tr&egrave;s chevronn&eacute;s, risquant leur vie &agrave; chaque instant en raison des sauts orbitaux qui font atteindre une chaleur extrême dans le module.',
'Les snipers sont dot&eacute;s de fusils de pr&eacute;cision SA 2M capable de descendre un covenant &agrave; plusieurs centaines de m&egrave;tres gr&acirc;ce &agrave; son zoom maximum de 10x. Grande port&eacute;e de tir mais &agrave; courte port&eacute;e, ils sont inutiles.',
'Les spartans sont les unit&eacute;s d\'infanterie militaires les plus &eacute;volu&eacute;es militairement du CSNU mais &eacute;galement des Covenants. Ils sont &eacute;quip&eacute;s d\'une armure de type Mjolnir am&eacute;liorant leurs capacit&eacute;s de combat, d&eacute;j&agrave; exceptionnelles gr&acirc;ce &agrave; leur entraînement militaire depuis leur plus jeune &acirc;ge, ainsi qu\'&agrave; leurs implants cybern&eacute;tiques, les rendants d\'une grande efficacit&eacute; in&eacute;gal&eacute;e au sein de l\'infanterie.',
'Les m&eacute;decins sont sur le champ de bataille pour aider les soldats bless&eacute;s par des tirs lors des affrontements. Ils peuvent r&eacute;duire le nombre de morts lorsqu\'ils sont bien utilis&eacute;s et ainsi peut être changer lissue de la bataille.',
'Les ing&eacute;nieurs sont l&agrave; pour r&eacute;parer vos v&eacute;hicules endommag&eacute;s lors des affrontements. Ils peuvent r&eacute;duire le nombre de vos pertes de v&eacute;hicules lorsqu\'ils sont bien utilis&eacute;s.',
'Les soldats exo squelettiques poss&egrave;dent des armures de combat tr&egrave;s r&eacute;sistantes et d\'une puissance &eacute;norme mais contre balanc&eacute;e par une faible autonomie d\'&eacute;nergie, une mobilit&eacute; faible et d\'une discr&eacute;tion auditive aussi silencieuse qu\'un char d\'assaut dans un champs de mines lotus.');
$casernea = array('marine(s)','fusiller(s)','grenadier(s)','T.C.A.O.','sniper(s)','spartan(s)','m&eacute;decin(s)','ing&eacute;nieur(s)','soldat(s) exo squellette');
$casernei = array('marines.jpg','marinehf0.jpg','grenadier.jpg','TCAO2.jpg','sniper.jpg','spartan.jpg','medecin.jpg','ingenieurs.jpg','exosquelettehbpb2.jpg');
$batiment = array('Usine de m&eacute;tallurgie','Usine de cristal','Synchronisateur d\'hydrog&egrave;ne','Centrale solaire','Centrale &eacute;nerg&eacute;tique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial',0/*'Ecole militaire'*/,'Silo de stockage','Centrale informatique');
$batimede = array( 'Cette usine traite tous les m&eacute;taux recueillis afin de produire du titanium-A ou diff&eacute;rents types d\'alliages de qualit&eacute; pour vos diff&eacute;rentes constructions plan&eacute;taires ou spatiales. Chaque niveau augmente la production de m&eacute;tal.',
'L\'usine de cristal filtre les d&eacute;chets r&eacute;colt&eacute;s avec les cristaux. Une fois s&eacute;par&eacute;s du reste ils sont class&eacute;s par qualit&eacute; par une quantit&eacute; d\'appareils de haute technologie. Plus les cristaux sont purs plus ceux-ci peuvent être transform&eacute;s en unit&eacute;s de stockage de donn&eacute;es ou en conducteurs &eacute;nerg&eacute;tiques de haute qualit&eacute;. Plus ce b&acirc;timent sera d&eacute;velopp&eacute;, plus vous pourrez traiter de cristaux rapidement.',
'Ce b&acirc;timent use de l\'eau pour la d&eacute;composer et en extraire l\'hydrog&egrave;ne, la base de toutes vos productions &eacute;nerg&eacute;tiques, pour ensuite l\'acheminer dans des condensateurs ioniques afin de le rendre plus dense et par le fait même plus efficace. Chaque niveau augmente la production du synchronisateur.',
'La centrale solaire produit l&eacute;nergie n&eacute;cessaire au fonctionnement de vos usines. Elle fonctionne &agrave; partir dune technologie Forruner qui consiste &agrave; envoyer un rayon &agrave; la verticale pour capter tous les rayons du soleil qui le croise.',
'La centrale &eacute;nerg&eacute;tique fonctionne avec un principe assez d&eacute;pass&eacute;. En effet, l&eacute;nergie est produite par un r&eacute;acteur &agrave; fusion qui en tournant produit de l&eacute;nergie comme le ferait une dynamo. Bien que ce principe f&ucirc;t r&eacute;volutionnaire &agrave; l&eacute;poque, il f&ucirc;t rapidement d&eacute;pass&eacute; par la centrale solaire qui permet de produire davantage d&eacute;nergie.',
'Le centre de communication est un gigantesque relai de transmission envoyant des ondes entre les différents mondes connus et répertoriés de l\'univers. Grâce à lui, vous pourrez communiquer avec d\'autres administrateurs coloniaux afin de planifier ensemble des programmes d\'actions communs. Equipé d\'un radar, il vous permet de rep&eacute;rer les mouvements des flottes ennemies.',
'Le centre de recherches est certainement l\'une des b&acirc;tisses les plus importantes que vous puissiez construire dans votre colonie. Vos chercheurs travailleront sans rel&acirc;che aucun afin de mettre au point de nouvelles technologies vous assurant supr&eacute;matie et victoire sur les champs de bataille. Chaque niveau d&eacute;vellop&eacute; augmente la vitesse de recherche de vos technologies.',
'Le chantier terrestre vous permet de construire tous les v&eacute;hicules atmosph&eacute;rique du type warthog ou scorpion. Il permet ainsi &agrave; vos troupes dacc&eacute;der plus rapidement &agrave; un endroit et davoir un avantage avec larmement de ces v&eacute;hicules.',
'Le chantier spatial permet de construire v&ocirc;tre flotte de vaisseaux spatiaux. G&eacute;n&eacute;ralement &agrave; la limite de latmosph&egrave;re dune plan&egrave;te il ne peut cependant se d&eacute;placer et doit imp&eacute;rativement rester en orbite. Le chantier spatial, bien que ressemblant &agrave; une station spatial, ne peut être d&eacute;truit gr&acirc;ce &agrave; sa position qui lui conf&egrave;re un camouflage total.',
'L\'acad&eacute;mie militaire forme les meilleurs officiers et sous-officiers de la galaxie. Ces hommes exp&eacute;riment&eacute;s vous aideront &agrave; choisir de meilleures strat&eacute;gies d&eacute;fensives ou offensives ou encore même &eacute;conomiques face aux diff&eacute;rentes situations qui vous seront impos&eacute;es. Plus vous augmenterez le niveau de cette structure plus vos officiers seront rapides et efficaces dans leurs t&acirc;ches.',
'Comme toutes choses, vos ressources ont besoin d\'espace pour être stock&eacute;es ; c\'est pourquoi ces &eacute;normes silos vous seront d\'une aide pr&eacute;cieuse afin d\'y renfermer une grande quantit&eacute; de mati&egrave;res premi&egrave;res pour toutes vos productions. Plus le niveau du silo est haut, plus il pourra contenir de ressources suppl&eacute;mentaires.',
'La centrale informatique est le coeur de votre plan&egrave;te, le cerveau de votre territoire, analysant chaque particule d&eacute;tect&eacute;e avec grand soin. Plus votre centrale est am&eacute;lior&eacute;e, plus rapidement et ais&eacute;ment les donn&eacute;es seront trait&eacute;es.');
$batimend = array('mine_m','mine_c','!!','centrale_s','centrale_f','radar','recherches','chantier_terrestre','???','ecole_militaire','silo','centre_info');
$batimeni = array('mine_m.jpg','mine_c.png','synchroniseur.jpg','centrale solaire.jpg','centrale electrique.jpg','baseradardl3.jpg','recherches.jpg','chantierterrestrecopybj8.jpg','chantier spatial.jpg','ecole militaire.jpg','stockage.jpg','search0yp.jpg');
$technolo = array('IA','Radar','Armement','Blindage','Maitrise de l\'&eacute;nergie','R&eacute;acteur &agrave; combustion','R&eacute;acteur &agrave; fusion','R&eacute;acteur &agrave; fusion de type II','M&eacute;decine','Tactiques de combats','Spartan');
$technode = array( 'Le r&eacute;sultat absolu de l\'informatique. L\'IA ou Intelligence Artificielle est le r&eacute;sultat d\'ann&eacute;es de travail acharn&eacute; pour pouvoir en arriver &agrave; cette grande performance technique. Les IA sont des entit&eacute;s non biologiques dot&eacute;es du pouvoir de la pens&eacute;e. D&eacute;velopper cette technologie vous permettra non seulement de disposer d\'Intelligences Artificielles, mais de les rendre de plus en plus complexes, cr&eacute;atives et r&eacute;actives.',
'Ce syst&egrave;me tr&egrave;s ancien et us&eacute; par bien des militaires est utilis&eacute; pour la d&eacute;tection et l\'imagerie d\'objets faisant appel &agrave; des impulsions d\'ondes &eacute;lectromagn&eacute;tiques &agrave; haute fr&eacute;quence et sert &agrave; d&eacute;terminer la position et la distance des vaisseaux. Pour chaque niveau, vous augmenterez la puissance de cette technologie et sa pr&eacute;cision.',
'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat d&eacute;muni face aux assauts f&eacute;roces adverses ? Cette technologie vous permettra de rechercher de nouveaux syst&egrave;mes d\'armements afin de rendre vos outils de guerre plus pr&eacute;cis et mortels.',
'La r&eacute;sistance de la coque de vos vaisseaux est plus que primordiale si vous tenez &agrave; remporter vos batailles, et encore plus avec les armes Covenantes capables de r&eacute;duire en miettes même les plus r&eacute;sistants des vaisseaux spatiaux. C\'est la raison pour laquelle vos scientifiques, si vous leur en donnez l\'ordre, travailleront avec application &agrave; l\'&eacute;laboration de nouvelles formules pour cr&eacute;er des alliages m&eacute;talliques les plus r&eacute;sistants.',
'L\'&eacute;nergie est la base de tout. Sans &eacute;nergie, pas de voyages stellaires ni même de quoi faire marcher vos installations tout simplement. C\'est pourquoi l\'&eacute;tude de nouvelles façons de produire de l\'&eacute;nergie est vitale pour vos plan&egrave;tes et les propulseurs de vos vaisseaux.',
'Le plus simple de tout les r&eacute;acteurs, aussi vieux que le monde lui-même ! Equip&eacute;s sur presque tout vos vaisseaux de base, cette technologie, certes basique, vous aidera &agrave; explorer l\'univers mais aussi, se trouvant être bien &eacute;videmment la base de la propulsion, vous permettra de d&eacute;couvrir de nouvelles techniques de propulsion irr&eacute;m&eacute;diablement toujours plus puissantes et efficaces.',
'Bien plus efficaces que de simples r&eacute;acteurs &agrave; combustion, la fusion nucl&eacute;aire est un processus où deux noyaux atomiques s\'assemblent pour former un noyau plus lourd. La fusion de noyaux l&eacute;gers d&eacute;gage d\'&eacute;normes quantit&eacute;s d\'&eacute;nergie provenant de l\'attraction entre les nucl&eacute;ons due &agrave; une forte interaction. Personne ne pourrait se passer de ce type d\'&eacute;nergie lors de ses voyages dans le cosmos.',
'Cette technologie bas&eacute;e sur les r&eacute;acteurs Covenants utilise la force &eacute;lectromagn&eacute;tique r&eacute;sultant de l\'interaction entre un courant &eacute;lectrique et un champ magn&eacute;tique pour acc&eacute;l&eacute;rer un gaz ionis&eacute; appel&eacute; plasma. Bien plus efficace que tous les moyens de propulsions possibles, cette technologie r&eacute;volutionnaire, tr&egrave;s co&ucirc;teuse, est un moyen efficace de parcourir de grandes distances en peu de temps.',
'Depuis l\'aube des temps, chaque être vivant et pensant n\'a jamais cess&eacute; de chercher de nouvelles solutions en d&eacute;vellopant les sciences m&eacute;dicales pour tenter d\'&eacute;chapper &agrave; la mort et aux &eacute;pid&eacute;mies qui s\'abbatent sur lui. Seulement, aujourd\'hui, ce ne sont plus les maladies qui importent, mais plutot les blessures de guerre. Plus votre m&eacute;decine sera &eacute;clatante, plus vos hommes de soins connaîtront de choses pour soigner vos bless&eacute;s.',
'En tant que g&eacute;n&eacute;ral, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en mati&egrave;re de strat&eacute;gie, vous montrer toujours plus rus&eacute; que votre impitoyable adversaire, aussi feriez-vous bien d\'&eacute;tudier de nouvelles tactiques de combat pour vous assurer une franche victoire.',
'Ces formidables combattants constituent l\'&eacute;lite de vos forces terrestres. Entraîn&eacute;s au maniement des armes, aux tactiques militaires et au combat de groupe depuis la naissance, ils sont pratiquement invincibles sur les champs de bataille face aux troupes covenantes. Les Spartans ont &eacute;galement subis plusieurs s&eacute;ries de modifications biologiques afin d\'am&eacute;liorer leurs capacit&eacute;s physiques.');
$technoli = array('IA4.jpg','radar7zr.jpg','arme.png','blindage.jpg','plasma4yl.jpg','reacteuracombustion.jpg','reacteurfusiontype1al5.jpg','reacteurfusiontype2nn6.jpg','medecin1.jpg','tactique.jpg','armuremc8ij.jpg');
$nomvaisn = array('Cargos de classe Parabola','Cargos de classe Laden','Vaisseaux de colonisation de classe Odyssey','Drones despionnage de classe Clarion','Recycleurs de classe Minotaur','C709 Longsword Interceptor','Fr&eacute;gate','Croiseurs de classe Halcyon','Croiseurs de classe Marathon','Porte vaisseaux','Station orbitale','Super porte-vaisseaux');
$nomvaisd = array( 'Ces cargos de taille cons&eacute;quente peuvent transporter assez de ressources et de nourriture pour nourrir une petite ville. Ils sont rapides, tr&egrave;s manœuvrables mais peu r&eacute;sistants, ce qui est en fait des proies faciles pour les chasseurs ennemis.',
'Ces cargos de taille massive permettent le transport dune &eacute;norme quantit&eacute; de ressources. Ils sont plus r&eacute;sistants que leurs homologues de classe Parabola, mais sont n&eacute;anmoins les cibles prioritaires des chasseurs ennemis visant &agrave; faire le plus de pertes dans le camp adverse.',
'Les vaisseaux de colonisation sont de vraies minis villes volantes ; ils contiennent la majeure partie des corps détats de votre planète mère afin dêtre le plus autonome lorsque que vous colonisez de nouvelles planètes.',
'Drones extrêmement rapides et manœuvrables permettant la surveillance et lespionnage des plan&egrave;tes alentours avec un risque moins &eacute;lev&eacute; de rep&eacute;rage quavec un vaisseau furtif standard. Ils sont utilis&eacute;s lors de lespionnage de plan&egrave;tes ennemies et sont tr&egrave;s fragiles, si bien que lorsquils traversent un champ de d&eacute;bris, ils sont r&eacute;duits en de vulgaires morceaux de m&eacute;tal.',
'Les guerres sont de plus en plus nombreuses et les pertes de plus en plus grandes laissant &agrave; chaque fois des champs de d&eacute;bris immenses limitant les routes des voies commerciales. Des recycleurs ont donc &eacute;t&eacute; cr&eacute;&eacute;s afin de d&eacute;blayer ces zones et de vous faire profiter de ces ressources gratuites. Lors du voyage de retour, le recycleur transforme les d&eacute;bris pour vous les redonner sous forme de ressources primaires.',
'Vaisseau orbital et atmosph&eacute;rique lourd, apte au combat spatial, atmosph&eacute;rique, et au bombardement lourd sur des positions strat&eacute;giques. Ces vaisseaux sont capable de bombarder une vaste position adverse, gr&acirc;ce &agrave; leurs bombes au Napalm, mais sont aussi capables de cibler pr&eacute;cis&eacute;ment leurs cibles et de les d&eacute;truire gr&acirc;ce &agrave; leurs nombreux missiles air-air air-sol.',
'Cette classe de vaisseau est la plus r&eacute;pandue dans le CSNU. Ces vaisseaux sont tr&egrave;s manœuvrables du fait de leur petite taille, mais sont aussi tr&egrave;s faibles, &agrave; cause de leur blindage et de leur armement moindre. Ces vaisseaux sont peu co&ucirc;teux mais &eacute;galement peu efficaces et sont surtout utilis&eacute;s pour des patrouilles. Ils forment les &eacute;l&eacute;ments principaux des diff&eacute;rentes flottes du CSNU. ',
'Ces croiseurs sont des vaisseaux dattaque, d&eacute;pass&eacute;s technologiquement, tr&egrave;s peu r&eacute;pandus, tr&egrave;s co&ucirc;teux mais r&eacute;sistants : leur architecture interne leur permet de r&eacute;sister &agrave; de nombreux tirs de plasma. Cette architecture complexe &agrave; produire et &agrave; maintenir en &eacute;tat, en font des vaisseaux extrêmement rares et chers. Ils ont &eacute;t&eacute; tr&egrave;s r&eacute;cemment remis &agrave; neuf et am&eacute;lior&eacute;s, avec un tout nouvel armement.',
'Ces grands vaisseaux (2 fois et demie la longueur dune fr&eacute;gate), sont des descendants de la lign&eacute;e des croiseurs Halcyon. Ces vaisseaux ont une tr&egrave;s grande puissance de feu (1 CAM lourd), un fort blindage (5 m&egrave;tres 50 de Titane-A), et sont tr&egrave;s rapides. Ils sont assez peu communs, mais restent des vaisseaux dattaque tr&egrave;s redoutables : ils peuvent encaisser de nombreux tirs de plasma avant de succomber.',
'Ces immenses vaisseaux sont capables de transporter bon nombre de Longswords, dAlbatross, et tout autres types dunit&eacute;s. Ces vaisseaux leurs permettent de se d&eacute;fendre contre une &eacute;ventuelle attaque de chasseurs ennemis, mais sont &eacute;galement tr&egrave;s lourdement arm&eacute;s. Ils sont usit&eacute;s lors dattaques massives de plan&egrave;tes n&eacute;cessitant un fort appui a&eacute;rien et une tr&egrave;s grosse puissance de feu. ',
'Les station orbitales humaines sont basées sur un même modèle : de multiples DCA légères et lourdes pour les chasseurs, des missiles ARCHERS et un CAM standard capable de pénétrer la plupart des boucliers stellaires. Cette base orbitale est très bien équipée et est considérée comme la défense principale des planètes du CSNU.',
'Ces vaisseaux sont beaucoup plus chers du fait de leur meilleur armement, blindage et importante capacit&eacute; de transport. Ces vaisseaux sont tr&egrave;s peu vus sur le terrain, leur r&ocirc;le principal est de d&eacute;ployer des Longswords afin de fournir aux vaisseaux alli&eacute;s un appui orbital. Ils font partis des plus puissants vaisseaux du CSNU. Ils sont capables de transporter bon nombre dunit&eacute;s terrestres et a&eacute;riennes.');
$nomvaisa = array('cargos de classe Parabola','cargos de classe Laden','vaisseau(x) de colonisation de classe Odyssey','drone(s) d\'espionnage de classe Clarion','recycleur(s) de classe Minotaur','C709 Longsword Interceptor','Fr&eacute;gates','croiseur(s) de classe Halcyon','croiseur(s) de classe Marathon','porte vaisseaux','station(s) orbitale','super(s) porte-vaisseaux');
$nomvaisi = array('csnucargoparabola2mc9.jpg','csnucargoladen2al8.jpg','colonisation.jpg','drone_clarion.jpg','img_na_ig.jpg','longsworduf9.jpg','fregatewz5.jpg','croiseurclassealcyon130om6.jpg','croiseurmarathonke3.jpg','csnuportevaisseauxgy3.jpg','station.jpg','csnusuperportevaisseauxrw4.jpg');
$nomterra = array('sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT','mitrailleuse(s) automatique M247 GP','DCA l&eacute;g&egrave;re(s)','DCA lourde(s)','canon(s) Gauss','lanceur(s) de missiles');
$nomterrn = array('Sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT','Mitrailleuse automatique M247 GP','DCA l&eacute;g&egrave;re','DCA lourde','Canon Gauss','Lanceur de missiles');
$nomterde = array( 'V&eacute;hicule &agrave; propulsion verticale permettant des attaques extrêmement rapides et destructrices gr&acirc;ce &agrave; ses six tubes lance-missiles, ses deux mitrailleuses l&eacute;g&egrave;res, et sa mitrailleuse lourde frontale. Ces vaisseaux dassaut rapide sont de v&eacute;ritables broyeurs de t&ocirc;le gr&acirc;ce &agrave; leurs 6 tubes lance-missiles et sont capables de d&eacute;truire des v&eacute;hicules et des positions fortement blind&eacute;es.',
'V&eacute;hicule a&eacute;rien de transport l&eacute;ger permettant le transport rapide de troupes &agrave; des endroits strat&eacute;giques tel un warthog ou un scorpion. Ils sont la base des renforts terrestres et permettent lacheminement de troupes et de munitions rapidement.',
'Vaisseau suborbital tr&egrave;s rapide apte tant au combat a&eacute;rien rapproch&eacute; quau bombardement cibl&eacute;. Ces bombardiers ont un pointeur laser qui leur permet de viser au mieux les cibles ennemies, qu\'elles soient au sol ou a&eacute;riennes. Ils sont n&eacute;anmoins capables de combattre en combat a&eacute;rien rapproch&eacute; gr&acirc;ce &agrave; leurs missiles thermo guid&eacute;s et sont utilis&eacute;s lors de bombardements de cibles mineures.',
'V&eacute;hicule a&eacute;rien de transport lourd permettant le transport en masse de troupes ou de v&eacute;hicules tels que des warthogs ou bien une paire de scorpions vers des zones de largage. Ces v&eacute;hicules de soutien a&eacute;rien lourd sont surtout utilis&eacute;s lors doffensives n&eacute;cessitant un d&eacute;ploiement en masse dunit&eacute;s blind&eacute;es et de munitions au plus pr&egrave;s des lignes adverses.',
'V&eacute;hicule dattaque l&eacute;ger permettant des assauts rapides et efficaces, ainsi que le transport l&eacute;ger de troupes. Ces v&eacute;hicules sont la base des v&eacute;hicules terrestres du CSNU.',
'V&eacute;hicule l&eacute;ger &eacute;quip&eacute; dun canon &agrave; acc&eacute;l&eacute;ration magn&eacute;tique (CAM), tr&egrave;s efficace contre du personnel, des v&eacute;hicules moyennement blind&eacute;s, ou bien contre des v&eacute;hicules a&eacute;riens l&eacute;gers. Les Warthog M12G1 sont tr&egrave;s r&eacute;pandus et surtout utilis&eacute;s lors d\'offensives sur des cibles disposant dun appui a&eacute;rien ou terrestre l&eacute;ger.',
'V&eacute;hicule l&eacute;ger, arm&eacute; dun lance-missiles anti-v&eacute;hicule permettant des assauts rapides contre des v&eacute;hicules blind&eacute;s ou contre des positions fortifi&eacute;es. Ils sont surtout utilis&eacute;s en cas dattaques de postes avanc&eacute;s.',
'Tank blind&eacute; anti-v&eacute;hicules. Permet lattaque de cibles fortifi&eacute;es gr&acirc;ce &agrave; ses balles perforantes de gros calibre. Ces tanks sont utilis&eacute;s lors dassauts massifs sur des bases fortifi&eacute;es et vitales &agrave; lennemi.',
'La mitrailleuse M247 est une arme de calibre moyen envoyant des balles de calibre 30 &agrave; une cadence de tir de 6 balles par seconde. G&eacute;n&eacute;ralement positionn&eacute;e dans des endroits fixes, cette tourelle, efficace contre l\'infanterie et les v&eacute;hicules l&eacute;gers de petite taille est de pr&eacute;cision moyenne suffisante pour &eacute;liminer une menace de quelques soldats covenants.',
'Les DCA l&eacute;g&egrave;res sont des canons anti-a&eacute;rien de puissance moyenne mais de cadence de tir et de calibre de munitions &agrave; tête explosive &eacute;lev&eacute;e permettant de d&eacute;truire la plupart des chasseurs l&eacute;gers avec aisance. Ce mod&egrave;le est &eacute;quip&eacute; d\'un emplacement sp&eacute;cial lui permettant de tirer &eacute;galement sur des cibles au sol.',
'Les DCA lourdes sont quasi-similaires aux l&eacute;g&egrave;res mais poss&egrave;dent tout de même une diff&eacute;rence au niveau du calibre des balles qui, plus &eacute;lev&eacute; avec une tête explosif sup&eacute;rieure est comparable &agrave; une explosion de mine lotus. Il a en contre partie une capacit&eacute; de tir plus limit&eacute;e question cadence et une quantit&eacute; de munitions moindre dans chaque chargeur.',
'Le canon gauss est l\'&eacute;quivalent du Super CAM mais en version miniature tirant des projectiles &agrave; haute densit&eacute; et &agrave; grande vitesse sur ses cibles. Il est capable, en outre, de d&eacute;truire des v&eacute;hicules &agrave; blindage lourd tel des wraith\'s covenants, v&eacute;ritables chars d\'assaut &agrave; longue port&eacute;e. Malheureusement, il est moins efficace contre l\'infanterie d&ucirc; &agrave; sa cadence de tir plut&ocirc;t faible et sa pr&eacute;cision moindre.',
'Les lance-missiles du CSNU sont &eacute;quip&eacute;s de missiles balistiques hautement explosifs capables de r&eacute;duire ais&eacute;ment en miettes les chars covenants ou les chasseurs S&eacute;raphins. Ce lance-missiles, une fois ses salves tir&eacute;es, n&eacute;cessite plusieures minutes de r&eacute;armement pour être de nouveau op&eacute;rationnel.');
$nomterri = array('csnusparrowhawkkp4.jpg','pelican.jpg','csnushortswordad3.jpg','albatross.jpg','warthog-vrl.jpg','M12G1_LAAV_Warthog.jpg','M12A1_LAAV_Warthog.jpg','scorpionN.jpg','tourelle_fixe.jpg','dca_legere.jpg','dca_lourde.jpg','tourelle_gauss.jpg','csnulancemissileol5.jpg');
}
?>

157
onyx/hb_game/ressources.php Normal file
View file

@ -0,0 +1,157 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$g = $queryPlanete['galaxie'];
$s = $queryPlanete['ss'];
$p = $queryPlanete['position'];
$mine_m = $queryPlanete['mine_m'];
$coeff_mine_m = $queryPlanete['coeff_mine_m'];
if ($coeff_mine_m < 0) $coeff_mine_m = 0;
if ($coeff_mine_m > 1) $coeff_mine_m = 1;
$mine_c = $queryPlanete['mine_c'];
$coeff_mine_c = $queryPlanete['coeff_mine_c'];
if ($coeff_mine_c < 0) $coeff_mine_c = 0;
if ($coeff_mine_c > 1) $coeff_mine_c = 1;
$mine_h = $queryPlanete['mine_h'];
$coeff_mine_h = $queryPlanete['coeff_mine_h'];
if ($coeff_mine_h < 0) $coeff_mine_h = 0;
if ($coeff_mine_h > 1) $coeff_mine_h = 1;
$centrale_s = $queryPlanete['centrale_s'];
$coeff_centrale_s = $queryPlanete['coeff_centrale_s'];
//$coeff_centrale_s = 1;
if ($coeff_centrale_s < 0) $coeff_centrale_s = 0;
if ($coeff_centrale_s > 1) $coeff_centrale_s = 1;
$centrale_f = $queryPlanete['centrale_f'];
if ($centrale_f <= 0) $coeff_centrale_f = 0;
else $coeff_centrale_f = $queryPlanete['coeff_centrale_f'];
if ($coeff_centrale_f < 0) $coeff_centrale_f = 0;
if ($coeff_centrale_f > 1) $coeff_centrale_f = 1;
//Calcul du temps écoulé depuis la dernière mise à jour de la planète
$temps_actuel = time();
$temps_ancien = $queryPlanete['timestamp'];
$temps_ecoule = $temps_actuel - $temps_ancien;
//Calcul de la capacité de stockage maximale
$cap = (pow(2,$queryPlanete['silo'])*100000);
//Initialisation des variables
$conso_h = 0;
//Production
if ($mine_m > 0) $energie_m = ceil(exp(0.28*$mine_m)*10); else $energie_m= 0;
if ($mine_c > 0) $energie_c = ceil(exp(0.28*$mine_c)*10); else $energie_c= 0;
if ($mine_h > 0) $energie_h = ceil(exp(0.2849*$mine_h)*13); else $energie_h= 0;
if ($centrale_f > 0) $energie_f = ceil(exp(0.297*$centrale_f)*25); else $energie_f = 0;
if ($centrale_s > 0) $energie_s = ceil(exp(0.28*$centrale_s)*22); else $energie_s = 0;
//Calcul de la consomation d'énergie
$nrj = $energie_m * $coeff_mine_m + $energie_c * $coeff_mine_c + $energie_h * $coeff_mine_h;
$nrjmx = $energie_m + $energie_c + $energie_h;
//Calcul de la production d'énergie
$t = $energie_s * $coeff_centrale_s + $energie_f * $coeff_centrale_f;
if ($nrj == 0) $coeff = 0;
else $coeff = $t / $nrj;
//print $coeff.' = '.$t.'/'.$nrj;
if ($coeff < 0) $coeff = 0;
elseif ($coeff > 1) $coeff = 1;
$Ncoeff_mine_m = $coeff * $coeff_mine_m;
$Ncoeff_mine_c = $coeff * $coeff_mine_c;
$Ncoeff_mine_h = $coeff * $coeff_mine_h;
if ($Ncoeff_mine_m > 1) $Ncoeff_mine_m = 1;
if ($Ncoeff_mine_c > 1) $Ncoeff_mine_c = 1;
if ($Ncoeff_mine_h > 1) $Ncoeff_mine_h = 1;
if ($Ncoeff_mine_m < $coeff_mine_m) $coeff_mine_m = $Ncoeff_mine_m;
if ($Ncoeff_mine_c < $coeff_mine_c) {
$bdd->query("UPDATE planete SET coeff_mine_c='$Ncoeff_mine_c' WHERE id_user='$id_user' AND galaxie='$g' AND ss='$s'AND position='$p'");
$coeff_mine_c = $Ncoeff_mine_c;
}
if ($Ncoeff_mine_h < $coeff_mine_h) {
$bdd->query("UPDATE planete SET coeff_mine_h='$Ncoeff_mine_h' WHERE id_user='$id_user' AND galaxie='$g' AND ss='$s'AND position='$p'");
$coeff_mine_h = $Ncoeff_mine_h;
}
$alert_metal = false;
if ($metal >= $cap) {
$prod_met=0;
$metal = $cap;
$alert_metal = true;
}
else {
if ($mine_m <= 0 || $centrale_s <= 0) $prod_met = 0.011*$temps_ecoule;
else $prod_met = ((ceil(pow(1.1,$mine_m)*35*$mine_m)/3600)*$temps_ecoule)*$coeff_mine_m*1.5;
}
$alert_cristal = false;
if ($cristal >= $cap) {
$prod_cri=0;
$cristal = $cap;
$alert_cristal = true;
}
else {
if ($mine_c <= 0 || $centrale_s <= 0) $prod_cri = 0.0055*$temps_ecoule;
else $prod_cri = ((ceil(pow(1.1,$mine_c)*23*$mine_c)/3600)*$temps_ecoule)*$coeff_mine_c*1.5;
}
$alert_hydrogene = false;
if ($hydrogene >= $cap) {
$prod_hy=0;
$hydrogene = $cap;
$alert_hydrogene = true;
}
else {
if ($mine_h < 0) $prod_hy = 0;
else $prod_hy = (((ceil(pow(1.1,$mine_h)*14*($mine_h+0.7))/3600)*$temps_ecoule) - $conso_h) * $coeff_mine_h*1.5;
if ($mine_h == 0) $prod_hy=0;
if ($prod_hy < 0) $prod_hy = 0;
}
if ($centrale_f > 0) $conso_h = ((ceil(pow(1.34,($centrale_f-1))*9)/3600)*$temps_ecoule) * $coeff_centrale_f;
else $conso_h = 0;
$prod_mineh = $prod_hy;
$prod_hysv = $prod_hy;
$prod_hy -= $conso_h;
if ($hydrogene+$prod_hy < 0) {
$prod_hy = $prod_hysv;
$conso_h = 0;
$coeff_energie_f = 0;
}
elseif (ceil(pow(1.34,($centrale_f-1))*9) <= $hydrogene/5 && $coeff_centrale_f == 0) {
$coeff_energie_f = 1;
}
$a = $metal + $prod_met;
$b = $cristal + $prod_cri;
$c = $hydrogene + $prod_hy;
$u = $energie_s * $coeff_centrale_s + $energie_f * $coeff_centrale_f;
$TEMP_energie = separerNombres(intval($nrj)).'/'.separerNombres($u);
if ($nrj >= $u) $alert_energie = true;
else $alert_energie = false;
$diffnrj = $u-$nrj;
//Mise à jour de la base de données
$bdd->connexion();
if ($Ncoeff_mine_m < $coeff_mine_m) $bdd->query("UPDATE planete SET coeff_mine_m='$Ncoeff_mine_m' WHERE id = '$idPlan'");
if ($Ncoeff_mine_c < $coeff_mine_c) $bdd->query("UPDATE planete SET coeff_mine_m='$Ncoeff_mine_c' WHERE id = '$idPlan'");
if ($Ncoeff_mine_h < $coeff_mine_h) $bdd->query("UPDATE $table_planete SET coeff_mine_h = '$Ncoeff_mine_h' WHERE id = '$idPlan';");
$bdd->query("UPDATE $table_planete SET timestamp = '$temps_actuel', metal = '$a', cristal = '$b', hydrogene = '$c', coeff = '$coeff', energie = '$t', coeff_centrale_f = '$coeff_centrale_f', coeff_mine_m = '$coeff_mine_m', coeff_mine_c = '$coeff_mine_c', coeff_mine_h = '$coeff_mine_h' WHERE id_user = '$id_user' AND galaxie = '$g' AND ss = '$s'AND position = '$p'");
$bdd->deconnexion();
$template->assign('alertes', array($alert_metal, $alert_cristal, $alert_hydrogene, $TEMP_energie, $alert_energie, separerNombres($diffnrj)));
?>

24
onyx/hb_game/tables.php Normal file
View file

@ -0,0 +1,24 @@
<?php
if(!defined('INDEX')) { header('Location: ../'); exit; }
$table_alliances = $config['db_prefix'].'alliances';
$table_alliances_attente = $config['db_prefix'].'alliances_attente';
$table_alliances_chat = $config['db_prefix'].'alliances_chat';
$table_alliances_creation = $config['db_prefix'].'alliances_creation';
$table_alliances_grade = $config['db_prefix'].'alliances_grade';
$table_bug = $config['db_prefix'].'bug';
$table_classement = $config['db_prefix'].'classement';
$table_flottes = $config['db_prefix'].'flottes';
$table_flottes_combats = $config['db_prefix'].'flottes_combats';
$table_infoshead = $config['db_prefix'].'infoshead';
$table_mail = $config['db_prefix'].'mail';
$table_ope_faq = $config['db_prefix'].'ope_faq';
$table_ope_mail = $config['db_prefix'].'ope_mail';
$table_ope_modele = $config['db_prefix'].'ope_modele';
$table_planete = $config['db_prefix'].'planete';
$table_registre_identification = $config['db_prefix'].'registre_identification';
$table_sessions = $config['db_prefix'].'sessions';
$table_user = $config['db_prefix'].'user';
$table_user_inscriptions = $config['db_prefix'].'user_inscriptions';
$table_version = $config['db_prefix'].'version';
?>

550
onyx/hb_game/vars.php Normal file
View file

@ -0,0 +1,550 @@
<?php //vars.php : contient toutes les valeurs pour construire chaque batiments, unités ou technologies
if (!isset($technolo)) {
$race = 'none';
include(_FCORE."hb_game/noms.php");
}
/*
* Défenses
*/
//Attaque
$defense_at = array(10,35,70,250,50);
//D&eacute;fense (bouclier)
$defense_bc = array(0,15,30,35,100);
//Coque (pv)
$defense_pv = array(15,45,45,240,100);
//Débris de métal
$defense_md = array(300,300,300,300,300);
//Débris de cristal
$defense_cd = array(300,300,300,300,300);
//Rapide fire (nombre d'attaque par phase envers un vaisseau)
$defense_rf = array( array(1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1));
/*
* Vaisseaux
*/
//Nombre maximal de ressources embarqu&eacute;
$nomvais_rs = array(5000,25000,7500,10,20000,50,300,4000,3000,10000,0,30000);
//Coefficient vitesse courte distance : temps pour parcourir un syst&egrave;me
$nomvais_dc = array(108,108,108,25,108,108,108,108,108,108,108,108);
//Temps de pr&eacute;paration courte distance : temps de pr&eacute;paration &agrave; compter avant tout d&eacute;placement
$nomvais_pdc = array(900,900,900,35,900,900,900,900,900,900,900,900);
//Coefficient vitesse longue distance : temps pour parcourir un syst&egrave;me
$nomvais_dl = array(0,54,54,0,54,0,54,54,54,54,0,54);
//Temps de pr&eacute;paration longue distance
$nomvais_pdl = array(0,0,0,0,0,0,0,0,0,0,0,0);
//Temps de chauffe
$nomvais_cdl = array(0,20,20,0,20,0,0,20,20,20,0,20);
//Attaque
$nomvais_at = array(10,5,10,0.5,20,30,70,400,1600,2400,4500,4000);
//D&eacute;fense (bouclier)
$nomvais_bc = array(0,40,500,1,1200,0,10,70,1000,2400,4000,3600);
//Coque (pv)
$nomvais_pv = array(40,80,400,1,300,40,90,450,1500,2000,5000,5000);
//Débris de métal
$nomvais_md = array(300,300,300,300,300,300,300,300,300,300,300,36000);
//Débris de cristal
$nomvais_cd = array(300,300,300,300,300,300,300,300,300,300,300,24000);
//Rapide fire (nombre d'attaque par phase envers un vaisseau)
$nomvais_rf = array( array(1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1),
array(1,1,1,1,1,1,1,1,1,1,1,1,1),
array(40,40,40,40,40,40,1,1,2,1,1,1,1),
array(10,10,10,10,10,10,30,1,1,2,1,1,1),
array(30,30,30,30,30,30,1,1,10,2,1,1,1),
array(20,20,20,20,20,20,2,1,1,1,1,1,1),
array(80,80,80,80,80,80,25,12,8,4,1,2,1),
array(100,100,100,100,100,100,20,10,5,2,1,1,1));
$batimentVAR = array('mine_m','mine_c','mine_h','centrale_s','centrale_f','radar','labo','chantier_terrestre','chantier_spatial','caserne','silo','centre_info');
$batimentCALC = array(
array(
'$a = ceil(pow(1.5,$n)*68);',
'$b = ceil(pow(1.5,$n)*17);',
'$c = 0;',
'$sec = (ceil(1.02*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.5,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.6,$n)*53);',
'$b = ceil(pow(1.6,$n)*27);',
'$c = 0;',
'$sec = (ceil(1.2*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.55,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.5,$n)*242);',
'$b = ceil(pow(1.5,$n)*72);',
'$c = 0;',
'$sec = (ceil(1.5*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.624,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.5,$n)*92);',
'$b = ceil(pow(1.5,$n)*37);',
'$c = 0;',
'$sec = (ceil(1.36*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.597,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
),
array(
'$a = ceil(pow(1.73,$n)*800);',
'$b = ceil(pow(1.73,$n)*420);',
'$c = ceil(pow(1.68,$n)*285);',
'$sec = (ceil(1.8*(1/(1+$nanite))*(3/(1+$queryPlanete["centre_info"]))*pow(1.7,$n))*(1/(1+$queryPlanete["ingenieur"]*0.005)))*60;'
),
array(
'$a = ceil(pow(2,$queryPlanete["radar"])*750);',
'$b = ceil(pow(2,$queryPlanete["radar"])*500);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["radar"])*720)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["labo"])*200);',
'$b = ceil(pow(2,$queryPlanete["labo"])*150);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["labo"])*720)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["chantier_terrestre"])*520);',
'$b = ceil(pow(2,$queryPlanete["chantier_terrestre"])*380);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["chantier_terrestre"])*420)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["chantier_spatial"])*600);',
'$b = ceil(pow(2,$queryPlanete["chantier_spatial"])*450);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["chantier_spatial"])*600)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["caserne"])*200);',
'$b = ceil(pow(2,$queryPlanete["caserne"])*100);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["caserne"])*300)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
),
array(
'$a = ceil(pow(2,$queryPlanete["silo"])*400);',
'$b = ceil(pow(2,$queryPlanete["silo"])*260);',
'$c = 0;',
'$sec = ceil((pow(2,$queryPlanete["silo"])*1200)/(pow(1.23,$queryPlanete["centre_info"])+0.0025*$queryPlanete["ingenieur"]));'
),
array(
'$a = ceil(pow(1.7,$queryPlanete["centre_info"])*600);',
'$b = ceil(pow(1.7,$queryPlanete["centre_info"])*420);',
'$c = ceil(pow(1.7,$queryPlanete["centre_info"])*100);',
'$sec = ceil((pow(1.9,$queryPlanete["centre_info"])*800)/((0.0025*$queryPlanete["ingenieur"])+1));'
)
);
$batimentTECH = array(
0,
0,
0,
0,
array(
array($technolo[4], 'energie_t', 5),
array($batiment[3], 'centrale_s', 12)
),
array(
array($technolo[1], 'detection', 1)
),
0,
0,
array(
array($batiment[7], 'chantier_terrestre', 2)
),
0,
0,
array(
array($technolo[0], 'informatique', 2)
)
);
$technoloVAR = array('informatique','detection','armement','blindage','energie_t','reacteur','reacteur_f','reacteur_ff','medecine','tactique','spartan');
$technoloCALC = array(
array(
'$a = 0;',
'$b = ceil(pow(2,$n)*500);',
'$c = ceil(pow(2,$n)*150);',
'$sec = ceil((420*2*($queryUser["informatique"]+1))/pow(1.25,($queryPlanete["labo"]-1)));'
),
array(
'$a=ceil(pow(2,$n)*500);',
'$b=ceil(pow(2,$n)*750);',
'$c=ceil(pow(2,$n)*100);',
'$sec = ceil((600*2*($queryUser["detection"]+1))/pow(1.25,($queryPlanete["labo"]-2)));'
),
array(
'$a=ceil(pow(2,$n)*2500);',
'$b=ceil(pow(2,$n)*500);',
'$c = 0;',
'$sec = ceil((1500*2*($queryUser["armement"]+1))/pow(1.25,($queryPlanete["labo"]-5)));'
),
array(
'$a=ceil(pow(2,$n)*4000);',
'$b=ceil(pow(2,$n)*1500);',
'$c = 0;',
'$sec = ceil((1710*2*($queryUser["blindage"]+1))/pow(1.25,($queryPlanete["labo"]-4)));'
),
array(
'$a=ceil(pow(2,$n)*2000);',
'$b=ceil(pow(2,$n)*1500);',
'$c=ceil(pow(2,$n)*300);',
'$sec = ceil((900*2*($queryUser["energie_t"]+1))/pow(1.25,($queryPlanete["labo"]-2)));'
),
array(
'$a=ceil(pow(2,$n)*1400);',
'$b=ceil(pow(2,$n)*400);',
'$c = 0;',
'$sec = ceil((510*2*($queryUser["reacteur"]+1))/pow(1.25,($queryPlanete["labo"]-2)));'
),
array(
'$a=ceil(pow(2,$n)*3000);',
'$b=ceil(pow(2,$n)*2100);',
'$c=ceil(pow(2,$n)*750);',
'$sec = ceil((1650*2*($queryUser["reacteur_f"]+1))/pow(1.25,($queryPlanete["labo"]-4)));'
),
array(
'$a=ceil(pow(2,$n)*5000);',
'$b=ceil(pow(2,$n)*4000);',
'$c=ceil(pow(2,$n)*1500);',
'$sec = ceil((2400*2*($queryUser["reacteur_ff"]+1))/pow(1.25,($queryPlanete["labo"]-6)));'
),
array(
'$a=ceil(pow(2,$n)*800);',
'$b=ceil(pow(2,$n)*1000);',
'$c = 0;',
'$sec = ceil((360*2*($queryUser["medecine"]+1))/pow(1.25,($queryPlanete["labo"]-1)));'
),
array(
'$a=ceil(pow(2,$n)*2600);',
'$b=ceil(pow(2,$n)*2600);',
'$c = 0;',
'$sec = ceil((4410*2*($queryUser["tactique"]+1))/pow(1.25,($queryPlanete["labo"]-3)));'
),
array(
'$a=ceil(pow(3,$n)*5200);',
'$b=ceil(pow(3,$n)*4250);',
'$c=ceil(pow(3,$n)*850);',
'$sec = ceil((5000*2*($queryUser["spartan"]+1))/pow(1.25,($queryPlanete["labo"]-8)));'
)
);
$technoloTECH = array(
array(
array($batiment[6], 'labo', 1)
),
array(
array($batiment[6],'labo', 2),
array($technolo[0], 'informatique', 2)
),
array(
array($batiment[6], 'labo', 5)
),
array(
array($batiment[6], 'labo', 4)
),
array(
array($batiment[6], 'labo', 2)
),
array(
array($batiment[6], 'labo', 2)
),
array(
array($batiment[6], 'labo', 4),
array($technolo[4], 'energie_t', 2),
array($technolo[5], 'reacteur', 4)
),
array(
array($batiment[6], 'labo', 6),
array($technolo[4], 'energie_t', 5),
array($technolo[6], 'reacteur_f', 4)
),
array(
array($batiment[6], 'labo', 1)
),
array(
array($batiment[6], 'labo', 3)
),
array(
array($batiment[6], 'labo', 8),
array($technolo[8], 'medecine', 5),
array($technolo[0], 'informatique', 8)
)
);
$nomterrnVAR = array('vais_0','vais_1','vais_2','vais_3','vcl_1','vcl_2','vcl_3','vcl_4','def_1','def_2','def_3','def_4','def_5');
$nomterrnCALC = array(
array(
500,
300,
0,
'$sec = ceil(720/pow(1.25,($queryPlanete["chantier_terrestre"]-1)));'
),
array(
680,
420,
0,
'$sec = ceil(2040/pow(1.25,($queryPlanete["chantier_terrestre"]-3)));'
),
array(
1000,
600,
0,
'$sec = ceil(7200/pow(1.25,($queryPlanete["chantier_terrestre"]-4)));'
),
array(
1400,
950,
0,
'$sec = ceil(3960/pow(1.25,($queryPlanete["chantier_terrestre"]-6)));'
),
array(
400,
240,
0,
'$sec = ceil(600/pow(1.25,($queryPlanete["chantier_terrestre"]-1)));'
),
array(
480,
260,
0,
'$sec = ceil(1080/pow(1.25,($queryPlanete["chantier_terrestre"]-2)));'
),
array(
600,
420,
0,
'$sec = ceil(2160/pow(1.25,($queryPlanete["chantier_terrestre"]-3)));'
),
array(
1000,
500,
0,
'$sec = ceil(4680/pow(1.25,($queryPlanete["chantier_terrestre"]-5)));'
),
array(
430,
230,
0,
'$sec = ceil(1080/pow(1.25,($queryPlanete["chantier_terrestre"]-1)));'
),
array(
1250,
650,
80,
'$sec = ceil(2040/pow(1.25,($queryPlanete["chantier_terrestre"]-3)));'
),
array(
2500,
1750,
100,
'$sec = ceil(7200/pow(1.25,($queryPlanete["chantier_terrestre"]-4)));'
),
array(
6000,
3750,
120,
'$sec = ceil(3960/pow(1.25,($queryPlanete["chantier_terrestre"]-7)));'
),
array(
15000,
9500,
1500,
'$sec = ceil(3960/pow(1.25,($queryPlanete["chantier_terrestre"]-9)));'
)
);
$nomterrnTECH = array(
array(
array($batiment[7], 'chantier_terrestre', 1)
),
array(
array($batiment[7], 'chantier_terrestre', 3),
array($technolo[2], 'armement', 1)
),
array(
array($batiment[7], 'chantier_terrestre', 4),
array($technolo[5], 'reacteur', 1)
),
array(
array($batiment[7], 'chantier_terrestre', 6),
array($technolo[5], 'reacteur', 3)
),
array(
array($batiment[7], 'chantier_terrestre', 1)
),
array(
array($batiment[7], 'chantier_terrestre', 2)
),
array(
array($batiment[7], 'chantier_terrestre', 3),
array($technolo[2], 'armement', 1)
),
array(
array($batiment[7], 'chantier_terrestre', 5),
array($technolo[2], 'armement', 2),
array($technolo[3], 'blindage', 2)
),
array(
array($batiment[7], 'chantier_terrestre', 1)
),
array(
array($batiment[7], 'chantier_terrestre', 3),
array($technolo[4], 'energie_t', 2)
),
array(
array($batiment[7], 'chantier_terrestre', 4),
array($technolo[2], 'armement', 1)
),
array(
array($batiment[7], 'chantier_terrestre', 4),
array($technolo[2], 'armement', 3),
array($technolo[4], 'energie_t', 3)
),
array(
array($batiment[7], 'chantier_terrestre', 8),
array($technolo[2], 'armement', 5),
array($technolo[0], 'informatique', 3)
)
);
$nomvaisnVAR = array('vaisseau_1','vaisseau_2','vaisseau_3','vaisseau_4','vaisseau_5','vaisseau_6','vaisseau_7','vaisseau_8','vaisseau_9','vaisseau_10','vaisseau_11','vaisseau_12');
$nomvaisnCALC = array(
array(
1000,
800,
0,
'$sec = ceil(1080/pow(1.25,($queryPlanete["chantier_spatial"]-1)));'
),
array(
4000,
3000,
0,
'$sec = ceil(6300/pow(1.25,($queryPlanete["chantier_spatial"]-5)));'
),
array(
9000,
9000,
1000,
'$sec = ceil(8280/pow(1.25,($queryPlanete["chantier_spatial"]-5)));'
),
array(
1000,
1200,
100,
'$sec = ceil(1440/pow(1.25,($queryPlanete["chantier_spatial"]-3)));'
),
array(
15000,
9000,
1000,
'$sec = ceil(7380/pow(1.25,($queryPlanete["chantier_spatial"]-5)));'
),
array(
1800,
1000,
0,
'$sec = ceil(1200/pow(1.25,($queryPlanete["chantier_spatial"]-1)));'
),
array(
2550,
1350,
65,
'$sec = ceil(4680/pow(1.25,($queryPlanete["chantier_spatial"]-3)));'
),
array(
12950,
6900,
100,
'$sec = ceil(16800/pow(1.25,($queryPlanete["chantier_spatial"]-6)));'
),
array(
26000,
16400,
1600,
'$sec = ceil(18060/pow(1.25,($queryPlanete["chantier_spatial"]-6)));'
),
array(
60000,
40000,
3000,
'$sec = ceil(32400/pow(1.25,($queryPlanete["chantier_spatial"]-8)));'
),
array(
500000,
400000,
250000,
'$sec = ceil(117000/pow(1.25,($queryPlanete["chantier_spatial"]-12)));'
),
array(
500000,
400000,
250000,
'$sec = ceil(117000/pow(1.25,($queryPlanete["chantier_spatial"]-12)));'
)
);
$nomvaisnTECH = array(
array(
array($batiment[8], 'chantier_spatial', 1),
array($technolo[5], 'reacteur', 4)
),
array(
array($batiment[8], 'chantier_spatial', 5),
array($technolo[6], 'reacteur_f', 2)
),
array(
array($batiment[8], 'chantier_spatial', 5),
array($technolo[7], 'reacteur_ff', 1)
),
array(
array($batiment[8], 'chantier_spatial', 3),
array($technolo[5], 'reacteur', 5),
array($technolo[1], 'detection', 2)
),
array(
array($batiment[8], 'chantier_spatial', 5),
array($technolo[6], 'reacteur_f', 5),
array($technolo[3], 'blindage', 2)
),
array(
array($batiment[8], 'chantier_spatial', 1),
array($technolo[5], 'reacteur', 4)
),
array(
array($batiment[8], 'chantier_spatial', 3),
array($technolo[6], 'reacteur_f', 3),
array($technolo[2], 'armement', 1)
),
array(
array($batiment[8], 'chantier_spatial', 6),
array($technolo[7], 'reacteur_ff', 2),
array($technolo[2], 'armement', 3),
array($technolo[3], 'blindage', 4)
),
array(
array($batiment[8], 'chantier_spatial', 6),
array($technolo[7], 'reacteur_ff', 3),
array($technolo[2], 'armement', 4),
array($technolo[3], 'blindage', 4)
),
array(
array($batiment[8], 'chantier_spatial', 8),
array($technolo[7], 'reacteur_ff', 5),
array($technolo[2], 'armement', 6),
array($technolo[3], 'blindage', 6)
),
array(
array($batiment[8], 'chantier_spatial', 12),
array($technolo[7], 'reacteur_ff', 10),
array($technolo[2], 'armement', 12),
array($technolo[3], 'blindage', 12)
),
array(
array($batiment[8], 'chantier_spatial', 12),
array($technolo[7], 'reacteur_ff', 10),
array($technolo[2], 'armement', 12),
array($technolo[3], 'blindage', 12)
)
);
?>