Нужно ли новое знавение teleportAuto_allPlayers??

Разработка новых функций.

Модератор: 4epT

Аватара пользователя
4epT
macro-маньячина
Сообщения: 2793
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Нужно ли новое знавение teleportAuto_allPlayers??

Сообщение 4epT »

некий novice11 пишет:
У меня такой вопрос, возможно ли настроить бота чтоб когда он бьёт моба при виде человека винговался но при этом добить моба и поднять лут , и сразу же винг?
нужно ли новое значение teleportAuto_allPlayers:
если рядом есть человек, то добить агрессоров (или текущего моба) и только тогда свалить

Добавлено спустя 5 минут 52 секунды:

ну если макросом, то что-то типо того (не тестировал):
automacro tele {
player /.*/
aggressives = 0
delay 3
call {
do tele
}
}
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

Не нужно. По-хорошему надо написать плагин.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2793
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Сообщение 4epT »

да можно же пару строчек в куру прописать...
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Я не понимаю афтара.
Вот ситуация:
Мы пилим моба, подходит ГМ без хайда итп... смотрит на всю картину, и потом бац, без розбора в тюражку или бан, или ещё лучше, начинает моба водить.

В общем, запрос афтара лищён смысла.
Если кто такое сильно хочет, пусть меня убедит в надобности такой фичи.
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

Написал плагин.

Идея:
Имитация игрока, желающего выжать максимум опыта за время игры. Ни о какой защите от игрока телепортом, пока он нас не увидел, речи не идёт.

Как работает:
- Если бот атакует моба, и в зоне видимости появляется игрок, то бот добивает моба, топает к луту, подбирает его и телепортируемся.
- Если бот идёт к луту, и в зоне видимости появляется игрок, то мы подходим к луту, подбираем его и телепортируемся.
- Если бот просто ходит(или идёт к мобу чтобы его атаковать) и кто-то появляется в зоне видимости, мы телепортируемся.

Применение:
На хай рейт серверах часто если в зоне видимости появляется кто-то, то мы телепортируемся, чтобы найти место где больше мобов(так мы стараемся побыстрей прокачаться). Бот будет имитировать такого игрока.

plugins\TeleportAutoUnsafe.pl:

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

# Unsafe teleportAuto_allPlayers
# © _vit
# 7.11.2008
# Version 0.01

package TeleportAutoUnsafe;

use strict;
use Plugins;
use Utils;
use Globals;
use Log qw(message);
use Time::HiRes qw(usleep);

Plugins::register('TeleportAutoUnsafe', 'Unsafe teleportAuto_allPlayers', \&unload);
my $hook = Plugins::addHook('AI_pre', \&teleport);

sub unload {
        Plugins::delHook('AI_pre', $hook);
}

sub teleport {
    my $map_name_lu = $field{name}.'.rsw';

    if (!$cities_lut{$map_name_lu} && !AI::inQueue("storageAuto", "buyAuto", "items_take") && !AI::is("attack") && $config{teleportAuto_allPlayers_unsafe}
        && ($config{'lockMap'} eq "" || $field{name} eq $config{'lockMap'})
     && Utils::DataStructures::binSize(\@playersID) && timeOut($AI::Temp::Teleport_allPlayers, 0.75)) {

        my $ok;
        if ($config{teleportAuto_allPlayers_unsafe} >= 2) {
            if (!isSafe()) {
                $ok = 1;
            }
        } else {
            foreach my Actor::Player $player (@{$playersList->getItems()}) {
                if (!existsInList($config{teleportAuto_notPlayers}, $player->{name}) && !existsInList($config{teleportAuto_notPlayers}, $player->{nameID})) {
                    $ok = 1;
                    last;
                }
            }
        }

        if ($ok) {
            message ("Teleporting to avoid all players\n");
            usleep(500000);
            Misc::useTeleport(1);
            $ai_v{temp}{clear_aiQueue} = 1;
            $AI::Temp::Teleport_allPlayers = time;
        }

    }
}

return 1;
В конфиге:

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

teleportAuto_allPlayers 0
teleportAuto_allPlayers_unsafe 1
И на всякий случай:

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

itemsGatherAuto 0
spectre
Начинающий
Сообщения: 33
Зарегистрирован: Чт авг 07, 2008 3:42 pm

Сообщение spectre »

вообще то всё это можно сделать конфигом онли:

attackAuto_onlyWhenSafe 1
teleportAuto {... idle 1 ...}


То есть, мы бьём мобов, пока нет людей. Если люди появляются - мы добиваем кого уже начали бить и собираем лут (нам запрещено только начинать бить новых). Но новых не начинаем - потому что люди рядом. Потом срабатывает telepor idle и нас уносит. Сам так качался, довольно хорошо работает.

Единственное палево - ты стоишь в толпе мобов, а на краю экрана появился человек, и ты улетаешь. А живой бы человек сначала добил всех кто рядом.
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

Ну что, сравнил я оба варианта. Есть некие отличия(кстати к твоему варианту еще неплохо в таймаутах поставить ai_teleport_idle 1 вместо 4):
Вариант с конфигом работает только если у нас в настройках стоит
route_randomWalk 0
Ну и телепорт также срабатывает когда на экране нету мобов(с одной стороны если у нас винги, то получаем их перерасход, с другой строны качаемся быстрее).
В случае с плагином всё работает и с включенным рандомволком.

Ну и второе отличие состоит в том, что если мы наметили моба и топаем к нему чтобы мочить его, то при варианте с конфигом мы дойдем до него и замочим и соберем лут, а при варианте с плагином сработает телепорт. Тем самым у ГМа без хайда не получится поводить моба(против чего предостерегал kLabMouse). Но часто ли ГМ без хайда водит моба?).

Вывод: Вариант с конфигом вполне юзабелен, но если его использовать вместе с плагином(или только плагин), то будет еще чуток лучше :D .
spectre
Начинающий
Сообщения: 33
Зарегистрирован: Чт авг 07, 2008 3:42 pm

Сообщение spectre »

Да, у меня стоял route_randomWalk 0, кач был на телепортах, а телепорт был на кримми (уж её то ботом не выбить - грех).
Ответить