mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 04:02:37 +03:00
Added Tool to create trader config
This commit is contained in:
97
Tools/TraderMigration/serverTraders2cfg.pl
Normal file
97
Tools/TraderMigration/serverTraders2cfg.pl
Normal file
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/perl -w
|
||||
use strict;
|
||||
use warnings;
|
||||
use DBI;
|
||||
use JSON;
|
||||
use Data::Dumper;
|
||||
|
||||
my $pathServerTradersSQF = '..\..\Server Files\MPMissions\DayZ_Epoch_11.Chernarus\server_traders.sqf';
|
||||
my $pathServerTradersCfg = '..\..\SQF\dayz_code\Configs\CfgServerTrader\\';
|
||||
my $MySQL = DBI->connect('DBI:mysql:host=localhost;database=test2', 'root', 'root');
|
||||
|
||||
open(TRADERSQF, '<', $pathServerTradersSQF) or die $!;
|
||||
my $trader = '';
|
||||
my $isTrader = 0;
|
||||
my @traders;
|
||||
while (<TRADERSQF>) {
|
||||
if (/^menu_(\w+)\s*=\s*\[/) {
|
||||
$trader = '{"'.$1.'":[';
|
||||
$isTrader = 1;
|
||||
}
|
||||
elsif (/\];/ && $isTrader) {
|
||||
$trader .= ']}';
|
||||
$trader =~ s/\r|\n|\t//g;
|
||||
push(@traders, JSON->new()->decode($trader));
|
||||
}
|
||||
elsif ($isTrader) {
|
||||
$trader .= $_;
|
||||
}
|
||||
}
|
||||
close(TRADERSQF);
|
||||
|
||||
$trader = {};
|
||||
my $traderHumanity = {
|
||||
Hero => {}
|
||||
,Friendly => {}
|
||||
,Neutral => {}
|
||||
,Bandit => {}
|
||||
};
|
||||
foreach my $trad (@traders) {
|
||||
my $name = (keys %{$trad})[0];
|
||||
$trader->{$name} = {
|
||||
Humanity => @{$trad->{$name}}[2]
|
||||
,Categories => @{$trad->{$name}}[0]
|
||||
,Special => @{$trad->{$name}}[1]
|
||||
};
|
||||
|
||||
if ($trader->{$name}->{Humanity} =~ /hero/) {
|
||||
$traderHumanity->{Hero}->{$name} = $trader->{$name};
|
||||
}
|
||||
elsif ($trader->{$name}->{Humanity} =~ /friendly/) {
|
||||
$traderHumanity->{Friendly}->{$name} = $trader->{$name};
|
||||
}
|
||||
elsif ($trader->{$name}->{Humanity} =~ /neutral/) {
|
||||
$traderHumanity->{Neutral}->{$name} = $trader->{$name};
|
||||
}
|
||||
elsif ($trader->{$name}->{Humanity} =~ /hostile/) {
|
||||
$traderHumanity->{Bandit}->{$name} = $trader->{$name};
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $traderhuman (keys $traderHumanity) {
|
||||
my $cfg = '';
|
||||
foreach my $class (keys %{$traderHumanity->{$traderhuman}}) {
|
||||
$cfg .= "class ".$class." {\n";
|
||||
$cfg .= "\thumanity = \"".$traderHumanity->{$traderhuman}->{$class}->{Humanity}."\";\n";
|
||||
$cfg .= "\tcategory[] = {\n";
|
||||
foreach my $cat (@{$traderHumanity->{$traderhuman}->{$class}->{Categories}}) {
|
||||
my $catName = '';
|
||||
my $sth = $MySQL->prepare(q~
|
||||
SELECT
|
||||
name AS CatName
|
||||
FROM
|
||||
trader_tids
|
||||
WHERE
|
||||
id = ?
|
||||
~);
|
||||
$sth->execute(
|
||||
$cat->[1]
|
||||
);
|
||||
while (my $row = $sth->fetchrow_hashref()) {
|
||||
$catName = $row->{CatName};
|
||||
}
|
||||
$sth->finish();
|
||||
$catName =~ s~ |-|/~~g;
|
||||
|
||||
$cfg .= "\t\t{\"".$cat->[0]."\",\"".$catName."\"}\n";
|
||||
}
|
||||
$cfg .= "\t};\n";
|
||||
$cfg .= "};\n"
|
||||
}
|
||||
|
||||
open(CFG, '>', $pathServerTradersCfg.'Trader'.$traderhuman.'.hpp') or die $!;
|
||||
print CFG $cfg;
|
||||
close(CFG);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
Reference in New Issue
Block a user