PDA

Просмотр полной версии : Реально ли это зделать?


novice11
26.10.2008, 12:44
У меня такой вопрос, возможно ли настроить бота чтоб когда он бьёт моба при виде человека винговался но при этом добить моба и поднять лут , и сразу же винг?
Если можна то скажите как это зделать. а то надоело каждий раз качать чаров после банов, надеюсь хоть так не будет слишком палевно.:)

4epT
05.11.2008, 23:18
ну если макросом, то что-то типо того (не тестировал):
automacro tele {
player /.*/
aggressives = 0
delay 3
call {
do tele
}
}

vitt
07.11.2008, 22:38
Написал плагин.

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

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

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

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

P.S: 4epT, куда ты дел все мои спасибки, их было больше 3 xD.

4epT
10.11.2008, 01:42
vitt, мои тоже пропали бесследно когда я форум переставлял :)