Многопользовательский мир АЛАДОН



Страницы: (6) « Первая ... 4 5 [6]   ( Перейти к первому непрочитанному сообщению ) Reply to this topicStart new topic

> Новый JMC, Есть еще энтузиасты )
Колко
Отправлено: Jan 12 2018, 15:41
Quote Post


Мидл
***

Группа: Участники
Сообщений: 233
Пользователь №: 2761
Регистрация: 11-February 11



Сделать возможность поставить тикер меньше чем на 10 секунд. Удобно при каче - поставил 3-ех секундный тикер и по срабатыванию тикера выпад и ходишь чаек попиваешь.


--------------------
Шрайк
PMEmail Poster
Top
Фелей
Отправлено: Jan 13 2018, 16:12
Quote Post


Ньюб
*

Группа: Участники
Сообщений: 50
Пользователь №: 2167
Регистрация: 26-February 09



Если необходимо выполнять некоторое действие просто с некоторым периодом, то все уже реализовано. Для этого можно использовать циклы. Ниже приведен отрывок справки Nerevar, с полным текстом которой можно ознакомится по адресу http://nerevar.github.io/jmc/pages/command/
CODE

#loop

Syntax:
#<num>, #loop
Обе команды переданы под контроль отдельного цикла, каждой добавлена возможность задержки (в децисекундах, 1/10 секунды).

Эта команда повторяет заданную последовательность команд указанное число раз.

#<num>[:<delay>]
цикл от 1 до num.

#loop {<from>[,<to>][:<delay>]}
#loop начинает выполнять указанные команды в цикле, сохраняя текущее значение счетчика в переменной %0.
если указан второй параметр, то от from до to, иначе от from до 0.
Если delay не указан, считается нулем и цикл не задействует таймер, иначе ищется свободный таймер и цикл передается под его контроль.
Всего выделены под это дело 16 таймеров (0..15). если свободный таймер не найден, то и цикла не получится.
Может быть, позже будет выделено больше. Пока нет необходимости, 16 - это много.

#break {<tID>|all}
Прерывает цикл(ы). второй вызов убивает (обнуляет).

#abort {<tID>|all}
Убивает (обнуляет) цикл(ы) сразу.

#resume {<tID>|all}, #pinch [all]
Возобновляет цикл(ы), если он неактивен и работоспособен (есть первая/вторая граница, команда и задержка)

#llist, #tmlist
Список активных циклов.

Примеры:
#5 {sing}
В мад уйдет команда sing;sing;sing;sing;sing - Вы споете (sing) 5 песен.

#10 {eat bread;drink water}
Вы поедите хлеба (eat bread) и выпьете воды (drink water) 10 раз.

#loop {2,5} {взять все %0.сундук} Вы возьмете все предметы из 2-го, 3-го, 4-го и 5-го сундуков.


Например, для того чтобы постоянно каждые три 3 секунды выполнять выпад, можно набрать команду
CODE

#100000:30 выпад

Первое число задает количество повторений (100000 каждые три секунды будут длиться больше 3-х суток). Второй аргумент определяет период повторения в десятых долях секунды - в приведенном примере, 30 десятых дает 3 секунды.
Каждый цикл для своей работы требует отдельного таймера. Сейчас в jmc на эти цели выделено 16 таймеров, т.е. можно одновременно запустить до 16-ти независимых циклов, с разными периодами и командами.
PMEmail Poster
Top
Колко
Отправлено: Jan 15 2018, 14:10
Quote Post


Мидл
***

Группа: Участники
Сообщений: 233
Пользователь №: 2761
Регистрация: 11-February 11



И еще у меня есть вредная привычка, заспамливать действия.
Бывает нажму разгром слишком много раз, команды запишутся в очередь на выполнение, а потом сбежать не могу.
Приходится в быстром порядку через #zap рвать связи и конектится по новой.
Может есть какая команда или сочетание клавишь, чтобы очередь команд чистить.

В http://nerevar.github.io/jmc/pages/command/ сказано что #wt 0 должна очищать очередь команд - реально же она это не делает.


--------------------
Шрайк
PMEmail Poster
Top
Фелей
Отправлено: Jan 16 2018, 20:02
Quote Post


Ньюб
*

Группа: Участники
Сообщений: 50
Пользователь №: 2167
Регистрация: 26-February 09



Когда вы много раз нажимаете команду, например, тот же разгром, то задержка в их исполнении возникает не со стороны jmc, а со стороны сервера. Jmc отправляет команды сразу без задержек. В этом можно легко убедиться воспользовавшись сниффером. Принятые на стороне сервера команды находятся в буфере, связанном с открытым соединением между клиентом (jmc) и сервером (Аладоном). Клиент не имеет доступа к буферам находящимся на сервере, и отправленные команды просто так удалить невозможно. Когда вы разрываете соединение, буфер со всеми заспамленными командами становится недоступным. Все оставшиеся в нем команды по факту теряются, и при повторном соединении вы можете спокойно вводить новые. Это все я к тому, что нельзя сделать команду в jmc, позволяющую очищать заспамленные команды, т.к. они уже переданы на сервер. Могу лишь порекомендовать не спамить кучу команд разом.

Насчет команды #wt или #wait.
Они позволяют формировать очередь команд со стороны jmc. Если набрать команду
CODE

#wt 50; разгром

то, через 5 секунд на сервер будет отправлена команда "разгром". Особенность в том, что задержка в этом случае формируется со стороны клиента. Команды задерживаются в специальном буфере в jmc, к которому естественно есть полный доступ. Если до истечения указанных 5-ти секунд, набрать команду #wait cancel, то команда "разгром" отправлена не будет.
С описанием команды #wt 0 есть неточность - она не очищает очередь команд, а просто сбрасывает таймер и все задержанные команды мгновенно уходят на сервер. Это так и задумывалось. Неточность в справке.
PMEmail Poster
Top
Энерхан
Отправлено: Apr 7 2018, 14:41
Quote Post


Ньюб
*

Группа: Аватары
Сообщений: 47
Пользователь №: 3653
Регистрация: 12-March 18



Ребята не убивайте сразу,но у меня есть два вопроса.
1.Возможно ли сделать какой то алиас или тригер для вывода информации о СТАТУСЕ группе(хп,манна и т.д.) в отдельное окошко?
2.Как сделать тригер-команду для вывода автоматического ГГ мол Вася призвал меня к себе в такую то комнату?.

Спасибо.
PMEmail Poster
Top
Фелей
Отправлено: Apr 26 2018, 21:33
Quote Post


Ньюб
*

Группа: Участники
Сообщений: 50
Пользователь №: 2167
Регистрация: 26-February 09



1. Проще всего через внешние скрипты
CODE

function group(l,t,n,h,hp,m,mp,v,vp,x){
var s='';
if (t=='Моб'){
s='[';
}else{
s='&Y[&w';
}
if (l<10){
s=s+' ';
}
s=s+l+' '+t;
if (t=='Моб'){
s=s+']';
}else{
s=s+'&Y]&w';
}
s=s+' '+n+' ';
if (h<hp/2){
s=s+'&R'+h+'&w';
}else{
s=s+h;
}
s=s+'/';
if (hp<10){
s=s+' ';
}
if (hp<100){
s=s+' ';
}
if (hp<1000){
s=s+' ';
}
s=s+hp+' &D|&w ';
if (m<10){
s=s+' ';
}
if (m<100){
s=s+' ';
}
if (m<1000){
s=s+' ';
}
if (m<mp/2){
s=s+'&C'+m+'&w';
}else{
s=s+m;
}
s=s+'/';
if (mp<10){
s=s+' ';
}
if (mp<100){
s=s+' ';
}
if (mp<1000){
s=s+' ';
}
s=s+mp+' &D|&w ';
if (v<10){
s=s+' ';
}
if (v<100){
s=s+' ';
}
if (v<1000){
s=s+' ';
}
if (v<vp/2){
s=s+'&Y'+v+'&w';
}else{
s=s+v;
}
s=s+'/';
if (vp<10){
s=s+' ';
}
if (vp<100){
s=s+' ';
}
if (vp<1000){
s=s+' ';
}
s=s+vp+' &D|&w ';
if (t=='Моб'){
if (x<4){
s=s+'&R'+x+'&w';
}else{
s=s+x;
}
s=s+'-ч';
}
jmc.showme(jmc.FromColored(s));
}

jmc.Parse("#alias {гр}{#action COLOR {/\\[(.?\\d+) (\\w+)\\] (.+?) (\\d+)\\/ *(\\d+).+?(\\d+)\\/ *(\\d+).+?(\\d+)\\/ *(\\d+).+?(\\d+)/}{#drop;#s group(%0,'%1','%2','%3',%4,%5,%6,%7,%8,%9)};#action TEXT {/группа/}{#action {/<\\d+hp/}{#unaction {*[(.?*};#unaction {/<\\\\d+hp/}};#unaction {/группа/}};груп}{default}");

этот код необходимо сохранить в отдельном файле и добавить в список файлов скриптов. Этот скрипт выполняет следующее: при наборе команды "гр" будет выводиться примерно та же информация о группе, но с подсветкой малых хп, маны, мувов. Если надо вывести в отдельное окошко, то вместо команды showme надо поставить woutput.

