guild member

BugTraq: обнаруженные ошибки и обсуждение их устранения.

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

spectre
Начинающий
Сообщения: 33
Зарегистрирован: Чт авг 07, 2008 3:42 pm

guild member

Сообщение spectre »

Данная команда выводит инфу о членах гильдии. Но там глюк - не выводит приписки членов. Исправить баг пока не понял как (мб подскажете кстати?).

Но придумал небольшой хак:

ищем в файле commands.pm функцию cmdGuild,

в ней ищем строчку my $msg = T("------------ Guild Member ------------\n"
под ней находим сточку "# Name Job Lv Title Online\n");
заменяем на "# Name Job Lv Exp Online\n");

ещё ниже находим строчку my ($i, $name, $job, $lvl, $title, $online, $ID, $charID);
заменяем на my ($i, $name, $job, $lvl, $title, $online, $ID, $charID, $contribution);

ищем строчку $title = $guild{member}[$i]{title};
под ней добавляем строчку $contribution = $guild{member}[$i]{contribution};

ещё ниже находим строчку [$i, $name, $job, $lvl, $title, $online, $ID, $charID]);
заменяем на [$i, $name, $job, $lvl, $contribution, $online, $ID, $charID]);

вместо приписке будет выводиться инфа о набитой экспе
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Re: guild member

Сообщение vit »

Просьба тему перенести в ошибки.

Проблема возникает из-за небольшой путаницы в ОК - в некоторых местах используется $guild{member} а в некоторых(кстати всего в двух) $guild{positions}.

Решение такое(нуждается в тестировании(!!!)):
Receive.pm

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

- delete $guild{member};
+ # Ай-ай мы делаем что-то нехорошее, чего лучше бы не делать
+ #delete $guild{member};

- $guild{member}[$c]{title} = $guild{title}[$gtIndex];
+ # $guild{title}[$gtIndex] я больше нигде не нашел. Она всегда пустая.
+ #$guild{member}[$c]{title} = $guild{title}[$gtIndex];

- $guild{positions}[$gtIndex]{title} = bytesToString(unpack("Z24", substr($msg, $i + 4, 24)));
+ $guild{member}[$gtIndex]{title} = bytesToString(unpack("Z24", substr($msg, $i + 4, 24)));
Также неплохо было бы поправить еще 3 строчки(сейчас они нигде не используются, но потом возможно будут):
Receive.pm

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

- $guild{positions}[$gtIndex]{invite} = (unpack("C1", substr($msg, $i + 4, 1)) & 0x01) ? 1 : '';
+ $guild{member}[$gtIndex]{invite} = (unpack("C1", substr($msg, $i + 4, 1)) & 0x01) ? 1 : '';
- $guild{positions}[$gtIndex]{punish} = (unpack("C1", substr($msg, $i + 4, 1)) & 0x10) ? 1 : '';
+ $guild{member}[$gtIndex]{punish} = (unpack("C1", substr($msg, $i  4, 1)) & 0x10) ? 1 : '';
- $guild{positions}[$gtIndex]{feeEXP} = unpack("V1", substr($msg, $i + 12, 4));
+ $guild{member}[$gtIndex]{feeEXP} = unpack("V1", substr($msg, $i + 12, 4));
P.S: Вместо этого всего можно сделать так:
Commands.pm

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

- $title = $guild{member}[$i]{title};
+ $title = $guild{positions}[$i]{title};
Но это нельзя назвать решением, т. к. оно приведёт к ещё большей путанице в дальнейшем.
Ответить