Ir para conteúdo
  • Cadastre-se

Suporte [Suporte MyAAC] Problemas com: Server Save Themebox, Login Normal, Revovery Account System, Boosted Creature e Boosted Boss.


Posts Recomendados

 

Estou usando um modelo de MyAAC em meu projeto, que por acaso, pesquisando sobre minhas dúvidas, descobri que é o mesmo deste post:

Não sei dizer se é a mesma versão, mas tem praticamente tudo que o meu site MyAAC possui.

 


Problema 1:
Estou com o problema na themebox de Server Save:

Para ele funcionar, configurei server time no config.php principal do site para 00:00:00, e tive que adicionar a data manualmente do próximo SS, para que o relógio conte as horas corretamente.
Gostaria de saber se há alguma forma de modificar o script dessa themebox para que atualize a próxima data automaticamente.

Segue abaixo o script da themebox, arquivo serversave.php

Caso não possa fazer o download do arquivo, aqui vai o script: A edição da data é feita na linha 55, onde começa assim: var countDownDate = new Date("Jun 07, 2023

 

<style>
    .serversave{
        width: 180px;
        height: 135px;
    }
    .serversave_header{
        height: 45px;
        width: 180px;
        background-image: url('templates/tibiacom/images/themeboxes/box_top.png');
        font-family: Verdana;
        font-weight: bold;
        color: #d5c3af;
        line-height: 65px;
    }
    .serversave_bottom{
        height: 30px;
        width: 180px;
        margin-top: -20px;
        background-image: url('templates/tibiacom/images/themeboxes/box_bottom.png');
    }
    .serversave_content{
        padding: 0px 10px;
        width: 160px;
        height: 70px;
        background-image: url('templates/tibiacom/images/themeboxes/box_bg.png');
        text-align: center;
        display: grid;
        justify-content: center;
        align-items: center;
    }
    .serversave_text{
        font-family: Verdana;
        color: #d5c3af;
        font-size: 12px !important;
    }
    .serversave_countdown{
        font-family: Verdana;
        font-size: 22px !important;
        font-weight: bold;
        color: #d5c3af;
        border: 1px solid #d5c3af;
        border-radius: 3px;
        padding: 5px 0px;
    }
</style>
<?php
global $config;
$server_save = $config['server_save'];
$explodeServerSave = explode(':', $server_save);
$hours_ServerSave = $explodeServerSave[0];
$minutes_ServerSave = $explodeServerSave[1];
$seconds_ServerSave = $explodeServerSave[2];
?>
<script>
	var countDownDate = new Date("Jun 07, 2023 <?php echo $hours_ServerSave ?>:<?php echo $minutes_ServerSave ?>:<?php echo $seconds_ServerSave ?>").getTime();
	var x = setInterval(function() {
		var now = new Date().getTime();
		var distance = countDownDate - now;
		var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
		var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
		var seconds = Math.floor((distance % (1000 * 60)) / 1000);

        document.getElementById("timerServerSave").innerHTML = "" + hours + ":" + minutes + ":" + seconds + "";

		if (distance < 0) {
			clearInterval(x);
			document.getElementById("timerServerSave").innerHTML = "Server save now!";
		}
	}, 1000);
</script>
<div class="serversave">
    <div class="serversave_header">Server Save</div>
    <div class="serversave_content">
        <div class="serversave_text">
            <small>Countdown to server save</small>
        </div>
        <div class="serversave_countdown" id="timerServerSave"></div>
    </div>
    <div class="serversave_bottom"></div>
</div>

 

 

 

 

 

 

 

Problema 2:

Encontrei o erro abaixo ao testar, recuperação de conta através do "account lost", onde primeiramente pede o nome de um personagem da conta, e clico na opção: Send me new password and my account name to account e-mail adress.
Após esse passo, coloco o email da conta em questão, e ao clicar em Submit, me deparo com este erro:

 

1.png.e6756c5413306514603a420a1c921a0a.png

 

Segue o arquivo: lostaccount.php

Ou o código do arquivo: 

 

<?php
/**
 * Lost account
 *
 * @package   MyAAC
 * @author    Gesior <[email protected]>
 * @author    Slawkens <[email protected]>
 * @copyright 2019 MyAAC
 * @link      https://my-aac.org
 */
defined('MYAAC') or die('Direct access not allowed!');
$title = 'Lost Account Interface';

if(!$config['mail_enabled'])
{
	echo '<b>Account maker is not configured to send e-mails, you can\'t use Lost Account Interface. Contact with admin to get help.</b>';
	return;
}

$config_salt_enabled = $db->hasColumn('accounts', 'salt');
$action_type = isset($_REQUEST['action_type']) ? $_REQUEST['action_type'] : '';
if($action == '')
{
	$twig->display('account.lost.form.html.twig');
}
else if($action == 'step1' && $action_type == '') {
	$twig->display('account.lost.noaction.html.twig');
}
elseif($action == 'step1' && $action_type == 'email')
{
	$nick = stripslashes($_REQUEST['nick']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();

		if($account->isLoaded())
		{
			if($account->getCustomField('email_next') < time())
				echo 'Please enter e-mail to account with this character.<BR>
				<form action="?subtopic=lostaccount&action=sendcode" method=post>
				<input type=hidden name="character">
				<table cellspacing=1 cellpadding=4 border=0 width=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Please enter e-mail to account</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				Character: <INPUT TYPE=text NAME="nick" VALUE="'.$nick.'" SIZE="40" readonly="readonly"><BR>
				E-mail to account:<INPUT TYPE=text NAME="email" VALUE="" SIZE="40"><BR>
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
			else
			{
				$insec = $account->getCustomField('email_next') - time();
				$minutesleft = floor($insec / 60);
				$secondsleft = $insec - ($minutesleft * 60);
				$timeleft = $minutesleft.' minutes '.$secondsleft.' seconds';
				echo 'Account of selected character (<b>'.$nick.'</b>) received e-mail in last '.ceil($config['email_lai_sec_interval'] / 60).' minutes. You must wait '.$timeleft.' before you can use Lost Account Interface again.';
			}
		}
		else
			echo 'Player or account of player <b>' . $nick . '</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'sendcode')
{
	$email = $_REQUEST['email'];
	$nick = stripslashes($_REQUEST['nick']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();

		if($account->isLoaded())
		{
			if($account->getCustomField('email_next') < time())
			{
				if($account->getEMail() == $email)
				{
					$newcode = generateRandomString(30, true, false, true);
					$mailBody = '
					You asked to reset your ' . $config['lua']['serverName'] . ' password.<br/>
					<p>Account name: '.$account->getName().'</p>
					<br />
					To do so, please click this link:
					<p><a href="' . BASE_URL . '?subtopic=lostaccount&action=checkcode&code='.$newcode.'&character='.urlencode($nick).'">'.BASE_URL.'/?subtopic=lostaccount&action=checkcode&code='.$newcode.'&character='.urlencode($nick).'</a></p>
					<p>or open page: <i>' . BASE_URL . '?subtopic=lostaccount&action=checkcode</i> and in field "code" write <b>'.$newcode.'</b></p>
					<br/>
						<p>If you did not request a password change, you may ignore this message and your password will remain unchanged.';

					$account_mail = $account->getCustomField('email');
					if(_mail($account_mail, $config['lua']['serverName'].' - Recover your account', $mailBody))
					{
						$account->setCustomField('email_code', $newcode);
						$account->setCustomField('email_next', (time() + $config['email_lai_sec_interval']));
						echo '<br />Details about steps required to recover your account has been sent to <b>' . $account_mail . '</b>. You should receive this email within 15 minutes. Please check your inbox/spam directory.';
					}
					else
					{
						$account->setCustomField('email_next', (time() + 60));
						echo '<br /><p class="error">An error occurred while sending email! Try again later or contact with admin. For Admin: More info can be found in system/logs/mailer-error.log</p>';
					}
				}
				else
					echo 'Invalid e-mail to account of character <b>'.$nick.'</b>. Try again.';
			}
			else
			{
				$insec = $account->getCustomField('email_next') - time();
				$minutesleft = floor($insec / 60);
				$secondsleft = $insec - ($minutesleft * 60);
				$timeleft = $minutesleft.' minutes '.$secondsleft.' seconds';
				echo 'Account of selected character (<b>'.$nick.'</b>) received e-mail in last '.ceil($config['email_lai_sec_interval'] / 60).' minutes. You must wait '.$timeleft.' before you can use Lost Account Interface again.';
			}
		}
		else
			echo 'Player or account of player <b>'.$nick.'</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount&action=step1&action_type=email&nick='.urlencode($nick).'" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'step1' && $action_type == 'reckey')
{
	$nick = stripslashes($_REQUEST['nick']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			$account_key = $account->getCustomField('key');
			if(!empty($account_key))
			{
						echo 'If you enter right recovery key you will see form to set new e-mail and password to account. To this e-mail will be send your new password and account name.<BR>
						<FORM ACTION="?subtopic=lostaccount&action=step2" METHOD=post>
						<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
						<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Please enter your recovery key</B></TD></TR>
						<TR><TD BGCOLOR="'.$config['darkborder'].'">
						Character name:&nbsp;<INPUT TYPE=text NAME="nick" VALUE="'.$nick.'" SIZE="40" readonly="readonly"><BR />
						Recovery key:&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=text NAME="key" VALUE="" SIZE="40"><BR>
						</TD></TR>
						</TABLE>
						<BR>
						<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
						' . $twig->render('buttons.submit.html.twig') . '</div>
						</TD></TR></FORM></TABLE></TABLE>';
			}
			else
				echo 'Account of this character has no recovery key!';
		}
		else
			echo 'Player or account of player <b>'.$nick.'</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'step2')
{
	$rec_key = trim($_REQUEST['key']);
	$nick = stripslashes($_REQUEST['nick']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			$account_key = $account->getCustomField('key');
			if(!empty($account_key))
			{
				if($account_key == $rec_key)
				{
					echo '<script type="text/javascript">
					function validate_required(field,alerttxt)
					{
					with (field)
					{
					if (value==null||value==""||value==" ")
					  {alert(alerttxt);return false;}
					else {return true}
					}
					}
					function validate_email(field,alerttxt)
					{
					with (field)
					{
					apos=value.indexOf("@");
					dotpos=value.lastIndexOf(".");
					if (apos<1||dotpos-apos<2)
					  {alert(alerttxt);return false;}
					else {return true;}
					}
					}
					function validate_form(thisform)
					{
					with (thisform)
					{
					if (validate_required(email,"Please enter your e-mail!")==false)
					  {email.focus();return false;}
					if (validate_email(email,"Invalid e-mail format!")==false)
					  {email.focus();return false;}
					if (validate_required(passor,"Please enter password!")==false)
					  {passor.focus();return false;}
					if (validate_required(passor2,"Please repeat password!")==false)
					  {passor2.focus();return false;}
					if (passor2.value!=passor.value)
					  {alert(\'Repeated password is not equal to password!\');return false;}
					}
					}
					</script>';
					echo 'Set new password and e-mail to your account.<BR>
					<FORM ACTION="?subtopic=lostaccount&action=step3" onsubmit="return validate_form(this)" METHOD=post>
					<INPUT TYPE=hidden NAME="character" VALUE="">
					<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
					<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Please enter new password and e-mail</B></TD></TR>
					<TR><TD BGCOLOR="'.$config['darkborder'].'">
					Account of character:&nbsp;&nbsp;<INPUT TYPE=text NAME="nick" VALUE="'.$nick.'" SIZE="40" readonly="readonly"><BR />
					New password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT id="passor" TYPE=password NAME="passor" VALUE="" SIZE="40"><BR>
					Repeat new password:&nbsp;&nbsp;<INPUT id="passor2" TYPE=password NAME="passor" VALUE="" SIZE="40"><BR>
					New e-mail address:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT id="email" TYPE=text NAME="email" VALUE="" SIZE="40"><BR>
					<INPUT TYPE=hidden NAME="key" VALUE="'.$rec_key.'">
					</TD></TR>
					</TABLE>
					<BR>
					<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
					' . $twig->render('buttons.submit.html.twig') . '</div>
					</TD></TR></FORM></TABLE></TABLE>';
				}
				else
					echo 'Wrong recovery key!';
			}
			else
				echo 'Account of this character has no recovery key!';
		}
		else
			echo 'Player or account of player <b>'.$nick.'</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount&action=step1&action_type=reckey&nick='.urlencode($nick).'" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'step3')
{
	$rec_key = trim($_REQUEST['key']);
	$nick = stripslashes($_REQUEST['nick']);
	$new_pass = trim($_REQUEST['passor']);
	$new_email = trim($_REQUEST['email']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			$account_key = $account->getCustomField('key');
			if(!empty($account_key))
			{
				if($account_key == $rec_key)
				{
					if(Validator::password($new_pass))
					{
						if(Validator::email($new_email))
						{
							$account->setEMail($new_email);

							$tmp_new_pass = $new_pass;
							if($config_salt_enabled)
							{
								$salt = generateRandomString(10, false, true, true);
								$tmp_new_pass = $salt . $new_pass;
							}

							$account->setPassword(encrypt($tmp_new_pass));
							$account->save();

							if($config_salt_enabled)
								$account->setCustomField('salt', $salt);

							echo 'Your account name, new password and new e-mail.<BR>
							<FORM ACTION="?subtopic=accountmanagement" onsubmit="return validate_form(this)" METHOD=post>
							<INPUT TYPE=hidden NAME="character" VALUE="">
							<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
							<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Your account name, new password and new e-mail</B></TD></TR>
							<TR><TD BGCOLOR="'.$config['darkborder'].'">
							Account name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>'.$account->getName().'</b><BR>
							New password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>'.$new_pass.'</b><BR>
							New e-mail address:&nbsp;<b>'.$new_email.'</b><BR>';
							if($account->getCustomField('email_next') < time())
							{
								$mailBody = '
								<h3>Your account name and new password!</h3>
								<p>Changed password and e-mail to your account in Lost Account Interface on server <a href="'.BASE_URL.'"><b>'.$config['lua']['serverName'].'</b></a></p>
								<p>Account name: <b>'.$account->getName().'</b></p>
								<p>New password: <b>'.$new_pass.'</b></p>
								<p>E-mail: <b>'.$new_email.'</b> (this e-mail)</p>
								<br />
								<p><u>It\'s automatic e-mail from OTS Lost Account System. Do not reply!</u></p>';

								if(_mail($account->getCustomField('email'), $config['lua']['serverName']." - New password to your account", $mailBody))
								{
									echo '<br /><small>Sent e-mail with your account name and password to new e-mail. You should receive this e-mail in 15 minutes. You can login now with new password!</small>';
								}
								else
								{
									echo '<br /><p class="error">An error occurred while sending email! You will not receive e-mail with this informations. For Admin: More info can be found in system/logs/mailer-error.log</p>';
								}
							}
							else
							{
								echo '<br /><small>You will not receive e-mail with this informations.</small>';
							}
							echo '<INPUT TYPE=hidden NAME="account_login" VALUE="'.$account->getId().'">
							<INPUT TYPE=hidden NAME="password_login" VALUE="'.$new_pass.'">
							</TD></TR></TABLE><BR>
							<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
							<INPUT TYPE=image NAME="Login" ALT="Login" SRC="'.$template_path.'/images/global/buttons/sbutton_login.gif" BORDER=0 WIDTH=120 HEIGHT=18></div>
							</TD></TR></FORM></TABLE></TABLE>';
						}
						else
							echo Validator::getLastError();
					}
					else
						echo Validator::getLastError();
				}
				else
					echo 'Wrong recovery key!';
			}
			else
				echo 'Account of this character has no recovery key!';
		}
		else
			echo 'Player or account of player <b>'.$nick.'</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount&action=step1&action_type=reckey&nick='.urlencode($nick).'" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'checkcode')
{
	$code = trim($_REQUEST['code']);
	$character = stripslashes(trim($_REQUEST['character']));
	if(empty($code) || empty($character))
		echo 'Please enter code from e-mail and name of one character from account. Then press Submit.<BR>
				<FORM ACTION="?subtopic=lostaccount&action=checkcode" METHOD=post>
				<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Code & character name</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				Your code:&nbsp;<INPUT TYPE=text NAME="code" VALUE="" SIZE="40")><BR />
				Character:&nbsp;<INPUT TYPE=text NAME="character" VALUE="" SIZE="40")><BR />
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
	else
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($character);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			if($account->getCustomField('email_code') == $code)
			{
				echo '<script type="text/javascript">
				function validate_required(field,alerttxt)
				{
				with (field)
				{
				if (value==null||value==""||value==" ")
				  {alert(alerttxt);return false;}
				else {return true}
				}
				}

				function validate_form(thisform)
				{
				with (thisform)
				{
				if (validate_required(passor,"Please enter password!")==false)
				  {passor.focus();return false;}
				if (validate_required(passor2,"Please repeat password!")==false)
				  {passor2.focus();return false;}
				if (passor2.value!=passor.value)
				  {alert(\'Repeated password is not equal to password!\');return false;}
				}
				}
				</script>
				Please enter new password to your account and repeat to make sure you remember password.<BR>
				<FORM ACTION="?subtopic=lostaccount&action=setnewpassword" onsubmit="return validate_form(this)" METHOD=post>
				<INPUT TYPE=hidden NAME="character" VALUE="'.$character.'">
				<INPUT TYPE=hidden NAME="code" VALUE="'.$code.'">
				<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Code & account name</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				New password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=password ID="passor" NAME="passor" VALUE="" SIZE="40")><BR />
				Repeat new password:&nbsp;<INPUT TYPE=password ID="passor2" NAME="passor2" VALUE="" SIZE="40")><BR />
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
			}
			else
				$error= 'Wrong code to change password.';
		}
		else
			$error = 'Account of this character or this character doesn\'t exist.';
	}
	if(!empty($error))
				echo '<span style="color: red"><b>'.$error.'</b></span><br />Please enter code from e-mail and name of one character from account. Then press Submit.<BR>
				<FORM ACTION="?subtopic=lostaccount&action=checkcode" METHOD=post>
				<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Code & character name</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				Your code:&nbsp;<INPUT TYPE=text NAME="code" VALUE="" SIZE="40")><BR />
				Character:&nbsp;<INPUT TYPE=text NAME="character" VALUE="" SIZE="40")><BR />
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'setnewpassword')
{
	$newpassword = $_REQUEST['passor'];
	$code = $_REQUEST['code'];
	$character = stripslashes($_REQUEST['character']);
	echo '';
	if(empty($code) || empty($character) || empty($newpassword))
		echo '<span style="color: red"><b>Error. Try again.</b></span><br />Please enter code from e-mail and name of one character from account. Then press Submit.<BR>
				<BR><FORM ACTION="?subtopic=lostaccount&action=checkcode" METHOD=post>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<INPUT TYPE=image NAME="Back" ALT="Back" SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" BORDER=0 WIDTH=120 HEIGHT=18></div>
				</TD></TR></FORM></TABLE></TABLE>';
	else
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($character);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			if($account->getCustomField('email_code') == $code)
			{
				if(Validator::password($newpassword))
				{
					$tmp_new_pass = $newpassword;
					if($config_salt_enabled)
					{
						$salt = generateRandomString(10, false, true, true);
						$tmp_new_pass  = $salt . $newpassword;
						$account->setCustomField('salt', $salt);
					}

					$account->setPassword(encrypt($tmp_new_pass ));
					$account->save();
					$account->setCustomField('email_code', '');
					echo 'New password to your account is below. Now you can login.<BR>
					<INPUT TYPE=hidden NAME="character" VALUE="'.$character.'">
					<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
					<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Changed password</B></TD></TR>
					<TR><TD BGCOLOR="'.$config['darkborder'].'">
					New password:&nbsp;<b>'.$newpassword.'</b><BR />
					Account name:&nbsp;&nbsp;&nbsp;<i>(Already on your e-mail)</i><BR />';

					$mailBody = '
					<h3>Your account name and password!</h3>
					<p>Changed password to your account in Lost Account Interface on server <a href="'.BASE_URL.'"><b>'.$config['lua']['serverName'].'</b></a></p>
					<p>Account name: <b>'.$account->getName().'</b></p>
					<p>New password: <b>'.$newpassword.'</b></p>
					<br />
					<p><u>It\'s automatic e-mail from OTS Lost Account System. Do not reply!</u></p>';

					if(_mail($account->getCustomField('email'), $config['lua']['serverName']." - Your new password", $mailBody))
					{
						echo '<br /><small>New password work! Sent e-mail with your password and account name. You should receive this e-mail in 15 minutes. You can login now with new password!';
					}
					else
					{
						echo '<br /><p class="error">New password work! An error occurred while sending email! You will not receive e-mail with new password. For Admin: More info can be found in system/logs/mailer-error.log';
					}
				echo '</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<FORM ACTION="?subtopic=accountmanagement" METHOD=post>
				<INPUT TYPE=image NAME="Login" ALT="Login" SRC="'.$template_path.'/images/global/buttons/sbutton_login.gif" BORDER=0 WIDTH=120 HEIGHT=18></div>
				</TD></TR></FORM></TABLE></TABLE>';
				}
				else
					$error= Validator::getLastError();
			}
			else
				$error= 'Wrong code to change password.';
		}
		else
			$error = 'Account of this character or this character doesn\'t exist.';
	}
	if(!empty($error))
				echo '<span style="color: red"><b>'.$error.'</b></span><br />Please enter code from e-mail and name of one character from account. Then press Submit.<BR>
				<FORM ACTION="?subtopic=lostaccount&action=checkcode" METHOD=post>
				<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Code & character name</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				Your code:&nbsp;<INPUT TYPE=text NAME="code" VALUE="" SIZE="40")><BR />
				Character:&nbsp;<INPUT TYPE=text NAME="character" VALUE="" SIZE="40")><BR />
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
}
?>

 

 

 

 

 

 

 

 

