Маршрут к точке.

Раздел посвященный скриптам для бота
Ответить
Snchz
Куда я попал
Сообщения: 21
Зарегистрирован: Пн июл 27, 2015 7:50 am

Чт окт 15, 2015 3:55 pm

Народ, подскажите пож - та можно ли сделать так, чтобы бот, появившийся в городе с точки 1 бежал тремя или четыремя разными маршрутами к заданой точке и если можно, то как это сделать, спс.
Алгоритм примерно такой:
Умер, появился в точки один, бегу по заданому маршруту либо 1 либо 2 либо 3... к точке один.
Умер, появился в точки два, бегу по заданому маршруту либо 1 либо 2 либо 3... к точке один.
Kass
Куда я попал
Сообщения: 24
Зарегистрирован: Вт окт 06, 2015 5:46 pm

Чт окт 15, 2015 6:08 pm

Snchz писал(а):Народ, подскажите пож - та можно ли сделать так, чтобы бот, появившийся в городе с точки 1 бежал тремя или четыремя разными маршрутами к заданой точке и если можно, то как это сделать, спс.
Алгоритм примерно такой:
Умер, появился в точки один, бегу по заданому маршруту либо 1 либо 2 либо 3... к точке один.
Умер, появился в точки два, бегу по заданому маршруту либо 1 либо 2 либо 3... к точке один.
посмотрите в сторону темы http://forum.lineage2bot.net/viewtopic.php?f=15&t=74
Snchz
Куда я попал
Сообщения: 21
Зарегистрирован: Пн июл 27, 2015 7:50 am

Пт окт 16, 2015 12:13 am

Нет, вы меня не поняли, на том скрипте, что вы показали, бот появляется в этой точке,

if user.inrange(146272, -58176, -2976, 250, 150) //возле хранилища
then

И движется к ГК по заданой траектории,
begin
Engine.MoveTo(147593, -58103, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк

Я же спрашивал можно с одно и той же точки сделать несколько маршрутов, чтобы они выбирались случайно (random)?

Например:
Появился здесь:

if user.inrange(146272, -58176, -2976, 250, 150) //возле хранилища
then

выбираю: (выбор происходит произвольно)

Либо маршрут 1

Engine.MoveTo(147593, -58103, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк

Либо маршрут 2 (только другие координаты)

Engine.MoveTo(147593, -58103, -3007);
Engine.MoveTo(147727, -57141, -2807);
Engine.MoveTo(147936, -55368, -2760); //возле гк

и.т.д.

Все это хочу сделать для того, чтобы было не так палевно, когда бот умирает встает и бежит постоянно по одному и тому же задоному маршруту.
gizmo
Куда я попал
Сообщения: 55
Зарегистрирован: Ср янв 07, 2015 1:54 pm

Пт окт 16, 2015 2:29 pm

не могу понять в чем проблема? вы не знаете функцию random?
http://www.delphibasics.ru/Random.php

Код: Выделить всё

var 
i: integer;
begin
i:=random (3);
if i=0 then begin бежим по первому маршруту end;
if i=1 then begin бежим по второму маршруту end;
if i=2 then begin бежим по третьему маршруту end;

Snchz
Куда я попал
Сообщения: 21
Зарегистрирован: Пн июл 27, 2015 7:50 am

Сб окт 17, 2015 1:00 pm

Да я вообще языка почти не знаю. В голове представляю как должен выглядеть алгоритм, а технически исполнить не могу, спс.
Аватара пользователя
IvaniuS
Администратор
Сообщения: 1372
Зарегистрирован: Пн янв 12, 2015 10:58 am
Контактная информация:

Вс окт 18, 2015 6:25 pm

первые 10 уроков по елфи достаточно, только пройти их действительно нужно и понять.

Мой Сайт, Тут есть все скрипты: 1-85, Заточка, Аугмент и много чего другого
skype: live:ivanius51
вопросы по СКРИПТАМ, не программированию - БЕСПЛАТНО!

Инкогнито
Сообщения: 4
Зарегистрирован: Пт окт 24, 2014 11:17 pm

Пт ноя 08, 2019 6:16 am

С языками не дружу, сильно не пинайте. Все делаю чисто по кусочкам черпая из скриптов других авторов.
Помогите с кодом. Нужен рандомный выбор процедур. В процедурах прописан путь до спота (Spot_1, Spot_2, Spot_3 и т.д. Итого их 31 у меня.)
Вот например прилетел с города в локацию. И вот тут надо выбрать рандомный путь (рандомную процедуру).

Код: Выделить всё

if User.InRange(-21666, 77376, -5168, 150, 150) then begin
  Print('Выбираем рандомный спот');
  ...
  ...
  ...

  Print('Выбиран спот №5');
  Delay(1000);
  end;
Аватара пользователя
FJIAHKEP
Флудер
Сообщения: 109
Зарегистрирован: Пт ноя 20, 2015 5:43 am
Контактная информация:

Пт ноя 08, 2019 9:40 am

Инкогнито писал(а):
Пт ноя 08, 2019 6:16 am
С языками не дружу, сильно не пинайте. Все делаю чисто по кусочкам черпая из скриптов других авторов.
Помогите с кодом. Нужен рандомный выбор процедур. В процедурах прописан путь до спота (Spot_1, Spot_2, Spot_3 и т.д. Итого их 31 у меня.)
Вот например прилетел с города в локацию. И вот тут надо выбрать рандомный путь (рандомную процедуру).

Код: Выделить всё

if User.InRange(-21666, 77376, -5168, 150, 150) then begin
  Print('Выбираем рандомный спот');
  ...
  ...
  ...

  Print('Выбиран спот №5');
  Delay(1000);
  end;


Да легко.

Код: Выделить всё

var
  RandomNum: Cardinal;
begin
  if User.InRange(146272, -58176, -2976, 250, 150)  then begin
    RandomNum:= Random(3)+1;
    case RandomNum of
      1: begin // маршрут 1
        print('Иду по маршруту 1');
        Engine.MoveTo(147593, -58103, -3007);
        Engine.MoveTo(147727, -57141, -2807);
        Engine.MoveTo(147936, -55368, -2760); //возле гк
      end;
      2: begin // маршрут 2
      	print('Иду по маршруту 2');
        Engine.MoveTo(147593, -58103, -3007);
        Engine.MoveTo(147727, -57141, -2807);
        Engine.MoveTo(147936, -55368, -2760); //возле гк
      end;
      3: begin // маршрут 3
      	print('Иду по маршруту 3');
        Engine.MoveTo(147593, -58103, -3007);
        Engine.MoveTo(147727, -57141, -2807);
        Engine.MoveTo(147936, -55368, -2760); //возле гк
      end;
    end;
  end;
end.
Инкогнито
Сообщения: 4
Зарегистрирован: Пт окт 24, 2014 11:17 pm

Пт ноя 08, 2019 3:32 pm

FJIAHKEP писал(а):
Пт ноя 08, 2019 9:40 am
Инкогнито писал(а):
Пт ноя 08, 2019 6:16 am
С языками не дружу, сильно не пинайте. Все делаю чисто по кусочкам черпая из скриптов других авторов.
Помогите с кодом. Нужен рандомный выбор процедур. В процедурах прописан путь до спота (Spot_1, Spot_2, Spot_3 и т.д. Итого их 31 у меня.)
Вот например прилетел с города в локацию. И вот тут надо выбрать рандомный путь (рандомную процедуру).

Код: Выделить всё

if User.InRange(-21666, 77376, -5168, 150, 150) then begin
  Print('Выбираем рандомный спот');
  ...
  ...
  ...

  Print('Выбиран спот №5');
  Delay(1000);
  end;


Да легко.

Код: Выделить всё

var
  RandomNum: Cardinal;
begin
  if User.InRange(146272, -58176, -2976, 250, 150)  then begin
    RandomNum:= Random(3)+1;
    case RandomNum of
      1: begin // маршрут 1
        print('Иду по маршруту 1');
        Engine.MoveTo(147593, -58103, -3007);
        Engine.MoveTo(147727, -57141, -2807);
        Engine.MoveTo(147936, -55368, -2760); //возле гк
      end;
      2: begin // маршрут 2
      	print('Иду по маршруту 2');
        Engine.MoveTo(147593, -58103, -3007);
        Engine.MoveTo(147727, -57141, -2807);
        Engine.MoveTo(147936, -55368, -2760); //возле гк
      end;
      3: begin // маршрут 3
      	print('Иду по маршруту 3');
        Engine.MoveTo(147593, -58103, -3007);
        Engine.MoveTo(147727, -57141, -2807);
        Engine.MoveTo(147936, -55368, -2760); //возле гк
      end;
    end;
  end;
end.
Спасибо. Ночью попробую
Инкогнито
Сообщения: 4
Зарегистрирован: Пт окт 24, 2014 11:17 pm

Пт ноя 08, 2019 10:19 pm

FJIAHKEP, спасибо большое. Работает
Ответить