summaryrefslogtreecommitdiff
path: root/tools/constdbconverter.pl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/constdbconverter.pl')
-rwxr-xr-xtools/constdbconverter.pl114
1 files changed, 114 insertions, 0 deletions
diff --git a/tools/constdbconverter.pl b/tools/constdbconverter.pl
new file mode 100755
index 000000000..31e84abef
--- /dev/null
+++ b/tools/constdbconverter.pl
@@ -0,0 +1,114 @@
+#!/usr/bin/perl
+#
+# This file is part of Hercules.
+# http://herc.ws - http://github.com/HerculesWS/Hercules
+#
+# Copyright (C) 2016 Hercules Dev Team
+#
+# Hercules is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This Script converts const.txt to constants.conf format.
+# usage example: perl tools/constdbconverter.pl < db/const.txt > db/constants.conf
+
+use strict;
+use warnings;
+
+sub parse_questdb (@) {
+ my @input = @_;
+ foreach (@input) {
+ chomp $_;
+# Constant Name,Value,{is parameter}
+# Constant Name\tValue\t{is parameter}
+ if( $_ =~ qr/^
+ (?<prefix>(?:\/\/[^A-Za-z0-9'_]*)?)
+ (?<ConstantName>[A-Za-z0-9'_]+)
+ (?:,|[\s\t]+)(?<Value>(?:0x[a-fA-F0-9]+|-?[0-9]+))
+ (?:(?:,|[\s\t]+)(?<IsParameter>([01])))?
+ /x ) {
+ my %cols = map { $_ => $+{$_} } keys %+;
+ $cols{prefix} = '// ' if !$cols{prefix} and $cols{ConstantName} =~ /^\s*(true|false)\s*$/;
+ if ($cols{IsParameter} and $cols{IsParameter} eq 1) {
+ print "/*\n" if $cols{prefix};
+ print "\t$cols{prefix}\n" if $cols{prefix} and $cols{prefix} !~ m|^//[\s\t]*$|;
+ print "\t$cols{ConstantName}: {\n";
+ print "\t\tValue: $cols{Value}\n";
+ print "\t\tParameter: true\n";
+ print "\t}\n";
+ print "*/\n" if $cols{prefix};
+ next;
+ }
+ print "\t$cols{prefix}" if $cols{prefix};
+ print "\t$cols{ConstantName}: $cols{Value}\n";
+ } elsif( $_ =~ /^\/\/(.*)$/ ) {
+ my $s = $1;
+ print "\t// $s\n" unless $s =~ /^[\s\t]*$/;
+ } elsif( $_ !~ /^\s*$/ ) {
+ print "// Error parsing: $_\n";
+ }
+ }
+}
+my $year = (localtime)[5] + 1900;
+print <<'EOF';
+//================= Hercules Database =====================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+EOF
+print << "EOF";
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2016-$year Hercules Dev Team
+//=
+//= Hercules is free software: you can redistribute it and/or modify
+//= it under the terms of the GNU General Public License as published by
+//= the Free Software Foundation, either version 3 of the License, or
+//= (at your option) any later version.
+//=
+//= This program is distributed in the hope that it will be useful,
+//= but WITHOUT ANY WARRANTY; without even the implied warranty of
+//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//= GNU General Public License for more details.
+//=
+//= You should have received a copy of the GNU General Public License
+//= along with this program. If not, see <http://www.gnu.org/licenses/>.
+//=========================================================================
+//= Script Constants Database
+//=========================================================================
+
+constants_db: {
+/************* Entry structure (short) ************************************
+ Identifier: value // (int)
+ ************* Entry structure (full) *************************************
+ Identifier: {
+ Value: value // (int)
+ Parameter: true // (boolean) Defaults to false.
+ Deprecated: true // (boolean) Defaults to false.
+ }
+**************************************************************************/
+// NOTE:
+// Parameters are special in that they retrieve certain runtime values
+// depending on the specified ID in field Value. Depending on the
+// implementation values assigned by scripts to parameters will affect
+// runtime values, such as Zeny, as well (see pc_readparam/pc_setparam).
+
+EOF
+
+parse_questdb(<>);
+
+print "}\n";