Страница 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
Какие-то служебные символы в тексте хэлпа, что ли?
Добавлено: Вт апр 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'е.
То бишь, "в центре".
Ибо у текущей ОК масса недочетов, а тех кто может их исправить - кот наплакал.
Добавлено спустя 28 минут 7 секунд:
Создал тему на форуме ОК: может там народ еще что-то подправит перед внесением в SVN.
http://forums.openkore.com/viewtopic.ph ... &sk=t&sd=a
Добавлено: Ср апр 16, 2008 5:33 pm
l00zEr
piroJOKE
благодарю. а то я читать-то по ихнему без проблем, а вот писать...
кстати, багу не я нешёл. Click писал, что она древняя.
Добавлено: Ср апр 16, 2008 9:56 pm
piroJOKE
Оффтопик.
l00zEr
Я тоже не умею "писать по-ихнему". Чтобы донести свои мысли до иноземцев, я пользуюсь автоматическим переводчиком. Но - проверяю его работу, заставляя его переводить сначала на английский, а потом обратно на русский.
Если смысл фразы после этого двойного преобразования не утратился - можно публиковать. Вот такой народный мэтод.
Добавлено: Пн апр 21, 2008 11:09 am
piroJOKE
Внесено как SVN-6331 ФриГудсом.