Страница 2 из 10
Добавлено: Ср мар 19, 2008 7:36 pm
Click
CoreLogic.pm
строка примерно 1342 в свн 6263 по крайней мере.
Код: Выделить всё
$item{storage}{index} = findKeyString(\%storage, "name", $item{name});
$item{name} это то что мы берём из конфига, оно
всегда маленькими буквами.
а вот этот пляпа массив %storage (так и не нашёл как он заполняется, наверное в ресив), этот массив уже и большими и маленькими.
дак вот мы ищем в массиве с регистрами имя с только маленькими буквами.
надо сделать чтоб искалось не в %storage, а в новом уже переделанном в маленькие буквы массиве.
Добавлено: Чт мар 20, 2008 8:22 am
Aib0
Я так понимаю, что массив пишется тут:
Network\Receive.pm
Код: Выделить всё
sub storage_opened {
my ($self, $args) = @_;
$storage{items} = $args->{items};
$storage{items_max} = $args->{items_max};
$ai_v{temp}{storage_opened} = 1;
if (!$storage{opened}) {
$storage{opened} = 1;
message T("Storage opened.\n"), "storage";
Plugins::callHook('packet_storage_open');
}
}
правда как убить регистр - хз
Хотя это не решит проблемы.. нужно переписать не при вводе, а при поиске... тут вроде б:
Код: Выделить всё
sub findKeyString {
my $r_hash = shift;
my $match = shift;
my $ID = shift;
foreach (keys %{$r_hash}) {
if (ref($r_hash->{$_}) && $r_hash->{$_}{$match} eq $ID) {
return $_;
}
}
}
Добавлено: Чт мар 20, 2008 8:47 am
Click

