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

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

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

Правила форума
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
murderers
Новичок
Сообщения: 8
Зарегистрирован: Чт апр 19, 2007 12:30 am

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

Сообщение 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% перевеса и пишет что больше взять не может ну это и понятно потому что в телегу то не ложит, так вот как сделать чтобы он начал брать когда их все продаст?
nur
Начинающий
Сообщения: 42
Зарегистрирован: Чт ноя 20, 2008 1:34 pm
Сервер RO:: rro

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

Сообщение nur »

не проще ли
storage gettocart <storage_item> [<amount>]
сразу всадить 8к желопей и все?
murderers
Новичок
Сообщения: 8
Зарегистрирован: Чт апр 19, 2007 12:30 am

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

Сообщение murderers »

не работает... да и дело в другом, почему он не ждёт когда они продадуться, а ещё раз пытается взять...
Klinik
Грамотный
Сообщения: 307
Зарегистрирован: Сб фев 16, 2008 1:42 am
Контактная информация:

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

Сообщение Klinik »

потомучто когда открываеться магаз кора считает что из телеги вытащены вещи которые продаються...
Изображение
murderers
Новичок
Сообщения: 8
Зарегистрирован: Чт апр 19, 2007 12:30 am

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

Сообщение murderers »

у меня же написано
shop "jellopy" < 1
это я как понимаю он проверяет не телегу, а состаяние магазина
Klinik
Грамотный
Сообщения: 307
Зарегистрирован: Сб фев 16, 2008 1:42 am
Контактная информация:

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

Сообщение Klinik »

Jellopy пишеться с большой буквы...
Изображение
nur
Начинающий
Сообщения: 42
Зарегистрирован: Чт ноя 20, 2008 1:34 pm
Сервер RO:: rro

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

Сообщение nur »

murderers писал(а):не работает... да и дело в другом, почему он не ждёт когда они продадуться, а ещё раз пытается взять...
да шо ты гонiш, пишешь в макросе
do storage gettocart Jellopy 8000
и прекрасно он те втухает в телегу 8к желопей, если в телеге есть стока веса.
ну или автомакрос на такой текст в консолi напиши
Shop closed.
murderers
Новичок
Сообщения: 8
Зарегистрирован: Чт апр 19, 2007 12:30 am

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

Сообщение murderers »

кто может сказать как сделать проверку что магазин открыт? из-за этого проблемы...
vasa666
Энтузиаст
Сообщения: 103
Зарегистрирован: Вт июн 19, 2007 8:58 pm
Откуда: Москва
Контактная информация:

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

Сообщение vasa666 »

а так же кто может сказать как сделать проверку открыта ли кафра?
макросом.
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

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

Сообщение 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}
vasa666
Энтузиаст
Сообщения: 103
Зарегистрирован: Вт июн 19, 2007 8:58 pm
Откуда: Москва
Контактная информация:

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

Сообщение 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"
это не реализуется?
manticora
Грамотный
Сообщения: 436
Зарегистрирован: Ср авг 29, 2007 12:45 pm

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

Сообщение manticora »

Автомакрос, по-моему, будет выглядеть примерно так:

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

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

}
# Гурнин: Неплохо! Пришло время научить вас умению 'Скидка', но мы займемся этим позже.
русская вики по OpenKore, редактор макросов с подсветкой и справкой по Ctrl+F1
openkore.collectskin.com - всегда свежая svn-версия OpenKore!
Видео-гайд по установке и настройке OpenKore
vasa666
Энтузиаст
Сообщения: 103
Зарегистрирован: Вт июн 19, 2007 8:58 pm
Откуда: Москва
Контактная информация:

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

Сообщение vasa666 »

Пасибо за подсказку manticora:!
Благодаря тебе и методом научного тыка пришёл к этому результату:

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

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

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

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

if ($storage{opened} = 0 ) goto odin
А то что выше... срабатывает?
не нашёл описания как в макросах можно определить истину и лож.
manticora
Грамотный
Сообщения: 436
Зарегистрирован: Ср авг 29, 2007 12:45 pm

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

Сообщение 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 и получаем сообщение, что кафра открыта.
# Гурнин: Неплохо! Пришло время научить вас умению 'Скидка', но мы займемся этим позже.
русская вики по OpenKore, редактор макросов с подсветкой и справкой по Ctrl+F1
openkore.collectskin.com - всегда свежая svn-версия OpenKore!
Видео-гайд по установке и настройке OpenKore
vasa666
Энтузиаст
Сообщения: 103
Зарегистрирован: Вт июн 19, 2007 8:58 pm
Откуда: Москва
Контактная информация:

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

Сообщение 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
}
Строчка на проверку, была мною честна откуда то своровона))
Ответить