Показать сообщение отдельно
Старый 03.01.2005, 05:14   #8
d_blacky
The God of Void
 
Регистрация: 05.03.2004
Сообщений: 217
По умолчанию RE: Вопрос про триггера в жабе

Цитата:
ну писал на коленке...
А ньюбы потом будут копировать и удивляться :)

Цитата:
ты не учитываешь что можно один раз забить все праймы-офф и забыть про это дело... опять же можно прикрутить к этому делу базу в файле, и сделать алиасы на добавление новых оружий...
я же пример написал, дорабатывать его можно довольно сильно.
А вообще правильный триггер на дизарм -- это сложная задача.
Вдруг у тебя 2 одинаковых оружия. Вдруг место действия - комната без света и тому подобные сложности.

Я предолжил бы следующую идею:

2 трига определяющих названия прайма и оффа по команде "экип":
Код:
trig {
    if (цвет 1ого слова пришедшей строки светло серый) {
       $off_weapon=$1;
    }
} '^<в левой руке>\s+([\w\-]+\s?[\w\.]+?)\s+<.+>$', "nf:get_off";
trig {
    if (цвет 1ого слова пришедшей строки светло серый) {
        $praim_weapon=$1;
    }
} '^<в правой руке>\s+([\w\-]+\s?[\w\.]+?)\s+<.+>$', "nf:get_praim";
Затем триг:
Код:
trig {
    if (цвет пришедшей строки светло серый) {
        get_and_equip_disarm_weapon(vinpad_to_impad($1))
} '^[\w\-\.\,]+? ловко выбил.? (.+?) из Ваших рук\.$', "nf:weapons_are_disarmed";
краткая идея функций:
sub vinpad_to_impad() -- в соответствии с правилами русского языка переводит название оружия (состоящего как правило из 1 существительного и 1-2 прилагательных в именительный падеж)
sub get_and_equip_disarm_weapon() -- поднимает с земли оружие, проверяет пришедшую строку на эквивалентность относительно $off_weapon и $prime_weapon, затем заменяет пробелы в пришедшем слове точками (получается: "острое.шило", "посох.странствий" и пытается ими вооружиться/взять в офф)
(как вариант - можно на этапе sub vinpad_to_impad() оставить лишь существительное (это не настолько сложно определить и в большинстве случаев работает) и затем его экипировывать. (правда в этом случае будут траблы если в прайме какой-нибудь "титановый кинжал", оффе "стальной кинжал" а на вход пришла строка "кинжал".

Правда выше приведенный триггер не дает гарантии когда мы имеем дело с кривыми объектами (не правильные падежи, не те альясы). + Самое смачное видеть фразу "Кто-то ловко выбил что-то из Ваших рук" -- тьма решает.

p.s. http://www.mp3search.ru/m3u.html?id=122031
-- всем достать в хорошем битрейде и слушать до просветления.
d_blacky вне форума   Ответить с цитированием