сегодня пороюся
Добавлено: Чт мар 20, 2008 12:19 pm
Click
не то (
Добавлено спустя 17 минут 36 секунд:
lc убирает регистр
вот так байауто реализовано и работает с разными регистрами
Код: Выделить всё
# scan the entire items.txt file (this is slow)
foreach (keys %items_lut) {
if (lc($items_lut{$_}) eq lc($config{"buyAuto_$args->{index}"})) {
$args->{itemID} = $_;
}
}
а вот так гетауто и не работает))
Код: Выделить всё
my %item;
my $itemName = $config{"getAuto_$args->{index}"};
if (!$itemName) {
$args->{index}++;
next;
}
my $invItem = $char->inventory->getByName($itemName);
$item{name} = $itemName;
$item{inventory}{index} = $invItem ? $invItem->{invIndex} : undef;
$item{inventory}{amount} = $invItem ? $invItem->{amount} : 0;
$item{storage}{index} = findKeyString(\%storage, "name", $item{name});
$item{storage}{amount} = ($item{storage}{index} ne "")? $storage{$item{storage}{index}}{amount} : 0;
$item{max_amount} = $config{"getAuto_$args->{index}"."_maxAmount"};
$item{amount_needed} = $item{max_amount} - $item{inventory}{amount};
# Calculate the amount to get
if ($item{amount_needed} > 0) {
$item{amount_get} = ($item{storage}{amount} >= $item{amount_needed})? $item{amount_needed} : $item{storage}{amount};
}
Добавлено спустя 36 минут 35 секунд:
вот так вот всё пашет
Код: Выделить всё
my $invItem = $char->inventory->getByName($itemName);
$item{name} = $itemName;
+ foreach (keys %items_lut) {
+ if (lc($items_lut{$_}) eq lc($config{"getAuto_$args->{index}"})) {
+ $item{name} = $items_lut{$_};
+ }
+ }
$item{inventory}{index} = $invItem ? $invItem->{invIndex} : undef;
$item{inventory}{amount} = $invItem ? $invItem->{amount} : 0;
Добавлено спустя 56 секунд:
это починили гетауто
Добавлено спустя 19 минут 18 секунд:
эх скока зенег ушло на тест
Добавлено: Чт мар 20, 2008 7:08 pm
Click
6268 integrated doCommand plugin into openkore source
6270 пофиксил гетауто
[mod="piroJOKE"]дуКомманд "в ядре" - ура![/mod]
Добавлено: Вс апр 13, 2008 7:16 pm
piroJOKE
Нужно проверить работу блоков с настройками по умолчанию. Основание:
andrey1234 писал(а):Stack писал(а):что заработало то?
вот так написал? :
useSelf_item Red Potion {
hp < 30%
inLockOnly 0
notWhileSitting 1
notInTown 1
timeout
disabled 0
inInventory
manualAI 0
}
Оооо спасибо....Теперь кушает поушены нормально)
Теперь объясните чем этот конфиг отличается вот от этого:
useSelf_item Red Potion {
hp < 30%
}
??????
Да, там нет таймаута, но всё равно через секунду-другую Кора должна была успокоиццо, однако этого по словам афтара не просходило, жрало поушены без остановки.
Добавлено: Вс апр 20, 2008 3:54 pm
DInvalid
Баг с использованием в блоке опций whenPermitSkill и whenNotPermitSkill
в Misc.pm
Код: Выделить всё
if ($config{$prefix."_whenPermitSkill"}) {
return 0 unless $char->{permitSkill} &&
$char->{permitSkill}->name eq $config{$prefix."_whenPermitSkill"};
}
if ($config{$prefix."_whenNotPermitSkill"}) {
return 0 if $char->{permitSkill} &&
$char->{permitSkill}->name eq $config{$prefix."_whenNotPermitSkill"};
}
а должно быть
Код: Выделить всё
if ($config{$prefix."_whenPermitSkill"}) {
return 0 unless $char->{permitSkill} &&
$char->{permitSkill}->getName() eq $config{$prefix."_whenPermitSkill"};
}
if ($config{$prefix."_whenNotPermitSkill"}) {
return 0 if $char->{permitSkill} &&
$char->{permitSkill}->getName() eq $config{$prefix."_whenNotPermitSkill"};
}
Добавлено: Вс апр 20, 2008 5:51 pm
piroJOKE
DInvalid, флуд: я когда такое вижу, впадаю в отчаяние. Ведь это ярко показывает, что ОК уже никто серьёзно не занимается.