2. Например так:
CODE

#action TEXT {%1 призывает тебя!} {#var prizval %1;#var priziv 1;#play 7.wav;#if {$nepriz=1} {#var war ВНИМАНИЕ!!};#if {$nepriz!=1} {#var {war} {=)};неприз};#action TEXT {/^(\|.{28}\|| ) *(\w.+)/}{#var place %1;#unaction {/^(\\|.{28}\\|| ) *(\\w.+)/}};#action TEXT {^[Видимые выходы: %1} {гг $war $prizval призвал меня "$place";#var priziv 0;#unaction {^[Видимые выходы: %1}}} {5} {default}


Это для версии 3.7+, для более ранних версий надо делать проверку на *эмо
Не работает, если призывают в темное место и не видите в темноте и без света
PMEmail Poster
Top
Колко
Отправлено: May 24 2018, 14:20
Quote Post


Мидл
***

Группа: Участники
Сообщений: 233
Пользователь №: 2761
Регистрация: 11-February 11



Подскажите, а как сделать автоввод команды на коннект к серверу при открытии клиента?


--------------------
Шрайк
PMEmail Poster
Top
Фелей
Отправлено: May 24 2018, 18:33
Quote Post


Ньюб
*

Группа: Участники
Сообщений: 50
Пользователь №: 2167
Регистрация: 26-February 09



Можно, например, вписать команду в файл скрипта через Parse. Что удобно, в этом случае к моменту вызова команды уже будут загружены все переменные, триггеры и алиасы из конфигурационного файла.
Ниже простейший пример.
CODE

jmc.Parse("#connect aladon.sovintel.ru 9000");

Строчку сохраните в отдельный файл и добавьте в список используемых скриптов (Меню->Опции->Объекты JMC->файлы скриптов)
Если закроете клиент и откроете снова, то сразу после загрузки конфигурационного файла будет выполнена команда #connect aladon.sovintel.ru 9000.
Если хотите не просто соединится с сервером, а еще и войти персонажем, то можно написать простейшие алиасы:
CODE

#alias {зайти} {#connect aladon.sovintel.ru 9000;#action {You select:[2]}{2j;#unaction {You select:[2]}};#action {Твое имя?}{%0;#unaction {Твое имя?}};#action {Пароль}{#variable myname %0;ВАШ_ПАРОЛЬ;#unaction {Пароль}};#action {Enter}{#cr;#unaction {Enter}}} {default}

#alias {зайтипоследним} {#connect aladon.sovintel.ru 9000;#action {You select:[2]}{2j;#unaction {You select:[2]}};#action {Твое имя?}{$myname;#unaction {Твое имя?}};#action {Пароль}{ВАШ_ПАРОЛЬ;#unaction {Пароль}};#action {Enter}{#cr;#unaction {Enter}}} {default}

После этого в том подключаемом файле, где писали строчку jmc.Parse("#connect aladon.sovintel.ru 9000");, заменяем ее на jmc.Parse("зайтипоследним");. Тогда каждый раз при открытии клиента вы будете входить последним персонажем, которым вошли с помощью алиаса 'зайти'. Соответственно, чтобы эта строчка сработала, необходимо хотя бы раз войти с помощью алиаса 'зайти' (чтобы инициализировалась переменная myname).

P.S.: алиас 'зайти' принимает один аргумент - имя персонажа. Например, 'зайти Колко'

Это сообщение отредактировал Фелей - May 24 2018, 18:40
PMEmail Poster
Top
Ауст
Отправлено: Jul 18 2018, 06:46
Quote Post


Ньюб
*

Группа: Участники
Сообщений: 31
Пользователь №: 1136
Регистрация: 13-June 05



Добавь пожалуйста в клиент регулятор громкости, просто так.


--------------------
Иной
PMEmail PosterICQ
Top
Калевала
Отправлено: Nov 9 2018, 10:28
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1858
Пользователь №: 55
Регистрация: 15-April 04



Все ж таки хотелось бы вернуться к выводу инфы в разные окна и так чтобы в главное окно не выводилось эта инфа с прокруткой. Неужто так трудно сие чудо запилить?


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Nov 9 2018, 12:07
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1858
Пользователь №: 55
Регистрация: 15-April 04



Да и еще, после обновления движка JScript в винде у меня перестали полностью запускать скрипты в жабе даже не знаю в чем тут может быть дело,
вообще команда #script перестала работать даже с VBA не пашет


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Topic Options Страницы: (6) « Первая ... 4 5 [6]  Reply to this topicStart new topic

 



[ Script Execution time: 0.0531 ]   [ 13 queries used ]   [ GZIP включён ]