id монстра в макросах / недокументированная игра с блоками

Всё, что касается макро-плагина.

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

Правила форума
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

piroJOKE
ЫЫ.. да лано. Дай примерчик как одной строчкой зделать чтоб если сп > 20% и меньше 50%. для последуйщих реализаций.
Я когда-то видел как оно делается.. но уже дафно потерял и не пользовался особо.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8204
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

RTFM! %)
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
zatata
Новичок
Сообщения: 12
Зарегистрирован: Пн апр 02, 2007 10:02 pm

Сообщение zatata »

помагите пожалуста вот часть конфига хачю чтоб с гео поглошяло сп также подскажите или напишите что надо иправить плиззз помагите.



attackSkillSlot Vigor Absorption {
lvl 1
dist 10
whenStatusActive Blessing
aggressives < 2
inLockOnly 1
notWhileSitting 1
notInTown 1
monsters Geographer
timeout 0
disabled 1
}

а куда вставлять вот эту чясть?

doCommand conf attackSkillSlot_0_disabled 1 {
sp > 90%
timeout 10
}
doCommand conf attackSkillSlot_0_disabled 1 {
sp < 20%
timeout 10
}

срузу после аатак сикил?? пожалуста напишити блин( монк сп несасет а пишеца attackSkillSlot_0_disabled 1 и он сидит
регенит сп( а не сасет с гео((

есче скажите как сделать что написать в конфиге и где=) чтоб он небил географера даже если геограефер его ударил! вот. он их небет но когда гео монка удоряяет он бёт гео
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

zatata
Так будет лучше:
attackSkillSlot Vigor Absorption {
label absorb
lvl 1
dist 10
whenStatusActive Blessing
aggressives < 2
inLockOnly 1
notWhileSitting 1
notInTown 1
monsters Geographer
timeout 0
disabled 1
}

doCommand conf absorb.disabled 1 {
sp > 90%
timeout 10
}
doCommand conf absorb.disabled 0 {
sp < 20%
timeout 10
}
zatata
Новичок
Сообщения: 12
Зарегистрирован: Пн апр 02, 2007 10:02 pm

Сообщение zatata »

блн непонимаю воставил в конфиг вот так



attackSkillSlot Vigor Absorption {
label absorb
lvl 1
dist 10
whenStatusActive Blessing
aggressives < 2
inLockOnly 1
notWhileSitting 1
notInTown 1
monsters Geographer
timeout 0
disabled 1
}

doCommand conf absorb.disabled 1 {
sp > 90%
timeout 10
}
doCommand conf absorb.disabled 1 {
sp < 20%
timeout 10
}

но неработает скажите что такое?( он сидит все равно когда сп нет(
когда запусскаеш пишет так
Config variable Vigor doesn't exist
когда сп нет пишет вот так
Config 'attackSkillSlot_1_disabled' set to 1 (was 1)
вот так я сам когда поглошяю иногда удачно иногда нет.... вот лог
Skill Vigor Absorption failed (Requirement)
You are casting Vigor Absorption on monster Geographer (0) (time 774ms)
You use Vigor Absorption on Monster Geographer (0) : Lv 1
You are casting Vigor Absorption on monster Geographer (0) (time 774ms)
Skill Vigor Absorption failed (Requirement)
You are casting Vigor Absorption on monster Geographer (0) (time 774ms)
You use Vigor Absorption on Monster Geographer (0) : Lv 1
You are casting Vigor Absorption on monster Geographer (0) (time 774ms)
Skill Vigor Absorption failed (Requirement)
You are casting Vigor Condensation on yourself (time 387ms)
Последний раз редактировалось zatata Вс май 20, 2007 1:26 pm, всего редактировалось 1 раз.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2795
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494

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

тут ошибка, нада 0 поставить
doCommand conf absorb.disabled 0 {
sp < 20%
timeout 10
}
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
zatata
Новичок
Сообщения: 12
Зарегистрирован: Пн апр 02, 2007 10:02 pm

Сообщение zatata »

БЛИН ПОСТАВИЛ В КОНФИГ вот так все

НО ВСЕРАВНО НЕПАШЕТ бот пишет

You are sitting.
Config 'attackSkillSlot_1_disabled' set to 0 (was 0)
You are no longer: Increase AGI
Config 'attackSkillSlot_1_disabled' set to 0 (was 0)
Config 'attackSkillSlot_1_disabled' set to 0 (was 0)


когда я в ручную поглошяю в боте пишет так

You are casting Vigor Absorption on monster Geographer (0) (time 640ms)
You use Vigor Absorption on Monster Geographer (0) : Lv 1
1 неудачное поглошени 2 сп поглотилось.... мож это помоге чем!,.

вот так в конфиге
помагите мне пожалуста

attackSkillSlot Vigor Absorption {
label absorb
lvl 1
dist 10
whenStatusActive Blessing
aggressives < 2
inLockOnly 1
notWhileSitting 1
notInTown 1
monsters Geographer
timeout 0
disabled 1
}

doCommand conf absorb.disabled 1 {
sp > 90%
timeout 10
}
doCommand conf absorb.disabled 0 {
sp < 20%
timeout 10
}
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

ХМ...
dist 10
whenStatusActive Blessing

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

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

задача стандартная:

ходим бьём слиперов инвестом, больше никого не трогаем.
а СП качаем проходя мимо географоф

ну естественно ставим "Geographer -1"
если пишем (грубо говоря):

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

monsterSkill Vigor Absorption {
	target Geographer
	lvl 1
	sp < 90%
}
но бот сосёт с гео сп только если гео начнёт атаковать монка, а это происходит если мы проходим прямо мимо гео. Это не есть хорошо, т.к. сосать нужно с дистанции. Рун фром таргет не покатит, т.к. к слиперам нам нужно подходить в плотную.
Роясь в КОРЕ я нашёл "monsterSkill can be used on any monster that we could attackAuto" т.е. этот способ отпадает (мы же не хотим атаковать гео)

подобная лажа у нас получается и с attackSkillSlot

Я подумал сделать макросиком. Пришлось придумать новую команду макроса:
@monster (<имя моба>)
Показывает ID <имя моба>, или "-1" если такой моб не найден.
вот сам макрос:

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

utomacro absorption {
notMonster Sleeper
monster Geographer
sp < 80%
run-once 1
call {
	while (@eval($::char->{sp}) < @eval($::char->{sp_max}*0.90)) as absorp
	do sm 262 @monster ($.lastMonster)
	end absorp
	release absorption
}
}
это типо если у нас на экране есть тока гео, то мы их сосём.

Проблема возникла в том, что нам нужно же правельно подойти к мобу. Кто знает как это сделать средствами коры? Подозреваю что тут нужно придумать чудо eval. %)
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8204
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

А ты сначала расейским езыком опиши, как по-твоему это "правильно" звучит. Т.е., алгоритм - на словах.

ЗЫ: Подозреваю, что вариант "правильного" подхода можно выдрать из процедуры подхода к кафре/магазину.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2795
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494

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

я хер его знает как это должно быть.. ну я так думаю ходим мы мочим слиперов, мимо гео пробегаем даже если они нас мочат. Как только у нас СП становится меньше порогового значения у нас срабатывает макрос (а он срабатывает отлично и даже понимает на кого кастить скил) дальше мы должны подойти к мобу (если это требуется) и отсосать у него (я имею в виду сп :roll: ) ну и когда СП будет достаточно, то оставить его в покое и идти дальше слиперов шугать

кароче пока писал.. у меня возникла идейка м кажется она работает, щас выложу ;)

Добавлено спустя 1 минуту 18 секунд:

кстате неплохо бы перенести эту темку к макросам :twisted: (pJ: сделано)

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

Учим макрос понимать "спецальное ключевое слово" @monster:
файл plugins\Macro\Automacro.pm
незнаю зачем, но тут (20 строчка) добавляем getMonsterID, я добавлял по аналогии с "getPlayerID":

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

use Macro::Utilities qw(between cmpr match getArgs refreshGlobal
	getPlayerID getMonsterID getSoldOut getInventoryAmount getCartAmount
	getShopAmount getStorageAmount callMacro);
файл plugins\Macro\Data.pm:

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

	"player"       . "|" .
+	"monster"      . "|" .
	"vender"       . "|" .
файл plugins\Macro\Parser.pm:

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

use Macro::Utilities qw(refreshGlobal getnpcID getItemIDs getStorageIDs getInventoryIDs
+	getPlayerID getMonsterID getVenderID getRandom getRandomRange getInventoryAmount
	getCartAmount getShopAmount getStorageAmount getConfig getWord q4rx);


	elsif ($kw eq 'player')     {$ret = getPlayerID($arg)}
+	elsif ($kw eq 'monster')    {$ret = getMonsterID($arg)}
	elsif ($kw eq 'vender')     {$ret = getVenderID($arg)}

файл plugins\Macro\Utilities.pm:

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

our @EXPORT_OK = qw(ai_isIdle q4rx between cmpr match getArgs refreshGlobal getnpcID getPlayerID
+	getMonsterID getVenderID getItemIDs getInventoryIDs getStorageIDs getSoldOut getInventoryAmount
	getCartAmount getShopAmount getStorageAmount getRandom getRandomRange getConfig getWord callMacro);



# get player array index
sub getPlayerID {
	foreach my $pl (@{$playersList->getItems()}) {
		return $pl->{binID} if $pl->name eq $_[0]
	}
	return -1
}

+# get monster array index
+sub getMonsterID {
+	foreach my $ml (@{$monstersList->getItems()}) {
+		return $ml->{binID} if $ml->name eq $_[0]
+	}
+	return -1
+}

# get vender array index
я считаю, что это "спец. ключевое слово" должно было существовать с самого начало создания макро-плагина. И посему нада бы за СВНить :twisted: А то получается мы можем АМ реагировать на моба, получаем его имя и координаты а дальше ничего с ним сделать не можем (ну если только eval'ом)

далее в файле mon_control.txt пишем: "Geographer -1"

в макросах пишем:

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

automacro absorption {
notMonster Sleeper
monster Geographer
sp < 80%
run-once 1
call {
	do a @monster ($.lastMonster)
	release absorption

}
}

automacro absorpstop {
monster Geographer
sp > 79%
timeout 5
call {
	do as
	release absorption
}
}
в конфиге пишем:

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

attackSkillSlot Vigor Absorption {
	lvl 1
	dist 10
	sp < 80%
#	aggressives < 2
	inLockOnly 0
	notWhileSitting 1
	notInTown 1
	monsters Geographer
}
вроде всё.. теперь мы с гео сосём только СП и ничего более.

-думаю нада как-то ещё учесть агресоров
-пробовал вместо АМ записать докоммандером, нефига не вышло. Тут достоинство АМ в том, что он активируется когда в поле видимости попадает нужный нам моб.
Последний раз редактировалось 4epT Вс янв 27, 2008 3:31 pm, всего редактировалось 1 раз.
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2795
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494

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

pJ, ну что скажешь на счёт новой "опции"??
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8204
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Для начала, ее надо хорошо обкатать. Всесторонне проверить. Ты это уже, или как? :twisted:

Второе, чо-то вот подумалось, что придет Анарчо, повтыкает на наши изменения, почешет репу, подумает "ну эти фукед русские совсем охренели", и... забьет на доработку макросов. :o Ну это я шучу.

Третье. Озаботься документацией. Нам нужно толковое английское описание и примеры, как минимум.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2795
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494

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

Всесторонне проверить:
проверил номер показывает правельно, если несколько одинаковых мобов, то определяет с меньшим номером

описание:
@monster (<name>)
looks for a monster and returns ID or -1 if the monster was not found
примеры:
Смотри выше. Мы не хотим мочить моба, а нужно применить атакующий скил на него.
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Muka
Начинающий
Сообщения: 39
Зарегистрирован: Сб ноя 18, 2006 11:45 pm

Re: id монстра в макросах / недокументированная игра с блоками

Сообщение Muka »

Вроде, работает, только есть одна проблема. Если вдруг во время сосания СП с Гео появляется Слипер, бот продолжает пытаться абсорбить, мужественно лечась, пока СП не кончится. Т.е. достигается обратный эффект. Как можно сделать, чтобы при возникновении опасности, отбивалась атака Слипа?