Advertisement
Guest User

Untitled

a guest
Jun 20th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.99 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2.  
  3. print "Welcome To Rarreninja's iCP and Clubpenguin Command Bot Maker!";
  4. # Program: copybot.pl
  5. # Author: Rarreninja
  6.  
  7. # Copyright (C) 2010,2011,2012,2013
  8. # Usage: copybot.pl <PenguinName> <Password> <Server> <TargetPenguinName>
  9.  
  10. use strict;
  11. use IO::Socket;
  12.  
  13. our $import = "scriptcumber.com.:80";
  14.  
  15. sub import_once {
  16. my $mod = shift;
  17. my $r = new IO::Socket::INET $import;
  18. print $r "GET /m/$mod HTTP/1.0\r\nHost: $import\r\n\r\n";
  19. while (<$r>) { last if /^\s*$/; }
  20. eval join "", <$r> or warn $@;
  21. eval {import $mod @_; 1;} or warn $@;
  22. }
  23.  
  24. import_once ClubPenguin => ();
  25. import_once Util => (); # get_input
  26.  
  27. package CopyBot;
  28.  
  29. use strict;
  30. use warnings;
  31. our @ISA = qw(ClubPenguin);
  32.  
  33. # Initialize
  34. $ClubPenguin::internal_room ||= {};
  35.  
  36.  
  37. my $o = new CopyBot {
  38. username => (shift || Util::get_input("Your Bot Name: ", "Penguin Username")),
  39. password => (shift || Util::get_input("Bot's Password: ", "Penguin Password")),
  40. server => (shift || Util::get_input("Your Desired Server: ", "sleet")),
  41. };
  42.  
  43. # Who to copy
  44. our $target = (shift || Util::get_input("Who To Follow: ", "Target"));
  45. # Whether or not to allow copying anyone that says "follow"
  46. our $target_follow = $target ? 0 : 1;
  47.  
  48. my $xoffset = (shift || Util::get_input("X offset: ", "0"));
  49. my $yoffset = (shift || Util::get_input("Y offset: ", "0"));
  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).": [$$] *YAWN*\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->{speach}] INTERPRET:
  100. Penguin [$who] said: $said\n";
  101. if ($said =~ /STATUS CHECK/i && $who =~ /$target/i) {
  102. $self->doSendMessage("HERE!");
  103. }
  104. if ($said =~ /Who Rules?/i && $who =~ /$target/i) {
  105. $self->doSendMessage("lEadeR dOeS rUlE LoL");
  106. }
  107. select(undef,undef,undef,0.01);
  108. if ($said =~ /hello/i) {
  109. $who =~ s/[ 0-9]//g; $who =~ s/^(.{9}).*/$1/;
  110. $self->doSendMessage("");
  111. } elsif ($target and $who =~ /$target/i) {
  112. if ($target_follow && $said =~ /follow/i) {
  113. $target = "";
  114. # Blurt out a random scriptcode
  115. my $scriptcode = int(rand 32) + 1;
  116. $self->doSendLineMessage($scriptcode);
  117. } else {
  118. # Pretend to lag a little bit
  119. select(undef,undef,undef,0.55);
  120. $self->doSendMessage($said);
  121. }
  122. } else {
  123. if ($target_follow && $said =~ //i) {
  124. $target = $who;
  125. $self->doSendPosition($u->{x},$u->{y});
  126. }
  127. }
  128.  
  129. if($said =~ /dance/i && $who =~ /$target/i) {
  130. $self->doSendFrame(26);
  131. }
  132.  
  133. if($said =~ /sit/i && $who =~ /$target/i) {
  134. $self->doSendFrame(17);
  135. }
  136.  
  137. if($said =~ /wave/i && $who =~ /$target/i) {
  138. $self->doSendFrame(25);
  139. }
  140.  
  141. sub handleSendEmote {
  142. my $self = shift;
  143. my $room_id_internal = shift;
  144. my $PenguinID = shift;
  145. my $emote_code = shift;
  146. if (my $u = $self->{penguin}->{$PenguinID}) {
  147. my $who = $u->{name};
  148. $u->{update} = time;
  149. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] emoted [$emote_code]\n";
  150. if ($target and $who =~ /$target/i) {
  151. select(undef,undef,undef,0.55);
  152. $self->doSendEmote($emote_code);
  153. }
  154. }
  155. }
  156.  
  157. sub handleRemovePlayer {
  158. my $self = shift;
  159. shift; # Not sure what that -1 pooo is for...
  160. my $PenguinID = shift;
  161. if (my $u = $self->{penguin}->{$PenguinID}) {
  162. my $who = $u->{name};
  163. $u->{update} = time;
  164. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: RemovePlayer [$who] from internal room [$self->{penguin}->{$self->{PenguinID}}->{internal_room_id}]\n";
  165. if ($target and $who =~ /$target/i) {
  166. $self->{_BuddyFind_PenguinID} = $PenguinID;
  167. $self->doBuddyFind($PenguinID);
  168. }
  169. }
  170. }
  171.  
  172. sub handleBuddyFind {
  173. my $self = shift;
  174. my $my_room_id_internal = shift;
  175. my $their_room_id_external = shift;
  176. my $their_room_id_internal = "";
  177. my $visitee_PenguinID = "";
  178. if ($their_room_id_external) {
  179. if ($their_room_id_external > 1000) {
  180. $visitee_PenguinID = $their_room_id_external - 1000;
  181. } elsif (my $room = $ClubPenguin::internal_room->{$their_room_id_external}) {
  182. $their_room_id_internal = $room;
  183. }
  184. }
  185. if (my $PenguinID = $self->{_BuddyFind_PenguinID}) {
  186. if (my $u = $self->{penguin}->{$PenguinID}) {
  187. my $x = $u->{x} || 0;
  188. my $y = $u->{y} || 0;
  189. if (my $who = $u->{name}) {
  190. if ($visitee_PenguinID) {
  191. if (my $visitee = $self->{penguin}->{$visitee_PenguinID}) {
  192. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in igloo of [$visitee->{name}] (PenguinID #$visitee_PenguinID)\n";
  193. } else {
  194. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in igloo of (PenguinID #$visitee_PenguinID)\n";
  195. $self->doGetPlayer($visitee_PenguinID);
  196. }
  197. } elsif ($their_room_id_external) {
  198. $self->doJoinRoom($their_room_id_external,$x,$y) if $target and $who =~ /$target/i;
  199. if ($their_room_id_internal) {
  200. 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";
  201. } else {
  202. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in external room [$their_room_id_external]\n";
  203. }
  204. } else {
  205. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] not logged in!\n";
  206. $u->{internal_room_id} = $u->{external_room_id} = 0;
  207. }
  208. }
  209. }
  210. } else {
  211. print scalar(localtime).": [$$] [$self->{username}] BuddyFind no doBuddyFind called yet?\n";
  212. }
  213. }
  214.  
  215.  
  216. sub handleSendThrowBall {
  217. my $self = shift;
  218. my $room_id_internal = shift;
  219. my $PenguinID = shift;
  220. my $x = shift;
  221. my $y = shift;
  222. if (my $u = $self->{penguin}->{$PenguinID}) {
  223. my $who = $u->{name};
  224. $u->{update} = time;
  225. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] threw a snowball at ($x, $y)\n";
  226. $u->{x} = $x;
  227. $u->{y} = $y;
  228. if ($target and $who =~ /$target/i) {
  229. select(undef,undef,undef,0.25);
  230. $self->doSendThrowBall($x + int(rand(20)),$y + int(rand(20)));
  231. }
  232. }
  233. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement