mirror of
https://github.com/slawkens/myaac.git
synced 2025-09-14 20:43:34 +02:00
Compare commits
37 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
933d4e1d6f | ||
![]() |
1d08833726 | ||
![]() |
7cfca55e3c | ||
![]() |
7e13b62b8f | ||
![]() |
5ccfcd541e | ||
![]() |
ba4d2a9c48 | ||
![]() |
7a61f613ec | ||
![]() |
073d9da0bc | ||
![]() |
e081a67589 | ||
![]() |
37a27b8065 | ||
![]() |
d34f7eb2fc | ||
![]() |
f6c080cb5c | ||
![]() |
a983fd03b1 | ||
![]() |
5b651886a5 | ||
![]() |
6484ab75d9 | ||
![]() |
becad18465 | ||
![]() |
ec7e5a8838 | ||
![]() |
300c1b4ebc | ||
![]() |
4f0dd89eb9 | ||
![]() |
79f7c3dbd4 | ||
![]() |
f24fc75b12 | ||
![]() |
4fcc71e127 | ||
![]() |
403b4aa89b | ||
![]() |
613bcf379b | ||
![]() |
8f2cc2ca38 | ||
![]() |
cdae11226d | ||
![]() |
79fd97ad78 | ||
![]() |
b477d4c821 | ||
![]() |
289f82ad23 | ||
![]() |
92569b7965 | ||
![]() |
c03b041f40 | ||
![]() |
2ac8ed7411 | ||
![]() |
3280b3b9df | ||
![]() |
05c37b94bb | ||
![]() |
a91e7226dc | ||
![]() |
a39600efe2 | ||
![]() |
4fd5922784 |
16
.github/workflows/phplint.yml
vendored
Normal file
16
.github/workflows/phplint.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
name: PHP Linting
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [master]
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
phplint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: overtrue/phplint@7.4
|
||||||
|
with:
|
||||||
|
path: .
|
||||||
|
options: --exclude="system/libs/polyfill-mbstring/bootstrap80.php"
|
33
CHANGELOG.md
33
CHANGELOG.md
@@ -1,5 +1,38 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [0.8.10 - 18.05.2023]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* PHP 7.2.5 is now required, cause of Twig 2.x
|
||||||
|
* allow pages to be placed in templates folder, under pages/ subfolder
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Twig error with global variable on create account
|
||||||
|
* links/redirects from facebook, etc. like ?fbclid=x
|
||||||
|
* do not allow to continue install when there is no server database imported
|
||||||
|
* cannot go forward when config.local.php cannot be saved
|
||||||
|
* when server uses another items serializer
|
||||||
|
* small bug on install - please fill all input
|
||||||
|
|
||||||
|
## [0.8.9 - 16.03.2023]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
* You can now disable server status checking for testing purposes, useful for local testing when there is no server running
|
||||||
|
* with this, the page won't need 2 seconds to load
|
||||||
|
* set status_enabled to false in config.php
|
||||||
|
* new buttons code for tibiacom template, can create button with any text
|
||||||
|
* patched some small changes from develop branch
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* add .git to denied folders in nginx-sample.conf
|
||||||
|
* plugins folder is now accessible from outside
|
||||||
|
* add plugins folder to twig search paths
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* player save on tfs 1.5 with new ipv6
|
||||||
|
* more php 8.x compatibility
|
||||||
|
* rel path for exception message, causing message to be not in red background
|
||||||
|
|
||||||
## [0.8.8 - 18.02.2023]
|
## [0.8.8 - 18.02.2023]
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
14
CONTRIBUTORS.txt
Normal file
14
CONTRIBUTORS.txt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# automatically exported using this script:
|
||||||
|
# git log --all --format='%cN <%cE>' | sort -u > contributors
|
||||||
|
# in no particular order
|
||||||
|
# cleaned for readability
|
||||||
|
|
||||||
|
Evil Puncker <EPuncker@users.noreply.github.com>
|
||||||
|
Fernando Matos <fernando@pixele.com.br>
|
||||||
|
Lee <42119604+Leesneaks@users.noreply.github.com>
|
||||||
|
caio <caio.zucoli@gmail.com>
|
||||||
|
slawkens <slawkens@gmail.com>
|
||||||
|
tobi132 <52947952+tobi132@users.noreply.github.com>
|
||||||
|
vankk <nwtr.otland@hotmail.com>
|
||||||
|
whiteblXK <krzys16001@gmail.com>
|
||||||
|
xitobuh <jonas.hockert92@gmail.com>
|
3
CREDITS
3
CREDITS
@@ -1,2 +1,3 @@
|
|||||||
* Gesior.pl (2007 - 2008)
|
* Gesior.pl (2007 - 2008)
|
||||||
* Slawkens (2009 - 2020)
|
* Slawkens (2009 - 2023)
|
||||||
|
* Contributors listed in CONTRIBUTORS.txt
|
||||||
|
@@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
MyAAC is a free and open-source Automatic Account Creator (AAC) written in PHP. It is a fork of the [Gesior](https://github.com/gesior/Gesior2012) project. It supports only MySQL databases.
|
MyAAC is a free and open-source Automatic Account Creator (AAC) written in PHP. It is a fork of the [Gesior](https://github.com/gesior/Gesior2012) project. It supports only MySQL databases.
|
||||||
|
|
||||||
|
Official website: https://my-aac.org
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
|
|
||||||
- PHP 5.6 or later
|
- PHP 5.6 or later
|
||||||
@@ -57,12 +59,13 @@ That means, we use:
|
|||||||
|
|
||||||
- Some compatibility issues with some exotical distibutions.
|
- Some compatibility issues with some exotical distibutions.
|
||||||
|
|
||||||
|
|
||||||
### Contributing
|
### Contributing
|
||||||
|
|
||||||
Contributions are more than welcome.
|
Contributions are more than welcome.
|
||||||
|
|
||||||
Pull requests should be made to the Dev branch as that is the working branch, master is for release code.
|
Pull requests should be made to the *develop* branch as that is the working branch, master is for release code.
|
||||||
|
|
||||||
|
Bug fixes to current release should be done to master branch.
|
||||||
|
|
||||||
Look: [Contributing](https://github.com/otsoft/myaac/wiki/Contributing) in our wiki.
|
Look: [Contributing](https://github.com/otsoft/myaac/wiki/Contributing) in our wiki.
|
||||||
|
|
||||||
|
@@ -2,6 +2,9 @@
|
|||||||
// few things we'll need
|
// few things we'll need
|
||||||
require '../common.php';
|
require '../common.php';
|
||||||
|
|
||||||
|
define('ADMIN_PANEL', true);
|
||||||
|
define('MYAAC_ADMIN', true);
|
||||||
|
|
||||||
if(file_exists(BASE . 'config.local.php')) {
|
if(file_exists(BASE . 'config.local.php')) {
|
||||||
require_once BASE . 'config.local.php';
|
require_once BASE . 'config.local.php';
|
||||||
}
|
}
|
||||||
@@ -12,8 +15,6 @@ if(file_exists(BASE . 'install') && (!isset($config['installed']) || !$config['i
|
|||||||
throw new RuntimeException('Setup detected that <b>install/</b> directory exists. Please visit <a href="' . BASE_URL . 'install">this</a> url to start MyAAC Installation.<br/>Delete <b>install/</b> directory if you already installed MyAAC.<br/>Remember to REFRESH this page when you\'re done!');
|
throw new RuntimeException('Setup detected that <b>install/</b> directory exists. Please visit <a href="' . BASE_URL . 'install">this</a> url to start MyAAC Installation.<br/>Delete <b>install/</b> directory if you already installed MyAAC.<br/>Remember to REFRESH this page when you\'re done!');
|
||||||
}
|
}
|
||||||
|
|
||||||
define('ADMIN_PANEL', true);
|
|
||||||
|
|
||||||
$content = '';
|
$content = '';
|
||||||
|
|
||||||
// validate page
|
// validate page
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
define('MYAAC_ADMIN', true);
|
||||||
|
|
||||||
require '../../common.php';
|
require '../../common.php';
|
||||||
require SYSTEM . 'functions.php';
|
require SYSTEM . 'functions.php';
|
||||||
require SYSTEM . 'init.php';
|
require SYSTEM . 'init.php';
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
define('MYAAC_ADMIN', true);
|
||||||
|
|
||||||
require '../../common.php';
|
require '../../common.php';
|
||||||
require SYSTEM . 'init.php';
|
require SYSTEM . 'init.php';
|
||||||
require SYSTEM . 'functions.php';
|
require SYSTEM . 'functions.php';
|
||||||
|
@@ -23,10 +23,10 @@
|
|||||||
* @copyright 2019 MyAAC
|
* @copyright 2019 MyAAC
|
||||||
* @link https://my-aac.org
|
* @link https://my-aac.org
|
||||||
*/
|
*/
|
||||||
if (version_compare(phpversion(), '5.6', '<')) die('PHP version 5.6 or higher is required.');
|
if (version_compare(phpversion(), '7.2.5', '<')) die('PHP version 7.2.5 or higher is required.');
|
||||||
|
|
||||||
define('MYAAC', true);
|
define('MYAAC', true);
|
||||||
define('MYAAC_VERSION', '0.8.8');
|
define('MYAAC_VERSION', '0.8.10');
|
||||||
define('DATABASE_VERSION', 33);
|
define('DATABASE_VERSION', 33);
|
||||||
define('TABLE_PREFIX', 'myaac_');
|
define('TABLE_PREFIX', 'myaac_');
|
||||||
define('START_TIME', microtime(true));
|
define('START_TIME', microtime(true));
|
||||||
|
@@ -267,6 +267,7 @@ $config = array(
|
|||||||
'last_kills_limit' => 50, // max. number of deaths shown on the last kills page
|
'last_kills_limit' => 50, // max. number of deaths shown on the last kills page
|
||||||
|
|
||||||
// status, took automatically from config file if empty
|
// status, took automatically from config file if empty
|
||||||
|
'status_enabled' => true, // you can disable status checking by settings this to "false"
|
||||||
'status_ip' => '',
|
'status_ip' => '',
|
||||||
'status_port' => '',
|
'status_port' => '',
|
||||||
'status_timeout' => 2, // how long to wait for the initial response from the server (default: 2 seconds)
|
'status_timeout' => 2, // how long to wait for the initial response from the server (default: 2 seconds)
|
||||||
|
34
index.php
34
index.php
@@ -74,6 +74,14 @@ if((!isset($config['installed']) || !$config['installed']) && file_exists(BASE .
|
|||||||
throw new RuntimeException('Setup detected that <b>install/</b> directory exists. Please visit <a href="' . BASE_URL . 'install">this</a> url to start MyAAC Installation.<br/>Delete <b>install/</b> directory if you already installed MyAAC.<br/>Remember to REFRESH this page when you\'re done!');
|
throw new RuntimeException('Setup detected that <b>install/</b> directory exists. Please visit <a href="' . BASE_URL . 'install">this</a> url to start MyAAC Installation.<br/>Delete <b>install/</b> directory if you already installed MyAAC.<br/>Remember to REFRESH this page when you\'re done!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require_once SYSTEM . 'init.php';
|
||||||
|
require_once SYSTEM . 'template.php';
|
||||||
|
|
||||||
|
// verify myaac tables exists in database
|
||||||
|
if(!$db->hasTable('myaac_account_actions')) {
|
||||||
|
throw new RuntimeException('Seems that the table <strong>myaac_account_actions</strong> of MyAAC doesn\'t exist in the database. This is a fatal error. You can try to reinstall MyAAC by visiting <a href="' . BASE_URL . 'install">this</a> url.');
|
||||||
|
}
|
||||||
|
|
||||||
$found = false;
|
$found = false;
|
||||||
if(empty($uri) || isset($_REQUEST['template'])) {
|
if(empty($uri) || isset($_REQUEST['template'])) {
|
||||||
$_REQUEST['p'] = 'news';
|
$_REQUEST['p'] = 'news';
|
||||||
@@ -81,7 +89,11 @@ if(empty($uri) || isset($_REQUEST['template'])) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$tmp = strtolower($uri);
|
$tmp = strtolower($uri);
|
||||||
if(!preg_match('/[^A-z0-9_\-]/', $uri) && file_exists(SYSTEM . 'pages/' . $tmp . '.php')) {
|
if (!preg_match('/[^A-z0-9_\-]/', $uri) && file_exists(TEMPLATES . $template_name . '/pages/' . $tmp . '.php')) {
|
||||||
|
$_REQUEST['p'] = $uri;
|
||||||
|
$found = true;
|
||||||
|
}
|
||||||
|
else if (!preg_match('/[^A-z0-9_\-]/', $uri) && file_exists(SYSTEM . 'pages/' . $tmp . '.php')) {
|
||||||
$_REQUEST['p'] = $uri;
|
$_REQUEST['p'] = $uri;
|
||||||
$found = true;
|
$found = true;
|
||||||
}
|
}
|
||||||
@@ -133,13 +145,13 @@ else {
|
|||||||
'/^houses\/view\/?$/' => array('subtopic' => 'houses', 'page' => 'view')
|
'/^houses\/view\/?$/' => array('subtopic' => 'houses', 'page' => 'view')
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach($rules as $rule => $redirect) {
|
foreach ($rules as $rule => $redirect) {
|
||||||
if (preg_match($rule, $uri)) {
|
if (preg_match($rule, $uri)) {
|
||||||
$tmp = explode('/', $uri);
|
$tmp = explode('/', $uri);
|
||||||
/* @var $redirect array */
|
/* @var $redirect array */
|
||||||
foreach($redirect as $key => $value) {
|
foreach ($redirect as $key => $value) {
|
||||||
|
|
||||||
if(strpos($value, '$') !== false) {
|
if (strpos($value, '$') !== false) {
|
||||||
$value = str_replace('$' . $value[1], $tmp[$value[1]], $value);
|
$value = str_replace('$' . $value[1], $tmp[$value[1]], $value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,6 +166,12 @@ else {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handle ?fbclid=x, etc. (show news page)
|
||||||
|
if (!$found && count($_GET) > 0 && !isset($_REQUEST['subtopic']) && !isset($_REQUEST['p'])) {
|
||||||
|
$_REQUEST['p'] = $_REQUEST['subtopic'] = 'news';
|
||||||
|
$found = true;
|
||||||
|
}
|
||||||
|
|
||||||
// define page visited, so it can be used within events system
|
// define page visited, so it can be used within events system
|
||||||
$page = isset($_REQUEST['subtopic']) ? $_REQUEST['subtopic'] : (isset($_REQUEST['p']) ? $_REQUEST['p'] : '');
|
$page = isset($_REQUEST['subtopic']) ? $_REQUEST['subtopic'] : (isset($_REQUEST['p']) ? $_REQUEST['p'] : '');
|
||||||
if(empty($page) || !preg_match('/^[A-z0-9\_\-]+$/', $page)) {
|
if(empty($page) || !preg_match('/^[A-z0-9\_\-]+$/', $page)) {
|
||||||
@@ -174,18 +192,10 @@ define('PAGE', $page);
|
|||||||
|
|
||||||
$template_place_holders = array();
|
$template_place_holders = array();
|
||||||
|
|
||||||
require_once SYSTEM . 'init.php';
|
|
||||||
|
|
||||||
// verify myaac tables exists in database
|
|
||||||
if(!$db->hasTable('myaac_account_actions')) {
|
|
||||||
throw new RuntimeException('Seems that the table <strong>myaac_account_actions</strong> of MyAAC doesn\'t exist in the database. This is a fatal error. You can try to reinstall MyAAC by visiting <a href="' . BASE_URL . 'install">this</a> url.');
|
|
||||||
}
|
|
||||||
|
|
||||||
// event system
|
// event system
|
||||||
require_once SYSTEM . 'hooks.php';
|
require_once SYSTEM . 'hooks.php';
|
||||||
$hooks = new Hooks();
|
$hooks = new Hooks();
|
||||||
$hooks->load();
|
$hooks->load();
|
||||||
require_once SYSTEM . 'template.php';
|
|
||||||
require_once SYSTEM . 'login.php';
|
require_once SYSTEM . 'login.php';
|
||||||
require_once SYSTEM . 'status.php';
|
require_once SYSTEM . 'status.php';
|
||||||
|
|
||||||
|
@@ -2,10 +2,10 @@ We have detected that you don't have access to write to the system/cache directo
|
|||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.console {
|
.console {
|
||||||
font-family:Courier;
|
font-family: Courier,serif;
|
||||||
color: #CCCCCC;
|
color: #CCCCCC;
|
||||||
background: #000000;
|
background: #000000;
|
||||||
border: 3px double #CCCCCC;
|
border: 3px double #CCCCCC;
|
||||||
padding: 0px;
|
padding: 0;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
@@ -70,7 +70,7 @@ if($step == 'database') {
|
|||||||
|
|
||||||
$key = str_replace('var_', '', $key);
|
$key = str_replace('var_', '', $key);
|
||||||
|
|
||||||
if(in_array($key, array('account', 'password', 'email', 'player_name'))) {
|
if(in_array($key, array('account', 'account_id', 'password', 'email', 'player_name'))) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,14 +114,12 @@ if($step == 'database') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if($step == 'admin') {
|
else if($step == 'admin') {
|
||||||
$config_failed = true;
|
if(!file_exists(BASE . 'config.local.php') || !isset($config['installed']) || !$config['installed']) {
|
||||||
if(file_exists(BASE . 'config.local.php') && isset($config['installed']) && $config['installed'] && isset($_SESSION['saved'])) {
|
|
||||||
$config_failed = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($config_failed) {
|
|
||||||
$step = 'database';
|
$step = 'database';
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
$_SESSION['saved'] = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if($step == 'finish') {
|
else if($step == 'finish') {
|
||||||
$email = $_SESSION['var_email'];
|
$email = $_SESSION['var_email'];
|
||||||
|
@@ -57,16 +57,35 @@ if(!$error) {
|
|||||||
error($database_error);
|
error($database_error);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$twig->display('install.installer.html.twig', array(
|
if(!$db->hasTable('accounts')) {
|
||||||
'url' => 'tools/5-database.php',
|
$tmp = str_replace('$TABLE$', 'accounts', $locale['step_database_error_table']);
|
||||||
'message' => $locale['loading_spinner']
|
error($tmp);
|
||||||
));
|
$error = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!$db->hasTable('players')) {
|
||||||
|
$tmp = str_replace('$TABLE$', 'players', $locale['step_database_error_table']);
|
||||||
|
error($tmp);
|
||||||
|
$error = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!$db->hasTable('guilds')) {
|
||||||
|
$tmp = str_replace('$TABLE$', 'guilds', $locale['step_database_error_table']);
|
||||||
|
error($tmp);
|
||||||
|
$error = true;
|
||||||
|
}
|
||||||
|
|
||||||
if(!$error) {
|
if(!$error) {
|
||||||
|
$twig->display('install.installer.html.twig', array(
|
||||||
|
'url' => 'tools/5-database.php',
|
||||||
|
'message' => $locale['loading_spinner']
|
||||||
|
));
|
||||||
|
|
||||||
if(!Validator::email($_SESSION['var_mail_admin'])) {
|
if(!Validator::email($_SESSION['var_mail_admin'])) {
|
||||||
error($locale['step_config_mail_admin_error']);
|
error($locale['step_config_mail_admin_error']);
|
||||||
$error = true;
|
$error = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Validator::email($_SESSION['var_mail_address'])) {
|
if(!Validator::email($_SESSION['var_mail_address'])) {
|
||||||
error($locale['step_config_mail_address_error']);
|
error($locale['step_config_mail_address_error']);
|
||||||
$error = true;
|
$error = true;
|
||||||
@@ -82,6 +101,7 @@ if(!$error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($saved) {
|
if($saved) {
|
||||||
|
success($locale['step_database_config_saved']);
|
||||||
if(!$error) {
|
if(!$error) {
|
||||||
$_SESSION['saved'] = true;
|
$_SESSION['saved'] = true;
|
||||||
}
|
}
|
||||||
@@ -91,7 +111,7 @@ if(!$error) {
|
|||||||
unset($_SESSION['saved']);
|
unset($_SESSION['saved']);
|
||||||
|
|
||||||
$locale['step_database_error_file'] = str_replace('$FILE$', '<b>' . BASE . 'config.local.php</b>', $locale['step_database_error_file']);
|
$locale['step_database_error_file'] = str_replace('$FILE$', '<b>' . BASE . 'config.local.php</b>', $locale['step_database_error_file']);
|
||||||
warning($locale['step_database_error_file'] . '<br/>
|
error($locale['step_database_error_file'] . '<br/>
|
||||||
<textarea cols="70" rows="10">' . $content . '</textarea>');
|
<textarea cols="70" rows="10">' . $content . '</textarea>');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,6 +122,6 @@ if(!$error) {
|
|||||||
|
|
||||||
<form action="<?php echo BASE_URL; ?>install/" method="post">
|
<form action="<?php echo BASE_URL; ?>install/" method="post">
|
||||||
<input type="hidden" name="step" id="step" value="admin" />
|
<input type="hidden" name="step" id="step" value="admin" />
|
||||||
<?php echo next_buttons(true, $error ? false : true);
|
<?php echo next_buttons(true, !$error);
|
||||||
?>
|
?>
|
||||||
</form>
|
</form>
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
define('MYAAC_INSTALL', true);
|
||||||
|
|
||||||
require_once '../../common.php';
|
require_once '../../common.php';
|
||||||
|
|
||||||
require SYSTEM . 'functions.php';
|
require SYSTEM . 'functions.php';
|
||||||
@@ -21,24 +23,6 @@ if(!$error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$db->hasTable('accounts')) {
|
|
||||||
$locale['step_database_error_table'] = str_replace('$TABLE$', 'accounts', $locale['step_database_error_table']);
|
|
||||||
error($locale['step_database_error_table']);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$db->hasTable('players')) {
|
|
||||||
$locale['step_database_error_table'] = str_replace('$TABLE$', 'players', $locale['step_database_error_table']);
|
|
||||||
error($locale['step_database_error_table']);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$db->hasTable('guilds')) {
|
|
||||||
$locale['step_database_error_table'] = str_replace('$TABLE$', 'guilds', $locale['step_database_error_table']);
|
|
||||||
error($locale['step_database_error_table']);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($db->hasTable(TABLE_PREFIX . 'account_actions')) {
|
if($db->hasTable(TABLE_PREFIX . 'account_actions')) {
|
||||||
$locale['step_database_error_table_exist'] = str_replace('$TABLE$', TABLE_PREFIX . 'account_actions', $locale['step_database_error_table_exist']);
|
$locale['step_database_error_table_exist'] = str_replace('$TABLE$', TABLE_PREFIX . 'account_actions', $locale['step_database_error_table_exist']);
|
||||||
warning($locale['step_database_error_table_exist']);
|
warning($locale['step_database_error_table_exist']);
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
define('MYAAC_INSTALL', true);
|
||||||
|
|
||||||
require_once '../../common.php';
|
require_once '../../common.php';
|
||||||
|
|
||||||
require SYSTEM . 'functions.php';
|
require SYSTEM . 'functions.php';
|
||||||
|
@@ -3,16 +3,27 @@ server {
|
|||||||
root /home/otserv/www/public;
|
root /home/otserv/www/public;
|
||||||
index index.php;
|
index index.php;
|
||||||
server_name your-domain.com;
|
server_name your-domain.com;
|
||||||
|
|
||||||
|
# increase max file upload
|
||||||
|
client_max_body_size 10M;
|
||||||
|
|
||||||
|
# this is very important, be sure its in your nginx conf - it prevents access to logs etc.
|
||||||
location ~ /system {
|
location ~ /system {
|
||||||
deny all;
|
deny all;
|
||||||
return 404;
|
return 404;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# block .htaccess
|
||||||
location ~ /\.ht {
|
location ~ /\.ht {
|
||||||
deny all;
|
deny all;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# block git files and folders
|
||||||
|
location ~ /\.git {
|
||||||
|
return 404;
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
try_files $uri $uri/ /index.php;
|
try_files $uri $uri/ /index.php;
|
||||||
}
|
}
|
||||||
@@ -20,6 +31,7 @@ server {
|
|||||||
location ~ \.php$ {
|
location ~ \.php$ {
|
||||||
include snippets/fastcgi-php.conf;
|
include snippets/fastcgi-php.conf;
|
||||||
fastcgi_read_timeout 240;
|
fastcgi_read_timeout 240;
|
||||||
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
|
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
|
||||||
|
# for ubuntu 22.04+ it will be php8.1-fpm.-sock
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,3 @@
|
|||||||
<IfModule mod_autoindex.c>
|
<IfModule mod_autoindex.c>
|
||||||
Options -Indexes
|
Options -Indexes
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|
||||||
<IfVersion < 2.4>
|
|
||||||
order allow,deny
|
|
||||||
deny from all
|
|
||||||
</IfVersion>
|
|
||||||
<IfVersion >= 2.4>
|
|
||||||
Require all denied
|
|
||||||
</IfVersion>
|
|
||||||
|
@@ -31,9 +31,6 @@ if($config['gzip_output'] && isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($
|
|||||||
require_once SYSTEM . 'libs/cache.php';
|
require_once SYSTEM . 'libs/cache.php';
|
||||||
$cache = Cache::getInstance();
|
$cache = Cache::getInstance();
|
||||||
|
|
||||||
// twig
|
|
||||||
require_once SYSTEM . 'twig.php';
|
|
||||||
|
|
||||||
// trim values we receive
|
// trim values we receive
|
||||||
if(isset($_POST))
|
if(isset($_POST))
|
||||||
{
|
{
|
||||||
@@ -126,6 +123,9 @@ require_once SYSTEM . 'libs/pot/OTS.php';
|
|||||||
$ots = POT::getInstance();
|
$ots = POT::getInstance();
|
||||||
require_once SYSTEM . 'database.php';
|
require_once SYSTEM . 'database.php';
|
||||||
|
|
||||||
|
// twig
|
||||||
|
require_once SYSTEM . 'twig.php';
|
||||||
|
|
||||||
define('USE_ACCOUNT_NAME', $db->hasColumn('accounts', 'name'));
|
define('USE_ACCOUNT_NAME', $db->hasColumn('accounts', 'name'));
|
||||||
// load vocation names
|
// load vocation names
|
||||||
$tmp = '';
|
$tmp = '';
|
||||||
|
@@ -252,10 +252,12 @@ class CreateCharacter
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$loaded_items_to_copy = $db->query("SELECT * FROM player_items WHERE player_id = ".$char_to_copy->getId()."");
|
if ($db->hasTable('player_items') && $db->hasColumn('player_items', 'pid') && $db->hasColumn('player_items', 'sid') && $db->hasColumn('player_items', 'itemtype')) {
|
||||||
foreach($loaded_items_to_copy as $save_item) {
|
$loaded_items_to_copy = $db->query("SELECT * FROM player_items WHERE player_id = ".$char_to_copy->getId()."");
|
||||||
$blob = $db->quote($save_item['attributes']);
|
foreach($loaded_items_to_copy as $save_item) {
|
||||||
$db->query("INSERT INTO `player_items` (`player_id` ,`pid` ,`sid` ,`itemtype`, `count`, `attributes`) VALUES ('".$player->getId()."', '".$save_item['pid']."', '".$save_item['sid']."', '".$save_item['itemtype']."', '".$save_item['count']."', $blob);");
|
$blob = $db->quote($save_item['attributes']);
|
||||||
|
$db->query("INSERT INTO `player_items` (`player_id` ,`pid` ,`sid` ,`itemtype`, `count`, `attributes`) VALUES ('".$player->getId()."', '".$save_item['pid']."', '".$save_item['sid']."', '".$save_item['itemtype']."', '".$save_item['count']."', $blob);");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
global $twig;
|
global $twig;
|
||||||
|
@@ -61,8 +61,8 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
|
|
||||||
// check if monsters.xml exist
|
// check if monsters.xml exist
|
||||||
if(!@file_exists($this->monstersPath . 'monsters.xml')) {
|
if(!@file_exists($this->monstersPath . 'monsters.xml')) {
|
||||||
log_append('error.log', '[OTS_MonstersList.php] Fatal error: Cannot load monsters.xml. File does not exist. (' . $this->monstersPath . 'monsters.xml' . '). Error: ' . print_r(error_get_last(), true));
|
log_append('error.log', '[OTS_MonstersList.php] Fatal error: Cannot load monsters.xml. File does not exist. (' . $this->monstersPath . 'monsters.xml' . ').');
|
||||||
throw new Exception('Error: Cannot load monsters.xml. File not found. More info in system/logs/error.log file.');
|
throw new Exception('Error: Cannot load monsters.xml. File not found.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// loads monsters mapping file
|
// loads monsters mapping file
|
||||||
@@ -174,6 +174,7 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
* @return OTS_Monster Monster.
|
* @return OTS_Monster Monster.
|
||||||
* @throws DOMException On DOM operation error.
|
* @throws DOMException On DOM operation error.
|
||||||
*/
|
*/
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
public function current()
|
public function current()
|
||||||
{
|
{
|
||||||
return $this->getMonster( key($this->monsters) );
|
return $this->getMonster( key($this->monsters) );
|
||||||
@@ -187,7 +188,7 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
/**
|
/**
|
||||||
* Moves to next iterator monster.
|
* Moves to next iterator monster.
|
||||||
*/
|
*/
|
||||||
public function next()
|
public function next(): void
|
||||||
{
|
{
|
||||||
next($this->monsters);
|
next($this->monsters);
|
||||||
}
|
}
|
||||||
@@ -197,6 +198,7 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
*
|
*
|
||||||
* @return string Current position key.
|
* @return string Current position key.
|
||||||
*/
|
*/
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
public function key()
|
public function key()
|
||||||
{
|
{
|
||||||
return key($this->monsters);
|
return key($this->monsters);
|
||||||
@@ -207,7 +209,7 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
*
|
*
|
||||||
* @return bool If iterator has anything more.
|
* @return bool If iterator has anything more.
|
||||||
*/
|
*/
|
||||||
public function valid()
|
public function valid(): bool
|
||||||
{
|
{
|
||||||
return key($this->monsters) !== null;
|
return key($this->monsters) !== null;
|
||||||
}
|
}
|
||||||
@@ -215,7 +217,7 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
/**
|
/**
|
||||||
* Resets iterator index.
|
* Resets iterator index.
|
||||||
*/
|
*/
|
||||||
public function rewind()
|
public function rewind(): void
|
||||||
{
|
{
|
||||||
reset($this->monsters);
|
reset($this->monsters);
|
||||||
}
|
}
|
||||||
@@ -226,6 +228,7 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
* @param string $offset Array key.
|
* @param string $offset Array key.
|
||||||
* @return bool True if it's set.
|
* @return bool True if it's set.
|
||||||
*/
|
*/
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
public function offsetExists($offset)
|
public function offsetExists($offset)
|
||||||
{
|
{
|
||||||
return isset($this->monsters[$offset]);
|
return isset($this->monsters[$offset]);
|
||||||
@@ -239,6 +242,7 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
* @return OTS_Monster Monster instance.
|
* @return OTS_Monster Monster instance.
|
||||||
* @throws DOMException On DOM operation error.
|
* @throws DOMException On DOM operation error.
|
||||||
*/
|
*/
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
public function offsetGet($offset)
|
public function offsetGet($offset)
|
||||||
{
|
{
|
||||||
return $this->getMonster($offset);
|
return $this->getMonster($offset);
|
||||||
@@ -251,6 +255,7 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
* @param mixed $value Field value.
|
* @param mixed $value Field value.
|
||||||
* @throws E_OTS_ReadOnly Always - this class is read-only.
|
* @throws E_OTS_ReadOnly Always - this class is read-only.
|
||||||
*/
|
*/
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
public function offsetSet($offset, $value)
|
public function offsetSet($offset, $value)
|
||||||
{
|
{
|
||||||
throw new E_OTS_ReadOnly();
|
throw new E_OTS_ReadOnly();
|
||||||
@@ -262,6 +267,7 @@ class OTS_MonstersList implements Iterator, Countable, ArrayAccess
|
|||||||
* @param string|int $offset Array key.
|
* @param string|int $offset Array key.
|
||||||
* @throws E_OTS_ReadOnly Always - this class is read-only.
|
* @throws E_OTS_ReadOnly Always - this class is read-only.
|
||||||
*/
|
*/
|
||||||
|
#[\ReturnTypeWillChange]
|
||||||
public function offsetUnset($offset)
|
public function offsetUnset($offset)
|
||||||
{
|
{
|
||||||
throw new E_OTS_ReadOnly();
|
throw new E_OTS_ReadOnly();
|
||||||
|
@@ -398,7 +398,7 @@ class OTS_Player extends OTS_Row_DAO
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UPDATE query on database
|
// UPDATE query on database
|
||||||
$this->db->query('UPDATE ' . $this->db->tableName('players') . ' SET ' . $this->db->fieldName('name') . ' = ' . $this->db->quote($this->data['name']) . ', ' . $this->db->fieldName('account_id') . ' = ' . $this->data['account_id'] . ', ' . $this->db->fieldName('group_id') . ' = ' . $this->data['group_id'] . ', ' . $this->db->fieldName('sex') . ' = ' . $this->data['sex'] . ', ' . $this->db->fieldName('vocation') . ' = ' . $this->data['vocation'] . ', ' . $this->db->fieldName('experience') . ' = ' . $this->data['experience'] . ', ' . $this->db->fieldName('level') . ' = ' . $this->data['level'] . ', ' . $this->db->fieldName('maglevel') . ' = ' . $this->data['maglevel'] . ', ' . $this->db->fieldName('health') . ' = ' . $this->data['health'] . ', ' . $this->db->fieldName('healthmax') . ' = ' . $this->data['healthmax'] . ', ' . $this->db->fieldName('mana') . ' = ' . $this->data['mana'] . ', ' . $this->db->fieldName('manamax') . ' = ' . $this->data['manamax'] . ', ' . $this->db->fieldName('manaspent') . ' = ' . $this->data['manaspent'] . ', ' . $this->db->fieldName('soul') . ' = ' . $this->data['soul'] . ', ' . $this->db->fieldName('lookbody') . ' = ' . $this->data['lookbody'] . ', ' . $this->db->fieldName('lookfeet') . ' = ' . $this->data['lookfeet'] . ', ' . $this->db->fieldName('lookhead') . ' = ' . $this->data['lookhead'] . ', ' . $this->db->fieldName('looklegs') . ' = ' . $this->data['looklegs'] . ', ' . $this->db->fieldName('looktype') . ' = ' . $this->data['looktype'] . $lookaddons . ', ' . $this->db->fieldName('posx') . ' = ' . $this->data['posx'] . ', ' . $this->db->fieldName('posy') . ' = ' . $this->data['posy'] . ', ' . $this->db->fieldName('posz') . ' = ' . $this->data['posz'] . ', ' . $this->db->fieldName('cap') . ' = ' . $this->data['cap'] . ', ' . $this->db->fieldName('lastlogin') . ' = ' . $this->data['lastlogin'] . ', ' . $this->db->fieldName('lastlogout') . ' = ' . $this->data['lastlogout'] . ', ' . $this->db->fieldName('lastip') . ' = ' . $this->data['lastip'] . ', ' . $this->db->fieldName('save') . ' = ' . (int) $this->data['save'] . ', ' . $this->db->fieldName('conditions') . ' = ' . $this->db->quote($this->data['conditions']) . ', `' . $skull_time . '` = ' . $this->data['skulltime'] . ', `' . $skull_type . '` = ' . (int) $this->data['skull'] . $guild_info . ', ' . $this->db->fieldName('town_id') . ' = ' . $this->data['town_id'] . $loss . $loss_items . ', ' . $this->db->fieldName('balance') . ' = ' . $this->data['balance'] . $blessings . $stamina . $direction . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']);
|
$this->db->query('UPDATE ' . $this->db->tableName('players') . ' SET ' . $this->db->fieldName('name') . ' = ' . $this->db->quote($this->data['name']) . ', ' . $this->db->fieldName('account_id') . ' = ' . $this->data['account_id'] . ', ' . $this->db->fieldName('group_id') . ' = ' . $this->data['group_id'] . ', ' . $this->db->fieldName('sex') . ' = ' . $this->data['sex'] . ', ' . $this->db->fieldName('vocation') . ' = ' . $this->data['vocation'] . ', ' . $this->db->fieldName('experience') . ' = ' . $this->data['experience'] . ', ' . $this->db->fieldName('level') . ' = ' . $this->data['level'] . ', ' . $this->db->fieldName('maglevel') . ' = ' . $this->data['maglevel'] . ', ' . $this->db->fieldName('health') . ' = ' . $this->data['health'] . ', ' . $this->db->fieldName('healthmax') . ' = ' . $this->data['healthmax'] . ', ' . $this->db->fieldName('mana') . ' = ' . $this->data['mana'] . ', ' . $this->db->fieldName('manamax') . ' = ' . $this->data['manamax'] . ', ' . $this->db->fieldName('manaspent') . ' = ' . $this->data['manaspent'] . ', ' . $this->db->fieldName('soul') . ' = ' . $this->data['soul'] . ', ' . $this->db->fieldName('lookbody') . ' = ' . $this->data['lookbody'] . ', ' . $this->db->fieldName('lookfeet') . ' = ' . $this->data['lookfeet'] . ', ' . $this->db->fieldName('lookhead') . ' = ' . $this->data['lookhead'] . ', ' . $this->db->fieldName('looklegs') . ' = ' . $this->data['looklegs'] . ', ' . $this->db->fieldName('looktype') . ' = ' . $this->data['looktype'] . $lookaddons . ', ' . $this->db->fieldName('posx') . ' = ' . $this->data['posx'] . ', ' . $this->db->fieldName('posy') . ' = ' . $this->data['posy'] . ', ' . $this->db->fieldName('posz') . ' = ' . $this->data['posz'] . ', ' . $this->db->fieldName('cap') . ' = ' . $this->data['cap'] . ', ' . $this->db->fieldName('lastlogin') . ' = ' . $this->data['lastlogin'] . ', ' . $this->db->fieldName('lastlogout') . ' = ' . $this->data['lastlogout'] . ', ' . $this->db->fieldName('lastip') . ' = ' . $this->db->quote($this->data['lastip']) . ', ' . $this->db->fieldName('save') . ' = ' . (int) $this->data['save'] . ', ' . $this->db->fieldName('conditions') . ' = ' . $this->db->quote($this->data['conditions']) . ', `' . $skull_time . '` = ' . $this->data['skulltime'] . ', `' . $skull_type . '` = ' . (int) $this->data['skull'] . $guild_info . ', ' . $this->db->fieldName('town_id') . ' = ' . $this->data['town_id'] . $loss . $loss_items . ', ' . $this->db->fieldName('balance') . ' = ' . $this->data['balance'] . $blessings . $stamina . $direction . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']);
|
||||||
}
|
}
|
||||||
// creates new player
|
// creates new player
|
||||||
else
|
else
|
||||||
|
@@ -95,8 +95,8 @@ class OTS_SpellsList implements IteratorAggregate, Countable
|
|||||||
{
|
{
|
||||||
// check if spells.xml exist
|
// check if spells.xml exist
|
||||||
if(!@file_exists($file)) {
|
if(!@file_exists($file)) {
|
||||||
log_append('error.log', '[OTS_SpellsList.php] Fatal error: Cannot load spells.xml. File does not exist. (' . $file . '). Error: ' . print_r(error_get_last(), true));
|
log_append('error.log', '[OTS_SpellsList.php] Fatal error: Cannot load spells.xml. File does not exist. (' . $file . ').');
|
||||||
throw new Exception('Error: Cannot load spells.xml. File not found. More info in system/logs/error.log file.');
|
throw new Exception('Error: Cannot load spells.xml. File not found.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// loads monsters mapping file
|
// loads monsters mapping file
|
||||||
@@ -308,7 +308,7 @@ class OTS_SpellsList implements IteratorAggregate, Countable
|
|||||||
* @since 0.1.5
|
* @since 0.1.5
|
||||||
* @return AppendIterator Iterator for all spells.
|
* @return AppendIterator Iterator for all spells.
|
||||||
*/
|
*/
|
||||||
public function getIterator()
|
public function getIterator(): Traversable
|
||||||
{
|
{
|
||||||
$iterator = new AppendIterator();
|
$iterator = new AppendIterator();
|
||||||
$iterator->append( new ArrayIterator($this->runes) );
|
$iterator->append( new ArrayIterator($this->runes) );
|
||||||
|
@@ -20,7 +20,7 @@ $locale['not_loaded'] = 'Not loaded';
|
|||||||
$locale['loading_spinner'] = 'Please wait, installing...';
|
$locale['loading_spinner'] = 'Please wait, installing...';
|
||||||
$locale['importing_spinner'] = 'Please wait, importing data...';
|
$locale['importing_spinner'] = 'Please wait, importing data...';
|
||||||
$locale['please_fill_all'] = 'Please fill all inputs!';
|
$locale['please_fill_all'] = 'Please fill all inputs!';
|
||||||
$locale['already_installed'] = 'MyAAC has been already installed. Please delete <b>install/<b/> directory. If you want to reinstall MyAAC - please delete <strong>config.local.php</strong> file from the main directory and refresh the page.';
|
$locale['already_installed'] = 'MyAAC has been already installed. Please delete <b>install/</b> directory. If you want to reinstall MyAAC - please delete <strong>config.local.php</strong> file from the main directory and refresh the page.';
|
||||||
|
|
||||||
// welcome
|
// welcome
|
||||||
$locale['step_welcome'] = 'Welcome';
|
$locale['step_welcome'] = 'Welcome';
|
||||||
@@ -63,6 +63,7 @@ $locale['step_config_usage_desc'] = 'Allow MyAAC to report anonymous usage stati
|
|||||||
$locale['step_database'] = 'Import schema';
|
$locale['step_database'] = 'Import schema';
|
||||||
$locale['step_database_title'] = 'Import MySQL schema';
|
$locale['step_database_title'] = 'Import MySQL schema';
|
||||||
$locale['step_database_importing'] = 'Your database is MySQL. Database name is: "$DATABASE_NAME$". Importing schema now...';
|
$locale['step_database_importing'] = 'Your database is MySQL. Database name is: "$DATABASE_NAME$". Importing schema now...';
|
||||||
|
$locale['step_database_config_saved'] = 'Local configuration has been saved into file: config.local.php';
|
||||||
$locale['step_database_error_path'] = 'Please specify server path.';
|
$locale['step_database_error_path'] = 'Please specify server path.';
|
||||||
$locale['step_database_error_config'] = 'Cannot find config.lua file. Is your server path correct? Go back and check again.';
|
$locale['step_database_error_config'] = 'Cannot find config.lua file. Is your server path correct? Go back and check again.';
|
||||||
$locale['step_database_error_database_empty'] = 'Cannot determine database type from config.lua. Your OTS is unsupported by this AAC.';
|
$locale['step_database_error_database_empty'] = 'Cannot determine database type from config.lua. Your OTS is unsupported by this AAC.';
|
||||||
|
@@ -59,6 +59,7 @@ $locale['step_config_usage_desc'] = 'Zezwalaj MyAAC na raportowanie anonimowych
|
|||||||
$locale['step_database'] = 'Baza Danych';
|
$locale['step_database'] = 'Baza Danych';
|
||||||
$locale['step_database_title'] = 'Baza MySQL';
|
$locale['step_database_title'] = 'Baza MySQL';
|
||||||
$locale['step_database_importing'] = 'Twoja baza to MySQL. Nazwa bazy danych to: "$DATABASE_NAME$". Importowanie schematu...';
|
$locale['step_database_importing'] = 'Twoja baza to MySQL. Nazwa bazy danych to: "$DATABASE_NAME$". Importowanie schematu...';
|
||||||
|
$locale['step_database_config_saved'] = 'Lokalna konfiguracja została zapisana do pliku: config.local.php';
|
||||||
$locale['step_database_error_path'] = 'Proszę podać ścieżkę do serwera.';
|
$locale['step_database_error_path'] = 'Proszę podać ścieżkę do serwera.';
|
||||||
$locale['step_database_error_config'] = 'Nie można znaleźć pliku config.lua. Czy ścieżka do katalogu serwera jest poprawna? Wróć się i sprawdź ponownie.';
|
$locale['step_database_error_config'] = 'Nie można znaleźć pliku config.lua. Czy ścieżka do katalogu serwera jest poprawna? Wróć się i sprawdź ponownie.';
|
||||||
$locale['step_database_error_database_empty'] = 'Nie można wykryć typu bazy danych z pliku config.lua. Prawdopodobnie Twój OTS nie jest wspierany przez ten AAC.';
|
$locale['step_database_error_database_empty'] = 'Nie można wykryć typu bazy danych z pliku config.lua. Prawdopodobnie Twój OTS nie jest wspierany przez ten AAC.';
|
||||||
|
@@ -42,13 +42,12 @@ $locale['step_config'] = 'Konfiguration';
|
|||||||
$locale['step_config_title'] = 'Grundläggande konfiguration';
|
$locale['step_config_title'] = 'Grundläggande konfiguration';
|
||||||
$locale['step_config_server_path'] = 'Server mapp';
|
$locale['step_config_server_path'] = 'Server mapp';
|
||||||
$locale['step_config_server_path_desc'] = 'Mappen som innhåller exe filen till The Forgotten Server, där du har din config.lua.';
|
$locale['step_config_server_path_desc'] = 'Mappen som innhåller exe filen till The Forgotten Server, där du har din config.lua.';
|
||||||
|
|
||||||
$locale['step_config_mail_admin'] = 'Admin E-Post';
|
$locale['step_config_mail_admin'] = 'Admin E-Post';
|
||||||
$locale['step_config_mail_admin_desc'] = 'Adress där E-Post från kontaktförmolär kommer att leveraras, till exempel admin@gmail.com';
|
$locale['step_config_mail_admin_desc'] = 'Adress där E-Post från kontaktförmolär kommer att leveraras, till exempel admin@gmail.com';
|
||||||
|
|
||||||
$locale['step_config_mail_admin_error'] = 'Admin E-Post är inte korrekt.';
|
$locale['step_config_mail_admin_error'] = 'Admin E-Post är inte korrekt.';
|
||||||
$locale['step_config_mail_address'] = 'Server E-Post';
|
$locale['step_config_mail_address'] = 'Server E-Post';
|
||||||
$locale['step_config_mail_address_desc'] = 'Adress som kommer att användas för utgående email (från:), till exempel no-reply@your-server.org';
|
$locale['step_config_mail_address_desc'] = 'Adress som kommer att användas för utgående email (från:), till exempel no-reply@your-server.org';
|
||||||
|
|
||||||
$locale['step_config_mail_address_error'] = 'Server E-Post är inte korrekt.';
|
$locale['step_config_mail_address_error'] = 'Server E-Post är inte korrekt.';
|
||||||
$locale['step_config_client'] = 'Klientversion';
|
$locale['step_config_client'] = 'Klientversion';
|
||||||
$locale['step_config_client_desc'] = 'Används för nerladdningssidan och teman.';
|
$locale['step_config_client_desc'] = 'Används för nerladdningssidan och teman.';
|
||||||
|
@@ -147,9 +147,10 @@ if($player->isLoaded() && !$player->isDeleted())
|
|||||||
if($config['characters']['skills'])
|
if($config['characters']['skills'])
|
||||||
{
|
{
|
||||||
if($db->hasColumn('players', 'skill_fist')) {// tfs 1.0+
|
if($db->hasColumn('players', 'skill_fist')) {// tfs 1.0+
|
||||||
$skills_db = $db->query('SELECT `skill_fist`, `skill_club`, `skill_sword`, `skill_axe`, `skill_dist`, `skill_shielding`, `skill_fishing` FROM `players` WHERE `id` = ' . $player->getId())->fetch();
|
$skills_db = $db->query('SELECT `maglevel`, `skill_fist`, `skill_club`, `skill_sword`, `skill_axe`, `skill_dist`, `skill_shielding`, `skill_fishing` FROM `players` WHERE `id` = ' . $player->getId())->fetch();
|
||||||
|
|
||||||
$skill_ids = array(
|
$skill_ids = array(
|
||||||
|
POT::SKILL_MAGIC => 'maglevel',
|
||||||
POT::SKILL_FIST => 'skill_fist',
|
POT::SKILL_FIST => 'skill_fist',
|
||||||
POT::SKILL_CLUB => 'skill_club',
|
POT::SKILL_CLUB => 'skill_club',
|
||||||
POT::SKILL_SWORD => 'skill_sword',
|
POT::SKILL_SWORD => 'skill_sword',
|
||||||
@@ -200,9 +201,7 @@ if($player->isLoaded() && !$player->isDeleted())
|
|||||||
unset($storage);
|
unset($storage);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($config['characters']['equipment'])
|
if($config['characters']['equipment'] && $db->hasTable('player_items') && $db->hasColumn('player_items', 'pid') && $db->hasColumn('player_items', 'sid') && $db->hasColumn('player_items', 'itemtype')) {
|
||||||
{
|
|
||||||
global $db;
|
|
||||||
$eq_sql = $db->query('SELECT `pid`, `itemtype` FROM player_items WHERE player_id = '.$player->getId().' AND (`pid` >= 1 and `pid` <= 10)');
|
$eq_sql = $db->query('SELECT `pid`, `itemtype` FROM player_items WHERE player_id = '.$player->getId().' AND (`pid` >= 1 and `pid` <= 10)');
|
||||||
$equipment = array();
|
$equipment = array();
|
||||||
foreach($eq_sql as $eq)
|
foreach($eq_sql as $eq)
|
||||||
@@ -286,7 +285,7 @@ WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, kil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else if ($db->hasColumn('player_deaths', 'time') && $db->hasColumn('player_deaths', 'level') && $db->hasColumn('player_deaths', 'killed_by') && $db->hasColumn('player_deaths', 'is_player')) {
|
||||||
$mostdamage = '';
|
$mostdamage = '';
|
||||||
if($db->hasColumn('player_deaths', 'mostdamage_by'))
|
if($db->hasColumn('player_deaths', 'mostdamage_by'))
|
||||||
$mostdamage = ', `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified`';
|
$mostdamage = ', `mostdamage_by`, `mostdamage_is_player`, `unjustified`, `mostdamage_unjustified`';
|
||||||
|
@@ -232,6 +232,7 @@ if($save)
|
|||||||
$character_created = $createCharacter->doCreate($character_name, $character_sex, $character_vocation, $character_town, $new_account, $errors);
|
$character_created = $createCharacter->doCreate($character_name, $character_sex, $character_vocation, $character_town, $new_account, $errors);
|
||||||
if (!$character_created) {
|
if (!$character_created) {
|
||||||
error('There was an error creating your character. Please create your character later in account management page.');
|
error('There was an error creating your character. Please create your character later in account management page.');
|
||||||
|
error(implode(' ', $errors));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,6 +17,10 @@ $status['lastCheck'] = 0;
|
|||||||
$status['uptime'] = '0h 0m';
|
$status['uptime'] = '0h 0m';
|
||||||
$status['monsters'] = 0;
|
$status['monsters'] = 0;
|
||||||
|
|
||||||
|
if(config('status_enabled') === false) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$status_ip = $config['lua']['ip'];
|
$status_ip = $config['lua']['ip'];
|
||||||
if(isset($config['lua']['statusProtocolPort'])) {
|
if(isset($config['lua']['statusProtocolPort'])) {
|
||||||
$config['lua']['loginPort'] = $config['lua']['statusProtocolPort'];
|
$config['lua']['loginPort'] = $config['lua']['statusProtocolPort'];
|
||||||
|
6
system/templates/account.back_button.html.twig
Normal file
6
system/templates/account.back_button.html.twig
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{% if new_line is defined and new_line %}
|
||||||
|
<br/>
|
||||||
|
{% endif %}
|
||||||
|
<form action="{% if action is not defined %}{{ getLink('account/manage') }}{% else %}{{ action }}{% endif %}" method="post">
|
||||||
|
{{ include('buttons.back.html.twig') }}
|
||||||
|
</form>
|
@@ -8,8 +8,8 @@
|
|||||||
<meta name="description" content="myaac">
|
<meta name="description" content="myaac">
|
||||||
<meta name="generator" content="MyAAC">
|
<meta name="generator" content="MyAAC">
|
||||||
|
|
||||||
<link rel="stylesheet" href="/tools/css/messages.css">
|
<link rel="stylesheet" href="tools/css/messages.css">
|
||||||
<link rel="shortcut icon" href="/images/error.ico">
|
<link rel="shortcut icon" href="images/error.ico">
|
||||||
<base href="{{ BASE_URL }}" />
|
<base href="{{ BASE_URL }}" />
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="/tools/js/html5shiv.js"></script>
|
<script src="tools/js/html5shiv.js"></script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@@ -76,4 +76,4 @@
|
|||||||
<p>{{ powered_by }}</p>
|
<p>{{ powered_by }}</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -3,9 +3,9 @@
|
|||||||
<img src="{{ constant('BASE_URL') }}images/loading_spinner.gif" height="32" width="32"/>
|
<img src="{{ constant('BASE_URL') }}images/loading_spinner.gif" height="32" width="32"/>
|
||||||
{{ message }}
|
{{ message }}
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript" src="tools/installer.js"></script>
|
<script type="text/javascript" src="{{ constant('BASE_URL') }}install/tools/installer.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function() {
|
$(function() {
|
||||||
performInstall('{{ url }}');
|
performInstall('{{ url }}');
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
<tr bgcolor="{{ getStyle(i) }}">
|
<tr bgcolor="{{ getStyle(i) }}">
|
||||||
<td width=4%>
|
<td width=4%>
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<img src="{{ template_path }}/images/news/icon_{{ news.icon_id }}_small.gif"/>
|
<img src="{{ constant('BASE_URL') }}images/news/icon_{{ news.icon_id }}_small.gif"/>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ news.date|date('j.n.Y') }}</td>
|
<td>{{ news.date|date('j.n.Y') }}</td>
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
<span class="CaptionEdgeRightBottom" 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>
|
||||||
</div>
|
</div>
|
||||||
<table class="Table1" cellpadding="0" cellspacing="0" style="background-color: {{ config.lightborder }}">
|
<table class="Table5" cellpadding="0" cellspacing="0" style="background-color: {{ config.lightborder }}">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<div class="InnerTableContainer">
|
<div class="InnerTableContainer">
|
||||||
|
@@ -14,6 +14,11 @@ $twig = new Twig_Environment($twig_loader, array(
|
|||||||
'debug' => $dev_mode
|
'debug' => $dev_mode
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$twig_loader->addPath(PLUGINS);
|
||||||
|
|
||||||
|
$twig->addGlobal('logged', false);
|
||||||
|
$twig->addGlobal('account_logged', new OTS_Account());
|
||||||
|
|
||||||
if($dev_mode) {
|
if($dev_mode) {
|
||||||
$twig->addExtension(new Twig_DebugExtension());
|
$twig->addExtension(new Twig_DebugExtension());
|
||||||
}
|
}
|
||||||
|
3
templates/kathrine/pages/test.php
Normal file
3
templates/kathrine/pages/test.php
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
echo 'Test';
|
@@ -1486,6 +1486,25 @@ img {
|
|||||||
width: 135px;
|
width: 135px;
|
||||||
z-index: 20;
|
z-index: 20;
|
||||||
}
|
}
|
||||||
|
.BigButtonText {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 135px;
|
||||||
|
height: 25px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
background: 0 0;
|
||||||
|
border: none;
|
||||||
|
text-align: center;
|
||||||
|
color: #ffd18c;
|
||||||
|
font-family: Verdana,Arial,Times New Roman,sans-serif;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 400;
|
||||||
|
z-index: 20;
|
||||||
|
text-shadow: -1px -1px 0 #000,0 -1px 0 #000,1px -1px 0 #000,1px 0 0 #000,1px 1px 0 #000,0 1px 0 #000,-1px 1px 0 #000,-1px 0 0 #000
|
||||||
|
}
|
||||||
.TopButtonContainer {
|
.TopButtonContainer {
|
||||||
position: relative;
|
position: relative;
|
||||||
right: 4px;
|
right: 4px;
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
{% spaceless %}
|
{% spaceless %}
|
||||||
<div class="BigButton" style="background-image:url({{ template_path }}/images/global/buttons/sbutton.gif)">
|
<div class="BigButton" style="background-image:url({{ template_path }}/images/global/buttons/button_blue.gif)">
|
||||||
<div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);">
|
<div onMouseOver="MouseOverBigButton(this);" onMouseOut="MouseOutBigButton(this);">
|
||||||
<div class="BigButtonOver" style="background-image:url({{ template_path }}/images/global/buttons/sbutton_over.gif);" ></div>
|
<div class="BigButtonOver" style="background-image:url({{ template_path }}/images/global/buttons/{% if button_color is defined and button_color == 'green' %}button_green{% else %}button_blue_over{% endif %}.gif);" ></div>
|
||||||
<input class="ButtonText" type="image" name="{{ button_name }}" alt="{{ button_name }}" src="{{ template_path }}/images/global/buttons/{{ button_image }}.gif" />
|
<input class="BigButtonText" type="submit" value="{{ button_name }}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endspaceless %}
|
{% endspaceless %}
|
||||||
|
BIN
templates/tibiacom/images/global/buttons/button_blue.gif
Normal file
BIN
templates/tibiacom/images/global/buttons/button_blue.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
BIN
templates/tibiacom/images/global/buttons/button_blue_over.gif
Normal file
BIN
templates/tibiacom/images/global/buttons/button_blue_over.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 443 B |
Reference in New Issue
Block a user