PDA

Просмотр полной версии : Вопрос про триггера в жабе


doc
31.12.2004, 18:44
Хотелось бы спросить следующее
У меня в жабе есть переменные
$weap - прайм
$weapoff - офф
Как грамотно написать триггер чтобы при дизарме оффа выполнялось поднятие с земли и взятие оффа, при дизарме прайма - аналогично для прайма
ПРи этом значения данных переменных -1 слово, например топор или нож
а при дизарме приходит строка "выбил тяжелый боевой топор из Ваших рук"
Помогите плз.
Best Regards

Зубран
31.12.2004, 18:54
#action {^%0 ловко выбил%1 %2 из Ваших рук.} {взять $prime; взять $off; воор $prime; дер $off} {5} {default}

Где $praim - прайм, а $off - офф.

Ladon
02.01.2005, 13:22
вставляешь в ммс.ини
#хеш массив задающий падежи праймов
my %weap = ('мечем' => 'меч',
'ножом' => 'нож');

делаешь такой триг
#триг прописывающий прайм когда им вооружаешся
trig {my $item=$1;
if (defined $weap{$item}) {$U:: prime=$weap{$item}}} '^Вы вооружились (.*)\.', '1000nf:autoweap';

#триг поднимающий и вооружающий прайм
trig { my $item=$1;
if ($item eq $prime) {sendl("взя $prime");sendl("воор $prime")};
} 'ловко выбил.? (.*) из Ваших рук\.', '1000nf:NoDisarm';

ну и для оффа почти аналогично.

nigga
02.01.2005, 15:58
ммц такой ужас =(

doc
02.01.2005, 18:23
#action {^%0 ловко выбил%1 %2 из Ваших рук.} {взять $prime; взять $off; воор $prime; дер $off} {5} {default}

Где $praim - прайм, а $off - офф.
Триг хороший и у меня прописан такой же но мне не нравится что проверяется оба оружия а надо чтобы только то которое сдизармили
Хотел на самом деле увидеть ретелл на мой вопрос с использованием
регулярных выражений (regexp)

d_blacky
02.01.2005, 18:31
mmc самый лучший клиент.
В jmc можно написать практически все(!) что можно написать в mmc, но это стоит таких усилий в конечном итоге это может выглядеть так криво, что лучше учите perl и садитесь за mmc.
p.s. 2Ладон пара замечаний:
1. $U::prime=$weap{$item} и "$item eq $prime -- разные переменные.
2. да и комплект тригов вышел "одноразовый" (типа сменил ножички - и придется лезть в *.ini менять названия переменных). (на худой конец выводилась бы мессага, в случае если в хеше %weap не найден ключ $item)

p.p.s. свои конфиги к чарам я не рассылаю -- просьба не спамить. (а то когда смотришь на то, как копируются кусочки из чьих-то конфигов и из этого пытаются склеить что-то дельное приходишь в ужас :).

Ladon
02.01.2005, 21:11
[QUOTE=d_blacky]mmc самый лучший клиент.
В jmc можно написать практически все(!) что можно написать в mmc, но это стоит таких усилий в конечном итоге это может выглядеть так криво, что лучше учите perl и садитесь за mmc.
p.s. 2Ладон пара замечаний:
1. $U::prime=$weap{$item} и "$item eq $prime -- разные переменные.
[QUOTE]
ну писал на коленке...

[QUOTE=d_blacky]
2. да и комплект тригов вышел "одноразовый" (типа сменил ножички - и придется лезть в *.ini менять названия переменных). (на худой конец выводилась бы мессага, в случае если в хеше %weap не найден ключ $item)
[QUOTE]


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

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

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

А вообще правильный триггер на дизарм -- это сложная задача.
Вдруг у тебя 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
-- всем достать в хорошем битрейде и слушать до просветления.

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


когда тьма тригер пофиг, всеравно взять не сможешь Ж)

d_blacky
03.01.2005, 14:51
Ага, как не совершенен наш мир :(

doc
05.01.2005, 00:53
Ну ..дец. Я все понимаю. И я не ньюб. Но ,господа, я задумываюсь о Вашем национальном происхождени , когда я прошу триг для жабы, а Вы мне говорите триг для ммс и обсуждаете его достоинства и недостатки((. А в итоге вывод я пользуюсь таким же тригом который написал Зубран+ хайлайт, но проблемы это не решает. В принципе все хорошо, но у меня dial up и поэтому проверка сразу двух условий дает лаг, + еще лаги бывают от умений допустим. И про то что я хотел увидеть здесь reg exp тоже как-то мимо прошло,правда Блэки предложил, но опять же для ммс
BR

Tirfa
05.01.2005, 03:31
Мдаа, топик про триггера в jmc а вы тут свой mmc пропагандируете ;)
Doc а не пофигу ли тебе какой именно випон выбили? Лишняя строчка мешает? Нефик париться нуна хватать все пока моб не сделал это быстрее тебя ж)

saracen
05.01.2005, 10:49
так.. к слову.. regexp он и в африке regexp вроде..
какая в ... разница какой клиент? Идею дали, че бы самому-то мозг не напрячь?

А то возникает желание написать чтонибудь из разряда: /action {выбил} {конец}

и кстати, этож какой триггер надо написать, чтобы проверка двух условий давала ощутимый лаг?

Ележор
05.01.2005, 13:02
Народ, ну будьте вы проще, а? :) Вон Зубран второй же репликой дал, по-моему, самый надежный и быстрый триггер. И пофиг, что он всегда пытается оба оружия подобрать -- жалко вам, что ли? Еще добавить альясы на задание переменных для прайма и оффа и не забывать их обновлять при смене оружия. Все, проблема решена.

Polud
05.01.2005, 16:13
....
Еще добавить альясы на задание переменных для прайма и оффа и не забывать их обновлять при смене оружия. Все, проблема решена.

У меня, например, чтобы не забывалось, наиболее часто употребляемые сокращения команд сделаны алиасами %)

#al {дер}{#var off %0;держать %0}
#al {воо}{#var prime %0;вооруж %0}

$)

Никомир
05.01.2005, 18:42
+ еще лаги бывают от умений допустим.
Хочу триггер али алиас на хил игнорящий лаги от умений :) Баша оглуша молота там... И желательно холда! :)

Типа сбашили тебя, 2 раунда в лаге не лежишь а сразу встаешь и гх.

А то ~ лаг не убирает... только буфер того, что после лага случится чистит..

Ladon
05.01.2005, 22:50
Хочу триггер али алиас на хил игнорящий лаги от умений :) Баша оглуша молота там... И желательно холда! :)

Типа сбашили тебя, 2 раунда в лаге не лежишь а сразу встаешь и гх.

А то ~ лаг не убирает... только буфер того, что после лага случится чистит..


а, ну это просто, надо всего то стать 31м левелом ж)
тогда можно и молотить каждый раунд, или гневать скока влезет...

Зубран
06.01.2005, 14:10
Я всю жизнь с диал-апа играю, и никогда на связь не жаловался:). И уж лишнего лага от посылки 4 строк вместо 2 не будет, это точно. Хотя иногда надежней чтоб кто-нить стоял рядом, подбирал твой ствол и давал его тебе, пока это не сделал моб:). А то иначе прохождение япы или кащи на двоих превращается в интересную игру моб дизармит тебя-подбирает ствол-ты дизармиш его-подбираеш ствол :).

doc
07.01.2005, 00:18
Я всю жизнь с диал-апа играю, и никогда на связь не жаловался:). И уж лишнего лага от посылки 4 строк вместо 2 не будет, это точно.
ТОже всегда игрраю диалапом но почему-то ,несмотря на то что стоит такой же триг как у тебя подбирает либо, допустим, Дивинт у которого триги на подбирание чужого оружия и давания его владельцу, либо моб-
я подбираю лишь в случае, если не трогает моб. Вот я и поставил задачу послыать 2 строки а не 4. Регеспы писал но получается лажа - строка всегда соответвует шаблону :( ну для сранения у меня на мопеде пинг 100-800( в среднем 200, мопеды они тоже разные)

Дивинт
07.01.2005, 07:48
ТОже всегда игрраю диалапом но почему-то ,несмотря на то что стоит такой же триг как у тебя подбирает либо, допустим, Дивинт у которого триги на подбирание чужого оружия и давания его владельцу, либо моб-
я подбираю лишь в случае, если не трогает моб. Вот я и поставил задачу послыать 2 строки а не 4. Регеспы писал но получается лажа - строка всегда соответвует шаблону :( ну для сранения у меня на мопеде пинг 100-800( в среднем 200, мопеды они тоже разные)

моб подбирает быстрее тебя, потому что ты в лаге после успешно применненного умения, а моб нет. я успеваю отдать оружие владельцу, потому что я не в лаге у меня просто стоит триггер, который автоматом биндит клавишу на подбор дизармленных випонов и возвращение их хозяину, а уж нажимать или не нажимать кнопку решать мне )

judge
07.01.2005, 08:07
doc, ты не прав насчет модема, 4 строчки если даже и пройдут с задержкой, все равно их будет обрабатывать сервер после лага от дизарма, а пока длится лаг, ты сможешь строчек 10 послать точно...