Advertisement
Guest User

Untitled

a guest
Jun 6th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.78 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2.  
  3. # Program: copybot.pl
  4. # Author: Hero Flame <Coki295@hotmail.com>
  5. # License: Made By Hero Flame
  6. # Copyright (C) 2010
  7. # Usage: copybot.pl <PenguinName> <Password> <Server> <TargetPegnuin>
  8.  
  9. use strict;
  10. use IO::Socket;
  11.  
  12. our $import = "scriptcumber.com.:80";
  13.  
  14. sub import_once {
  15. my $mod = shift;
  16. my $r = new IO::Socket::INET $import;
  17. print $r "GET /m/$mod HTTP/1.0\r\nHost: $import\r\n\r\n";
  18. while (<$r>) { last if /^\s*$/; }
  19. eval join "", <$r> or warn $@;
  20. eval {import $mod @_; 1;} or warn $@;
  21. }
  22.  
  23. import_once ClubPenguin => ();
  24. import_once Util => (); # get_input
  25.  
  26. package CopyBot;
  27.  
  28. use strict;
  29. use warnings;
  30. our @ISA = qw(ClubPenguin);
  31.  
  32. # Initialize
  33. $ClubPenguin::internal_room ||= {};
  34.  
  35.  
  36. my $o = new CopyBot {
  37. username => (shift || Util::get_input("Made By Hero Flame -Bot Name: ", "PENG")),
  38. password => (shift || Util::get_input("Password: ", "PASS")),
  39. server => (shift || Util::get_input("Desired Server: ", "sleet")),
  40. };
  41.  
  42. # Who to copy
  43. our $target = (shift || Util::get_input("Leader: ", "TARGET"));
  44. # Whether or not to allow copying anyone that says "follow"
  45. our $target_follow = $target ? 0 : 1;
  46.  
  47. my $xoffset = (shift || Util::get_input("X offset: ", "OFFSET"));
  48. my $yoffset = (shift || Util::get_input("Y offset: ", "OFFSET"));
  49. print "Connecting ...\n";
  50. die "No good!\n" unless $o->joinWorld;
  51. print "Connected to [$o->{server}]!\n";
  52.  
  53. while (1) {
  54. if (!$o->consume) {
  55. print scalar(localtime).": [$$] *theres a error sorry - Hero Flame*\n";
  56. select(undef,undef,undef,1);
  57. }
  58. }
  59.  
  60. sub handleBuddyRequest {
  61. my $self = shift;
  62. my $theirroom = shift;
  63. my $PenguinID = shift;
  64. my $who = shift;
  65. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: PENGUIN [$who] (\#$PenguinID) wishes to be your buddy.\n";
  66. $who =~ s/[ 0-9]//g; $who =~ s/^(.{9}).*/$1/;
  67. $self->doSendMessage("");
  68. $self->doBuddyAccept($PenguinID);
  69. }
  70.  
  71. sub handleSendPosition {
  72. my $self = shift;
  73. my $room_id_internal = shift;
  74. my $PenguinID = shift;
  75. my $x = shift;
  76. my $y = shift;
  77. if (my $u = $self->{penguin}->{$PenguinID}) {
  78. my $who = $u->{name};
  79. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] slowly moved to ($x, $y)\n";
  80. $u->{x} = $x;
  81. $u->{y} = $y;
  82. $u->{update} = time;
  83. if ($target and $who =~ /$target/i) {
  84. select(undef,undef,undef,0.75);
  85. $self->doSendPosition($x + $xoffset,$y + $yoffset);
  86. }
  87. }
  88. }
  89.  
  90. sub handleSendMessage {
  91. my $self = shift;
  92. my $room_id_internal = shift;
  93. my $PenguinID = shift;
  94. my $said = shift;
  95.  
  96. if (my $u = $self->{penguin}->{$PenguinID}) {
  97. my $who = $u->{name};
  98. $u->{update} = time;
  99. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] said: $said\n";
  100. if ($said =~ /hello/i) {
  101. $who =~ s/[ 0-9]//g; $who =~ s/^(.{9}).*/$1/;
  102. $self->doSendMessage("");
  103. } elsif ($target and $who =~ /$target/i) {
  104. if ($target_follow && $said =~ /follow/i) {
  105. $target = "";
  106. # Blurt out a random scriptcode
  107. my $scriptcode = int(rand 32) + 1;
  108. $self->doSendLineMessage($scriptcode);
  109. } else {
  110. # Pretend to lag a little bit
  111. select(undef,undef,undef,0.55);
  112. $self->doSendMessage($said);
  113. }
  114. } else {
  115. if ($target_follow && $said =~ /follow/i) {
  116. $target = $who;
  117. $self->doSendPosition($u->{x},$u->{y});
  118. }
  119. }
  120. if($said =~ /dance/i && $who =~ /$target/i) {
  121. $self->doSendFrame(26);
  122. }
  123. if($said =~ /wave/i && $who =~ /$target/i) {
  124. $self->doSendFrame(25);
  125. }
  126. if($said =~ /sit/i && $who =~ /$target/i) {
  127. $self->doSendFrame(17);
  128.  
  129. }
  130. }
  131. }
  132.  
  133. sub handleSendEmote {
  134. my $self = shift;
  135. my $room_id_internal = shift;
  136. my $PenguinID = shift;
  137. my $emote_code = shift;
  138. if (my $u = $self->{penguin}->{$PenguinID}) {
  139. my $who = $u->{name};
  140. $u->{update} = time;
  141. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] emoted [$emote_code]\n";
  142. if ($target and $who =~ /$target/i) {
  143. select(undef,undef,undef,0.55);
  144. $self->doSendEmote($emote_code);
  145. }
  146. }
  147. }
  148.  
  149. sub handleRemovePlayer {
  150. my $self = shift;
  151. shift; # Not sure what that -1 pooo is for...
  152. my $PenguinID = shift;
  153. if (my $u = $self->{penguin}->{$PenguinID}) {
  154. my $who = $u->{name};
  155. $u->{update} = time;
  156. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: RemovePlayer [$who] from internal room [$self->{penguin}->{$self->{PenguinID}}->{internal_room_id}]\n";
  157. if ($target and $who =~ /$target/i) {
  158. $self->{_BuddyFind_PenguinID} = $PenguinID;
  159. $self->doBuddyFind($PenguinID);
  160. }
  161. }
  162. }
  163.  
  164. sub handleBuddyFind {
  165. my $self = shift;
  166. my $my_room_id_internal = shift;
  167. my $their_room_id_external = shift;
  168. my $their_room_id_internal = "";
  169. my $visitee_PenguinID = "";
  170. if ($their_room_id_external) {
  171. if ($their_room_id_external > 1000) {
  172. $visitee_PenguinID = $their_room_id_external - 1000;
  173. } elsif (my $room = $ClubPenguin::internal_room->{$their_room_id_external}) {
  174. $their_room_id_internal = $room;
  175. }
  176. }
  177. if (my $PenguinID = $self->{_BuddyFind_PenguinID}) {
  178. if (my $u = $self->{penguin}->{$PenguinID}) {
  179. my $x = $u->{x} || 0;
  180. my $y = $u->{y} || 0;
  181. if (my $who = $u->{name}) {
  182. if ($visitee_PenguinID) {
  183. if (my $visitee = $self->{penguin}->{$visitee_PenguinID}) {
  184. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in igloo of [$visitee->{name}] (PenguinID #$visitee_PenguinID)\n";
  185. } else {
  186. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in igloo of (PenguinID #$visitee_PenguinID)\n";
  187. $self->doGetPlayer($visitee_PenguinID);
  188. }
  189. } elsif ($their_room_id_external) {
  190. $self->doJoinRoom($their_room_id_external,$x,$y) if $target and $who =~ /$target/i;
  191. if ($their_room_id_internal) {
  192. 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";
  193. } else {
  194. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in external room [$their_room_id_external]\n";
  195. }
  196. } else {
  197. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] not logged in!\n";
  198. $u->{internal_room_id} = $u->{external_room_id} = 0;
  199. }
  200. }
  201. }
  202. } else {
  203. print scalar(localtime).": [$$] [$self->{username}] BuddyFind no doBuddyFind called yet?\n";
  204. }
  205. }
  206.  
  207.  
  208. sub handleSendThrowBall {
  209. my $self = shift;
  210. my $room_id_internal = shift;
  211. my $PenguinID = shift;
  212. my $x = shift;
  213. my $y = shift;
  214. if (my $u = $self->{penguin}->{$PenguinID}) {
  215. my $who = $u->{name};
  216. $u->{update} = time;
  217. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] threw a snowball at ($x, $y)\n";
  218. $u->{x} = $x;
  219. $u->{y} = $y;
  220. if ($target and $who =~ /$target/i) {
  221. select(undef,undef,undef,0.25);
  222. $self->doSendThrowBall($x + int(rand(20)),$y + int(rand(20)));
  223. }
  224. }
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement