Возникла необходимость проверки одета вещь или нет в макросе, пока нашел только 1 способ это сделать:
automacro checkeq0 {
equipped topHead Poo Poo Hat
call editconf0
run-once 1
}
macro editconf0 {
do conf eqitem 1
release checkeq1
}
automacro checkeq1 {
equipped topHead none
call editconf1
run-once 1
}
macro editconf1 {
do conf eqitem 0
release checkeq0
}
macro work {
if (@config(eqitem) = 1) goto work1
if (@config(eqitem) = 0) goto work2
:work1
log шапка одета
goto end
:work2
log нету шапки
:end
}
но думаю что этот способ слишком нерациональный, и к тому же возникают проблемы если я в процессе выполнения другого макроса одеваю/снимаю Poo Poo Hat
[help] Проверка экипировки в макросе (аналог equipped в АМ)
Модератор: 4epT
Правила форума
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
-
- Энтузиаст
- Сообщения: 103
- Зарегистрирован: Вт июн 19, 2007 8:58 pm
- Откуда: Москва
- Контактная информация:
Re: [help] Проверка экипировки в макросе (аналог equipped в АМ)
eval - Это хорошо. Но когда не знаешь не синтаксиса перла... не глобальных переменных в боте.. копаться можно долго.
Вот тоже возникла потребность в проверке одета ли определённая шмотка (нож) или нет.
EternalHarvest выручай!))) взываю к твоим знаниям))
Вот тоже возникла потребность в проверке одета ли определённая шмотка (нож) или нет.
EternalHarvest выручай!))) взываю к твоим знаниям))
-
- Разработчик
- Сообщения: 819
- Зарегистрирован: Пн окт 27, 2008 9:49 pm
Re: [help] Проверка экипировки в макросе (аналог equipped в АМ)
Код: Выделить всё
##
# Actor::Item::get(name, skipIndex, notEquipped)
# item: can be either an object itself, an ID or a name.
# skipIndex: tells this function to not select a certain item (used for getting another item with the same name).
# notEquipped: 1 = not equipped item; 0 = equipped item; undef = all item
# Returns: an Actor::Item object, or undef if not found or parameters not matched.
-
- Энтузиаст
- Сообщения: 103
- Зарегистрирован: Вт июн 19, 2007 8:58 pm
- Откуда: Москва
- Контактная информация:
Re: [help] Проверка экипировки в макросе (аналог equipped в АМ)
А вот так я уже непонимаю((
т.к. перл и его синтаксис ваще незнаю(((
Добавлено спустя 13 часов 23 минуты 10 секунд:
вроде вот так проверяется шмот в automacro
как это преобразовать в eval?
т.к. перл и его синтаксис ваще незнаю(((
Добавлено спустя 13 часов 23 минуты 10 секунд:
вроде вот так проверяется шмот в automacro
Код: Выделить всё
sub checkEquip {
if ($_[0] =~ /,/) {
my @equip = split(/\s*,\s*/, $_[0]);
foreach my $e (@equip) {return 1 if checkEquip($e)}
return 0
}
my $arg = $_[0];
if ($arg =~ m/^((?:top|mid|low)Head|(?:left|right)Hand|robe|armor|shoes|(?:left|right)Accessory|arrow)\s+(.*)/i) {
if (my $item = $char->{equipment}{$1}) {
return lc($2) eq lc($item->name)?1:0
}
return lc($2) eq 'none'?1:0
}
$arg = lc($arg);
foreach my $s (keys %{$char->{equipment}}) {
next unless lc($char->{equipment}{$s}->name) eq $arg;
return 1
}
return 0
}
как это преобразовать в eval?