Страница 1 из 2

Как ботом попросить приста-бота сделать скил

Добавлено: Чт ноя 23, 2006 11:34 pm
Grodeco
Не понимаю почему, но прист иногда тупит не не лечит

partySkill Heal {
lvl 10
notInTown 1
target_hp < 80%
}

Идет массированная атака, а прист как бы зазевался на неск. секунд.
Это не постоянно, поэтому предполагаю, что до приста не доходит вовремя инфа от сервера.
В связи с этим как попросить приста скастовать Heal или другие касты желательно по номеру скила.
Надо кастовать скил, когда у бота не приста мало СП и вокруг не более 1 агрессора.
Догадывають, что через приват чат... но как хз:)

ПАСИБА!

Добавлено: Пт ноя 24, 2006 12:31 am
мираж
А ты уверен что присту не мешают кастовать атакующие его самого мобы?

Добавлено: Пт ноя 24, 2006 12:32 am
piroJOKE
(Может прист начинает атаковать мобов, а не лечит?)

Добавлено: Пт ноя 24, 2006 12:45 am
Grodeco
1. Клипа с феном.
2. Атака кого либо отключина.

Есть 3 возможности "тормозить"
1. Задержка после каста
2. Недоступность (стоит за преградой или мобы не дают подойти)
3. Лаг сервера? (до приста не дошло состояние ХП цели)

В любом случае есть необходимость кастовать скил "I'll sacrifice myself for you" при СП менее определенного значения у бота-не-приста.

Добавлено: Пт ноя 24, 2006 3:57 am
kLabMouse
Grodeco
Ну. Ет просто. Лезем в ChatQueue.pm и добавляем команды нашему бравому присту.

Добавлено: Пт ноя 24, 2006 10:03 am
piroJOKE
ЭЭэээ, да вы чего, есть куча макро на эту тему! Но у мну пад руками их ща нет.

Добавлено: Пт ноя 24, 2006 1:33 pm
kLabMouse
piroJOKE

Выставь. Пусть нубы учатся... А мне всегда легче чё-нить дописать на перле.

Добавлено: Пт ноя 24, 2006 4:03 pm
Grodeco
Хотяб пример, плиз.

Добавлено: Пт ноя 24, 2006 4:07 pm
piroJOKE
Это черт знает когда было. Я давно их не использовал... Хм... Поищу, но не прямо щас.

Добавлено: Пт ноя 24, 2006 4:08 pm
kLabMouse
Вот стандартный... Аги

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

	# Support Skills

	} elsif ($switch eq "agi"){
		my $targetID = getIDFromChat(\%players, $user, $after);
		if ($targetID eq "") {
			sendMessage($net, $type, getResponse("healF1"), $user) if $config{verbose};

		} elsif ($char->{skills}{AL_INCAGI}{lv} > 0) {
			my $failed = 1;
			for (my $i = $char->{skills}{AL_INCAGI}{lv}; $i >=1; $i--) {
				if ($char->{sp} >= $skillsSP_lut{AL_INCAGI}{$i}) {
					main::ai_skillUse('AL_INCAGI', $i, 0, 0, $targetID);
					$failed = 0;
					last;
				}
			}
			if (!$failed) {
				sendMessage($net, $type, getResponse("healS"), $user) if $config{verbose};
			}else{
				sendMessage($net, $type, getResponse("healF2"), $user) if $config{verbose};
			}

		} else {
			sendMessage($net, $type, getResponse("healF3"), $user) if $config{'verbose'};
		}
		$timeout{ai_thanks_set}{time} = time;
А просиш дукомандом.
типа так.
doCommand pm Prist agi {
WhenStatusInactive Incerase Agility
timeout 5
}

Ну... ето для примера.

Добавлено: Пт ноя 24, 2006 4:16 pm
piroJOKE
ЭЭэ, погоди, а какие настройки у приста под это? Или... ничего даже включать не надо? ;)

Добавлено: Пт ноя 24, 2006 4:56 pm
kLabMouse
piroJOKE
Не нуно. Есть скилл.. кастует максимальній. Нету даёт что нету.

Вот

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

elsif ($char->{skills}{AL_INCAGI}{lv} > 0) {
Если скилл Аги есть.

Все другие скилы моно делать по аналогии. только менять ключи и Идентификаторы скилов.

Добавлено: Пт ноя 24, 2006 4:59 pm
piroJOKE
(Имхо не очень хорошее решение. Попросит злодей аги, и получит его мгновенно. --> Паливо.)

Добавлено: Пт ноя 24, 2006 5:01 pm
kLabMouse
Ты забыл что оно пашет только когда тот кто просит прописан в overallAuth.txt с 1.
Те. Ето удалённая команда боту. Посмотри ChatQueue.pm оно там.

Добавлено: Пт ноя 24, 2006 5:03 pm
piroJOKE
>__<

А, вот каг.... Хм... Не, все равно без практики - не совсем врубаюсь, что как. Посмотрю как это пашет, позже.

ЗЫ: В любом случае мне это не очень нравится. Помнишь древний разговор про общение ботов через IRC? Сие было бы куда прогрессивней.