Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Plugin emblemRecord by KeplerBR
- # Thanks to EternalHarvest
- #
- # The plugin will collect the emblems of the guilds of players who are close and save on the folder logs
- # For more information, see the topic
- package emblemRecord;
- use strict;
- use warnings;
- use Plugins;
- use Log qw(message warning);
- use Globals;
- use Settings;
- use Compress::Zlib; # http://search.cpan.org/dist/Compress-Zlib/
- #Register Plugin and Hooks
- Plugins::register("emblemRecord", "Collect and save the emblems on the folder logs", \&on_unload);
- my $hooks = Plugins::addHooks(
- ['charNameUpdate', \&start_request],
- ['packet/guild_emblem', \&save_emblem],
- );
- #On Unload code
- sub on_unload {
- Plugins::delHook("charNameUpdate", $hooks);
- Plugins::delHook("packet/guild_emblem", $hooks);
- }
- #On Action
- sub start_request {
- my $hookname = shift;
- my $args = shift;
- my $guildID = unpack("v1", $args->{player}{guildID});
- my $emblemID = unpack("v1", $args->{player}{emblemID});
- my $caminho = $Settings::logs_folder . "\emblem " . $guildID . " - " . $emblemID . ".bmp";
- if ($guildID && $emblemID && !-e $caminho) {
- $messageSender->sendGuildRequestEmblem($guildID);
- }
- }
- sub save_emblem {
- my ($self, $args) = @_;
- my $guildID = unpack("v1", $args->{guildID});
- my $emblemID = unpack("v1", $args->{emblemID});
- my $emblemBtye = $args->{emblem};
- # Uncompress -> Requires module Zlib
- my $emblemUncompressed = uncompress($emblemBtye);
- # Loop to change the color pink to white
- # In a 24-bit BMP file, the header occupies about 54 bytes. But it does not matter to us,
- # so lets skip that part. Then will be reading the following bytes to get the color
- # pink, if found, will be substituted for white
- # The emblems always has the size 24x24, with the header, equivalent to about 1782 bytes,
- # or 3564 characters.
- my $emblemHex = unpack("H*", $emblemUncompressed);
- my $byte1; my $byte2; my $byte3;
- for (my $i = 102; $i < 3564; $i += 6) {
- $byte1 = hex(substr($emblemHex, $i, 2));
- $byte2 = substr($emblemHex, $i + 2, 2);
- $byte3 = hex(substr($emblemHex, $i + 4, 2));
- if ($byte1 > 250 && $byte2 eq '00' && $byte3 > 250) {
- substr($emblemHex, $i + 2, 2) = 'FF';
- }
- }
- # Save emblem
- my $nameFile = "emblem " . $guildID . " - " . $emblemID . ".bmp";
- my $file = $Settings::logs_folder . "/" . $nameFile;
- open my $DUMP, '>:raw', $file;
- print $DUMP pack("H*", $emblemHex);
- close $DUMP;
- # Finalize
- message "Emblem $nameFile has been saved to: $Settings::logs_folder \n";
- }
- 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement