Вернуться   МПМ Былины - Мир Древней Руси > Для игроков > Клиенты для игры

Клиенты для игры Все что связано с клиентами для игры. Jmc, MMC, ZMud etc...

Ответ
 
Опции темы Опции просмотра
Старый 09.05.2006, 03:49   #1
Лехич
Занятой мадер
 
Регистрация: 08.08.2005
Адрес: Киев
Сообщений: 109
По умолчанию проблема с скриптами в жабе

захотел я написать суперпродвинутые скрипты для жабы, и конешно не на его экшнах и алиасах, а на какомнить скриптовом движке типа JScript
Пытаюсь зайти во вкладку "скрипты" в настройках, и вылетает критическая ошибка... Переустановил жабу в другой каталог (эта у меня была не установлена, а просто скопирована...) (переустановил именно с инсталяшки), установил поверх апдейт до 3.27 и опять таже история. ПЫтаюсь открыть вкладку "скрипты" - жаба вылетает.
Подскажите че тут делать
Лехич вне форума   Ответить с цитированием
Старый 09.05.2006, 07:15   #2
Осьмой
Отличник форума
 
Регистрация: 04.04.2006
Сообщений: 327
По умолчанию

и киданите еще желательно хелп по жавомским объектам для жаваскрипта! очень надо.
Осьмой вне форума   Ответить с цитированием
Старый 09.05.2006, 19:24   #3
Devastator
Отличник форума
 
Регистрация: 18.10.2005
Адрес: Пермь
Сообщений: 273
По умолчанию

Сам долго мучался над этой проблемой, кое что начал понимать.
Начнем по парядку писать FAQ, т.к часто встал встречаться данный вопрос.
Часть 1.
Для начала советую удалить жмс, кроме ваших конфигов.
Качаем нормальную JMC с http://jmc.mud.ru/install30.exe
Затем идем Опции/Настройки/Скрипты Выбираем язык скриптов JScript.Encode
Включаем отладку.

И так при загрузке Жавы идет обработка скриптов. JMC загружает 2 файла
1. settings\common.scr – Этот файл общий для всех профайлов. Это хорошее место, что бы хранить общие для всех профайлов скрипты. Например, спидволки, дейсвия при входе и тп.
2. <settings\profile_name.scr> - скрипты, специфичные для данного профайла.

Небудем входить в подробности, а просто посмотрим, на примерах всеже легче понять )
- Тригер
function OnIncoming() {
if( jmc.Event=="Вы голодны." ) {
jmc.send("пит мех");
}
}
jmc.RegisterHandler("Incoming","OnIncoming()");


поясним что тут произошло.
Event – содержит параметр события объекта jmc.
Т.к из мада приходит строка. то мы должны зарегестрировать событие в функции как приходящие т.е Incoming.
jmc.RegisterHandler("событие" , "функция-обработчик");
А Send(text) – посылает текст-параметр напрямую в MUD. Без какой-либо обработки альясами.
Вот закончили с тригером.

-Алиас
function Alias(){
if(jmc.Event=="ac"){
jmc.showme("Алиас работает !!!!!");
jmc.DropEvent();
}
}
jmc.RegisterHandler("Input","Alias()");

так теперь у нас Event строка которую мы вводим, следовательно регестируем как Input
DropEvent - вводимая строка не будет обработана или послана серверу MUD
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности.

Последний раз редактировалось Devastator; 09.05.2006 в 19:41.
Devastator вне форума   Ответить с цитированием
Старый 09.05.2006, 19:51   #4
Devastator
Отличник форума
 
Регистрация: 18.10.2005
Адрес: Пермь
Сообщений: 273
По умолчанию

Часть 2.
Теперь из справки что должно помоч неким образом.
Свойства объектов JMC

IsConnected – свойство только для чтения. True если JMC подключен к MUD серверу. False если нет.

Event – содержит параметр события объекта jmc. Для “Входящего” и “Ввода” событий содержит текущую обрабатываемую строку. Также, он содержит текущую строку пока вы вызываете скрипт из команды #action

Profile – возвращает имя текущего профайла. Только для чтения
CommandChar – возвращает управляющий символ TinTin. Только для чтения

Jmc object methods

[ShowMe (text, [color]) – печатает текст в основном окне JMC. Второй параметр опционален. Формат [color] эквивалентен значению цвета для #highlight. Также, рекомендуется посмотреть команду #showme. Пример: jmc.Showme(“aaa”) jmc.Showme(“aaa”, “red”)

Send(text) – посылает текст-параметр напрямую в MUD. Без какой-либо обработки альясами.

Beep() – Звуковой сигнал. Аналогичен команде #bell.

Parse(command_text) – Парсит текст применяя JMC. Текст будет распарсен, как будто вы ввели его в командной строке клиента. Так, допустима обработка любых команд JMC. Примеры: jmc.Parse(“#alias pk {#var taget}”) jmc.Parse (“kill Pnuk”) jmc.Parse(“#scri MayProc()”)

Output(text, [color]) – выводит текст в окошко “output”. Второй параметр опционален, значения для цветов соответствуют команде #highlight. Пример: jmc.Output(“Wake up ! Time to kill ghitomir!!!”)

SetTimer([ID, Interval, LONG preInterval) –устанавливает новый таймер. После вызова этой функции JMC будет генерировать событие «таймер» каждые Interval/10 секунд и генерировать «Претаймер» событие каждые PreInterval/10 секунд. ID параметр для разделения различных таймеров. Timer/Pretimer события получают ID как параметр, так что вы можете иметь больше одного таймера в единицу времени. Вызов этой функции с таким же значением ID сбросит настройки таймера и установит новые интервалы для данного ID. Примеры:
Jmc.SetTimer(1, 600) – JMC будет генерировать событие таймера каждые60 секунд. “Timer” событие получает 1 как параметр. (Примечание. Коряво. 1 – это идентификатор создаваемого таймера. aZm.)
Jmc.SetTimer(2, 300, 50) – JMC будет создавать событие “Timer” каждые 30 секунд для таймера №2 и создавать событие “PreTimer” за 5 сек. до события “Timer”. Итак, сейчас вы можете перехватывать событие таймера каждые 60 и 30 секунд.

KillTimer([ID) – удаляет таймер с идентификатором ID. JMC прекратит генерировать события timer/Pretimer для данного ID.

RegisterHandler(EventName, Code) – этот метод применяется для отличных от Vbscipt языков. Только язык Vbscript предоставляет поддержку по умолчанию для событий, создаваемых объектами. Во всех прочих языках (типа Jscript, PERL и тд) вы должны вызывать этот метод для получения событий от JMC. Примеры:
Jmc.RegisterHandler(“Incoming” , “OnIncoming()”);

Jmc.RegisterHandler(“Timer”, “OnTimer()”);

Connect(Address, Port)- заставляет жабу конектиться к указанному серверу.

DropEvent()- в событиях “Incoming” и “Input” заставляет JMC не обрабатывать строку. Оба события срабатывают ДО парсинга жабой. Т.е. каждая строка, приходящая от MUD вызывает событие “Incoming”, потом обрабатывается JMC. Если вы вызовете DropEvent в течении события Incoming эта строка будет загагана и не обработана JMC. Для вводимых строк JMC вызывает событие “Input”. ЕСЛИ DropEvent вызван, вводимая строка не будет обработана или послана серверу MUD. Также, если вы вызовете этот метод пока выполняется некое действие, это заставит JMC игнорировать эту строку не отобразит ее. .

Disconnect() – отключает жабу от сервера.

SetHotkey([Key, Command) – определяет новый хоткей для JMC. Формат хоткея аналогичен команде #hotkey

SetStatus([StatusNum, Text, bstrColor) – Записывает текст в статусную ячейку.Аналог #status

SetVar(VarName, Value, bGlobal) – устанавливает значение переменой
жабы. Пример: jmc.SetVar(“food”, “bread”) jmc.SetVar(“weapon”, “sword”, true).

GetVar(VarName,) – возвращает значение переменной жабы. пример: food = jmc.getvar(“food”);

Типы событий жабы

Connected – срабатывает при коннекте на удаленный сервак.

ConnectLost – срабатывает на утрату связи с сервером.

Incoming – срабатывает при получении строки от сервера MUD. Свойство Event содержит строку (вместе с ANSY символами)

Input – вызывается, как только осуществлен ввод с клавиатуры в командной строке. Свойство Event содержит командную строку.

Timer – вызывается при достижении значения, определенного при помощи метода SetTimer. Свойство Event содержит ID таймера.

PreTimer – вызывается за PreInterval/10 секунд до события Timer, определенного при помощи метода SetTimer. Свойство Event содержит ID таймера.

Disconnected – срабатывает на линкдроп по запу.

Load – срабатывает при рестарте скриптового движка (загрузка нового профиля)

Unload – срабатывает при закрытии скриптового движка – выгрузка профайла или рестарт скрипта.
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности.
Devastator вне форума   Ответить с цитированием
Старый 09.05.2006, 20:24   #5
Devastator
Отличник форума
 
Регистрация: 18.10.2005
Адрес: Пермь
Сообщений: 273
По умолчанию

Часть 3.
Примеры.
1. Запись чара в пклист.
function Addpklist(name,why)
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.OpenTextFile("pklist.txt",8);
file.WriteLine(""+Date()+"" + name + " : " +why+".");
file.Close();
}

для этого в папке JMC должен быть создан фаил pklist.txt
для того чтобы вызвать функцию допустим создаем алиас
#al {+пкл} {#s Addpklist("%1";"%%2")}т.е вводим +пкл Вася убийца и в файл добавляеться запись
для просмотра пишем другой скрипт:
function Pklist(name)
{
var s='';
var fso = new ActiveXObject('Scripting.FileSystemObject');
var p = fso.OpenTextFile("pklist.txt");
while(!p.AtEndOfStream)
{
s = p.ReadLine();
if(s.match(name) != null)
jmc.Showme(s);
}
p.Close();
}


и пишем алиас #al {мойпкл} {#s Pklist("%0")} теперь если мы просто введем мойпкл то нам выведеться весь фаил. а если введем допустим мойпк вас нам выведеться все строки где содержиться слово или часть слова "вас".

2. Проигрывание звуковых файлов.
Пришлось чуток помучаться дабы облегчить как-то себе жизнь и вот что получилось
1 скрипт это создание плейлиста
function Playlist() {
var o = new ActiveXObject("Scripting.FileSystemObject");
var d = o.getFolder("E:\\Музыка\\System of A Down\\"); --тут указы
var e = new Enumerator(d.Files); вается где
var WShell = new ActiveXObject("WScript.Shell"); лежат звук.файл
var i = 0,a = new Array();
while (!e.atEnd()) {
a[i] = e.item().name;
++i;
e.moveNext()
};
var puk = i;
jmc.showme("---====Плейлист====---");
for(i = 0; i < puk; i++) {
jmc.showme(""+i+":"+a[i], 15);
jmc.setvar("music"+i+"", a[i])
};
}

создаем алиас который будет вызывать функцию
#al {плейлист} {#s Playlist()} теперь при вводе плейлист нам будет выводиться наш плейлис
И второй скрипт:
function play(numb){
var WShell = new ActiveXObject("WScript.Shell");
WShell.Run("MPLAY32 /play /close E:\\Музыка\\System of A Down\\"+numb+" ", 0);
}
и пишем алиас #al {плей} {#s function(%0)}
теперь при вводе допустим плей 1 он нам будет проигрывать файл из плейлиста стоящий под номером 1.

На этом пока хватит.
[COLOR="DarkOrangeПишите, что нужно, поможем чем сможем. "][/color]
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности.
Devastator вне форума   Ответить с цитированием
Старый 10.05.2006, 00:03   #6
Лехич
Занятой мадер
 
Регистрация: 08.08.2005
Адрес: Киев
Сообщений: 109
По умолчанию

скачал ещераз жабу по предложенной ссылке. установил. результат нулеой: тоже при попытке перехода в вкладку scripts хр пишет "обнаружена ошибка. программа будет закрыта" и предлагает ессесна отправить отчет билли. в чем может быть трабл? хр с 1
сервиспаком
Лехич вне форума   Ответить с цитированием
Старый 10.05.2006, 00:53   #7
Devastator
Отличник форума
 
Регистрация: 18.10.2005
Адрес: Пермь
Сообщений: 273
По умолчанию

*дум
попробуй винду переустановить. этот метот всегда помогает.
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности.
Devastator вне форума   Ответить с цитированием
Старый 10.05.2006, 10:21   #8
Лехич
Занятой мадер
 
Регистрация: 08.08.2005
Адрес: Киев
Сообщений: 109
По умолчанию

классный метод. но винду переустанавливать мне не охота, я думаю понятно почему. я уж обустроился в ней мож е еще какой метод? е еще какиенить проги, юзающие движки скриптов? *дум мож наних мона протестить - глюк жабы это или глюк винды
Лехич вне форума   Ответить с цитированием
Старый 10.05.2006, 15:10   #9
Осьмой
Отличник форума
 
Регистрация: 04.04.2006
Сообщений: 327
По умолчанию

ээ ладно приступил к прочтению! ща попытаемся ченибудь понять! ...
пасябо!
Осьмой вне форума   Ответить с цитированием
Старый 11.05.2006, 17:42   #10
Devastator
Отличник форума
 
Регистрация: 18.10.2005
Адрес: Пермь
Сообщений: 273
По умолчанию

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

Символ
Описание

\
Отмечает следующий символ как специальный./n/соответствует символу "n". Последовательность/\n/соответствует linefeed (хз что это) или символу новой строки.

^
Соответствует началу ввода или входящей строки.

$
Соответствует концу ввода или входящей строки.

*
Соответствует предшествующему символу 0 или более раз. /zo*/ соответствует как "z" так "zoo."

+
Соответствует предшествующему символу 1 или более раз. /zo*/ соответствует "zoo." но не "z"

?
Соответствует предшествующему символу 1 или 0 раз. /a?ve?/ соответствует "ve" в "never."

.
Соответствует любому символу, кроме символа новой строки.

(pattern)
Проверяет соответствие pattern и запоминает соответствие. Сравниваемая подстрока может быть получена из переменных %0-%9. Для сравнения с символами скобок ( ), применяйте "\(" или "\)".

x|y
Сответствует либо x либо y. /z|food?/ соответствуе "zoo" или "food."

{n}
n – неотрицательное целое. Соответствует точно n раз. /o{2}/ не соответствует "o" в "Bob," однако соответствует первым 2м o в "foooood."

{n,}
n – неотрицательное целое. Соответствует хотябы n раз. /o{2,}/ не соответствует "o" в "Bob," однако соответствует всем o в "foooood." /o{1,}/ эквивалентно /o+/.

{n,m}
m и n – неотрицательные целые. Соответствует хотябы n и не более m раз. /o{1,3}/ соответствует первым 3 o в "fooooood."

[xyz]
Набор символов. Соответствует любому из заключенным в скобки символов. /[abc]/ соответствует "a" в "plain."

[^xyz]
“отрицательный” набор символов. Соответствует любому не включенному в скобки символу. /[^abc]/ соответствует "p" в "plain."

\b
Соответствует разделителю слов, такому как пробел. /ea*r\b/ соответствует "er" в "never early."

\B
Соответствует ээээээ несловесному (?!) nonword разделителю. /ea*r\B/ соответствует "ear" в "never early."

\d
Соответствует цифровому символу. Эквивалентно [0-9].

\D
Соответствует нецифровому символу. Эквивалентно [^0-9].

\f
Соответствует form-feed символу.

\n
Соответствует linefeed символу.

\r
Соответствует символу возврат каретки.

\s
Соответствует любому пустому пространству а-ля пробел, табуляция и тп. Эквивалентно [ \f\n\r\t\v]

\S
Соответствует любому непустому пространству. Эквивалентно [^ \f\n\r\t\v]

\t
Соответствует табуляции.

\v
Соответствует символу вертикальной табуляции.

\w
Соответствует любому (словесному?) символу, включая подчеркивание. Аналогично [A-Za-z0-9_].

\W
Соответствует любому (несловесному?) символу. Аналогично [^A-Za-z0-9_].

/n/
Соответствует n, где n 8ное, 16ное, или десятичное значение ESC последовательности. Это возможность вставить ASCII коды (цвета и тп) в регэкспы.

Пример:

/^You (massacres|hits|bruises|slashes|blugeons) (.+) (very hard|hard|extremly hard)*( with your slash)*/

Даст совпадения на строках: «You massacres dragon with your slash» «You blugeons dragon very hard» «You blugeons dragon hard» итп.
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности.
Devastator вне форума   Ответить с цитированием
Старый 13.05.2006, 22:40   #11
Glushko
Гость
 
Регистрация: 17.03.2006
Адрес: На хуторе
Сообщений: 213
По умолчанию

Цитата:
Сообщение от Devastator
Мб будет еще полезно комуниб выложоить regexp.
Специальные символы и шаблоны используются для написания шаблонов по регулярным выражениям.
Следующая табличка описывает символы, применяемые в регэкспах с короткими примерами.

Символ
Описание

\
Отмечает следующий символ как специальный./n/соответствует символу "n". Последовательность/\n/соответствует linefeed (хз что это) или символу новой строки.

^
Соответствует началу ввода или входящей строки.

$
Соответствует концу ввода или входящей строки.

*
Соответствует предшествующему символу 0 или более раз. /zo*/ соответствует как "z" так "zoo."

+
Соответствует предшествующему символу 1 или более раз. /zo*/ соответствует "zoo." но не "z"

?
Соответствует предшествующему символу 1 или 0 раз. /a?ve?/ соответствует "ve" в "never."

.
Соответствует любому символу, кроме символа новой строки.

(pattern)
Проверяет соответствие pattern и запоминает соответствие. Сравниваемая подстрока может быть получена из переменных %0-%9. Для сравнения с символами скобок ( ), применяйте "\(" или "\)".

x|y
Сответствует либо x либо y. /z|food?/ соответствуе "zoo" или "food."

{n}
n – неотрицательное целое. Соответствует точно n раз. /o{2}/ не соответствует "o" в "Bob," однако соответствует первым 2м o в "foooood."

{n,}
n – неотрицательное целое. Соответствует хотябы n раз. /o{2,}/ не соответствует "o" в "Bob," однако соответствует всем o в "foooood." /o{1,}/ эквивалентно /o+/.

{n,m}
m и n – неотрицательные целые. Соответствует хотябы n и не более m раз. /o{1,3}/ соответствует первым 3 o в "fooooood."

[xyz]
Набор символов. Соответствует любому из заключенным в скобки символов. /[abc]/ соответствует "a" в "plain."

[^xyz]
“отрицательный” набор символов. Соответствует любому не включенному в скобки символу. /[^abc]/ соответствует "p" в "plain."

\b
Соответствует разделителю слов, такому как пробел. /ea*r\b/ соответствует "er" в "never early."

\B
Соответствует ээээээ несловесному (?!) nonword разделителю. /ea*r\B/ соответствует "ear" в "never early."

\d
Соответствует цифровому символу. Эквивалентно [0-9].

\D
Соответствует нецифровому символу. Эквивалентно [^0-9].

\f
Соответствует form-feed символу.

\n
Соответствует linefeed символу.

\r
Соответствует символу возврат каретки.

\s
Соответствует любому пустому пространству а-ля пробел, табуляция и тп. Эквивалентно [ \f\n\r\t\v]

\S
Соответствует любому непустому пространству. Эквивалентно [^ \f\n\r\t\v]

\t
Соответствует табуляции.

\v
Соответствует символу вертикальной табуляции.

\w
Соответствует любому (словесному?) символу, включая подчеркивание. Аналогично [A-Za-z0-9_].

\W
Соответствует любому (несловесному?) символу. Аналогично [^A-Za-z0-9_].

/n/
Соответствует n, где n 8ное, 16ное, или десятичное значение ESC последовательности. Это возможность вставить ASCII коды (цвета и тп) в регэкспы.

Пример:

/^You (massacres|hits|bruises|slashes|blugeons) (.+) (very hard|hard|extremly hard)*( with your slash)*/

Даст совпадения на строках: «You massacres dragon with your slash» «You blugeons dragon very hard» «You blugeons dragon hard» итп.
Чето парагон какой-то!
Glushko вне форума   Ответить с цитированием
Старый 14.05.2006, 13:45   #12
Ележор
Летописец
 
Регистрация: 11.03.2004
Адрес: СПб
Сообщений: 679
По умолчанию

Цитата:
Сообщение от Glushko
Чето парагон какой-то!
Вот удивляюсь я... Казалось бы, не понимаешь ты ответа на вопрос -- ну так сиди тихо, разбирайся, если тебе это нужно, или забей, если не нужно. Нет, зачем-то обязательно надо сообщить всем, что ты ничего не понял .
__________________
"Я во все дела сувался -- всесторонне развивался..."
Ележор вне форума   Ответить с цитированием
Старый 24.05.2006, 23:08   #13
Devastator
Отличник форума
 
Регистрация: 18.10.2005
Адрес: Пермь
Сообщений: 273
По умолчанию

Еще примеры нужны или нет ? Всем все понятно ?
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности.
Devastator вне форума   Ответить с цитированием
Старый 31.05.2006, 04:46   #14
Elron
Знакомый Мадера
 
Регистрация: 19.02.2005
Сообщений: 70
По умолчанию

давай еще, будут нелишними
Elron вне форума   Ответить с цитированием
Старый 31.05.2006, 11:00   #15
Гурик
Знакомый Мадера
 
Регистрация: 31.05.2006
Адрес: Прага
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Devastator
Еще примеры нужны или нет ? Всем все понятно ?
понятно не все но многое... будет еще куча вопросов с моей стороны =)

2Девостатор : если не страшно то сунь свою аську мне в личку, потрещим по поводу скриптинга и т.д
__________________
#read pk.cfg
Гурик вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:45.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot