
Добавлено спустя 46 секунд:
кстате его сюда вывалить, иль красиво, да с описанием на новую страничку?
Модератор: 4epT
Да... точно, итератор не сбрасывается... сорри.4epT писал(а):Люди, помогите. Есть у нас такая вот процедурка:
Код: Выделить всё
sub fi {
my (undef, $mob) = @_;
my $found = 0;
foreach $val (values %monsters_lut) {
last if ($found = (lc($val) eq lc($mob)));
}
if ($found) {
message "Monster $val found\n";
}
else { message "Monster '$mob' is not found\n"}
}
Код: Выделить всё
foreach $val (values %monsters_lut) {
$var = $val;
last if ($found = (lc($val) eq lc($mob)));
}
message "Monster $var found\n";
Да что то я косячу.4epT писал(а):Добавлено спустя 17 минут 17 секунд:
такс а как сделать так, чтобы он ещё и по ключам искал? "each %monsters_lut" тут вроде как не катит, создавать второй цикл (keys %monsters_lut)?
Код: Выделить всё
# xConf plugin by DeniZka
# Based on Lims idea
# Last changes 23.01.2008
# This source code is licensed under the
# GNU General Public License, Version 2.
# See http://www.gnu.org/licenses/gpl.html
package xConf;
use Log qw(message error);
Plugins::register('xConf', 'commands for change monControls, etc', \&onUnload);
my $ID = Commands::register(
['iconf', 'items_control edit', \&xConf],
['pconf', 'pickupitems edit', \&xConf],
['mconf', 'mon_control edit', \&xConf]
);
sub onUnload {
Commands::unregister($ID);
message 'xConf plugin unloaded\n';
}
sub xConf {
my ($cmd, $args) = @_;
my ($key, $value) = split(/\s(-?\d.*)/, $args, 2);
my ($conff, $subj);
if($cmd eq 'pconf'){
$conff = 'pickupitems.txt';
$subj = 'item|all [flag]'
} elsif ($cmd eq 'mconf'){
$conff = 'mon_control.txt';
$subj = 'monster [attack teleport search skillcancel lv joblv hp sp weight]'
} elsif ($cmd eq 'iconf'){
$conff = 'items_control.txt';
$subj = 'item|all [minimum auto-store auto-sell put_in_cart get_from_cart]'
}
if(!$key){
error "Usage: $cmd <$subj>\n";
return
}
my @folders = Settings::getControlFolders();
open(F, "< $folders[0]/$conff");
my @conff;
{ local($/);
@conff = split(/\n/, <F>);
}
close F;
if ($value){
for (my $i = 0; $i <= $#conff; $i++) {
last if ($conff[$i] =~ s/^$key -?\d.*/$key $value/i);
if ($i == $#conff){ push(@conff, "$key $value") }
}
} else {
for (my $i = 0; $i <= $#conff; $i++) {
if ($conff[$i] =~ /^$key -?\d.*/i){
message "$key setted in $conff as\n$conff[$i]\n";
return
}
}
message "$key is not setted in $conff\n";
return
}
open(F, "> $folders[0]/$conff");
print F join("\n", @conff);
close F;
Commands::run("reload $conff");
}
Я конечно извиняюсь, ноDeniZka писал(а):Click
Ну я начал усовершенствовать код Limsa, с укарачивания всей структуры плагина... А в итоге камня на камне не оставил. Сравни исходники.
Работоспособность плагина Limsa так и не проверял, сомневаюсь что работает он корректно. А у меня недостающие значения конфигов дописываются, существующие значения изменяются. Простенько, как и хотел ПЖ.
Проверяем плаг DeniZka:DeniZka писал(а): DInvalid
Ок? Твоя очередь.
Вводим:##### MVPs and Dangerous Monsters #####
Amon Ra 0 1 0
Arc Angeling 0 1 0
Baphomet 0 1 0
Bacsojin 0 1 0
Dark Illusion 0 1 0
Dark Lord 0 1 0
Detale 0 1 0
Doppelganger 0 1 0
Dracula 0 1 0
Drake 0 1 0
Eddga 0 1 0
Evil Snake Lord 0 1 0
Garm 0 1 0
General Ygnizem 0 1 0
Golden Thief Bug 0 2 0
Incantation Samurai 0 1 0
Lady Tany 0 1 0
Lord of Death 0 1 0
Maya Purple 0 1 0
Maya 0 1 0
Mistress 0 1 0
Moonlight Flower 0 1 0
Mutant Dragonoid 0 1 0
Orc Hero 0 1 0
Orc Lord 0 1 0
Osiris 0 1 0
Pharaoh 0 1 0
Phreeoni 0 1 0
RSX 0806 0 1 0
Stormy Knight 0 1 0
Tao Gunka 0 1 0
Thanatos 0 1 0
Turtle General 0 1 0
Vesper 0 1 0
##### MVPs and Dangerous Monsters #####
Amon Ra 0 1 0
Arc Angeling 0 1 0
Baphomet 0 1 0
Bacsojin 0 1 0
Dark Illusion 0 1 0
Dark Lord 0 1 0
Detale 0 1 0
Doppelganger 0 1 0
Dracula 0 1 0
Drake 0 1 0
Eddga 0 1 0
Evil Snake Lord 0 1 0
Garm 0 1 0
General Ygnizem 0 1 0
Golden Thief Bug 0 2 0
Incantation Samurai 0 1 0
Lady Tany 0 1 0
Lord 200
Maya 200
Maya 0 1 0
Mistress 0 1 0
Moonlight Flower 0 1 0
Mutant Dragonoid 0 1 0
Orc 200
Orc Lord 0 1 0
Osiris 0 1 0
Pharaoh 0 1 0
Phreeoni 0 1 0
RSX 0806 0 1 0
Stormy Knight 0 1 0
Tao Gunka 0 1 0
Thanatos 0 1 0
Turtle General 0 1 0
Vesper 0 1 0