merchantAvail(); $maxcarry = (int)$market->maxcarry; $totalMerchants = (int)$market->merchant; // --- POST sanitizat --- $r = []; for ($i = 1; $i <= 4; $i++) { $r[$i] = isset($_POST['r'.$i])? max(0, (int)$_POST['r'.$i]) : 0; } $allres = array_sum($r); $x = isset($_POST['x'])? trim($_POST['x']) : ''; $y = isset($_POST['y'])? trim($_POST['y']) : ''; $dname = isset($_POST['dname'])? trim($_POST['dname']) : ''; $send3 = isset($_POST['send3'])? (int)$_POST['send3'] : 1; $ft = $_POST['ft']?? ''; // --- target --- $getwref = 0; $checkexist = false; $target = null; if ($x!== '' && $y!== '' && is_numeric($x) && is_numeric($y)) { $getwref = (int)$database->getVilWref((int)$x, (int)$y); $checkexist = $database->checkVilExist($getwref); } elseif ($dname!== '') { $getwref = (int)$database->getVillageByName($dname); $checkexist = $database->checkVilExist($getwref); } if ($checkexist) { $villageOwner = (int)$database->getVillageField($getwref, 'owner'); $userAccess = (int)$database->getUserField($villageOwner, 'access', 0); $userVacation = (int)$database->getUserField($villageOwner, 'vac_mode', 0); $userID = (int)$database->getUserField($villageOwner, 'id', 0); $target = [ 'wref' => $getwref, 'name' => $database->getVillageField($getwref, 'name'), 'owner' => $villageOwner, 'coor' => $database->getCoor($getwref), ]; $target['time'] = $generator->procDistanceTime($target['coor'], $village->coor, $session->tribe, 0); } $maxTotalCarry = $maxcarry * $merchantAvail; $canRepeat = ($send3 === 1) || ($send3 >= 2 && $send3 <= 3 && $session->goldclub); $validTarget = $checkexist && $getwref!== $village->wid; $validAccess = $checkexist && ($userAccess == 2 || $userAccess == MULTIHUNTER || (defined('ADMIN_ALLOW_INCOMING_RAIDS') && ADMIN_ALLOW_INCOMING_RAIDS && $userAccess == ADMIN)); // Available resources, using the same getters as the actual send (Market::sendResource), // so a request that passes this check also passes the execution step. The client-side // "(maxcarry)" shortcut can fill the inputs above the warehouse stock; without this the // confirm step only checked the merchant capacity and the send then failed silently. $avail = [ 1 => (int)$database->getWoodAvailable($village->wid), 2 => (int)$database->getClayAvailable($village->wid), 3 => (int)$database->getIronAvailable($village->wid), 4 => (int)$database->getCropAvailable($village->wid), ]; $hasResources = ($r[1] <= $avail[1] && $r[2] <= $avail[2] && $r[3] <= $avail[3] && $r[4] <= $avail[4]); $showConfirm = ($ft === 'check' && $canRepeat && $validTarget && $allres > 0 && $allres <= $maxTotalCarry && $hasResources && $validAccess && $userVacation == 0); // coordonate prefill din GET $coor = ['x' => '', 'y' => '']; if (isset($_GET['z'])) { $coor = $database->getCoor((int)$_GET['z']); } ?>

resarray['f'.$id];?>

LUMBER,2=>CLAY,3=>IRON,4=>CROP]; ?>
<?php echo $resNames[$i];?> /
: (|)
: getUserField($target['owner'], 'username', 0));?>
: getTimeFormat($target['time']);?>
:

/>

LUMBER,2=>CLAY,3=>IRON,4=>CROP]; ?>
<?php echo $resNames[$i];?> : ()
/
:
X: Y:
goldclub == 1):?>

/>

returnErrors() > 0) { $error = ''.$form->getError("error").''; } elseif (!$checkexist) { $error = ''.NO_COORDINATES_SELECTED.''; } elseif ($getwref == $village->wid) { $error = ''.CANNOT_SEND_RESOURCES.''; } elseif (!$canRepeat) { $error = ''.INVALID_MERCHANTS_REPETITION.''; } elseif (!$validAccess) { $error = ''.BANNED_CANNOT_SEND_RESOURCES.'.'; } elseif ($allres == 0) { $error = ''.RESOURCES_NO_SELECTED.'.'; } elseif ($userVacation == 1) { $error = 'Player is on vacation mode. You cannot send resources to him.'; } elseif ($x === '' && $y === '' && $dname === '') { $error = ''.ENTER_COORDINATES.'.'; } elseif ($allres > $maxTotalCarry) { $error = ''.TOO_FEW_MERCHANTS.'.'; } elseif (!$hasResources) { $error = ''.NOT_ENOUGH_RESOURCES.''; } echo $error; } ?>

recieving) > 0) { echo "

".MERCHANT_COMING.":

"; foreach ($market->recieving as $recieve) { $villageowner = (int)$database->getVillageField($recieve['from'], "owner"); echo ''; echo ''; echo ''; echo '
'.htmlspecialchars($database->getUserField($villageowner,"username",0)).''.TRANSPORT_FROM.' '.htmlspecialchars($database->getVillageField($recieve['from'],"name")).'
'.ARRIVAL_IN.''; echo '
'.$generator->getTimeFormat($recieve['endtime']-time()).' h
'; $datetime = $generator->procMtime($recieve['endtime']); echo '
'.($datetime[0]!= "today"? ON." ".$datetime[0]." " : "").AT." ".$datetime[1].'
'; echo '
'.RESOURCES.''; echo ''.LUMBER.''.$recieve['wood'].' | '; echo ''.CLAY.''.$recieve['clay'].' | '; echo ''.IRON.''.$recieve['iron'].' | '; echo ''.CROP.''.$recieve['crop']; echo '
'; } } // --- comercianți trimiși --- if (count($market->sending) > 0) { echo "

".OWN_MERCHANTS_ONWAY.":

"; foreach ($market->sending as $send) { $villageowner = (int)$database->getVillageField($send['to'],"owner"); echo ''; echo ''; echo ''; echo '
'.htmlspecialchars($database->getUserField($villageowner,"username",0)).''.TRANSPORT_TO.' '.htmlspecialchars($database->getVillageField($send['to'],"name")).'
'.ARRIVAL_IN.''; echo '
'.$generator->getTimeFormat($send['endtime']-time()).' h
'; $datetime = $generator->procMtime($send['endtime']); echo '
'.($datetime[0]!= "today"? ON." ".$datetime[0]." " : "").AT." ".$datetime[1].'
'; echo '
'.RESOURCES.''; echo ''.LUMBER.''.$send['wood'].' | '; echo ''.CLAY.''.$send['clay'].' | '; echo ''.IRON.''.$send['iron'].' | '; echo ''.CROP.''.$send['crop']; echo '
'; } } // --- comercianți care se întorc --- if (count($market->return) > 0) { echo "

".MERCHANTS_RETURNING.":

"; foreach ($market->return as $return) { $villageowner = (int)$database->getVillageField($return['from'],"owner"); echo ''; echo ''; echo ''; echo '
'.htmlspecialchars($database->getUserField($villageowner,"username",0)).''.RETURNFROM.' '.htmlspecialchars($database->getVillageField($return['from'],"name")).'
'.ARRIVAL_IN.''; echo '
'.$generator->getTimeFormat($return['endtime']-time()).' h
'; $datetime = $generator->procMtime($return['endtime']); echo '
'.($datetime[0]!= "today"? ON." ".$datetime[0]." " : "").AT." ".$datetime[1].'
'; echo '
'; } } include("upgrade.tpl"); ?>