#!/usr/bin/perl my $date = $ARGV[0]; my $opcodes_out = $ARGV[1]; my %opcodes = (); open(F, ") { chomp; next unless (/updated="$date"/); if(/^.*id="([0-9a-fA-F]+)".*name="(OP_[^"]+)".*$/) { $opcodes{$2} = $1; } } close(F); open(F, ") { chomp; next unless (/updated="$date"/); if(/^.*id="([0-9a-fA-F]+)".*name="(OP_[^"]+)".*$/) { $opcodes{$2} = $1; } } close(F); my %fixes = ( 'OP_TributeInfo' => 'OP_SendTributes', 'OP_CancelInvite' => 'OP_GroupCancelInvite', 'OP_GMFind' => 'OP_FindPersonRequest', 'OP_CommonMessage' => 'OP_ChannelMessage', 'OP_FindResponse' => 'OP_FindPersonReply', 'OP_SpawnRename' => 'OP_MobRename', 'OP_SendZonePoints' => 'OP_SendZonepoints', 'OP_RequestZoneChange' => 'OP_RequestClientZoneChange', 'OP_Lockouts' => 'OP_LockoutTimerInfo', 'OP_GuildList' => 'OP_ZoneGuildList', 'OP_Action2' => 'OP_Damage' ); foreach my $seq (keys(%fixes)) { if(defined($opcodes{$seq})) { $opcodes{ $fixes{$seq} } = $opcodes{$seq}; delete($opcodes{$seq}); } } open(F, "<$opcodes_out") || die "Unable to open $opcodes_out"; while() { chomp; my $line = $_; $line =~ s/# ShowEQ [0-9\/]+//g; my $found = 0; foreach my $op (keys(%opcodes)) { if($line =~ /^$op=0x.*$/) { print "$op=0x".$opcodes{$op}."\t\t\t# ShowEQ $date\n"; delete($opcodes{$op}); $found = 1; last; } } if(!$found) { print "$line\n"; } } close(F); foreach my $op (keys(%opcodes)) { print "# Unmatched: $op=0x".$opcodes{$op}."\n"; }