Problema 3:

Estou tenho um problema ao criar conta com email com mais de 30 caracteres.

No processo de criação de conta acontece tudo normalmente, porém quando tento logar a mesma conta no site não consigo, pois o limite de caracteres ao digitar o email na página de login é 30.

(Acho) que encontrei o possível arquivo responsável, porém ao editar ele e salvar, simplesmente nada muda na página, ela permanece com as configurações padrão de limite de caracteres, sendo impossível logar na conta. E acabei encontrando 2 arquivos com o mesmo nome, mas em pastas diferentes. Nos dois eu editei o limite para 50, e mesmo assim não funcionou.

Segue os arquivos:

htdocs\templates\tibiacom\account.login.html.twig: account.login.html.twig

OU código: 

<form action="{{ getLink('account/manage') }}" method="post" style="margin: 0px; padding: 0px;">
	{% if redirect is not null %}
		<input type="hidden" name="redirect" value="{{ redirect }}" />
	{% endif %}
	<div class="TableContainer" >
		<table class="Table4" cellpadding="0" cellspacing="0" >
			<div class="CaptionContainer" >
				<div class="CaptionInnerContainer" >
					<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);" /></span>
					<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);" /></span>
					<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/global/content/table-headline-border.gif);" ></span>
					<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/global/content/box-frame-vertical.gif);" /></span>
					<div class="Text" >Account Login</div>
					<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/global/content/box-frame-vertical.gif);" /></span>
					<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/global/content/table-headline-border.gif);" ></span>
					<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);" /></span>
					<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);" /></span>
				</div>
			</div>
			<tr>
				<td>
					<div class="InnerTableContainer" >
						<table style="width:100%;">
							<tbody>
							<tr>
								<td>
										<div class="TableContentContainer" >
											<table class="TableContent" width="100%" style="border:1px solid #faf0d7;">
											<tbody>
												<tr>
													<td>
														<table style="float: left; width: 100%;" cellpadding="0" cellspacing="0" >
															<tr>
																<td class="LabelV">
																	<span{% if error is not null %} class="red"{% endif %}>{{ account_login_by }}:</span>
																</td>
																<td><input style="width: 100%;" type="text" name="account_login" size="25" maxlength="50" autofocus /></td>
															</tr>
															<tr>
																<td class="LabelV" ><span{% if error is not null %} class="red"{% endif %}>Pass:</span></td>
																<td><input style="width: 100%;" type="password" name="password_login" size="35" maxlength="29" /></td>
															</tr>
															<tr>
																<td class="LabelV" ></td>
																<td><input type="checkbox" id="remember_me" name="remember_me" value="true" />
																	<label for="remember_me"> Remember me</label></td>
															</tr>
														</table>
													</td>
														<td id="LoginFormButtonCell">
														<table style="float: left; width: 100%;" cellpadding="0" cellspacing="0" >
														<div style="float: right; font-size: 1px;" >
															<input type="hidden" name="page" value="overview" >
															{{ include('buttons.login.html.twig') }}
</form>
															<div style="width: 2px; height: 2px;" ></div>
																<form action="{{ getLink('account/lost') }}" method="post" style="padding:0px;margin:0px;" >
																	{{ include('buttons.account_lost.html.twig') }}
																</form>
														</div>
														</table>
														</td>
												</tr>
												</tbody>
											</table>
										</div>
								</td>
							</tr>
							</tbody>
							
						</table>
					</div>
				</td>
			</tr>
		</table>
	</div>

<br/>

<div style="text-align:center">
	<h1>New to {{ config.lua.serverName }}?</h1>
</div>
<div class="TableContainer">
<div class="CaptionContainer">
<div class="CaptionInnerContainer">
<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);"></span>
<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/global/content/table-headline-border.gif);"></span>
<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/global/content/box-frame-vertical.gif);"></span>
<div class="Text">New Player</div>
<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/global/content/box-frame-vertical.gif);"></span>
<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/global/content/table-headline-border.gif);"></span>
<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);"></span>
</div>
</div>
<table class="Table3" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>
	<div class="InnerTableContainer">
		<table style="width:100%;">
			<tbody>
				<tr>
					<td>
						<div class="TableContentContainer">
							<table class="TableContent" width="100%" style="border:1px solid #faf0d7;">
								<tbody>
									<tr>
										<td>
											<div style="float: right; margin-top: 20px;">
											{% spaceless %}
												<form class="MediumButtonForm" action="{{ getLink('account/create') }}" method="post" >
													<div class="MediumButtonBackground" style="background-image:url({{ template_path }}/images/global/buttons/mediumbutton.gif)" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);">
														<div class="MediumButtonOver" style="background-image:url({{ template_path }}/images/global/buttons/mediumbutton-over.gif)" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);"></div>
														<input class="MediumButtonText" type="image" name="Create Account" alt="Create Account" src="{{ template_path }}/images/global/buttons/mediumbutton_createaccount.png" />
													</div>
												</form>
											{% endspaceless %}
											</div>
										<div id="LoginCreateAccountBox"><p><b>{{ config.lua.serverName }}...</b></p>
										<div style="margin-left: 10px;"><p>... where hardcore gaming meets fantasy.</p><p>... where friendships last a lifetime.</p><p>... unites adventurers since 1997!</p>
										</div>
										</div>
										</td>
									</tr>
								</tbody>
							</table>
						</div>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</td>
</tr>
</tbody>
</table>
</div>

 

 

htdocs\system\templates\account.login.html.twig: account.login.html.twig

OU código:

Please enter your account {{ account|lower }} and your password.<br/><a href="?subtopic=createaccount" >Create an account</a> if you do not have one yet.<br/><br/>
<form action="{{ getLink('account/manage') }}" method="post" >
	{% if redirect is not null %}
		<input type="hidden" name="redirect" value="{{ redirect }}" />
	{% endif %}
	<div class="TableContainer" >
		<table class="Table1" cellpadding="0" cellspacing="0" >
			<div class="CaptionContainer" >
				<div class="CaptionInnerContainer" >
					<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);" /></span>
					<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);" /></span>
					<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);" ></span>
					<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);" /></span>
					<div class="Text" >Account Login</div>
					<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);" /></span>
					<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);" ></span>
					<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);" /></span>
					<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);" /></span>
				</div>
			</div>
			<tr>
				<td>
					<div class="InnerTableContainer">
						<table style="width:100%;" >
							<tr>
								<td class="LabelV" >
									<span{% if error is not null %} class="red"{% endif %}>{{ account_login_by }}:</span>
								</td>
								<td style="width:100%;" ><input type="text" name="account_login" size="30" maxlength="50" autofocus/></td>
							</tr>
							<tr>
								<td class="LabelV" >
									<span{% if error is not null %} class="red"{% endif %}>Password:</span>
								</td>
								<td><input type="password" name="password_login" size="30" maxlength="29" ></td>
							</tr>
							<tr>
								<td class="LabelV" ></td>
								<td><input type="checkbox" id="remember_me" name="remember_me" value="true" />
									<label for="remember_me"> Remember me</label></td>
							</tr>
							{% if error is not null %}
								<tr><td></td><td><span class="FormFieldError">{{ error }}</span></td></tr>
							{% endif %}
						</table>
					</div>
				</td>
			</tr>
		</table>
	</div>
	<br/>
	<table width="100%" >
		<tr align="center">
			<td>
				<table border="0" cellspacing="0" cellpadding="0">
					<tr>
						<td style="border:0px;">
							{{ include('buttons.submit.html.twig') }}
						</td>
					<tr>
					</form>
				</table>
			</td>
			<td>
				<table border="0" cellspacing="0" cellpadding="0">
					<form action="{{ getLink('account/lost') }}" method="post">
						<tr>
							<td style="border:0px;">
								{{ include('buttons.account_lost.html.twig') }}
							</td>
						</tr>
					</form>
				</table>
			</td>
		</tr>
	</table>

 

 

 

 

 

 

 

 

Problema 4: 

Depois de muito apanhar para configurar boosted creature que veio bugada e até então não tinha conhecimento sobre esse sistema, consegui configurar, mas me deparei com um problema e ao mesmo tempo me surgiu uma dúvida sobre o sistema.

O Problema: 

Após conseguir configurar a query para pegar o nome da criatura boostada do dia da database e procurar por uma imagem com o mesmo nome, me deparei com seguinte situação: Só aparece a criatura boostada se a imagem da mesma estiver com espaço em branco entre as palavras no nome da imagem, idêntico ao nome da database.
Na database o nome da criatura é salva igual como está no jogo, se o bicho possui um nome com 2 ou mais palavras, na database possui os espaços em branco entre essas palavras, como na imagem 1.
Porém o nome de todas as imagens de todas as criaturas n site, está com um underline __ substituindo os espaços em branco, como na imagem 2.
Existe alguma forma de programar o script da busca pela imagem, ele substituir automaticamente os espaços em branco por __ underline, para assim encontrar a imagem correta? Ou eu tenho que mudar o nome de todas as imagens manualmente, substituindo os underlines __ por espaços em branco?
Segue as imagens:
2.thumb.png.79a5dc81a9a43b1041cc708e8b853a4f.png

 

3.thumb.png.28aca9ce3954444438e2d662dbf3f1f3.png

 

segue o arquivo onde configurei a partir da linha 601 (quase nas últimas linhas do arquivo)  htdocs\templates\tibiacom\index.php: index.php

OU o código:

<?php
defined('MYAAC') or die('Direct access not allowed!');

if(isset($config['boxes']))
	$config['boxes'] = explode(",", $config['boxes']);
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<?php echo template_place_holder('head_start'); ?>
	<link rel="shortcut icon" href="<?php echo $template_path; ?>/images/favicon.ico" type="image/x-icon" />
	<link rel="icon" href="<?php echo $template_path; ?>/images/favicon.ico" type="image/x-icon" />
	<link href="<?php echo $template_path; ?>/basic.css" rel="stylesheet" type="text/css" />

	<script type="text/javascript" src="tools/basic.js"></script>
	<script type="text/javascript" src="<?php echo $template_path; ?>/ticker.js"></script>
	<script id="twitter-wjs" src="<?php echo $template_path; ?>/js/twitter.js"></script>
	<script id="facebook-jssdk" async src="https://connect.facebook.net/en_US/all.js"></script>

	<link href="<?php echo $template_path; ?>/css/facebook.css" rel="stylesheet" type="text/css">

	<link rel="stylesheet" href="tools/fonts/fontawesome/all.css">
	<script src="tools/fonts/fontawesome/all.js"></script>

	<script src="admin/bootstrap/jquery-3.6.0.min.js"></script>
	<script src="admin/bootstrap/popper.min.js"></script>
	<script src="admin/bootstrap/js/bootstrap.min.js"></script>
	<link href="admin/bootstrap/bootstrap-lucasg.css" rel="stylesheet" type="text/css">

