fix: Migrating project to the new Gitea Host.
This commit is contained in:
parent
b190f03986
commit
a562ddbe12
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
Data
|
||||
Public/data
|
||||
Public/json/DPTW.settings.secrets.json
|
||||
Public/doc
|
||||
PHP/DPTW.Secrets.php
|
||||
Tools/Secrets.sh
|
||||
Tools/.sass-cache
|
||||
DPTW.apache2.conf
|
187
HTML/base.dptw.html
Executable file
187
HTML/base.dptw.html
Executable file
@ -0,0 +1,187 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{language}" dir="ltr">
|
||||
<head>
|
||||
<title>{title}</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
||||
<link rel="icon" href="/images/DPTW-32.webp" sizes="32x32" />
|
||||
<link rel="icon" href="/images/DPTW-192.webp" sizes="192x192" />
|
||||
<link rel="icon" href="/images/DPTW-512.webp" sizes="512x512" />
|
||||
<link rel="apple-touch-icon-precomposed" href="/images/DPTW-180.webp" />
|
||||
<meta name="msapplication-TileImage" content="/images/DPTW-270.webp" />
|
||||
|
||||
<meta name="licence:text" content="© 2020-2021 CopyLeft. GPLv3" />
|
||||
<meta name="licence:link" content="https://www.gnu.org/licenses/gpl-3.0.txt" />
|
||||
<meta name="licence:icon" content="https://www.gnu.org/graphics/gplv3-88x31.png" />
|
||||
|
||||
<meta name="xdoc:link" content="{url}" />
|
||||
<meta name="xdoc:author" content="{author}" />
|
||||
<meta name="xdoc:since" content="{since}" />
|
||||
<meta name="xdoc:version" content="{version}" />
|
||||
<meta name="xdoc:access" content="public" />
|
||||
|
||||
<meta name="description" data-i18n="dptw_description" content="{description}" />
|
||||
<meta name="keywords" data-i18n="dptw_keywords" content="{key_words}" />
|
||||
<meta name="author" content="{author}" />
|
||||
<meta name="copyright" content="© 2020-2021 CopyLeft" />
|
||||
<meta name="robots" content="index,follow" />
|
||||
<meta name="googlebot" content="index,follow,max-snippet:-1,max-image-preview:large,max-video-preview:-1" />
|
||||
<meta name="bingbot" content="index,follow,max-snippet:-1,max-image-preview:large,max-video-preview:-1" />
|
||||
<!--<meta http-equiv="refresh" content="30" />-->
|
||||
<!--<meta http-equiv="cache-control" content="no-cache" />-->
|
||||
<!--<meta http-equiv="expires" content="0" />-->
|
||||
<link rel="canonical" href="{url}" />
|
||||
<link rel="alternate" href="{url}" hreflang="es" />
|
||||
<meta property="og:locale:alternate" content="es_ES" />
|
||||
<meta name="referrer" content="origin" />
|
||||
<meta name="fragment" content="!" /><!-- Para uso AJAX -->
|
||||
<meta name="language" content="es" />
|
||||
<meta name="revisit-after" content="7 days" /><!-- Regreso de las arañas. Información Crawl. -->
|
||||
<meta name="rating" content="general" /><!-- Tipo de contenido: general, mature, restricted, adult, 14 years, safe for kids. -->
|
||||
<meta name="author" content="{author}" />
|
||||
<meta name="owner" content="{author}" />
|
||||
|
||||
<meta property="og:locale" content="es_ES" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" data-i18n="dptw_title" content="{title}" />
|
||||
<meta property="og:description" data-i18n="dptw_description" content="{description}" />
|
||||
<meta property="og:url" content="{url}" />
|
||||
<meta property="og:site_name" content="{project}" />
|
||||
<meta property="og:image" content="{logo}" />
|
||||
<!--<meta property="fb:admins" content="FB-AppID" />-->
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:description" data-i18n="dptw_description" content="{description}" />
|
||||
<meta name="twitter:title" data-i18n="dptw_title" content="{title}" />
|
||||
<!--<meta name="twitter:site" content="@DPTW" />-->
|
||||
<!--<meta name="twitter:creator" content="@DPTW" />-->
|
||||
|
||||
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" />
|
||||
<!--<meta name="google-site-verification" content="123456789" />--><!-- Verificación en el Google Search Console. -->
|
||||
<meta name="google" content="nositelinkssearchbox" />
|
||||
<link rel="dns-prefetch" href="{url}" />
|
||||
<!--<link rel="amphtml" href="{url}index.amp.html" />--><!-- Indica si tiene página para móviles. Tecnología AMP. -->
|
||||
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="https://cdn.k3y.pw/css/fonts/local/Roboto.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="https://cdn.k3y.pw/css/fonts/local/RobotoMono.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="https://cdn.k3y.pw/css/fonts/local/FontAwesome5Free.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="https://cdn.k3y.pw/css/highlight.js/11.7.0/default.min.css" data-href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/default.min.css" data-source="https://highlightjs.org/download/" data-crossorigin="anonymous" charset="utf-8" />
|
||||
|
||||
<script data-type="text/javascript" data-language="JavaScript 1.8.5" src="https://cdn.k3y.pw/js/mermaidjs/10.2.4/mermaid.min.js" data-src="https://cdn.jsdelivr.net/npm/mermaid@10.2.4/dist/mermaid.min.js" data-source="https://www.jsdelivr.com/package/npm/mermaid" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="JavaScript 1.8.5" src="https://cdn.k3y.pw/js/highlight.js/11.7.0/highlight.min.js" data-src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js" data-source="https://highlightjs.org/download/" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="https://cdn.k3y.pw/js/MathJax/3.2.2/tex-mml-chtml.min.js" data-src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.min.js" data-source="https://cdnjs.com/libraries/mathjax" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="https://kstats.k3y.pw/ecma/KStats.ecma.js"></script>
|
||||
|
||||
<script>
|
||||
|
||||
kstats = new KStats({url : "https://kstats.k3y.pw/api/SbfXgp4r3fAtuthpzXdZw2JTLKZqZFYzLhWTkQiQr4kYWsrcZvvsbKrHt/{session}/json/set"});
|
||||
|
||||
</script>
|
||||
|
||||
<link type="text/css" rel="stylesheet" data-language="SASS/CSS3" href="https://wmarkdown.k3y.pw/scss/WMarkDown.css" data-scss="https://wmarkdown.k3y.pw/scss/WMarkDown.scss" data-css-map="https://wmarkdown.k3y.pw/scss/WMarkDown.css.map" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="https://wmarkdown.k3y.pw/css/WMarkDown.icons.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
<link type="text/css" rel="stylesheet" data-language="CSS3" href="/css/DPTW.icons.css" data-crossorigin="anonymous" charset="utf-8" />
|
||||
|
||||
<style data-type="text/css" data-rel="stylesheet" data-language="CSS3" charset="utf-8">
|
||||
|
||||
html,body{
|
||||
height : 100%;
|
||||
margin : 0px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="https://wmarkdown.k3y.pw/ecma/WMarkDown.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="https://wmarkdown.k3y.pw/ecma/WMarkDown.Dictionary.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="https://wmarkdown.k3y.pw/ecma/WMarkDown.Multimedia.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" charset="utf-8">
|
||||
|
||||
wmarkdown = new WMarkDown({
|
||||
dictionary_links : "https://wdictionaries.k3y.pw/?es/values,own_projects,projects,digital,common,kyman",
|
||||
dictionary_title : "Diccionario"
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="wmarkdown dptw">
|
||||
<header>
|
||||
<h1 class="logo">
|
||||
<a href="https://dptw.k3y.pw#">
|
||||
<span class="image">
|
||||
<span style="background-image:url('/images/DPTW.webp');"></span>
|
||||
<img src="/images/DPTW.webp" alt="DPTW" />
|
||||
</span>
|
||||
<span class="text">DPTW</span>
|
||||
</a>
|
||||
</h1>
|
||||
<nav class="main-menu">
|
||||
<ul>
|
||||
<li><a href="/doc" data-i18n="home" data-i18n-without="true" title="Home" target="_self">
|
||||
<span data-icon="home"></span>
|
||||
<span data-i18n="home">Home</span>
|
||||
</a></li>
|
||||
<li><a href="/" data-i18n="game" data-i18n-without="true" title="Juego" target="_blank">
|
||||
<span data-icon="game"></span>
|
||||
<span data-i18n="game">Juego</span>
|
||||
</a></li>
|
||||
<li><a href="/dev" data-i18n="developt" data-i18n-without="true" title="Desarrollo" target="_self">
|
||||
<span data-icon="developt"></span>
|
||||
<span data-i18n="developt">Desarrollo</span>
|
||||
</a></li>
|
||||
<li><a href="https://git.k3y.pw/KyMAN/DPTW" data-i18n="git" data-i18n-without="true" title="Git" target="_blank">
|
||||
<span data-icon="git"></span>
|
||||
<span data-i18n="git">Git</span>
|
||||
</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
<main class="body" data-headers-menu-deployed="true" data-files-menu-deployed="true">
|
||||
<fieldset class="headers-menu">
|
||||
<legend data-i18n="headers_menu" title="Menu">Menu</legend>
|
||||
<nav>
|
||||
<ul>{menu}</ul>
|
||||
</nav>
|
||||
<div class="menu-buttons">
|
||||
<button type="button" data-i18n="hide" data-i18n-without="true" title="Hide" onclick="wmarkdown.hide_menu(this, event);" data-visible="true">
|
||||
<span data-icon="hide"></span>
|
||||
<span data-i18n="hide">Hide</span>
|
||||
</button>
|
||||
<button type="button" data-i18n="show" data-i18n-without="true" title="Show" onclick="wmarkdown.show_menu(this, event);" data-visible="false">
|
||||
<span data-icon="show"></span>
|
||||
<span data-i18n="show">Show</span>
|
||||
</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="content">
|
||||
<legend data-i18n="content" title="Content">Content</legend>
|
||||
<div class="content-box">{content}</div>
|
||||
</fieldset>
|
||||
<fieldset class="files">
|
||||
<legend data-i18n="files" title="Files">Files</legend>
|
||||
<nav>
|
||||
<ul>{files}</ul>
|
||||
</nav>
|
||||
<div class="menu-buttons">
|
||||
<button type="button" data-i18n="hide" data-i18n-without="true" title="Hide" onclick="wmarkdown.hide_menu(this, event);" data-visible="true">
|
||||
<span data-icon="hide"></span>
|
||||
<span data-i18n="hide">Hide</span>
|
||||
</button>
|
||||
<button type="button" data-i18n="show" data-i18n-without="true" title="Show" onclick="wmarkdown.show_menu(this, event);" data-visible="false">
|
||||
<span data-icon="show"></span>
|
||||
<span data-i18n="show">Show</span>
|
||||
</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</main>
|
||||
<footer>
|
||||
<a href="https://www.gnu.org/licenses/gpl-3.0.txt" target="_blank" title="GPLv3" class="license">
|
||||
<span data-i18n="license_text">© 2021-2022 CopyLeft.</span>
|
||||
<img src="https://www.gnu.org/graphics/gplv3-127x51.png" alt="GPLv3" />
|
||||
</a>
|
||||
<div data-preload="wmarkdown-preloader"></div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
1
JSON/html.files.json
Normal file
1
JSON/html.files.json
Normal file
@ -0,0 +1 @@
|
||||
{"files":["\/home\/git\/DPTW\/Public\/doc\/index.html"],"directories":["\/doc"]}
|
267
MariaDB/DPTW.01.builder.my.sql
Normal file
267
MariaDB/DPTW.01.builder.my.sql
Normal file
@ -0,0 +1,267 @@
|
||||
create database if not exists DPTW character set utf8mb4 collate utf8mb4_general_ci;
|
||||
use DPTW;
|
||||
|
||||
delimiter ;^
|
||||
|
||||
drop procedure if exists tables_remove;^
|
||||
create procedure tables_remove() begin
|
||||
|
||||
-- Level 2.
|
||||
drop table if exists Scores;
|
||||
drop table if exists Exceptions;
|
||||
drop table if exists Logs;
|
||||
|
||||
-- Level 1.
|
||||
drop table if exists Sessions;
|
||||
drop table if exists Procedures;
|
||||
|
||||
-- Level 0.
|
||||
drop table if exists Modes;
|
||||
drop table if exists Nicks;
|
||||
drop table if exists Parameters;
|
||||
drop table if exists Messages;
|
||||
drop table if exists `Databases`;
|
||||
drop table if exists UserAgents;
|
||||
drop table if exists Ips;
|
||||
|
||||
end;^
|
||||
|
||||
drop procedure if exists tables_create;^
|
||||
create procedure tables_create() begin
|
||||
|
||||
-- Level 0.
|
||||
create table if not exists Ips(
|
||||
id integer not null auto_increment,
|
||||
address varchar(39) not null,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint ips_id primary key(id)
|
||||
);
|
||||
|
||||
create table if not exists UserAgents(
|
||||
id integer not null auto_increment,
|
||||
`data` text not null,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint user_agents_id primary key(id)
|
||||
);
|
||||
|
||||
create table if not exists `Databases`(
|
||||
id integer not null auto_increment,
|
||||
name varchar(64) not null,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint databases_id primary key(id)
|
||||
);
|
||||
|
||||
create table if not exists Parameters(
|
||||
id integer not null auto_increment,
|
||||
`data` text,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint parameters_id primary key(id)
|
||||
);
|
||||
|
||||
create table if not exists Messages(
|
||||
id integer not null auto_increment,
|
||||
`text` text,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint messages_id primary key(id)
|
||||
);
|
||||
|
||||
create table if not exists Nicks(
|
||||
id integer not null auto_increment,
|
||||
name varchar(32) not null,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint nicks_id primary key(id)
|
||||
);
|
||||
|
||||
create table if not exists Modes( -- For different game settings.
|
||||
id integer not null auto_increment,
|
||||
name varchar(32) not null,
|
||||
description text,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint nicks_id primary key(id)
|
||||
);
|
||||
|
||||
-- Level 1.
|
||||
create table if not exists Sessions(
|
||||
id integer not null auto_increment,
|
||||
ip integer not null,
|
||||
user_agent integer not null,
|
||||
date_in datetime not null default now(),
|
||||
date_last datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint sessions_id primary key(id),
|
||||
constraint sessions_ip foreign key(ip) references Ips(id),
|
||||
constraint sessions_user_agent foreign key(user_agent) references UserAgents(id)
|
||||
);
|
||||
|
||||
create table if not exists Procedures(
|
||||
id integer not null auto_increment,
|
||||
`database` integer not null,
|
||||
name varchar(64) not null,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint procedures_id primary key(id),
|
||||
constraint procedures_database foreign key(`database`) references `Databases`(id)
|
||||
);
|
||||
|
||||
-- Level 2.
|
||||
create table if not exists Logs(
|
||||
id integer not null auto_increment,
|
||||
`session` integer,
|
||||
`procedure` integer not null,
|
||||
parameters integer not null,
|
||||
error bigint,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint logs_id primary key(id),
|
||||
constraint logs_session foreign key(`session`) references Sessions(id),
|
||||
constraint logs_procedure foreign key(`procedure`) references Procedures(id),
|
||||
constraint logs_parameters foreign key(parameters) references Parameters(id)
|
||||
);
|
||||
|
||||
create table if not exists Exceptions(
|
||||
id integer not null auto_increment,
|
||||
`session` integer,
|
||||
`procedure` integer not null,
|
||||
parameters integer not null,
|
||||
error bigint,
|
||||
message integer not null,
|
||||
status varchar(16),
|
||||
code integer,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint exceptions_id primary key(id),
|
||||
constraint exceptions_session foreign key(`session`) references Sessions(id),
|
||||
constraint exceptions_procedure foreign key(`procedure`) references Procedures(id),
|
||||
constraint exceptions_parameters foreign key(parameters) references Parameters(id),
|
||||
constraint exceptions_message foreign key(message) references Messages(id)
|
||||
);
|
||||
|
||||
create table if not exists Scores(
|
||||
id integer not null auto_increment,
|
||||
`session` integer not null,
|
||||
`procedure` integer not null,
|
||||
mode integer not null,
|
||||
nick integer not null,
|
||||
score integer not null,
|
||||
date_in datetime not null default now(),
|
||||
date_out datetime,
|
||||
constraint scores_id primary key(id),
|
||||
constraint scores_session foreign key(`session`) references Sessions(id),
|
||||
constraint scores_procedure foreign key(`procedure`) references Procedures(id),
|
||||
constraint scores_mode foreign key(mode) references Modes(id),
|
||||
constraint scores_nick foreign key(nick) references Nicks(id)
|
||||
);
|
||||
|
||||
end;^
|
||||
|
||||
drop procedure if exists tables_update;^
|
||||
create procedure tables_update() begin
|
||||
|
||||
declare `$database` varchar(64) default 'DPTW';
|
||||
|
||||
-- Level 0.
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Ips' && column_name = 'address' limit 1) is null then
|
||||
alter table Ips add column address varchar(39) not null after id;
|
||||
end if;
|
||||
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'UserAgents' && column_name = 'data' limit 1) is null then
|
||||
alter table UserAgents add column `data` text not null after id;
|
||||
end if;
|
||||
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Databases' && column_name = 'name' limit 1) is null then
|
||||
alter table `Databases` add column name varchar(64) not null after id;
|
||||
end if;
|
||||
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Parameters' && column_name = 'data' limit 1) is null then
|
||||
alter table Parameters add column `data` text not null after id;
|
||||
end if;
|
||||
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Messages' && column_name = 'text' limit 1) is null then
|
||||
alter table Parameters add column `text` text not null after id;
|
||||
end if;
|
||||
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Nicks' && column_name = 'name' limit 1) is null then
|
||||
alter table Nicks add column name varchar(32) not null after id;
|
||||
end if;
|
||||
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Modes' && column_name = 'name' limit 1) is null then
|
||||
alter table Modes add column name varchar(32) not null after id;
|
||||
end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Modes' && column_name = 'description' limit 1) is null then
|
||||
alter table Modes add column description text not null after name;
|
||||
end if;
|
||||
|
||||
-- Level 1.
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Sessions' && column_name = 'ip' limit 1) is null then begin
|
||||
alter table Sessions add column ip integer not null after id;
|
||||
alter table Sessions add constraint sessions_ip foreign key(ip) references Ips(id);
|
||||
end;end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Sessions' && column_name = 'user_agent' limit 1) is null then begin
|
||||
alter table Sessions add column ip integer not null after ip;
|
||||
alter table Sessions add constraint sessions_user_agent foreign key(user_agent) references UserAgents(id);
|
||||
end;end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Sessions' && column_name = 'date_last' limit 1) is null then
|
||||
alter table Sessions add column date_last datetime not null default now() after date_in;
|
||||
end if;
|
||||
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Procedures' && column_name = 'database' limit 1) is null then begin
|
||||
alter table Procedures add column `database` integer not null after id;
|
||||
alter table Procedures add constraint procedures_database foreign key(`database`) references `Databases`(id);
|
||||
end;end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Procedures' && column_name = 'name' limit 1) is null then
|
||||
alter table Procedures add column name varchar(64) not null after `database`;
|
||||
end if;
|
||||
|
||||
-- Level 2.
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Logs' && column_name = 'parameters' limit 1) is null then begin
|
||||
alter table Logs add column parameters integer not null after `procedure`;
|
||||
alter table Logs add constraint logs_parameters foreign key(parameters) references Parameters(id);
|
||||
end;end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Logs' && column_name = 'error' limit 1) is null then
|
||||
alter table Logs add column error bigint not null after parameters;
|
||||
end if;
|
||||
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Exceptions' && column_name = 'parameters' limit 1) is null then begin
|
||||
alter table Exceptions add column parameters integer not null after `procedure`;
|
||||
alter table Exceptions add constraint exception_parameters foreign key(parameters) references Parameters(id);
|
||||
end;end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Exceptions' && column_name = 'error' limit 1) is null then
|
||||
alter table Exceptions add column error bigint not null after parameters;
|
||||
end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Exceptions' && column_name = 'message' limit 1) is null then begin
|
||||
alter table Exceptions add column message integer not null after error;
|
||||
alter table Exceptions add constraint exception_message foreign key(message) references Messages(id);
|
||||
end;end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Exceptions' && column_name = 'status' limit 1) is null then
|
||||
alter table Exceptions add column status varchar(16) after message;
|
||||
end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Exceptions' && column_name = 'code' limit 1) is null then
|
||||
alter table Exceptions add column code integer after message;
|
||||
end if;
|
||||
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Scores' && column_name = 'mode' limit 1) is null then begin
|
||||
alter table Scores add column mode integer not null after `procedure`;
|
||||
alter table Scores add constraint exception_mode foreign key(mode) references Modes(id);
|
||||
end;end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Scores' && column_name = 'nick' limit 1) is null then begin
|
||||
alter table Scores add column nick integer not null after mode;
|
||||
alter table Scores add constraint exception_nick foreign key(nick) references Nicks(id);
|
||||
end;end if;
|
||||
if (select 1 from information_schema.columns where table_schema = `$database` && table_name = 'Scores' && column_name = 'score' limit 1) is null then
|
||||
alter table Scores add column score integer not null after nick;
|
||||
end if;
|
||||
|
||||
end;^
|
||||
|
||||
call tables_remove();^
|
||||
call tables_create();^
|
||||
call tables_update();^
|
||||
|
||||
delimiter ;
|
120
MariaDB/DPTW.02.views.my.sql
Normal file
120
MariaDB/DPTW.02.views.my.sql
Normal file
@ -0,0 +1,120 @@
|
||||
create database if not exists DPTW character set utf8mb4 collate utf8mb4_general_ci;
|
||||
use DPTW;
|
||||
|
||||
delimiter ;^
|
||||
|
||||
drop view if exists ProceduresView;^
|
||||
create view ProceduresView as select
|
||||
`databases`.id as database_id,
|
||||
`databases`.name as `database`,
|
||||
procedures.id as procedure_id,
|
||||
procedures.name as `procedure`
|
||||
from Procedures procedures
|
||||
join `Databases` `databases` on procedures.`database` = `databases`.id;^
|
||||
|
||||
drop view if exists SessionsView;^
|
||||
create view SessionsView as select
|
||||
sessions.id as id,
|
||||
ips.id as ip_id,
|
||||
ips.address as ip,
|
||||
user_agents.id as user_agent_id,
|
||||
user_agents.`data` as user_agent,
|
||||
sessions.date_in as date_in,
|
||||
sessions.date_last as date_last,
|
||||
sessions.date_out as date_out
|
||||
from Sessions sessions
|
||||
join Ips ips on sessions.ip = ips.id
|
||||
join UserAgents user_agents on sessions.user_agent = user_agents.id;^
|
||||
|
||||
drop view if exists LogsView;^
|
||||
create view LogsView as select
|
||||
logs.id as id,
|
||||
sessions.id as session_id,
|
||||
sessions.ip_id as ip_id,
|
||||
sessions.ip as ip,
|
||||
sessions.user_agent_id as user_agent_id,
|
||||
sessions.user_agent as user_agent,
|
||||
procedures.database_id as database_id,
|
||||
procedures.`database` as `database`,
|
||||
procedures.procedure_id as procedure_id,
|
||||
procedures.`procedure` as `procedure`,
|
||||
parameters.id as parameters_id,
|
||||
parameters.`data` as parameters,
|
||||
logs.error as error,
|
||||
logs.date_in as date_in
|
||||
from Logs logs
|
||||
left join SessionsView sessions on logs.`session` = sessions.id
|
||||
join ProceduresView procedures on logs.`procedure` = procedures.procedure_id
|
||||
join Parameters parameters on logs.parameters = parameters.id;^
|
||||
|
||||
drop view if exists ExceptionsView;^
|
||||
create view ExceptionsView as select
|
||||
exceptions.id as id,
|
||||
sessions.id as session_id,
|
||||
sessions.ip_id as ip_id,
|
||||
sessions.ip as ip,
|
||||
sessions.user_agent_id as user_agent_id,
|
||||
sessions.user_agent as user_agent,
|
||||
procedures.database_id as database_id,
|
||||
procedures.`database` as `database`,
|
||||
procedures.procedure_id as procedure_id,
|
||||
procedures.`procedure` as `procedure`,
|
||||
parameters.id as parameters_id,
|
||||
parameters.`data` as parameters,
|
||||
exceptions.error as error,
|
||||
messages.id as message_id,
|
||||
messages.`text` as message,
|
||||
exceptions.status as status,
|
||||
exceptions.code as code,
|
||||
exceptions.date_in as date_in
|
||||
from Exceptions exceptions
|
||||
left join SessionsView sessions on exceptions.`session` = sessions.id
|
||||
join ProceduresView procedures on exceptions.`procedure` = procedures.procedure_id
|
||||
join Parameters parameters on exceptions.parameters = parameters.id
|
||||
join Messages messages on exceptions.message = messages.id;^
|
||||
|
||||
drop view if exists ScoresView;^
|
||||
create view ScoresView as select
|
||||
scores.id as id,
|
||||
modes.id as mode_id,
|
||||
modes.name as mode,
|
||||
nicks.id as nick_id,
|
||||
nicks.name as nick,
|
||||
scores.score as score,
|
||||
scores.date_in as date_in
|
||||
from Scores scores
|
||||
join Modes modes on scores.mode = modes.id
|
||||
join Nicks nicks on scores.nick = nicks.id
|
||||
where
|
||||
scores.date_out is null &&
|
||||
modes.date_out is null &&
|
||||
nicks.date_out is null
|
||||
order by
|
||||
scores.score desc,
|
||||
scores.date_in asc;^
|
||||
|
||||
drop view if exists ScoresFullView;^
|
||||
create view ScoresFullView as select
|
||||
scores.id as id,
|
||||
sessions.id as session_id,
|
||||
sessions.ip_id as ip_id,
|
||||
sessions.ip as ip,
|
||||
sessions.user_agent_id as user_agent_id,
|
||||
sessions.user_agent as user_agent,
|
||||
procedures.database_id as database_id,
|
||||
procedures.`database` as `database`,
|
||||
procedures.procedure_id as procedure_id,
|
||||
procedures.`procedure` as `procedure`,
|
||||
modes.id as mode_id,
|
||||
modes.name as mode,
|
||||
nicks.id as nick_id,
|
||||
nicks.name as nick,
|
||||
scores.score as score,
|
||||
scores.date_in as date_in
|
||||
from Scores scores
|
||||
join SessionsView sessions on scores.`session` = sessions.id
|
||||
join ProceduresView procedures on scores.`procedure` = procedures.procedure_id
|
||||
join Modes modes on scores.mode = modes.id
|
||||
join Nicks nicks on scores.nick = nicks.id;^
|
||||
|
||||
delimiter ;
|
118
MariaDB/DPTW.03.base.my.sql
Normal file
118
MariaDB/DPTW.03.base.my.sql
Normal file
@ -0,0 +1,118 @@
|
||||
create database if not exists DPTW character set utf8mb4 collate utf8mb4_general_ci;
|
||||
use DPTW;
|
||||
|
||||
delimiter ;^
|
||||
|
||||
drop function if exists sessions_validate;^
|
||||
create function sessions_validate(
|
||||
$id integer
|
||||
) returns bigint begin
|
||||
return (case
|
||||
when $id is null then 1 << 0
|
||||
when $id < 0 then 1 << 1
|
||||
else ifnull((
|
||||
select (case
|
||||
when date_out is not null then 1 << 3
|
||||
when timestampdiff(second, now(), date_last) > 30 then 1 << 4
|
||||
else 0 end) from Sessions where id = $id limit 1
|
||||
), 1 << 2) end);
|
||||
end;^
|
||||
|
||||
drop function if exists sessions_exists;^
|
||||
create function sessions_exists(
|
||||
$id integer
|
||||
) returns bool begin
|
||||
return (select 1 from Sessions where id = $id limit 1) is not null;
|
||||
end;^
|
||||
|
||||
drop procedure if exists procedures_get;^
|
||||
create procedure procedures_get(
|
||||
in `$database` varchar(64),
|
||||
in `$procedure` varchar(64),
|
||||
out $procedure_id integer
|
||||
) begin
|
||||
|
||||
declare $database_id integer default (select id from `Databases` where date_out is null && name = `$database` limit 1);
|
||||
|
||||
if $database_id is null then begin
|
||||
insert into `Databases`(name) values(`$database`);
|
||||
set $database_id := last_insert_id();
|
||||
end;end if;
|
||||
|
||||
set $procedure_id := (select id from Procedures where date_out is null && `database` = $database_id && name = `$procedure` limit 1);
|
||||
|
||||
if $procedure_id is null then begin
|
||||
insert into Procedures(`database`, name) values($database_id, `$procedure`);
|
||||
set $procedure_id := last_insert_id();
|
||||
end;end if;
|
||||
|
||||
end;^
|
||||
|
||||
drop procedure if exists parameters_get;^
|
||||
create procedure parameters_get(
|
||||
in $parameters text,
|
||||
out $parameters_id integer
|
||||
) begin
|
||||
|
||||
set $parameters_id := (select id from Parameters where date_out is null && `data` = $parameters limit 1);
|
||||
|
||||
if $parameters_id is null then begin
|
||||
insert into Parameters(`data`) values($parameters);
|
||||
set $parameters_id := last_insert_id();
|
||||
end;end if;
|
||||
|
||||
end;^
|
||||
|
||||
drop procedure if exists logs_set;^
|
||||
create procedure logs_set(
|
||||
in `$session` integer,
|
||||
in `$database` varchar(64),
|
||||
in `$procedure` varchar(64),
|
||||
in $parameters text,
|
||||
in $error bigint,
|
||||
in $register bool
|
||||
) begin
|
||||
if $register then begin
|
||||
|
||||
declare $procedure_id integer;
|
||||
declare $parameters_id integer;
|
||||
|
||||
call procedures_get(`$database`, `$procedure`, $procedure_id);
|
||||
call parameters_get($parameters, $parameters_id);
|
||||
|
||||
insert into Logs(`session`, `procedure`, parameters, error) values
|
||||
(if(sessions_exists(`$session`), `$session`, null), $procedure_id, $parameters_id, $error);
|
||||
|
||||
end;end if;
|
||||
end;^
|
||||
|
||||
drop procedure if exists exceptions_set;^
|
||||
create procedure exceptions_set(
|
||||
in `$session` integer,
|
||||
in `$database` varchar(64),
|
||||
in `$procedure` varchar(64),
|
||||
in $parameters text,
|
||||
in $error bigint,
|
||||
in $message text,
|
||||
in $status varchar(16),
|
||||
in $code integer
|
||||
) begin
|
||||
|
||||
declare $procedure_id integer;
|
||||
declare $parameters_id integer;
|
||||
declare $message_id integer default (select id from Messages where date_out is null && `text` = $message limit 1);
|
||||
|
||||
call procedures_get(`$database`, `$procedure`, $procedure_id);
|
||||
call parameters_get($parameters, $parameters_id);
|
||||
|
||||
if $message_id is null then begin
|
||||
insert into Messages(`text`) values($message);
|
||||
set $message_id := last_insert_id();
|
||||
end;end if;
|
||||
|
||||
insert into Exceptions(`session`, `procedure`, parameters, error, message, status, code) values
|
||||
(if(sessions_exists(`$session`), `$session`, null), $procedure_id, $parameters_id, $error, $message_id, $status, $code);
|
||||
|
||||
end;^
|
||||
|
||||
delimiter ;
|
121
MariaDB/DPTW.04.sessions.my.sql
Normal file
121
MariaDB/DPTW.04.sessions.my.sql
Normal file
@ -0,0 +1,121 @@
|
||||
create database if not exists DPTW character set utf8mb4 collate utf8mb4_general_ci;
|
||||
use DPTW;
|
||||
|
||||
delimiter ;^
|
||||
|
||||
drop procedure if exists sessions_full_validate;^
|
||||
create procedure sessions_full_validate(
|
||||
in `$session` text,
|
||||
out $error bigint,
|
||||
out $id integer,
|
||||
out $ip_id integer,
|
||||
out $user_agent_id integer
|
||||
) begin
|
||||
|
||||
set $error := (case
|
||||
when `$session` is null then 1 << 0
|
||||
when `$session` = '' then 1 << 1
|
||||
when !position(':' in `$session`) then 1 << 2
|
||||
else 0 end) << 1;
|
||||
|
||||
if !$error then begin
|
||||
|
||||
declare $separator_i integer default position(':' in `$session`);
|
||||
declare $id_string varchar(16) default substring(`$session`, 1, $separator_i - 1);
|
||||
|
||||
set $error := (case
|
||||
when $id_string = '' then 1 << 0
|
||||
when $id_string != 'null' && $id_string not regexp '^[\-\+]?[0-9]+$' then 1 << 1
|
||||
else 0 end) << 4;
|
||||
|
||||
if !$error then begin
|
||||
|
||||
set $id := if($id_string = 'null', null, cast($id_string as signed));
|
||||
set `$session` := substring(`$session`, $separator_i + 1, length(`$session`));
|
||||
set $separator_i := position(':' in `$session`);
|
||||
set $error := (
|
||||
if($separator_i, 0, 1 << 0) |
|
||||
(sessions_validate($id) & ~(1 << 0) << 1) |
|
||||
0) << 6;
|
||||
|
||||
if !$error then begin
|
||||
|
||||
declare $ip varchar(39) default substring(`$session`, 1, $separator_i - 1);
|
||||
declare $user_agent text default substring(`$session`, $separator_i + 1, length(`$session`));
|
||||
|
||||
set $error := (
|
||||
if($ip = '', 1 << 0, 0) |
|
||||
if($user_agent = '', 1 << 0, 0) |
|
||||
0) << 8;
|
||||
|
||||
if !$error then begin
|
||||
|
||||
set $ip_id := (select id from Ips where address = $ip limit 1);
|
||||
set $user_agent_id := (select id from UserAgents where `data` = $user_agent limit 1);
|
||||
|
||||
if $ip_id is null then begin
|
||||
insert into Ips(address) values($ip);
|
||||
set $ip_id := last_insert_id();
|
||||
end;end if;
|
||||
|
||||
if $user_agent_id is null then begin
|
||||
insert into UserAgents(`data`) values($user_agent);
|
||||
set $user_agent_id := last_insert_id();
|
||||
end;end if;
|
||||
|
||||
set $error := if($id is null, 0, ifnull((
|
||||
select (
|
||||
if(ip = $ip_id, 0, 1 << 1) |
|
||||
if(user_agent = $user_agent_id, 0, 1 << 2) |
|
||||
0) from Sessions where id = $id limit 1
|
||||
), 1 << 0) << 10);
|
||||
|
||||
end;end if;
|
||||
|
||||
end;end if;
|
||||
|
||||
end;end if;
|
||||
|
||||
end;end if;
|
||||
|
||||
end;^
|
||||
|
||||
drop procedure if exists sessions_update;^
|
||||
create procedure sessions_update(
|
||||
in `$session` text,
|
||||
out $error bigint,
|
||||
out $id integer
|
||||
) begin
|
||||
|
||||
declare `$database` varchar(64) default 'DPTW';
|
||||
declare `$procedure` varchar(64) default 'sessions_update';
|
||||
declare $parameters text default '{}';
|
||||
declare $ip_id integer;
|
||||
declare $user_agent_id integer;
|
||||
declare exit handler for sqlexception begin
|
||||
get diagnostics condition 1
|
||||
@_status = returned_sqlstate,
|
||||
@_code = mysql_errno,
|
||||
@message = message_text;
|
||||
set $error := $error | 1 << 0;
|
||||
call exceptions_set($id, `$database`, `$procedure`, $parameters, $error, @message, @_status, @_code);
|
||||
end;
|
||||
|
||||
call sessions_full_validate(`$session`, $error, $id, $ip_id, $user_agent_id);
|
||||
set $error := $error & ~(1 << 7);
|
||||
|
||||
if !($error & ~(1 << 11)) then
|
||||
if $error || $id is null then begin
|
||||
insert into Sessions(ip, user_agent) values($ip_id, $user_agent_id);
|
||||
set $id := last_insert_id();
|
||||
end;else begin
|
||||
select $id as id;
|
||||
update Sessions set date_last := now() where id = $id;
|
||||
end;end if;
|
||||
end if;
|
||||
|
||||
call logs_set($id, `$database`, `$procedure`, $parameters, $error, !!$error);
|
||||
|
||||
end;^
|
||||
|
||||
delimiter ;
|
213
MariaDB/DPTW.05.scores.my.sql
Normal file
213
MariaDB/DPTW.05.scores.my.sql
Normal file
@ -0,0 +1,213 @@
|
||||
create database if not exists DPTW character set utf8mb4 collate utf8mb4_general_ci;
|
||||
use DPTW;
|
||||
|
||||
delimiter ;^
|
||||
|
||||
drop function if exists scores_set_validate;^
|
||||
create function scores_set_validate(
|
||||
$mode varchar(32),
|
||||
$nick varchar(32),
|
||||
$score integer
|
||||
) returns bigint begin
|
||||
return (
|
||||
((case
|
||||
when $mode is null then 1 << 0
|
||||
when $mode = '' then 1 << 1
|
||||
/*else ifnull((
|
||||
select 0 from Modes where date_out is null && name = $mode limit 1
|
||||
), 1 << 2) end) << 0) | */
|
||||
else 0 end) << 0) |
|
||||
((case
|
||||
when $nick is null then 1 << 0
|
||||
when $nick = '' then 1 << 1
|
||||
else 0 end) << 3) |
|
||||
((case
|
||||
when $score is null then 1 << 0
|
||||
when $score < 0 then 1 << 1
|
||||
else 0 end) << 5) |
|
||||
0);
|
||||
end;^
|
||||
|
||||
drop procedure if exists modes_get;^
|
||||
create procedure modes_get(
|
||||
in $mode varchar(32),
|
||||
out $id integer
|
||||
) begin
|
||||
|
||||
set $id := (select id from Modes where date_out is null && name = $mode limit 1);
|
||||
|
||||
if $id is null then begin
|
||||
insert into Modes(name) values($mode);
|
||||
set $id := last_insert_id();
|
||||
end;end if;
|
||||
|
||||
end;^
|
||||
|
||||
drop procedure if exists nicks_get;^
|
||||
create procedure nicks_get(
|
||||
in $nick varchar(32),
|
||||
out $id integer
|
||||
) begin
|
||||
|
||||
set $id := (select id from Nicks where date_out is null && name = $nick limit 1);
|
||||
|
||||
if $id is null then begin
|
||||
insert into Nicks(name) values($nick);
|
||||
set $id := last_insert_id();
|
||||
end;end if;
|
||||
|
||||
end;^
|
||||
|
||||
drop procedure if exists scores_set;^
|
||||
create procedure scores_set(
|
||||
in `$session` text,
|
||||
in $mode varchar(32),
|
||||
in $nick varchar(32),
|
||||
in $score integer,
|
||||
out $error bigint,
|
||||
out $id integer
|
||||
) begin
|
||||
|
||||
declare `$database` varchar(64) default 'DPTW';
|
||||
declare `$procedure` varchar(64) default 'scores_set';
|
||||
declare $parameters text default json_set('{}',
|
||||
'$.mode', $mode,
|
||||
'$.nick', $nick,
|
||||
'$.score', $score,
|
||||
'$.id', 0
|
||||
);
|
||||
declare $session_id integer;
|
||||
declare $ip_id integer;
|
||||
declare $user_agent_id integer;
|
||||
declare exit handler for sqlexception begin
|
||||
get diagnostics condition 1
|
||||
@_status = returned_sqlstate,
|
||||
@_code = mysql_errno,
|
||||
@message = message_text;
|
||||
set $error := $error | 1 << 0;
|
||||
call exceptions_set($session_id, `$database`, `$procedure`, $ip_id, $user_agent_id, $parameters, $error, @message, @_status, @_code);
|
||||
end;
|
||||
|
||||
set $id := 0;
|
||||
call sessions_full_validate(`$session`, $error, $session_id, $ip_id, $user_agent_id);
|
||||
set $error := $error | (scores_set_validate($mode, $nick, $score) << 13);
|
||||
|
||||
if !$error then begin
|
||||
|
||||
declare $mode_id integer;
|
||||
declare $nick_id integer;
|
||||
declare $procedure_id integer;
|
||||
|
||||
call modes_get($mode, $mode_id);
|
||||
call nicks_get($nick, $nick_id);
|
||||
call procedures_get(`$database`, `$procedure`, $procedure_id);
|
||||
|
||||
insert into Scores(`session`, `procedure`, mode, nick, score) values
|
||||
($session_id, $procedure_id, $mode_id, $nick_id, $score);
|
||||
set $id := last_insert_id();
|
||||
|
||||
set $parameters := json_set($parameters, '$.id', $id);
|
||||
|
||||
end;end if;
|
||||
|
||||
call logs_set($session_id, `$database`, `$procedure`, $parameters, $error, true);
|
||||
|
||||
end;^
|
||||
|
||||
drop function if exists scores_list_validate;^
|
||||
create function scores_list_validate(
|
||||
$mode varchar(32),
|
||||
$page integer,
|
||||
$items_per_page integer,
|
||||
$nicks varchar(32)
|
||||
) returns bigint begin
|
||||
return (
|
||||
((case
|
||||
when $mode is null then 1 << 0
|
||||
when $mode = '' then 1 << 1
|
||||
else ifnull((
|
||||
select 0 from Modes where date_out is null && name = $mode limit 1
|
||||
), 1 << 2) end) << 0) |
|
||||
((case
|
||||
when $page is null then 1 << 0
|
||||
when $page < 1 then 1 << 1
|
||||
else 0 end) << 3) |
|
||||
((case
|
||||
when $items_per_page is null then 1 << 0
|
||||
when $items_per_page < 1 then 1 << 1
|
||||
else 0 end) << 5) |
|
||||
(if($nicks is null, 1 << 0, 0) << 7) |
|
||||
0);
|
||||
end;^
|
||||
|
||||
drop procedure if exists scores_list;^
|
||||
create procedure scores_list(
|
||||
in `$session` text,
|
||||
in $mode varchar(32),
|
||||
in $page integer,
|
||||
in $items_per_page integer,
|
||||
in $nicks varchar(32),
|
||||
out $error bigint,
|
||||
out $pages integer,
|
||||
out $items integer
|
||||
) begin
|
||||
|
||||
declare `$database` varchar(64) default 'DPTW';
|
||||
declare `$procedure` varchar(64) default 'scores_list';
|
||||
declare $parameters text default json_set('{}',
|
||||
'$.page', $page,
|
||||
'$.items_per_page', $items_per_page,
|
||||
'$.nicks', $nicks,
|
||||
'$.pages', 0,
|
||||
'$.items', 0
|
||||
);
|
||||
declare $session_id integer;
|
||||
declare $ip_id integer;
|
||||
declare $user_agent_id integer;
|
||||
declare exit handler for sqlexception begin
|
||||
get diagnostics condition 1
|
||||
@_status = returned_sqlstate,
|
||||
@_code = mysql_errno,
|
||||
@message = message_text;
|
||||
set $error := $error | 1 << 0;
|
||||
call exceptions_set($session_id, `$database`, `$procedure`, $parameters, $error, @message, @_status, @_code);
|
||||
end;
|
||||
|
||||
set $pages := 0;
|
||||
set $items := 0;
|
||||
call sessions_full_validate(`$session`, $error, $session_id, $ip_id, $user_agent_id);
|
||||
set $error := $error | (scores_list_validate($mode, $page, $items_per_page, $nicks) << 13);
|
||||
|
||||
if !$error then begin
|
||||
|
||||
declare $item_from integer;
|
||||
declare $mode_id integer default (select id from Modes where date_out is null && name = $mode limit 1);
|
||||
|
||||
drop temporary table if exists DPTW_SCORES_LIST_TEMPORARY;
|
||||
create temporary table DPTW_SCORES_LIST_TEMPORARY as select * from (
|
||||
select *, rownum() as `position` from (select * from DPTW.ScoresView where mode_id = $mode_id) sublevel
|
||||
) subtable where ifnull($nicks, '') = '' || nick like concat('%', $nicks, '%');
|
||||
|
||||
set $items := (select count(1) from DPTW_SCORES_LIST_TEMPORARY limit 1);
|
||||
set $pages := ceil($items / $items_per_page);
|
||||
|
||||
if $page > $pages then
|
||||
set $page := $pages;
|
||||
end if;
|
||||
|
||||
set $item_from := ($page - 1) * $items_per_page;
|
||||
|
||||
select * from DPTW_SCORES_LIST_TEMPORARY limit $item_from, $items_per_page;
|
||||
|
||||
set $parameters := json_Set($parameters,
|
||||
'$.pages', $pages,
|
||||
'$.items', $items
|
||||
);
|
||||
|
||||
end;end if;
|
||||
|
||||
call logs_set($session_id, `$database`, `$procedure`, $parameters, $error, true);
|
||||
|
||||
end;^
|
||||
|
||||
delimiter ;
|
54
PHP/DPTW.Dictionary.php
Normal file
54
PHP/DPTW.Dictionary.php
Normal file
@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace DPTW;
|
||||
|
||||
class Dictionary{
|
||||
|
||||
public $dptw;
|
||||
|
||||
public function __construct($dptw){
|
||||
|
||||
$this->dptw = $dptw;
|
||||
|
||||
}
|
||||
|
||||
public function update(){
|
||||
|
||||
$urls = null;
|
||||
$results = "";
|
||||
$words = [];
|
||||
$key = isset($_GET["key"]) ? $_GET["key"] : null;
|
||||
|
||||
try{
|
||||
isset($_GET["urls"]) && ($urls = ($json = json_decode($urls = base64_decode($_GET["urls"]), true)) ? $json : [$urls]);
|
||||
}catch(Exception $exception){};
|
||||
|
||||
!$urls && ($urls = is_array($urls = $this->dptw->settings("dictionary_urls")) ? $urls : [$urls]);
|
||||
|
||||
foreach($urls as $url)
|
||||
$results .= file_get_contents($url);
|
||||
|
||||
$results = "<body" . preg_split('/<\/head>[\s]*<body/i', $results)[1];
|
||||
|
||||
foreach(["script", "style", "data", "object"] as $tag)
|
||||
$results = preg_replace('/<' . $tag . '(?!(<\/' . $tag . '>)).+<\/' . $tag . '>/i', "", $results);
|
||||
|
||||
$results = preg_replace('/<[^<>]+>/', " ", $results);
|
||||
|
||||
foreach(preg_split('/\s+/', $results) as $word)
|
||||
if(strlen($word) > 1 && !preg_match('/[^a-záéúíóàèùìòäëüïÖâêûîôÁÉÚÍÓÀÈÙÌÒÄËÜÏÖÂÊÛÎÔñçÑÇ]/i', $word) && !in_array($word, $words))
|
||||
$words[] = $word;
|
||||
|
||||
$words = json_encode([
|
||||
"urls" => $urls,
|
||||
"words" => $words
|
||||
], JSON_UNESCAPED_UNICODE);
|
||||
|
||||
$key && DPTW::save_file(__DIR__ . "/../Public/data/json/" . $key . ".json", $words);
|
||||
|
||||
header("content-type: application/json");
|
||||
echo $words;
|
||||
|
||||
}
|
||||
|
||||
};
|
86
PHP/DPTW.MySQL.php
Normal file
86
PHP/DPTW.MySQL.php
Normal file
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace DPTW;
|
||||
|
||||
class MySQL{
|
||||
|
||||
public $dptw;
|
||||
private $connection = null;
|
||||
private $inputs;
|
||||
|
||||
public function __construct($dptw, $inputs = null){
|
||||
|
||||
$this->dptw = $dptw;
|
||||
$this->inputs = $inputs;
|
||||
|
||||
}
|
||||
|
||||
public static function process_query($query){
|
||||
|
||||
$subquery = "";
|
||||
|
||||
preg_replace_callback('/(, |\()\@([a-z0-9_]+)/i', function($values) use(&$subquery){
|
||||
$subquery .= ($subquery ? ", " : "") . "@" . $values[2] . " as `" . $values[2] . "`";
|
||||
}, $query);
|
||||
|
||||
return preg_replace('/;+$/', "", $query) . ($subquery ? ";select " . $subquery . ";" : "");
|
||||
}
|
||||
|
||||
public static function variable_type($value){
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function query($query, $variables = []){
|
||||
|
||||
$error = 0;
|
||||
$results = null;
|
||||
|
||||
if(!$this->connection){
|
||||
try{
|
||||
$this->connection = new \PDO(\DPTW::string_variables($this->dptw->settings(["mysql_string_connection", "string_connection"]), [
|
||||
"engine" => $this->dptw->settings(["mysql_engine", "engine"], $this->inputs),
|
||||
"database" => $this->dptw->settings(["mysql_database", "database"], $this->inputs),
|
||||
"host" => $this->dptw->settings(["mysql_host", "host"], $this->inputs),
|
||||
"port" => $this->dptw->settings(["mysql_port", "port"], $this->inputs)
|
||||
]), $this->dptw->settings(["mysql_user", "user"], $this->inputs), $this->dptw->settings(["mysql_password", "password"], $this->inputs));
|
||||
}catch(Exception $exception){
|
||||
$error |= 1 << 0;
|
||||
};
|
||||
};
|
||||
|
||||
if(!($error |= $this->connection ? 0 : 1 << 1)){
|
||||
|
||||
$query_processed = \DPTW::string_variables(self::process_query($query), array_merge($variables, [
|
||||
"session" => "'" . ($this->dptw->session_get() ?? "null") . ":" . (\DPTW::get_ip() ?? "null") . ":" . $_SERVER["HTTP_USER_AGENT"] . "'"
|
||||
]));
|
||||
// print_r($query_processed);
|
||||
($statement = $this->connection->prepare($query_processed))->execute();
|
||||
|
||||
do{
|
||||
try{
|
||||
$table = [];
|
||||
$fetch_all = $statement->fetchAll(\PDO::FETCH_ASSOC);
|
||||
foreach($statement->rowCount() == 0 ? [] : $fetch_all as $new_row){
|
||||
$row = [];
|
||||
foreach($new_row as $key => $value){
|
||||
$row[$key] = self::variable_type($value);
|
||||
};
|
||||
$table[] = $row;
|
||||
};
|
||||
$results["tables"][] = $table;
|
||||
}catch(\Exception $exception){};
|
||||
}while($statement->nextRowset());
|
||||
|
||||
if(preg_match('/(,\s+?|\()\@/', $query)){
|
||||
$l = count($results["tables"]) - 1;
|
||||
foreach($results["tables"][$l][0] as $key => $value)
|
||||
$results["variables"][$key] = self::variable_type($value);
|
||||
unset($results["tables"][$l]);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
return [$results, $error];
|
||||
}
|
||||
|
||||
}
|
202
PHP/DPTW.php
Normal file
202
PHP/DPTW.php
Normal file
@ -0,0 +1,202 @@
|
||||
<?php
|
||||
|
||||
class DPTW{
|
||||
|
||||
private static $default_settings = [
|
||||
"dictionary_urls" => "https://inciclopedia.org/wiki/Frikipedia",
|
||||
"request_root" => "/api"
|
||||
];
|
||||
private $inputs = [];
|
||||
private $request_variables = [];
|
||||
|
||||
public $dictionary;
|
||||
|
||||
public function __construct($inputs = null){
|
||||
|
||||
is_array($inputs) && ($this->inputs = $inputs);
|
||||
|
||||
class_exists('\DPTW\Dictionary') && ($this->dictionary = new \DPTW\Dictionary($this));
|
||||
class_exists('\DPTW\MySQL') && ($this->mysql = new \DPTW\MySQL($this));
|
||||
|
||||
$route = substr($_SERVER["REQUEST_URI"], strlen($this->settings("request_root")));
|
||||
($uri_variables_i = strpos($route, "?")) && ($route = substr($route, 0, $uri_variables_i));
|
||||
|
||||
isset(($_GET["v"])) && ($this->request_variables = json_decode(base64_decode($_GET["v"]), true));
|
||||
|
||||
switch($route){
|
||||
case "/dictionary/update":
|
||||
$this->dictionary->update();
|
||||
break;
|
||||
case "/sessions/update":
|
||||
$this->session_update(true);
|
||||
break;
|
||||
case "/scores/set":
|
||||
$this->set_score();
|
||||
break;
|
||||
case "/test/1":
|
||||
$this->test_1();
|
||||
break;
|
||||
case "/scores/list":
|
||||
$this->list_scores();
|
||||
break;
|
||||
default:
|
||||
self::response(404, "unknown_route");
|
||||
break;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public function request($key){
|
||||
return isset($this->request_variables[$key]) ? $this->request_variables[$key] : null;
|
||||
}
|
||||
|
||||
private static function save_file($path, $data){
|
||||
|
||||
$directory = "";
|
||||
$slash = strpos($path, "/") ? "/" : "\\";
|
||||
|
||||
if(preg_match('/^[a-z]\:/', $path)){
|
||||
$directory = substr($path, 0, 2);
|
||||
$path = substr($path, 2);
|
||||
};
|
||||
|
||||
$directory = preg_replace('/^(.+)[\/\\\\][^\/\\\\]+$/', "$1", $path);
|
||||
!file_exists($directory) && mkdir($directory, 0777, true);
|
||||
|
||||
file_put_contents($path, $data);
|
||||
|
||||
}
|
||||
|
||||
public function settings($keys, $inputs = null){
|
||||
|
||||
if(is_string($keys))
|
||||
$keys = [$keys];
|
||||
elseif(!is_array($keys))
|
||||
$keys = [];
|
||||
|
||||
foreach([$inputs, $this->inputs, \DPTW\Secrets::settings, self::$default_settings] as $subinputs)
|
||||
if(is_array($subinputs))
|
||||
foreach($keys as $key)
|
||||
if(isset($subinputs[$key]))
|
||||
return $subinputs[$key];
|
||||
return null;
|
||||
}
|
||||
|
||||
public static function string_variables($string, $variables){
|
||||
return preg_replace_callback('/\{([^\{\}]+)\}/', function($values) use($variables){
|
||||
return isset($variables[$values[1]]) ? $variables[$values[1]] : $values[0];
|
||||
}, $string);
|
||||
}
|
||||
|
||||
public static function get_ip(){
|
||||
foreach(["HTTP_X_REAL_IP", "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR", "REMOTE_ADDR"] as $key){
|
||||
if(!empty($_SERVER[$key]))
|
||||
return explode(",", $_SERVER[$key])[0];
|
||||
if($ips = getenv($key))
|
||||
return explode(",", $ips)[0];
|
||||
};
|
||||
return null;
|
||||
}
|
||||
|
||||
public function session_get(){
|
||||
return isset($_SESSION["dptw_session_id"]) ? $_SESSION["dptw_session_id"] : null;
|
||||
}
|
||||
|
||||
public static function response($code, $data){
|
||||
|
||||
header("content-type: application/json");
|
||||
echo json_encode([
|
||||
"ok" => true,
|
||||
"code" => $code,
|
||||
"content" => $data
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
private function session_update($response = false){
|
||||
|
||||
$results = $this->mysql->query("call sessions_update({session}, @error, @id);");
|
||||
$data = [
|
||||
"error" => $results[0]["variables"]["error"],
|
||||
"id" => $results[0]["variables"]["id"]
|
||||
];
|
||||
|
||||
if(!isset($_SESSION["dptw_session_id"]) || $_SESSION["dptw_session_id"] != $results[0]["variables"]["id"])
|
||||
$_SESSION["dptw_session_id"] = $results[0]["variables"]["id"];
|
||||
|
||||
$response && $this->response(200, $data);
|
||||
|
||||
return [$data["id"], $data["error"]];
|
||||
}
|
||||
|
||||
private function test_1(){
|
||||
|
||||
self::response(200, base64_encode(json_encode([
|
||||
"mode" => "testing_game",
|
||||
"page" => 1,
|
||||
"items_per_page" => 20,
|
||||
"nicks" => ""
|
||||
])));
|
||||
|
||||
}
|
||||
|
||||
private function set_score(){
|
||||
|
||||
list($session_id, $error) = $this->session_update();
|
||||
$id = null;
|
||||
|
||||
if(!$error){
|
||||
|
||||
$results = $this->mysql->query("call scores_set({session}, '{mode}', '{nick}', {score}, @error, @id);", [
|
||||
"mode" => $this->request("mode"),
|
||||
"nick" => $this->request("nick"),
|
||||
"score" => $this->request("score")
|
||||
]);
|
||||
|
||||
$error |= $results[0]["variables"]["error"];
|
||||
$id = $results[0]["variables"]["id"];
|
||||
|
||||
};
|
||||
|
||||
self::response(200, [
|
||||
"error" => $error,
|
||||
"id" => $id
|
||||
]);
|
||||
|
||||
return [$id, $error];
|
||||
}
|
||||
|
||||
private function list_scores(){
|
||||
|
||||
list($session_id, $error) = $this->session_update();
|
||||
$pages = null;
|
||||
$items = null;
|
||||
$scores = null;
|
||||
|
||||
if(!$error){
|
||||
|
||||
$results = $this->mysql->query("call scores_list({session}, '{mode}', {page}, {items_per_page}, '{nicks}', @error, @pages, @items);", [
|
||||
"mode" => $this->request("mode"),
|
||||
"page" => $this->request("page"),
|
||||
"items_per_page" => $this->request("items_per_page"),
|
||||
"nicks" => $this->request("nicks")
|
||||
]);
|
||||
|
||||
$error |= $results[0]["variables"]["error"];
|
||||
$pages = $results[0]["variables"]["pages"];
|
||||
$items = $results[0]["variables"]["items"];
|
||||
$scores = $results[0]["tables"][0];
|
||||
|
||||
};
|
||||
|
||||
self::response(200, [
|
||||
"error" => $error,
|
||||
"pages" => $pages,
|
||||
"items" => $items,
|
||||
"scores" => $scores
|
||||
]);
|
||||
|
||||
return [$pages, $items, $scores, $error];
|
||||
}
|
||||
|
||||
};
|
12
PHP/includes.php
Normal file
12
PHP/includes.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
|
||||
foreach([
|
||||
"DPTW",
|
||||
"DPTW.Secrets",
|
||||
"DPTW.MySQL",
|
||||
"DPTW.Dictionary"
|
||||
] as $file)
|
||||
if(file_exists($full_path = __DIR__ . "/" . $file . ".php"))
|
||||
include $full_path;
|
5
Public/api.php
Normal file
5
Public/api.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
include __DIR__ . "/../PHP/includes.php";
|
||||
|
||||
$dptw = new DPTW();
|
6
Public/api/.htaccess
Executable file
6
Public/api/.htaccess
Executable file
@ -0,0 +1,6 @@
|
||||
Header set Access-Control-Allow-Origin "*"
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^(.*)$ api/index.php?q=$1 [L,QSA]
|
5
Public/api/index.php
Normal file
5
Public/api/index.php
Normal file
@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
include __DIR__ . "/../../PHP/includes.php";
|
||||
|
||||
$dptw = new DPTW();
|
44
Public/ecma/DPTW.Dictionary.ecma.js
Executable file
44
Public/ecma/DPTW.Dictionary.ecma.js
Executable file
@ -0,0 +1,44 @@
|
||||
DPTW.Dictionary = function(dptw, input){
|
||||
|
||||
const self = this,
|
||||
words = [];
|
||||
let started = false;
|
||||
|
||||
this.maximum_characters = 0;
|
||||
|
||||
const construct = () => {};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
if(started){
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
self.add(dptw.settings("dictionary_files"), () => {
|
||||
end(true);
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
this.add = (inputs, callback) => dptw.load_blocks(
|
||||
dptw.set_array(inputs),
|
||||
json => json.words.forEach(word => {
|
||||
if(!words.includes(word)){
|
||||
words.push(word);
|
||||
word.length > self.maximum_characters && (self.maximum_characters = word.length);
|
||||
};
|
||||
}),
|
||||
callback,
|
||||
0
|
||||
);
|
||||
|
||||
this.get_random_word = () => words[Math.random() * words.length >> 0];
|
||||
|
||||
construct();
|
||||
|
||||
};
|
137
Public/ecma/DPTW.Errors.ecma.js
Normal file
137
Public/ecma/DPTW.Errors.ecma.js
Normal file
@ -0,0 +1,137 @@
|
||||
DPTW.Errors = function(dptw, inputs){
|
||||
|
||||
const self = this;
|
||||
let started = false,
|
||||
thread, toast_timer,
|
||||
toast_show_default,
|
||||
toast_show_ok,
|
||||
toast_show_info,
|
||||
toast_show_warn,
|
||||
toast_show_error;
|
||||
|
||||
let item_self = this.item_self;
|
||||
|
||||
const construct = () => {};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
if(started){
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
end(true);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
this.build_toast = () => {
|
||||
|
||||
item_self = self.item_self = dptw.kanvas.item_self.appendChild(document.createElement("ul"));
|
||||
|
||||
item_self.setAttribute("class", "toast");
|
||||
|
||||
toast_timer = dptw.settings("toast_timer");
|
||||
toast_show_default = dptw.settings("toast_show_default");
|
||||
toast_show_ok = dptw.settings("toast_show_ok");
|
||||
toast_show_info = dptw.settings("toast_show_info");
|
||||
toast_show_warn = dptw.settings("toast_show_warn");
|
||||
toast_show_error = dptw.settings("toast_show_error");
|
||||
|
||||
thread = dptw.kanvas.threads_add(thread_method);
|
||||
|
||||
};
|
||||
|
||||
const thread_method = () => {
|
||||
|
||||
const date = Date.now(),
|
||||
for_delete = [];
|
||||
|
||||
item_self.querySelectorAll(".toast-item").forEach(item => {
|
||||
if(date - Number(item.getAttribute("data-date")) > toast_timer)
|
||||
for_delete.push(item);
|
||||
});
|
||||
|
||||
for_delete.forEach(item => item.remove());
|
||||
|
||||
};
|
||||
|
||||
this.add_toast = (type, message, variables) => {
|
||||
|
||||
const text = dptw.i18n.get(message, variables),
|
||||
log_mode = {
|
||||
info : "log",
|
||||
warn : "warn",
|
||||
erro : "error",
|
||||
error : "error",
|
||||
ok : "log"
|
||||
}[type] || "log";
|
||||
|
||||
type = type.toLowerCase();
|
||||
|
||||
if(
|
||||
(type == "ok" && toast_show_ok) ||
|
||||
(type == "warn" && toast_show_warn) ||
|
||||
(["error", "erro"].includes(type) && toast_show_error) ||
|
||||
(type == "info" && toast_show_info) ||
|
||||
(!["ok", "warn", "error", "erro", "info"].includes(type) && toast_show_default)
|
||||
){
|
||||
|
||||
const item = item_self.appendChild(document.createElement("li"));
|
||||
|
||||
item.setAttribute("class", "toast-item");
|
||||
item.setAttribute("data-date", Date.now());
|
||||
item.setAttribute("data-type", type);
|
||||
item.setAttribute("data-i18n", message);
|
||||
variables && item.setAttribute("data-i18n-variables", btoa(JSON.stringify(variables)));
|
||||
item.setAttribute("title", text);
|
||||
|
||||
item.innerHTML = text;
|
||||
|
||||
};
|
||||
|
||||
console[log_mode]("%c" + text.replace(/<([^> ]+)[^>]*>/g, (...arguments) => {
|
||||
|
||||
const tag = arguments[1].toLowerCase();
|
||||
|
||||
return (
|
||||
tag == "li" ? "\n - " :
|
||||
["p", "/p", "br", "br/"].includes(tag) ? "\n" :
|
||||
"");
|
||||
}), {
|
||||
info : "color:#00F;",
|
||||
ok : "color:#0F0;"
|
||||
}[type] || null);
|
||||
|
||||
};
|
||||
|
||||
this.validate = (code, messages, variables, error_message, ok_message) => {
|
||||
|
||||
const variables_base64 = btoa(JSON.stringify(variables || (variables = {})));
|
||||
|
||||
variables.list = ``;
|
||||
variables.code = code;
|
||||
|
||||
for(let i = 0; 1 << i <= code; i ++)
|
||||
if((1 << i) & code){
|
||||
|
||||
const i18n = messages[i] || "error_message_" + i,
|
||||
text = dptw.i18n.get(i18n, variables);
|
||||
|
||||
variables.list += `<li class="error" data-i18n="` + i18n + `" data-i18n-variables="` + variables_base64 + `" title="` + i18n + `">` + text + `</li>`;
|
||||
};
|
||||
|
||||
if(code)
|
||||
error_message && self.add_toast("error", error_message, variables);
|
||||
else
|
||||
ok_message && self.add_toast("ok", ok_message, variables);
|
||||
|
||||
return !code;
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
72
Public/ecma/DPTW.I18N.ecma.js
Executable file
72
Public/ecma/DPTW.I18N.ecma.js
Executable file
@ -0,0 +1,72 @@
|
||||
DPTW.I18N = function(dptw, input){
|
||||
|
||||
const self = this,
|
||||
sentences = {};
|
||||
let started = false,
|
||||
overwrite_add, default_text,
|
||||
selected = null;
|
||||
|
||||
const construct = () => {};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
if(started){
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
overwrite_add = dptw.settings(["i18n_overwrite", "overwrite"]);
|
||||
selected = dptw.settings(["default_language", "language"]);
|
||||
default_text = dptw.settings("default_text");
|
||||
|
||||
self.add(dptw.settings("i18n_files"), true, () => {
|
||||
end(true);
|
||||
});
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
this.add = (inputs, overwrite, callback) => dptw.load_blocks(
|
||||
dptw.set_array(inputs),
|
||||
json => {
|
||||
typeof overwrite != "boolean" && (overwrite = overwrite_add);
|
||||
for(const language in json){
|
||||
!sentences[language] && (sentences[language] = {});
|
||||
for(const key in json[language])
|
||||
(overwrite || sentences[language][key] === undefined) && (sentences[language][key] = json[language][key]);
|
||||
};
|
||||
},
|
||||
callback,
|
||||
0
|
||||
);
|
||||
|
||||
const get = keys => {
|
||||
|
||||
const l = (keys = (
|
||||
keys instanceof Array ? keys :
|
||||
typeof keys == "string" ? [keys] :
|
||||
[]).filter((key, i, array) => typeof key == "string" && array.indexOf(key) == i)).length;
|
||||
|
||||
if(l){
|
||||
|
||||
const languages = [selected].concat(Object.keys(sentences)),
|
||||
m = languages.length;
|
||||
|
||||
for(let j = 0; j < m; j ++)
|
||||
if(languages[j] && sentences[languages[j]])
|
||||
for(let i = 0; i < l; i ++)
|
||||
if(keys[i] && sentences[languages[j]][keys[i]] !== undefined)
|
||||
return sentences[languages[j]][keys[i]];
|
||||
return keys[0];
|
||||
};
|
||||
return default_text;
|
||||
};
|
||||
|
||||
this.get = (keys, variables) => dptw.string_variables(get(keys), variables);
|
||||
|
||||
construct();
|
||||
|
||||
};
|
342
Public/ecma/DPTW.Scores.ecma.js
Normal file
342
Public/ecma/DPTW.Scores.ecma.js
Normal file
@ -0,0 +1,342 @@
|
||||
DPTW.Scores = function(dptw, inputs){
|
||||
|
||||
const self = this;
|
||||
let started = false,
|
||||
nick_maximum_length, zeros_fill_score,
|
||||
pages,
|
||||
scores_show_save_ok_message,
|
||||
scores_show_save_error_message,
|
||||
scores_show_load_ok_message,
|
||||
scores_show_load_error_message,
|
||||
game_mode_name;
|
||||
|
||||
const SETTER = 10;
|
||||
|
||||
const construct = () => {};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
if(started){
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
nick_maximum_length = dptw.settings("nick_maximum_length");
|
||||
zeros_fill_score = dptw.settings("zeros_fill_score");
|
||||
scores_show_save_ok_message = dptw.settings("scores_show_save_ok_message");
|
||||
scores_show_save_error_message = dptw.settings("scores_show_save_error_message");
|
||||
scores_show_load_ok_message = dptw.settings("scores_show_load_ok_message");
|
||||
scores_show_load_error_message = dptw.settings("scores_show_load_error_message");
|
||||
game_mode_name = dptw.settings("game_mode_name");
|
||||
|
||||
end(true);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
const button = (key, x, y, width, height) => ({
|
||||
type : "rectangle",
|
||||
x : x,
|
||||
y : y,
|
||||
width : width,
|
||||
height : height,
|
||||
background : "rgba(255, 255, 255, .3)",
|
||||
border_color : "#000",
|
||||
border_width : .1,
|
||||
childs : [{
|
||||
type : "text",
|
||||
x : width / 2,
|
||||
y : height / 2,
|
||||
baseline : "middle",
|
||||
align : "center",
|
||||
text : dptw.i18n.get(key),
|
||||
size : height,
|
||||
background : "#FFF",
|
||||
shadow : [[0, 0, .2, "#000"]]
|
||||
}],
|
||||
on_click : "{object_name}.scores." + key
|
||||
});
|
||||
|
||||
const label_text = (x, y, align, text) => ({
|
||||
type : "text",
|
||||
x : x,
|
||||
y : y,
|
||||
baseline : "middle",
|
||||
align : align,
|
||||
size : 1.5,
|
||||
style : "bold",
|
||||
background : "#FFF",
|
||||
shadow : [[0, 0, .2, "#000"]],
|
||||
text : text
|
||||
});
|
||||
|
||||
this.build = () => {
|
||||
|
||||
const half = dptw.kanvas.cells / 2;
|
||||
|
||||
dptw.kanvas.map[SETTER] = {type : "block", x : -half, y : -half, childs : [
|
||||
{type : "rectangle", x : 0, y : 0, width : dptw.kanvas.cells, height : dptw.kanvas.cells, background : "#000", alpha : .8},
|
||||
button("previous", 2, dptw.kanvas.cells - 4, 11, 2.5),
|
||||
button("next", dptw.kanvas.cells - 13, dptw.kanvas.cells - 4, 11, 2.5),
|
||||
button("back", 14, dptw.kanvas.cells - 4, 12, 2.5),
|
||||
label_text(2, dptw.kanvas.cells - 5.5, "left", dptw.i18n.get("page")),
|
||||
label_text(dptw.kanvas.cells - 2, dptw.kanvas.cells - 5.5, "right", 1),
|
||||
{type : "block", x : 2, y : 2, childs : []}
|
||||
]};
|
||||
|
||||
load_scores();
|
||||
|
||||
};
|
||||
|
||||
this.build_add = () => {
|
||||
|
||||
const half = dptw.kanvas.cells / 2,
|
||||
key_size = dptw.kanvas.cells / 12,
|
||||
margin = dptw.kanvas.cells - (key_size * 10),
|
||||
items = [],
|
||||
key_margin = key_size * .05,
|
||||
key_width = key_size - (2 * key_margin),
|
||||
character_position = key_width / 2,
|
||||
half_key = key_size / 2;
|
||||
let keys_x = half_key,
|
||||
keys_y = key_size;
|
||||
|
||||
items.push({
|
||||
type : "rectangle",
|
||||
x : key_size - .1,
|
||||
y : key_size * 6,
|
||||
width : key_size * 10,
|
||||
height : key_size,
|
||||
background : "rgba(255, 255, 255, .3)",
|
||||
border_color : "#000",
|
||||
border_width : .1,
|
||||
childs : [{
|
||||
type : "text",
|
||||
x : key_size * 5,
|
||||
y : half_key,
|
||||
baseline : "middle",
|
||||
align : "center",
|
||||
text : "",
|
||||
size : key_width,
|
||||
background : "#FFF",
|
||||
shadow : [[0, 0, .2, "#000"]]
|
||||
}]
|
||||
});
|
||||
|
||||
[
|
||||
"1234567890<",
|
||||
"qwertyuiop",
|
||||
"asdfghjkl",
|
||||
"zxcvbnm"
|
||||
].forEach((set, i) => set.split("").forEach((character, j) => items.push({
|
||||
type : "rectangle",
|
||||
x : (i * half_key) + keys_x + ((j * key_size) + key_margin),
|
||||
y : keys_y + ((i * key_size) + key_margin),
|
||||
width : key_width,
|
||||
height : key_width,
|
||||
background : "rgba(255, 255, 255, .3)",
|
||||
border_color : "#000",
|
||||
border_width : .1,
|
||||
childs : [{
|
||||
type : "text",
|
||||
x : character_position,
|
||||
y : character_position,
|
||||
baseline : "middle",
|
||||
align : "center",
|
||||
text : (character = character.toUpperCase()),
|
||||
size : key_width,
|
||||
background : "#FFF",
|
||||
shadow : [[0, 0, .2, "#000"]]
|
||||
}],
|
||||
on_click : "(() => {object_name}.scores.set_nick('" + character + "'))"
|
||||
})));
|
||||
|
||||
["not_save", "save"].forEach((key, i) => items.push({
|
||||
type : "rectangle",
|
||||
x : (key_size * 5 * i) + half_key + (key_size * i),
|
||||
y : key_size * 8,
|
||||
width : key_size * 5,
|
||||
height : key_size,
|
||||
background : "rgba(255, 255, 255, .3)",
|
||||
border_color : "#000",
|
||||
border_width : .1,
|
||||
childs : [{
|
||||
type : "text",
|
||||
x : key_size * 2.5,
|
||||
y : half_key,
|
||||
baseline : "middle",
|
||||
align : "center",
|
||||
text : dptw.i18n.get(key),
|
||||
size : key_width,
|
||||
background : "#FFF",
|
||||
shadow : [[0, 0, .2, "#000"]]
|
||||
}],
|
||||
on_click : "{object_name}.scores." + key
|
||||
}));
|
||||
|
||||
dptw.kanvas.map[SETTER] = {type : "block", x : -half, y : -half, childs : items};
|
||||
|
||||
};
|
||||
|
||||
this.set_nick = character => {
|
||||
|
||||
if(character == "<")
|
||||
with(dptw.kanvas.map[SETTER].childs[0].childs[0])text = text.substr(0, text.length - 1);
|
||||
else
|
||||
with(dptw.kanvas.map[SETTER].childs[0].childs[0])text.length < nick_maximum_length && (text += character);
|
||||
|
||||
};
|
||||
|
||||
this.save = () => {
|
||||
|
||||
const nick = dptw.kanvas.map[SETTER].childs[0].childs[0].text;
|
||||
|
||||
if(!nick){
|
||||
alert("need_nick");
|
||||
return;
|
||||
};
|
||||
|
||||
const variables = {
|
||||
mode : game_mode_name,
|
||||
nick : nick,
|
||||
score : Number(dptw.kanvas.map[dptw.SCORE].text)
|
||||
}
|
||||
|
||||
dptw.load_file("/api/scores/set?v=" + btoa(JSON.stringify(variables)), response => {
|
||||
|
||||
response = JSON.parse(response);
|
||||
|
||||
if(dptw.errors.validate(
|
||||
response.content.error,
|
||||
[].concat(
|
||||
dptw.sql_session_errors,
|
||||
[
|
||||
"mode_null",
|
||||
"mode_empty",
|
||||
"mode_not_exists",
|
||||
"nick_null",
|
||||
"nick_empty",
|
||||
"score_null",
|
||||
"score_lower_0"
|
||||
]
|
||||
),
|
||||
variables,
|
||||
scores_show_save_error_message && "save_scores_error",
|
||||
scores_show_save_ok_message && "save_scores_ok"
|
||||
)){
|
||||
dptw.kanvas.map[SETTER] = null;
|
||||
dptw.show_menu();
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
this.not_save = () => {
|
||||
|
||||
dptw.kanvas.map[SETTER] = null;
|
||||
dptw.show_menu();
|
||||
|
||||
};
|
||||
|
||||
this.back = () => {
|
||||
|
||||
dptw.kanvas.map[SETTER] = null;
|
||||
dptw.show_menu();
|
||||
|
||||
};
|
||||
|
||||
this.next = () => {
|
||||
|
||||
const page_block = dptw.kanvas.map[SETTER].childs[5],
|
||||
page = Number(page_block.text);
|
||||
|
||||
if(page < pages){
|
||||
page_block.text = page + 1;
|
||||
load_scores();
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
this.previous = () => {
|
||||
|
||||
const page_block = dptw.kanvas.map[SETTER].childs[5];
|
||||
|
||||
if(page_block.text != 1){
|
||||
page_block.text = Number(page_block.text) - 1;
|
||||
load_scores();
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
const score_text = (x, y, align, text) => ({
|
||||
type : "text",
|
||||
x : x,
|
||||
y : y,
|
||||
baseline : "middle",
|
||||
align : align,
|
||||
size : 2.5,
|
||||
style : "bold",
|
||||
background : "#FFF",
|
||||
shadow : [[0, 0, .2, "#000"]],
|
||||
text : text
|
||||
});
|
||||
|
||||
const load_scores = () => {
|
||||
|
||||
const variables = {
|
||||
mode : "testing_game",
|
||||
page : Number(dptw.kanvas.map[SETTER].childs[5].text),
|
||||
items_per_page : 15,
|
||||
nicks : ""
|
||||
};
|
||||
|
||||
dptw.load_file("/api/scores/list?v=" + btoa(JSON.stringify(variables)), response => {
|
||||
|
||||
response = JSON.parse(response);
|
||||
dptw.kanvas.map[SETTER].childs[6].childs = [];
|
||||
|
||||
pages = response.content.pages;
|
||||
|
||||
dptw.errors.validate(
|
||||
response.content.error,
|
||||
[].concat(
|
||||
dptw.sql_session_errors,
|
||||
[
|
||||
"mode_null",
|
||||
"mode_empty",
|
||||
"mode_not_exists",
|
||||
"page_null",
|
||||
"page_lower_1",
|
||||
"items_per_page_null",
|
||||
"items_per_page_lower_1",
|
||||
"nicks_null"
|
||||
]
|
||||
),
|
||||
variables,
|
||||
scores_show_load_error_message && "load_scores_error",
|
||||
scores_show_load_ok_message && "load_scores_ok"
|
||||
) &&
|
||||
response.content.scores.forEach((score, i) => {
|
||||
|
||||
const y = 1 + (i * 2);
|
||||
|
||||
dptw.kanvas.map[SETTER].childs[6].childs.push(
|
||||
score_text(0, y, "left", (zeros_fill_score + score.position).slice(-zeros_fill_score.length)),
|
||||
score_text(10, y, "left", score.nick),
|
||||
score_text(20, y, "left", score.date_in.replace(/^[0-9]{2}([0-9]{2})\-([0-9]{2})\-([0-9]{2}) .+$/, "$1$2$3")),
|
||||
score_text(dptw.kanvas.cells - 4, y, "right", (zeros_fill_score + score.score).slice(-zeros_fill_score.length))
|
||||
);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
838
Public/ecma/DPTW.ecma.js
Executable file
838
Public/ecma/DPTW.ecma.js
Executable file
@ -0,0 +1,838 @@
|
||||
DPTW = function(input){
|
||||
|
||||
const self = this,
|
||||
default_settings = {
|
||||
object_name : "dptw",
|
||||
dptw_autostart : true,
|
||||
settings_files : [
|
||||
"/json/DPTW.settings.json",
|
||||
"/json/DPTW.settings.secrets.json"
|
||||
],
|
||||
position : "body",
|
||||
ajax_timeout : 2000,
|
||||
dictionary_file : "/json/DPTW.dictionary.json",
|
||||
class : "dptw"
|
||||
},
|
||||
sprites = {},
|
||||
sounds = {},
|
||||
images = {};
|
||||
let started = false,
|
||||
game_working = false,
|
||||
game_thread = null,
|
||||
difficulty, character_size, last_word_y, velocity, velocity_increment, current_velocity,
|
||||
text_box, text_cache = "",
|
||||
destruction_animations, destruction_size, destruction_sounds,
|
||||
overwrite_sprites, overwrite_sounds,
|
||||
scream_sounds, ok_sounds,
|
||||
characters_sizer, reduce_life_value, increase_life_value, allow_alter_style, characters_color,
|
||||
allow_reduce_score, character_ok_points, character_wrong_points, word_ok_points, word_wrong_points,
|
||||
multiplier, allow_points_multiplier,
|
||||
zeros_fill_score, allow_pause,
|
||||
game_status = "loading",
|
||||
font_family, main_background, secondary_background,
|
||||
session_time_update, session_last_update = 0,
|
||||
sessions_show_update_ok_message,
|
||||
sessions_show_update_error_message,
|
||||
word_number, word_proportional_timeout, last_word_time, word_enabled_random_timer,
|
||||
allow_ignore_case,
|
||||
multiplier_value;
|
||||
|
||||
this.sql_session_errors = [
|
||||
"sql_exception",
|
||||
"session_string_null",
|
||||
"session_empty",
|
||||
"session_bad_format",
|
||||
"session_id_string_empty",
|
||||
"session_id_string_bad",
|
||||
"session_string_incompleted",
|
||||
"session_null",
|
||||
"session_not_id",
|
||||
"session_not_exists",
|
||||
"session_date_out",
|
||||
"session_timeout",
|
||||
null
|
||||
];
|
||||
|
||||
let main_menu = self.main_menu;
|
||||
|
||||
let kanvas = self.kanvas;
|
||||
let i18n = this.i18n;
|
||||
let errors = this.errors;
|
||||
let dictionary = this.dictionary;
|
||||
let scores = this.scores;
|
||||
|
||||
const GAME = 2;
|
||||
const MAIN_MENU = 5;
|
||||
const FPS = 4;
|
||||
const WORDS = 0;
|
||||
const SHOTS = 1;
|
||||
const DESTRUCTIONS = 2;
|
||||
const LIFE = 6;
|
||||
const PAUSE = 7;
|
||||
const SCORE = this.SCORE = 8;
|
||||
|
||||
const construct = () => {
|
||||
|
||||
self.kanvas = kanvas = new Kanvas({
|
||||
...default_settings,
|
||||
...(typeof input != "object" ? {} : input),
|
||||
autostart : false
|
||||
});
|
||||
|
||||
kanvas.extends(self);
|
||||
|
||||
DPTW.I18N && (i18n = self.i18n = new DPTW.I18N(self, input));
|
||||
DPTW.Errors && (errors = self.errors = new DPTW.Errors(self, input));
|
||||
DPTW.Dictionary && (dictionary = self.dictionary = new DPTW.Dictionary(self, input));
|
||||
DPTW.Scores && (scores = self.scores = new DPTW.Scores(self, input));
|
||||
|
||||
self.settings("dptw_autostart") && self.start();
|
||||
|
||||
};
|
||||
|
||||
this.start = callback => {
|
||||
|
||||
const end = status => typeof callback == "function" && callback(status);
|
||||
|
||||
if(started){
|
||||
end(false);
|
||||
return false;
|
||||
};
|
||||
started = true;
|
||||
|
||||
self.load_blocks(
|
||||
self.set_array(self.settings("settings_files")),
|
||||
json => self.settings_add(json, true),
|
||||
() => {
|
||||
|
||||
difficulty = self.settings("difficulty");
|
||||
velocity = self.settings("velocity");
|
||||
velocity_increment = self.settings("velocity_increment");
|
||||
destruction_size = self.settings("destruction_size");
|
||||
overwrite_sprites = self.settings(["overwrite_sprites", "overwrite"]);
|
||||
overwrite_sounds = self.settings(["overwrite_sounds", "overwrite"]);
|
||||
characters_sizer = self.settings("characters_sizer");
|
||||
reduce_life_value = self.settings("reduce_life_value");
|
||||
increase_life_value = self.settings("increase_life_value");
|
||||
allow_alter_style = self.settings("allow_alter_style");
|
||||
characters_color = self.settings("characters_color");
|
||||
word_proportional_timeout = self.settings("word_proportional_timeout");
|
||||
word_enabled_random_timer = self.settings("word_enabled_random_timer");
|
||||
allow_ignore_case = self.settings("allow_ignore_case");
|
||||
|
||||
allow_reduce_score = self.settings("allow_reduce_score");
|
||||
character_ok_points = self.settings("character_ok_points");
|
||||
word_ok_points = self.settings("word_wrong_points");
|
||||
character_wrong_points = self.settings("character_wrong_points");
|
||||
word_wrong_points = self.settings("word_wrong_points");
|
||||
allow_points_multiplier = self.settings("allow_points_multiplier");
|
||||
zeros_fill_score = self.settings("zeros_fill_score");
|
||||
allow_pause = self.settings("allow_pause");
|
||||
multiplier_value = self.settings("multiplier_value");
|
||||
|
||||
font_family = self.settings("font_family");
|
||||
main_background = self.settings("main_background");
|
||||
secondary_background = self.settings("secondary_background");
|
||||
|
||||
session_time_update = self.settings("session_time_update");
|
||||
sessions_show_update_ok_message = dptw.settings("sessions_show_update_ok_message");
|
||||
sessions_show_update_error_message = dptw.settings("sessions_show_update_error_message");
|
||||
|
||||
i18n.start(status => {
|
||||
self.load_sprites(self.settings("sprites_files"), true, () => {
|
||||
|
||||
const destruction_animations_keys = self.settings("destruction_animations");
|
||||
|
||||
destruction_animations = [];
|
||||
|
||||
(
|
||||
destruction_animations_keys instanceof Array ? destruction_animations_keys : typeof destruction_animations_keys == "string" ? [destruction_animations_keys] : []
|
||||
).forEach(key => sprites[key] && destruction_animations.push({
|
||||
sprite : sprites[key].path,
|
||||
animation : sprites[key].animation,
|
||||
frames_per_second : sprites[key].frames_per_second
|
||||
}));
|
||||
|
||||
self.load_sounds(self.settings("sounds_files"), true, () => {
|
||||
|
||||
const sets = {
|
||||
destruction_sounds : destruction_sounds = [],
|
||||
scream_sounds : scream_sounds = [],
|
||||
ok_sounds : ok_sounds = []
|
||||
};
|
||||
|
||||
for(const key in sets){
|
||||
|
||||
const set = self.settings(key);
|
||||
|
||||
(set instanceof Array ? set : typeof set == "string" ? [set] : []).forEach(subkey => sounds[subkey] && sets[key].push({
|
||||
sound : sounds[subkey].path,
|
||||
fragments : sounds[subkey].fragments,
|
||||
volume : sounds[subkey].volume || 1
|
||||
}));
|
||||
|
||||
};
|
||||
|
||||
kanvas.start(status => {
|
||||
dictionary.start(status => {
|
||||
scores.start(status => {
|
||||
|
||||
builder();
|
||||
game_thread = dptw.threads_add(game_thread_method);
|
||||
|
||||
end(status);
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
0
|
||||
);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
this.load_file = (url, callback) => {
|
||||
|
||||
let ended = false;
|
||||
const ajax = new XMLHttpRequest(),
|
||||
end = error_message => {
|
||||
if(ended)
|
||||
return;
|
||||
ended = true;
|
||||
callback(ajax.responseText, ajax.status, ajax.readyState, error_message == "OK", error_message);
|
||||
},
|
||||
date = Date.now(),
|
||||
timeout = self.settings(["ajax_timeout", "timeout"]);
|
||||
|
||||
ajax.open("get", url, true);
|
||||
ajax.timeout = timeout;
|
||||
ajax.onreadystatechange = () => {
|
||||
if(ended)
|
||||
return;
|
||||
if(ajax.readyState == 4)
|
||||
end((ajax.status >= 200 && ajax.status < 300) || [301, 302, 304].includes(ajax.status) ? "OK" : "HTTP_ERROR");
|
||||
else if(Date.now() - date > timeout)
|
||||
end("FORCED_TIMEOUT");
|
||||
};
|
||||
ajax.send(null);
|
||||
|
||||
ajax.onerror = () => end("ERROR");
|
||||
ajax.onabort = () => end("ABORTED");
|
||||
ajax.ontimeout = () => end("TIMEOUT");
|
||||
|
||||
return ajax;
|
||||
};
|
||||
|
||||
this.set_array = variable => (
|
||||
variable instanceof Array ? variable :
|
||||
["string", "object"].includes(typeof variable) ? [variable] :
|
||||
[])
|
||||
|
||||
this.load_blocks = (inputs, fragment_callback, callback, i) => {
|
||||
|
||||
if(i == inputs.length){
|
||||
typeof callback == "function" && callback();
|
||||
return;
|
||||
};
|
||||
|
||||
const end = () => self.load_blocks(inputs, fragment_callback, callback, i + 1);
|
||||
|
||||
if(inputs[i]){
|
||||
if(inputs[i] instanceof Array)
|
||||
self.load_blocks(inputs[i], fragment_callback, end, 0);
|
||||
else if(typeof inputs[i] == "object"){
|
||||
fragment_callback(inputs[i]);
|
||||
end();
|
||||
}else if(typeof inputs[i] == "string"){
|
||||
|
||||
let json;
|
||||
|
||||
try{
|
||||
json = JSON.parse(inputs[i]);
|
||||
}catch(exception){};
|
||||
|
||||
if(json)
|
||||
self.load_blocks(self.set_array(json), fragment_callback, end, 0);
|
||||
else
|
||||
self.load_file(inputs[i], response => {
|
||||
try{
|
||||
json = JSON.parse(response);
|
||||
}catch(exception){};
|
||||
self.load_blocks(self.set_array(json), fragment_callback, end, 0);
|
||||
});
|
||||
}else
|
||||
end();
|
||||
}else
|
||||
end();
|
||||
|
||||
};
|
||||
|
||||
this.load_sprites = (inputs, overwrite, callback) => this.load_blocks(inputs instanceof Array ? inputs : inputs ? [inputs] : [], json => {
|
||||
typeof overwrite != "boolean" && (overflow = overwrite_sprites);
|
||||
(json.sprites || []).forEach(sprite => {
|
||||
if(
|
||||
sprite &&
|
||||
sprite.enabled &&
|
||||
sprite.key
|
||||
){
|
||||
if(sprite.animation)
|
||||
(overwrite || !sprites[sprite.key]) && (sprites[sprite.key] = sprite);
|
||||
else
|
||||
(overwrite || !images[sprite.key]) && (images[sprite.key] = sprite);
|
||||
};
|
||||
});
|
||||
}, callback, 0);
|
||||
|
||||
this.load_sounds = (inputs, overwrite, callback) => this.load_blocks(inputs instanceof Array ? inputs : inputs ? [inputs] : [], json => {
|
||||
typeof overwrite != "boolean" && (overflow = overwrite_sounds);
|
||||
(json.sounds || []).forEach(sound => (
|
||||
sound &&
|
||||
sound.enabled &&
|
||||
sound.key &&
|
||||
(overwrite || !sounds[sound.key]) &&
|
||||
(sounds[sound.key] = sound)
|
||||
));
|
||||
}, callback, 0);
|
||||
|
||||
const create_button = (key, x, y, width, height) => ({
|
||||
type : "rectangle",
|
||||
x : x,
|
||||
y : y,
|
||||
width : width || 16,
|
||||
height : height || 3,
|
||||
background : "rgba(255, 255, 255, .3)",
|
||||
on_click : "{object_name}.go_to_" + key,
|
||||
childs : [{
|
||||
type : "text",
|
||||
x : 8,
|
||||
y : .5,
|
||||
align : "center",
|
||||
baseline : "top",
|
||||
text : i18n.get(key),
|
||||
background : "#FFF",
|
||||
size : 2,
|
||||
border_width : .05,
|
||||
border_color : "#000",
|
||||
style : "bold",
|
||||
family : font_family,
|
||||
shadows : [
|
||||
[0, 0, .125, "#000"],
|
||||
[0, 0, .25, "#000"],
|
||||
[0, 0, .5, "#000"],
|
||||
[0, 0, 1, "#000"]
|
||||
]
|
||||
}]
|
||||
});
|
||||
|
||||
const show_menu = this.show_menu = () => {
|
||||
|
||||
const half = kanvas.cells / 2,
|
||||
menu = {type : "block", x : -half, y : -half, childs : [
|
||||
{type : "rectangle", x : 0, y : 0, width : kanvas.cells, height : kanvas.cells, background : "#000", alpha : .7},
|
||||
{type : "block", x : half - 8, y : half - 9.5, childs : [{
|
||||
type : "text",
|
||||
x : 8,
|
||||
y : -5,
|
||||
align : "center",
|
||||
baseline : "top",
|
||||
text : i18n.get("test_mode"),
|
||||
background : "#FFF",
|
||||
size : 4,
|
||||
border_width : .05,
|
||||
border_color : "#000",
|
||||
style : "bold",
|
||||
family : font_family,
|
||||
shadows : [
|
||||
[0, 0, .25, "#000"]
|
||||
]
|
||||
}]}
|
||||
]};
|
||||
|
||||
game_status = "main_menu";
|
||||
|
||||
["start", "settings", "scores", "manual", "credits"].forEach((key, i) => menu.childs[1].childs.push(create_button(key, 0, (i * 4) + .5)));
|
||||
|
||||
kanvas.map[MAIN_MENU] = menu;
|
||||
|
||||
};
|
||||
|
||||
const hide_menu = () => kanvas.map[MAIN_MENU] = null;
|
||||
|
||||
const builder = () => {
|
||||
|
||||
const half = kanvas.cells / 2,
|
||||
margin = kanvas.cells / 8,
|
||||
padding = half + margin,
|
||||
full_padding = padding * 2,
|
||||
margined = half - margin;
|
||||
|
||||
game_status = "building";
|
||||
|
||||
errors.build_toast();
|
||||
|
||||
kanvas.map.push(
|
||||
{type : "rectangle", x : -kanvas.cells_x, y : -kanvas.cells_y, width : kanvas.cells_x * 2, height : kanvas.cells_y * 2, background : "#000", childs : images[secondary_background] ? [
|
||||
{type : "image", x : 0, y : 0, width : kanvas.cells_x * 2, height : kanvas.cells_y * 2, url : images[secondary_background].path},
|
||||
{type : "rectangle", x : 0, y : 0, width : kanvas.cells_x, height : kanvas.cells_y, background : "#000", alpha : .85}
|
||||
] : []},
|
||||
{type : "cache", name : "main_background_back", x : -padding, y : -padding, width : full_padding, height : full_padding, childs : [
|
||||
images[main_background] ? {type : "image", x : -half, y : -half, width : kanvas.cells, height : kanvas.cells, url : images[main_background].path} : null,
|
||||
{type : "rectangle", x : -half, y : -half, width : kanvas.cells, height : kanvas.cells, background : "#246", alpha : .5}
|
||||
]},
|
||||
null,
|
||||
{type : "cache", name : "main_background_fore", x : -half, y : -half, width : kanvas.cells, height : kanvas.cells, childs : [
|
||||
{type : "rectangle", x : -half, y : -half, width : kanvas.cells, height : margin, background : [0, -half, 0, -margined, [
|
||||
[0, "#000"],
|
||||
[1, "rgba(0, 0, 0, 0)"]
|
||||
]]},
|
||||
{type : "rectangle", x : -half, y : -half, width : margin, height : kanvas.cells, background : [-half, 0, -margined, 0, [
|
||||
[0, "#000"],
|
||||
[1, "rgba(0, 0, 0, 0)"]
|
||||
]]},
|
||||
{type : "rectangle", x : -half, y : margined, width : kanvas.cells, height : margin, background : [0, half, 0, margined, [
|
||||
[0, "#000"],
|
||||
[1, "rgba(0, 0, 0, 0)"]
|
||||
]]},
|
||||
{type : "rectangle", x : margined, y : -half, width : margin, height : kanvas.cells, background : [half, 0, margined, 0, [
|
||||
[0, "#000"],
|
||||
[1, "rgba(0, 0, 0, 0)"]
|
||||
]]},
|
||||
{type : "rectangle", x : -half, y : -half, width : kanvas.cells, height : kanvas.cells, border_color : "#147", border_width : .4, shadow : [
|
||||
[0, 0, .5, "#28F"]
|
||||
]}
|
||||
]},
|
||||
{type : "text", x : kanvas.cells_x, y : -kanvas.cells_y, align : "right", baseline : "top", text : "0.00", background : "#FFF"},
|
||||
null,
|
||||
{type : "rectangle", x : -half + 1, y : -half + 1, width : kanvas.cells - 2, height : 1, alpha : .3, border_color : "#000", border_width : .1, background : "#F00", shadow : [
|
||||
[0, 0, .1, "#FFF"]
|
||||
], childs : [
|
||||
{type : "rectangle", x : .1, y : .1, width : kanvas.cells - 2.2, full : kanvas.cells - 2.2, height : .8, background : "#0F0"}
|
||||
]},
|
||||
null,
|
||||
{type : "text", x : kanvas.cells_x, y : kanvas.cells_y, baseline : "bottom", align : "right", text : zeros_fill_score, style : "bold", background : "#FFF", size : 2},
|
||||
null
|
||||
);
|
||||
|
||||
show_menu();
|
||||
|
||||
kanvas.on_screen_change.add(() => {
|
||||
with(kanvas.map[0]){
|
||||
x = -kanvas.cells_x;
|
||||
y = -kanvas.cells_y;
|
||||
};
|
||||
[kanvas.map[0], kanvas.map[0].childs[0], kanvas.map[0].childs[1]].forEach(level => {
|
||||
if(level){
|
||||
level.width = kanvas.cells_x * 2;
|
||||
level.height = kanvas.cells_y * 2;
|
||||
};
|
||||
});
|
||||
with(kanvas.map[FPS]){
|
||||
x = kanvas.cells_x - 1;
|
||||
y = -kanvas.cells_y + .3;
|
||||
};
|
||||
with(kanvas.map[SCORE]){
|
||||
x = kanvas.cells_x;
|
||||
y = kanvas.cells_y;
|
||||
};
|
||||
});
|
||||
|
||||
kanvas.threads_add(() => {
|
||||
kanvas.map[FPS].text = kanvas.get_real_fps().toFixed(2);
|
||||
});
|
||||
|
||||
text_box = kanvas.item_self.appendChild(document.createElement("textarea"));
|
||||
|
||||
["up", "down"].forEach(action => text_box.addEventListener("key" + action, check_characters));
|
||||
kanvas.item_self.querySelector(".kanvas-ui").addEventListener("click", set_focus);
|
||||
|
||||
};
|
||||
|
||||
this.go_to_start = (item, event) => {
|
||||
|
||||
hide_menu();
|
||||
start_game();
|
||||
|
||||
};
|
||||
|
||||
this.go_to_settings = (item, event) => console.log(["settings", item, event]);
|
||||
|
||||
this.go_to_scores = (item, event) => {
|
||||
|
||||
kanvas.map[MAIN_MENU] = null;
|
||||
scores.build();
|
||||
|
||||
};
|
||||
|
||||
this.go_to_manual = (item, event) => window.open("/doc", "_blank");
|
||||
|
||||
this.go_to_credits = (item, event) => console.log(["credits", item, event]);
|
||||
|
||||
const start_game = () => {
|
||||
|
||||
self.map[GAME] = {type : "block", x : -kanvas.cells / 2, y : -kanvas.cells / 2, childs : [
|
||||
{type : "block", x : 0, y : 0, childs : []},
|
||||
{type : "block", x : 0, y : 0, childs : []},
|
||||
{type : "block", x : 0, y : 0, childs : []}
|
||||
]};
|
||||
|
||||
character_size = kanvas.cells / dictionary.maximum_characters,
|
||||
last_word_y = kanvas.cells;
|
||||
current_velocity = 0 + velocity;
|
||||
text_cache = "";
|
||||
text_box.value = "";
|
||||
self.map[LIFE].childs[0].width = self.map[LIFE].childs[0].full;
|
||||
self.map[GAME].childs[WORDS].childs = [];
|
||||
kanvas.map[SCORE].text = zeros_fill_score;
|
||||
multiplier = 1;
|
||||
word_number = 0;
|
||||
last_word_time = 0;
|
||||
|
||||
game_status = "running";
|
||||
game_working = true;
|
||||
|
||||
};
|
||||
|
||||
const reduce_life = () => {
|
||||
if((self.map[LIFE].childs[0].width -= reduce_life_value * difficulty) < 0){
|
||||
self.map[LIFE].childs[0].width = 0;
|
||||
end_game();
|
||||
};
|
||||
};
|
||||
|
||||
const increase_life = () => (
|
||||
(self.map[LIFE].childs[0].width += increase_life_value * (1 - difficulty)) > self.map[LIFE].childs[0].full &&
|
||||
(self.map[LIFE].childs[0].width = self.map[LIFE].childs[0].full
|
||||
));
|
||||
|
||||
const set_score = points => {
|
||||
if(allow_reduce_score || points > 0){
|
||||
|
||||
const new_points = Number(kanvas.map[SCORE].text) + points;
|
||||
|
||||
kanvas.map[SCORE].text = (zeros_fill_score + (new_points < 0 ? 0 : new_points)).slice(-zeros_fill_score.length);
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
const game_thread_method = () => {
|
||||
|
||||
const date = Date.now();
|
||||
|
||||
if(date - session_last_update > session_time_update){
|
||||
session_last_update = date;
|
||||
self.load_file("/api/sessions/update", response => {
|
||||
console.log(response);
|
||||
|
||||
response = JSON.parse(response);
|
||||
session_last_update = Date.now();
|
||||
|
||||
errors.validate(
|
||||
response.content.error,
|
||||
[].concat(self.sql_session_errors),
|
||||
{},
|
||||
sessions_show_update_error_message && "session_update_error",
|
||||
sessions_show_update_ok_message && "session_update_ok"
|
||||
);
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
if(!game_working)
|
||||
return;
|
||||
|
||||
const real_velocity = (current_velocity += (kanvas.delta_time * velocity_increment * difficulty));
|
||||
|
||||
if(
|
||||
!word_number ||
|
||||
(
|
||||
word_enabled_random_timer &&
|
||||
last_word_y >= character_size && Math.random() * (1 / kanvas.get_real_fps()) < difficulty / 10000
|
||||
) ||
|
||||
(
|
||||
word_proportional_timeout &&
|
||||
date - last_word_time > word_proportional_timeout * (1 - (real_velocity / kanvas.cells))
|
||||
)
|
||||
){
|
||||
|
||||
let i = 0;
|
||||
const l = self.map[GAME].childs[WORDS].childs.length,
|
||||
word = dictionary.get_random_word();
|
||||
|
||||
last_word_y = 0;
|
||||
word_number ++;
|
||||
last_word_time = date;
|
||||
|
||||
for(; i < l; i ++)
|
||||
if(!self.map[GAME].childs[WORDS].childs[i])
|
||||
break;
|
||||
|
||||
const x = Math.random() * (dictionary.maximum_characters - word.length + 1) >> 0,
|
||||
characters = [],
|
||||
half = character_size / 2;
|
||||
|
||||
word.split("").forEach((character, j) => characters.push({
|
||||
type : "text",
|
||||
x : (character_size * j) + half,
|
||||
y : half,
|
||||
align : "center",
|
||||
baseline : "middle",
|
||||
text : character,
|
||||
size : character_size * (allow_alter_style ? (1 - characters_sizer) + (Math.random() * characters_sizer) : 1),
|
||||
style : allow_alter_style ? Math.random() > .5 ? "bold" : null : "bold",
|
||||
background : characters_color || "rgb(" + [0, 0, 0].map(_ => Math.random() * 256 >> 0).join(",") + ")",
|
||||
shadow : [
|
||||
[0, 0, .5, "#FFF"],
|
||||
[0, 0, .35, "#FFF"],
|
||||
[0, 0, .2, "#000"]
|
||||
]
|
||||
}));
|
||||
|
||||
self.map[GAME].childs[WORDS].childs[i] = {type : "block", x : character_size * x, y : 0, alpha : 0, childs : characters};
|
||||
|
||||
};
|
||||
|
||||
last_word_y += real_velocity;
|
||||
|
||||
self.map[GAME].childs[WORDS].childs.forEach((word, j) => {
|
||||
if(word){
|
||||
if(word.y > kanvas.cells - character_size){
|
||||
word.childs.forEach(character => {
|
||||
if(!character)
|
||||
return;
|
||||
set_destruction(word.x + character.x, word.y);
|
||||
play_audios_from(scream_sounds);characters_color
|
||||
reduce_life();
|
||||
set_score(character_wrong_points);
|
||||
});
|
||||
self.map[GAME].childs[WORDS].childs[j] = null;
|
||||
set_score(word_wrong_points);
|
||||
multiplier = 1;
|
||||
}else{
|
||||
word.alpha != 1 && (word.alpha += real_velocity / 5) > 1 && (word.alpha = 1);
|
||||
word.y += real_velocity;
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const set_focus = event => text_box.focus();
|
||||
|
||||
this.go_to_resume = () => self.end_pause();
|
||||
|
||||
this.go_to_left_match = () => {
|
||||
|
||||
self.end_pause();
|
||||
end_game();
|
||||
|
||||
};
|
||||
|
||||
this.start_pause = () => {
|
||||
|
||||
if(allow_pause && game_status == "running"){
|
||||
|
||||
const half = kanvas.cells / 2;
|
||||
|
||||
game_status = "stopped";
|
||||
game_working = false;
|
||||
|
||||
kanvas.map[PAUSE] = {type : "block", x : -half, y : -half, childs : [
|
||||
{type : "rectangle", x : 0, y : 0, width : kanvas.cells, height : kanvas.cells, background : "#000", alpha : .7},
|
||||
{type : "text", x : half, y : half - 10, baseline : "middle", align : "center", text : i18n.get("paused"), size : 4, style : "bold", shadow : [
|
||||
[0, 0, .35, "#BBB"]
|
||||
]},
|
||||
create_button("resume", half - 8, half - 3),
|
||||
create_button("left_match", half - 8, half + 1)
|
||||
]}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
this.end_pause = () => {
|
||||
|
||||
if(game_status == "stopped"){
|
||||
|
||||
game_status = "running";
|
||||
game_working = true;
|
||||
|
||||
kanvas.map[PAUSE] = null;
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
const check_characters = event => {
|
||||
|
||||
if(event.type == "keyup")
|
||||
switch(event.keyCode){
|
||||
case 27:
|
||||
self.start_pause() || self.end_pause();
|
||||
default:
|
||||
break;
|
||||
};
|
||||
|
||||
if(text_box.value == text_cache)
|
||||
return;
|
||||
|
||||
const last_changed = text_cache.length == text_box.value.length,
|
||||
characters = text_box.value.substr(text_cache.length - (last_changed ? 1 : 0)).split("");
|
||||
|
||||
text_cache = text_box.value;
|
||||
|
||||
if(game_status != "running")
|
||||
return;
|
||||
|
||||
characters.forEach(own_character => {
|
||||
allow_ignore_case && (own_character = own_character.toLowerCase());
|
||||
if(!self.map[GAME].childs[WORDS].childs.some((word, i) => {
|
||||
|
||||
const ok = word && word.childs.some((character, j) => {
|
||||
|
||||
const ok = character && (allow_ignore_case ? character.text.toLowerCase() : character.text) == own_character;
|
||||
|
||||
if(ok){
|
||||
with(self.map[GAME].childs[WORDS].childs[i].childs[j])
|
||||
set_destruction(
|
||||
self.map[GAME].childs[WORDS].childs[i].x + x,
|
||||
self.map[GAME].childs[WORDS].childs[i].y + y
|
||||
);
|
||||
self.map[GAME].childs[WORDS].childs[i].childs[j] = null;
|
||||
set_score(character_ok_points * (allow_points_multiplier ? multiplier : 1));
|
||||
multiplier += multiplier_value;
|
||||
};
|
||||
|
||||
return ok;
|
||||
});
|
||||
|
||||
if(ok && self.map[GAME].childs[WORDS].childs[i].childs.every(character => !character)){
|
||||
self.map[GAME].childs[WORDS].childs[i] = null;
|
||||
play_audios_from(ok_sounds);
|
||||
increase_life();
|
||||
set_score(word_ok_points);
|
||||
};
|
||||
|
||||
return ok;
|
||||
})){
|
||||
if(!['`', '´', '^',, '¨'].includes(own_character)){
|
||||
play_audios_from(scream_sounds);
|
||||
reduce_life();
|
||||
set_score(character_wrong_points);
|
||||
multiplier = 1;
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const play_audios_from_uri = (uri_data, volume, from, to) => {
|
||||
|
||||
const audio = new Audio(uri_data);
|
||||
|
||||
audio.load();
|
||||
audio.currentTime = from;
|
||||
audio.volume = volume;
|
||||
audio.play();
|
||||
setTimeout(() => audio.pause(), (to ? to - from : audio.duration) * 1000);
|
||||
|
||||
};
|
||||
|
||||
const play_audios_from = set => {
|
||||
|
||||
const sound = set.length ? set[Math.random() * set.length >> 0] : null,
|
||||
[from, to] = sound.fragments ? sound.fragments[Math.random() * sound.fragments.length >> 0] : [0, 0];
|
||||
|
||||
if(!sound)
|
||||
return;
|
||||
|
||||
if(sound.uri_data){
|
||||
play_audios_from_uri(sound.uri_data, sound.volume, from, to);
|
||||
return;
|
||||
}else if(sound.loading)
|
||||
return;
|
||||
|
||||
const ajax = new XMLHttpRequest();
|
||||
|
||||
sound.loading = true;
|
||||
|
||||
ajax.open("get", sound.sound, true);
|
||||
ajax.responseType = "blob";
|
||||
ajax.onload = () => {
|
||||
if(ajax.readyState == 4){
|
||||
ajax.loading = false;
|
||||
ajax.status == 200 && play_audios_from_uri(sound.uri_data = URL.createObjectURL(ajax.response), sound.volume, from, to);
|
||||
};
|
||||
};
|
||||
ajax.send(null);
|
||||
|
||||
};
|
||||
|
||||
const set_destruction = (x, y) => {
|
||||
|
||||
const i = Math.random() * destruction_animations.length >> 0,
|
||||
m = self.map[GAME].childs[DESTRUCTIONS].childs.length,
|
||||
half = (character_size / 2) - (destruction_size / 2);
|
||||
let thread,
|
||||
j = 0,
|
||||
k = 0;
|
||||
|
||||
for(; j < m; j ++)
|
||||
if(!self.map[GAME].childs[DESTRUCTIONS].childs[j])
|
||||
break;
|
||||
|
||||
self.map[GAME].childs[DESTRUCTIONS].childs[j] = {
|
||||
type : "image",
|
||||
x : x + half,
|
||||
y : y + half,
|
||||
width : destruction_size,
|
||||
height : destruction_size,
|
||||
cut_x : destruction_animations[i].animation[0][0],
|
||||
cut_y : destruction_animations[i].animation[0][1],
|
||||
cut_width : destruction_animations[i].animation[0][2],
|
||||
cut_height : destruction_animations[i].animation[0][3],
|
||||
url : destruction_animations[i].sprite
|
||||
};
|
||||
|
||||
play_audios_from(destruction_sounds);
|
||||
|
||||
thread = kanvas.threads_add(() => {
|
||||
if(k < destruction_animations[i].animation.length){
|
||||
|
||||
const _k = k >> 0;
|
||||
|
||||
with(self.map[GAME].childs[DESTRUCTIONS].childs[j]){
|
||||
cut_x = destruction_animations[i].animation[_k][0];
|
||||
cut_y = destruction_animations[i].animation[_k][1];
|
||||
cut_width = destruction_animations[i].animation[_k][2];
|
||||
cut_height = destruction_animations[i].animation[_k][3];
|
||||
};
|
||||
k += destruction_animations[i].frames_per_second / kanvas.get_real_fps();
|
||||
|
||||
}else{
|
||||
kanvas.threads_remove(thread);
|
||||
self.map[GAME].childs[DESTRUCTIONS].childs[j] = null;
|
||||
};
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
const end_game = () => {
|
||||
|
||||
game_status = "ended";
|
||||
|
||||
game_working = false;
|
||||
scores.build_add();
|
||||
|
||||
};
|
||||
|
||||
construct();
|
||||
|
||||
};
|
4
Public/git_update.php
Executable file
4
Public/git_update.php
Executable file
@ -0,0 +1,4 @@
|
||||
<?php
|
||||
|
||||
header("content-type: text/plain");
|
||||
echo shell_exec("git pull 2>&1");
|
46
Public/index.html
Executable file
46
Public/index.html
Executable file
@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" dir="ltr">
|
||||
<head>
|
||||
<title>DPTW</title>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<link type="text/css" data-language="CSS3" rel="stylesheet" href="/scss/DPTW.css" data-scss="/scss/DPTW.scss" data-css-map="/scss/DPTW.css.map" crossorigin="anonymous" charset="utf-8" />
|
||||
|
||||
<link type="text/css" data-language="CSS3" rel="stylesheet" href="https://fonts.googleapis.com/css2?family=VT323&display=swap" data-source="https://fonts.google.com/specimen/VT323?category=Monospace" crossorigin="anonymous" charset="utf-8" />
|
||||
|
||||
<style data-type="text/css" data-language="CSS3" data-rel="stylesheet" charset="utf-8">
|
||||
|
||||
html,body{
|
||||
height : 100%;
|
||||
margin : 0px;
|
||||
}
|
||||
|
||||
body{overflow : hidden;}
|
||||
|
||||
/*.kanvas{
|
||||
position : absolute;
|
||||
top : 0px;
|
||||
left : 0px;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
}*/
|
||||
|
||||
</style>
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="https://kanvas.k3y.pw/ecma/version/20230707/Kanvas.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/DPTW.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/DPTW.I18N.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/DPTW.Errors.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/DPTW.Dictionary.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" src="/ecma/DPTW.Scores.ecma.js" data-crossorigin="anonymous" charset="utf-8"></script>
|
||||
|
||||
<script data-type="text/javascript" data-language="ECMAScript 2015" charset="utf-8">
|
||||
|
||||
dptw = new DPTW();
|
||||
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
14
Public/json/DPTW.dictionary copy.json
Executable file
14
Public/json/DPTW.dictionary copy.json
Executable file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"urls" : [],
|
||||
"words" : [
|
||||
"KyMAN", "SrD", "GTJL", "TST", "Slenderman", "MUGEN", "Ginosaji", "DPTW",
|
||||
"type", "writer", "pro", "tecla", "teclado", "mecanografía", "juego",
|
||||
"videojuego", "game", "videogame", "test", "prueba", "testeo", "Troll",
|
||||
"Minecraft", "Troleo", "Youtube", "Auron", "Auronplay", "perxitaa", "Ibai",
|
||||
"Zorman", "Twitch", "Stream", "directo", "edición", "editar", "crear",
|
||||
"programar", "programación", "programador", "ECMA", "Script", "ECMAScript",
|
||||
"JavaScript", "HTML", "Kanvas", "Canvas", "CSS", "SASS", "SCSS", "estrés",
|
||||
"tensión", "explosión", "explosiones", "destrucción", "Mac", "MacTiny",
|
||||
"Tiny", "mitasnow", "Tarsier"
|
||||
]
|
||||
}
|
4
Public/json/DPTW.dictionary.json
Executable file
4
Public/json/DPTW.dictionary.json
Executable file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"urls" : [],
|
||||
"words" : ["Se","caracteriza","por","sus","videoclips","parodiando","a","todo","tipo","de","tribus","urbanas","compone","produce","y","canta","él","mismo","canciones","o","su","más","reciente","saga","películas","YouTubers","en","segundos","con","la","que","tuvo","polémica","Vegetta","Diego","Mattaz","Mexiv","rgas","Aparte","los","youtubers","hace","este","vídeos","pero","celebridades","políticos","personajes","ficticios","Tiene","un","sarcasmo","humor","único","enojar","hacer","reír","muchas","personas","canal","secundario","llamado","ZormanWorld","cuenta","suscriptores","En","se","centra","principalmente","gameplays","concretamente","antiguos","Pero","ya","desde","antes","era","casi","igual","principal","subiendo","random","preguntas","respuestas","serios","aunque","inicios","empezaba","también","subía","emblemática","sección","series","como","ha","mencionado","Según","sube","dos","videos","al","día","cada","Algunos","son","Resident","Evil","CS","GO","Super","Mario","Bros","juegos","franquicia","I","wanna","be","etc","Cabe","acalarar","el","es","totalmente","diferente","puesto","cuerdo","sencillo","contraste","sarcástico"]
|
||||
}
|
61
Public/json/DPTW.settings.json
Executable file
61
Public/json/DPTW.settings.json
Executable file
@ -0,0 +1,61 @@
|
||||
{
|
||||
"dictionary_files" : "/json/DPTW.dictionary.json",
|
||||
"i18n_files" : [
|
||||
"/json/i18n/DPTW.i18n.espanol.json",
|
||||
"/json/i18n/DPTW.i18n.espanol.json",
|
||||
"/json/i18n/DPTW.i18n.galego.json",
|
||||
"/json/i18n/DPTW.i18n.nihongo.json",
|
||||
"/json/i18n/DPTW.i18n.russkiy.json"
|
||||
],
|
||||
"default_text" : "",
|
||||
"language" : "espanol",
|
||||
"i18n_overwrite" : true,
|
||||
"difficulty" : 0.9,
|
||||
"frames_per_second" : 60,
|
||||
"velocity" : 0.01,
|
||||
"velocity_increment" : 0.001,
|
||||
"destruction_size" : 15,
|
||||
"overwrite_sounds" : false,
|
||||
"overwrite_sprites" : false,
|
||||
"sounds_files" : "/json/DPTW.sounds.json",
|
||||
"sprites_files" : "/json/DPTW.sprites.json",
|
||||
"destruction_animations" : ["explosion_1", "explosion_2", "explosion_3", "explosion_4"],
|
||||
"destruction_sounds" : "explosions",
|
||||
"scream_sounds" : "screams",
|
||||
"ok_sounds" : "ok",
|
||||
"characters_sizer" : 0.1,
|
||||
"reduce_life_value" : 1,
|
||||
"increase_life_value" : 5,
|
||||
"allow_alter_style" : false,
|
||||
"characters_color" : "#000",
|
||||
"allow_reduce_score" : false,
|
||||
"character_ok_points" : 1,
|
||||
"word_ok_points" : 5,
|
||||
"character_wrong_points" : -1,
|
||||
"word_wrong_points" : -5,
|
||||
"allow_points_multiplier" : true,
|
||||
"multiplier_value" : 1,
|
||||
"zeros_fill_score" : "00000000",
|
||||
"allow_pause" : true,
|
||||
"font_family" : "VT323",
|
||||
"main_background" : "metal_background",
|
||||
"secondary_background" : "shibe_inu_background",
|
||||
"nick_maximum_length" : 8,
|
||||
"session_time_update" : 5000,
|
||||
"toast_timer" : 5000,
|
||||
"toast_show_default" : true,
|
||||
"toast_show_ok" : true,
|
||||
"toast_show_info" : true,
|
||||
"toast_show_warn" : true,
|
||||
"toast_show_error" : true,
|
||||
"scores_show_save_ok_message" : true,
|
||||
"scores_show_save_error_message" : true,
|
||||
"scores_show_load_ok_message" : true,
|
||||
"scores_show_load_error_message" : true,
|
||||
"sessions_show_update_ok_message" : true,
|
||||
"sessions_show_update_error_message" : true,
|
||||
"word_proportional_timeout" : 10000,
|
||||
"word_enabled_random_timer" : true,
|
||||
"allow_ignore_case" : false,
|
||||
"game_mode_name" : "testing_game"
|
||||
}
|
49
Public/json/DPTW.sounds.json
Normal file
49
Public/json/DPTW.sounds.json
Normal file
@ -0,0 +1,49 @@
|
||||
{
|
||||
"sounds" : [{
|
||||
"url" : "https://freesound.org/people/SonicStash/sounds/691028/",
|
||||
"enabled" : true,
|
||||
"license" : "Creative Commons Attribution NonCommercial",
|
||||
"path" : "/data/audios/691028__sonicstash__screamings.ogg",
|
||||
"key" : "screams",
|
||||
"fragments" : [[0, 2], [3, 6], [8, 11], [11, 14], [14, 17], [17, 19], [20, 22], [23, 25]]
|
||||
}, {
|
||||
"urls" : [
|
||||
"https://freesound.org/people/alienbomb/sounds/39069/",
|
||||
"https://freesound.org/people/Zangrutz/sounds/155235/",
|
||||
"https://freesound.org/people/AyaDrevis/sounds/649191/",
|
||||
"https://freesound.org/people/Robinhood76/sounds/66098/",
|
||||
"https://freesound.org/people/tgerginov/sounds/665092/"
|
||||
],
|
||||
"enabled" : true,
|
||||
"license" : "Creative Commons Attribution NonCommercial",
|
||||
"path" : "/data/audios/explosions.ogg",
|
||||
"key" : "explosions",
|
||||
"fragments" : [[0, 3], [3, 5], [5, 7], [7, 9], [9, 12]],
|
||||
"volume" : 0.3
|
||||
}, {
|
||||
"urls" : [
|
||||
"https://freesound.org/people/Robinhood76/sounds/103133/",
|
||||
"https://freesound.org/people/AUDACITIER/sounds/634674/",
|
||||
"https://freesound.org/people/klankbeeld/sounds/559092/",
|
||||
"https://freesound.org/people/michellelindemann1/sounds/527852/",
|
||||
"https://freesound.org/people/bogenseeberg/sounds/500154/",
|
||||
"https://freesound.org/people/metrostock99/sounds/345086/",
|
||||
"https://freesound.org/people/Huminaatio/sounds/189279/",
|
||||
"https://freesound.org/people/bogenseeberg/sounds/475444/",
|
||||
"https://freesound.org/people/ImKoryu/sounds/171261/",
|
||||
"https://freesound.org/people/jburunet/sounds/509407/",
|
||||
"https://freesound.org/people/Jekteir/sounds/541381/"
|
||||
],
|
||||
"enabled" : true,
|
||||
"license" : "Creative Commons Attribution NonCommercial",
|
||||
"path" : "/data/audios/ok.ogg",
|
||||
"key" : "ok",
|
||||
"fragments" : [
|
||||
[0, 3], [3, 5], [5, 7], [7, 9], [9, 13], [13, 15], [15, 18],
|
||||
[18, 19], [19, 21], [21, 22], [22, 23], [24, 25], [25, 26],
|
||||
[26, 28], [28, 30], [30, 32], [32, 34], [34, 35], [35, 37],
|
||||
[37, 38], [38, 39], [39, 40], [40, 41], [41, 42], [42, 43],
|
||||
[43, 44], [44, 45], [46, 48]
|
||||
]
|
||||
}]
|
||||
}
|
222
Public/json/DPTW.sprites.json
Executable file
222
Public/json/DPTW.sprites.json
Executable file
@ -0,0 +1,222 @@
|
||||
{
|
||||
"sprites" : [{
|
||||
"url" : "https://toppng.com/attached-are-various-explosion-sprites-created-with-2d-explosion-sprite-sheet-PNG-free-PNG-Images_213951",
|
||||
"path" : "/data/sprites/toppng.com-attached-are-various-explosion-sprites-created-with-2d-explosion-sprite-sheet-764x845.png",
|
||||
"license" : "Personal free use",
|
||||
"enabled" : true,
|
||||
"key" : "explosion_1",
|
||||
"frames_per_second" : 60,
|
||||
"animation" : [
|
||||
[0, 0, 127, 127],
|
||||
[130, 0, 127, 127],
|
||||
[260, 0, 127, 127],
|
||||
[390, 0, 127, 127],
|
||||
[520, 0, 127, 127],
|
||||
[650, 0, 127, 127],
|
||||
[0, 128, 127, 127],
|
||||
[130, 128, 127, 127],
|
||||
[260, 128, 127, 127],
|
||||
[390, 128, 127, 127],
|
||||
[520, 128, 127, 127],
|
||||
[650, 128, 127, 127],
|
||||
[0, 256, 127, 127],
|
||||
[130, 256, 127, 127],
|
||||
[260, 256, 127, 127],
|
||||
[390, 256, 127, 127],
|
||||
[520, 256, 127, 127],
|
||||
[650, 256, 127, 127],
|
||||
[0, 384, 127, 127],
|
||||
[130, 384, 127, 127],
|
||||
[260, 384, 127, 127],
|
||||
[390, 384, 127, 127],
|
||||
[520, 384, 127, 127],
|
||||
[650, 384, 127, 127],
|
||||
[0, 512, 127, 127],
|
||||
[130, 512, 127, 127],
|
||||
[260, 512, 127, 127],
|
||||
[390, 512, 127, 127],
|
||||
[520, 512, 127, 127],
|
||||
[650, 512, 127, 127],
|
||||
[0, 640, 127, 127],
|
||||
[130, 640, 127, 127],
|
||||
[260, 640, 127, 127],
|
||||
[390, 640, 127, 127],
|
||||
[520, 640, 127, 127],
|
||||
[650, 640, 127, 127]
|
||||
]
|
||||
}, {
|
||||
"url" : "https://toppng.com/b-explosion-sprite-sheet-2d-PNG-free-PNG-Images_188094",
|
||||
"path" : "/data/sprites/toppng.com-b-explosion-sprite-sheet-2d-395x387.png",
|
||||
"license" : "Personal free use",
|
||||
"enabled" : true,
|
||||
"key" : "explosion_2",
|
||||
"frames_per_second" : 30,
|
||||
"animation" : [
|
||||
[0, 0, 139, 139],
|
||||
[140, 0, 139, 139],
|
||||
[281, 0, 139, 139],
|
||||
[421, 0, 139, 139],
|
||||
[562, 0, 139, 139],
|
||||
[702, 0, 139, 139],
|
||||
[0, 140, 139, 139],
|
||||
[140, 140, 139, 139],
|
||||
[281, 140, 139, 139],
|
||||
[421, 140, 139, 139],
|
||||
[562, 140, 139, 139],
|
||||
[702, 140, 139, 139],
|
||||
[0, 280, 139, 139],
|
||||
[140, 280, 139, 139],
|
||||
[281, 280, 139, 139],
|
||||
[421, 280, 139, 139],
|
||||
[562, 280, 139, 139],
|
||||
[702, 280, 139, 139],
|
||||
[0, 420, 139, 139],
|
||||
[140, 420, 139, 139],
|
||||
[281, 420, 139, 139],
|
||||
[421, 420, 139, 139],
|
||||
[562, 420, 139, 139],
|
||||
[702, 420, 139, 139],
|
||||
[0, 560, 139, 139],
|
||||
[140, 560, 139, 139],
|
||||
[281, 560, 139, 139],
|
||||
[421, 560, 139, 139],
|
||||
[562, 560, 139, 139],
|
||||
[702, 560, 139, 139],
|
||||
[0, 700, 139, 139],
|
||||
[140, 700, 139, 139],
|
||||
[281, 700, 139, 139],
|
||||
[421, 700, 139, 139],
|
||||
[562, 700, 139, 139],
|
||||
[702, 700, 139, 139]
|
||||
]
|
||||
}, {
|
||||
"url" : "https://www.pngwing.com/en/free-png-plgdq",
|
||||
"path" : "/data/sprites/pngwing.com.png",
|
||||
"license" : "DCMA",
|
||||
"enabled" : false
|
||||
}, {
|
||||
"url" : "https://toppng.com/free-image/brave-frontier-fire-sprite-sheets-pixelated-fire-sprite-sheet-PNG-free-PNG-Images_251102",
|
||||
"path" : "/data/sprites/toppng.com-brave-frontier-fire-sprite-sheets-pixelated-fire-sprite-sheet-1024x960.png",
|
||||
"license" : "Personal free use",
|
||||
"enabled" : true,
|
||||
"key" : "explosion_3",
|
||||
"frames_per_second" : 30,
|
||||
"animation" : [
|
||||
[0, 520, 220, 220],
|
||||
[220, 520, 220, 220],
|
||||
[440, 520, 220, 220],
|
||||
[660, 520, 220, 220],
|
||||
[0, 740, 220, 220],
|
||||
[220, 740, 220, 220],
|
||||
[440, 740, 220, 220],
|
||||
[660, 740, 220, 220]
|
||||
]
|
||||
}, {
|
||||
"url" : "https://toppng.com/free-image/sprite-sheet-list-of-synonyms-and-antonyms-of-the-word-sprite-sheet-explosion-PNG-free-PNG-Images_184309",
|
||||
"path" : "/data/sprites/toppng.com-sprite-sheet-list-of-synonyms-and-antonyms-of-the-word-sprite-sheet-explosion-633x461.png",
|
||||
"license" : "Personal free use",
|
||||
"enabled" : true
|
||||
}, {
|
||||
"url" : "https://toppng.com/free-image/explosion-sprite-png-2d-explosion-sprite-sheet-PNG-free-PNG-Images_163425",
|
||||
"path" : "/data/sprites/toppng.com-explosion-sprite-png-2d-explosion-sprite-sheet-899x857.png",
|
||||
"license" : "Personal free use",
|
||||
"enabled" : true,
|
||||
"key" : "explosion_4",
|
||||
"frames_per_second" : 60,
|
||||
"animation" : [
|
||||
[0, 0, 92, 88],
|
||||
[92, 0, 92, 88],
|
||||
[185, 0, 92, 88],
|
||||
[278, 0, 92, 88],
|
||||
[371, 0, 92, 88],
|
||||
[463, 0, 92, 88],
|
||||
[556, 0, 92, 88],
|
||||
[649, 0, 92, 88],
|
||||
[742, 0, 92, 88],
|
||||
[0, 92, 92, 88],
|
||||
[92, 92, 92, 88],
|
||||
[185, 92, 92, 88],
|
||||
[278, 92, 92, 88],
|
||||
[371, 92, 92, 88],
|
||||
[463, 92, 92, 88],
|
||||
[556, 92, 92, 88],
|
||||
[649, 92, 92, 88],
|
||||
[742, 92, 92, 88],
|
||||
[0, 185, 92, 88],
|
||||
[92, 185, 92, 88],
|
||||
[185, 185, 92, 88],
|
||||
[278, 185, 92, 88],
|
||||
[371, 185, 92, 88],
|
||||
[463, 185, 92, 88],
|
||||
[556, 185, 92, 88],
|
||||
[649, 185, 92, 88],
|
||||
[742, 185, 92, 88],
|
||||
[0, 278, 92, 88],
|
||||
[92, 278, 92, 88],
|
||||
[185, 278, 92, 88],
|
||||
[278, 278, 92, 88],
|
||||
[371, 278, 92, 88],
|
||||
[463, 278, 92, 88],
|
||||
[556, 278, 92, 88],
|
||||
[649, 278, 92, 88],
|
||||
[742, 278, 92, 88],
|
||||
[0, 371, 92, 88],
|
||||
[92, 371, 92, 88],
|
||||
[185, 371, 92, 88],
|
||||
[278, 371, 92, 88],
|
||||
[371, 371, 92, 88],
|
||||
[463, 371, 92, 88],
|
||||
[556, 371, 92, 88],
|
||||
[649, 371, 92, 88],
|
||||
[742, 371, 92, 88],
|
||||
[0, 463, 92, 88],
|
||||
[92, 463, 92, 88],
|
||||
[185, 463, 92, 88],
|
||||
[278, 463, 92, 88],
|
||||
[371, 463, 92, 88],
|
||||
[463, 463, 92, 88],
|
||||
[556, 463, 92, 88],
|
||||
[649, 463, 92, 88],
|
||||
[742, 463, 92, 88],
|
||||
[0, 556, 92, 88],
|
||||
[92, 556, 92, 88],
|
||||
[185, 556, 92, 88],
|
||||
[278, 556, 92, 88],
|
||||
[371, 556, 92, 88],
|
||||
[463, 556, 92, 88],
|
||||
[556, 556, 92, 88],
|
||||
[649, 556, 92, 88],
|
||||
[742, 556, 92, 88],
|
||||
[0, 649, 92, 88],
|
||||
[92, 649, 92, 88],
|
||||
[185, 649, 92, 88],
|
||||
[278, 649, 92, 88],
|
||||
[371, 649, 92, 88],
|
||||
[463, 649, 92, 88],
|
||||
[556, 649, 92, 88],
|
||||
[649, 649, 92, 88],
|
||||
[742, 649, 92, 88],
|
||||
[0, 742, 92, 88],
|
||||
[92, 742, 92, 88],
|
||||
[185, 742, 92, 88],
|
||||
[278, 742, 92, 88],
|
||||
[371, 742, 92, 88],
|
||||
[463, 742, 92, 88],
|
||||
[556, 742, 92, 88],
|
||||
[649, 742, 92, 88],
|
||||
[742, 742, 92, 88]
|
||||
]
|
||||
}, {
|
||||
"url" : "https://unsplash.com/es/fotos/Nc3gR9gNw4o",
|
||||
"key" : "metal_background",
|
||||
"path" : "/data/background/metal_background.webp",
|
||||
"license" : "Unplash",
|
||||
"enabled" : true
|
||||
}, {
|
||||
"url" : "https://unsplash.com/es/fotos/YOCDD-D4oOM",
|
||||
"path" : "/data/background/ferhat-deniz-fors-YOCDD-D4oOM-unsplash.webp",
|
||||
"key" : "shibe_inu_background",
|
||||
"license" : "Unplash",
|
||||
"enabled" : true
|
||||
}]
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.alarabiyah.json
Normal file
50
Public/json/i18n/DPTW.i18n.alarabiyah.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"alarabiyah" : {
|
||||
|
||||
"start" : "ابدأ",
|
||||
"settings" : "الترتيبات",
|
||||
"scores" : "الكشافة",
|
||||
"credits" : "الأرصدة الدائنة",
|
||||
"paused" : "وقف",
|
||||
"resume" : "استمر",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "سابقا",
|
||||
"next" : "التالي",
|
||||
"back" : "العودة",
|
||||
"page" : "الصفحة",
|
||||
"save" : "أنقذ",
|
||||
"not_save" : "لا تنقذ",
|
||||
"test_mode" : "نمط الأدلة",
|
||||
"manual" : "الدليل",
|
||||
"sql_exception" : "كان هناك إستثناء من SQL. من فضلك حاول الاتصال بمدير.",
|
||||
"session_string_null" : "The String of the session is null.",
|
||||
"session_empty" : "الدورة فارغة.",
|
||||
"session_bad_format" : "للدورة شكل سيئ.",
|
||||
"session_id_string_empty" : "إن هوية الدورة في شكل سترينج فارغة.",
|
||||
"session_id_string_bad" : "إن تحديد هوية الدورة في شكل خط خاطئ.",
|
||||
"session_string_incompleted" : "The String of the session is incomplete.",
|
||||
"session_null" : "الدورة لاغية.",
|
||||
"session_not_id" : "الدورة ليست هوية.",
|
||||
"session_not_exists" : "ولا توجد الدورة.",
|
||||
"session_date_out" : "واختتمت الدورة.",
|
||||
"session_timeout" : "لقد فاتت الجلسة الوقت لعدم النشاط القسري.",
|
||||
"session_update_ok" : "وتم تحديث الدورة الحالية بشكل صحيح.",
|
||||
"session_update_error" : "There was an mistake with '{code}' code when trying to update the current session. {list}",
|
||||
"mode_null" : "نمط اللعبة هو صفر.",
|
||||
"mode_empty" : "نمط اللعبة فارغ.",
|
||||
"mode_not_exists" : "لا وجود لطريقة لعبة '{mode}'.",
|
||||
"page_null" : "رقم الصفحة صفر.",
|
||||
"page_lower_1" : "رقم الصفحة يجب أن يكون على الأقل 1.",
|
||||
"items_per_page_null" : "عدد البنود في كل صفحة هو صفر.",
|
||||
"items_per_page_lower_1" : "ويجب عرض بند واحد على الأقل في كل صفحة.",
|
||||
"nicks_null" : "متغير (نيك) للبحث فارغ.",
|
||||
"load_scores_error" : "كان هناك خطأ مع رمز '{code}' عند محاولة تحميل الدرجات على صفحة MKVBXGP مع عناصر MKVBYRV. {list}",
|
||||
"load_scores_ok" : "حُمّلت على نحو سليم درجات '{page}' مع عناصر '{items_per_page}'",
|
||||
"nick_null" : "(نيك) باطل.",
|
||||
"nick_empty" : "الـ(نيك) فارغ.",
|
||||
"score_null" : "الخياطة باطلة.",
|
||||
"score_lower_0" : "النتيجة أقل من صفر.",
|
||||
"save_scores_error" : "كان هناك خطأ مع رمز '{code}' عند محاولة لانقاذ النتيجة الجديدة '{score}' على نيك '{nick}'. {list}",
|
||||
"save_scores_ok" : "(السجل الجديد لـ (م.م.ب.ت.م.م.م.م.م.م.م.م.م.م.م.م.م.م.ت."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.azerbaycanca.json
Normal file
50
Public/json/i18n/DPTW.i18n.azerbaycanca.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"azerbaycanca" : {
|
||||
|
||||
"start" : "Başlıq",
|
||||
"settings" : " Settings",
|
||||
"scores" : "Qeydiyyat",
|
||||
"credits" : "Kredit",
|
||||
"paused" : " Pa",
|
||||
"resume" : "Oxunub",
|
||||
"left_match" : "Axtar",
|
||||
"previous" : " Previous",
|
||||
"next" : "Next",
|
||||
"back" : "Oxunub",
|
||||
"page" : " Page",
|
||||
"save" : "Daxil ol",
|
||||
"not_save" : "Qeydiyyat",
|
||||
"test_mode" : "İdman rejimi",
|
||||
"manual" : "Elmi",
|
||||
"sql_exception" : "Bir SQL istisna idi. Sertifikatlaşdırmaq.",
|
||||
"session_string_null" : " session String.",
|
||||
"session_empty" : " session boşdur.",
|
||||
"session_bad_format" : " session pis format var.",
|
||||
"session_id_string_empty" : "String formatındaki sessiya ID boşdur.",
|
||||
"session_id_string_bad" : "String formatında seans ID yanlışdır.",
|
||||
"session_string_incompleted" : " session String.",
|
||||
"session_null" : " session nu.",
|
||||
"session_not_id" : " session bir ID deyil.",
|
||||
"session_not_exists" : "İştirak mövcud deyil.",
|
||||
"session_date_out" : " session .",
|
||||
"session_timeout" : "İştirakçılıq üçün vaxtsız vaxt.",
|
||||
"session_update_ok" : "Cari sessiya düzgün yeniləndi.",
|
||||
"session_update_error" : "Cari seansı yeniləməyə çalışır zaman '{code}' kodu ilə bir məlumat var. {list}",
|
||||
"mode_null" : "Oyun rejimi sıfırdır.",
|
||||
"mode_empty" : "Oyun rejimi boşdur.",
|
||||
"mode_not_exists" : "'{mode}' oyun rejimi mövcud deyil.",
|
||||
"page_null" : " page növü sıfırdır.",
|
||||
"page_lower_1" : "Səhifə nömrəsi ən azı olmalıdır 1.",
|
||||
"items_per_page_null" : " page başına maddələr sayı sıfırdır.",
|
||||
"items_per_page_lower_1" : "Ən azı bir səhifənin göstərilməlidir.",
|
||||
"nicks_null" : "Nicks axtarış növü boşdur.",
|
||||
"load_scores_error" : "'{items_per_page}' elementləri ilə '{page}' səhifələri yükləməyə çalışır zaman '{code}' kodu ilə bir məlumat idi. {list}",
|
||||
"load_scores_ok" : "'{items_per_page}' elementləri ilə '{page}' puanları düzgün yüklənmişdir",
|
||||
"nick_null" : "Nick azad.",
|
||||
"nick_empty" : "Nick verilmiş boşdur.",
|
||||
"score_null" : "Konfransı qızdır.",
|
||||
"score_lower_0" : "'{score}' puanı 0-dan az.",
|
||||
"save_scores_error" : "Nick '{nick}' üzrə yeni '{score}' puanını qəbul etmək üçün çalışır zaman '{code}' kodu ilə bir səviyyə var. {list}",
|
||||
"save_scores_ok" : "Nick MKVBNBG üzrə yeni '{score}' hesablaşdırılmışdır."
|
||||
}
|
||||
}
|
54
Public/json/i18n/DPTW.i18n.catala.json
Normal file
54
Public/json/i18n/DPTW.i18n.catala.json
Normal file
@ -0,0 +1,54 @@
|
||||
{
|
||||
"catala" : {
|
||||
|
||||
"start" : "Inici",
|
||||
"settings" : "Configuració",
|
||||
"scores" : "Partitures",
|
||||
"credits" : "Crèdits",
|
||||
"paused" : "Pausa",
|
||||
"resume" : "Continuar",
|
||||
"left_match" : "Abandonament",
|
||||
"previous" : "Següent",
|
||||
"next" : "Següent",
|
||||
"back" : "Tornar",
|
||||
"page" : "Pàgina",
|
||||
"save" : "Save",
|
||||
"not_save" : "No guardar",
|
||||
"test_mode" : "Mode d'evidència",
|
||||
"manual" : "Manuals",
|
||||
"sql_exception" : [
|
||||
"Hi havia una excepció SQL. Si us plau, introdueix dins de la ",
|
||||
"caixa de text els caràcters que veu a la imatge de sota. Això és ",
|
||||
"requerit per evitar enviaments automàtics."
|
||||
],
|
||||
"session_string_null" : "La Corda de la sessió és nul·la.",
|
||||
"session_empty" : "La sessió està buida.",
|
||||
"session_bad_format" : "La sessió té un format dolent.",
|
||||
"session_id_string_empty" : "La sessió ID en format String està buida.",
|
||||
"session_id_string_bad" : "L'ID de sessió en format String està malament.",
|
||||
"session_string_incompleted" : "La Corda de la sessió està incompleta.",
|
||||
"session_null" : "La sessió és nul·la.",
|
||||
"session_not_id" : "La sessió no és un DNI.",
|
||||
"session_not_exists" : "La sessió no existeix.",
|
||||
"session_date_out" : "La sessió es va tancar.",
|
||||
"session_timeout" : "La sessió es va perdre Temps per inactivitat forçada.",
|
||||
"session_update_ok" : "La sessió actual s’ha actualitzat correctament.",
|
||||
"session_update_error" : "Hi ha un error amb el codi '{code}' en intentar actualitzar la sessió actual. {list}",
|
||||
"mode_null" : "El mode de joc és zero.",
|
||||
"mode_empty" : "El mode de joc és buit.",
|
||||
"mode_not_exists" : "El mode de joc '{mode}' no existeix.",
|
||||
"page_null" : "El número de pàgina és zero.",
|
||||
"page_lower_1" : "El número de pàgina ha de ser almenys 1.",
|
||||
"items_per_page_null" : "El nombre d'articles per pàgina és zero.",
|
||||
"items_per_page_lower_1" : "S'ha de mostrar almenys un element per pàgina.",
|
||||
"nicks_null" : "La variable de cerca de Nicks és buida.",
|
||||
"load_scores_error" : "Hi ha un error amb el codi '{code}' en tractar de carregar les partitures de la pàgina '{page}' amb elements '{items_per_page}'. {list}",
|
||||
"load_scores_ok" : "Les puntuacions de la pàgina '{page}' amb elements '{items_per_page}' es van carregar correctament",
|
||||
"nick_null" : "Nick és nul.",
|
||||
"nick_empty" : "El Nick donat és buit.",
|
||||
"score_null" : "La puntada és nul.",
|
||||
"score_lower_0" : "La puntuació '{score}' és inferior a 0.",
|
||||
"save_scores_error" : "Hi va haver un error amb el codi '{code}' en tractar de guardar la nova puntuació '{score}' en Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "La nova puntuació '{score}' en Nick '{nick}' es va guardar correctament."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.cestina.json
Normal file
50
Public/json/i18n/DPTW.i18n.cestina.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"cestina" : {
|
||||
|
||||
"start" : "Hledat",
|
||||
"settings" : "Nastavení",
|
||||
"scores" : "Výsledky",
|
||||
"credits" : "Přihlášení",
|
||||
"paused" : "Čeština",
|
||||
"resume" : "Pokračovat",
|
||||
"left_match" : "Čeština",
|
||||
"previous" : "Předchozí",
|
||||
"next" : "Čeština",
|
||||
"back" : "Zpět",
|
||||
"page" : "Čeština",
|
||||
"save" : "Čeština",
|
||||
"not_save" : "Neuchovávejte",
|
||||
"test_mode" : "Režim důkazů",
|
||||
"manual" : "Čeština",
|
||||
"sql_exception" : "Bylo to SQL výjimka. Kontaktujte správce.",
|
||||
"session_string_null" : "Řetěz relace je null.",
|
||||
"session_empty" : "Relace je prázdný.",
|
||||
"session_bad_format" : "Relace má špatný formát.",
|
||||
"session_id_string_empty" : "ID relace ve formátu String je prázdný.",
|
||||
"session_id_string_bad" : "ID relace ve formátu řetězce je špatné.",
|
||||
"session_string_incompleted" : "Smyčcovna relace je neúplná.",
|
||||
"session_null" : "Relace je null.",
|
||||
"session_not_id" : "Relace není ID.",
|
||||
"session_not_exists" : "Relace neexistuje.",
|
||||
"session_date_out" : "Schodiště byla uzavřena.",
|
||||
"session_timeout" : "Relace zmeškal čas na nucenou nečinnost.",
|
||||
"session_update_ok" : "Aktuální relace byla správně aktualizována.",
|
||||
"session_update_error" : "Byla chyba s kódem '{code}' při pokusu o aktualizaci aktuální relace. {list}",
|
||||
"mode_null" : "Režim hry je nulový.",
|
||||
"mode_empty" : "Režim hry je prázdný.",
|
||||
"mode_not_exists" : "Režim hry '{mode}' neexistuje.",
|
||||
"page_null" : "Číslo stránky je nulová.",
|
||||
"page_lower_1" : "Číslo stránky musí být nejméně 1.",
|
||||
"items_per_page_null" : "Počet položek na stránce je nulová.",
|
||||
"items_per_page_lower_1" : "Na stránce musí být zobrazena alespoň jedna položka.",
|
||||
"nicks_null" : "Přeměna hledání Nicks je prázdný.",
|
||||
"load_scores_error" : "Byla chyba s kódem '{code}' při pokusu o načtení stránky '{page}' s prvky '{items_per_page}'. {list}",
|
||||
"load_scores_ok" : "'{page}' skóre stránky s prvky '{items_per_page}' byly správně načteny",
|
||||
"nick_null" : "Nick je null.",
|
||||
"nick_empty" : "Nick je prázdný.",
|
||||
"score_null" : "Širok je null.",
|
||||
"score_lower_0" : "'{score}' skóre je méně než 0.",
|
||||
"save_scores_error" : "Bylo chyba s '{code}' kód, když se snaží uložit nový '{score}' skóre na Nick '{nick}'. V-Strom",
|
||||
"save_scores_ok" : "Nové skóre '{score}' na Nick '{nick}' byl správně uložen."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.dansk.json
Normal file
50
Public/json/i18n/DPTW.i18n.dansk.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"dansk" : {
|
||||
|
||||
"start" : "Start start",
|
||||
"settings" : "Indstillinger for indstillinger",
|
||||
"scores" : "Målscorer",
|
||||
"credits" : "Credits",
|
||||
"paused" : "Sæt pause",
|
||||
"resume" : "Fortsæt med at fortsætte",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Forrige Forrige Forrige Forrige Forrige",
|
||||
"next" : "Næste Næste Næste",
|
||||
"back" : "Tilbage Tilbage Tilbage",
|
||||
"page" : "Sideside",
|
||||
"save" : "Gem Gem Gem Gem Gem Gem",
|
||||
"not_save" : "Gem ikke",
|
||||
"test_mode" : "Bevistilstand",
|
||||
"manual" : "Manuel manual",
|
||||
"sql_exception" : "Der var en SQL undtagelse. Prøv venligst at kontakte en administrator.",
|
||||
"session_string_null" : "The String of te session er null.",
|
||||
"session_empty" : "Sessionen er tom.",
|
||||
"session_bad_format" : "Sessionen har et dårligt format.",
|
||||
"session_id_string_empty" : "Session ID i String format er tomt.",
|
||||
"session_id_string_bad" : "Session ID i String format er forkert.",
|
||||
"session_string_incompleted" : "The String of te session er ufuldstændig.",
|
||||
"session_null" : "Sessionen er null.",
|
||||
"session_not_id" : "Sessionen er ikke et ID.",
|
||||
"session_not_exists" : "Sessionen findes ikke.",
|
||||
"session_date_out" : "Sessionen var lukket.",
|
||||
"session_timeout" : "Sessionen gik glip af Timeout for tvangs inaktivitet.",
|
||||
"session_update_ok" : "Den aktuelle session blev korrekt opdateret.",
|
||||
"session_update_error" : "Der var en fejl med '{code}' kode, når du forsøger at opdatere den aktuelle session. I nærheden af {list}",
|
||||
"mode_null" : "Spillets tilstand er nul.",
|
||||
"mode_empty" : "Spillets tilstand er tom.",
|
||||
"mode_not_exists" : "'{mode}' spil mode eksisterer ikke.",
|
||||
"page_null" : "Sidens nummer er nul.",
|
||||
"page_lower_1" : "Sidenummeret skal være mindst 1.",
|
||||
"items_per_page_null" : "Antallet af varer pr. side er nul.",
|
||||
"items_per_page_lower_1" : "Mindst én vare pr. side skal vises.",
|
||||
"nicks_null" : "Nicks søgevari er tomt.",
|
||||
"load_scores_error" : "Der var en fejl med '{code}' kode, når du forsøger at indlæse '{page}' side scores med '{items_per_page}' elementer. {list}",
|
||||
"load_scores_ok" : "Sidescore '{page}' med '{items_per_page}' elementer blev korrekt indlæst",
|
||||
"nick_null" : "Nick er null.",
|
||||
"nick_empty" : "Nick givet er tom.",
|
||||
"score_null" : "Masken er null.",
|
||||
"score_lower_0" : "'{score}' score er mindre end 0.",
|
||||
"save_scores_error" : "Der var en fejl med '{code}' kode, når du forsøger at gemme den nye '{score}' score på Nick '{nick}'. I nærheden af {list}",
|
||||
"save_scores_ok" : "Den nye '{score}' score på Nick '{nick}' blev korrekt gemt."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.deutsch.json
Normal file
50
Public/json/i18n/DPTW.i18n.deutsch.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"deutsch" : {
|
||||
|
||||
"start" : "Start",
|
||||
"settings" : "Einstellungen",
|
||||
"scores" : "Scores",
|
||||
"credits" : "Kredite",
|
||||
"paused" : "Pause",
|
||||
"resume" : "Fortsetzung",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Vorherige",
|
||||
"next" : "Nächste",
|
||||
"back" : "Zurück",
|
||||
"page" : "Seite",
|
||||
"save" : "Speichern",
|
||||
"not_save" : "Nicht retten",
|
||||
"test_mode" : "Nachweismodus",
|
||||
"manual" : "Handbuch",
|
||||
"sql_exception" : "Es gab eine SQL Ausnahme. Bitte kontaktieren Sie einen Administrator.",
|
||||
"session_string_null" : "Der String der Sitzung ist null.",
|
||||
"session_empty" : "Die Sitzung ist leer.",
|
||||
"session_bad_format" : "Die Sitzung hat ein schlechtes Format.",
|
||||
"session_id_string_empty" : "Die Session-ID im String-Format ist leer.",
|
||||
"session_id_string_bad" : "Die Session-ID im String-Format ist falsch.",
|
||||
"session_string_incompleted" : "Der String der Sitzung ist unvollständig.",
|
||||
"session_null" : "Die Sitzung ist null.",
|
||||
"session_not_id" : "Die Sitzung ist keine ID.",
|
||||
"session_not_exists" : "Die Sitzung existiert nicht.",
|
||||
"session_date_out" : "Die Sitzung wurde geschlossen.",
|
||||
"session_timeout" : "Die Sitzung verfehlte Timeout für Zwangsinaktivität.",
|
||||
"session_update_ok" : "Die aktuelle Sitzung wurde korrekt aktualisiert.",
|
||||
"session_update_error" : "Es gab einen Fehler mit '{code}'-Code, wenn es darum ging, die aktuelle Sitzung zu aktualisieren. MKVBKMG",
|
||||
"mode_null" : "Der Spielmodus ist null.",
|
||||
"mode_empty" : "Der Spielmodus ist leer.",
|
||||
"mode_not_exists" : "Der '{mode}' Spielmodus existiert nicht.",
|
||||
"page_null" : "Die Seitennummer ist Null.",
|
||||
"page_lower_1" : "Die Seitennummer muss mindestens 1 sein.",
|
||||
"items_per_page_null" : "Die Anzahl der Elemente pro Seite ist Null.",
|
||||
"items_per_page_lower_1" : "Es muss mindestens ein Element pro Seite angezeigt werden.",
|
||||
"nicks_null" : "Nicks Suchvariable ist leer.",
|
||||
"load_scores_error" : "Es gab einen Fehler mit '{code}'-Code beim Versuch, die Punkte auf der '{page}' Seite mit '{items_per_page}'-Elementen zu laden. {list}",
|
||||
"load_scores_ok" : "Die '{page}'-Seitenpunkte mit '{items_per_page}'-Elementen wurden richtig geladen",
|
||||
"nick_null" : "Nick ist null.",
|
||||
"nick_empty" : "Der Nick ist leer.",
|
||||
"score_null" : "Der Stich ist null.",
|
||||
"score_lower_0" : "Der '{score}'-Score beträgt weniger als 0.",
|
||||
"save_scores_error" : "Es gab einen Fehler mit '{code}'-Code, wenn versuchte, die neue '{score}'-Score auf Nick '{nick}' zu speichern. {list}",
|
||||
"save_scores_ok" : "Die neue '{score}'-Score auf dem Nick '{nick}' wurde korrekt gespeichert."
|
||||
}
|
||||
}
|
71
Public/json/i18n/DPTW.i18n.ellinika.json
Normal file
71
Public/json/i18n/DPTW.i18n.ellinika.json
Normal file
@ -0,0 +1,71 @@
|
||||
{
|
||||
"ellinika" : {
|
||||
|
||||
"start" : "Ξεκινήστε",
|
||||
"settings" : "Ρυθμίσεις",
|
||||
"scores" : "Scores Scores",
|
||||
"credits" : "Πιστώσεις",
|
||||
"paused" : "Pause",
|
||||
"resume" : "Συνεχίστε να συνεχίζετε",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Προηγουμενο Previous",
|
||||
"next" : [
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next Next Next Next Next ",
|
||||
"Next Next Next Next Next Next Next Next Next"
|
||||
],
|
||||
"back" : "Πίσω",
|
||||
"page" : "Page Page",
|
||||
"save" : "Εξοικονομήστε",
|
||||
"not_save" : "Μην σώζεις",
|
||||
"test_mode" : "Στοιχεία λειτουργίας",
|
||||
"manual" : "Εγχειρίδιο εγχειρίδιο εγχειρίδιο εγχειρίδιο εγχειρίδιο εγχειρίδιο",
|
||||
"sql_exception" : "Υπήρξε εξαίρεση SQL. Προσπαθήστε να επικοινωνήσετε με έναν διαχειριστή.",
|
||||
"session_string_null" : "Η έλξη της συνεδρίας είναι άκυρη.",
|
||||
"session_empty" : "Η συνεδρία είναι άδεια.",
|
||||
"session_bad_format" : "Η συνεδρία έχει κακή μορφή.",
|
||||
"session_id_string_empty" : "Το ID συνεδρίας στη μορφή String είναι άδειο.",
|
||||
"session_id_string_bad" : "Το ID συνεδρίας στη μορφή String είναι λάθος.",
|
||||
"session_string_incompleted" : "Η έλξη της συνεδρίας είναι ελλιπής.",
|
||||
"session_null" : "Η συνεδρία είναι άκυρη.",
|
||||
"session_not_id" : "Η συνεδρία δεν είναι ID.",
|
||||
"session_not_exists" : "Η συνεδρία δεν υπάρχει.",
|
||||
"session_date_out" : "Η συνεδρία έκλεισε.",
|
||||
"session_timeout" : "Η συνεδρία έχασε το Timeout για αναγκαστική αδράνεια.",
|
||||
"session_update_ok" : "Η τρέχουσα συνεδρία ενημερώθηκε σωστά.",
|
||||
"session_update_error" : "Υπήρχε ένα λάθος με τον κωδικό '{code}' όταν προσπαθούσε να ενημερώσει την τρέχουσα συνεδρία. {list}",
|
||||
"mode_null" : "Ο τρόπος παιχνιδιού είναι μηδέν.",
|
||||
"mode_empty" : "Η λειτουργία του παιχνιδιού είναι άδεια.",
|
||||
"mode_not_exists" : "Ο τρόπος παιχνιδιού '{mode}' δεν υπάρχει.",
|
||||
"page_null" : "Ο αριθμός σελίδας είναι μηδέν.",
|
||||
"page_lower_1" : "Ο αριθμός σελίδας πρέπει να είναι τουλάχιστον 1.",
|
||||
"items_per_page_null" : "Ο αριθμός των αντικειμένων ανά σελίδα είναι μηδέν.",
|
||||
"items_per_page_lower_1" : "Τουλάχιστον ένα στοιχείο ανά σελίδα πρέπει να εμφανίζεται.",
|
||||
"nicks_null" : "Η μεταβλητή αναζήτησης του Nicks είναι άδεια.",
|
||||
"load_scores_error" : "Υπήρχε ένα λάθος με τον κωδικό '{code}' όταν προσπαθούσε να φορτώσει τα στοιχεία σελίδας '{page}' με στοιχεία '{items_per_page}'. {list}",
|
||||
"load_scores_ok" : "Τα στοιχεία της σελίδας '{page}' με στοιχεία '{items_per_page}' φορτώθηκαν σωστά",
|
||||
"nick_null" : "Ο Nick είναι άκυρος.",
|
||||
"nick_empty" : "Ο Νικ που δίνεται είναι άδειος.",
|
||||
"score_null" : "Το ράμμα είναι άκυρο.",
|
||||
"score_lower_0" : "Η βαθμολογία '{score}' είναι λιγότερο από 0.",
|
||||
"save_scores_error" : "Υπήρχε ένα λάθος με τον κωδικό '{code}' όταν προσπαθούσε να σώσει το νέο σκορ '{score}' στο Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "Η νέα βαθμολογία '{score}' στο Nick '{nick}' ήταν σωστά αποθηκευμένη."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.english.json
Normal file
50
Public/json/i18n/DPTW.i18n.english.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"english" : {
|
||||
|
||||
"start" : "Start",
|
||||
"settings" : "Settings",
|
||||
"scores" : "Scores",
|
||||
"credits" : "Credits",
|
||||
"paused" : "Pause",
|
||||
"resume" : "Continue",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Previous",
|
||||
"next" : "Next",
|
||||
"back" : "Back",
|
||||
"page" : "Page",
|
||||
"save" : "Save",
|
||||
"not_save" : "Don't save",
|
||||
"test_mode" : "Evidence mode",
|
||||
"manual" : "Manual",
|
||||
"sql_exception" : "There was an SQL exception. Please try to contact an administrator.",
|
||||
"session_string_null" : "The String of the session is null.",
|
||||
"session_empty" : "The session is empty.",
|
||||
"session_bad_format" : "The session has a bad format.",
|
||||
"session_id_string_empty" : "The session ID in String format is empty.",
|
||||
"session_id_string_bad" : "The session ID in String format is wrong.",
|
||||
"session_string_incompleted" : "The String of the session is incomplete.",
|
||||
"session_null" : "The session is null.",
|
||||
"session_not_id" : "The session is not an ID.",
|
||||
"session_not_exists" : "The session does not exist.",
|
||||
"session_date_out" : "The session was closed.",
|
||||
"session_timeout" : "The session missed Timeout for forced inactivity.",
|
||||
"session_update_ok" : "The current session was correctly updated.",
|
||||
"session_update_error" : "There was an error with '{code}' code when trying to update the current session. {list}",
|
||||
"mode_null" : "The game mode is zero.",
|
||||
"mode_empty" : "The game mode is empty.",
|
||||
"mode_not_exists" : "The '{mode}' game mode does not exist.",
|
||||
"page_null" : "The page number is zero.",
|
||||
"page_lower_1" : "The page number must be at least 1.",
|
||||
"items_per_page_null" : "The number of items per page is zero.",
|
||||
"items_per_page_lower_1" : "At least one item per page must be displayed.",
|
||||
"nicks_null" : "Nicks's search variable is empty.",
|
||||
"load_scores_error" : "There was an error with '{code}' code when trying to load the '{page}' page scores with '{items_per_page}' elements. {list}",
|
||||
"load_scores_ok" : "The '{page}' page scores with '{items_per_page}' elements were correctly loaded",
|
||||
"nick_null" : "Nick is null.",
|
||||
"nick_empty" : "The Nick given is empty.",
|
||||
"score_null" : "The stitch is null.",
|
||||
"score_lower_0" : "The '{score}' score is less than 0.",
|
||||
"save_scores_error" : "There was an error with '{code}' code when trying to save the new '{score}' score on Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "The new '{score}' score on the Nick '{nick}' was correctly stored."
|
||||
}
|
||||
}
|
49
Public/json/i18n/DPTW.i18n.espanol.json
Normal file
49
Public/json/i18n/DPTW.i18n.espanol.json
Normal file
@ -0,0 +1,49 @@
|
||||
{
|
||||
"espanol" : {
|
||||
"start" : "Empezar",
|
||||
"settings" : "Configuración",
|
||||
"scores" : "Puntuaciones",
|
||||
"credits" : "Créditos",
|
||||
"paused" : "Pausado",
|
||||
"resume" : "Continuar",
|
||||
"left_match" : "Abandonar",
|
||||
"previous" : "Anterior",
|
||||
"next" : "Siguiente",
|
||||
"back" : "Volver",
|
||||
"page" : "Página",
|
||||
"save" : "Guardar",
|
||||
"not_save" :"No guardar",
|
||||
"test_mode" : "Modo de pruebas",
|
||||
"manual" : "Manual",
|
||||
"sql_exception" : "Hubo una excepción SQL. Por favor, intente contactar con algún administrador.",
|
||||
"session_string_null" : "El String de la sesión es nulo.",
|
||||
"session_empty" : "La sesión está vacía.",
|
||||
"session_bad_format" : "La sesión tiene mal el formato.",
|
||||
"session_id_string_empty" : "El ID de la sesión en formato String está vacío.",
|
||||
"session_id_string_bad" : "El ID de la sesión en formato String está mal.",
|
||||
"session_string_incompleted" : "El String de la sesión está incompleto.",
|
||||
"session_null" : "La sesión es nula.",
|
||||
"session_not_id" : "La sesión no es un ID.",
|
||||
"session_not_exists" : "La sesión no existe.",
|
||||
"session_date_out" : "La sesión ya fue cerrada.",
|
||||
"session_timeout" : "A la sesión le saltó el Timeout por tiempo de inactividad forzada.",
|
||||
"session_update_ok" : "La sesión actual se actualizó correctamente.",
|
||||
"session_update_error" : "Hubo un error con código '{code}' al intentar actualizar la sesión actual.{list}",
|
||||
"mode_null" : "El modo de juego es nulo.",
|
||||
"mode_empty" : "El modo de juego está vacío.",
|
||||
"mode_not_exists" : "El modo de juego '{mode}' no existe.",
|
||||
"page_null" : "El número de página es nulo.",
|
||||
"page_lower_1" : "El número de página ha de ser mínimo 1.",
|
||||
"items_per_page_null" : "El número de elementos por página es nulo.",
|
||||
"items_per_page_lower_1" : "Al menos se ha de mostrar un elemento por página.",
|
||||
"nicks_null" : "La variable de búsqueda de Nicks está vacía.",
|
||||
"load_scores_error" : "Hubo un error con código '{code}' al intentar cargar las puntuaciones de la página '{page}' con '{items_per_page}' elementos.{list}",
|
||||
"load_scores_ok" : "Las puntuaciones de la página '{page}' con '{items_per_page}' elementos fueron cargadas correctamente",
|
||||
"nick_null" : "El Nick es nulo.",
|
||||
"nick_empty" : "El Nick dado está vacío.",
|
||||
"score_null" : "La puntación es nula.",
|
||||
"score_lower_0" : "La puntuación '{score}' es inferior a 0.",
|
||||
"save_scores_error" : "Hubo un error con código '{code}' al intentar guardar la nueva puntuación '{score}' sobre el Nick '{nick}'.{list}",
|
||||
"save_scores_ok" : "La nueva puntuación '{score}' sobre el Nick '{nick}' fue almacenada correctamente."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.esperanto.json
Normal file
50
Public/json/i18n/DPTW.i18n.esperanto.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"esperanto" : {
|
||||
|
||||
"start" : "Komencu komenci",
|
||||
"settings" : "Settings",
|
||||
"scores" : "Dudekopo",
|
||||
"credits" : "Kreditoj",
|
||||
"paused" : "Pause",
|
||||
"resume" : "Daŭrigu daŭrigi",
|
||||
"left_match" : "La [[maldekstro (politiko)|maldekstran mondbildon]]",
|
||||
"previous" : "Antaŭa Antaŭa Antaŭa Antaŭa Antaŭa",
|
||||
"next" : "La sekva",
|
||||
"back" : "Malantaŭa dorso",
|
||||
"page" : "Paĝo",
|
||||
"save" : "Savi",
|
||||
"not_save" : "Ne ŝparu",
|
||||
"test_mode" : "Indico",
|
||||
"manual" : "Manlibro",
|
||||
"sql_exception" : "Estis SQL escepto. Bonvolu kontakti administranton.",
|
||||
"session_string_null" : "La ŝnuro de la sesio estas nula.",
|
||||
"session_empty" : "La sesio estas malplena.",
|
||||
"session_bad_format" : "La sesio havas malbonan formaton.",
|
||||
"session_id_string_empty" : "La sesio ID en arĉformato estas malplena.",
|
||||
"session_id_string_bad" : "La sesio ID en arĉformato estas malĝusta.",
|
||||
"session_string_incompleted" : "La ŝnuro de la sesio estas nekompleta.",
|
||||
"session_null" : "La sesio estas nula.",
|
||||
"session_not_id" : "La sesio ne estas identigilo.",
|
||||
"session_not_exists" : "La sesio ne ekzistas.",
|
||||
"session_date_out" : "La sesio estis fermita.",
|
||||
"session_timeout" : "La sesio maltrafis Timeout por malvola neaktiveco.",
|
||||
"session_update_ok" : "La aktuala sesio estis ĝuste ĝisdatigita.",
|
||||
"session_update_error" : "Ekzistis eraro kun '{code}'-kodo dum provado ĝisdatigi la nunan sesion. {list}",
|
||||
"mode_null" : "La ludo estas nul.",
|
||||
"mode_empty" : "La ludo estas malplena.",
|
||||
"mode_not_exists" : "La '{mode}'-ludreĝimo ne ekzistas.",
|
||||
"page_null" : "La paĝo estas nul.",
|
||||
"page_lower_1" : "La paĝo nombro devas esti almenaŭ 1.",
|
||||
"items_per_page_null" : "La nombro da eroj per paĝo estas nul.",
|
||||
"items_per_page_lower_1" : "Almenaŭ unu ero per paĝo devas esti montrita.",
|
||||
"nicks_null" : "La serĉvariablo de Nicks estas malplena.",
|
||||
"load_scores_error" : "Ekzistis eraro kun '{code}'-kodo dum provado ŝarĝi la '{page}'-paĝan dudekopon kun '{items_per_page}'-elementoj. {list}",
|
||||
"load_scores_ok" : "Paĝo gajnas '{page}' kun '{items_per_page}'-elementoj estis ĝuste ŝarĝitaj",
|
||||
"nick_null" : "Nick estas nulo.",
|
||||
"nick_empty" : "La Nick donita estas malplena.",
|
||||
"score_null" : "La kudristo estas nulo.",
|
||||
"score_lower_0" : "La '{score}'-poentaro estas malpli ol 0.",
|
||||
"save_scores_error" : "Ekzistis eraro kun '{code}'-kodo dum provado ŝpari la novan '{score}' poentaron sur Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "La nova '{score}'-poentaro sur Nick '{nick}' estis ĝuste stokita."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.farsi.json
Normal file
50
Public/json/i18n/DPTW.i18n.farsi.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"farsi" : {
|
||||
|
||||
"start" : "شروع کار",
|
||||
"settings" : "تنظیمات",
|
||||
"scores" : "امتیازات",
|
||||
"credits" : "اعتبار",
|
||||
"paused" : "Pause",
|
||||
"resume" : "ادامه ادامه ادامه",
|
||||
"left_match" : "رها کردن",
|
||||
"previous" : "Previous Previous Previous post",
|
||||
"next" : "بعدی Next Next Next Next",
|
||||
"back" : "بازگشت بازگشت",
|
||||
"page" : "صفحه صفحه صفحه",
|
||||
"save" : "Save Save",
|
||||
"not_save" : "پس انداز نکنید",
|
||||
"test_mode" : "روش شواهد",
|
||||
"manual" : "Manual",
|
||||
"sql_exception" : "یک استثناء SQL وجود داشت. سعی کنید با یک مدیر تماس بگیرید.",
|
||||
"session_string_null" : "رشته جلسه خنثی است.",
|
||||
"session_empty" : "جلسه خالی است.",
|
||||
"session_bad_format" : "جلسه یک فرمت بد دارد.",
|
||||
"session_id_string_empty" : "شناسه جلسه در فرمت رشته خالی است.",
|
||||
"session_id_string_bad" : "شناسه جلسه در فرمت رشته اشتباه است.",
|
||||
"session_string_incompleted" : "رشته جلسه ناقص است.",
|
||||
"session_null" : "جلسه باطل است.",
|
||||
"session_not_id" : "جلسه یک ID نیست.",
|
||||
"session_not_exists" : "جلسه وجود ندارد.",
|
||||
"session_date_out" : "جلسه بسته شد.",
|
||||
"session_timeout" : "این جلسه زمان را برای عدم فعالیت اجباری از دست داد.",
|
||||
"session_update_ok" : "جلسه فعلی به درستی به روز شد.",
|
||||
"session_update_error" : "خطایی با کد '{code}' در هنگام تلاش برای به روز رسانی جلسه فعلی وجود داشت. {list}",
|
||||
"mode_null" : "حالت بازی صفر است.",
|
||||
"mode_empty" : "حالت بازی خالی است.",
|
||||
"mode_not_exists" : "حالت بازی '{mode}' وجود ندارد.",
|
||||
"page_null" : "شماره صفحه صفر است.",
|
||||
"page_lower_1" : "شماره صفحه باید حداقل 1.",
|
||||
"items_per_page_null" : "تعداد موارد در هر صفحه صفر است.",
|
||||
"items_per_page_lower_1" : "حداقل یک مورد در هر صفحه باید نمایش داده شود.",
|
||||
"nicks_null" : "متغیر جستجوی نیک ها خالی است.",
|
||||
"load_scores_error" : "خطایی با کد '{code}' در هنگام تلاش برای بارگیری امتیازات صفحه '{page}' با عناصر '{items_per_page}' وجود داشت. {list}z",
|
||||
"load_scores_ok" : "امتیازات صفحه '{page}' با عناصر '{items_per_page}' به درستی بارگذاری شدند",
|
||||
"nick_null" : "نیک باطل است.",
|
||||
"nick_empty" : "نیک داده شده خالی است.",
|
||||
"score_null" : "چسب ها خنثی هستند.",
|
||||
"score_lower_0" : "نمره '{score}' کمتر از 0 است.",
|
||||
"save_scores_error" : "خطایی با کد '{code}' در هنگام تلاش برای نجات امتیاز جدید '{score}' در نیک '{nick}' وجود داشت. {list}",
|
||||
"save_scores_ok" : "نمره جدید '{score}' در نیک '{nick}' به درستی ذخیره شده است."
|
||||
}
|
||||
}
|
54
Public/json/i18n/DPTW.i18n.francais.json
Normal file
54
Public/json/i18n/DPTW.i18n.francais.json
Normal file
@ -0,0 +1,54 @@
|
||||
{
|
||||
"francais" : {
|
||||
|
||||
"start" : "Commencez",
|
||||
"settings" : "Réglages",
|
||||
"scores" : "Partitions",
|
||||
"credits" : "Crédits",
|
||||
"paused" : "Pause",
|
||||
"resume" : "Continuer",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Précédent",
|
||||
"next" : "Suivant",
|
||||
"back" : "Retour",
|
||||
"page" : "Page",
|
||||
"save" : "Save",
|
||||
"not_save" : "Ne sauve pas",
|
||||
"test_mode" : "Mode de preuve",
|
||||
"manual" : "Manuel",
|
||||
"sql_exception" : "Il y avait une exception SQL. Veuillez contacter un administrateur.",
|
||||
"session_string_null" : "La corde de la session est nulle.",
|
||||
"session_empty" : "La session est vide.",
|
||||
"session_bad_format" : "La session a un mauvais format.",
|
||||
"session_id_string_empty" : "L'ID de session en format String est vide.",
|
||||
"session_id_string_bad" : "L'ID de session en format String est incorrect.",
|
||||
"session_string_incompleted" : "The String of the session is incomplete.",
|
||||
"session_null" : "La session est nulle.",
|
||||
"session_not_id" : "La session n'est pas une pièce d'identité.",
|
||||
"session_not_exists" : "La session n ' existe pas.",
|
||||
"session_date_out" : "The session was closed.",
|
||||
"session_timeout" : "La session a raté Timeout for forced inactivité.",
|
||||
"session_update_ok" : "La session en cours a été correctement mise à jour.",
|
||||
"session_update_error" : "Il y a eu une erreur avec le code '{code}' lors de la mise à jour de la session en cours. {list}",
|
||||
"mode_null" : "Le mode de jeu est zéro.",
|
||||
"mode_empty" : "Le mode de jeu est vide.",
|
||||
"mode_not_exists" : "Le mode de jeu '{mode}' n'existe pas.",
|
||||
"page_null" : "Le numéro de page est zéro.",
|
||||
"page_lower_1" : "Le numéro de page doit être au moins 1.",
|
||||
"items_per_page_null" : "Le nombre d'articles par page est nul.",
|
||||
"items_per_page_lower_1" : "Au moins un article par page doit être affiché.",
|
||||
"nicks_null" : "La variable de recherche de Nicks est vide.",
|
||||
"load_scores_error" : [
|
||||
"Il y a eu une erreur avec le code '{code}' lorsque vous essayez ",
|
||||
"de charger les scores sur la page '{page}' avec des éléments ",
|
||||
"'{items_per_page}'. {list}"
|
||||
],
|
||||
"load_scores_ok" : "Les scores de la page '{page}' avec des éléments '{items_per_page}' ont été correctement chargés",
|
||||
"nick_null" : "Nick est nul.",
|
||||
"nick_empty" : "Le Nick est vide.",
|
||||
"score_null" : "La maille est nulle.",
|
||||
"score_lower_0" : "Le score '{score}' est inférieur à 0.",
|
||||
"save_scores_error" : "Il y a eu une erreur avec le code '{code}' lorsque vous essayez de sauvegarder le nouveau score '{score}' sur Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "Le nouveau score '{score}' sur Nick '{nick}' a été correctement stocké."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.gaeilge.json
Normal file
50
Public/json/i18n/DPTW.i18n.gaeilge.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"gaeilge" : {
|
||||
|
||||
"start" : "Tosaigh",
|
||||
"settings" : "An tSraith Shinsearach",
|
||||
"scores" : "ScóirÃ",
|
||||
"credits" : "Creidmheasanna",
|
||||
"paused" : "Riachtanais uisce: measartha",
|
||||
"resume" : "Leanúint ar aghaidh",
|
||||
"left_match" : "Amharc ar gach eolas",
|
||||
"previous" : "Roimhe Seo",
|
||||
"next" : "Ar Aghaidh",
|
||||
"back" : "Ar ais chuig clár",
|
||||
"page" : "Leathanach Baile",
|
||||
"save" : "Sábháil Sábháil",
|
||||
"not_save" : "Ná shábháil",
|
||||
"test_mode" : "Modh fianaise",
|
||||
"manual" : "Lámhleabhar Lámhleabhar",
|
||||
"sql_exception" : "Bhí eisceacht SQL. Déan iarracht teagmháil le riarthóir.",
|
||||
"session_string_null" : "Tá an Curtain an tseisiúin ar neamhní.",
|
||||
"session_empty" : "Tá an seisiún folamh.",
|
||||
"session_bad_format" : "Tá an seisiún formáid dona.",
|
||||
"session_id_string_empty" : "Is é an ID seisiún i bhformáid Curtain folamh.",
|
||||
"session_id_string_bad" : "Is é an ID seisiún i bhformáid Curtain mícheart.",
|
||||
"session_string_incompleted" : "Tá an Curtain an tseisiúin neamhiomlán.",
|
||||
"session_null" : "Tá an seisiún ar neamhní.",
|
||||
"session_not_id" : "Níl an seisiún ID.",
|
||||
"session_not_exists" : "Níl an seisiún ann.",
|
||||
"session_date_out" : "Dúnadh an seisiún.",
|
||||
"session_timeout" : "Chaill an seisiún Timeout le haghaidh neamhghníomhaíochta éigean.",
|
||||
"session_update_ok" : "Tugadh an seisiún reatha cothrom le dáta i gceart.",
|
||||
"session_update_error" : "Bhí earráid le '{code}' cód nuair ag iarraidh a thabhairt cothrom le dáta an seisiún reatha. {list}",
|
||||
"mode_null" : "Is é an modh cluiche náid.",
|
||||
"mode_empty" : "Is é an modh cluiche folamh.",
|
||||
"mode_not_exists" : "Ní dhéanann an modh cluiche '{mode}' ann.",
|
||||
"page_null" : "Is é an uimhir leathanach nialas.",
|
||||
"page_lower_1" : "Ní mór uimhir an leathanaigh a bheith ar a laghad 1.",
|
||||
"items_per_page_null" : "Is é an líon na n-ítimí in aghaidh an leathanaigh náid.",
|
||||
"items_per_page_lower_1" : "Ní mór ar a laghad mír amháin in aghaidh an leathanaigh a thaispeáint.",
|
||||
"nicks_null" : "Tá athróg cuardaigh Nicks folamh.",
|
||||
"load_scores_error" : "Bhí earráid le '{code}' cód nuair ag iarraidh a luchtú an scór leathanach '{page}' le heilimintí '{items_per_page}'. Seirbhís do Chustaiméirí",
|
||||
"load_scores_ok" : "Rinneadh scóir leathanach '{page}' le heilimintí '{items_per_page}' a luchtú i gceart",
|
||||
"nick_null" : "Tá Nick null.",
|
||||
"nick_empty" : "Tá an Nick thabhairt folamh.",
|
||||
"score_null" : "Tá an stitch ar neamhní.",
|
||||
"score_lower_0" : "Is é an scór '{score}' thíos 0.",
|
||||
"save_scores_error" : "Bhí earráid le cód '{code}' nuair a iarraidh a shábháil ar an scór '{score}' nua ar an '{nick}' Nick. {list}",
|
||||
"save_scores_ok" : "Stóráileadh an scór '{score}' nua ar Nick '{nick}' i gceart."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.hangugeo.json
Normal file
50
Public/json/i18n/DPTW.i18n.hangugeo.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"hangugeo" : {
|
||||
|
||||
"start" : "지원하다",
|
||||
"settings" : "계정 설정",
|
||||
"scores" : "이름 *",
|
||||
"credits" : "계정 만들기",
|
||||
"paused" : "팟캐스트",
|
||||
"resume" : "계속하기",
|
||||
"left_match" : "아바돈",
|
||||
"previous" : "이름 *",
|
||||
"next" : "이름 *",
|
||||
"back" : "이름 *",
|
||||
"page" : "- 연혁",
|
||||
"save" : "제품 정보",
|
||||
"not_save" : "저장하지 마십시오",
|
||||
"test_mode" : "Evidence 모드",
|
||||
"manual" : "제품정보",
|
||||
"sql_exception" : "SQL 예외가 있습니다. 자주 묻는 질문.",
|
||||
"session_string_null" : "세션의 문자열은 null입니다.",
|
||||
"session_empty" : "세션은 비어 있습니다.",
|
||||
"session_bad_format" : "세션에는 나쁜 형식이 있습니다.",
|
||||
"session_id_string_empty" : "String 형식의 세션 ID가 비어 있습니다.",
|
||||
"session_id_string_bad" : "문자열 형식의 세션 ID는 잘못된다.",
|
||||
"session_string_incompleted" : "세션의 문자열은 불완전합니다.",
|
||||
"session_null" : "세션은 null입니다.",
|
||||
"session_not_id" : "세션은 ID가 아닙니다.",
|
||||
"session_not_exists" : "세션은 존재하지 않습니다.",
|
||||
"session_date_out" : "세션이 종료되었습니다.",
|
||||
"session_timeout" : "강제적인 inactivity를 위한 Session missed Timeout.",
|
||||
"session_update_ok" : "현재 세션이 제대로 업데이트되었습니다.",
|
||||
"session_update_error" : "현재 세션을 업데이트하려고 할 때 '{code}' 코드와 오류가 있었습니다. 모델 번호: {list}",
|
||||
"mode_null" : "게임 모드는 0입니다.",
|
||||
"mode_empty" : "게임 모드가 비어 있습니다.",
|
||||
"mode_not_exists" : "'{mode}' 게임 모드는 존재하지 않습니다.",
|
||||
"page_null" : "페이지 번호는 0입니다.",
|
||||
"page_lower_1" : "페이지 번호는 적어도 1이어야 합니다.",
|
||||
"items_per_page_null" : "페이지 당 항목의 수는 0입니다.",
|
||||
"items_per_page_lower_1" : "페이지 당 최소 1개의 항목이 표시되어야 합니다.",
|
||||
"nicks_null" : "Nicks의 검색 변수는 비어 있습니다.",
|
||||
"load_scores_error" : "'{page}' 점수를 '{items_per_page}' 요소로 로드하려고 할 때 '{code}' 코드와 오류가 있었습니다. {list}의 특징",
|
||||
"load_scores_ok" : "MKVBNDY 요소가 제대로 로드된 '{page}'",
|
||||
"nick_null" : "Nick은 null입니다.",
|
||||
"nick_empty" : "주어진 닉은 비어 있습니다.",
|
||||
"score_null" : "스티치는 null입니다.",
|
||||
"score_lower_0" : "'{score}' 점수는 0 미만입니다.",
|
||||
"save_scores_error" : "Nick '{nick}'의 새로운 '{score}' 점수를 저장할 때 '{code}' 코드와 오류가 있었습니다. 모델 번호: {list}",
|
||||
"save_scores_ok" : "Nick '{nick}'의 새로운 '{score}' 점수가 제대로 저장되었습니다."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.hindi.json
Normal file
50
Public/json/i18n/DPTW.i18n.hindi.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"hindi" : {
|
||||
|
||||
"start" : "प्रारंभ",
|
||||
"settings" : "सेटिंग्स",
|
||||
"scores" : "स्कोर",
|
||||
"credits" : "ऋण",
|
||||
"paused" : "Pause",
|
||||
"resume" : "जारी",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "पिछला",
|
||||
"next" : "अगला",
|
||||
"back" : "वापस",
|
||||
"page" : "पृष्ठ",
|
||||
"save" : "सहेजें",
|
||||
"not_save" : "नहीं बचाओ",
|
||||
"test_mode" : "साक्ष्य मोड",
|
||||
"manual" : "मैनुअल",
|
||||
"sql_exception" : "वहाँ एक SQL अपवाद था। कृपया एक प्रशासक से संपर्क करने का प्रयास करें।.",
|
||||
"session_string_null" : "सत्र का स्ट्रिंग शून्य है।.",
|
||||
"session_empty" : "सत्र खाली है।.",
|
||||
"session_bad_format" : "सत्र में एक बुरा प्रारूप है।.",
|
||||
"session_id_string_empty" : "स्ट्रिंग प्रारूप में सत्र आईडी खाली है।.",
|
||||
"session_id_string_bad" : "स्ट्रिंग प्रारूप में सत्र आईडी गलत है।.",
|
||||
"session_string_incompleted" : "सत्र का स्ट्रिंग अधूरा है।.",
|
||||
"session_null" : "सत्र शून्य है।.",
|
||||
"session_not_id" : "सत्र आईडी नहीं है।.",
|
||||
"session_not_exists" : "सत्र मौजूद नहीं है।.",
|
||||
"session_date_out" : "सत्र बंद हो गया था।.",
|
||||
"session_timeout" : "सत्र को मजबूर निष्क्रियता के लिए टाइमआउट याद किया गया।.",
|
||||
"session_update_ok" : "वर्तमान सत्र को सही ढंग से अद्यतन किया गया था।.",
|
||||
"session_update_error" : "वर्तमान सत्र को अद्यतन करने की कोशिश करते समय '{code}' कोड के साथ एक त्रुटि थी। {list}",
|
||||
"mode_null" : "गेम मोड शून्य है।.",
|
||||
"mode_empty" : "गेम मोड खाली है।.",
|
||||
"mode_not_exists" : "'{mode}' खेल मोड मौजूद नहीं है।.",
|
||||
"page_null" : "पृष्ठ संख्या शून्य है।.",
|
||||
"page_lower_1" : "पृष्ठ संख्या कम से कम 1 होना चाहिए।.",
|
||||
"items_per_page_null" : "प्रति पृष्ठ आइटम की संख्या शून्य है।.",
|
||||
"items_per_page_lower_1" : "प्रति पृष्ठ कम से कम एक आइटम प्रदर्शित किया जाना चाहिए।.",
|
||||
"nicks_null" : "Nicks की खोज चर खाली है।.",
|
||||
"load_scores_error" : "'{items_per_page}' तत्वों के साथ '{items_per_page}'C पेज स्कोर को लोड करने की कोशिश करते समय '{code}' कोड के साथ एक त्रुटि थी। {list}",
|
||||
"load_scores_ok" : "'{items_per_page}' तत्वों के साथ '{page}' पेज पर स्कोर को सही ढंग से लोड किया गया।",
|
||||
"nick_null" : "निक शून्य है।.",
|
||||
"nick_empty" : "दिए गए निक खाली हैं।.",
|
||||
"score_null" : "सिलाई शून्य है।.",
|
||||
"score_lower_0" : "'{score}' स्कोर 0 से कम है।.",
|
||||
"save_scores_error" : "Nick '{nick}' पर नए '{score}' स्कोर को बचाने की कोशिश करते समय '{code}' कोड के साथ एक त्रुटि थी। {list}",
|
||||
"save_scores_ok" : "Nick '{nick}' पर नए '{score}' स्कोर को सही ढंग से संग्रहीत किया गया था।."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.indonesia.json
Normal file
50
Public/json/i18n/DPTW.i18n.indonesia.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"indonesia" : {
|
||||
|
||||
"start" : "Login",
|
||||
"settings" : "Login",
|
||||
"scores" : "Login",
|
||||
"credits" : "Login",
|
||||
"paused" : "Login",
|
||||
"resume" : "Sitemap",
|
||||
"left_match" : "Login",
|
||||
"previous" : "Sitemap",
|
||||
"next" : "Sitemap",
|
||||
"back" : "Login",
|
||||
"page" : "Login",
|
||||
"save" : "Sitemap",
|
||||
"not_save" : "Jangan menyimpan",
|
||||
"test_mode" : "Modus",
|
||||
"manual" : "Login",
|
||||
"sql_exception" : "Ada pengecualian SQL. Silakan hubungi administrator.",
|
||||
"session_string_null" : "String sesi adalah null.",
|
||||
"session_empty" : "Sesi kosong.",
|
||||
"session_bad_format" : "Sesi memiliki format yang buruk.",
|
||||
"session_id_string_empty" : "ID sesi dalam format String kosong.",
|
||||
"session_id_string_bad" : "ID sesi dalam format String salah.",
|
||||
"session_string_incompleted" : "String sesi tidak lengkap.",
|
||||
"session_null" : "Sitemap.",
|
||||
"session_not_id" : "Sesinya bukan ID.",
|
||||
"session_not_exists" : "Sesi tidak ada.",
|
||||
"session_date_out" : "Sesi ditutup.",
|
||||
"session_timeout" : "Sesi melewatkan Timeout untuk ketidakaktifan paksa.",
|
||||
"session_update_ok" : "Sesi saat ini diperbarui dengan benar.",
|
||||
"session_update_error" : "Ada kesalahan dengan kode '{code}' ketika mencoba untuk memperbarui sesi saat ini. Login",
|
||||
"mode_null" : "Mode permainan adalah nol.",
|
||||
"mode_empty" : "Mode permainan kosong.",
|
||||
"mode_not_exists" : "Mode permainan '{mode}' tidak ada.",
|
||||
"page_null" : "Jumlah halaman adalah nol.",
|
||||
"page_lower_1" : "Jumlah halaman harus minimal 1.",
|
||||
"items_per_page_null" : "Jumlah item per halaman adalah nol.",
|
||||
"items_per_page_lower_1" : "Setidaknya satu item per halaman harus ditampilkan.",
|
||||
"nicks_null" : "Variabel pencarian Nicks kosong.",
|
||||
"load_scores_error" : "Ada kesalahan dengan kode '{code}' ketika mencoba memuat skor halaman MKVBQYN dengan elemen '{items_per_page}'. Login",
|
||||
"load_scores_ok" : "Nilai halaman '{page}' dengan elemen '{items_per_page}' dimuat dengan benar",
|
||||
"nick_null" : "Login.",
|
||||
"nick_empty" : "Nick yang diberikan adalah kosong.",
|
||||
"score_null" : "Jahitan adalah null.",
|
||||
"score_lower_0" : "Skor '{score}' kurang dari 0.",
|
||||
"save_scores_error" : "Ada kesalahan dengan kode '{code}' ketika mencoba untuk menyimpan skor '{score}' baru di Nick '{nick}'. Login",
|
||||
"save_scores_ok" : "Skor '{score}' baru di Nick '{nick}' disimpan dengan benar."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.italiano.json
Normal file
50
Public/json/i18n/DPTW.i18n.italiano.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"italiano" : {
|
||||
|
||||
"start" : "Inizio",
|
||||
"settings" : "Impostazioni impostazioni",
|
||||
"scores" : "Punteggio",
|
||||
"credits" : "Crediti",
|
||||
"paused" : "Pausa",
|
||||
"resume" : "Continua",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Precedente",
|
||||
"next" : "Il prossimo",
|
||||
"back" : "Indietro",
|
||||
"page" : "Pagina",
|
||||
"save" : "Salva",
|
||||
"not_save" : "Non salvare",
|
||||
"test_mode" : "Modalità di prova",
|
||||
"manual" : "Manuale",
|
||||
"sql_exception" : "C'era un'eccezione SQL. Si prega di provare a contattare un amministratore.",
|
||||
"session_string_null" : "Lo stress della sessione è nullo.",
|
||||
"session_empty" : "La sessione è vuota.",
|
||||
"session_bad_format" : "La sessione ha un cattivo formato.",
|
||||
"session_id_string_empty" : "L'ID di sessione in formato String è vuoto.",
|
||||
"session_id_string_bad" : "L'ID di sessione in formato String è sbagliato.",
|
||||
"session_string_incompleted" : "Lo stress della sessione è incompleto.",
|
||||
"session_null" : "La sessione è nulla.",
|
||||
"session_not_id" : "La sessione non è un documento d'identità.",
|
||||
"session_not_exists" : "La sessione non esiste.",
|
||||
"session_date_out" : "La sessione era chiusa.",
|
||||
"session_timeout" : "La sessione ha mancato Timeout per l'inattività forzata.",
|
||||
"session_update_ok" : "La sessione corrente è stata correttamente aggiornata.",
|
||||
"session_update_error" : "C'è stato un errore con il codice '{code}' quando si cerca di aggiornare la sessione corrente. {list}",
|
||||
"mode_null" : "La modalità di gioco è zero.",
|
||||
"mode_empty" : "La modalità di gioco è vuota.",
|
||||
"mode_not_exists" : "La modalità di gioco '{mode}' non esiste.",
|
||||
"page_null" : "Il numero di pagina è zero.",
|
||||
"page_lower_1" : "Il numero di pagina deve essere almeno 1.",
|
||||
"items_per_page_null" : "Il numero di articoli per pagina è zero.",
|
||||
"items_per_page_lower_1" : "Almeno un elemento per pagina deve essere visualizzato.",
|
||||
"nicks_null" : "La variabile di ricerca di Nicks è vuota.",
|
||||
"load_scores_error" : "C'è stato un errore con il codice '{code}' quando si cerca di caricare i punteggi della pagina '{page}' con gli elementi '{items_per_page}'. {list}",
|
||||
"load_scores_ok" : "I punteggi della pagina '{page}' con elementi '{items_per_page}' sono stati caricati correttamente",
|
||||
"nick_null" : "Nick e' nullo.",
|
||||
"nick_empty" : "Il Nick dato è vuoto.",
|
||||
"score_null" : "Il punto è nullo.",
|
||||
"score_lower_0" : "Il punteggio '{score}' è inferiore a 0.",
|
||||
"save_scores_error" : "C'è stato un errore con il codice '{code}' quando si cerca di salvare il nuovo punteggio '{score}' su Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "Il nuovo punteggio '{score}' su Nick '{nick}' è stato memorizzato correttamente."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.ivrit.json
Normal file
50
Public/json/i18n/DPTW.i18n.ivrit.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"ivrit" : {
|
||||
|
||||
"start" : "התחל",
|
||||
"settings" : "הגדרות הגדרות",
|
||||
"scores" : "תוצאות",
|
||||
"credits" : "אשראי",
|
||||
"paused" : "Pause",
|
||||
"resume" : "המשך",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "הקודם",
|
||||
"next" : "הבא",
|
||||
"back" : "בחזרה",
|
||||
"page" : "Page",
|
||||
"save" : "להציל",
|
||||
"not_save" : "אל תציל",
|
||||
"test_mode" : "ראיות",
|
||||
"manual" : "ידני",
|
||||
"sql_exception" : "היה יוצא דופן של SQL. נסו ליצור קשר עם מנהל.",
|
||||
"session_string_null" : "החתירה של הפגישה היא אפס.",
|
||||
"session_empty" : "המפגש ריק.",
|
||||
"session_bad_format" : "למפגש יש פורמט רע.",
|
||||
"session_id_string_empty" : "מזהה הפגישה בפורמט סטרינג הוא ריק.",
|
||||
"session_id_string_bad" : "מזהה הפגישה בפורמט סטרינג שגוי.",
|
||||
"session_string_incompleted" : "החתירה של הפגישה אינה שלמה.",
|
||||
"session_null" : "הפגישה היא אפס.",
|
||||
"session_not_id" : "המפגש אינו מזהה.",
|
||||
"session_not_exists" : "המפגש לא קיים.",
|
||||
"session_date_out" : "המפגש נסגר.",
|
||||
"session_timeout" : "המפגש החמיץ את הזמן לפעילות בכפייה.",
|
||||
"session_update_ok" : "המפגש הנוכחי עודכן כראוי.",
|
||||
"session_update_error" : "הייתה טעות עם קוד '{code}' בעת ניסיון לעדכן את הפגישה הנוכחית. {list}",
|
||||
"mode_null" : "מצב המשחק הוא אפס.",
|
||||
"mode_empty" : "מצב המשחק ריק.",
|
||||
"mode_not_exists" : "מצב משחק '{mode}' אינו קיים.",
|
||||
"page_null" : "מספר העמוד הוא אפס.",
|
||||
"page_lower_1" : "מספר העמוד חייב להיות לפחות 1.",
|
||||
"items_per_page_null" : "מספר הפריטים בעמוד הוא אפס.",
|
||||
"items_per_page_lower_1" : "לפחות פריט אחד בעמוד חייב להיות מוצג.",
|
||||
"nicks_null" : "משתנה החיפוש של ניקס הוא ריק.",
|
||||
"load_scores_error" : "הייתה טעות עם קוד '{code}' בעת ניסיון לטעון את ציוני העמוד MKV-KL עם רכיבי '{items_per_page}'. {list}",
|
||||
"load_scores_ok" : "ציוני דף '{page}' עם רכיבי '{items_per_page}' היו טעון כראוי",
|
||||
"nick_null" : "ניק הוא אפס.",
|
||||
"nick_empty" : "הניק נתן ריק.",
|
||||
"score_null" : "תפרים הם אפס.",
|
||||
"score_lower_0" : "הציון '{score}' פחות מ-0.",
|
||||
"save_scores_error" : "הייתה טעות עם קוד '{code}' בעת ניסיון להציל את הציון החדש '{score}' על ניק '{nick}'. {list}",
|
||||
"save_scores_ok" : "הציון החדש של '{score}' ב-Nick '{nick}' נשמר כראוי."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.magyar.json
Normal file
50
Public/json/i18n/DPTW.i18n.magyar.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"magyar" : {
|
||||
|
||||
"start" : "Kezdőlap",
|
||||
"settings" : "Beállítások",
|
||||
"scores" : "Skorpiók",
|
||||
"credits" : "Hitelek",
|
||||
"paused" : "Üzenet",
|
||||
"resume" : "Tovább",
|
||||
"left_match" : "Anál",
|
||||
"previous" : "Előző",
|
||||
"next" : "Kezdőlap >",
|
||||
"back" : "Vissza",
|
||||
"page" : "Oldal",
|
||||
"save" : "Mentés",
|
||||
"not_save" : "Ne ments",
|
||||
"test_mode" : "Bizonyíték mód",
|
||||
"manual" : "Kézikönyv",
|
||||
"sql_exception" : "Volt egy SQL kivétel. Kérjük, próbáljon kapcsolatba lépni egy adminisztrátorral.",
|
||||
"session_string_null" : "Az ülés húrja null.",
|
||||
"session_empty" : "Az ülés üres.",
|
||||
"session_bad_format" : "Az ülésnek rossz formátuma van.",
|
||||
"session_id_string_empty" : "Az ülési azonosító a String formátumban üres.",
|
||||
"session_id_string_bad" : "Az ülési azonosító a String formátumban rossz.",
|
||||
"session_string_incompleted" : "Az ülés húrja nem teljes.",
|
||||
"session_null" : "Az ülés null.",
|
||||
"session_not_id" : "Az ülés nem egy ID.",
|
||||
"session_not_exists" : "Az ülés nem létezik.",
|
||||
"session_date_out" : "Az ülés zárva volt.",
|
||||
"session_timeout" : "Az ülés hiányzott a Timeout kényszerített inaktivitásért.",
|
||||
"session_update_ok" : "A jelenlegi ülést helyesen frissítették.",
|
||||
"session_update_error" : "Volt egy hiba az '{code}' kóddal, amikor megpróbálta frissíteni a jelenlegi ülést. {list}",
|
||||
"mode_null" : "A játék mód nulla.",
|
||||
"mode_empty" : "A játék mód üres.",
|
||||
"mode_not_exists" : "Az '{mode}' játékmód nem létezik.",
|
||||
"page_null" : "Az oldalszám nulla.",
|
||||
"page_lower_1" : "Az oldalszámnak legalább 1-nek kell lennie.",
|
||||
"items_per_page_null" : "Az oldalonkénti elemek száma nulla.",
|
||||
"items_per_page_lower_1" : "Az oldalonként legalább egy elemet kell megjeleníteni.",
|
||||
"nicks_null" : "Nicks keresési változója üres.",
|
||||
"load_scores_error" : "Volt egy hiba az '{code}' kóddal, amikor megpróbálta betölteni a pontszámokat az '{page}' oldalon '{items_per_page}' elemekkel. {list}",
|
||||
"load_scores_ok" : "Az '{page}' oldal pontszáma az '{items_per_page}' elemekkel helyesen betöltött",
|
||||
"nick_null" : "Nick null.",
|
||||
"nick_empty" : "A Nick adott üres.",
|
||||
"score_null" : "A boszorkány null.",
|
||||
"score_lower_0" : "Az '{score}' pontszám kevesebb, mint 0.",
|
||||
"save_scores_error" : "Volt egy hiba az '{code}' kóddal, amikor megpróbálta megmenteni az új MKVBVG pontszámot a Nick '{nick}'-en. {list}",
|
||||
"save_scores_ok" : "Az új '{score}' pontszámot Nick '{nick}'-n tárolták helyesen."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.nederlands.json
Normal file
50
Public/json/i18n/DPTW.i18n.nederlands.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"nederlands" : {
|
||||
|
||||
"start" : "Begin",
|
||||
"settings" : "Setting",
|
||||
"scores" : "Scores",
|
||||
"credits" : "Credits",
|
||||
"paused" : "Pauze",
|
||||
"resume" : "Ga door",
|
||||
"left_match" : "Verlaat",
|
||||
"previous" : "Vertaling:",
|
||||
"next" : "Volgende",
|
||||
"back" : "Terug",
|
||||
"page" : "Pagina",
|
||||
"save" : "Red",
|
||||
"not_save" : "Niet redden",
|
||||
"test_mode" : "Bewijs",
|
||||
"manual" : "Handboek",
|
||||
"sql_exception" : "Er was een SQL uitzondering. Probeer contact op te nemen met een beheerder.",
|
||||
"session_string_null" : "De String van de sessie is waardeloos.",
|
||||
"session_empty" : "De sessie is leeg.",
|
||||
"session_bad_format" : "De sessie heeft een slechte formaat.",
|
||||
"session_id_string_empty" : "De sessie ID in String format is leeg.",
|
||||
"session_id_string_bad" : "De sessie ID in String is verkeerd.",
|
||||
"session_string_incompleted" : "De String van de sessie is onvolledig.",
|
||||
"session_null" : "De sessie is klote.",
|
||||
"session_not_id" : "De sessie is geen ID.",
|
||||
"session_not_exists" : "De sessie bestaat niet.",
|
||||
"session_date_out" : "De sessie was gesloten.",
|
||||
"session_timeout" : "De sessie miste Timeout voor gedwongen inactiviteit.",
|
||||
"session_update_ok" : "De huidige sessie was correct geüpload.",
|
||||
"session_update_error" : "Er was een fout met MKVBQBY code toen hij de huidige sessie wilde updaten. {list}",
|
||||
"mode_null" : "De game mode is nul.",
|
||||
"mode_empty" : "De game mode is leeg.",
|
||||
"mode_not_exists" : "De '{mode}' game mode bestaat niet.",
|
||||
"page_null" : "Het paginanummer is nul.",
|
||||
"page_lower_1" : "Het paginanummer moet minstens 1 zijn.",
|
||||
"items_per_page_null" : "Het aantal items per pagina is nul.",
|
||||
"items_per_page_lower_1" : "Tenminste één item per pagina moet getoond worden.",
|
||||
"nicks_null" : "Nicks' zoektocht is leeg.",
|
||||
"load_scores_error" : "Er was een fout met MKVBBXD code toen hij probeerde de scores te laden op de '{page}' pagina met '{items_per_page}' elementen. {list}",
|
||||
"load_scores_ok" : "De MKVLRXN pagina scores met '{items_per_page}' elementen waren correct geladen",
|
||||
"nick_null" : "Nick is gek.",
|
||||
"nick_empty" : "De Nick gaf is leeg.",
|
||||
"score_null" : "De hechting is niet goed.",
|
||||
"score_lower_0" : "De '{score}' score is minder dan 0.",
|
||||
"save_scores_error" : "Er was een fout met '{code}' code toen hij probeerde de nieuwe MKVBYB score te redden op Nick '{nick}'. MKVBFT",
|
||||
"save_scores_ok" : "De nieuwe MKVPFHL score op Nick '{nick}' werd correct opgeslagen."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.nihongo.json
Normal file
50
Public/json/i18n/DPTW.i18n.nihongo.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"nihongo" : {
|
||||
|
||||
"start" : "スタート",
|
||||
"settings" : "コンテンツ",
|
||||
"scores" : "スコア",
|
||||
"credits" : "クレジット",
|
||||
"paused" : "パデュース",
|
||||
"resume" : "お問い合わせ",
|
||||
"left_match" : "アバンドン",
|
||||
"previous" : "新着情報",
|
||||
"next" : "次へ",
|
||||
"back" : "バックナンバー",
|
||||
"page" : "サイトマップ",
|
||||
"save" : "保存する",
|
||||
"not_save" : "保存しない",
|
||||
"test_mode" : "証拠モード",
|
||||
"manual" : "マニュアル",
|
||||
"sql_exception" : "SQL例外がありました。 管理者に連絡してください。.",
|
||||
"session_string_null" : "セッションの文字列は null です。.",
|
||||
"session_empty" : "セッションは空です。.",
|
||||
"session_bad_format" : "セッションは悪い形式です。.",
|
||||
"session_id_string_empty" : "文字列形式のセッションIDは空です。.",
|
||||
"session_id_string_bad" : "文字列形式のセッションIDは間違っています。.",
|
||||
"session_string_incompleted" : "セッションの文字列は不完全です。.",
|
||||
"session_null" : "セッションは null です。.",
|
||||
"session_not_id" : "セッションはIDではありません。.",
|
||||
"session_not_exists" : "セッションは存在しない。.",
|
||||
"session_date_out" : "セッションは終了いたしました。.",
|
||||
"session_timeout" : "セッションは、強制的な非アクティブのためのタイムアウトを逃しました。.",
|
||||
"session_update_ok" : "現在のセッションを正しく更新しました。.",
|
||||
"session_update_error" : "現在のセッションを更新しようとすると、'{code}'コードでエラーが発生しました。 {list}の特長",
|
||||
"mode_null" : "ゲームモードはゼロです。.",
|
||||
"mode_empty" : "ゲームモードは空です。.",
|
||||
"mode_not_exists" : "'{mode}'のゲームモードは存在しません。.",
|
||||
"page_null" : "ページ番号はゼロです。.",
|
||||
"page_lower_1" : "ページ番号は少なくとも1でなければなりません。.",
|
||||
"items_per_page_null" : "1ページあたりの項目数がゼロです。.",
|
||||
"items_per_page_lower_1" : "1ページにつき1件以上表示する必要があります。.",
|
||||
"nicks_null" : "Nicksの検索変数は空です。.",
|
||||
"load_scores_error" : "'{page}'ページのスコアを'{items_per_page}'要素にロードしようとすると、MKVBLVDコードでエラーがありました。 {list}の特長",
|
||||
"load_scores_ok" : "ページスコア '{page}' と '{items_per_page}' 要素が正しく読み込まれました",
|
||||
"nick_null" : "Nick は null です。.",
|
||||
"nick_empty" : "与えられたニックは空です。.",
|
||||
"score_null" : "ステッチはnullです。.",
|
||||
"score_lower_0" : "'{score}'スコアは0未満です。.",
|
||||
"save_scores_error" : "Nick '{nick}'で新しい'{score}'スコアを保存しようとすると、'{code}'コードでエラーがありました。 サイトマップ",
|
||||
"save_scores_ok" : "Nick '{nick}'の新しい'{score}'スコアが正しく保存されました。."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.polski.json
Normal file
50
Public/json/i18n/DPTW.i18n.polski.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"polski" : {
|
||||
|
||||
"start" : "Start",
|
||||
"settings" : "Setting",
|
||||
"scores" : "Scores",
|
||||
"credits" : "Credits",
|
||||
"paused" : "Pause",
|
||||
"resume" : "Kontynuacja",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Previously",
|
||||
"next" : "Next Next Next Next Next Next Next Next",
|
||||
"back" : "Back",
|
||||
"page" : "Strona internetowa",
|
||||
"save" : "Save",
|
||||
"not_save" : "Nie ratuje się",
|
||||
"test_mode" : "Tryb Evidence",
|
||||
"manual" : "Podręcznik",
|
||||
"sql_exception" : "Było to wyjątek SQL. Postanawia skontaktować się z administratorem.",
|
||||
"session_string_null" : "Rozgrywki sesji są nieważne.",
|
||||
"session_empty" : "Sesja jest pusta.",
|
||||
"session_bad_format" : "Sesja ma zły format.",
|
||||
"session_id_string_empty" : "Sesja ID w formacie String jest pusta.",
|
||||
"session_id_string_bad" : "Sesja ID w formacie String jest błędna.",
|
||||
"session_string_incompleted" : "Rozgrywka sesji jest niekompletna.",
|
||||
"session_null" : "Sesja jest nieważna.",
|
||||
"session_not_id" : "Sesja nie jest ID.",
|
||||
"session_not_exists" : "Sesja nie istnieje.",
|
||||
"session_date_out" : "Sesja została zamknięta.",
|
||||
"session_timeout" : "Sesja omyłkowo straciła czas na nieaktywność.",
|
||||
"session_update_ok" : "Obecna sesja została poprawnie aktualizowana.",
|
||||
"session_update_error" : "Istnieje błąd z kodem '{code}', kiedy próbował aktualizować aktualizację sesji. '{code}'",
|
||||
"mode_null" : "Tryb gry jest zero.",
|
||||
"mode_empty" : "Tryb gry jest pusty.",
|
||||
"mode_not_exists" : "Tryb gry '{mode}' nie istnieje.",
|
||||
"page_null" : "Liczba stron jest zero.",
|
||||
"page_lower_1" : "Liczba stron musi być co najmniej 1.",
|
||||
"items_per_page_null" : "Liczba przedmiotów na stronie jest zero.",
|
||||
"items_per_page_lower_1" : "Należy do nich przynajmniej jeden fragment na stronę.",
|
||||
"nicks_null" : "Różnica wyszukiwania Nicksa jest pusta.",
|
||||
"load_scores_error" : "Pojawił się błąd z kodem '{code}', kiedy próbował załadować punkty na stronie MKVBLNV z elementami '{items_per_page}'. {list}",
|
||||
"load_scores_ok" : "Strony '{page}' z elementami '{items_per_page}' zostały prawidłowo załadowane",
|
||||
"nick_null" : "Nick jest nieważny.",
|
||||
"nick_empty" : "Nick jest pusty.",
|
||||
"score_null" : "Wiatr jest pusty.",
|
||||
"score_lower_0" : "Wyniki '{score}' są mniejsze niż 0.",
|
||||
"save_scores_error" : "Pojawił się błąd z kodem '{code}', kiedy próbował uratować nowy wynik '{score}' na Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "Nowy wynik MKVBQZG na torze Nick '{nick}' został poprawnie przechowywany."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.portugues.json
Normal file
50
Public/json/i18n/DPTW.i18n.portugues.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"portugues" : {
|
||||
|
||||
"start" : "Começar",
|
||||
"settings" : "Configurações",
|
||||
"scores" : "Resultados",
|
||||
"credits" : "Créditos",
|
||||
"paused" : "Pausa",
|
||||
"resume" : "Continue",
|
||||
"left_match" : "Abandonar",
|
||||
"previous" : "Anterior",
|
||||
"next" : "Próximo",
|
||||
"back" : "Voltar",
|
||||
"page" : "Página",
|
||||
"save" : "Salvar",
|
||||
"not_save" : "Não salve",
|
||||
"test_mode" : "Modo de evidência",
|
||||
"manual" : "Manual",
|
||||
"sql_exception" : "Houve uma exceção SQL. Por favor, tente contactar um administrador.",
|
||||
"session_string_null" : "O String da sessão é nulo.",
|
||||
"session_empty" : "A sessão está vazia.",
|
||||
"session_bad_format" : "A sessão tem um formato ruim.",
|
||||
"session_id_string_empty" : "O ID da sessão no formato String está vazio.",
|
||||
"session_id_string_bad" : "O ID da sessão no formato String está errado.",
|
||||
"session_string_incompleted" : "A corda da sessão é incompleta.",
|
||||
"session_null" : "A sessão é nula.",
|
||||
"session_not_id" : "A sessão não é uma identificação.",
|
||||
"session_not_exists" : "A sessão não existe.",
|
||||
"session_date_out" : "A sessão foi fechada.",
|
||||
"session_timeout" : "A sessão falhou Timeout por inatividade forçada.",
|
||||
"session_update_ok" : "A sessão atual foi atualizada corretamente.",
|
||||
"session_update_error" : "Houve um erro com o código '{code}' ao tentar atualizar a sessão atual. {list}",
|
||||
"mode_null" : "O modo de jogo é zero.",
|
||||
"mode_empty" : "O modo de jogo está vazio.",
|
||||
"mode_not_exists" : "O modo de jogo '{mode}' não existe.",
|
||||
"page_null" : "O número da página é zero.",
|
||||
"page_lower_1" : "O número da página deve ser pelo menos 1.",
|
||||
"items_per_page_null" : "O número de itens por página é zero.",
|
||||
"items_per_page_lower_1" : "Pelo menos um item por página deve ser exibido.",
|
||||
"nicks_null" : "A variável de pesquisa do Nicks está vazia.",
|
||||
"load_scores_error" : "Houve um erro com o código '{code}' ao tentar carregar os escores de página '{page}' com elementos '{items_per_page}'. MKVBMVX",
|
||||
"load_scores_ok" : "Os resultados da página '{page}' com elementos '{items_per_page}' foram carregados corretamente",
|
||||
"nick_null" : "O Nick é nulo.",
|
||||
"nick_empty" : "O Nick dado está vazio.",
|
||||
"score_null" : "O ponto é nulo.",
|
||||
"score_lower_0" : "A pontuação do '{score}' é inferior a 0.",
|
||||
"save_scores_error" : "Houve um erro com o código '{code}' ao tentar salvar a nova pontuação '{score}' no Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "A nova pontuação do '{score}' no Nick '{nick}' foi armazenada corretamente."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.russkiy.json
Normal file
50
Public/json/i18n/DPTW.i18n.russkiy.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"russkiy" : {
|
||||
|
||||
"start" : "Начало",
|
||||
"settings" : "Настройка",
|
||||
"scores" : "Оценки",
|
||||
"credits" : "Кредиты",
|
||||
"paused" : "Pause",
|
||||
"resume" : "Продолжить",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Предыдущий",
|
||||
"next" : "Следующий",
|
||||
"back" : "Назад",
|
||||
"page" : "Страница",
|
||||
"save" : "Сохранить",
|
||||
"not_save" : "Не экономи",
|
||||
"test_mode" : "Режим проверки",
|
||||
"manual" : "Руководство",
|
||||
"sql_exception" : "Было исключение SQL. Попробуйте связаться с администратором.",
|
||||
"session_string_null" : "The String of the session is null.",
|
||||
"session_empty" : "Заседание пусто.",
|
||||
"session_bad_format" : "Заседание имеет плохой формат.",
|
||||
"session_id_string_empty" : "ID сеанса в формате String пуст.",
|
||||
"session_id_string_bad" : "Идентификатор сеанса в формате String неправильный.",
|
||||
"session_string_incompleted" : "Запись сессии является неполной.",
|
||||
"session_null" : "Заседание является нулевым.",
|
||||
"session_not_id" : "Заседание не является идентификатором.",
|
||||
"session_not_exists" : "Сессии не существует.",
|
||||
"session_date_out" : "Заседание было закрыто.",
|
||||
"session_timeout" : "Сессия пропустила таймаут для вынужденной бездействия.",
|
||||
"session_update_ok" : "Нынешняя сессия была правильно обновлена.",
|
||||
"session_update_error" : "Была ошибка с кодом '{code}' при попытке обновления текущей сессии. {list}",
|
||||
"mode_null" : "Режим игры равен нулю.",
|
||||
"mode_empty" : "Режим игры пуст.",
|
||||
"mode_not_exists" : "Режим игры '{mode}' не существует.",
|
||||
"page_null" : "Номер страницы равен нулю.",
|
||||
"page_lower_1" : "Номер страницы должен быть не менее 1.",
|
||||
"items_per_page_null" : "Количество пунктов на страницу равно нулю.",
|
||||
"items_per_page_lower_1" : "По крайней мере один элемент на страницу должен быть отображен.",
|
||||
"nicks_null" : "Поисковая переменная Никса пуста.",
|
||||
"load_scores_error" : "Была ошибка с кодом '{code}' при попытке загрузить баллы '{page}' с элементами '{items_per_page}'. {list}",
|
||||
"load_scores_ok" : "Рейтинги страниц '{page}' с элементами '{items_per_page}' были правильно загружены",
|
||||
"nick_null" : "Ник не работает.",
|
||||
"nick_empty" : "Ник пуст.",
|
||||
"score_null" : "Стежка пуста.",
|
||||
"score_lower_0" : "Рейтинг '{score}' меньше 0.",
|
||||
"save_scores_error" : "Была ошибка с кодом '{code}' при попытке сохранить новый балл '{score}' на Nick MKVBPTB. {list}",
|
||||
"save_scores_ok" : "Новый балл '{score}' на Nick '{nick}' был правильно сохранен."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.slovencina.json
Normal file
50
Public/json/i18n/DPTW.i18n.slovencina.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"slovencina" : {
|
||||
|
||||
"start" : "Začiatok",
|
||||
"settings" : "Nastavenie",
|
||||
"scores" : "Skóre",
|
||||
"credits" : "Kreditíva",
|
||||
"paused" : "Pauza",
|
||||
"resume" : "Pokračovať",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Predchádzajúci",
|
||||
"next" : "Ďalšie",
|
||||
"back" : "Späť",
|
||||
"page" : "Stránka",
|
||||
"save" : "Uložiť",
|
||||
"not_save" : "Uložiť",
|
||||
"test_mode" : "Režim dôkazu",
|
||||
"manual" : "Ručné",
|
||||
"sql_exception" : "Tam bol výnimkou SQL. Prosím, skúste kontaktovať správcu.",
|
||||
"session_string_null" : "String relácie je null.",
|
||||
"session_empty" : "Sedenie je prázdne.",
|
||||
"session_bad_format" : "Stretnutie má zlý formát.",
|
||||
"session_id_string_empty" : "ID relácie v String formáte je prázdny.",
|
||||
"session_id_string_bad" : "ID relácie v String formáte je zle.",
|
||||
"session_string_incompleted" : "String relácie je neúplná.",
|
||||
"session_null" : "Reláciu je null.",
|
||||
"session_not_id" : "Reláciu nie je ID.",
|
||||
"session_not_exists" : "Reláciu neexistuje.",
|
||||
"session_date_out" : "Stretnutie bolo uzavreté.",
|
||||
"session_timeout" : "Reláciu vynechal čas pre nútenú nečinnosť.",
|
||||
"session_update_ok" : "Aktuálne sedenie bolo správne aktualizované.",
|
||||
"session_update_error" : "Tam bola chyba s '{code}' kód pri pokuse o aktualizáciu aktuálneho zasadnutia. {list}",
|
||||
"mode_null" : "Režim hry je nula.",
|
||||
"mode_empty" : "Režim hry je prázdny.",
|
||||
"mode_not_exists" : "Režim hry '{mode}' neexistuje.",
|
||||
"page_null" : "Číslo stránky je nula.",
|
||||
"page_lower_1" : "Číslo stránky musí byť aspoň 1.",
|
||||
"items_per_page_null" : "Počet položiek na stranu je nula.",
|
||||
"items_per_page_lower_1" : "Najmenej jedna položka na stránke musí byť zobrazená.",
|
||||
"nicks_null" : "Nicks vyhľadávanie premenná je prázdne.",
|
||||
"load_scores_error" : "Tam bola chyba s '{code}' kód pri pokuse o načítanie '{page}' stránky skóre s '{items_per_page}' prvkami. {list}",
|
||||
"load_scores_ok" : "Stránky skóre '{page}' s prvkami '{items_per_page}' boli správne načítané",
|
||||
"nick_null" : "Nick je null.",
|
||||
"nick_empty" : "Nick je prázdny.",
|
||||
"score_null" : "Steh je null.",
|
||||
"score_lower_0" : "Skóre '{score}' je menšia ako 0.",
|
||||
"save_scores_error" : "Tam bola chyba s '{code}' kód pri pokuse zachrániť nové '{score}' skóre na Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "Nový '{score}' skóre na Nick '{nick}' bol správne uložený."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.suomi.json
Normal file
50
Public/json/i18n/DPTW.i18n.suomi.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"suomi" : {
|
||||
|
||||
"start" : "Aloita",
|
||||
"settings" : "Asetukset",
|
||||
"scores" : "Pisteitä",
|
||||
"credits" : "Luottoa",
|
||||
"paused" : "Pako",
|
||||
"resume" : "Jatka",
|
||||
"left_match" : "Hylkääminen",
|
||||
"previous" : "Edellinen Edellinen Edellinen",
|
||||
"next" : "Seuraava Seuraava Seuraava Seuraava Seuraava",
|
||||
"back" : "Takaisin",
|
||||
"page" : "Sivut",
|
||||
"save" : "Säästäminen",
|
||||
"not_save" : "Älä säästä",
|
||||
"test_mode" : "Näyttötila",
|
||||
"manual" : "Manuaalinen",
|
||||
"sql_exception" : "SQL-poikkeus oli olemassa. Ole hyvä ja ota yhteyttä ylläpitäjään.",
|
||||
"session_string_null" : "Istunnon lavastus on nolla.",
|
||||
"session_empty" : "Istunto on tyhjä.",
|
||||
"session_bad_format" : "Istunnossa on huono muoto.",
|
||||
"session_id_string_empty" : "Istuntotunnus Stringissä on tyhjä.",
|
||||
"session_id_string_bad" : "Istuntotunnus Stringissä on väärä.",
|
||||
"session_string_incompleted" : "Istunto on epätäydellinen.",
|
||||
"session_null" : "Istunto on nolla.",
|
||||
"session_not_id" : "Istunto ei ole henkilöllisyys.",
|
||||
"session_not_exists" : "Istuntoa ei ole olemassa.",
|
||||
"session_date_out" : "Istunto oli suljettu.",
|
||||
"session_timeout" : "Istunto on menettänyt Timeoutin pakkotyöhön.",
|
||||
"session_update_ok" : "Nykyinen istunto päivitettiin oikein.",
|
||||
"session_update_error" : "'{code}'-koodilla oli virhe, kun se yritettiin päivittää. {list}",
|
||||
"mode_null" : "Pelitila on nolla.",
|
||||
"mode_empty" : "Pelitila on tyhjä.",
|
||||
"mode_not_exists" : "'{mode}'-pelitilaa ei ole olemassa.",
|
||||
"page_null" : "Sivumäärä on nolla.",
|
||||
"page_lower_1" : "Sivumäärän on oltava vähintään yksi.",
|
||||
"items_per_page_null" : "Esineiden määrä per sivu on nolla.",
|
||||
"items_per_page_lower_1" : "Vähintään yksi kohde sivua kohden on näytettävä.",
|
||||
"nicks_null" : "Nicksin hakuvaihtoehto on tyhjä.",
|
||||
"load_scores_error" : "'{code}'-koodilla oli virhe, kun yritettiin ladata MKVBCDV-sivun tulokset '{items_per_page}'-elementeillä. {list}",
|
||||
"load_scores_ok" : "'{page}'-sivun pisteet '{items_per_page}'-elementeillä ladattiin oikein",
|
||||
"nick_null" : "Nick on null.",
|
||||
"nick_empty" : "Nick on tyhjä.",
|
||||
"score_null" : "Otsikko on nukke.",
|
||||
"score_lower_0" : "'{score}'-pistemäärä on alle 0.",
|
||||
"save_scores_error" : "'{code}'-koodilla oli virhe, kun yritettiin tallentaa uusi '{score}'-pistemäärä Nick '{nick}':llä. {list}",
|
||||
"save_scores_ok" : "Nick '{nick}':n uudet '{score}'-pisteet tallennettiin oikein."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.svenska.json
Normal file
50
Public/json/i18n/DPTW.i18n.svenska.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"svenska" : {
|
||||
|
||||
"start" : "Börja",
|
||||
"settings" : "Inställningar",
|
||||
"scores" : "Scores",
|
||||
"credits" : "Krediter",
|
||||
"paused" : "Paus",
|
||||
"resume" : "Fortsätt",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "Föregående",
|
||||
"next" : "Nästa Nästa",
|
||||
"back" : "Tillbaka",
|
||||
"page" : "Sidan",
|
||||
"save" : "Spara",
|
||||
"not_save" : "Inte rädda",
|
||||
"test_mode" : "Bevis läge",
|
||||
"manual" : "Manuell",
|
||||
"sql_exception" : "Det fanns ett SQL undantag. Försök att kontakta en administratör.",
|
||||
"session_string_null" : "Strängen av sessionen är null.",
|
||||
"session_empty" : "Sessionen är tom.",
|
||||
"session_bad_format" : "Sessionen har ett dåligt format.",
|
||||
"session_id_string_empty" : "Session ID i String format är tomt.",
|
||||
"session_id_string_bad" : "Session ID i String-format är fel.",
|
||||
"session_string_incompleted" : "Strängen för sessionen är ofullständig.",
|
||||
"session_null" : "Sessionen är null.",
|
||||
"session_not_id" : "Sessionen är inte ett ID.",
|
||||
"session_not_exists" : "Sessionen existerar inte.",
|
||||
"session_date_out" : "Sessionen stängdes.",
|
||||
"session_timeout" : "Sessionen missade Timeout för påtvingad inaktivitet.",
|
||||
"session_update_ok" : "Den aktuella sessionen uppdaterades korrekt.",
|
||||
"session_update_error" : "Det fanns ett fel med '{code}'-kod när du försökte uppdatera den aktuella sessionen. {list}",
|
||||
"mode_null" : "Spelläget är noll.",
|
||||
"mode_empty" : "Spelläget är tomt.",
|
||||
"mode_not_exists" : "'{mode}' spelläge existerar inte.",
|
||||
"page_null" : "Sidnumret är noll.",
|
||||
"page_lower_1" : "Sidnumret måste vara minst 1.",
|
||||
"items_per_page_null" : "Antalet objekt per sida är noll.",
|
||||
"items_per_page_lower_1" : "Minst ett objekt per sida måste visas.",
|
||||
"nicks_null" : "Nicks sökvariabel är tom.",
|
||||
"load_scores_error" : "Det fanns ett fel med '{code}'-kod när man försökte ladda '{page}'-sidpoängen med '{items_per_page}'-element. {list}",
|
||||
"load_scores_ok" : "'{page}'-sidorna med '{items_per_page}'-element var korrekt laddade",
|
||||
"nick_null" : "Nick är null.",
|
||||
"nick_empty" : "Nick är tom.",
|
||||
"score_null" : "Stygnet är null.",
|
||||
"score_lower_0" : "'{score}' poäng är mindre än 0.",
|
||||
"save_scores_error" : "Det fanns ett fel med '{code}'-kod när man försökte spara den nya '{score}'-poängen på Nick '{nick}'. {list}",
|
||||
"save_scores_ok" : "Den nya '{score}'-poängen på Nick '{nick}' lagrades korrekt."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.thai.json
Normal file
50
Public/json/i18n/DPTW.i18n.thai.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"thai" : {
|
||||
|
||||
"start" : "เริ่มต้น",
|
||||
"settings" : "การตั้งค่า",
|
||||
"scores" : "คะแนน",
|
||||
"credits" : "บัตรเครดิต",
|
||||
"paused" : "แม่",
|
||||
"resume" : "อ่านต่อ",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "ก่อนหน้านี้",
|
||||
"next" : "ถัดไป",
|
||||
"back" : "ด้านหลัง",
|
||||
"page" : "หน้า",
|
||||
"save" : "บันทึก",
|
||||
"not_save" : "อย่าประหยัด",
|
||||
"test_mode" : "โหมด",
|
||||
"manual" : "คู่มือ",
|
||||
"sql_exception" : "มีข้อยกเว้น SQL โปรดลองติดต่อผู้ดูแลระบบ.",
|
||||
"session_string_null" : "เวทีของปลาย.",
|
||||
"session_empty" : "เซสชั่นว่าง.",
|
||||
"session_bad_format" : "เซสชั่นมีรูปแบบที่ไม่ดี.",
|
||||
"session_id_string_empty" : "เซสชั่นของรหัสในหน้าจอ.",
|
||||
"session_id_string_bad" : "เซสชั่นของรหัสในหน้าจอ.",
|
||||
"session_string_incompleted" : "เวทีของเซสชั่นนั้นไม่สมบูรณ์.",
|
||||
"session_null" : "เซสชั่นคือ.",
|
||||
"session_not_id" : "เซสชั่นไม่ได้.",
|
||||
"session_not_exists" : "เซสชั่นไม่ได้อยู่.",
|
||||
"session_date_out" : "เซสชั่นปิด.",
|
||||
"session_timeout" : "เซสชั่นที่พลาดเวลาสําหรับบังคับ.",
|
||||
"session_update_ok" : "เซสชั่นปัจจุบันถูกต้อง.",
|
||||
"session_update_error" : "มีข้อผิดพลาดกับ '{code}' เมื่อพยายามที่จะอัปเดตช่วงปัจจุบัน '{code}'",
|
||||
"mode_null" : "โหมดเกมคือเป็นศูนย์.",
|
||||
"mode_empty" : "โหมดเกมเป็นที่ว่างเปล่า.",
|
||||
"mode_not_exists" : "โหมด '{mode}'.",
|
||||
"page_null" : "จํานวนหน้า.",
|
||||
"page_lower_1" : "จํานวนหน้าจะต้องอย่างน้อย 1.",
|
||||
"items_per_page_null" : "จํานวนรายการต่อหน้า.",
|
||||
"items_per_page_lower_1" : "อย่างน้อยรายการต่อหน้าจะต้องแสดง.",
|
||||
"nicks_null" : "การค้นหาตัวแปรเป็นที่ว่างเปล่า.",
|
||||
"load_scores_error" : "มีข้อผิดพลาดกับ '{code}'Q เมื่อพยายามที่จะโหลดรหัส MKVBNBS กับ MKVBVH {list}",
|
||||
"load_scores_ok" : "หน้า '{page}' หน้ากับ MKVBVGG เป็นองค์ประกอบที่ถูกต้อง",
|
||||
"nick_null" : "เสือ.",
|
||||
"nick_empty" : "ผีเสื้อจะว่างเปล่า.",
|
||||
"score_null" : "เย็บปลาย.",
|
||||
"score_lower_0" : "ดัชนี '{score}' ต่ํากว่า 0.",
|
||||
"save_scores_error" : "มีข้อผิดพลาดกับ '{code}' เมื่อพยายามที่จะประหยัดเงิน '{score}' คะแนนใหม่บน MKVBBS MKVBYS",
|
||||
"save_scores_ok" : "คะแนนใหม่ '{score}' บนหน้าจอ '{nick}' จะถูกเก็บไว้."
|
||||
}
|
||||
}
|
80
Public/json/i18n/DPTW.i18n.turkce.json
Normal file
80
Public/json/i18n/DPTW.i18n.turkce.json
Normal file
@ -0,0 +1,80 @@
|
||||
{
|
||||
"turkce" : {
|
||||
|
||||
"start" : "Start Start Start Start Start",
|
||||
"settings" : "Ayarlar",
|
||||
"scores" : "Puanlar",
|
||||
"credits" : "Krediler",
|
||||
"paused" : "Pause",
|
||||
"resume" : "Devam etmeye devam et",
|
||||
"left_match" : "Terndon",
|
||||
"previous" : [
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki Önceki ",
|
||||
"Önceki Önceki Önceki Önceki"
|
||||
],
|
||||
"next" : "Sonraki Sonraki Sonraki Sonraki Sonraki Sonraki Sonraki Sonraki",
|
||||
"back" : "Geri dön",
|
||||
"page" : "Page Page Page",
|
||||
"save" : "Kaydet Kaydet Kaydet",
|
||||
"not_save" : "Don't save",
|
||||
"test_mode" : "Kanıt modu",
|
||||
"manual" : "Manual Manual",
|
||||
"sql_exception" : "Bir SQL istisnaı vardı. Lütfen bir yönetici ile temasa geçmeyi deneyin.",
|
||||
"session_string_null" : "Oturumun Stringi null.",
|
||||
"session_empty" : "Oturum boş.",
|
||||
"session_bad_format" : "Oturumun kötü bir formatı var.",
|
||||
"session_id_string_empty" : "String formatındaki oturum ID boş.",
|
||||
"session_id_string_bad" : "String formatındaki oturum ID yanlış.",
|
||||
"session_string_incompleted" : "Oturumun Stringi eksik.",
|
||||
"session_null" : "Oturum null.",
|
||||
"session_not_id" : "Oturum bir kimlik değildir.",
|
||||
"session_not_exists" : "Oturum mevcut değildir.",
|
||||
"session_date_out" : "Oturum kapalıydı.",
|
||||
"session_timeout" : "Oturum zorlayıcı inaktivite için Zamanout kaçırdı.",
|
||||
"session_update_ok" : "Mevcut oturum doğru bir şekilde güncellendi.",
|
||||
"session_update_error" : "Mevcut seansı güncellemeye çalışırken '{code}' kodu ile bir hata vardı. MVBQXZN",
|
||||
"mode_null" : "Oyun modu sıfır.",
|
||||
"mode_empty" : "Oyun modu boş.",
|
||||
"mode_not_exists" : "'{mode}' oyun modu mevcut değildir.",
|
||||
"page_null" : "Sayfa numarası sıfır.",
|
||||
"page_lower_1" : "Sayfa numarası en az 1. olmalıdır.",
|
||||
"items_per_page_null" : "Sayfadaki öğelerin sayısı sıfır.",
|
||||
"items_per_page_lower_1" : "Sayfa başına en az bir öğe görüntülenmelidir.",
|
||||
"nicks_null" : "Nicks'in arama değişkeni boş.",
|
||||
"load_scores_error" : "'{page}' sayfa puanlarını '{items_per_page}' elementleriyle yüklemeye çalışırken '{code}' kodu ile bir hata vardı. {list}",
|
||||
"load_scores_ok" : "'{page}' sayfa puanları '{items_per_page}' elementleri ile doğru yüklendi",
|
||||
"nick_null" : "Nick çıplak.",
|
||||
"nick_empty" : "Nick verilen boş.",
|
||||
"score_null" : "Perde çıplaktır.",
|
||||
"score_lower_0" : "'{score}' puanı 0'dan daha az.",
|
||||
"save_scores_error" : "Nick '{nick}''de yeni '{score}' puanını kurtarmaya çalışırken '{code}' kodu ile bir hata vardı. MVBTPNP",
|
||||
"save_scores_ok" : "Nick '{score}' puanı doğru depolandı."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.ukrainska.json
Normal file
50
Public/json/i18n/DPTW.i18n.ukrainska.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"ukrainska" : {
|
||||
|
||||
"start" : "Почати",
|
||||
"settings" : "Налаштування",
|
||||
"scores" : "Результати",
|
||||
"credits" : "Кредитування",
|
||||
"paused" : "Пауза",
|
||||
"resume" : "Продовжити",
|
||||
"left_match" : "Абанон",
|
||||
"previous" : "Попереднє",
|
||||
"next" : "Про нас",
|
||||
"back" : "Зареєструватися",
|
||||
"page" : "На головну",
|
||||
"save" : "Зберегти",
|
||||
"not_save" : "Не заощаджуйте",
|
||||
"test_mode" : "Режим доступу",
|
||||
"manual" : "Керівництво",
|
||||
"sql_exception" : "За винятком SQL. Будь ласка, спробуйте звернутися до адміністратора.",
|
||||
"session_string_null" : "Стрінг сеансу нуль.",
|
||||
"session_empty" : "Порожня сеанс.",
|
||||
"session_bad_format" : "У сеансі є поганий формат.",
|
||||
"session_id_string_empty" : "Код сеансу у форматі String порожній.",
|
||||
"session_id_string_bad" : "Ідентифікатор сеансу у форматі String неправильно.",
|
||||
"session_string_incompleted" : "Стрінг сеансу неповний.",
|
||||
"session_null" : "Сесія нуль.",
|
||||
"session_not_id" : "Сесія не є ідентифікатором.",
|
||||
"session_not_exists" : "Не існує сеансу.",
|
||||
"session_date_out" : "Закрило сеанс.",
|
||||
"session_timeout" : "Сесія пропущена часом для вимушеної бездіяльності.",
|
||||
"session_update_ok" : "Поточна сесія була правильно оновлена.",
|
||||
"session_update_error" : "При спробі оновити поточну сеанс. МКВБМФБ",
|
||||
"mode_null" : "Режим гри нульовий.",
|
||||
"mode_empty" : "Режим гри порожній.",
|
||||
"mode_not_exists" : "Режим гри '{mode}' не існує.",
|
||||
"page_null" : "Номер сторінки нульовий.",
|
||||
"page_lower_1" : "Номер сторінки повинен бути принаймні 1.",
|
||||
"items_per_page_null" : "Кількість елементів на сторінці нульова.",
|
||||
"items_per_page_lower_1" : "Принаймні один елемент на сторінку необхідно показати.",
|
||||
"nicks_null" : "Змінний пошук Nicks є порожнім.",
|
||||
"load_scores_error" : "На сторінці '{page}' з елементами '{code}' була помилка з кодом '{code}'. МКВБНХГ",
|
||||
"load_scores_ok" : "Презентовано рейтинги '{page}' з елементами '{items_per_page}'",
|
||||
"nick_null" : "Ніка нуль.",
|
||||
"nick_empty" : "Ніка дається порожній.",
|
||||
"score_null" : "Стібок нуль.",
|
||||
"score_lower_0" : "'{score}' рахунок менше 0.",
|
||||
"save_scores_error" : "При спробі зберегти новий бал '{score}' на Nick '{nick}'. АКВАСИ",
|
||||
"save_scores_ok" : "Новий показник '{score}' на Nick '{nick}' був правильно збережений."
|
||||
}
|
||||
}
|
50
Public/json/i18n/DPTW.i18n.zhongwen.json
Normal file
50
Public/json/i18n/DPTW.i18n.zhongwen.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"zhongwen" : {
|
||||
|
||||
"start" : "开始",
|
||||
"settings" : "背景",
|
||||
"scores" : "Ores",
|
||||
"credits" : "信贷",
|
||||
"paused" : "分娩",
|
||||
"resume" : "继续",
|
||||
"left_match" : "Abandon",
|
||||
"previous" : "曾任",
|
||||
"next" : "下一步",
|
||||
"back" : "背 景",
|
||||
"page" : "页 次",
|
||||
"save" : "Save",
|
||||
"not_save" : "Don't Save",
|
||||
"test_mode" : "证据模式",
|
||||
"manual" : "手册",
|
||||
"sql_exception" : "有一个例外。 请试图与一名管理人联系。.",
|
||||
"session_string_null" : "届会的长短不一。.",
|
||||
"session_empty" : "会议空洞。.",
|
||||
"session_bad_format" : "会议形式不好。.",
|
||||
"session_id_string_empty" : "用Sting格式编写的会议设计书是空洞的。.",
|
||||
"session_id_string_bad" : "用Sting格式编写的会议设计书是错误的。.",
|
||||
"session_string_incompleted" : "本届会议的任务不完整。.",
|
||||
"session_null" : "会议无效。.",
|
||||
"session_not_id" : "本届会议不是国际发展学会。.",
|
||||
"session_not_exists" : "本届会议不存在。.",
|
||||
"session_date_out" : "会议闭幕。.",
|
||||
"session_timeout" : "本届会议由于被迫无所作为而失去了时间。.",
|
||||
"session_update_ok" : "本届会议得到正确更新。.",
|
||||
"session_update_error" : "在试图更新本届会议时,存在'{code}'编码的错误。 {list}",
|
||||
"mode_null" : "游戏模式是零。.",
|
||||
"mode_empty" : "游戏模式是空的。.",
|
||||
"mode_not_exists" : "不存在'{mode}'游戏模式。.",
|
||||
"page_null" : "页: 1.",
|
||||
"page_lower_1" : "页: 1.",
|
||||
"items_per_page_null" : "每页件数为零。.",
|
||||
"items_per_page_lower_1" : "每一页至少必须展示一个项目。.",
|
||||
"nicks_null" : "镍的搜索变量是空的。.",
|
||||
"load_scores_error" : "在试图用'{page}'网页上的记分数与'{items_per_page}'分子一道装载时,存在'{code}'代码的错误。 {list}",
|
||||
"load_scores_ok" : "'{page}'页面分数和'{items_per_page}'元素正确装载",
|
||||
"nick_null" : "尼克是无效的。.",
|
||||
"nick_empty" : "尼克岛是空洞的。.",
|
||||
"score_null" : "Itch子是无效的。.",
|
||||
"score_lower_0" : "'{score}'的分数不到0分。.",
|
||||
"save_scores_error" : "'{code}'公司试图在Nick '{nick}'上拯救新的'{score}'记分时出现错误。 {list}",
|
||||
"save_scores_ok" : "镍的'{nick}'的新'{score}'enoBM记分被正确地储存。."
|
||||
}
|
||||
}
|
64
Public/scss/DPTW.base.scss
Normal file
64
Public/scss/DPTW.base.scss
Normal file
@ -0,0 +1,64 @@
|
||||
.dptw{
|
||||
|
||||
position : absolute;
|
||||
top : 0em;
|
||||
left : 0em;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
font-family : $font-family;
|
||||
overflow : hidden;
|
||||
|
||||
textarea{
|
||||
position : absolute;
|
||||
top : 50%;
|
||||
left : 50%;
|
||||
width : 40em;
|
||||
height : 40em;
|
||||
margin-top : -20em;
|
||||
margin-left : -20em;
|
||||
font-size : 1em;
|
||||
box-sizing : border-box;
|
||||
}
|
||||
|
||||
.toast{
|
||||
position : absolute;
|
||||
top : 2em;
|
||||
right : 1em;
|
||||
margin : 0em;
|
||||
padding : 0em;
|
||||
list-style-type : none;
|
||||
text-align : right;
|
||||
z-index : 50;
|
||||
&>li{
|
||||
display : block;
|
||||
margin : 0em;
|
||||
margin-bottom : 1em;
|
||||
padding : .5em;
|
||||
background-color : mix(rgba(0, 0, 0, 0), $color-default, 70%);
|
||||
border : .1em solid $color-default;
|
||||
color : $color-default;
|
||||
// border-radius : 1em;
|
||||
&[data-type=ok]{
|
||||
background-color : mix(rgba(0, 0, 0, 0), $color-ok, 70%);
|
||||
border-color : $color-ok;
|
||||
color : $color-ok;
|
||||
}
|
||||
&[data-type=info]{
|
||||
background-color : mix(rgba(0, 0, 0, 0), $color-info, 70%);
|
||||
border-color : $color-info;
|
||||
color : $color-info;
|
||||
}
|
||||
&[data-type=warn]{
|
||||
background-color : mix(rgba(0, 0, 0, 0), $color-warn, 70%);
|
||||
border-color : $color-warn;
|
||||
color : $color-warn;
|
||||
}
|
||||
&[data-type=erro],&[data-type=error]{
|
||||
background-color : mix(rgba(0, 0, 0, 0), $color-error, 70%);
|
||||
border-color : $color-error;
|
||||
color : $color-error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
53
Public/scss/DPTW.css
Normal file
53
Public/scss/DPTW.css
Normal file
@ -0,0 +1,53 @@
|
||||
.dptw {
|
||||
position: absolute;
|
||||
top: 0em;
|
||||
left: 0em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-family: "VT323";
|
||||
overflow: hidden; }
|
||||
.dptw textarea {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 40em;
|
||||
height: 40em;
|
||||
margin-top: -20em;
|
||||
margin-left: -20em;
|
||||
font-size: 1em;
|
||||
box-sizing: border-box; }
|
||||
.dptw .toast {
|
||||
position: absolute;
|
||||
top: 2em;
|
||||
right: 1em;
|
||||
margin: 0em;
|
||||
padding: 0em;
|
||||
list-style-type: none;
|
||||
text-align: right;
|
||||
z-index: 50; }
|
||||
.dptw .toast > li {
|
||||
display: block;
|
||||
margin: 0em;
|
||||
margin-bottom: 1em;
|
||||
padding: .5em;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
border: 0.1em solid #000;
|
||||
color: #000; }
|
||||
.dptw .toast > li[data-type=ok] {
|
||||
background-color: rgba(0, 255, 0, 0.3);
|
||||
border-color: #0F0;
|
||||
color: #0F0; }
|
||||
.dptw .toast > li[data-type=info] {
|
||||
background-color: rgba(0, 0, 255, 0.3);
|
||||
border-color: #00F;
|
||||
color: #00F; }
|
||||
.dptw .toast > li[data-type=warn] {
|
||||
background-color: rgba(255, 255, 0, 0.3);
|
||||
border-color: #FF0;
|
||||
color: #FF0; }
|
||||
.dptw .toast > li[data-type=erro], .dptw .toast > li[data-type=error] {
|
||||
background-color: rgba(255, 0, 0, 0.3);
|
||||
border-color: #F00;
|
||||
color: #F00; }
|
||||
|
||||
/*# sourceMappingURL=DPTW.css.map */
|
7
Public/scss/DPTW.css.map
Normal file
7
Public/scss/DPTW.css.map
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAAA,KAAK;EAED,QAAQ,EAAG,QAAQ;EACnB,GAAG,EAAG,GAAG;EACT,IAAI,EAAG,GAAG;EACV,KAAK,EAAG,IAAI;EACZ,MAAM,EAAG,IAAI;EACb,WAAW,ECCA,OAAO;EDAlB,QAAQ,EAAG,MAAM;EAEjB,cAAQ;IACJ,QAAQ,EAAG,QAAQ;IACnB,GAAG,EAAG,GAAG;IACT,IAAI,EAAG,GAAG;IACV,KAAK,EAAG,IAAI;IACZ,MAAM,EAAG,IAAI;IACb,UAAU,EAAG,KAAK;IAClB,WAAW,EAAG,KAAK;IACnB,SAAS,EAAG,GAAG;IACf,UAAU,EAAG,UAAU;EAG3B,YAAM;IACF,QAAQ,EAAG,QAAQ;IACnB,GAAG,EAAG,GAAG;IACT,KAAK,EAAG,GAAG;IACX,MAAM,EAAG,GAAG;IACZ,OAAO,EAAG,GAAG;IACb,eAAe,EAAG,IAAI;IACtB,UAAU,EAAG,KAAK;IAClB,OAAO,EAAG,EAAE;IACZ,iBAAI;MACA,OAAO,EAAG,KAAK;MACf,MAAM,EAAG,GAAG;MACZ,aAAa,EAAG,GAAG;MACnB,OAAO,EAAG,IAAI;MACd,gBAAgB,EAAG,kBAA0C;MAC7D,MAAM,EAAG,gBAAyB;MAClC,KAAK,ECrCA,IAAI;MDuCT,+BAAe;QACX,gBAAgB,EAAG,oBAAqC;QACxD,YAAY,ECtChB,IAAI;QDuCA,KAAK,ECvCT,IAAI;MDyCJ,iCAAiB;QACb,gBAAgB,EAAG,oBAAuC;QAC1D,YAAY,EC7Cd,IAAI;QD8CF,KAAK,EC9CP,IAAI;MDgDN,iCAAiB;QACb,gBAAgB,EAAG,sBAAuC;QAC1D,YAAY,ECjDd,IAAI;QDkDF,KAAK,EClDP,IAAI;MDoDN,qEAAoC;QAChC,gBAAgB,EAAG,oBAAwC;QAC3D,YAAY,ECpDb,IAAI;QDqDH,KAAK,ECrDN,IAAI",
|
||||
"sources": ["DPTW.base.scss","DPTW.settings.scss"],
|
||||
"names": [],
|
||||
"file": "DPTW.css"
|
||||
}
|
1
Public/scss/DPTW.scss
Normal file
1
Public/scss/DPTW.scss
Normal file
@ -0,0 +1 @@
|
||||
@import "DPTW.settings.scss", "DPTW.base.scss";
|
11
Public/scss/DPTW.settings.scss
Normal file
11
Public/scss/DPTW.settings.scss
Normal file
@ -0,0 +1,11 @@
|
||||
// Colors.
|
||||
$color-default : #000;
|
||||
$color-info : #00F;
|
||||
$color-warn : #FF0;
|
||||
$color-ok : #0F0;
|
||||
$color-error : #F00;
|
||||
|
||||
// Fonts.
|
||||
$font-family : "VT323";
|
||||
|
||||
$toast-transparency : .3;
|
6
Public/wmd.php
Executable file
6
Public/wmd.php
Executable file
@ -0,0 +1,6 @@
|
||||
<?php
|
||||
|
||||
include __DIR__ . "/../../WMarkDown/PHP/include.php";
|
||||
include __DIR__ . "/../PHP/DPTW.Secrets.php";
|
||||
|
||||
$wmd = new WMarkDown(DPTW\Secrets::wmarkdown);
|
21
Public/wmd_scripts.php
Executable file
21
Public/wmd_scripts.php
Executable file
@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
include __DIR__ . "/../../WMarkDown/PHP/include.php";
|
||||
include __DIR__ . "/../PHP/DPTW.Secrets.php";
|
||||
|
||||
$wmd = new WMarkDown(array_merge([
|
||||
"action" => "update_scripts",
|
||||
"author" => "SrD & KyMAN",
|
||||
"project" => "DPTW",
|
||||
"class" => "DPTW",
|
||||
"object" => "dptw",
|
||||
"url" => "https://dptw.k3y.pw",
|
||||
"project_author" => "KyMAN",
|
||||
"key_words" => "srd,kyman,dptw,kanvas,juego,mecanografía,arcade",
|
||||
"logo" => "/images/DPTW.png",
|
||||
"language" => "es",
|
||||
"wmd_file" => "/../WMarkDown/HTML/script.w.md",
|
||||
"wmd_file_empty" => "/../WMarkDown/HTML/file.w.md",
|
||||
"ignore_script_paths" => [],
|
||||
"only" => "/Public"
|
||||
], DPTW\Secrets::wmarkdown));
|
20
Tools/MariaDB.sh
Executable file
20
Tools/MariaDB.sh
Executable file
@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
if command -v mysql &> /dev/null; then
|
||||
|
||||
mariadb_host="127.0.0.1"
|
||||
mariadb_port="3306"
|
||||
mariadb_user="root"
|
||||
mariadb_password=""
|
||||
root="$(pwd)"
|
||||
|
||||
[[ -f Secrets.sh ]] && source Secrets.sh
|
||||
|
||||
for i in $(find ../MariaDB -type f|grep .sql|sort|cat); do
|
||||
echo $root/$i
|
||||
mysql --host=$mariadb_host --port=$mariadb_port --user=$mariadb_user --password=$mariadb_password < $root/$i
|
||||
done
|
||||
|
||||
else
|
||||
echo "Please, install mariadb-client or mysql-client."
|
||||
fi
|
2
Tools/sass.sh
Executable file
2
Tools/sass.sh
Executable file
@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
sass ../Public/scss/DPTW.scss ../Public/scss/DPTW.css;
|
37
WMD/doc/index.w.md
Normal file
37
WMD/doc/index.w.md
Normal file
@ -0,0 +1,37 @@
|
||||
[[post_data {
|
||||
"author" : "KyMAN",
|
||||
"since" : 20230715,
|
||||
"version" : 20230715
|
||||
}]]
|
||||
# DPTW
|
||||
|
||||
[[links_group [{
|
||||
"images" : ["https://libretranslateplus.k3y.pw/images/flags/espanol.svg", "https://i.imgur.com/im1o0gc.png"],
|
||||
"text" : "Español",
|
||||
"link" : "/doc/es",
|
||||
"self" : true
|
||||
}] ]]
|
||||
|
||||
> [[! note NOTA]]: Crear un "index.php" con URL friendly para que cara Request sea un modo de juego el cual tenga "key", "language" y "Difficulty". De esta forma se puede hacer un creador de modos, y por URL, se podrían compartir los modos de juego. Sólo hay que compartir el JSON de configuración.
|
||||
|
||||
[[header_level 0]]
|
||||
[[include /WMD/doc/es/projects.w.md]]
|
||||
|
||||
[[header_level 0]]
|
||||
[[include /WMD/doc/es/bugs.w.md]]
|
||||
|
||||
[[header_level 0]]
|
||||
[[include /WMD/doc/es/targets.w.md]]
|
||||
|
||||
[[html_data {
|
||||
"title" : "Idiomas - DPTW",
|
||||
"url" : "https://dptw.k3y.pw/doc/",
|
||||
"author" : "KyMAN",
|
||||
"since" : 20230715,
|
||||
"version" : 20230715,
|
||||
"key_words" : "kyman,srd,dptw,kanvas,game,arcade,mechanography",
|
||||
"description" : "Selector de idiomas del juego DPTW.",
|
||||
"project" : "DPTW",
|
||||
"logo" : "https://dptw.k3y.pw/images/DPTW.png",
|
||||
"language" : "es"
|
||||
}]]
|
Loading…
Reference in New Issue
Block a user