Добавлено: Ср апр 23, 2008 1:13 pm
Click
DInvalid писал(а):Баг с использованием в блоке опций whenPermitSkill и whenNotPermitSkill
в Misc.pm
svn 6332
Добавлено: Вт май 27, 2008 10:57 pm
DInvalid
Если в командной строке написать i desc то кора умирает в ужасных муках.
Добавлено: Вт май 27, 2008 11:35 pm
Click
исправляется так
commands.pm
- } elsif ($arg1 eq "desc") {
+ } elsif ($arg1 eq "desc" && $arg2 ne "") {
Добавлено: Ср июн 04, 2008 10:25 pm
DInvalid
баг это или фича я хз.
Ситуация: бот решил атаковать моба но еще не атаковал (ждет условия блока скиллов, идет к нему, и т.п.),
если в этот момент на моба кто-либо скастует заклинание не наносящее урон (!), то он откажется от атаки, вякнув про киллстил.
При этом не важно, находится ли кастующий с нами в пати или в списке танков; распространенный случай - каст пристом Lex Aeterna.
Это происходит из за логики проверки на КС - если по мобу не нанесено дамага/он сам не нанес дамага, проверяется количество игроков, скастовавших что либо на моба:
Код: Выделить всё
&& scalar(keys %{$monster->{castOnByPlayer}}) == 0
естественно, если наш собственный сопартиец-прист кастанул на него
Lex Aeterna или еще что то, то условие не срабатывает и моб считается "нечистым", и атака отменяется.
Я вижу 2 способа это исправить:
1) вообще выкинуть эту проверку, так как то что на моба кто то кинул аги даун, атерну, молчанку не означает что мы его не можем бить, вед так? А для особых случаев есть режим agressiveAntiKS
2) вместо этой элементарной проверки перебирать хэш %{$monster->{castOnByPlayer}} и сравнивать ID кастовавших со списком пати/танкерслист и в случае если найден хотя бы 1 не входящий в эти списки игрок, считать что моб "нечистый", иначе - что "чистый".
Misc.pm
Код: Выделить всё
###
my $allowed = 1;
if (scalar(keys %{$monster->{castOnByPlayer}}) > 0) {
foreach (keys %{$monster->{castOnByPlayer}}) {
my $ID1=$_;
my $source = Actor::get($_);
warning TF("Player %s is casting on mob %d times\n",$source->name,$monster->{castOnByPlayer}{$_});
if ( existsInList($config{tankersList}, $source->{name}) ||
($char->{party} && %{$char->{party}} && $char->{party}{users}{$ID1} && %{$char->{party}{users}{$ID1}})
) {
warning TF("And it is a party member\n");
}
else
{
warning TF("And it is not a party member");
$allowed = 0;
}
}
}
###
# If monster hasn't been attacked by other players
if (scalar(keys %{$monster->{missedFromPlayer}}) == 0
&& scalar(keys %{$monster->{dmgFromPlayer}}) == 0
### && scalar(keys %{$monster->{castOnByPlayer}}) == 0
&& $allowed == 1
Добавлено: Чт июн 05, 2008 10:50 am
Click
проверку я думаю стоит оставить, так как не охото атаковать моба на которого кинули аги блес и тп, а так же не правильно атаковать моба на которого кинули провок.
проверку на пати нужно добавить, но эти сообщения думаю стоит убрать, так как про касты на мобов сообщения и так выводятся, и если килстил, то сообщение тоже выводиться, просто много спама будет.
ок?
Добавлено: Чт июн 05, 2008 11:10 am
DInvalid
Click писал(а):проверку я думаю стоит оставить, так как не охото атаковать моба на которого кинули аги блес и тп, а так же не правильно атаковать моба на которого кинули провок.
проверку на пати нужно добавить, но эти сообщения думаю стоит убрать, так как про касты на мобов сообщения и так выводятся, и если килстил, то сообщение тоже выводиться, просто много спама будет.
ок?
Ммм, это мой сырой код с отладкой, сообщения естесвенно выкинуть надо, и может проверку оптимизировать как нить? Делано на скорую руку.
Насчет провока - после провока моб начинает идти к провокнувшему и атачить, это там проверяется, блесс и аги ну хмм... просто получается что бы отнять моба у нас достаточно на него кинуть терну или еще что то )
Код: Выделить всё
--- Misc.pm Mon Mar 17 12:59:30 2008
+++ misc.my Thu Jun 05 12:40:50 2008
@@ -1329,8 +1329,29 @@
}
+
+ ###
+ my $allowed = 1;
+ if (scalar(keys %{$monster->{castOnByPlayer}}) > 0)
+ {
+ foreach (keys %{$monster->{castOnByPlayer}})
+ {
+ my $ID1=$_;
+ my $source = Actor::get($_);
+ unless ( existsInList($config{tankersList}, $source->{name}) ||
+ ($char->{party} && %{$char->{party}} && $char->{party}{users}{$ID1} && %{$char->{party}{users}{$ID1}}))
+ {
+ $allowed = 0;
+ last;
+ }
+ }
+ }
+ ###
+
# If monster hasn't been attacked by other players
if (scalar(keys %{$monster->{missedFromPlayer}}) == 0
&& scalar(keys %{$monster->{dmgFromPlayer}}) == 0
- && scalar(keys %{$monster->{castOnByPlayer}}) == 0
+### && scalar(keys %{$monster->{castOnByPlayer}}) == 0
+ && $allowed
+
# and it hasn't attacked any other player
Добавлено: Чт июн 05, 2008 1:00 pm
Click
комминтим?