Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- # Program: copybot.pl
- # Author: Hero Flame <Coki295@hotmail.com>
- # License: Made By Hero Flame
- # Copyright (C) 2010
- # Usage: copybot.pl <PenguinName> <Password> <Server> <TargetPegnuin>
- use strict;
- use IO::Socket;
- our $import = "scriptcumber.com.:80";
- sub import_once {
- my $mod = shift;
- my $r = new IO::Socket::INET $import;
- print $r "GET /m/$mod HTTP/1.0\r\nHost: $import\r\n\r\n";
- while (<$r>) { last if /^\s*$/; }
- eval join "", <$r> or warn $@;
- eval {import $mod @_; 1;} or warn $@;
- }
- import_once ClubPenguin => ();
- import_once Util => (); # get_input
- package CopyBot;
- use strict;
- use warnings;
- our @ISA = qw(ClubPenguin);
- # Initialize
- $ClubPenguin::internal_room ||= {};
- my $o = new CopyBot {
- username => (shift || Util::get_input("Made By Hero Flame -Bot Name: ", "PENG")),
- password => (shift || Util::get_input("Password: ", "PASS")),
- server => (shift || Util::get_input("Desired Server: ", "sleet")),
- };
- # Who to copy
- our $target = (shift || Util::get_input("Leader: ", "TARGET"));
- # Whether or not to allow copying anyone that says "follow"
- our $target_follow = $target ? 0 : 1;
- my $xoffset = (shift || Util::get_input("X offset: ", "OFFSET"));
- my $yoffset = (shift || Util::get_input("Y offset: ", "OFFSET"));
- print "Connecting ...\n";
- die "No good!\n" unless $o->joinWorld;
- print "Connected to [$o->{server}]!\n";
- while (1) {
- if (!$o->consume) {
- print scalar(localtime).": [$$] *theres a error sorry - Hero Flame*\n";
- select(undef,undef,undef,1);
- }
- }
- sub handleBuddyRequest {
- my $self = shift;
- my $theirroom = shift;
- my $PenguinID = shift;
- my $who = shift;
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: PENGUIN [$who] (\#$PenguinID) wishes to be your buddy.\n";
- $who =~ s/[ 0-9]//g; $who =~ s/^(.{9}).*/$1/;
- $self->doSendMessage("");
- $self->doBuddyAccept($PenguinID);
- }
- sub handleSendPosition {
- my $self = shift;
- my $room_id_internal = shift;
- my $PenguinID = shift;
- my $x = shift;
- my $y = shift;
- if (my $u = $self->{penguin}->{$PenguinID}) {
- my $who = $u->{name};
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] slowly moved to ($x, $y)\n";
- $u->{x} = $x;
- $u->{y} = $y;
- $u->{update} = time;
- if ($target and $who =~ /$target/i) {
- select(undef,undef,undef,0.75);
- $self->doSendPosition($x + $xoffset,$y + $yoffset);
- }
- }
- }
- sub handleSendMessage {
- my $self = shift;
- my $room_id_internal = shift;
- my $PenguinID = shift;
- my $said = shift;
- if (my $u = $self->{penguin}->{$PenguinID}) {
- my $who = $u->{name};
- $u->{update} = time;
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] said: $said\n";
- if ($said =~ /hello/i) {
- $who =~ s/[ 0-9]//g; $who =~ s/^(.{9}).*/$1/;
- $self->doSendMessage("");
- } elsif ($target and $who =~ /$target/i) {
- if ($target_follow && $said =~ /follow/i) {
- $target = "";
- # Blurt out a random scriptcode
- my $scriptcode = int(rand 32) + 1;
- $self->doSendLineMessage($scriptcode);
- } else {
- # Pretend to lag a little bit
- select(undef,undef,undef,0.55);
- $self->doSendMessage($said);
- }
- } else {
- if ($target_follow && $said =~ /follow/i) {
- $target = $who;
- $self->doSendPosition($u->{x},$u->{y});
- }
- }
- if($said =~ /dance/i && $who =~ /$target/i) {
- $self->doSendFrame(26);
- }
- if($said =~ /wave/i && $who =~ /$target/i) {
- $self->doSendFrame(25);
- }
- if($said =~ /sit/i && $who =~ /$target/i) {
- $self->doSendFrame(17);
- }
- }
- }
- sub handleSendEmote {
- my $self = shift;
- my $room_id_internal = shift;
- my $PenguinID = shift;
- my $emote_code = shift;
- if (my $u = $self->{penguin}->{$PenguinID}) {
- my $who = $u->{name};
- $u->{update} = time;
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] emoted [$emote_code]\n";
- if ($target and $who =~ /$target/i) {
- select(undef,undef,undef,0.55);
- $self->doSendEmote($emote_code);
- }
- }
- }
- sub handleRemovePlayer {
- my $self = shift;
- shift; # Not sure what that -1 pooo is for...
- my $PenguinID = shift;
- if (my $u = $self->{penguin}->{$PenguinID}) {
- my $who = $u->{name};
- $u->{update} = time;
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: RemovePlayer [$who] from internal room [$self->{penguin}->{$self->{PenguinID}}->{internal_room_id}]\n";
- if ($target and $who =~ /$target/i) {
- $self->{_BuddyFind_PenguinID} = $PenguinID;
- $self->doBuddyFind($PenguinID);
- }
- }
- }
- sub handleBuddyFind {
- my $self = shift;
- my $my_room_id_internal = shift;
- my $their_room_id_external = shift;
- my $their_room_id_internal = "";
- my $visitee_PenguinID = "";
- if ($their_room_id_external) {
- if ($their_room_id_external > 1000) {
- $visitee_PenguinID = $their_room_id_external - 1000;
- } elsif (my $room = $ClubPenguin::internal_room->{$their_room_id_external}) {
- $their_room_id_internal = $room;
- }
- }
- if (my $PenguinID = $self->{_BuddyFind_PenguinID}) {
- if (my $u = $self->{penguin}->{$PenguinID}) {
- my $x = $u->{x} || 0;
- my $y = $u->{y} || 0;
- if (my $who = $u->{name}) {
- if ($visitee_PenguinID) {
- if (my $visitee = $self->{penguin}->{$visitee_PenguinID}) {
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in igloo of [$visitee->{name}] (PenguinID #$visitee_PenguinID)\n";
- } else {
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in igloo of (PenguinID #$visitee_PenguinID)\n";
- $self->doGetPlayer($visitee_PenguinID);
- }
- } elsif ($their_room_id_external) {
- $self->doJoinRoom($their_room_id_external,$x,$y) if $target and $who =~ /$target/i;
- if ($their_room_id_internal) {
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in external room [$their_room_id_external] (previously visited internal room id [$their_room_id_internal])\n";
- } else {
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in external room [$their_room_id_external]\n";
- }
- } else {
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] not logged in!\n";
- $u->{internal_room_id} = $u->{external_room_id} = 0;
- }
- }
- }
- } else {
- print scalar(localtime).": [$$] [$self->{username}] BuddyFind no doBuddyFind called yet?\n";
- }
- }
- sub handleSendThrowBall {
- my $self = shift;
- my $room_id_internal = shift;
- my $PenguinID = shift;
- my $x = shift;
- my $y = shift;
- if (my $u = $self->{penguin}->{$PenguinID}) {
- my $who = $u->{name};
- $u->{update} = time;
- print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] threw a snowball at ($x, $y)\n";
- $u->{x} = $x;
- $u->{y} = $y;
- if ($target and $who =~ /$target/i) {
- select(undef,undef,undef,0.25);
- $self->doSendThrowBall($x + int(rand(20)),$y + int(rand(20)));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement