PDA

Просмотр полной версии : mmc: nosave() все сохраняет.


diver
18.05.2005, 00:00
Прям не знаю что делать. Все переменные сохраняются. Сначала загружается конфиг, после все что надо выполняется, а потом все переменные снова выставляются в сохраненные значения. nosave не помогает. Может я его не так пользую?

nosave( $U::MyHP, $U::AttackerDam, $U::StatusStr="", $U::sogr='Нет');


И все сохраняет. Ужас просто. Ни на что не ругается. Взял и сохранил. Убиться можно. Как ты их в конфиге не изменяй, после загрузки и выполнения всех процедур один фиг выставляет сохраненные значения. Бррр...

Ladon
18.05.2005, 10:32
делай как я
конфиг состоит из кусков
alias.txt
trig.txt
add_prof.txt
var.txt
misc.txt

запускается батник который эти куски собирает в конфиг и вызывает ммс
что бы там ммс ненасохранял - все потрется после перезапуска Ж)

d_blacky
18.05.2005, 13:59
я запускаю mmc с ключом -r.
отдельные модули делаю в файлах .pm и подключаю через use в .ini файле.

diver
20.05.2005, 15:59
Даааа, блин... =)

diver
20.05.2005, 16:00
=) не ну слов нет =)

diver
20.05.2005, 16:01
делай как я
запускается батник который эти куски собирает в конфиг и вызывает ммс
что бы там ммс ненасохранял - все потрется после перезапуска Ж)

То есть тебе это победить не удалось?

d_blacky
20.05.2005, 17:35
Ну че такое nosave, это:

sub nosave(@) {
for my $f (@_) {
$U::_nosave_vars{$f}=1;
}
}

как видишь хеш куда заносится имя переменной и значение "1", чтобы в последствии можно было писать "!$U::_nosave_vars{$_}".
Позжее этот хеш юзается только в:

sub save_vars {
no strict 'refs';
join("\n",(map { join("\t",$_,${"U::$_"}) } sort { $a cmp $b } grep { defined(${"U::$_"}) && !$U::_nosave_vars{$_} && !$::bad_vars{$_} } keys %U::),keys %U::_nosave_vars);
}

которое в последствии пихается в .ini файл строчкой:

set_section_handler("vars",\&load_vars,\&save_vars);

Вообщем если ты по-детально то что я во 2-ой цитате заквотил разберешь то я думаю найдешь в чем тут трабла, мне пока что не до этого.
Т.к. просто глючить тут нечему - либо sub save_vars, либо в $U::_nosave_vars не правильно имена переменных заносятся.