xConf.pl - меняем на ходу mon_control/pickupitems/items
Модератор: 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"}
}
- 4epT
- macro-маньячина
- Сообщения: 2792
- Зарегистрирован: Чт дек 21, 2006 1:23 pm
- Сервер RO:: 4game
- Discord: ya4ept#8494
- Контактная информация:
ага вроде всё супер, тока нужно так прописать:
иначе не выводит $var из цикла
Добавлено спустя 17 минут 17 секунд:
такс а как сделать так, чтобы он ещё и по ключам искал? "each %monsters_lut" тут вроде как не катит, создавать второй цикл (keys %monsters_lut)?
Код: Выделить всё
foreach $val (values %monsters_lut) {
$var = $val;
last if ($found = (lc($val) eq lc($mob)));
}
message "Monster $var found\n";
Добавлено спустя 17 минут 17 секунд:
такс а как сделать так, чтобы он ещё и по ключам искал? "each %monsters_lut" тут вроде как не катит, создавать второй цикл (keys %monsters_lut)?
Да что то я косячу.4epT писал(а):Добавлено спустя 17 минут 17 секунд:
такс а как сделать так, чтобы он ещё и по ключам искал? "each %monsters_lut" тут вроде как не катит, создавать второй цикл (keys %monsters_lut)?
А что значит по ключам искать? Если проверить есть ли моб с таким ID то тут цикл не нужен даже -
if (%monsters_lut{$ID}) { ... }
- DeniZka
- Разработчик
- Сообщения: 410
- Зарегистрирован: Ср ноя 15, 2006 6:36 pm
- Сервер RO:: rRO AsgardRO
- Откуда: Mos-Cow Citadel
- Контактная информация:
Глянул я тут плагин изнутри и немного ужоснулся. =) Lims молодец, идея хорошая реализовывать даже взялся, а вот реализовал как-то не до хорошо.
Замутил оч. простую но оч. работоспособную версию.
Замутил оч. простую но оч. работоспособную версию.
Код: Выделить всё
# 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 Ср янв 23, 2008 11:04 am, всего редактировалось 4 раза.
- DeniZka
- Разработчик
- Сообщения: 410
- Зарегистрирован: Ср ноя 15, 2006 6:36 pm
- Сервер RO:: rRO AsgardRO
- Откуда: Mos-Cow Citadel
- Контактная информация:
Click
Ну я начал усовершенствовать код Limsa, с укарачивания всей структуры плагина... А в итоге камня на камне не оставил. Сравни исходники.
Работоспособность плагина Limsa так и не проверял, сомневаюсь что работает он корректно. А у меня недостающие значения конфигов дописываются, существующие значения изменяются. Простенько, как и хотел ПЖ.
Ну я начал усовершенствовать код Limsa, с укарачивания всей структуры плагина... А в итоге камня на камне не оставил. Сравни исходники.
Работоспособность плагина Limsa так и не проверял, сомневаюсь что работает он корректно. А у меня недостающие значения конфигов дописываются, существующие значения изменяются. Простенько, как и хотел ПЖ.
Я конечно извиняюсь, ноDeniZka писал(а):Click
Ну я начал усовершенствовать код Limsa, с укарачивания всей структуры плагина... А в итоге камня на камне не оставил. Сравни исходники.
Работоспособность плагина Limsa так и не проверял, сомневаюсь что работает он корректно. А у меня недостающие значения конфигов дописываются, существующие значения изменяются. Простенько, как и хотел ПЖ.
- не вижу никаких усовершенствований
- твой плагин не проверял, но сомневаюсь что он работает
Проверяем плаг DeniZka:DeniZka писал(а): DInvalid
Ок? Твоя очередь.
Вот начальное состояние mon_control
Вводим:##### 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
mconf Maya 200
mconf Lord 200
mconf Orc 200
Получаем:
##### 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