Страница 3 из 3

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Вс фев 22, 2009 3:40 pm
murderers
Чтобы не создавать новую тему спрошу тут, тем более похожее.
Вот макрос:
automacro refill {
shop "jellopy" < 1
call store
run-once 1
}

macro store {
pause 350
do closeshop
pause 1
do talk @npc (146 89)
pause 5
do talk resp 1
pause 2
do storage get @storage (jellopy) 2500
pause 5
do cart add @inventory (jellopy)
pause 5
do storage get @storage (jellopy) 2500
pause 5
do cart add @inventory (jellopy)
pause 5
do storage get @storage (jellopy) 1000
pause 5
do cart add @inventory (jellopy)
pause 15
do openshop
pause 10
release all
}

тоесть мне надо чтобы магазин закрылся когда продал всё желлопи, взял со склада и снова открылся, но у меня он закрывается даже когда магазин полный, берёт в инвертарь до 90% перевеса и пишет что больше взять не может ну это и понятно потому что в телегу то не ложит, так вот как сделать чтобы он начал брать когда их все продаст?

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Вс фев 22, 2009 3:56 pm
nur
не проще ли
storage gettocart <storage_item> [<amount>]
сразу всадить 8к желопей и все?

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Вс фев 22, 2009 4:07 pm
murderers
не работает... да и дело в другом, почему он не ждёт когда они продадуться, а ещё раз пытается взять...

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Вс фев 22, 2009 4:37 pm
Klinik
потомучто когда открываеться магаз кора считает что из телеги вытащены вещи которые продаються...

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Вс фев 22, 2009 4:47 pm
murderers
у меня же написано
shop "jellopy" < 1
это я как понимаю он проверяет не телегу, а состаяние магазина

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Вс фев 22, 2009 5:32 pm
Klinik
Jellopy пишеться с большой буквы...

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Вс фев 22, 2009 7:33 pm
nur
murderers писал(а):не работает... да и дело в другом, почему он не ждёт когда они продадуться, а ещё раз пытается взять...
да шо ты гонiш, пишешь в макросе
do storage gettocart Jellopy 8000
и прекрасно он те втухает в телегу 8к желопей, если в телеге есть стока веса.
ну или автомакрос на такой текст в консолi напиши
Shop closed.

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Вс фев 22, 2009 8:45 pm
murderers
кто может сказать как сделать проверку что магазин открыт? из-за этого проблемы...

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Пт май 13, 2011 11:59 am
vasa666
а так же кто может сказать как сделать проверку открыта ли кафра?
макросом.

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Пт май 13, 2011 3:12 pm
EternalHarvest
Network::Receive::ServerType0:

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

sub storage_closed {
	message T("Storage closed.\n"), "storage";
	delete $ai_v{temp}{storage_opened};
	delete $storage{opened};
	Plugins::callHook('packet_storage_close');

	# Storage log
	writeStorageLog(0);
}
Условие:

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

eval $storage{opened}

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Пт май 13, 2011 4:27 pm
vasa666
EternalHarvest писал(а):Network::Receive::ServerType0:

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

sub storage_closed {
	message T("Storage closed.n"), "storage";
	delete $ai_v{temp}{storage_opened};
	delete $storage{opened};
	Plugins::callHook('packet_storage_close');

	# Storage log
	writeStorageLog(0);
}
Условие:

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

eval $storage{opened}
Эм %) пом это всё запчасти отсюда "srcNetworkReceiveServerType0.pm"
и как задействовать это "eval $storage{opened}"?? Мне нада как то подключится к "ServerType0.pm" или эта штука уже автоматом сработает?
Сори, я не на столько во всём этом шарю) я простой любитель, прочитавший только это: http://www.openkore.com/index.php/Macro_plugin
я не программист)

Добавлено спустя 1 час 41 секунду:
А с помощью "hook packet_storage_open"
это не реализуется?

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Пт май 13, 2011 5:32 pm
manticora
Автомакрос, по-моему, будет выглядеть примерно так:

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

automacro kafraA {
   location prontera
   eval $storage{opened}
   timeout 7
   call kafra
}
macro kafra {
    log Склад открыт. И что теперь?

}

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Пт май 13, 2011 6:53 pm
vasa666
Пасибо за подсказку manticora:!
Благодаря тебе и методом научного тыка пришёл к этому результату:

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

macro t {
	if (@storamount ($storage{opened}) = 0 ) goto odin
	log закрыта кафрочка наша.
	stop

:odin
	log кафра открыта! РАБОТАЕТ!
	stop
}
а кто мне расскажет почему строчка такова вида не работает?

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

if ($storage{opened} = 0 ) goto odin
А то что выше... срабатывает?
не нашёл описания как в макросах можно определить истину и лож.

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Пт май 13, 2011 8:22 pm
manticora
Ложь пишется с мягким знаком.
а кто мне расскажет почему строчка такова вида не работает?
if ($storage{opened} = 0 ) goto odin
Потому что этот текст - макрос, а конструкция вида $storage{opened} относится к Perl'у. Все эти фишки типа знака доллара $ для обозначения скалярной переменной, фигурных скобок { и } для обозначения хэша - непонятны для макроплагина! И уж тем более макроплагин не может их связать с теми переменными, которые используются в самой OpenKore.
Чтобы OpenKore воспринимала подобный текст в макросе как текст на Perl'е, следует использовать @eval внутри macro {...} и eval внутри automacro {...}.
Таким образом, правильно будет записать примерно так:

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

if (@eval($storage{opened})) goto SkladOtkryt
  log Склад закрыт
  goto endif
:SkladOtkryt
  log Склад открыт
:endif
if (@storamount ($storage{opened}) = 0 ) goto odin
А это срабатывает, почему?
Сейчас разберёмся. Что такое @storamount? Смотрим вики на рагбот.ру:
@storamount (<item>)
Возвращает количество <item> на складе.
Ага, получается, что @storamount ($storage{opened}) возвращает количество предмета "$storage{opened}" на складе. Предметов с таким странным названием не нашлось, то есть их количество равно 0. Ноль равен нулю, условие выполняется, идём по goto на метку odin и получаем сообщение, что кафра открыта.

Re: [share] Макросик для сторинга вещей(для команды @storage)

Добавлено: Пт май 20, 2011 12:09 pm
vasa666
manticora писал(а):

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

if (@eval($storage{opened})) goto SkladOtkryt
  log Склад закрыт
  goto endif
:SkladOtkryt
  log Склад открыт
:endif


на запись:

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

if (@eval($storage{opened})) goto SkladOtkryt
Бот выдаёт ошибку
[macro] proba error: error in 0: syntax error in if statement

Добавлено спустя 42 минуты 58 секунд:
Вот рабочий пример! Теперь всё правильно? Знатоки.. проверьте))

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

macro proba {
if (@eval(exists $::storage{opened}?1:0)) goto SkladOtkryt
  log Склад закрыт
  goto endif
:SkladOtkryt
  log Склад открыт
:endif
}
Строчка на проверку, была мною честна откуда то своровона))