Page 1 of 1

простая ходилка на пинжекте

Posted: 2008-03-07 01:53:47
by korzh
Ссегодня решился таки попробовать пересесть на пинжект :)
Решил я значит написать простенькую ходилку и не получилось.. криво ходит :roll:
Так как с перлом я знаком первый день, может чтото сделал не так?

Code: Select all

sub use
{
  walk (2149,787);
}

sub walk($$)
{
  my($x1, $y1);
  $x1 = $_[1];
  $y2 = $_[2];
  while( (uo::getx()!=$x1) && (uo::gety()!=$y1) )
  {
    $x=uo::getx();
    $y=uo::gety();
    if ($x == $x1 && $y > $y1)
    {
      uo::press(35);
    }   
    if ($x == $x1 && $y < $y1)
    {
      uo::press(33);
    }
    if ($x < $x1 && $y == $y1)
    {
      uo::press(36);
    }
    if ($x < $x1 && $y > $y1)
    {
      uo::press(37);
    }
    if ($x < $x1 && $y < $y1)
    {
      uo::press(38);
    }
    if ($x > $x1 && $y == $y1)
    {
      uo::press(34); 
    }
    if ($x > $x1 && $y > $y1)
    {
      uo::press(40);
    }
    if ($x > $x1 && $y < $y1)
    {
      uo::press(39);
    }
      &wait(50);
  }
}

Posted: 2008-03-07 11:34:59
by Grin
а в чем кривость хождения?

Posted: 2008-03-07 11:46:11
by korzh
ввожу например координаты на 5 тайлов от себя, а идет вообще очень очень очень далеко хз куда, и даже если чудом пройдет по нужной координате все равно идет дальше дальше...

Posted: 2008-03-07 11:51:53
by Grin
ну значит ты не правельно клавиши раставил:)
да и самый простой способ дебага это принтить твое условие...

Posted: 2008-03-07 12:01:03
by korzh
поидее понял, проблема в куске

Code: Select all

  my($x1, $y1); 
  $x1 = $_[1];
  $y2 = $_[2];

так он не видет координаты х

Code: Select all

 my($x1, $y1); 
  $x1 = $_[0];
  $y2 = $_[1];

а так не виде у.
чего делать?

Posted: 2008-03-07 12:29:38
by Grin

Code: Select all

sub use 
{
  walk (2149,787);
}

sub walk($$)
{
  my($x1, $y1);
  $x1 = $_[1];
  $y1 = $_[2]; //!!!!
  while( (uo::getx()!=$x1) && (uo::gety()!=$y1) )
  {
    $x=uo::getx();
    $y=uo::gety();
    if ($x == $x1 && $y > $y1)
    {
      uo::press(35);
    }   
    if ($x == $x1 && $y < $y1)
    {
      uo::press(33);
    }
    if ($x < $x1 && $y == $y1)
    {
      uo::press(36);
    }
    if ($x < $x1 && $y > $y1)
    {
      uo::press(37);
    }
    if ($x < $x1 && $y < $y1)
    {
      uo::press(38);
    }
    if ($x > $x1 && $y == $y1)
    {
      uo::press(34); 
    }
    if ($x > $x1 && $y > $y1)
    {
      uo::press(40);
    }
    if ($x > $x1 && $y < $y1)
    {
      uo::press(39);
    }
      &wait(50);
  }
}

Никому больше таких ошибок не делать!

+ еще куча ошибок...

Posted: 2008-03-07 18:11:43
by korzh
Да совместными усилиями сделали :D
спасибо Грину ;)