$world->SetVariable("reconnect", 0); my $logdir = 'd:/logs/mushclient/'; my $worlddir = 'c:/progra~1/mushclient/worlds/'; my $mychar = ''; my $auction = 0; $mychar = $1 if $world->WorldName() =~ /Realms of Despair - (\w+)/; my $mychar2 = lc($mychar); &time; sub auction { my ($name) = @_; if ($name eq 'a_timer') { $world->EnableTimer('a_timer', 0); $world->ResetTimer('a_timer'); $world->setstatus('Ready'); } else { my $a = $world->GetTriggerInfo($name,101); my $b = $world->GetTriggerInfo($name,102); my $c = $world->GetTriggerInfo($name,103); if ($name eq 'a_new') { $b =~ s/,//g; $b =~ s/for //; $world->setstatus('Auction: (0) '.$b.' for '.$a); $auction = $b; $world->EnableTimer('a_timer', 0); $world->ResetTimer('a_timer'); } elsif ($name eq 'a_bid') { $a =~ s/,//g; $a =~ s/for //; $world->setstatus('Auction: (0) '.$a.' for '.$b); $auction = $a; } elsif ($name eq 'a_once') { if ($b eq '(bid not received yet)') { $world->setstatus('Auction: (1) '.$auction.' for '.$a); } else { $b =~ s/,//g; $b =~ s/for //; $world->setstatus('Auction: (1) '.$b.' for '.$a); } } elsif ($name eq 'a_twice') { if ($b eq '(bid not received yet)') { $world->setstatus('Auction: (2) '.$auction.' for '.$a); } else { $b =~ s/,//g; $b =~ s/for //; $world->setstatus('Auction: (2) '.$b.' for '.$a); } } elsif ($name eq 'a_sale') { $c =~ s/,//g; $c =~ s/for //; $world->setstatus('Auction: (S) '.$c.' for '.$a.' to '.$b); $auction=0; #$world->EnableTimer('a_timer', 1); } elsif ($name eq 'a_nosale') { $world->setstatus('Auction: (X) '.$auction.' for '.$a); $auction=0; #$world->EnableTimer('a_timer', 1); } else { } } } sub exit { $world->SetVariable('saves',0); $world->SetVariable('reconnect',0); $world->EnableTimer('reconnect',0); $world->queue('save',0); $world->queue('quit',0); $world->save(''); } sub idle { my $saves = $world->GetVariable('saves'); if ($saves < 20) { $world->queue('save',0); $saves++; $world->SetVariable('saves',$saves); } else { $world->queue('look',0); $world->queue('save',0); $world->SetVariable('saves',1); } } sub infobar { # My RoD Prompt: !!prompt!! %h:%H:%m:%M:%v:%V:%g:%w:%a:%u:%A:%f !!prompt!!&w%l # What it looks like: !!prompt!! 1356:1356:877:877:640:640:1,773,029:818:971:H:Y:297 !!prompt!! # Regex for trigger: ^!!prompt!! (\d+:\d+:\d+:\d+:\d+:\d+:.+?:\d+:\d+:\d+:.*?:.*?) !!prompt!!$ my ($name) = @_; @prompt = split(/:/, $world->GetTriggerInfo($name,101)); $world->InfoClear(); $world->InfoBackground('#000000'); $world->InfoFont('Courier New', 14, 1); $world->InfoColour('#FFFFFF');$world->Info('Harthan: '); $world->InfoColour('#00FF00');$world->Info($prompt[0].'/'.$prompt[1].'hp '); $world->InfoColour('#FF0000');$world->Info($prompt[2].'/'.$prompt[3].'mp '); $world->InfoColour('#00FFFF');$world->Info($prompt[4].'/'.$prompt[5].'mv '); $world->InfoColour('#FFFF00');$world->Info($prompt[6].'gp '); $world->InfoColour('#1E90FF');$world->Info($prompt[7].'wgt '); $world->InfoColour('#FFFAFA');$world->Info($prompt[8].'a '); $world->InfoColour('#00FA9A');$world->Info($prompt[9].'u '); $world->InfoColour('#FF1493');$world->Info($prompt[10].' '); $world->InfoColour('#00FFFF');$world->Info($prompt[11].' '); } sub logchan { my ($name) = @_; my $char = $world->GetTriggerInfo($name,101); my $text = $world->GetTriggerInfo($name,102); my $logfile = ''; if ($name eq 'tells1') { $char = $char.' -> '.$mychar; $logfile = $mychar2.'_tells.log'; } if ($name eq 'tells2') { $char = $mychar.' -> '.$char; $logfile = $mychar2.'_tells.log'; } if ($name =~ /race/) { $char = $mychar if $char eq "You"; $logfile = $mychar2.'_race.log'; } if ($name =~ /guild/) { $char = $mychar if $char eq "You"; $logfile = $mychar2.'_guild.log'; } if ($name =~ /quest/) { $char = $mychar if $char eq "You"; $logfile = $mychar2.'_quest.log'; } if ($name =~ /says/) { $char = $mychar if $char eq "You"; $logfile = $mychar2.'_says.log'; } if ($name =~ /avchat/) { $logfile = $mychar2.'_avchat.log'; } &time; my $error = 0; $world->closelog() if $world->islogopen() == 0; $error = $world->openlog($logdir.$logfile,true); if ($error == 0) { $world->writelog('['.$year.$mon.$day.$hrs.$min.$sec.'] <'.$char.'> '.$text); $world->closelog(); if ($name eq 'tells1') { my $tells = $world->GetVariable('tells'); $tells++; $world->SetVariable('tells',$tells); } } else { $world->tell('Error opening logfile '.$logdir.$logfile."\n"); } } sub login { $world->EnableTimer('reconnect', true); $world->queue($mychar,0); if ($mychar eq 'yourchar') { $world->queue('yourpass',0); } else { $world->queue('commonpass',0); } if ($world->GetVariable('reconnect') != 1) { $world->queue('\n',0); $world->queue('\n',0); $world->SetVariable('reconnect',0); } } sub OnRepeat { my ($name) = @_; my $count = $world->GetAliasInfo($name, 101); my $command = $world->GetAliasInfo($name, 102); my $i=1; for ($i=1;$i<=$count;$i++) { $world->queue($command,0); } } sub reconnect { if (($world->getinfo(106)) && !($world->getinfo(107))) { $world->tell('Reconnecting...'."\n"); $world->SetVariable('reconnect',0); $world->connect(); } } sub sendAll { my ($name) = @_; my $command = $world->GetAliasInfo($name, 101); foreach $world (Win32::OLE::in($world->GetWorldList)) { my $myworld; $myworld = $world->getworld($world); if (!defined($myworld)) { $world->note('World '.$world.' is not open.'); return; } else { $myworld->send($command); } } } sub sw { my ($name) = @_; my $dirs = $world->GetAliasInfo ($name, 101); if ($dirs eq 'troll') { $dirs = '8e2(se)s4(se)2s(sw)3seu(se)ded(se)d(nw)wdwdwn(nw)(ne)2n3(ne)(nw)(ne)'; $dirs = $dirs.'(nw)(ne)(nw)(ne)(nw)(ne)(nw)2(nw)2w(sw)3s(sw)2s(sw)2s(sw)s(se)'; } if ($dirs eq 'bl') { $dirs = '6s(ne)2s(se)2es2(sw)s2eu3e(sw)s2(se)3e2sw(nw)3w(sw)s2(sw)w2(sw)(nw)2d(sw)dn(ne)8e'; } if ($dirs eq 'sq') { $dirs = '2d(nw)w(sw)w2(sw)'; } if ($dirs eq 'mith') { $dirs = '13s2e2uw(sw)w(sw)(se)(sw)uw(sw)2w(sw)3s2(se)(sw)2uw(nw)4wnONne2nwd2en'; } if ($dirs eq 'fur') { $dirs = '6n3(nw)2n2(nw)n(ne)n(ne)2n2(ne)2n(ne)n2(nw)3n(ne)n'; } if ($dirs eq 'dt') { $dirs = '6s(ne)2s(se)2es2(sw)s10(sw)wus2e2(se)2s(sw)2(nw)3w(sw)w(sw)(se)(sw)'; } if ($dirs eq 'ht') { $dirs = '13e(ne)(nw)w(ne)e(ne)2es2es(se)es'; } $world->queue($world->EvaluateSpeedwalk($dirs), 0); } sub swc { my ($name) = @_; my $dirs = $world->GetAliasInfo($name, 101); my @dirs = split(/, /,$dirs); my $dir = ''; $dirs = ''; foreach $dir (@dirs) { chomp; $dir =~ s/^\s+//g; $dir =~ s/\s+$//g; if ($dir =~ /^(\d+)(\w+)$/) { my $numdirs = $1; my $whatdir = $2; for ($x=0;$x<$numdirs;$x++) { $dirs = $dirs.$whatdir.';'; } } elsif ($dir =~ /^(.+)$/) { my $whatdir = $1; $dirs = $dirs.$whatdir.';'; } else { $world->note('Unknown direction instruction: '.$dir);exit; } } chop $dirs; $world->tell($dirs); } sub tells { if ($world->GetVariable('tells') > 0) { $world->closelog(); $world->SetVariable('tells',0) if $world->open($logdir.$mychar2.'_tells.log'); } else { $world->note('No new tells have been logged.'."\n"); } } sub time { ($sec,$min,$hrs,$day,$mon,$year) = localtime(time); $year += 1900;$mon += 1; $mon = '0'.$mon if length($mon) < 2; $day = '0'.$day if length($day) < 2; $hrs = '0'.$hrs if length($hrs) < 2; $min = '0'.$min if length($min) < 2; $sec = '0'.$sec if length($sec) < 2; } sub trackgo { my ($name) = @_; if ($name eq 'trg_alias') { $world->enabletrigger('trg_trigger',1); $world->queue('track '.$world->trim($world->GetAliasInfo($name, 101)),0); } elsif ($name eq 'trg_trigger') { $world->queue($world->trim($world->GetTriggerInfo($name, 101)),0); $world->enabletrigger('trg_trigger',0); } else { } } sub tstamp { &time; $world->tell('['.$year.'.'.$mon.'.'.$day.'.'.$hrs.'.'.$min.']'."\n"); } $world->note('Script file loaded successfully.');