<?php if($config['pace_load'] == true){ ?>
	<script src="admin/bootstrap/pace/pace.js"></script>
	<link href="admin/bootstrap/pace/themes/<?php echo $config['pace_color'] ?>/pace-theme-<?php echo $config['pace_theme'] ?>.css" rel="stylesheet" />
<?php } ?>

	<script>
		function CollapseTable(a_ID)
		{
			$('#' + a_ID).slideToggle('slow');
			if ($('#Indicator_' + a_ID).hasClass('CircleSymbolPlus')) {
				$('#Indicator_' + a_ID).attr('class', 'CircleSymbolMinus');
				$('#Indicator_' + a_ID).css('background-image', 'url(' + IMAGES + '/global/content/circle-symbol-plus.gif)');
			} else {
				$('#Indicator_' + a_ID).css('background-image', 'url(' + IMAGES + '/global/content/circle-symbol-minus.gif)');
				$('#Indicator_' + a_ID).attr('class', 'CircleSymbolPlus');
			}
		}
	</script>

	<script type="text/javascript">
		var menus = '';
		var loginStatus="<?php echo ($logged ? 'true' : 'false'); ?>";
		<?php
			if(PAGE !== 'news') {
				if(strpos(URI, 'subtopic=') !== false) {
					$tmp = $_REQUEST['subtopic'];
					if($tmp === 'accountmanagement') {
						$tmp = 'accountmanage';
					}
				}
				else {
					$tmp = str_replace('/', '', URI);
					$exp = explode('/', URI);
					if(URI !== 'account/create' && URI !== 'account/lost' && isset($exp[1])) {
						if ($exp[0] === 'account') {
							$tmp = 'accountmanage';
						} else if ($exp[0] === 'news' && $exp[1] === 'archive') {
							$tmp = 'newsarchive';
						}
						else
							$tmp = $exp[0];
					}
				}
			}
			else {
				$tmp = 'news';
			}
		?>
		var activeSubmenuItem="<?php echo $tmp; ?>";
		var IMAGES="<?php echo $template_path; ?>/images";
		var LINK_ACCOUNT="<?php echo BASE_URL; ?>";

		function rowOverEffect(object) {
			if (object.className == 'moduleRow') object.className = 'moduleRowOver';
		}

		function rowOutEffect(object) {
			if (object.className == 'moduleRowOver') object.className = 'moduleRow';
		}

		function InitializePage() {
		  LoadLoginBox();
		  LoadMenu();
		}

		// initialisation of the loginbox status by the value of the variable 'loginStatus' which is provided to the HTML-document by PHP in the file 'header.inc'
		function LoadLoginBox()
		{
		  if(loginStatus == "false") {
			document.getElementById('ButtonText').style.backgroundImage = "url('" + IMAGES + "/global/buttons/mediumbutton_login.png')";
			document.getElementById('LoginstatusText_2').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-create-account.gif')";
			document.getElementById('LoginstatusText_2_1').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-create-account.gif')";
			document.getElementById('LoginstatusText_2_2').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-create-account-over.gif')";
		  } else {
			document.getElementById('ButtonText').style.backgroundImage = "url('" + IMAGES + "/global/buttons/mediumbutton_myaccount.png')";
			document.getElementById('LoginstatusText_2').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-logout.gif')";
			document.getElementById('LoginstatusText_2_1').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-logout.gif')";
			document.getElementById('LoginstatusText_2_2').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-logout-over.gif')";
		  }
		}

		// mouse-over and click events of the loginbox
		function MouseOverLoginBoxText(source)
		{
		  source.lastChild.style.visibility = "visible";
		  source.firstChild.style.visibility = "hidden";
		}
		function MouseOutLoginBoxText(source)
		{
		  source.firstChild.style.visibility = "visible";
		  source.lastChild.style.visibility = "hidden";
		}
		function LoginButtonAction()
		{
		  if(loginStatus == "false") {
			window.location = "<?php echo getLink('account/manage'); ?>";
		  } else {
			window.location = "<?php echo getLink('account/manage'); ?>";
		  }
		}
		function LoginstatusTextAction(source) {
		  if(loginStatus == "false") {
			window.location = "<?php echo getLink('account/create'); ?>";
		  } else {
			window.location = "<?php echo getLink('account/logout'); ?>";
		  }
		}

		var menu = [];
		menu[0] = {};
		var unloadhelper = false;

		// load the menu and set the active submenu item by using the variable 'activeSubmenuItem'
		function LoadMenu()
		{
		  document.getElementById("submenu_"+activeSubmenuItem).style.color = "white";
		  document.getElementById("ActiveSubmenuItemIcon_"+activeSubmenuItem).style.visibility = "visible";
		  menus = localStorage.getItem('menus');
		  if(menus.lastIndexOf("&") === -1) {
			  menus = "news=1&account=0&community=0&library=0&forum=0<?php if($config['gifts_system']) echo '&shops=0'; ?>&charactertrade=0&";
		  }
		  FillMenuArray();
		  InitializeMenu();
		}

		function SaveMenu()
		{
		  if(unloadhelper == false) {
			SaveMenuArray();
			unloadhelper = true;
		  }
		}

		// store the values of the variable 'self.name' in the array menu
		function FillMenuArray()
		{
			while(menus.length > 0 ){
				var mark1 = menus.indexOf("=");
				var mark2 = menus.indexOf("&");
				var menuItemName = menus.substr(0, mark1);
				menu[0][menuItemName] = menus.substring(mark1 + 1, mark2);
				menus = menus.substr(mark2 + 1, menus.length);
			}
		}

		// hide or show the corresponding submenus
		function InitializeMenu()
		{
		  for(menuItemName in menu[0]) {
			if(menu[0][menuItemName] == "0") {
			  document.getElementById(menuItemName+"_Submenu").style.visibility = "hidden";
			  document.getElementById(menuItemName+"_Submenu").style.display = "none";
			  document.getElementById(menuItemName+"_Lights").style.visibility = "visible";
			  document.getElementById(menuItemName+"_Extend").style.backgroundImage = "url(" + IMAGES + "/general/plus.gif)";
			}
			else {
			  document.getElementById(menuItemName+"_Submenu").style.visibility = "visible";
			  document.getElementById(menuItemName+"_Submenu").style.display = "block";
			  document.getElementById(menuItemName+"_Lights").style.visibility = "hidden";
			  document.getElementById(menuItemName+"_Extend").style.backgroundImage = "url(" + IMAGES + "/general/minus.gif)";
			}
		  }
		}


		function SaveMenuArray()
		{
			var stringSlices = "";
			var temp = "";

			for(menuItemName in menu[0]) {
				stringSlices = menuItemName + "=" + menu[0][menuItemName] + "&";
				temp = temp + stringSlices;
			}

			localStorage.setItem('menus', temp);
		}

		// onClick open or close submenus
		function MenuItemAction(sourceId)
		{
		  if(menu[0][sourceId] == 1) {
			CloseMenuItem(sourceId);
		  }
		  else {
			OpenMenuItem(sourceId);
		  }
		}
		function OpenMenuItem(sourceId)
		{
		  menu[0][sourceId] = 1;
		  document.getElementById(sourceId + "_Submenu").style.visibility = "visible";
		  document.getElementById(sourceId + "_Extend").style.backgroundImage = "url(" + IMAGES + "global/general/minus.gif)";
		  document.getElementById(sourceId + "_Lights").style.visibility = "hidden";
		  $('#'+sourceId+'_Submenu').slideDown('slow');
		  //document.getElementById(sourceId+"_Submenu").style.visibility = "visible";
		  //document.getElementById(sourceId+"_Submenu").style.display = "block";
		  //document.getElementById(sourceId+"_Lights").style.visibility = "hidden";
		  document.getElementById(sourceId+"_Extend").style.backgroundImage = "url(" + IMAGES + "/general/minus.gif)";
		}
		function CloseMenuItem(sourceId)
		{
		  menu[0][sourceId] = 0;
		  document.getElementById(sourceId + "_Lights").style.visibility = "visible";
		  document.getElementById(sourceId + "_Extend").style.backgroundImage = "url(" + IMAGES + "global/general/plus.gif)";
		  $('#'+sourceId+'_Submenu').slideUp('fast', function () {
		  	document.getElementById(sourceId + "_Submenu").style.visibility = "hidden";
		  });
		  //document.getElementById(sourceId+"_Submenu").style.visibility = "hidden";
		  //document.getElementById(sourceId+"_Submenu").style.display = "none";
		  //document.getElementById(sourceId+"_Lights").style.visibility = "visible";
		  document.getElementById(sourceId+"_Extend").style.backgroundImage = "url(" + IMAGES + "/general/plus.gif)";
		}

		// mouse-over effects of menubuttons and submenuitems
function MouseOverMenuItem(source) {
    if(source.firstChild.style){
        source.firstChild.style.visibility = "visible";
    }
}

function MouseOutMenuItem(source) {
    if(source.firstChild.style){
        source.firstChild.style.visibility = "hidden";
    }
}

function MouseOverSubmenuItem(source) {
    if(source.style){
        source.style.backgroundColor = "#14433F";
    }
}

function MouseOutSubmenuItem(source) {
    if(source.style){
        source.style.backgroundColor = "#0D2E2B";
    }
}
	</script>
	<?php echo template_place_holder('head_end'); ?>
</head>
<body onBeforeUnLoad="SaveMenu();" onUnload="SaveMenu();">
	<?php echo template_place_holder('body_start'); ?>
	<?php if(!empty($config['network_facebook'])) {?>
	<script type="text/javascript">
        window.fbAsyncInit = function() {
            FB.init({
                appId      : 497232093667125, // App ID
                status     : true,              // check login status
                cookie     : true,              // enable cookies to allow the server to access the session
                xfbml      : true               // parse XFBML
            });
            FB.Event.subscribe('auth.login', function() {
                var URLHelper = "?";
                if (window.location.search.replace("?", "").length > 0) {
                    URLHelper = "&";
                }
                if (FB_TryLogin == 1) {
                    window.location = window.location + URLHelper + "step=facebooktrylogin&wasreloaded=1";
                } else if (FB_TryLogin == 2) {
                    window.location = window.location + URLHelper + "page=facebooktrylogin&wasreloaded=1";
                } else {
                    window.location = window.location + URLHelper + "wasreloaded=1";
                }
            });
            FB.Event.subscribe('auth.logout', function(a_Response) {
                if (a_Response.status !== 'connected') {
                    window.location.href=window.location.href;
                } else {
                    /* nothing to do here*/
                }
            });
            FB.Event.subscribe('auth.statusChange', function(response) {
                if (FB_ForceReload == 1 && response.status == "connected") {
                    var URLHelper = "?";
                    if (window.location.search.replace("?", "").length > 0) {
                        URLHelper = "&";
                    }
                    window.location = window.location + URLHelper + "step=facebooktrylogin&wasreloaded=1";
                }
            });
        };
        (function(d){
            var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
            if (d.getElementById(id)) {return;}
            js = d.createElement('script'); js.id = id; js.async = true;
            js.src = "//connect.facebook.net/en_US/all.js";
            ref.parentNode.insertBefore(js, ref);
        }(document));
	</script>
	<?php } ?>
  <div id="top"></div>
  <div id="ArtworkHelper" style="background-image:url(<?php echo $template_path; ?>/images/header/<?php echo $config['background_image']; ?>);" >
    <div id="Bodycontainer">
      <div id="ContentRow">
        <div id="MenuColumn">
          <div id="LeftArtwork">
            <img id="TibiaLogoArtworkTop" src="<?php echo $template_path; ?>/images/header/<?php echo $config['logo_image']; ?>" onClick="window.location = '<?php echo getLink('news')?>';" alt="logoartwork" />
            <img id="LogoLink" src="<?php echo $template_path; ?>/images/header/tibia-logo-artwork-string.gif" onClick="window.location = 'mailto:<?php echo $config['mail_address']; ?>';" alt="logoartwork" />
          </div>

  <div id="Loginbox" >
    <div id="LoginTop" style="background-image:url(<?php echo $template_path; ?>/images/general/box-top.gif)" ></div>
    <div id="BorderLeft" class="LoginBorder" style="background-image:url(<?php echo $template_path; ?>/images/general/chain.gif)" ></div>



    <div id="LoginButtonContainer" style="background-image:url(<?php echo $template_path; ?>/images/loginbox/loginbox-textfield-background.gif)" >
      <div id="LoginButton" style="background-image:url(<?php echo $template_path; ?>/images/global/buttons/mediumbutton.gif)" >
        <div onClick="LoginButtonAction();" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);"><div class="Button" style="background-image:url(<?php echo $template_path; ?>/images/global/buttons/mediumbutton-over.gif)" ></div>
			<?php
          echo '<div id="ButtonText" '.($logged ? '' : 'style="background-image:url('.$template_path.'/images/global/buttons/mediumbutton_login.png)"').'>
			 </div>';
			 ?>
        </div>
      </div>

    </div>

    <div style="clear:both" ></div>

    <div class="Loginstatus" style="background-image:url(<?php echo $template_path; ?>/images/loginbox/loginbox-textfield-background.gif)" >
      <div id="LoginstatusText_2" onClick="LoginstatusTextAction(this);" onMouseOver="MouseOverLoginBoxText(this);" onMouseOut="MouseOutLoginBoxText(this);" ><div id="LoginstatusText_2_1" class="LoginstatusText" style="background-image:url(<?php echo $template_path; ?>/images/loginbox/loginbox-font-create-account.gif)" ></div><div id="LoginstatusText_2_2" class="LoginstatusText" style="background-image:url(<?php echo $template_path; ?>/images/loginbox/loginbox-font-create-account-over.gif)" ></div></div>
    </div>

    <div id="BorderRight" class="LoginBorder" style="background-image:url(<?php echo $template_path; ?>/images/general/chain.gif)" ></div>
    <div id="LoginBottom" class="Loginstatus" style="background-image:url(<?php echo $template_path; ?>/images/general/box-bottom.gif)" ></div>
  </div>

	<div class="SmallMenuBox" id="DownloadBox">
		<div class="SmallBoxTop" style="background-image:url(<?php echo $template_path; ?>/images/global/general/box-top.gif)"></div>
		<div class="SmallBoxBorder" style="background-image:url(<?php echo $template_path; ?>/images/global/general/chain.gif);"></div>
		<div class="SmallBoxButtonContainer" style="background-image:url(<?php echo $template_path; ?>/images/global/loginbox/loginbox-textfield-background.gif)">
			<a href="?subtopic=downloadclient&step=downloadagreement">
			<div id="PlayNowContainer">
				<div class="MediumButtonBackground" style="background-image:url(<?php echo $template_path; ?>/images/global/buttons/mediumbutton.gif)" onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="MediumButtonOver" style="background-image: url(<?php echo $template_path; ?>/images/global/buttons/mediumbutton-over.gif); visibility: hidden;" ></div><input class="MediumButtonText" type="image" name="Download" alt="Download" src="<?php echo $template_path; ?>/images/global/buttons/mediumbutton_download.png"></div>
			</div>
			</a>
		</div>
	<div class="SmallBoxBorder BorderRight" style="background-image:url(<?php echo $template_path; ?>/images/global/general/chain.gif);"></div>
	<div class="Loginstatus SmallBoxBottom" style="background-image:url(<?php echo $template_path; ?>/images/global/general/box-bottom.gif);"></div>
</div>

<div-- id='Menu'>
<div id='MenuTop' style='background-image:url(<?php echo $template_path; ?>/images/general/box-top.gif);'></div>

<?php
$menus = get_template_menus();

foreach($config['menu_categories'] as $id => $cat) {
	if(!isset($menus[$id]) || ($id == MENU_CATEGORY_SHOP && !$config['gifts_system'])) {
		continue;
	}
	?>
<div id='<?php echo $cat['id']; ?>' class='menuitem'>
	<span onClick="MenuItemAction('<?php echo $cat['id']; ?>')">
		<div class='MenuButton' style='background-image:url(<?php echo $template_path; ?>/images/menu/button-background.gif);'>
			<div onMouseOver='MouseOverMenuItem(this);' onMouseOut='MouseOutMenuItem(this);'><div class='Button' style='background-image:url(<?php echo $template_path; ?>/images/menu/button-background-over.gif);'></div>
				<span id='<?php echo $cat['id']; ?>_Lights' class='Lights'>
					<div class='light_lu' style='background-image:url(<?php echo $template_path; ?>/images/menu/green-light.gif);'></div>
					<div class='light_ld' style='background-image:url(<?php echo $template_path; ?>/images/menu/green-light.gif);'></div>
					<div class='light_ru' style='background-image:url(<?php echo $template_path; ?>/images/menu/green-light.gif);'></div>
				</span>
				<div id='<?php echo $cat['id']; ?>_Icon' class='Icon' style='background-image:url(<?php echo $template_path; ?>/images/menu/icon-<?php echo $cat['id']; ?>.gif);'></div>
				<div id='<?php echo $cat['id']; ?>_Label' class='Label' style='background-image:url(<?php echo $template_path; ?>/images/menu/label-<?php echo $cat['id']; ?>.gif);'></div>
				<div id='<?php echo $cat['id']; ?>_Extend' class='Extend' style='background-image:url(<?php echo $template_path; ?>/images/general/plus.gif);'></div>
			</div>
		</div>
	</span>
	<div id='<?php echo $cat['id']; ?>_Submenu' class='Submenu'>
	<?php
		$default_menu_color = "ffffff";

		foreach($menus[$id] as $category => $menu) {
			$link_color = '#' . (strlen($menu['color']) == 0 ? $default_menu_color : $menu['color']);
			?>
			<a href='<?php echo $menu['link_full']; ?>'<?php echo $menu['blank'] ? ' target="_blank"' : ''?>>
				<div id='submenu_<?php echo str_replace('/', '', $menu['link']); ?>' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)' style="color: <?php echo $link_color; ?>;">
					<div class='LeftChain' style='background-image:url(<?php echo $template_path; ?>/images/general/chain.gif);'></div>
					<div id='ActiveSubmenuItemIcon_<?php echo str_replace('/', '', $menu['link']); ?>' class='ActiveSubmenuItemIcon' style='background-image:url(<?php echo $template_path; ?>/images/menu/icon-activesubmenu.gif);'></div>
					<div class='SubmenuitemLabel' style="color: <?php echo $link_color; ?>;"><?php echo $menu['name']; ?></div>
					<div class='RightChain' style='background-image:url(<?php echo $template_path; ?>/images/general/chain.gif);'></div>
				</div>
			</a>
			<?php
		}
	?>
	</div>
	<?php
	if($id == MENU_CATEGORY_SHOP || (!$config['gifts_system'] && $id == MENU_CATEGORY_SHOP - 1)) {
	?>
		<div id='MenuBottom' style='background-image:url(<?php echo $template_path; ?>/images/general/box-bottom.gif);'></div>
	<?php
	}
	?>
</div>
	<?php
	}
	?>
		<script type="text/javascript">
            InitializePage();
        </script>
        </div>



        <div id="ContentColumn">



          <div class="Content">

<?php if($config['status_bar'] == true){ ?>
<div class="Box">
	<div class="Corner-tl" style="background-image:url(<?php echo $template_path; ?>/images/global/content/corner-tl.gif);"></div>
	<div class="Corner-tr" style="background-image:url(<?php echo $template_path; ?>/images/global/content/corner-tr.gif);"></div>
	<div class="Border_1" style="background-image:url(<?php echo $template_path; ?>/images/global/content/border-1.gif);"></div>
	<div class="BorderTitleText" style="background-image:url(<?php echo $template_path; ?>/images/global/content/newsheadline_background.gif); height: 28px;">
		<div class="InfoBar">
<?php if(isset($config['discord_link']) && !empty($config['discord_link'])){ ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-discord.png">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="<?php echo $config['discord_link']; ?>" target="new"><span class="InfoBarSmallElement">Join Discord</span></a>
				</span>
<?php } ?>
<?php if(isset($config['whatsapp_link']) && !empty($config['whatsapp_link'])){ ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-whatsapp.png" width="16">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="https://wa.me/<?php echo $config['whatsapp_link']; ?>" target="new"><span class="InfoBarSmallElement">Whatsapp</span></a>
				</span>
<?php } ?>
<?php if(isset($config['instagram_link']) && !empty($config['instagram_link'])){ ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-instagram.png" width="16">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="https://www.instagram.com/<?php echo $config['instagram_link']; ?>" target="new"><span class="InfoBarSmallElement">Instagram</span></a>
				</span>
<?php } ?>
<?php if(isset($config['facebook_link']) && !empty($config['facebook_link'])){ ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-facebook.png" width="16">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="https://www.facebook.com/<?php echo $config['facebook_link']; ?>" target="new"><span class="InfoBarSmallElement">Facebook</span></a>
				</span>
<?php } ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-download.png">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="?subtopic=downloadclient"><span class="InfoBarSmallElement">Download</span></a>
				</span>
				<span style="float: right; margin-top: -2px;">
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-players-online.png">
				<span class="InfoBarNumbers">
					<span class="InfoBarSmallElement">
						<a class="InfoBarLinks" href="?online">
<?php
if($status['online']){
	echo '' . $status['players'] . ' Players Online';
} else {
	echo 'Server Offline';
}
?>
						</a>
					</span>
				</span>
<?php if($config['collapse_status'] == true){ ?>
<a data-bs-toggle="collapse" href="#statusbar" role="button" aria-expanded="false" aria-controls="statusbar">
<img src="<?php echo $template_path; ?>/images/global/content/top-to-back.gif" class="InfoBarBigLogo">
</a>
<?php } ?>
</span>

		</div>
	</div>
	<!-- COLLAPSE STATUS BAR -->
<?php if($config['collapse_status'] == true){ ?>
<div class="collapse" id="statusbar" style="background-color: #d4c0a1;">
<table class="Table3" cellpadding="0" cellspacing="0" style="width: 100%;">
<tbody><tr>
<td>
<div class="InnerTableContainer" style="display: flex; flex-wrap: wrap; font-family: Verdana;">
<?php if($config['carousel_status'] == true){ ?>
<table style="width:100%;"><tbody><tr><td>
<div class="TableContentContainer">
<table class="TableContent" width="100%" style="border:1px solid #faf0d7; font-size: 12px;">
<tbody>
<tr bgcolor="#F1E0C6">
<td>
<div class="container">
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="carousel">
  <div class="carousel-inner">
<?php
$count = 1;
foreach($config['carousel'] as $carousel){
if($count == 1){
?>
<div class="carousel-item active">
	<img src="<?php echo $template_path ?>/images/carousel/<?php echo $carousel ?>" style="width: 100%;">
</div>
<?php
}elseif($count > 1){
?>
<div class="carousel-item">
	<img src="<?php echo $template_path ?>/images/carousel/<?php echo $carousel ?>" style="width: 100%;">
</div>
<?php
}
$count++;
}
?>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
  </button>
</div>
</div>
</td>
</tr>
</tbody></table>
</div></td></tr>
</tbody></table>
<?php } ?>
</div>
</td>
</tr>
</tbody></table>
</div>
<!-- COLLAPSE STATUS BAR -->
<?php } ?>
	<div class="Border_1" style="background-image:url(<?php echo $template_path; ?>/images/global/content/border-1.gif);"></div>
	<div class="CornerWrapper-b">
		<div class="Corner-bl" style="background-image:url(<?php echo $template_path; ?>/images/global/content/corner-bl.gif);"></div>
	</div>
	<div class="CornerWrapper-b">
		<div class="Corner-br" style="background-image:url(<?php echo $template_path; ?>/images/global/content/corner-br.gif);"></div>
	</div>
</div>
<?php } ?>

<div id="ContentHelper">
<?php echo tickers(); ?>
  <div id="<?php echo PAGE; ?>" class="Box">
    <div class="Corner-tl" style="background-image:url(<?php echo $template_path; ?>/images/content/corner-tl.gif);"></div>
    <div class="Corner-tr" style="background-image:url(<?php echo $template_path; ?>/images/content/corner-tr.gif);"></div>
    <div class="Border_1" style="background-image:url(<?php echo $template_path; ?>/images/content/border-1.gif);"></div>
    <div class="BorderTitleText" style="background-image:url(<?php echo $template_path; ?>/images/content/title-background-green.gif);"></div>
<?php
	$headline = $template_path.'/images/header/headline-' . PAGE . '.gif';
	if(!file_exists($headline))
		$headline = $template_path . '/headline.php?t=' . ucfirst($title);
?>
	<img class="Title" src="<?php echo $headline; ?>" alt="Contentbox headline" />
    <div class="Border_2">
      <div class="Border_3">
<?php $hooks->trigger(HOOK_TIBIACOM_BORDER_3); ?>
		<div class="BoxContent" style="background-image:url(<?php echo $template_path; ?>/images/content/scroll.gif);">
<?php echo template_place_holder('center_top') . $content; ?>
		</div>
      </div>
    </div>
    <div class="Border_1" style="background-image:url(<?php echo $template_path; ?>/images/content/border-1.gif);"></div>

    <div class="CornerWrapper-b"><div class="Corner-bl" style="background-image:url(<?php echo $template_path; ?>/images/content/corner-bl.gif);"></div></div>
    <div class="CornerWrapper-b"><div class="Corner-br" style="background-image:url(<?php echo $template_path; ?>/images/content/corner-br.gif);"></div></div>
  </div>
           </div>
          </div>
          <div id="Footer"><?php echo template_footer(); ?><br/>Layout by CipSoft GmbH.</div>
        </div>

        <div id="ThemeboxesColumn">
<?PHP
$monsterquery = $SQL->query("SELECT `boostname` FROM `boosted_creature`")->fetch();
$monstername = $monsterquery["boostname"];
?>
          <div id="RightArtwork">
			<img id="Monster" src="images/creatures/<?php echo $monsterquery["boostname"]; ?>.gif" onClick="window.location = '?subtopic=creatures&creature=<?php echo $monsterquery["boostname"]; ?>';" alt="Monster of the Day" title="Today's boosted creature: <?PHP echo ucwords(strtolower(trim($monstername))); ?>">
            <img id="PedestalAndOnline" src="<?php echo $template_path; ?>/images/header/pedestal.gif" alt="Monster Pedestal and Players Online Box"/>
        </div>

        <div id="Themeboxes">
			<?php
			$twig_loader->prependPath(__DIR__ . '/boxes/templates');

			foreach($config['boxes'] as $box) {
				/** @var string $template_name */
				$file = TEMPLATES . $template_name . '/boxes/' . $box . '.php';
				if(file_exists($file)) {
					include($file); ?>
				<?php
				}
			}
	if($config['template_allow_change'])
		 echo '<span style="color: white">Template:</span><br/>' . template_form();
 ?>
        </div>
      </div>
     </div>
    </div>
  </div>
	<?php echo template_place_holder('body_end'); ?>

<style>
.scrollToTop {
  width: 70px;
  height: 70px;
  padding: 10px;
  text-align: center;
  font-weight: bold;
  color: #444;
  text-decoration: none;
  position: fixed;
  bottom: 10px;
  right: 10px;
  display: none;
  z-index: 50000;
}
.scrollToTop:hover {
  text-decoration: none;
  cursor: pointer;
}
</style>
<script>
	$(document).ready(function(){
		//Check to see if the window is top if not then display button
		$(window).scroll(function(){
			if ($(this).scrollTop() > 100) {
				$('.scrollToTop').fadeIn();
			} else {
				$('.scrollToTop').fadeOut();
			}
		});
		//Click event to scroll to top
		$('.scrollToTop').click(function(){
			$('html, body').animate({scrollTop : 0},800);
			return false;
		});
	});
</script>
<script>
	$(document).ready(function(){
		//Check to see if the window is top if not then display button
		$(window).scroll(function(){
			if ($(this).scrollTop() > 100) {
				$('.TopButton').fadeIn();
			}
		});
		//Click event to scroll to top
		$('.TopButton').click(function(){
			$('html, body').animate({scrollTop : 0},800);
			return false;
		});
	});
</script>
<div class="scrollToTop" style="background: url(<?php echo $template_path; ?>/images/global/content/top.png) no-repeat 0 0;"></div>

<script src="<?php echo $template_path; ?>/js/generic.js"></script>
<div id="HelperDivContainer" style="background-image: url(<?php echo $template_path; ?>/images/global/content/scroll.gif);">
	<div class="HelperDivArrow" style="background-image: url(<?php echo $template_path; ?>/images/global/content/helper-div-arrow.png);"></div>
	<div id="HelperDivHeadline"></div>
	<div id="HelperDivText"></div>
	<center><img class="Ornament" src="<?php echo $template_path; ?>/images/global/content/ornament.gif"></center><br>
</div>



</body>
</html>
<?php
function logo_monster() {
	global $config;
	return str_replace(" ", "", trim(strtolower($config['logo_monster'])));
}
?>

 

 

 

A dúvida:

Como posso fazer para que não mostre criatura nenhuma (apenas o pedestal vazio), SEMPRE e ENQUANTO o server estiver off? Gostaria que mostrasse foto da criatura do dia apenas se o server estiver online.

 

 

 

 

 

 

Problema 5: Na verdade é uma dúvida.

 

Estou utilizando a base canary 13x. Esta possui sistema de boss boostado na database também. Gostaria de saber como posso adicionar boss boostado do dia ao lado da criatura boostada, assim como em muitos sites por aí. Alguém poderia me indicar um tutorial com MyAAC ou me ensinar a inserir isso no MyAAC?

 

 

 

 

 

Agradeço desde já a toda e qualquer ajuda. 

Link para o post
Compartilhar em outros sites
  • Moderador
18 horas atrás, DiigooMix disse:

 

Estou usando um modelo de MyAAC em meu projeto, que por acaso, pesquisando sobre minhas dúvidas, descobri que é o mesmo deste post:

Não sei dizer se é a mesma versão, mas tem praticamente tudo que o meu site MyAAC possui.

 


Problema 1:
Estou com o problema na themebox de Server Save:

Para ele funcionar, configurei server time no config.php principal do site para 00:00:00, e tive que adicionar a data manualmente do próximo SS, para que o relógio conte as horas corretamente.
Gostaria de saber se há alguma forma de modificar o script dessa themebox para que atualize a próxima data automaticamente.

Segue abaixo o script da themebox, arquivo serversave.php

Caso não possa fazer o download do arquivo, aqui vai o script: A edição da data é feita na linha 55, onde começa assim: var countDownDate = new Date("Jun 07, 2023

 






<style>
    .serversave{
        width: 180px;
        height: 135px;
    }
    .serversave_header{
        height: 45px;
        width: 180px;
        background-image: url('templates/tibiacom/images/themeboxes/box_top.png');
        font-family: Verdana;
        font-weight: bold;
        color: #d5c3af;
        line-height: 65px;
    }
    .serversave_bottom{
        height: 30px;
        width: 180px;
        margin-top: -20px;
        background-image: url('templates/tibiacom/images/themeboxes/box_bottom.png');
    }
    .serversave_content{
        padding: 0px 10px;
        width: 160px;
        height: 70px;
        background-image: url('templates/tibiacom/images/themeboxes/box_bg.png');
        text-align: center;
        display: grid;
        justify-content: center;
        align-items: center;
    }
    .serversave_text{
        font-family: Verdana;
        color: #d5c3af;
        font-size: 12px !important;
    }
    .serversave_countdown{
        font-family: Verdana;
        font-size: 22px !important;
        font-weight: bold;
        color: #d5c3af;
        border: 1px solid #d5c3af;
        border-radius: 3px;
        padding: 5px 0px;
    }
</style>
<?php
global $config;
$server_save = $config['server_save'];
$explodeServerSave = explode(':', $server_save);
$hours_ServerSave = $explodeServerSave[0];
$minutes_ServerSave = $explodeServerSave[1];
$seconds_ServerSave = $explodeServerSave[2];
?>
<script>
	var countDownDate = new Date("Jun 07, 2023 <?php echo $hours_ServerSave ?>:<?php echo $minutes_ServerSave ?>:<?php echo $seconds_ServerSave ?>").getTime();
	var x = setInterval(function() {
		var now = new Date().getTime();
		var distance = countDownDate - now;
		var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
		var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
		var seconds = Math.floor((distance % (1000 * 60)) / 1000);

        document.getElementById("timerServerSave").innerHTML = "" + hours + ":" + minutes + ":" + seconds + "";

		if (distance < 0) {
			clearInterval(x);
			document.getElementById("timerServerSave").innerHTML = "Server save now!";
		}
	}, 1000);
</script>
<div class="serversave">
    <div class="serversave_header">Server Save</div>
    <div class="serversave_content">
        <div class="serversave_text">
            <small>Countdown to server save</small>
        </div>
        <div class="serversave_countdown" id="timerServerSave"></div>
    </div>
    <div class="serversave_bottom"></div>
</div>

 

 

 

 

 

 

 

Problema 2:

Encontrei o erro abaixo ao testar, recuperação de conta através do "account lost", onde primeiramente pede o nome de um personagem da conta, e clico na opção: Send me new password and my account name to account e-mail adress.
Após esse passo, coloco o email da conta em questão, e ao clicar em Submit, me deparo com este erro:

 

1.png.e6756c5413306514603a420a1c921a0a.png

 

Segue o arquivo: lostaccount.php

Ou o código do arquivo: 

 






<?php
/**
 * Lost account
 *
 * @package   MyAAC
 * @author    Gesior <[email protected]>
 * @author    Slawkens <[email protected]>
 * @copyright 2019 MyAAC
 * @link      https://my-aac.org
 */
defined('MYAAC') or die('Direct access not allowed!');
$title = 'Lost Account Interface';

if(!$config['mail_enabled'])
{
	echo '<b>Account maker is not configured to send e-mails, you can\'t use Lost Account Interface. Contact with admin to get help.</b>';
	return;
}

$config_salt_enabled = $db->hasColumn('accounts', 'salt');
$action_type = isset($_REQUEST['action_type']) ? $_REQUEST['action_type'] : '';
if($action == '')
{
	$twig->display('account.lost.form.html.twig');
}
else if($action == 'step1' && $action_type == '') {
	$twig->display('account.lost.noaction.html.twig');
}
elseif($action == 'step1' && $action_type == 'email')
{
	$nick = stripslashes($_REQUEST['nick']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();

		if($account->isLoaded())
		{
			if($account->getCustomField('email_next') < time())
				echo 'Please enter e-mail to account with this character.<BR>
				<form action="?subtopic=lostaccount&action=sendcode" method=post>
				<input type=hidden name="character">
				<table cellspacing=1 cellpadding=4 border=0 width=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Please enter e-mail to account</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				Character: <INPUT TYPE=text NAME="nick" VALUE="'.$nick.'" SIZE="40" readonly="readonly"><BR>
				E-mail to account:<INPUT TYPE=text NAME="email" VALUE="" SIZE="40"><BR>
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
			else
			{
				$insec = $account->getCustomField('email_next') - time();
				$minutesleft = floor($insec / 60);
				$secondsleft = $insec - ($minutesleft * 60);
				$timeleft = $minutesleft.' minutes '.$secondsleft.' seconds';
				echo 'Account of selected character (<b>'.$nick.'</b>) received e-mail in last '.ceil($config['email_lai_sec_interval'] / 60).' minutes. You must wait '.$timeleft.' before you can use Lost Account Interface again.';
			}
		}
		else
			echo 'Player or account of player <b>' . $nick . '</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'sendcode')
{
	$email = $_REQUEST['email'];
	$nick = stripslashes($_REQUEST['nick']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();

		if($account->isLoaded())
		{
			if($account->getCustomField('email_next') < time())
			{
				if($account->getEMail() == $email)
				{
					$newcode = generateRandomString(30, true, false, true);
					$mailBody = '
					You asked to reset your ' . $config['lua']['serverName'] . ' password.<br/>
					<p>Account name: '.$account->getName().'</p>
					<br />
					To do so, please click this link:
					<p><a href="' . BASE_URL . '?subtopic=lostaccount&action=checkcode&code='.$newcode.'&character='.urlencode($nick).'">'.BASE_URL.'/?subtopic=lostaccount&action=checkcode&code='.$newcode.'&character='.urlencode($nick).'</a></p>
					<p>or open page: <i>' . BASE_URL . '?subtopic=lostaccount&action=checkcode</i> and in field "code" write <b>'.$newcode.'</b></p>
					<br/>
						<p>If you did not request a password change, you may ignore this message and your password will remain unchanged.';

					$account_mail = $account->getCustomField('email');
					if(_mail($account_mail, $config['lua']['serverName'].' - Recover your account', $mailBody))
					{
						$account->setCustomField('email_code', $newcode);
						$account->setCustomField('email_next', (time() + $config['email_lai_sec_interval']));
						echo '<br />Details about steps required to recover your account has been sent to <b>' . $account_mail . '</b>. You should receive this email within 15 minutes. Please check your inbox/spam directory.';
					}
					else
					{
						$account->setCustomField('email_next', (time() + 60));
						echo '<br /><p class="error">An error occurred while sending email! Try again later or contact with admin. For Admin: More info can be found in system/logs/mailer-error.log</p>';
					}
				}
				else
					echo 'Invalid e-mail to account of character <b>'.$nick.'</b>. Try again.';
			}
			else
			{
				$insec = $account->getCustomField('email_next') - time();
				$minutesleft = floor($insec / 60);
				$secondsleft = $insec - ($minutesleft * 60);
				$timeleft = $minutesleft.' minutes '.$secondsleft.' seconds';
				echo 'Account of selected character (<b>'.$nick.'</b>) received e-mail in last '.ceil($config['email_lai_sec_interval'] / 60).' minutes. You must wait '.$timeleft.' before you can use Lost Account Interface again.';
			}
		}
		else
			echo 'Player or account of player <b>'.$nick.'</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount&action=step1&action_type=email&nick='.urlencode($nick).'" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'step1' && $action_type == 'reckey')
{
	$nick = stripslashes($_REQUEST['nick']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			$account_key = $account->getCustomField('key');
			if(!empty($account_key))
			{
						echo 'If you enter right recovery key you will see form to set new e-mail and password to account. To this e-mail will be send your new password and account name.<BR>
						<FORM ACTION="?subtopic=lostaccount&action=step2" METHOD=post>
						<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
						<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Please enter your recovery key</B></TD></TR>
						<TR><TD BGCOLOR="'.$config['darkborder'].'">
						Character name:&nbsp;<INPUT TYPE=text NAME="nick" VALUE="'.$nick.'" SIZE="40" readonly="readonly"><BR />
						Recovery key:&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=text NAME="key" VALUE="" SIZE="40"><BR>
						</TD></TR>
						</TABLE>
						<BR>
						<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
						' . $twig->render('buttons.submit.html.twig') . '</div>
						</TD></TR></FORM></TABLE></TABLE>';
			}
			else
				echo 'Account of this character has no recovery key!';
		}
		else
			echo 'Player or account of player <b>'.$nick.'</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'step2')
{
	$rec_key = trim($_REQUEST['key']);
	$nick = stripslashes($_REQUEST['nick']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			$account_key = $account->getCustomField('key');
			if(!empty($account_key))
			{
				if($account_key == $rec_key)
				{
					echo '<script type="text/javascript">
					function validate_required(field,alerttxt)
					{
					with (field)
					{
					if (value==null||value==""||value==" ")
					  {alert(alerttxt);return false;}
					else {return true}
					}
					}
					function validate_email(field,alerttxt)
					{
					with (field)
					{
					apos=value.indexOf("@");
					dotpos=value.lastIndexOf(".");
					if (apos<1||dotpos-apos<2)
					  {alert(alerttxt);return false;}
					else {return true;}
					}
					}
					function validate_form(thisform)
					{
					with (thisform)
					{
					if (validate_required(email,"Please enter your e-mail!")==false)
					  {email.focus();return false;}
					if (validate_email(email,"Invalid e-mail format!")==false)
					  {email.focus();return false;}
					if (validate_required(passor,"Please enter password!")==false)
					  {passor.focus();return false;}
					if (validate_required(passor2,"Please repeat password!")==false)
					  {passor2.focus();return false;}
					if (passor2.value!=passor.value)
					  {alert(\'Repeated password is not equal to password!\');return false;}
					}
					}
					</script>';
					echo 'Set new password and e-mail to your account.<BR>
					<FORM ACTION="?subtopic=lostaccount&action=step3" onsubmit="return validate_form(this)" METHOD=post>
					<INPUT TYPE=hidden NAME="character" VALUE="">
					<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
					<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Please enter new password and e-mail</B></TD></TR>
					<TR><TD BGCOLOR="'.$config['darkborder'].'">
					Account of character:&nbsp;&nbsp;<INPUT TYPE=text NAME="nick" VALUE="'.$nick.'" SIZE="40" readonly="readonly"><BR />
					New password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT id="passor" TYPE=password NAME="passor" VALUE="" SIZE="40"><BR>
					Repeat new password:&nbsp;&nbsp;<INPUT id="passor2" TYPE=password NAME="passor" VALUE="" SIZE="40"><BR>
					New e-mail address:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT id="email" TYPE=text NAME="email" VALUE="" SIZE="40"><BR>
					<INPUT TYPE=hidden NAME="key" VALUE="'.$rec_key.'">
					</TD></TR>
					</TABLE>
					<BR>
					<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
					' . $twig->render('buttons.submit.html.twig') . '</div>
					</TD></TR></FORM></TABLE></TABLE>';
				}
				else
					echo 'Wrong recovery key!';
			}
			else
				echo 'Account of this character has no recovery key!';
		}
		else
			echo 'Player or account of player <b>'.$nick.'</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount&action=step1&action_type=reckey&nick='.urlencode($nick).'" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'step3')
{
	$rec_key = trim($_REQUEST['key']);
	$nick = stripslashes($_REQUEST['nick']);
	$new_pass = trim($_REQUEST['passor']);
	$new_email = trim($_REQUEST['email']);
	if(Validator::characterName($nick))
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($nick);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			$account_key = $account->getCustomField('key');
			if(!empty($account_key))
			{
				if($account_key == $rec_key)
				{
					if(Validator::password($new_pass))
					{
						if(Validator::email($new_email))
						{
							$account->setEMail($new_email);

							$tmp_new_pass = $new_pass;
							if($config_salt_enabled)
							{
								$salt = generateRandomString(10, false, true, true);
								$tmp_new_pass = $salt . $new_pass;
							}

							$account->setPassword(encrypt($tmp_new_pass));
							$account->save();

							if($config_salt_enabled)
								$account->setCustomField('salt', $salt);

							echo 'Your account name, new password and new e-mail.<BR>
							<FORM ACTION="?subtopic=accountmanagement" onsubmit="return validate_form(this)" METHOD=post>
							<INPUT TYPE=hidden NAME="character" VALUE="">
							<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
							<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Your account name, new password and new e-mail</B></TD></TR>
							<TR><TD BGCOLOR="'.$config['darkborder'].'">
							Account name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>'.$account->getName().'</b><BR>
							New password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>'.$new_pass.'</b><BR>
							New e-mail address:&nbsp;<b>'.$new_email.'</b><BR>';
							if($account->getCustomField('email_next') < time())
							{
								$mailBody = '
								<h3>Your account name and new password!</h3>
								<p>Changed password and e-mail to your account in Lost Account Interface on server <a href="'.BASE_URL.'"><b>'.$config['lua']['serverName'].'</b></a></p>
								<p>Account name: <b>'.$account->getName().'</b></p>
								<p>New password: <b>'.$new_pass.'</b></p>
								<p>E-mail: <b>'.$new_email.'</b> (this e-mail)</p>
								<br />
								<p><u>It\'s automatic e-mail from OTS Lost Account System. Do not reply!</u></p>';

								if(_mail($account->getCustomField('email'), $config['lua']['serverName']." - New password to your account", $mailBody))
								{
									echo '<br /><small>Sent e-mail with your account name and password to new e-mail. You should receive this e-mail in 15 minutes. You can login now with new password!</small>';
								}
								else
								{
									echo '<br /><p class="error">An error occurred while sending email! You will not receive e-mail with this informations. For Admin: More info can be found in system/logs/mailer-error.log</p>';
								}
							}
							else
							{
								echo '<br /><small>You will not receive e-mail with this informations.</small>';
							}
							echo '<INPUT TYPE=hidden NAME="account_login" VALUE="'.$account->getId().'">
							<INPUT TYPE=hidden NAME="password_login" VALUE="'.$new_pass.'">
							</TD></TR></TABLE><BR>
							<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
							<INPUT TYPE=image NAME="Login" ALT="Login" SRC="'.$template_path.'/images/global/buttons/sbutton_login.gif" BORDER=0 WIDTH=120 HEIGHT=18></div>
							</TD></TR></FORM></TABLE></TABLE>';
						}
						else
							echo Validator::getLastError();
					}
					else
						echo Validator::getLastError();
				}
				else
					echo 'Wrong recovery key!';
			}
			else
				echo 'Account of this character has no recovery key!';
		}
		else
			echo 'Player or account of player <b>'.$nick.'</b> doesn\'t exist.';
	}
	else
		echo 'Invalid player name format. If you have other characters on account try with other name.';
	echo '<BR /><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<a href="?subtopic=lostaccount&action=step1&action_type=reckey&nick='.urlencode($nick).'" border="0"><IMG SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" NAME="Back" ALT="Back" BORDER=0 WIDTH=120 HEIGHT=18></a></div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'checkcode')
{
	$code = trim($_REQUEST['code']);
	$character = stripslashes(trim($_REQUEST['character']));
	if(empty($code) || empty($character))
		echo 'Please enter code from e-mail and name of one character from account. Then press Submit.<BR>
				<FORM ACTION="?subtopic=lostaccount&action=checkcode" METHOD=post>
				<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Code & character name</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				Your code:&nbsp;<INPUT TYPE=text NAME="code" VALUE="" SIZE="40")><BR />
				Character:&nbsp;<INPUT TYPE=text NAME="character" VALUE="" SIZE="40")><BR />
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
	else
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($character);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			if($account->getCustomField('email_code') == $code)
			{
				echo '<script type="text/javascript">
				function validate_required(field,alerttxt)
				{
				with (field)
				{
				if (value==null||value==""||value==" ")
				  {alert(alerttxt);return false;}
				else {return true}
				}
				}

				function validate_form(thisform)
				{
				with (thisform)
				{
				if (validate_required(passor,"Please enter password!")==false)
				  {passor.focus();return false;}
				if (validate_required(passor2,"Please repeat password!")==false)
				  {passor2.focus();return false;}
				if (passor2.value!=passor.value)
				  {alert(\'Repeated password is not equal to password!\');return false;}
				}
				}
				</script>
				Please enter new password to your account and repeat to make sure you remember password.<BR>
				<FORM ACTION="?subtopic=lostaccount&action=setnewpassword" onsubmit="return validate_form(this)" METHOD=post>
				<INPUT TYPE=hidden NAME="character" VALUE="'.$character.'">
				<INPUT TYPE=hidden NAME="code" VALUE="'.$code.'">
				<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Code & account name</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				New password:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=password ID="passor" NAME="passor" VALUE="" SIZE="40")><BR />
				Repeat new password:&nbsp;<INPUT TYPE=password ID="passor2" NAME="passor2" VALUE="" SIZE="40")><BR />
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
			}
			else
				$error= 'Wrong code to change password.';
		}
		else
			$error = 'Account of this character or this character doesn\'t exist.';
	}
	if(!empty($error))
				echo '<span style="color: red"><b>'.$error.'</b></span><br />Please enter code from e-mail and name of one character from account. Then press Submit.<BR>
				<FORM ACTION="?subtopic=lostaccount&action=checkcode" METHOD=post>
				<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Code & character name</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				Your code:&nbsp;<INPUT TYPE=text NAME="code" VALUE="" SIZE="40")><BR />
				Character:&nbsp;<INPUT TYPE=text NAME="character" VALUE="" SIZE="40")><BR />
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
}
elseif($action == 'setnewpassword')
{
	$newpassword = $_REQUEST['passor'];
	$code = $_REQUEST['code'];
	$character = stripslashes($_REQUEST['character']);
	echo '';
	if(empty($code) || empty($character) || empty($newpassword))
		echo '<span style="color: red"><b>Error. Try again.</b></span><br />Please enter code from e-mail and name of one character from account. Then press Submit.<BR>
				<BR><FORM ACTION="?subtopic=lostaccount&action=checkcode" METHOD=post>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<INPUT TYPE=image NAME="Back" ALT="Back" SRC="'.$template_path.'/images/global/buttons/sbutton_back.gif" BORDER=0 WIDTH=120 HEIGHT=18></div>
				</TD></TR></FORM></TABLE></TABLE>';
	else
	{
		$player = new OTS_Player();
		$account = new OTS_Account();
		$player->find($character);
		if($player->isLoaded())
			$account = $player->getAccount();
		if($account->isLoaded())
		{
			if($account->getCustomField('email_code') == $code)
			{
				if(Validator::password($newpassword))
				{
					$tmp_new_pass = $newpassword;
					if($config_salt_enabled)
					{
						$salt = generateRandomString(10, false, true, true);
						$tmp_new_pass  = $salt . $newpassword;
						$account->setCustomField('salt', $salt);
					}

					$account->setPassword(encrypt($tmp_new_pass ));
					$account->save();
					$account->setCustomField('email_code', '');
					echo 'New password to your account is below. Now you can login.<BR>
					<INPUT TYPE=hidden NAME="character" VALUE="'.$character.'">
					<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
					<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Changed password</B></TD></TR>
					<TR><TD BGCOLOR="'.$config['darkborder'].'">
					New password:&nbsp;<b>'.$newpassword.'</b><BR />
					Account name:&nbsp;&nbsp;&nbsp;<i>(Already on your e-mail)</i><BR />';

					$mailBody = '
					<h3>Your account name and password!</h3>
					<p>Changed password to your account in Lost Account Interface on server <a href="'.BASE_URL.'"><b>'.$config['lua']['serverName'].'</b></a></p>
					<p>Account name: <b>'.$account->getName().'</b></p>
					<p>New password: <b>'.$newpassword.'</b></p>
					<br />
					<p><u>It\'s automatic e-mail from OTS Lost Account System. Do not reply!</u></p>';

					if(_mail($account->getCustomField('email'), $config['lua']['serverName']." - Your new password", $mailBody))
					{
						echo '<br /><small>New password work! Sent e-mail with your password and account name. You should receive this e-mail in 15 minutes. You can login now with new password!';
					}
					else
					{
						echo '<br /><p class="error">New password work! An error occurred while sending email! You will not receive e-mail with new password. For Admin: More info can be found in system/logs/mailer-error.log';
					}
				echo '</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				<FORM ACTION="?subtopic=accountmanagement" METHOD=post>
				<INPUT TYPE=image NAME="Login" ALT="Login" SRC="'.$template_path.'/images/global/buttons/sbutton_login.gif" BORDER=0 WIDTH=120 HEIGHT=18></div>
				</TD></TR></FORM></TABLE></TABLE>';
				}
				else
					$error= Validator::getLastError();
			}
			else
				$error= 'Wrong code to change password.';
		}
		else
			$error = 'Account of this character or this character doesn\'t exist.';
	}
	if(!empty($error))
				echo '<span style="color: red"><b>'.$error.'</b></span><br />Please enter code from e-mail and name of one character from account. Then press Submit.<BR>
				<FORM ACTION="?subtopic=lostaccount&action=checkcode" METHOD=post>
				<TABLE CELLSPACING=1 CELLPADDING=4 BORDER=0 WIDTH=100%>
				<TR><TD BGCOLOR="'.$config['vdarkborder'].'" class="white"><B>Code & character name</B></TD></TR>
				<TR><TD BGCOLOR="'.$config['darkborder'].'">
				Your code:&nbsp;<INPUT TYPE=text NAME="code" VALUE="" SIZE="40")><BR />
				Character:&nbsp;<INPUT TYPE=text NAME="character" VALUE="" SIZE="40")><BR />
				</TD></TR>
				</TABLE>
				<BR>
				<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%><TR><TD><div style="text-align:center">
				' . $twig->render('buttons.submit.html.twig') . '</div>
				</TD></TR></FORM></TABLE></TABLE>';
}
?>

 

 

 

 

 

 

 

 

Problema 3:

Estou tenho um problema ao criar conta com email com mais de 30 caracteres.

No processo de criação de conta acontece tudo normalmente, porém quando tento logar a mesma conta no site não consigo, pois o limite de caracteres ao digitar o email na página de login é 30.

(Acho) que encontrei o possível arquivo responsável, porém ao editar ele e salvar, simplesmente nada muda na página, ela permanece com as configurações padrão de limite de caracteres, sendo impossível logar na conta. E acabei encontrando 2 arquivos com o mesmo nome, mas em pastas diferentes. Nos dois eu editei o limite para 50, e mesmo assim não funcionou.

Segue os arquivos:

htdocs\templates\tibiacom\account.login.html.twig: account.login.html.twig

OU código: 






<form action="{{ getLink('account/manage') }}" method="post" style="margin: 0px; padding: 0px;">
	{% if redirect is not null %}
		<input type="hidden" name="redirect" value="{{ redirect }}" />
	{% endif %}
	<div class="TableContainer" >
		<table class="Table4" cellpadding="0" cellspacing="0" >
			<div class="CaptionContainer" >
				<div class="CaptionInnerContainer" >
					<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);" /></span>
					<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);" /></span>
					<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/global/content/table-headline-border.gif);" ></span>
					<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/global/content/box-frame-vertical.gif);" /></span>
					<div class="Text" >Account Login</div>
					<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/global/content/box-frame-vertical.gif);" /></span>
					<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/global/content/table-headline-border.gif);" ></span>
					<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);" /></span>
					<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);" /></span>
				</div>
			</div>
			<tr>
				<td>
					<div class="InnerTableContainer" >
						<table style="width:100%;">
							<tbody>
							<tr>
								<td>
										<div class="TableContentContainer" >
											<table class="TableContent" width="100%" style="border:1px solid #faf0d7;">
											<tbody>
												<tr>
													<td>
														<table style="float: left; width: 100%;" cellpadding="0" cellspacing="0" >
															<tr>
																<td class="LabelV">
																	<span{% if error is not null %} class="red"{% endif %}>{{ account_login_by }}:</span>
																</td>
																<td><input style="width: 100%;" type="text" name="account_login" size="25" maxlength="50" autofocus /></td>
															</tr>
															<tr>
																<td class="LabelV" ><span{% if error is not null %} class="red"{% endif %}>Pass:</span></td>
																<td><input style="width: 100%;" type="password" name="password_login" size="35" maxlength="29" /></td>
															</tr>
															<tr>
																<td class="LabelV" ></td>
																<td><input type="checkbox" id="remember_me" name="remember_me" value="true" />
																	<label for="remember_me"> Remember me</label></td>
															</tr>
														</table>
													</td>
														<td id="LoginFormButtonCell">
														<table style="float: left; width: 100%;" cellpadding="0" cellspacing="0" >
														<div style="float: right; font-size: 1px;" >
															<input type="hidden" name="page" value="overview" >
															{{ include('buttons.login.html.twig') }}
</form>
															<div style="width: 2px; height: 2px;" ></div>
																<form action="{{ getLink('account/lost') }}" method="post" style="padding:0px;margin:0px;" >
																	{{ include('buttons.account_lost.html.twig') }}
																</form>
														</div>
														</table>
														</td>
												</tr>
												</tbody>
											</table>
										</div>
								</td>
							</tr>
							</tbody>
							
						</table>
					</div>
				</td>
			</tr>
		</table>
	</div>

<br/>

<div style="text-align:center">
	<h1>New to {{ config.lua.serverName }}?</h1>
</div>
<div class="TableContainer">
<div class="CaptionContainer">
<div class="CaptionInnerContainer">
<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);"></span>
<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/global/content/table-headline-border.gif);"></span>
<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/global/content/box-frame-vertical.gif);"></span>
<div class="Text">New Player</div>
<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/global/content/box-frame-vertical.gif);"></span>
<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/global/content/table-headline-border.gif);"></span>
<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);"></span>
<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/global/content/box-frame-edge.gif);"></span>
</div>
</div>
<table class="Table3" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>
	<div class="InnerTableContainer">
		<table style="width:100%;">
			<tbody>
				<tr>
					<td>
						<div class="TableContentContainer">
							<table class="TableContent" width="100%" style="border:1px solid #faf0d7;">
								<tbody>
									<tr>
										<td>
											<div style="float: right; margin-top: 20px;">
											{% spaceless %}
												<form class="MediumButtonForm" action="{{ getLink('account/create') }}" method="post" >
													<div class="MediumButtonBackground" style="background-image:url({{ template_path }}/images/global/buttons/mediumbutton.gif)" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);">
														<div class="MediumButtonOver" style="background-image:url({{ template_path }}/images/global/buttons/mediumbutton-over.gif)" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);"></div>
														<input class="MediumButtonText" type="image" name="Create Account" alt="Create Account" src="{{ template_path }}/images/global/buttons/mediumbutton_createaccount.png" />
													</div>
												</form>
											{% endspaceless %}
											</div>
										<div id="LoginCreateAccountBox"><p><b>{{ config.lua.serverName }}...</b></p>
										<div style="margin-left: 10px;"><p>... where hardcore gaming meets fantasy.</p><p>... where friendships last a lifetime.</p><p>... unites adventurers since 1997!</p>
										</div>
										</div>
										</td>
									</tr>
								</tbody>
							</table>
						</div>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</td>
</tr>
</tbody>
</table>
</div>

 

 

htdocs\system\templates\account.login.html.twig: account.login.html.twig

OU código:






Please enter your account {{ account|lower }} and your password.<br/><a href="?subtopic=createaccount" >Create an account</a> if you do not have one yet.<br/><br/>
<form action="{{ getLink('account/manage') }}" method="post" >
	{% if redirect is not null %}
		<input type="hidden" name="redirect" value="{{ redirect }}" />
	{% endif %}
	<div class="TableContainer" >
		<table class="Table1" cellpadding="0" cellspacing="0" >
			<div class="CaptionContainer" >
				<div class="CaptionInnerContainer" >
					<span class="CaptionEdgeLeftTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);" /></span>
					<span class="CaptionEdgeRightTop" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);" /></span>
					<span class="CaptionBorderTop" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);" ></span>
					<span class="CaptionVerticalLeft" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);" /></span>
					<div class="Text" >Account Login</div>
					<span class="CaptionVerticalRight" style="background-image:url({{ template_path }}/images/content/box-frame-vertical.gif);" /></span>
					<span class="CaptionBorderBottom" style="background-image:url({{ template_path }}/images/content/table-headline-border.gif);" ></span>
					<span class="CaptionEdgeLeftBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);" /></span>
					<span class="CaptionEdgeRightBottom" style="background-image:url({{ template_path }}/images/content/box-frame-edge.gif);" /></span>
				</div>
			</div>
			<tr>
				<td>
					<div class="InnerTableContainer">
						<table style="width:100%;" >
							<tr>
								<td class="LabelV" >
									<span{% if error is not null %} class="red"{% endif %}>{{ account_login_by }}:</span>
								</td>
								<td style="width:100%;" ><input type="text" name="account_login" size="30" maxlength="50" autofocus/></td>
							</tr>
							<tr>
								<td class="LabelV" >
									<span{% if error is not null %} class="red"{% endif %}>Password:</span>
								</td>
								<td><input type="password" name="password_login" size="30" maxlength="29" ></td>
							</tr>
							<tr>
								<td class="LabelV" ></td>
								<td><input type="checkbox" id="remember_me" name="remember_me" value="true" />
									<label for="remember_me"> Remember me</label></td>
							</tr>
							{% if error is not null %}
								<tr><td></td><td><span class="FormFieldError">{{ error }}</span></td></tr>
							{% endif %}
						</table>
					</div>
				</td>
			</tr>
		</table>
	</div>
	<br/>
	<table width="100%" >
		<tr align="center">
			<td>
				<table border="0" cellspacing="0" cellpadding="0">
					<tr>
						<td style="border:0px;">
							{{ include('buttons.submit.html.twig') }}
						</td>
					<tr>
					</form>
				</table>
			</td>
			<td>
				<table border="0" cellspacing="0" cellpadding="0">
					<form action="{{ getLink('account/lost') }}" method="post">
						<tr>
							<td style="border:0px;">
								{{ include('buttons.account_lost.html.twig') }}
							</td>
						</tr>
					</form>
				</table>
			</td>
		</tr>
	</table>

 

 

 

 

 

 

 

 

Problema 4: 

Depois de muito apanhar para configurar boosted creature que veio bugada e até então não tinha conhecimento sobre esse sistema, consegui configurar, mas me deparei com um problema e ao mesmo tempo me surgiu uma dúvida sobre o sistema.

O Problema: 

Após conseguir configurar a query para pegar o nome da criatura boostada do dia da database e procurar por uma imagem com o mesmo nome, me deparei com seguinte situação: Só aparece a criatura boostada se a imagem da mesma estiver com espaço em branco entre as palavras no nome da imagem, idêntico ao nome da database.
Na database o nome da criatura é salva igual como está no jogo, se o bicho possui um nome com 2 ou mais palavras, na database possui os espaços em branco entre essas palavras, como na imagem 1.
Porém o nome de todas as imagens de todas as criaturas n site, está com um underline __ substituindo os espaços em branco, como na imagem 2.
Existe alguma forma de programar o script da busca pela imagem, ele substituir automaticamente os espaços em branco por __ underline, para assim encontrar a imagem correta? Ou eu tenho que mudar o nome de todas as imagens manualmente, substituindo os underlines __ por espaços em branco?
Segue as imagens:
2.thumb.png.79a5dc81a9a43b1041cc708e8b853a4f.png

 

3.thumb.png.28aca9ce3954444438e2d662dbf3f1f3.png

 

segue o arquivo onde configurei a partir da linha 601 (quase nas últimas linhas do arquivo)  htdocs\templates\tibiacom\index.php: index.php

OU o código:






<?php
defined('MYAAC') or die('Direct access not allowed!');

if(isset($config['boxes']))
	$config['boxes'] = explode(",", $config['boxes']);
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<?php echo template_place_holder('head_start'); ?>
	<link rel="shortcut icon" href="<?php echo $template_path; ?>/images/favicon.ico" type="image/x-icon" />
	<link rel="icon" href="<?php echo $template_path; ?>/images/favicon.ico" type="image/x-icon" />
	<link href="<?php echo $template_path; ?>/basic.css" rel="stylesheet" type="text/css" />

	<script type="text/javascript" src="tools/basic.js"></script>
	<script type="text/javascript" src="<?php echo $template_path; ?>/ticker.js"></script>
	<script id="twitter-wjs" src="<?php echo $template_path; ?>/js/twitter.js"></script>
	<script id="facebook-jssdk" async src="https://connect.facebook.net/en_US/all.js"></script>

	<link href="<?php echo $template_path; ?>/css/facebook.css" rel="stylesheet" type="text/css">

	<link rel="stylesheet" href="tools/fonts/fontawesome/all.css">
	<script src="tools/fonts/fontawesome/all.js"></script>

	<script src="admin/bootstrap/jquery-3.6.0.min.js"></script>
	<script src="admin/bootstrap/popper.min.js"></script>
	<script src="admin/bootstrap/js/bootstrap.min.js"></script>
	<link href="admin/bootstrap/bootstrap-lucasg.css" rel="stylesheet" type="text/css">

<?php if($config['pace_load'] == true){ ?>
	<script src="admin/bootstrap/pace/pace.js"></script>
	<link href="admin/bootstrap/pace/themes/<?php echo $config['pace_color'] ?>/pace-theme-<?php echo $config['pace_theme'] ?>.css" rel="stylesheet" />
<?php } ?>

	<script>
		function CollapseTable(a_ID)
		{
			$('#' + a_ID).slideToggle('slow');
			if ($('#Indicator_' + a_ID).hasClass('CircleSymbolPlus')) {
				$('#Indicator_' + a_ID).attr('class', 'CircleSymbolMinus');
				$('#Indicator_' + a_ID).css('background-image', 'url(' + IMAGES + '/global/content/circle-symbol-plus.gif)');
			} else {
				$('#Indicator_' + a_ID).css('background-image', 'url(' + IMAGES + '/global/content/circle-symbol-minus.gif)');
				$('#Indicator_' + a_ID).attr('class', 'CircleSymbolPlus');
			}
		}
	</script>

	<script type="text/javascript">
		var menus = '';
		var loginStatus="<?php echo ($logged ? 'true' : 'false'); ?>";
		<?php
			if(PAGE !== 'news') {
				if(strpos(URI, 'subtopic=') !== false) {
					$tmp = $_REQUEST['subtopic'];
					if($tmp === 'accountmanagement') {
						$tmp = 'accountmanage';
					}
				}
				else {
					$tmp = str_replace('/', '', URI);
					$exp = explode('/', URI);
					if(URI !== 'account/create' && URI !== 'account/lost' && isset($exp[1])) {
						if ($exp[0] === 'account') {
							$tmp = 'accountmanage';
						} else if ($exp[0] === 'news' && $exp[1] === 'archive') {
							$tmp = 'newsarchive';
						}
						else
							$tmp = $exp[0];
					}
				}
			}
			else {
				$tmp = 'news';
			}
		?>
		var activeSubmenuItem="<?php echo $tmp; ?>";
		var IMAGES="<?php echo $template_path; ?>/images";
		var LINK_ACCOUNT="<?php echo BASE_URL; ?>";

		function rowOverEffect(object) {
			if (object.className == 'moduleRow') object.className = 'moduleRowOver';
		}

		function rowOutEffect(object) {
			if (object.className == 'moduleRowOver') object.className = 'moduleRow';
		}

		function InitializePage() {
		  LoadLoginBox();
		  LoadMenu();
		}

		// initialisation of the loginbox status by the value of the variable 'loginStatus' which is provided to the HTML-document by PHP in the file 'header.inc'
		function LoadLoginBox()
		{
		  if(loginStatus == "false") {
			document.getElementById('ButtonText').style.backgroundImage = "url('" + IMAGES + "/global/buttons/mediumbutton_login.png')";
			document.getElementById('LoginstatusText_2').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-create-account.gif')";
			document.getElementById('LoginstatusText_2_1').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-create-account.gif')";
			document.getElementById('LoginstatusText_2_2').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-create-account-over.gif')";
		  } else {
			document.getElementById('ButtonText').style.backgroundImage = "url('" + IMAGES + "/global/buttons/mediumbutton_myaccount.png')";
			document.getElementById('LoginstatusText_2').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-logout.gif')";
			document.getElementById('LoginstatusText_2_1').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-logout.gif')";
			document.getElementById('LoginstatusText_2_2').style.backgroundImage = "url('" + IMAGES + "/loginbox/loginbox-font-logout-over.gif')";
		  }
		}

		// mouse-over and click events of the loginbox
		function MouseOverLoginBoxText(source)
		{
		  source.lastChild.style.visibility = "visible";
		  source.firstChild.style.visibility = "hidden";
		}
		function MouseOutLoginBoxText(source)
		{
		  source.firstChild.style.visibility = "visible";
		  source.lastChild.style.visibility = "hidden";
		}
		function LoginButtonAction()
		{
		  if(loginStatus == "false") {
			window.location = "<?php echo getLink('account/manage'); ?>";
		  } else {
			window.location = "<?php echo getLink('account/manage'); ?>";
		  }
		}
		function LoginstatusTextAction(source) {
		  if(loginStatus == "false") {
			window.location = "<?php echo getLink('account/create'); ?>";
		  } else {
			window.location = "<?php echo getLink('account/logout'); ?>";
		  }
		}

		var menu = [];
		menu[0] = {};
		var unloadhelper = false;

		// load the menu and set the active submenu item by using the variable 'activeSubmenuItem'
		function LoadMenu()
		{
		  document.getElementById("submenu_"+activeSubmenuItem).style.color = "white";
		  document.getElementById("ActiveSubmenuItemIcon_"+activeSubmenuItem).style.visibility = "visible";
		  menus = localStorage.getItem('menus');
		  if(menus.lastIndexOf("&") === -1) {
			  menus = "news=1&account=0&community=0&library=0&forum=0<?php if($config['gifts_system']) echo '&shops=0'; ?>&charactertrade=0&";
		  }
		  FillMenuArray();
		  InitializeMenu();
		}

		function SaveMenu()
		{
		  if(unloadhelper == false) {
			SaveMenuArray();
			unloadhelper = true;
		  }
		}

		// store the values of the variable 'self.name' in the array menu
		function FillMenuArray()
		{
			while(menus.length > 0 ){
				var mark1 = menus.indexOf("=");
				var mark2 = menus.indexOf("&");
				var menuItemName = menus.substr(0, mark1);
				menu[0][menuItemName] = menus.substring(mark1 + 1, mark2);
				menus = menus.substr(mark2 + 1, menus.length);
			}
		}

		// hide or show the corresponding submenus
		function InitializeMenu()
		{
		  for(menuItemName in menu[0]) {
			if(menu[0][menuItemName] == "0") {
			  document.getElementById(menuItemName+"_Submenu").style.visibility = "hidden";
			  document.getElementById(menuItemName+"_Submenu").style.display = "none";
			  document.getElementById(menuItemName+"_Lights").style.visibility = "visible";
			  document.getElementById(menuItemName+"_Extend").style.backgroundImage = "url(" + IMAGES + "/general/plus.gif)";
			}
			else {
			  document.getElementById(menuItemName+"_Submenu").style.visibility = "visible";
			  document.getElementById(menuItemName+"_Submenu").style.display = "block";
			  document.getElementById(menuItemName+"_Lights").style.visibility = "hidden";
			  document.getElementById(menuItemName+"_Extend").style.backgroundImage = "url(" + IMAGES + "/general/minus.gif)";
			}
		  }
		}


		function SaveMenuArray()
		{
			var stringSlices = "";
			var temp = "";

			for(menuItemName in menu[0]) {
				stringSlices = menuItemName + "=" + menu[0][menuItemName] + "&";
				temp = temp + stringSlices;
			}

			localStorage.setItem('menus', temp);
		}

		// onClick open or close submenus
		function MenuItemAction(sourceId)
		{
		  if(menu[0][sourceId] == 1) {
			CloseMenuItem(sourceId);
		  }
		  else {
			OpenMenuItem(sourceId);
		  }
		}
		function OpenMenuItem(sourceId)
		{
		  menu[0][sourceId] = 1;
		  document.getElementById(sourceId + "_Submenu").style.visibility = "visible";
		  document.getElementById(sourceId + "_Extend").style.backgroundImage = "url(" + IMAGES + "global/general/minus.gif)";
		  document.getElementById(sourceId + "_Lights").style.visibility = "hidden";
		  $('#'+sourceId+'_Submenu').slideDown('slow');
		  //document.getElementById(sourceId+"_Submenu").style.visibility = "visible";
		  //document.getElementById(sourceId+"_Submenu").style.display = "block";
		  //document.getElementById(sourceId+"_Lights").style.visibility = "hidden";
		  document.getElementById(sourceId+"_Extend").style.backgroundImage = "url(" + IMAGES + "/general/minus.gif)";
		}
		function CloseMenuItem(sourceId)
		{
		  menu[0][sourceId] = 0;
		  document.getElementById(sourceId + "_Lights").style.visibility = "visible";
		  document.getElementById(sourceId + "_Extend").style.backgroundImage = "url(" + IMAGES + "global/general/plus.gif)";
		  $('#'+sourceId+'_Submenu').slideUp('fast', function () {
		  	document.getElementById(sourceId + "_Submenu").style.visibility = "hidden";
		  });
		  //document.getElementById(sourceId+"_Submenu").style.visibility = "hidden";
		  //document.getElementById(sourceId+"_Submenu").style.display = "none";
		  //document.getElementById(sourceId+"_Lights").style.visibility = "visible";
		  document.getElementById(sourceId+"_Extend").style.backgroundImage = "url(" + IMAGES + "/general/plus.gif)";
		}

		// mouse-over effects of menubuttons and submenuitems
function MouseOverMenuItem(source) {
    if(source.firstChild.style){
        source.firstChild.style.visibility = "visible";
    }
}

function MouseOutMenuItem(source) {
    if(source.firstChild.style){
        source.firstChild.style.visibility = "hidden";
    }
}

function MouseOverSubmenuItem(source) {
    if(source.style){
        source.style.backgroundColor = "#14433F";
    }
}

function MouseOutSubmenuItem(source) {
    if(source.style){
        source.style.backgroundColor = "#0D2E2B";
    }
}
	</script>
	<?php echo template_place_holder('head_end'); ?>
</head>
<body onBeforeUnLoad="SaveMenu();" onUnload="SaveMenu();">
	<?php echo template_place_holder('body_start'); ?>
	<?php if(!empty($config['network_facebook'])) {?>
	<script type="text/javascript">
        window.fbAsyncInit = function() {
            FB.init({
                appId      : 497232093667125, // App ID
                status     : true,              // check login status
                cookie     : true,              // enable cookies to allow the server to access the session
                xfbml      : true               // parse XFBML
            });
            FB.Event.subscribe('auth.login', function() {
                var URLHelper = "?";
                if (window.location.search.replace("?", "").length > 0) {
                    URLHelper = "&";
                }
                if (FB_TryLogin == 1) {
                    window.location = window.location + URLHelper + "step=facebooktrylogin&wasreloaded=1";
                } else if (FB_TryLogin == 2) {
                    window.location = window.location + URLHelper + "page=facebooktrylogin&wasreloaded=1";
                } else {
                    window.location = window.location + URLHelper + "wasreloaded=1";
                }
            });
            FB.Event.subscribe('auth.logout', function(a_Response) {
                if (a_Response.status !== 'connected') {
                    window.location.href=window.location.href;
                } else {
                    /* nothing to do here*/
                }
            });
            FB.Event.subscribe('auth.statusChange', function(response) {
                if (FB_ForceReload == 1 && response.status == "connected") {
                    var URLHelper = "?";
                    if (window.location.search.replace("?", "").length > 0) {
                        URLHelper = "&";
                    }
                    window.location = window.location + URLHelper + "step=facebooktrylogin&wasreloaded=1";
                }
            });
        };
        (function(d){
            var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
            if (d.getElementById(id)) {return;}
            js = d.createElement('script'); js.id = id; js.async = true;
            js.src = "//connect.facebook.net/en_US/all.js";
            ref.parentNode.insertBefore(js, ref);
        }(document));
	</script>
	<?php } ?>
  <div id="top"></div>
  <div id="ArtworkHelper" style="background-image:url(<?php echo $template_path; ?>/images/header/<?php echo $config['background_image']; ?>);" >
    <div id="Bodycontainer">
      <div id="ContentRow">
        <div id="MenuColumn">
          <div id="LeftArtwork">
            <img id="TibiaLogoArtworkTop" src="<?php echo $template_path; ?>/images/header/<?php echo $config['logo_image']; ?>" onClick="window.location = '<?php echo getLink('news')?>';" alt="logoartwork" />
            <img id="LogoLink" src="<?php echo $template_path; ?>/images/header/tibia-logo-artwork-string.gif" onClick="window.location = 'mailto:<?php echo $config['mail_address']; ?>';" alt="logoartwork" />
          </div>

  <div id="Loginbox" >
    <div id="LoginTop" style="background-image:url(<?php echo $template_path; ?>/images/general/box-top.gif)" ></div>
    <div id="BorderLeft" class="LoginBorder" style="background-image:url(<?php echo $template_path; ?>/images/general/chain.gif)" ></div>



    <div id="LoginButtonContainer" style="background-image:url(<?php echo $template_path; ?>/images/loginbox/loginbox-textfield-background.gif)" >
      <div id="LoginButton" style="background-image:url(<?php echo $template_path; ?>/images/global/buttons/mediumbutton.gif)" >
        <div onClick="LoginButtonAction();" onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);"><div class="Button" style="background-image:url(<?php echo $template_path; ?>/images/global/buttons/mediumbutton-over.gif)" ></div>
			<?php
          echo '<div id="ButtonText" '.($logged ? '' : 'style="background-image:url('.$template_path.'/images/global/buttons/mediumbutton_login.png)"').'>
			 </div>';
			 ?>
        </div>
      </div>

    </div>

    <div style="clear:both" ></div>

    <div class="Loginstatus" style="background-image:url(<?php echo $template_path; ?>/images/loginbox/loginbox-textfield-background.gif)" >
      <div id="LoginstatusText_2" onClick="LoginstatusTextAction(this);" onMouseOver="MouseOverLoginBoxText(this);" onMouseOut="MouseOutLoginBoxText(this);" ><div id="LoginstatusText_2_1" class="LoginstatusText" style="background-image:url(<?php echo $template_path; ?>/images/loginbox/loginbox-font-create-account.gif)" ></div><div id="LoginstatusText_2_2" class="LoginstatusText" style="background-image:url(<?php echo $template_path; ?>/images/loginbox/loginbox-font-create-account-over.gif)" ></div></div>
    </div>

    <div id="BorderRight" class="LoginBorder" style="background-image:url(<?php echo $template_path; ?>/images/general/chain.gif)" ></div>
    <div id="LoginBottom" class="Loginstatus" style="background-image:url(<?php echo $template_path; ?>/images/general/box-bottom.gif)" ></div>
  </div>

	<div class="SmallMenuBox" id="DownloadBox">
		<div class="SmallBoxTop" style="background-image:url(<?php echo $template_path; ?>/images/global/general/box-top.gif)"></div>
		<div class="SmallBoxBorder" style="background-image:url(<?php echo $template_path; ?>/images/global/general/chain.gif);"></div>
		<div class="SmallBoxButtonContainer" style="background-image:url(<?php echo $template_path; ?>/images/global/loginbox/loginbox-textfield-background.gif)">
			<a href="?subtopic=downloadclient&step=downloadagreement">
			<div id="PlayNowContainer">
				<div class="MediumButtonBackground" style="background-image:url(<?php echo $template_path; ?>/images/global/buttons/mediumbutton.gif)" onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="MediumButtonOver" style="background-image: url(<?php echo $template_path; ?>/images/global/buttons/mediumbutton-over.gif); visibility: hidden;" ></div><input class="MediumButtonText" type="image" name="Download" alt="Download" src="<?php echo $template_path; ?>/images/global/buttons/mediumbutton_download.png"></div>
			</div>
			</a>
		</div>
	<div class="SmallBoxBorder BorderRight" style="background-image:url(<?php echo $template_path; ?>/images/global/general/chain.gif);"></div>
	<div class="Loginstatus SmallBoxBottom" style="background-image:url(<?php echo $template_path; ?>/images/global/general/box-bottom.gif);"></div>
</div>

<div-- id='Menu'>
<div id='MenuTop' style='background-image:url(<?php echo $template_path; ?>/images/general/box-top.gif);'></div>

<?php
$menus = get_template_menus();

foreach($config['menu_categories'] as $id => $cat) {
	if(!isset($menus[$id]) || ($id == MENU_CATEGORY_SHOP && !$config['gifts_system'])) {
		continue;
	}
	?>
<div id='<?php echo $cat['id']; ?>' class='menuitem'>
	<span onClick="MenuItemAction('<?php echo $cat['id']; ?>')">
		<div class='MenuButton' style='background-image:url(<?php echo $template_path; ?>/images/menu/button-background.gif);'>
			<div onMouseOver='MouseOverMenuItem(this);' onMouseOut='MouseOutMenuItem(this);'><div class='Button' style='background-image:url(<?php echo $template_path; ?>/images/menu/button-background-over.gif);'></div>
				<span id='<?php echo $cat['id']; ?>_Lights' class='Lights'>
					<div class='light_lu' style='background-image:url(<?php echo $template_path; ?>/images/menu/green-light.gif);'></div>
					<div class='light_ld' style='background-image:url(<?php echo $template_path; ?>/images/menu/green-light.gif);'></div>
					<div class='light_ru' style='background-image:url(<?php echo $template_path; ?>/images/menu/green-light.gif);'></div>
				</span>
				<div id='<?php echo $cat['id']; ?>_Icon' class='Icon' style='background-image:url(<?php echo $template_path; ?>/images/menu/icon-<?php echo $cat['id']; ?>.gif);'></div>
				<div id='<?php echo $cat['id']; ?>_Label' class='Label' style='background-image:url(<?php echo $template_path; ?>/images/menu/label-<?php echo $cat['id']; ?>.gif);'></div>
				<div id='<?php echo $cat['id']; ?>_Extend' class='Extend' style='background-image:url(<?php echo $template_path; ?>/images/general/plus.gif);'></div>
			</div>
		</div>
	</span>
	<div id='<?php echo $cat['id']; ?>_Submenu' class='Submenu'>
	<?php
		$default_menu_color = "ffffff";

		foreach($menus[$id] as $category => $menu) {
			$link_color = '#' . (strlen($menu['color']) == 0 ? $default_menu_color : $menu['color']);
			?>
			<a href='<?php echo $menu['link_full']; ?>'<?php echo $menu['blank'] ? ' target="_blank"' : ''?>>
				<div id='submenu_<?php echo str_replace('/', '', $menu['link']); ?>' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)' style="color: <?php echo $link_color; ?>;">
					<div class='LeftChain' style='background-image:url(<?php echo $template_path; ?>/images/general/chain.gif);'></div>
					<div id='ActiveSubmenuItemIcon_<?php echo str_replace('/', '', $menu['link']); ?>' class='ActiveSubmenuItemIcon' style='background-image:url(<?php echo $template_path; ?>/images/menu/icon-activesubmenu.gif);'></div>
					<div class='SubmenuitemLabel' style="color: <?php echo $link_color; ?>;"><?php echo $menu['name']; ?></div>
					<div class='RightChain' style='background-image:url(<?php echo $template_path; ?>/images/general/chain.gif);'></div>
				</div>
			</a>
			<?php
		}
	?>
	</div>
	<?php
	if($id == MENU_CATEGORY_SHOP || (!$config['gifts_system'] && $id == MENU_CATEGORY_SHOP - 1)) {
	?>
		<div id='MenuBottom' style='background-image:url(<?php echo $template_path; ?>/images/general/box-bottom.gif);'></div>
	<?php
	}
	?>
</div>
	<?php
	}
	?>
		<script type="text/javascript">
            InitializePage();
        </script>
        </div>



        <div id="ContentColumn">



          <div class="Content">

