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

бага с хелпом

Добавлено: Вт апр 15, 2008 3:01 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.

Добавлено: Вт апр 15, 2008 11:43 am
Click
это древний бага

Добавлено: Вт апр 15, 2008 12:08 pm
Gans
Какие-то служебные символы в тексте хэлпа, что ли? :shock:

Добавлено: Вт апр 15, 2008 1:46 pm
Click
из командескриптинс описание в массив добавляется, потом этот массив выводиться, я так понял то ли ему строк не хватает, то ли этот массив при каждом выводе хелп не заново заполняется а дополняется.

Добавлено: Ср апр 16, 2008 5:35 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]);
И даже работает...

Кстати, это вообще кому-нить надо? ) Для себя я полюбому мелочи буду выправлять, а тут оно надо?

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

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

Создал тему на форуме ОК: может там народ еще что-то подправит перед внесением в SVN.
http://forums.openkore.com/viewtopic.ph ... &sk=t&sd=a

Добавлено: Ср апр 16, 2008 5:33 pm
l00zEr
piroJOKE
благодарю. а то я читать-то по ихнему без проблем, а вот писать... :D
кстати, багу не я нешёл. Click писал, что она древняя.

Добавлено: Ср апр 16, 2008 9:56 pm
piroJOKE
Оффтопик.

l00zEr
Я тоже не умею "писать по-ихнему". Чтобы донести свои мысли до иноземцев, я пользуюсь автоматическим переводчиком. Но - проверяю его работу, заставляя его переводить сначала на английский, а потом обратно на русский. :twisted: Если смысл фразы после этого двойного преобразования не утратился - можно публиковать. Вот такой народный мэтод. :twisted:

Добавлено: Пн апр 21, 2008 11:09 am
piroJOKE
Внесено как SVN-6331 ФриГудсом.