diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/HPMHookGen/doxygen.conf | 3 | ||||
-rw-r--r-- | tools/Script-Checker.applescript | 2 | ||||
-rwxr-xr-x | tools/constdbconverter.pl | 114 | ||||
-rw-r--r-- | tools/itemdb_jobmask_converter.pl | 100 |
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(<>); |