mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-18 15:31:33 +00:00
Add new heading format conversion routine - eqemu_server.pl quest_heading_convert
This commit is contained in:
parent
a32dedeb48
commit
cbd68ff8c8
@ -776,6 +776,13 @@ sub show_menu_prompt {
|
|||||||
print "Enter a command #> ";
|
print "Enter a command #> ";
|
||||||
$last_menu = trim($input);
|
$last_menu = trim($input);
|
||||||
}
|
}
|
||||||
|
elsif($input eq "conversions"){
|
||||||
|
print "\n>>> Conversions Menu\n\n";
|
||||||
|
print " [quest_heading_convert] Converts old heading format in quest scripts to new (live format)\n";
|
||||||
|
print " \n> main - go back to main menu\n";
|
||||||
|
print "Enter a command #> ";
|
||||||
|
$last_menu = trim($input);
|
||||||
|
}
|
||||||
elsif($input eq "assets"){
|
elsif($input eq "assets"){
|
||||||
print "\n>>> Server Assets Menu\n\n";
|
print "\n>>> Server Assets Menu\n\n";
|
||||||
print " [maps] Download latest maps\n";
|
print " [maps] Download latest maps\n";
|
||||||
@ -784,7 +791,7 @@ sub show_menu_prompt {
|
|||||||
print " [plugins] Download latest plugins\n";
|
print " [plugins] Download latest plugins\n";
|
||||||
print " [lua_modules] Download latest lua_modules\n";
|
print " [lua_modules] Download latest lua_modules\n";
|
||||||
print " [utility_scripts] Download utility scripts to run and operate the EQEmu Server\n";
|
print " [utility_scripts] Download utility scripts to run and operate the EQEmu Server\n";
|
||||||
if($OS eq "Windows"){
|
if($OS eq "Windows") {
|
||||||
print ">>> Windows\n";
|
print ">>> Windows\n";
|
||||||
print " [windows_server_download] Updates server via latest 'stable' code\n";
|
print " [windows_server_download] Updates server via latest 'stable' code\n";
|
||||||
print " [windows_server_latest] Updates server via latest commit 'unstable'\n";
|
print " [windows_server_latest] Updates server via latest commit 'unstable'\n";
|
||||||
@ -818,6 +825,7 @@ sub show_menu_prompt {
|
|||||||
elsif($input eq "new_server"){ new_server(); $dc = 1; }
|
elsif($input eq "new_server"){ new_server(); $dc = 1; }
|
||||||
elsif($input eq "setup_bots"){ setup_bots(); $dc = 1; }
|
elsif($input eq "setup_bots"){ setup_bots(); $dc = 1; }
|
||||||
elsif($input eq "linux_login_server_setup"){ do_linux_login_server_setup(); $dc = 1; }
|
elsif($input eq "linux_login_server_setup"){ do_linux_login_server_setup(); $dc = 1; }
|
||||||
|
elsif($input eq "quest_heading_convert"){ quest_heading_convert(); $dc = 1; }
|
||||||
elsif($input eq "exit"){
|
elsif($input eq "exit"){
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@ -868,6 +876,7 @@ sub print_main_menu {
|
|||||||
print " [assets] Manage server assets \n";
|
print " [assets] Manage server assets \n";
|
||||||
print " [new_server] New folder EQEmu/PEQ install - Assumes MySQL/Perl installed \n";
|
print " [new_server] New folder EQEmu/PEQ install - Assumes MySQL/Perl installed \n";
|
||||||
print " [setup_bots] Enables bots on server - builds code and database requirements \n";
|
print " [setup_bots] Enables bots on server - builds code and database requirements \n";
|
||||||
|
print " [conversions] Routines used for conversion of scripts/data \n";
|
||||||
print "\n";
|
print "\n";
|
||||||
print " exit \n";
|
print " exit \n";
|
||||||
print "\n";
|
print "\n";
|
||||||
@ -2257,3 +2266,134 @@ sub generate_random_password {
|
|||||||
return $randpassword;
|
return $randpassword;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub quest_heading_convert {
|
||||||
|
|
||||||
|
if(trim(get_mysql_result("SELECT value FROM variables WHERE varname = 'new_heading_conversion'")) eq "true") {
|
||||||
|
print "Conversion script has already ran... doing this again would skew proper heading values in function calls...\n";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
%matches = (
|
||||||
|
0 => ["quest::spawn2", 6],
|
||||||
|
1 => ["eq.spawn2", 6],
|
||||||
|
2 => ["eq.unique_spawn", 6],
|
||||||
|
3 => ["quest::unique_spawn", 6],
|
||||||
|
4 => ["GMMove", 3],
|
||||||
|
5 => ["MovePCInstance", 5],
|
||||||
|
6 => ["MovePC", 4],
|
||||||
|
7 => ["moveto", 3],
|
||||||
|
);
|
||||||
|
|
||||||
|
$total_matches = 0;
|
||||||
|
|
||||||
|
use Scalar::Util qw(looks_like_number);
|
||||||
|
|
||||||
|
my @files;
|
||||||
|
my $start_dir = "quests/.";
|
||||||
|
find(
|
||||||
|
sub { push @files, $File::Find::name unless -d; },
|
||||||
|
$start_dir
|
||||||
|
);
|
||||||
|
for my $file (@files) {
|
||||||
|
|
||||||
|
#::: Skip non script files
|
||||||
|
if($file!~/lua|pl/i){ next; }
|
||||||
|
|
||||||
|
if($file=~/lua|pl/i){
|
||||||
|
$print_buffer = "";
|
||||||
|
|
||||||
|
$changes_made = 0;
|
||||||
|
|
||||||
|
#::: Open and read line by line
|
||||||
|
open (FILE, $file);
|
||||||
|
while (<FILE>) {
|
||||||
|
chomp;
|
||||||
|
$line = $_;
|
||||||
|
|
||||||
|
#::: Loop through matches
|
||||||
|
foreach my $key (sort(keys %matches)) {
|
||||||
|
$argument_position = $matches{$key}[1];
|
||||||
|
$match = $matches{$key}[0];
|
||||||
|
|
||||||
|
if($line=~/$match/i) {
|
||||||
|
$line_temp = $line;
|
||||||
|
$line_temp =~s/$match\(//g;
|
||||||
|
$line_temp =~s/\(.*?\)//gs;
|
||||||
|
$line_temp =~s/\);.*//;
|
||||||
|
$line_temp =~s/\).*//;
|
||||||
|
$line_temp =~s/\):.*//;
|
||||||
|
$line_temp =~s/\);//g;
|
||||||
|
|
||||||
|
@line_data = split(",", $line_temp);
|
||||||
|
|
||||||
|
# use Data::Dumper;
|
||||||
|
# print Dumper(\@line_data);
|
||||||
|
|
||||||
|
$heading_value = $line_data[$argument_position];
|
||||||
|
$heading_value_clean = trim($heading_value);
|
||||||
|
$heading_value_raw = $line_data[$argument_position];
|
||||||
|
$heading_value_before = $line_data[$argument_position - 1];
|
||||||
|
|
||||||
|
if (looks_like_number($heading_value) && $heading_value != 0 && ($heading_value * 2) <= 512) {
|
||||||
|
$heading_value_new = $heading_value * 2;
|
||||||
|
|
||||||
|
$heading_value=~s/$heading_value_clean/$heading_value_new/g;
|
||||||
|
|
||||||
|
$heading_value_search = quotemeta($heading_value_before . "," . $heading_value_raw);
|
||||||
|
$heading_value_replace = $heading_value_before . "," . $heading_value;
|
||||||
|
|
||||||
|
print $file . "\n";
|
||||||
|
print $line . "\n";
|
||||||
|
$line=~s/$heading_value_search/$heading_value_replace/g;
|
||||||
|
print $line . "\n";
|
||||||
|
print "\n";
|
||||||
|
|
||||||
|
$changes_made = 1;
|
||||||
|
}
|
||||||
|
elsif ($heading_value == 0){} #::: Do nothing
|
||||||
|
elsif ($heading_value=~/GetHeading|heading|\$h/i){} #::: Do nothing
|
||||||
|
else {
|
||||||
|
if ($file=~/\.pl/i) {
|
||||||
|
if($line_temp=~/#/i) {
|
||||||
|
$line .= " - needs_heading_validation";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$line .= " # needs_heading_validation";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ($file=~/\.lua/i) {
|
||||||
|
if($line_temp=~/--/i) {
|
||||||
|
$line .= " - needs_heading_validation";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$line .= " -- needs_heading_validation";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$changes_made = 1;
|
||||||
|
|
||||||
|
print $line . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$total_matches++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$print_buffer .= $line . "\n";
|
||||||
|
}
|
||||||
|
close (FILE);
|
||||||
|
|
||||||
|
if($changes_made == 1) {
|
||||||
|
#::: Write changes
|
||||||
|
open (NEW_FILE, '>', $file);
|
||||||
|
print NEW_FILE $print_buffer;
|
||||||
|
close NEW_FILE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#::: Mark conversion as ran
|
||||||
|
print get_mysql_result("INSERT INTO `variables` (varname, value, information, ts) VALUES ('new_heading_conversion', 'true', 'Script ran against quests folder to convert new heading values', NOW())");
|
||||||
|
|
||||||
|
print "Total matches: " . $total_matches . "\n";
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user