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

WX-интерфейс: Players,Monster&Items - обновление списка

Добавлено: Ср дек 06, 2006 10:42 am
Вуфв
у меня почемуто список необновляется в wx интерфейсе :( .Обьясняю: были мобы мантис мантис агриопа, передвинулся бот в списке осталось мантис мантис агриопа, а на самом дела там агриопа агриопа агриопа %) . что можно с этим сделать :cry: ? прошу подскажите.

Добавлено: Ср дек 06, 2006 10:44 am
demm
уточни в каком списке?
подозреваю что в wx интерфейсе, но не уверен...

Добавлено: Ср дек 06, 2006 11:09 am
piroJOKE
Угу, в 1.9.2 - 1.9.3 там где-то сидит БАГ!

Добавлено: Ср дек 06, 2006 11:09 am
demm
а в более ранних версиях такого не было?

Добавлено: Ср дек 06, 2006 11:19 am
Вуфв
piroJOKE может попробуете поправить :roll: ??

Добавлено: Ср дек 06, 2006 12:10 pm
demm
Чорт... сегодня среда... чорт... я полчаса пытаюсь бота приконектить к раггейму... чорт...

Старый wx.pm ($Id: Wx.pm 4447 2006-05-26 18:31:05Z hongli $) (взято с свн 1.9.1)
sub updateItemList {
my $self = shift;
if ($conState == 5) {
$self->{itemList}->set(\@playersID, \%players, \@monstersID, \%monsters,
\@itemsID, \%items, \@npcsID, \%npcs);

$self->{hpBar}->SetValue($char->{hp} / $char->{hp_max} * 100) if ($char->{hp_max});
$self->{spBar}->SetValue($char->{sp} / $char->{sp_max} * 100) if ($char->{sp_max});
$self->{expBar}->SetValue($char->{exp} / $char->{exp_max} * 100) if ($char->{exp_max});
$self->{jobExpBar}->SetValue($char->{exp_job} / $char->{exp_job_max} * 100) if ($char->{exp_job_max});
$self->{weightBar}->SetValue($char->{weight} / $char->{weight_max} * 100) if ($char->{weight_max});
}
}
Новый wx.pm ($Id: Wx.pm 4710 2006-07-08 12:01:48Z hongli $)
sub updateItemList {
my $self = shift;
if ($conState == 5) {
$self->{hpBar}->SetValue($char->{hp} / $char->{hp_max} * 100) if ($char->{hp_max});
$self->{spBar}->SetValue($char->{sp} / $char->{sp_max} * 100) if ($char->{sp_max});
$self->{expBar}->SetValue($char->{exp} / $char->{exp_max} * 100) if ($char->{exp_max});
$self->{jobExpBar}->SetValue($char->{exp_job} / $char->{exp_job_max} * 100) if ($char->{exp_job_max});
$self->{weightBar}->SetValue($char->{weight} / $char->{weight_max} * 100) if ($char->{weight_max});
}
}
Красным подсвечено то что изменено.
Подозреваю что апдейт итемлиста просто напросто убран.
Проверить немогу, рага не работает из-за профилактики...

Добавлено: Ср дек 06, 2006 12:15 pm
piroJOKE
Оффтопик: Хе-хе, если ты уж лезешь в Перл, то тебе просто необходимо иметь тестовый сервер. Я имею в виду эмулятор eAthena (www.eathena.ws) на твоем компутере.

Антиоффтопик: Хм, но ведь список всё-таки изменяется? Косо, криво, но изменяется...

Добавлено: Ср дек 06, 2006 12:19 pm
Вуфв
piroJOKE писал(а):Антиоффтопик: Хм, но ведь список всё-таки изменяется? Косо, криво, но изменяется...

косо криво но когда уже мобов 20 перебьёш а это уж очень очень долго.

Добавлено: Ср дек 06, 2006 2:19 pm
kLabMouse
Вуфв
Ну. Что-ж Кто доброволец Испробовать? Возможно они переборщили с ентой строчечкой.

Добавлено: Ср дек 06, 2006 2:42 pm
demm
не пашет. ошибка: не может найти метод set...
попозже посмотрю где этот метод описывался в старом wx-фейсе

Добавлено: Ср дек 06, 2006 2:49 pm
piroJOKE
Угу, то же самое.

Я подозреваю, что это было убрано временно, т.к. у них внутреннее представление данных изменилось.
Т.е., хотели вставить "что-то-другое", но не вставили...

Добавлено: Ср дек 06, 2006 3:19 pm
demm
->
вот эта стрелочка что в перле означает?

Добавлено: Ср дек 06, 2006 3:21 pm
kLabMouse
demm
Субоект или Субклас.

Добавлено: Ср дек 06, 2006 5:50 pm
Вуфв
Тема ещё открыта ? Жду помощи тогда :cry:

___
(piroJOKE: хватит флудить по темам! )

Добавлено: Ср дек 06, 2006 7:11 pm
demm
Кроме того что я писал выше, надо добавить в Itemlist.pm, между "sub OnGetItemImage" и "1;" следующее:
sub OnGetItemImage {
return 0;
}

sub set {
my $self = shift;

my @objectsID;
my %objects;

my $r_playersID = shift;
my $players = shift;
foreach (@{$r_playersID}) {
next if (!$_ || !$players->{$_});
push @objectsID, $_;
$objects{$_} = {%{$players->{$_}}};
$objects{$_}{type} = 'p';
}

my $r_monstersID = shift;
my $monsters = shift;
foreach (@{$r_monstersID}) {
next if (!$_ || !$monsters->{$_});
push @objectsID, $_;
$objects{$_} = {%{$monsters->{$_}}};
$objects{$_}{type} = 'm';
}

my $r_itemsID = shift;
my $items = shift;
foreach (@{$r_itemsID}) {
next if (!$_ || !$items->{$_});
push @objectsID, $_;
$objects{$_} = {%{$items->{$_}}};
$objects{$_}{type} = 'i';
}

my $r_npcsID = shift;
my $npcs = shift;
foreach (@{$r_npcsID}) {
next if (!$_ || !$npcs->{$_});
push @objectsID, $_;
$objects{$_} = {%{$npcs->{$_}}};
$objects{$_}{type} = 'n';
}

$self->{objectsID} = \@objectsID;
$self->{objects} = \%objects;
$self->SetItemCount(scalar(@objectsID)) if (scalar(@objectsID) != $self->GetItemCount);
$self->RefreshItems(0, -1);
}

1;
Это кусок кода, то что красным выделено, то добавлено.

Но толку ноль вроде... Новиса в новис граунд пустил, как глючил итем лист, так и глючит вроде.
Проверте пожалуйста кто нибудь... У меня ро на удаленке запущен, через vnc тестить сложно...