бага с хелпом

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

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

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
l00zEr
Начинающий
Сообщения: 41
Зарегистрирован: Ср апр 02, 2008 12:15 am

бага с хелпом

Сообщение l00zEr »

Бага не критичная, но решил описать.
Мало ли, может из-за этого что-то ещё отвалится )
help warp
------------ Help for 'warp' ------------
Open warp portal.
warp list lists available warp portals to open
warp <warp portal #|map name> opens a warp portal to a map
--------------------------------------------------
help warp
------------ Help for 'warp' ------------
ARRAY(0x93d0afc)
warp <warp portal #|map name> opens a warp portal to a map
--------------------------------------------------
help warp
------------ Help for 'warp' ------------
ARRAY(0x93d0b20)
--------------------------------------------------
help warp
------------ Help for 'warp' ------------

--------------------------------------------------
help warp
------------ Help for 'warp' ------------

--------------------------------------------------
svn rev 6330.
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

это древний бага
Аватара пользователя
Gans
Грамотный
Сообщения: 162
Зарегистрирован: Вт дек 26, 2006 12:20 pm

Сообщение Gans »

Какие-то служебные символы в тексте хэлпа, что ли? :shock:
Изображение
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

из командескриптинс описание в массив добавляется, потом этот массив выводиться, я так понял то ли ему строк не хватает, то ли этот массив при каждом выводе хелп не заново заполняется а дополняется.
l00zEr
Начинающий
Сообщения: 41
Зарегистрирован: Ср апр 02, 2008 12:15 am

Сообщение l00zEr »

Косяк, похоже, в ф-ции helpIndent @ Commands.pm
Я в перле почти 0, так что могу только наводку дать )

До вызова хэлпа:
eval print "@{$descriptions{warp}}\n"
Open warp portal. ARRAY(0x93d0b9c) ARRAY(0x93d0bc0)

После одного вызова:
eval print "@{$descriptions{warp}}\n"
ARRAY(0x93d0b9c) ARRAY(0x93d0bc0)

Т.е. первый элемент массива удаляется при каждом вызове ф-ции.
Значит, в helpIndent() нас интересует эта строка:
$message .= shift(@{$desc}) . "\n";

Нужно тупо скопировать массив во временный и с ним уже работать...

ps
Пока писал сообщение, успел пофиксить:

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

diff -u openkore.orig/src/Commands.pm openkore/src/Commands.pm
--- openkore.orig/src/Commands.pm       2008-04-06 13:26:39.000000000 +0400
+++ openkore/src/Commands.pm      2008-04-16 06:31:33.000000000 +0400
@@ -2330,22 +2330,23 @@
 sub helpIndent {
        my $cmd = shift;
        my $desc = shift;
+       my @tmp = @{$desc};
        my $message;
        my $messageTmp;
        my @words;
        my $length = 0;

        $message = TF("------------ Help for '%s' ------------\n", $cmd);
-       $message .= shift(@{$desc}) . "\n";
+       $message .= shift(@tmp) . "\n";

-       foreach (@{$desc}) {
+       foreach (@tmp) {
                $length = length($_->[0]) if length($_->[0]) > $length;
        }
        my $pattern = "$cmd %-${length}s    %s\n";
        my $padsize = length($cmd) + $length + 5;
        my $pad = sprintf("%-${padsize}s", '');

-       foreach (@{$desc}) {
+       foreach (@tmp) {
                if ($padsize + length($_->[1]) > 79) {
                        @words = split(/ /, $_->[1]);
                        $message .= sprintf("$cmd %-${length}s    ", $_->[0]);
И даже работает...

Кстати, это вообще кому-нить надо? ) Для себя я полюбому мелочи буду выправлять, а тут оно надо?
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

l00zEr
Тут оно не шибко надо.
Но оно очень надо в SVN'е.
То бишь, "в центре". :D
Ибо у текущей ОК масса недочетов, а тех кто может их исправить - кот наплакал.

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

Создал тему на форуме ОК: может там народ еще что-то подправит перед внесением в SVN.
http://forums.openkore.com/viewtopic.ph ... &sk=t&sd=a
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
l00zEr
Начинающий
Сообщения: 41
Зарегистрирован: Ср апр 02, 2008 12:15 am

Сообщение l00zEr »

piroJOKE
благодарю. а то я читать-то по ихнему без проблем, а вот писать... :D
кстати, багу не я нешёл. Click писал, что она древняя.
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Оффтопик.

l00zEr
Я тоже не умею "писать по-ихнему". Чтобы донести свои мысли до иноземцев, я пользуюсь автоматическим переводчиком. Но - проверяю его работу, заставляя его переводить сначала на английский, а потом обратно на русский. :twisted: Если смысл фразы после этого двойного преобразования не утратился - можно публиковать. Вот такой народный мэтод. :twisted:
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Внесено как SVN-6331 ФриГудсом.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Ответить