Страница 7 из 10
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Пт дек 12, 2008 5:34 am
[GM]#05
Если перед всеми блоками автозакупки стоит пустой блок либо блок с пустым npc, то автозакупка не срабатывает при отсутствии расходки.
Собственно вот(блок автозакупки):
Код: Выделить всё
while (1) {
last if (!$config{"buyAuto_$i"} || !$config{"buyAuto_$i"."_npc"});
Выходит из цикла если встречает такой блок, а т.к. такой блок первый, то и следовательно вышли и думаем, закупаться ненадо.
Поэтому у меня и были проблемы с автозакупкой...
__
(pJ:
проверить!)
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Пт дек 12, 2008 9:10 am
Click
и как решить? если добавитьпроверку на наличие второго блока, то у кого то будет два первых пустых

идеи?
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Пт дек 12, 2008 2:35 pm
kLabMouse
Click
Просто Игнорировать пустые блоки.
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Пт дек 12, 2008 5:41 pm
[GM]#05
(pJ: проверить!)
Сейчас еще раз проверил:
Оставляю пустой блок который есть изначально в конфиге для примера.
Ниже пишу свой блок. Автозакупка не срабатывает. Удаляю пустой блок, reload conf, убил моба пошел закупился.
Да и по коду видно, что в этом цикле задается переменная отвечающая нужно идти закупиться или не нужно, а при встрече пустого блока или блока без npc он даже не доходит до задания этой переменной и выходит из цикла сразу же, и всегда думает что закупаться ненадо.
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Чт дек 18, 2008 2:39 pm
Click
kLabMouse писал(а):Click
Просто Игнорировать пустые блоки.
как это сделать, совместив с
Код: Выделить всё
while (1) {
last if (!$config{"buyAuto_$i"} || !$config{"buyAuto_$i"."_npc"});
или вообще передумать логику?

Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Чт дек 18, 2008 3:01 pm
kLabMouse
Click
Думаю немного передумать логику.
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Пт дек 19, 2008 9:28 pm
4epT
удалил бред "Tycoon'а"

Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Чт дек 25, 2008 4:28 am
EternalHarvest
Макро-плагин неправильно обрабатывает строчки вида
@rand (1, 10) @rand (1, 10)
подставляя во все места одно и то же число.
Фикс:
Macro::Parser::parseCmd
Код: Выделить всё
+ my $randomized = 0;
if ($kw eq 'npc') {$ret = getnpcID($arg)}
elsif ($kw eq 'cart') {($ret) = getItemIDs($arg, $::cart{'inventory'})}
elsif ($kw eq 'Cart') {$ret = join ',', getItemIDs($arg, $::cart{'inventory'})}
elsif ($kw eq 'inventory') {($ret) = getInventoryIDs($arg)}
elsif ($kw eq 'Inventory') {$ret = join ',', getInventoryIDs($arg)}
elsif ($kw eq 'store') {($ret) = getItemIDs($arg, \@::storeList)}
elsif ($kw eq 'storage') {($ret) = getStorageIDs($arg)}
elsif ($kw eq 'Storage') {$ret = join ',', getStorageIDs($arg)}
elsif ($kw eq 'player') {$ret = getPlayerID($arg)}
elsif ($kw eq 'vender') {$ret = getVenderID($arg)}
- elsif ($kw eq 'random') {$ret = getRandom($arg)}
+ elsif ($kw eq 'random') {$ret = getRandom($arg); $randomized = 1}
- elsif ($kw eq 'rand') {$ret = getRandomRange($arg)}
+ elsif ($kw eq 'rand') {$ret = getRandomRange($arg); $randomized = 1}
elsif ($kw eq 'invamount') {$ret = getInventoryAmount($arg)}
elsif ($kw eq 'cartamount') {$ret = getCartAmount($arg)}
elsif ($kw eq 'shopamount') {$ret = getShopAmount($arg)}
elsif ($kw eq 'storamount') {$ret = getStorageAmount($arg)}
elsif ($kw eq 'config') {$ret = getConfig($arg)}
elsif ($kw eq 'arg') {$ret = getWord($arg)}
elsif ($kw eq 'eval') {$ret = eval($arg)}
return unless defined $ret;
return $cmd if $ret eq '_%_';
$targ = q4rx $targ;
+ unless ($randomized) {
$cmd =~ s/\@$kw\s*\(\s*$targ\s*\)/$ret/g
+ } else {
+ $cmd =~ s/\@$kw\s*\(\s*$targ\s*\)/$ret/
+ }
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Чт дек 25, 2008 2:30 pm
Click
это ты в какой свн?
Добавлено спустя 2 минуты 18 секунд:
а если мы у плеера два раза будет спрашивать чтонить в одной стоке, то он тоже будет выдавать одинаково?
Добавлено спустя 7 минут 23 секунды:
Re: bugtraq:about - если?ы нашли ошибку??p????то?.
ну? общем?уть,?сли?прашиваем одно и тоже?есколько?аз в одной строке?то?ам выдаст?динаковый?езультат?значит?огда надо?делать?бщее решение?ля?сех?
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Чт дек 25, 2008 4:34 pm
EternalHarvest
Click писал(а):а если мы у плеера два раза будет спрашивать чтонить в одной стоке, то он тоже будет выдавать одинаково?
Сейчас заменяются все одинаковые вхождения @конструкций одним махом.
Click писал(а):ну? общем?уть,?сли?прашиваем одно и тоже?есколько?аз в одной строке?то?ам выдаст?динаковый?езультат?значит?огда надо?делать?бщее решение?ля?сех?
Не для всех, у всего кроме @rand и @random оно и должно выдавать одинаково (пока парсится одна строчка макроса, окружение и конфиг не меняется).
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Пт янв 23, 2009 1:57 pm
EternalHarvest
При использовании команды guild leave (а также видимо request, ally, break, kick) выдаётся "You are not in a guild".
Фикс:
&src::Commands::cmdGuild
Код: Выделить всё
- } elsif (!defined $char->{guild}) {
+ } elsif (!%guild) {
error T("You are not in a guild.n");
Добавлено спустя 2 минуты 52 секунды:
Хм... %guild определено, даже если гильдии нет. Так что надо что-то другое.
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Пт янв 23, 2009 2:53 pm
kLabMouse
EternalHarvest
может значение проверять?
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Пт янв 23, 2009 4:07 pm
EternalHarvest
Проверки типа
Код: Выделить всё
!defined $guild{ID}
!$guild{ID}
!defined $char->{guildID}
не катят...
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Вс янв 25, 2009 12:13 pm
Click
Код: Выделить всё
+ unless ($randomized) {
$cmd =~ s/\@$kw\s*\(\s*$targ\s*\)/$ret/g
+ } else {
+ $cmd =~ s/\@$kw\s*\(\s*$targ\s*\)/$ret/
+ }
/$ret/g что значит g на конце и почему её нету во второй строке?
Re: bugtraq:about - если вы нашли ошибку в OpenKore, то...
Добавлено: Вс янв 25, 2009 3:05 pm
EternalHarvest
Click писал(а):Код: Выделить всё
+ unless ($randomized) {
$cmd =~ s/\@$kw\s*\(\s*$targ\s*\)/$ret/g
+ } else {
+ $cmd =~ s/\@$kw\s*\(\s*$targ\s*\)/$ret/
+ }
/$ret/g что значит g на конце и почему её нету во второй строке?
g - заменить всё
Я писал же тут где-то, что там был за баг.
Во второй строке не надо, потому что иначе неправильно обрабатываются строки вида "@rand (1, 2) @rand (1, 2)" - заменяет всё сразу одним результатом.