Страница 5 из 7

Добавлено: Вс янв 20, 2008 7:47 am
4epT
плаг готов остался тока марафет +то что выше написано :Yahoo!:

Добавлено спустя 46 секунд:

кстате его сюда вывалить, иль красиво, да с описанием на новую страничку?

Добавлено: Вс янв 20, 2008 11:17 am
DInvalid
4epT писал(а):Люди, помогите. Есть у нас такая вот процедурка: :o
Да... точно, итератор не сбрасывается... сорри.

можно сделать так:

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

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"}
}

Добавлено: Вс янв 20, 2008 4:03 pm
piroJOKE
4epT писал(а):кстате его сюда вывалить, иль красиво, да с описанием на новую страничку?
Сюда. На эту тему уже есть ссылки из других мест.

Добавлено: Вс янв 20, 2008 4:45 pm
4epT
ага вроде всё супер, тока нужно так прописать:

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

foreach $val (values %monsters_lut) {
   $var = $val;
   last if ($found = (lc($val) eq lc($mob))); 
}
message "Monster $var found\n";
иначе не выводит $var из цикла

Добавлено спустя 17 минут 17 секунд:

такс а как сделать так, чтобы он ещё и по ключам искал? "each %monsters_lut" тут вроде как не катит, создавать второй цикл (keys %monsters_lut)?

Добавлено: Вс янв 20, 2008 10:53 pm
DInvalid
4epT писал(а):Добавлено спустя 17 минут 17 секунд:

такс а как сделать так, чтобы он ещё и по ключам искал? "each %monsters_lut" тут вроде как не катит, создавать второй цикл (keys %monsters_lut)?
Да что то я косячу.
А что значит по ключам искать? Если проверить есть ли моб с таким ID то тут цикл не нужен даже -
if (%monsters_lut{$ID}) { ... }

Добавлено: Пн янв 21, 2008 6:33 pm
DeniZka
Глянул я тут плагин изнутри и немного ужоснулся. =) 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");
}

Добавлено: Пн янв 21, 2008 6:46 pm
Lims
DeniZka
Угу коряво... просто это мой первый опыт "программирования" на perl

Добавлено: Пн янв 21, 2008 7:02 pm
DeniZka
Lims, Я так и понял.
Молодец, я это одобрямс, и не я один. Только зря ты бросил на полделе =)

Добавлено: Пн янв 21, 2008 7:09 pm
Lims
DeniZka
всегда все на полделе бросаю.
хотя мне и моего плагина хватало(даж ни разу не пользовался. руки не доходили), может если бы пользовался, то решился бы усовершенствовать.

Добавлено: Вт янв 22, 2008 5:53 am
Click
DeniZka
чего ты там усовершенствовал?

Добавлено: Вт янв 22, 2008 6:56 am
DeniZka
Click
Ну я начал усовершенствовать код Limsa, с укарачивания всей структуры плагина... А в итоге камня на камне не оставил. Сравни исходники.
Работоспособность плагина Limsa так и не проверял, сомневаюсь что работает он корректно. А у меня недостающие значения конфигов дописываются, существующие значения изменяются. Простенько, как и хотел ПЖ.

Добавлено: Вт янв 22, 2008 8:59 pm
DInvalid
DeniZka писал(а):Click
Ну я начал усовершенствовать код Limsa, с укарачивания всей структуры плагина... А в итоге камня на камне не оставил. Сравни исходники.
Работоспособность плагина Limsa так и не проверял, сомневаюсь что работает он корректно. А у меня недостающие значения конфигов дописываются, существующие значения изменяются. Простенько, как и хотел ПЖ.
Я конечно извиняюсь, но

- не вижу никаких усовершенствований
- твой плагин не проверял, но сомневаюсь что он работает

Добавлено: Вт янв 22, 2008 9:57 pm
DeniZka
Проверем плаг лимса.
Есть в mon_control такие как
Maya и Maya Purple
Пишем mconf Maya Purple 1 1 1
получаем: Maya вдруг становится Maya Purple и получает такие же настройки. и наоборот
пишем mconf Maya и Maya Purple становится Maya.


DInvalid
Ок? Твоя очередь.

Добавлено: Вт янв 22, 2008 10:19 pm
DInvalid
DeniZka писал(а): DInvalid
Ок? Твоя очередь.
Проверяем плаг DeniZka:

Вот начальное состояние 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

Добавлено: Вт янв 22, 2008 11:04 pm
DeniZka
:lol: :lol: :lol:

Добавлено спустя 32 минуты 2 секунды:

ОК, исправил