summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/HPMHookGen/doxygen.conf3
-rw-r--r--tools/Script-Checker.applescript2
-rwxr-xr-xtools/constdbconverter.pl114
-rw-r--r--tools/itemdb_jobmask_converter.pl100
4 files changed, 216 insertions, 3 deletions
diff --git a/tools/HPMHookGen/doxygen.conf b/tools/HPMHookGen/doxygen.conf
index eeaa4d0e3..ec55967b1 100644
--- a/tools/HPMHookGen/doxygen.conf
+++ b/tools/HPMHookGen/doxygen.conf
@@ -269,8 +269,7 @@ INCLUDE_PATH = ../../src \
../../3rdparty
INCLUDE_FILE_PATTERNS =
PREDEFINED = __attribute__(x)= \
- HPMHOOKGEN \
- PCRE_SUPPORT
+ HPMHOOKGEN
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = NO
#---------------------------------------------------------------------------
diff --git a/tools/Script-Checker.applescript b/tools/Script-Checker.applescript
index 0e657a358..0b7207569 100644
--- a/tools/Script-Checker.applescript
+++ b/tools/Script-Checker.applescript
@@ -85,7 +85,7 @@ on build_hercules(hercules_repo)
display dialog "Build successfully completed. Please check the log file for details." with title "Build result" buttons {"Abort", "Continue"} default button 2 cancel button 1
set the files_to_copy to {"map-server", "script-checker"}
set the conf_files_to_copy to {"inter-server.conf", "import", "packet.conf", "script.conf"}
- set the db_files_to_copy to {"map_index.txt", "item_db2.txt", "const.txt", "mob_db2.txt"}
+ set the db_files_to_copy to {"map_index.txt", "item_db2.txt", "constants.conf", "mob_db2.txt"}
set the db2_files_to_copy to {"map_cache.dat", "item_db.txt", "skill_db.txt", "mob_db.txt"}
try
set the hercules_path to path to resource "Hercules"
diff --git a/tools/constdbconverter.pl b/tools/constdbconverter.pl
new file mode 100755
index 000000000..b534eba70
--- /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_constdb (@) {
+ 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_constdb(<>);
+
+print "}\n";
diff --git a/tools/itemdb_jobmask_converter.pl b/tools/itemdb_jobmask_converter.pl
new file mode 100644
index 000000000..11a5e7a5f
--- /dev/null
+++ b/tools/itemdb_jobmask_converter.pl
@@ -0,0 +1,100 @@
+#!/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/>.
+
+# Base Author: Dastgir @ http://herc.ws
+
+# This script converts item_db.conf Jobmask field into groups format
+# usage example: perl tools/itemdb_jobmask_converter.pl < db/item_db2.conf > db/item_db_out.conf
+
+use strict;
+use warnings;
+
+sub parsedb (@) {
+ my @input = @_;
+ my @jobNames = (
+ "Novice",
+ "Swordsman",
+ "Magician",
+ "Archer",
+ "Acolyte",
+ "Merchant",
+ "Thief",
+ "Knight",
+ "Priest",
+ "Wizard",
+ "Blacksmith",
+ "Hunter",
+ "Assassin",
+ "Unused",
+ "Crusader",
+ "Monk",
+ "Sage",
+ "Rogue",
+ "Alchemist",
+ "Bard",
+ "Unused",
+ "Taekwon",
+ "Star_Gladiator",
+ "Soul_Linker",
+ "Gunslinger",
+ "Ninja",
+ "Gangsi",
+ "Death_Knight",
+ "Dark_Collector",
+ "Kagerou",
+ "Rebellion"
+ );
+ my $jobSize = $#jobNames + 1;
+
+ foreach (@input) {
+ chomp $_;
+ if ($_ =~ /^\s*Job\s*:\s*(?<Job>(?:0x)?[0-9A-Fa-f]+)/x) {
+ my %cols = map { $_ => $+{$_} } keys %+;
+ my $jobMask = hex($cols{Job});
+ my $allJobs = 0xFFFFFFFF;
+ my $allJobsExceptNovice = 0xFFFFFFFE;
+ if ($jobMask < 0 || $jobMask eq "") {
+ print "$_\n";
+ next;
+ }
+ print "\tJob: {\n";
+ if (($jobMask&$allJobs) == $allJobs) {
+ print "\t\tAll: true\n";
+ } elsif (($jobMask&$allJobsExceptNovice) == $allJobsExceptNovice) {
+ print "\t\tAll: true\n";
+ print "\t\tNovice: false\n";
+ } elsif ($jobMask == 0) {
+ print "\t\tAll: false\n";
+ } else {
+ for (my $i = 0; $i < $jobSize; $i++) {
+ my $currBit = 1<<$i;
+ if (($jobMask & $currBit) == $currBit) {
+ print "\t\t$jobNames[$i]: true\n" unless $jobNames[$i] eq "Unused";
+ }
+ }
+ }
+ print "\t}\n";
+ } else {
+ print "$_\n";
+ }
+ }
+}
+
+parsedb(<>);