<?php if($config['status_bar'] == true){ ?>
<div class="Box">
	<div class="Corner-tl" style="background-image:url(<?php echo $template_path; ?>/images/global/content/corner-tl.gif);"></div>
	<div class="Corner-tr" style="background-image:url(<?php echo $template_path; ?>/images/global/content/corner-tr.gif);"></div>
	<div class="Border_1" style="background-image:url(<?php echo $template_path; ?>/images/global/content/border-1.gif);"></div>
	<div class="BorderTitleText" style="background-image:url(<?php echo $template_path; ?>/images/global/content/newsheadline_background.gif); height: 28px;">
		<div class="InfoBar">
<?php if(isset($config['discord_link']) && !empty($config['discord_link'])){ ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-discord.png">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="<?php echo $config['discord_link']; ?>" target="new"><span class="InfoBarSmallElement">Join Discord</span></a>
				</span>
<?php } ?>
<?php if(isset($config['whatsapp_link']) && !empty($config['whatsapp_link'])){ ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-whatsapp.png" width="16">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="https://wa.me/<?php echo $config['whatsapp_link']; ?>" target="new"><span class="InfoBarSmallElement">Whatsapp</span></a>
				</span>
<?php } ?>
<?php if(isset($config['instagram_link']) && !empty($config['instagram_link'])){ ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-instagram.png" width="16">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="https://www.instagram.com/<?php echo $config['instagram_link']; ?>" target="new"><span class="InfoBarSmallElement">Instagram</span></a>
				</span>
<?php } ?>
<?php if(isset($config['facebook_link']) && !empty($config['facebook_link'])){ ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-facebook.png" width="16">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="https://www.facebook.com/<?php echo $config['facebook_link']; ?>" target="new"><span class="InfoBarSmallElement">Facebook</span></a>
				</span>
<?php } ?>
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-download.png">
				<span class="InfoBarNumbers">
					<a class="InfoBarLinks" href="?subtopic=downloadclient"><span class="InfoBarSmallElement">Download</span></a>
				</span>
				<span style="float: right; margin-top: -2px;">
				<img class="InfoBarBigLogo" src="<?php echo $template_path; ?>/images/global/header/icon-players-online.png">
				<span class="InfoBarNumbers">
					<span class="InfoBarSmallElement">
						<a class="InfoBarLinks" href="?online">
<?php
if($status['online']){
	echo '' . $status['players'] . ' Players Online';
} else {
	echo 'Server Offline';
}
?>
						</a>
					</span>
				</span>
<?php if($config['collapse_status'] == true){ ?>
<a data-bs-toggle="collapse" href="#statusbar" role="button" aria-expanded="false" aria-controls="statusbar">
<img src="<?php echo $template_path; ?>/images/global/content/top-to-back.gif" class="InfoBarBigLogo">
</a>
<?php } ?>
</span>

		</div>
	</div>
	<!-- COLLAPSE STATUS BAR -->
<?php if($config['collapse_status'] == true){ ?>
<div class="collapse" id="statusbar" style="background-color: #d4c0a1;">
<table class="Table3" cellpadding="0" cellspacing="0" style="width: 100%;">
<tbody><tr>
<td>
<div class="InnerTableContainer" style="display: flex; flex-wrap: wrap; font-family: Verdana;">
<?php if($config['carousel_status'] == true){ ?>
<table style="width:100%;"><tbody><tr><td>
<div class="TableContentContainer">
<table class="TableContent" width="100%" style="border:1px solid #faf0d7; font-size: 12px;">
<tbody>
<tr bgcolor="#F1E0C6">
<td>
<div class="container">
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="carousel">
  <div class="carousel-inner">
<?php
$count = 1;
foreach($config['carousel'] as $carousel){
if($count == 1){
?>
<div class="carousel-item active">
	<img src="<?php echo $template_path ?>/images/carousel/<?php echo $carousel ?>" style="width: 100%;">
</div>
<?php
}elseif($count > 1){
?>
<div class="carousel-item">
	<img src="<?php echo $template_path ?>/images/carousel/<?php echo $carousel ?>" style="width: 100%;">
</div>
<?php
}
$count++;
}
?>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
  </button>
</div>
</div>
</td>
</tr>
</tbody></table>
</div></td></tr>
</tbody></table>
<?php } ?>
</div>
</td>
</tr>
</tbody></table>
</div>
<!-- COLLAPSE STATUS BAR -->
<?php } ?>
	<div class="Border_1" style="background-image:url(<?php echo $template_path; ?>/images/global/content/border-1.gif);"></div>
	<div class="CornerWrapper-b">
		<div class="Corner-bl" style="background-image:url(<?php echo $template_path; ?>/images/global/content/corner-bl.gif);"></div>
	</div>
	<div class="CornerWrapper-b">
		<div class="Corner-br" style="background-image:url(<?php echo $template_path; ?>/images/global/content/corner-br.gif);"></div>
	</div>
</div>
<?php } ?>

<div id="ContentHelper">
<?php echo tickers(); ?>
  <div id="<?php echo PAGE; ?>" class="Box">
    <div class="Corner-tl" style="background-image:url(<?php echo $template_path; ?>/images/content/corner-tl.gif);"></div>
    <div class="Corner-tr" style="background-image:url(<?php echo $template_path; ?>/images/content/corner-tr.gif);"></div>
    <div class="Border_1" style="background-image:url(<?php echo $template_path; ?>/images/content/border-1.gif);"></div>
    <div class="BorderTitleText" style="background-image:url(<?php echo $template_path; ?>/images/content/title-background-green.gif);"></div>
<?php
	$headline = $template_path.'/images/header/headline-' . PAGE . '.gif';
	if(!file_exists($headline))
		$headline = $template_path . '/headline.php?t=' . ucfirst($title);
?>
	<img class="Title" src="<?php echo $headline; ?>" alt="Contentbox headline" />
    <div class="Border_2">
      <div class="Border_3">
<?php $hooks->trigger(HOOK_TIBIACOM_BORDER_3); ?>
		<div class="BoxContent" style="background-image:url(<?php echo $template_path; ?>/images/content/scroll.gif);">
<?php echo template_place_holder('center_top') . $content; ?>
		</div>
      </div>
    </div>
    <div class="Border_1" style="background-image:url(<?php echo $template_path; ?>/images/content/border-1.gif);"></div>

    <div class="CornerWrapper-b"><div class="Corner-bl" style="background-image:url(<?php echo $template_path; ?>/images/content/corner-bl.gif);"></div></div>
    <div class="CornerWrapper-b"><div class="Corner-br" style="background-image:url(<?php echo $template_path; ?>/images/content/corner-br.gif);"></div></div>
  </div>
           </div>
          </div>
          <div id="Footer"><?php echo template_footer(); ?><br/>Layout by CipSoft GmbH.</div>
        </div>

        <div id="ThemeboxesColumn">
<?PHP
$monsterquery = $SQL->query("SELECT `boostname` FROM `boosted_creature`")->fetch();
$monstername = $monsterquery["boostname"];
?>
          <div id="RightArtwork">
			<img id="Monster" src="images/creatures/<?php echo $monsterquery["boostname"]; ?>.gif" onClick="window.location = '?subtopic=creatures&creature=<?php echo $monsterquery["boostname"]; ?>';" alt="Monster of the Day" title="Today's boosted creature: <?PHP echo ucwords(strtolower(trim($monstername))); ?>">
            <img id="PedestalAndOnline" src="<?php echo $template_path; ?>/images/header/pedestal.gif" alt="Monster Pedestal and Players Online Box"/>
        </div>

        <div id="Themeboxes">
			<?php
			$twig_loader->prependPath(__DIR__ . '/boxes/templates');

			foreach($config['boxes'] as $box) {
				/** @var string $template_name */
				$file = TEMPLATES . $template_name . '/boxes/' . $box . '.php';
				if(file_exists($file)) {
					include($file); ?>
				<?php
				}
			}
	if($config['template_allow_change'])
		 echo '<span style="color: white">Template:</span><br/>' . template_form();
 ?>
        </div>
      </div>
     </div>
    </div>
  </div>
	<?php echo template_place_holder('body_end'); ?>

<style>
.scrollToTop {
  width: 70px;
  height: 70px;
  padding: 10px;
  text-align: center;
  font-weight: bold;
  color: #444;
  text-decoration: none;
  position: fixed;
  bottom: 10px;
  right: 10px;
  display: none;
  z-index: 50000;
}
.scrollToTop:hover {
  text-decoration: none;
  cursor: pointer;
}
</style>
<script>
	$(document).ready(function(){
		//Check to see if the window is top if not then display button
		$(window).scroll(function(){
			if ($(this).scrollTop() > 100) {
				$('.scrollToTop').fadeIn();
			} else {
				$('.scrollToTop').fadeOut();
			}
		});
		//Click event to scroll to top
		$('.scrollToTop').click(function(){
			$('html, body').animate({scrollTop : 0},800);
			return false;
		});
	});
</script>
<script>
	$(document).ready(function(){
		//Check to see if the window is top if not then display button
		$(window).scroll(function(){
			if ($(this).scrollTop() > 100) {
				$('.TopButton').fadeIn();
			}
		});
		//Click event to scroll to top
		$('.TopButton').click(function(){
			$('html, body').animate({scrollTop : 0},800);
			return false;
		});
	});
</script>
<div class="scrollToTop" style="background: url(<?php echo $template_path; ?>/images/global/content/top.png) no-repeat 0 0;"></div>

<script src="<?php echo $template_path; ?>/js/generic.js"></script>
<div id="HelperDivContainer" style="background-image: url(<?php echo $template_path; ?>/images/global/content/scroll.gif);">
	<div class="HelperDivArrow" style="background-image: url(<?php echo $template_path; ?>/images/global/content/helper-div-arrow.png);"></div>
	<div id="HelperDivHeadline"></div>
	<div id="HelperDivText"></div>
	<center><img class="Ornament" src="<?php echo $template_path; ?>/images/global/content/ornament.gif"></center><br>
</div>



</body>
</html>
<?php
function logo_monster() {
	global $config;
	return str_replace(" ", "", trim(strtolower($config['logo_monster'])));
}
?>

 

 

 

A dúvida:

Como posso fazer para que não mostre criatura nenhuma (apenas o pedestal vazio), SEMPRE e ENQUANTO o server estiver off? Gostaria que mostrasse foto da criatura do dia apenas se o server estiver online.

 

 

 

 

 

 

Problema 5: Na verdade é uma dúvida.

 

Estou utilizando a base canary 13x. Esta possui sistema de boss boostado na database também. Gostaria de saber como posso adicionar boss boostado do dia ao lado da criatura boostada, assim como em muitos sites por aí. Alguém poderia me indicar um tutorial com MyAAC ou me ensinar a inserir isso no MyAAC?

 

 

 

 

 

Agradeço desde já a toda e qualquer ajuda. 

Você pode usar este MyAAC, pois já está configurado e não apresenta esses erros. A única coisa que você precisa fazer é adicionar imagens de addons e items. O problema do count_down provavelmente está relacionado à área escolhida durante a instalação, por exemplo, South_america (Brasil, São Paulo).

Além disso, ao utilizar este repositório do TibiaKing, você também terá um suporte mais eficiente, uma vez que é o repositório oficial do TibiaKing. Fique à vontade para aproveitar todos os recursos disponíveis e contar com a equipe do TibiaKing para qualquer suporte adicional necessário. Esperamos que essa versão do MyAAC seja útil para você. Você pode encontrá-la aqui:
https://github.com/thetibiaking/ttk-my-aac.

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites
3 horas atrás, Underewar disse:

Você pode usar este MyAAC, pois já está configurado e não apresenta esses erros. A única coisa que você precisa fazer é adicionar imagens de addons e items. O problema do count_down provavelmente está relacionado à área escolhida durante a instalação, por exemplo, South_america (Brasil, São Paulo).

Além disso, ao utilizar este repositório do TibiaKing, você também terá um suporte mais eficiente, uma vez que é o repositório oficial do TibiaKing. Fique à vontade para aproveitar todos os recursos disponíveis e contar com a equipe do TibiaKing para qualquer suporte adicional necessário. Esperamos que essa versão do MyAAC seja útil para você. Você pode encontrá-la aqui:
https://github.com/thetibiaking/ttk-my-aac.

 

Vou testar ele, assim que possível retorno para dar meu feedback e possivelmente marcar sua resposta como a solução do tópico. Mas de qualquer forma, muito obrigado desde já.

 

[edited]

Testei aqui, o site ttk-my-aac está dando o mesmo problema ao tentar logar com email maior que 30 caracteres, não tem como digitar o email completo, sendo assim não da pra logar a acc;

 

Mesmo erro ao testar recuperar conta em Account Lost

 

Server Save themebox gostaria de saber configurar, poderia me ensinar? Configurei horário do server save no config.php igual o config.lua do server (00:00:00). Liguei o server e não aconteceu nada, então mudei a data manualmente no arquivo da themebox ai começou a marcar.. essa themebox não funciona de forma automática? Ou eu que não estou sabendo configurar? Poderia me ensinar?

 

Boss está mostrando normalmente, problema/dúvida 5 resolvido em partes.

Em relação a criatura boostada e boss boostado, teria como alterar o script para não mostrar nenhuma criatura ou boss, enquanto o server estiver offline? Está funcionando normalmente agora, mas mostra mesmo com server off, resolveu meu problema 4.

 

Editado por DiigooMix
detalhes (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Moderador
4 horas atrás, DiigooMix disse:

 

Vou testar ele, assim que possível retorno para dar meu feedback e possivelmente marcar sua resposta como a solução do tópico. Mas de qualquer forma, muito obrigado desde já.

 

[edited]

Testei aqui, o site ttk-my-aac está dando o mesmo problema ao tentar logar com email maior que 30 caracteres, não tem como digitar o email completo, sendo assim não da pra logar a acc;

 

Mesmo erro ao testar recuperar conta em Account Lost

 

Server Save themebox gostaria de saber configurar, poderia me ensinar? Configurei horário do server save no config.php igual o config.lua do server (00:00:00). Liguei o server e não aconteceu nada, então mudei a data manualmente no arquivo da themebox ai começou a marcar.. essa themebox não funciona de forma automática? Ou eu que não estou sabendo configurar? Poderia me ensinar?

 

Boss está mostrando normalmente, problema/dúvida 5 resolvido em partes.

Em relação a criatura boostada e boss boostado, teria como alterar o script para não mostrar nenhuma criatura ou boss, enquanto o server estiver offline? Está funcionando normalmente agora, mas mostra mesmo com server off, resolveu meu problema 4.

 

Beleza eu vou testar e levar esses problemas para o github!
Em breve vou estar criando um tópico para todos conseguirem se orientar ao fazer os pedidos no github.

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por braianlomas
      Como faço para corrigir esse problema para meu cliente, eu uso o tfs 0.3.6  
      Quero resolver esse problema que tenho no meu cliente, como e onde posso resolver?  
      Eu uso o tfs 0.3.6, não tenho as fontes do cliente, se você puder me dar eu vou amá-las para sempre  
       

       
    • Por A.Mokk
      Ola pessoal, estou tentando compilar o TFS 1.5 Downgrade para 8.60 atraves do MSVC 2022, ao tentar compilar da o seguinte erro:
       
       
      Fiz o download do MSVC, GitDash, TFS-SDK-3.2, e de varios boosts que tentei, ao fazer o seguinte procedimento no GitDash:
       
      Ao chegar em ./bootstrap-vcpkg.bat o GitDash nao consegue realizar o procedimento corretamente, alguem poderia me ajudar ?

      Tentei de diversas formas mas o mesmo erro sempre persiste, atualmente meu servidor utiliza TFS 0.4, consigo compilar sem nenhum problema no MSVC 2010, porem, as limitações do TFS 0.4 estão me fazendo precisar atualizar, se alguem souber como corrigir esses erros eu agradeço !

      Tutoriais utilizados :
      Compiling on Windows (vcpkg) · otland/forgottenserver Wiki · GitHub
      Compiling on Windows · otland/forgottenserver Wiki · GitHub
      Compilando TFS 1.3 com vídeo-aula - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
      Compilar TFS 1.3 Vcpkg - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
       
      O que acontece no Powershell:
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary 2.3.6
      Qual o motivo deste tópico? 
      Queria fazer com que os players não pudessem mexer no aleta sio, pois, agora os mesmos estão conseguindo mexer nos itens
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      canary para o cliente 13.16
      Qual o motivo deste tópico? 
      Não consigo encontrar onde ajusta
      to com o problema no 13.16  o exausted, por exemplo os kinas era pra combar exori, erori gran e exori min, porém não ta indo ta dando exausted o char ta soltando magia ou runa e não consegue usar as potions
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por Andersontatuador
      Olá galera da TK, me chamo Anderson estou procurando alguém profissional em otservs e site.
      Já tenho um servidor o site e o cliente preciso só de uma pessoal competente, que esteja empenhado a trabalhar,
      não quero nada de graça, pois nessa onda fui mais roubado do quer eu pagar um profissional.
      caso alguém se interesse entrar em contato comigo através do whatsapp
      82 9 9304-9462
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo