mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-08-09 21:01:00 +00:00
b2dec1d942
Fix some sql inject & Add Credits
156 lines
6.5 KiB
Smarty
156 lines
6.5 KiB
Smarty
<?php
|
|
|
|
#################################################################################
|
|
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
|
|
## --------------------------------------------------------------------------- ##
|
|
## Filename : units_common.tpl ##
|
|
## Type : Rally Point Troop Selection Form (all tribes) ##
|
|
## --------------------------------------------------------------------------- ##
|
|
## Developed by : Shadow ##
|
|
## --------------------------------------------------------------------------- ##
|
|
## Contact : cata7007@gmail.com ##
|
|
## Project : TravianZ ##
|
|
## URLs: : https://travianz.org ##
|
|
## GitHub : https://github.com/Shadowss/TravianZ ##
|
|
## --------------------------------------------------------------------------- ##
|
|
## License : TravianZ Project ##
|
|
## Copyright : TravianZ (c) 2010-2026. All rights reserved. ##
|
|
## --------------------------------------------------------------------------- ##
|
|
#################################################################################
|
|
|
|
/**
|
|
* Formularul de trimitere a trupelor, comun tuturor triburilor.
|
|
*
|
|
* Inainte exista cate un fisier units_1..units_9, identice in afara numerelor
|
|
* de unitati - aproape 950 de linii duplicate. Orice reparatie trebuia facuta
|
|
* de noua ori, iar in practica se uita cate una.
|
|
*
|
|
* Unitatile unui trib sunt un bloc de zece, consecutiv:
|
|
* tribul 1 -> u1..u10, tribul 2 -> u11..u20, tribul 9 -> u81..u90
|
|
* deci primul indice e (trib - 1) * 10 + 1.
|
|
*
|
|
* Fisierele units_N.tpl au ramas, ca sa nu se schimbe modul de includere din
|
|
* a2b.php, dar acum doar apeleaza acest sablon.
|
|
*/
|
|
|
|
$a2bTribe = isset($session->tribe) ? (int) $session->tribe : 1;
|
|
|
|
if ($a2bTribe < 1 || $a2bTribe > 9) {
|
|
$a2bTribe = 1;
|
|
}
|
|
|
|
$a2bFirstUnit = ($a2bTribe - 1) * 10 + 1;
|
|
|
|
// Natarii nu au erou, deci nu li se arata casuta lui.
|
|
$a2bShowHero = ($a2bTribe !== 5) && !empty($village->unitarray['hero']);
|
|
|
|
/**
|
|
* Deseneaza o casuta de unitate.
|
|
*
|
|
* @param int $slot pozitia in formular (1..10) - devine numele campului tN
|
|
* @param int $unitId identificatorul real al unitatii (u1..u90)
|
|
* @param string $class clasele celulei din tabel
|
|
*/
|
|
if (!function_exists('a2b_unit_cell')) {
|
|
function a2b_unit_cell($slot, $unitId, $class)
|
|
{
|
|
global $village;
|
|
|
|
$have = isset($village->unitarray['u' . $unitId])
|
|
? (int) $village->unitarray['u' . $unitId] : 0;
|
|
$label = defined('U' . $unitId) ? constant('U' . $unitId) : ('u' . $unitId);
|
|
$field = 't' . (int) $slot;
|
|
|
|
echo '<td class="' . htmlspecialchars($class, ENT_QUOTES, 'UTF-8') . '">';
|
|
echo '<img class="unit u' . (int) $unitId . '" src="img/x.gif"'
|
|
. ' title="' . htmlspecialchars($label, ENT_QUOTES, 'UTF-8') . '"'
|
|
. ' alt="' . htmlspecialchars($label, ENT_QUOTES, 'UTF-8') . '"'
|
|
. ' onclick="document.snd.' . $field . '.value=\'\'; return false;">';
|
|
echo ' <input class="text" name="' . $field . '" value="" maxlength="6" type="text"'
|
|
. ($have <= 0 ? ' disabled="disabled"' : '') . '>';
|
|
|
|
if ($have > 0) {
|
|
echo ' <a href="#" onclick="document.snd.' . $field . '.value=' . $have
|
|
. '; return false;">(' . $have . ')</a>';
|
|
} else {
|
|
echo ' <span class="none">(0)</span>';
|
|
}
|
|
|
|
echo '</td>';
|
|
}
|
|
}
|
|
?>
|
|
<h1><?php echo SEND_TROOPS; ?></h1>
|
|
|
|
<form method="POST" name="snd" action="a2b.php">
|
|
<input name="b" value="1" type="hidden">
|
|
|
|
<table id="troops" cellpadding="1" cellspacing="1">
|
|
<tbody>
|
|
<tr>
|
|
<?php
|
|
// primul rand: unitatile 1-5 ale tribului
|
|
for ($i = 0; $i < 5; $i++) {
|
|
a2b_unit_cell(
|
|
$i + 1,
|
|
$a2bFirstUnit + $i,
|
|
'line-first ' . ($i === 0 ? 'column-first large' : 'large')
|
|
);
|
|
}
|
|
?>
|
|
<td class="line-first column-last"></td>
|
|
</tr>
|
|
<tr>
|
|
<?php
|
|
// al doilea rand: unitatile 6-10
|
|
for ($i = 5; $i < 10; $i++) {
|
|
a2b_unit_cell(
|
|
$i + 1,
|
|
$a2bFirstUnit + $i,
|
|
$i === 5 ? 'column-first large' : 'large'
|
|
);
|
|
}
|
|
?>
|
|
<td class="column-last"></td>
|
|
</tr>
|
|
<tr>
|
|
<?php
|
|
/**
|
|
* Casuta eroului.
|
|
*
|
|
* BUG REPARAT: varianta veche deschidea celula in HTML si o
|
|
* inchidea in interiorul unui echo, dar mai lasa un </td> si
|
|
* dupa blocul PHP. Cand eroul era in sat se generau DOUA
|
|
* inchideri, iar tabelul iesea stricat. Acum celula se inchide
|
|
* o singura data, pe ambele ramuri.
|
|
*/
|
|
if ($a2bShowHero) {
|
|
$heroCount = (int) $village->unitarray['hero'];
|
|
$heroLabel = defined('TZ_HERO') ? TZ_HERO : 'Hero';
|
|
?>
|
|
<td class="line-last column-first regular">
|
|
<img class="unit uhero" src="img/x.gif"
|
|
title="<?php echo htmlspecialchars($heroLabel, ENT_QUOTES, 'UTF-8'); ?>"
|
|
alt="<?php echo htmlspecialchars($heroLabel, ENT_QUOTES, 'UTF-8'); ?>">
|
|
<input class="text" name="t11" value="" maxlength="6" type="text">
|
|
<a href="#" onclick="document.snd.t11.value=<?php echo $heroCount; ?>; return false;">(<?php echo $heroCount; ?>)</a>
|
|
</td>
|
|
<?php } else { ?>
|
|
<td class="line-last column-first regular"></td>
|
|
<?php } ?>
|
|
<td class="line-last regular"></td>
|
|
<td class="line-last column-last"></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<?php
|
|
/**
|
|
* ATENTIE: formularul ramane DESCHIS aici, intentionat.
|
|
*
|
|
* a2b.php include imediat dupa acest sablon si search.tpl, care adauga
|
|
* campurile de destinatie si butonul OK, apoi inchide </form>. Daca inchidem
|
|
* formularul aici, butonul ramane in afara lui si trimiterea trupelor nu mai
|
|
* face nimic - fara niciun mesaj de eroare.
|
|
*/
|
|
?>
|